From a4a8573a75d2031ca531b57ff59b0327cdcd953b Mon Sep 17 00:00:00 2001 From: Edu Date: Wed, 2 Sep 2026 00:19:17 +0000 Subject: [PATCH 01/41] fix(devtools): safely handle foreign root elements in feature detection Prevent Angular DevTools from crashing when elements matching [ng-version] in the DOM do not belong to the host application (such as third-party custom elements or browser extensions). ng.getComponent returns null for these elements, which previously caused ng.getDirectiveMetadata to throw. (cherry picked from commit ef09d108f23adc1aa29ec260fcf04b7271ea53c1) --- .../component-tree/BUILD.bazel | 1 + .../component-tree/component-tree.spec.ts | 21 ++++++++++++ .../component-tree/component-tree.ts | 10 +++--- .../shared/ng-debug-api/ng-debug-api.spec.ts | 34 +++++++++++++++++++ .../lib/shared/ng-debug-api/ng-debug-api.ts | 4 +-- 5 files changed, 63 insertions(+), 7 deletions(-) diff --git a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/BUILD.bazel b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/BUILD.bazel index f55d384bce9d..1505cfddd059 100644 --- a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/BUILD.bazel +++ b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/BUILD.bazel @@ -35,6 +35,7 @@ ts_test_library( ":get-roots", "//:node_modules/@angular/core", "//:node_modules/jasmine", + "//devtools/projects/ng-devtools-backend/src/lib/directive-forest:core-enums", ], ) diff --git a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.spec.ts b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.spec.ts index 57ad54703f3d..5c061deba236 100644 --- a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.spec.ts +++ b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.spec.ts @@ -13,10 +13,12 @@ import { InjectionToken, } from '@angular/core'; import { + getDirectiveCdStrategy, getInjectorFromElementNode, getRootElements, serializeProviderRecord, } from './component-tree'; +import {ChangeDetectionStrategy, Framework} from '../core-enums'; type Ng = ɵExternalCoreGlobalUtils; const NG_VERSION = 'ng-version'; @@ -183,4 +185,23 @@ describe('component-tree', () => { expect(result.token).toBe('InjectionToken (FOO)'); }); }); + + describe('getDirectiveCdStrategy', () => { + it('returns change detection strategy when passed valid component', () => { + const ng: Partial = { + getDirectiveMetadata: jasmine.createSpy('getDirectiveMetadata').and.returnValue({ + framework: Framework.Angular, + changeDetection: ChangeDetectionStrategy.OnPush, + } as any), + }; + (globalThis as any).ng = ng; + + const result = getDirectiveCdStrategy({ + instance: {}, + name: 'Foo', + isElement: false, + }); + expect(result).toBe('ng-on-push'); + }); + }); }); diff --git a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.ts b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.ts index 689ce5b5b55e..effe57afb037 100644 --- a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.ts +++ b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/component-tree/component-tree.ts @@ -228,9 +228,9 @@ const enum DirectiveMetadataKey { // Gets directive metadata. For newer versions of Angular (v12+) it uses // the global `getDirectiveMetadata`. For prior versions of the framework // the method directly interacts with the directive/component definition. -const getDirectiveMetadata = (dir: any): DirectiveMetadata => { - const getMetadata = ngDebugClient().getDirectiveMetadata!; - const metadata = getMetadata?.(dir); +function getDirectiveMetadata(dir: any): DirectiveMetadata { + const getMetadata = ngDebugClient().getDirectiveMetadata; + const metadata = dir ? getMetadata?.(dir) : null; if (metadata) { const {framework} = metadata; switch (framework) { @@ -287,9 +287,9 @@ const getDirectiveMetadata = (dir: any): DirectiveMetadata => { encapsulation: safelyGrabMetadata(DirectiveMetadataKey.ENCAPSULATION), changeDetection: safelyGrabMetadata(DirectiveMetadataKey.CHANGE_DETECTION), }; -}; +} -export function getDirectiveCdStrategy(dir: any): ChangeDetection | undefined { +export function getDirectiveCdStrategy(dir: ComponentInstanceType): ChangeDetection | undefined { const metadata = getDirectiveMetadata(dir.instance); switch (metadata.framework) { diff --git a/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.spec.ts b/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.spec.ts index e5f723c3ad84..ceb7d736bb51 100644 --- a/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.spec.ts +++ b/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.spec.ts @@ -114,6 +114,23 @@ describe('ng-debug-api', () => { expect(ngDebugRoutesApiIsSupported()).toBeFalse(); }); + + it('should ignore elements where getComponent returns null (e.g. extension elements)', () => { + const foreignRoot = document.createElement('foreign-extension-app'); + foreignRoot.setAttribute('ng-version', '0.0.0-PLACEHOLDER'); + document.body.appendChild(foreignRoot); + + try { + const fakeNg = fakeNgGlobal(Framework.Angular); + const originalGetComponent = fakeNg.getComponent!; + fakeNg.getComponent = (el) => (el === foreignRoot ? null : originalGetComponent(el)); + (globalThis as any).ng = fakeNg; + + expect(ngDebugProfilerApiIsSupported()).toBeTrue(); + } finally { + foreignRoot.remove(); + } + }); }); describe('ngDebugRoutesApiIsSupported', () => { @@ -191,5 +208,22 @@ describe('ng-debug-api', () => { (globalThis as any).ng = fakeNgGlobal(Framework.ACX); expect(ngDebugSignalPropertiesInspectionApiIsSupported()).toBeFalse(); }); + + it('should ignore elements where getComponent returns null (e.g. extension elements)', () => { + const foreignRoot = document.createElement('foreign-extension-app'); + foreignRoot.setAttribute('ng-version', '0.0.0-PLACEHOLDER'); + document.body.appendChild(foreignRoot); + + try { + const fakeNg = fakeNgGlobal(Framework.Angular); + const originalGetComponent = fakeNg.getComponent!; + fakeNg.getComponent = (el) => (el === foreignRoot ? null : originalGetComponent(el)); + (globalThis as any).ng = fakeNg; + + expect(ngDebugSignalPropertiesInspectionApiIsSupported()).toBeTrue(); + } finally { + foreignRoot.remove(); + } + }); }); }); diff --git a/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.ts b/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.ts index fe2101039ae1..eace2aa1e0af 100644 --- a/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.ts +++ b/devtools/projects/ng-devtools-backend/src/lib/shared/ng-debug-api/ng-debug-api.ts @@ -58,7 +58,7 @@ export function ngDebugProfilerApiIsSupported(): boolean { // Temporary solution. Convert to an eligible API when available. // https://github.com/angular/angular/pull/60585#discussion_r2017047132 // If there is a Wiz application, make Profiler API unavailable. - const roots = getAppRoots(); + const roots = getAppRoots().filter((el) => ng.getComponent?.(el)); return ( !!roots.length && !roots.some((el) => { @@ -98,7 +98,7 @@ export function ngDebugSignalPropertiesInspectionApiIsSupported(): boolean { const ng = ngDebugClient(); // If all apps are Angular, make the API available. - const roots = getAppRoots(); + const roots = getAppRoots().filter((el) => ng.getComponent?.(el)); return ( !!roots.length && roots.every((el) => { From ec48c8305c40fbafbab51801f93bb4e4b6a25ea0 Mon Sep 17 00:00:00 2001 From: Edu Date: Wed, 2 Sep 2026 00:19:21 +0000 Subject: [PATCH 02/41] fix(core): return null when getDirectiveMetadata is called with null or undefined Safely return null instead of throwing an unhandled TypeError when getDirectiveMetadata is called with a falsy directive or component instance. (cherry picked from commit cea6896a0fef4fa4f37a4c7a43c7a880900eb21d) --- packages/core/src/render3/util/discovery_utils.ts | 3 +++ packages/core/test/acceptance/discover_utils_spec.ts | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/packages/core/src/render3/util/discovery_utils.ts b/packages/core/src/render3/util/discovery_utils.ts index ac03e0ede911..37d630042cbe 100644 --- a/packages/core/src/render3/util/discovery_utils.ts +++ b/packages/core/src/render3/util/discovery_utils.ts @@ -304,6 +304,9 @@ export type DirectiveDebugMetadata = export function getDirectiveMetadata( directiveOrComponentInstance: any, ): AngularComponentDebugMetadata | AngularDirectiveDebugMetadata | null { + if (!directiveOrComponentInstance) { + return null; + } const {constructor} = directiveOrComponentInstance; if (!constructor) { throw new Error('Unable to find the instance constructor'); diff --git a/packages/core/test/acceptance/discover_utils_spec.ts b/packages/core/test/acceptance/discover_utils_spec.ts index b5b58bdf4ec0..921d44d4e7d7 100644 --- a/packages/core/test/acceptance/discover_utils_spec.ts +++ b/packages/core/test/acceptance/discover_utils_spec.ts @@ -405,6 +405,11 @@ describe('discovery utils', () => { expect(metadata!.inputs).toEqual({a: 'b'}); expect(metadata!.outputs).toEqual({c: 'd'}); }); + + it('should return null when passed null or undefined', () => { + expect(getDirectiveMetadata(null)).toBeNull(); + expect(getDirectiveMetadata(undefined)).toBeNull(); + }); }); }); From 023d172dcc8728856193635a9b529c01ca4c03c1 Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Tue, 8 Sep 2026 21:29:48 -0500 Subject: [PATCH 03/41] test(core): reduce fakeAsync usage in tests Use async/await where needed. Remove unused dependencies. (cherry picked from commit 947f3ffaefa8af09541fdf5510b65968b93be48d) --- .../test/acceptance/authoring/BUILD.bazel | 1 - .../change_detection_integration_spec.ts | 462 +++++++++--------- packages/core/test/linker/integration_spec.ts | 24 +- packages/core/test/linker/query_list_spec.ts | 12 +- .../linker/regression_integration_spec.ts | 8 +- .../linker/view_injector_integration_spec.ts | 10 +- 6 files changed, 256 insertions(+), 261 deletions(-) diff --git a/packages/core/test/acceptance/authoring/BUILD.bazel b/packages/core/test/acceptance/authoring/BUILD.bazel index aa364ef58f3b..3797026a1559 100644 --- a/packages/core/test/acceptance/authoring/BUILD.bazel +++ b/packages/core/test/acceptance/authoring/BUILD.bazel @@ -14,7 +14,6 @@ TEST_DEPS = [ "//packages/platform-browser:platform-browser", "//packages/core/primitives/signals:signals", "//:node_modules/rxjs", - "//packages/core/test/animation_utils", "//packages/private/testing", ] diff --git a/packages/core/test/linker/change_detection_integration_spec.ts b/packages/core/test/linker/change_detection_integration_spec.ts index 03fe0bdce740..7e0b650da160 100644 --- a/packages/core/test/linker/change_detection_integration_spec.ts +++ b/packages/core/test/linker/change_detection_integration_spec.ts @@ -43,7 +43,7 @@ import { ViewChild, ViewContainerRef, } from '../../src/core'; -import {ComponentFixture, fakeAsync, TestBed} from '../../testing'; +import {ComponentFixture, TestBed} from '../../testing'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {MockResourceLoader} from './resource_loader_mock'; @@ -145,217 +145,217 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ }); describe('expressions', () => { - it('should support literals', fakeAsync(() => { + it('should support literals', () => { expect(_bindAndCheckSimpleValue(10)).toEqual(['id=10']); - })); + }); - it('should strip quotes from literals', fakeAsync(() => { + it('should strip quotes from literals', () => { expect(_bindAndCheckSimpleValue('"str"')).toEqual(['id=str']); - })); + }); - it('should support newlines in literals', fakeAsync(() => { + it('should support newlines in literals', () => { expect(_bindAndCheckSimpleValue('"a\n\nb"')).toEqual(['id=a\n\nb']); - })); + }); - it('should support + operations', fakeAsync(() => { + it('should support + operations', () => { expect(_bindAndCheckSimpleValue('10 + 2')).toEqual(['id=12']); - })); + }); - it('should support - operations', fakeAsync(() => { + it('should support - operations', () => { expect(_bindAndCheckSimpleValue('10 - 2')).toEqual(['id=8']); - })); + }); - it('should support * operations', fakeAsync(() => { + it('should support * operations', () => { expect(_bindAndCheckSimpleValue('10 * 2')).toEqual(['id=20']); - })); + }); - it('should support / operations', fakeAsync(() => { + it('should support / operations', () => { expect(_bindAndCheckSimpleValue('10 / 2')).toEqual([`id=5`]); - })); + }); - it('should support % operations', fakeAsync(() => { + it('should support % operations', () => { expect(_bindAndCheckSimpleValue('11 % 2')).toEqual(['id=1']); - })); + }); - it('should support == operations on identical', fakeAsync(() => { + it('should support == operations on identical', () => { expect(_bindAndCheckSimpleValue('1 == 1')).toEqual(['id=true']); - })); + }); - it('should support != operations', fakeAsync(() => { + it('should support != operations', () => { expect(_bindAndCheckSimpleValue('1 != 1')).toEqual(['id=false']); - })); + }); - it('should support == operations on coerceible', fakeAsync(() => { + it('should support == operations on coerceible', () => { expect(_bindAndCheckSimpleValue('1 == true')).toEqual([`id=true`]); - })); + }); - it('should support === operations on identical', fakeAsync(() => { + it('should support === operations on identical', () => { expect(_bindAndCheckSimpleValue('1 === 1')).toEqual(['id=true']); - })); + }); - it('should support !== operations', fakeAsync(() => { + it('should support !== operations', () => { expect(_bindAndCheckSimpleValue('1 !== 1')).toEqual(['id=false']); - })); + }); - it('should support === operations on coerceible', fakeAsync(() => { + it('should support === operations on coerceible', () => { expect(_bindAndCheckSimpleValue('1 === true')).toEqual(['id=false']); - })); + }); - it('should support true < operations', fakeAsync(() => { + it('should support true < operations', () => { expect(_bindAndCheckSimpleValue('1 < 2')).toEqual(['id=true']); - })); + }); - it('should support false < operations', fakeAsync(() => { + it('should support false < operations', () => { expect(_bindAndCheckSimpleValue('2 < 1')).toEqual(['id=false']); - })); + }); - it('should support false > operations', fakeAsync(() => { + it('should support false > operations', () => { expect(_bindAndCheckSimpleValue('1 > 2')).toEqual(['id=false']); - })); + }); - it('should support true > operations', fakeAsync(() => { + it('should support true > operations', () => { expect(_bindAndCheckSimpleValue('2 > 1')).toEqual(['id=true']); - })); + }); - it('should support true <= operations', fakeAsync(() => { + it('should support true <= operations', () => { expect(_bindAndCheckSimpleValue('1 <= 2')).toEqual(['id=true']); - })); + }); - it('should support equal <= operations', fakeAsync(() => { + it('should support equal <= operations', () => { expect(_bindAndCheckSimpleValue('2 <= 2')).toEqual(['id=true']); - })); + }); - it('should support false <= operations', fakeAsync(() => { + it('should support false <= operations', () => { expect(_bindAndCheckSimpleValue('2 <= 1')).toEqual(['id=false']); - })); + }); - it('should support true >= operations', fakeAsync(() => { + it('should support true >= operations', () => { expect(_bindAndCheckSimpleValue('2 >= 1')).toEqual(['id=true']); - })); + }); - it('should support equal >= operations', fakeAsync(() => { + it('should support equal >= operations', () => { expect(_bindAndCheckSimpleValue('2 >= 2')).toEqual(['id=true']); - })); + }); - it('should support false >= operations', fakeAsync(() => { + it('should support false >= operations', () => { expect(_bindAndCheckSimpleValue('1 >= 2')).toEqual(['id=false']); - })); + }); - it('should support true && operations', fakeAsync(() => { + it('should support true && operations', () => { expect(_bindAndCheckSimpleValue('true && true')).toEqual(['id=true']); - })); + }); - it('should support false && operations', fakeAsync(() => { + it('should support false && operations', () => { expect(_bindAndCheckSimpleValue('true && false')).toEqual(['id=false']); - })); + }); - it('should support true || operations', fakeAsync(() => { + it('should support true || operations', () => { expect(_bindAndCheckSimpleValue('true || false')).toEqual(['id=true']); - })); + }); - it('should support false || operations', fakeAsync(() => { + it('should support false || operations', () => { expect(_bindAndCheckSimpleValue('false || false')).toEqual(['id=false']); - })); + }); - it('should support negate', fakeAsync(() => { + it('should support negate', () => { expect(_bindAndCheckSimpleValue('!true')).toEqual(['id=false']); - })); + }); - it('should support double negate', fakeAsync(() => { + it('should support double negate', () => { expect(_bindAndCheckSimpleValue('!!true')).toEqual(['id=true']); - })); + }); - it('should support true conditionals', fakeAsync(() => { + it('should support true conditionals', () => { expect(_bindAndCheckSimpleValue('1 < 2 ? 1 : 2')).toEqual(['id=1']); - })); + }); - it('should support false conditionals', fakeAsync(() => { + it('should support false conditionals', () => { expect(_bindAndCheckSimpleValue('1 > 2 ? 1 : 2')).toEqual(['id=2']); - })); + }); - it('should support keyed access to a list item', fakeAsync(() => { + it('should support keyed access to a list item', () => { expect(_bindAndCheckSimpleValue('["foo", "bar"][0]')).toEqual(['id=foo']); - })); + }); - it('should support keyed access to a map item', fakeAsync(() => { + it('should support keyed access to a map item', () => { expect(_bindAndCheckSimpleValue('{"foo": "bar"}["foo"]')).toEqual(['id=bar']); - })); + }); - it('should report all changes on the first run including uninitialized values', fakeAsync(() => { + it('should report all changes on the first run including uninitialized values', () => { expect(_bindAndCheckSimpleValue('value', Uninitialized)).toEqual(['id=null']); - })); + }); - it('should report all changes on the first run including null values', fakeAsync(() => { + it('should report all changes on the first run including null values', () => { const ctx = _bindSimpleValue('a', TestData); ctx.componentInstance.a = null; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=null']); - })); + }); - it('should support simple chained property access', fakeAsync(() => { + it('should support simple chained property access', () => { const ctx = _bindSimpleValue('address.city', Person); ctx.componentInstance.name = 'Victor'; ctx.componentInstance.address = new Address('Grenoble'); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=Grenoble']); - })); + }); describe('safe navigation operator', () => { - it('should support reading properties of nulls', fakeAsync(() => { + it('should support reading properties of nulls', () => { const ctx = _bindSimpleValue('address?.city', Person); ctx.componentInstance.address = null!; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=undefined']); - })); + }); - it('should support calling methods on nulls', fakeAsync(() => { + it('should support calling methods on nulls', () => { const ctx = _bindSimpleValue('address?.toString()', Person); ctx.componentInstance.address = null!; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=undefined']); - })); + }); - it('should support reading properties on non nulls', fakeAsync(() => { + it('should support reading properties on non nulls', () => { const ctx = _bindSimpleValue('address?.city', Person); ctx.componentInstance.address = new Address('MTV'); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=MTV']); - })); + }); - it('should support calling methods on non nulls', fakeAsync(() => { + it('should support calling methods on non nulls', () => { const ctx = _bindSimpleValue('address?.toString()', Person); ctx.componentInstance.address = new Address('MTV'); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=MTV']); - })); + }); - it('should support short-circuting safe navigation', fakeAsync(() => { + it('should support short-circuting safe navigation', () => { const ctx = _bindSimpleValue('value?.address.city', PersonHolder); ctx.componentInstance.value = null!; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=undefined']); - })); + }); - it('should support nested short-circuting safe navigation', fakeAsync(() => { + it('should support nested short-circuting safe navigation', () => { const ctx = _bindSimpleValue('value.value?.address.city', PersonHolderHolder); ctx.componentInstance.value = new PersonHolder(); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=undefined']); - })); + }); - it('should support chained short-circuting safe navigation', fakeAsync(() => { + it('should support chained short-circuting safe navigation', () => { const ctx = _bindSimpleValue('value?.value?.address.city', PersonHolderHolder); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=undefined']); - })); + }); - it('should support short-circuting array index operations', fakeAsync(() => { + it('should support short-circuting array index operations', () => { const ctx = _bindSimpleValue('value?.phones[0]', PersonHolder); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=undefined']); - })); + }); - it('should still throw if right-side would throw', fakeAsync(() => { + it('should still throw if right-side would throw', () => { expect(() => { const ctx = _bindSimpleValue('value?.address.city', PersonHolder); const person = new Person(); @@ -363,30 +363,30 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.componentInstance.value = person; ctx.detectChanges(false); }).toThrow(); - })); + }); }); - it('should support method calls', fakeAsync(() => { + it('should support method calls', () => { const ctx = _bindSimpleValue('sayHi("Jim")', Person); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=Hi, Jim']); - })); + }); - it('should support function calls', fakeAsync(() => { + it('should support function calls', () => { const ctx = _bindSimpleValue('a()(99)', TestData); ctx.componentInstance.a = () => (a: any) => a; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=99']); - })); + }); - it('should support chained method calls', fakeAsync(() => { + it('should support chained method calls', () => { const ctx = _bindSimpleValue('address.toString()', Person); ctx.componentInstance.address = new Address('MTV'); ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=MTV']); - })); + }); - it('should support NaN', fakeAsync(() => { + it('should support NaN', () => { const ctx = _bindSimpleValue('age', Person); ctx.componentInstance.age = NaN; ctx.detectChanges(false); @@ -396,9 +396,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(renderLog.log).toEqual([]); - })); + }); - it('should do simple watching', fakeAsync(() => { + it('should do simple watching', () => { const ctx = _bindSimpleValue('name', Person); ctx.componentInstance.name = 'misko'; @@ -413,28 +413,28 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.componentInstance.name = 'Misko'; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=Misko']); - })); + }); - it('should support literal array made of literals', fakeAsync(() => { + it('should support literal array made of literals', () => { const ctx = _bindSimpleValue('[1, 2]'); ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual([[1, 2]]); - })); + }); - it('should support empty literal array', fakeAsync(() => { + it('should support empty literal array', () => { const ctx = _bindSimpleValue('[]'); ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual([[]]); - })); + }); - it('should support literal array made of expressions', fakeAsync(() => { + it('should support literal array made of expressions', () => { const ctx = _bindSimpleValue('[1, a]', TestData); ctx.componentInstance.a = 2; ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual([[1, 2]]); - })); + }); - it('should not recreate literal arrays unless their content changed', fakeAsync(() => { + it('should not recreate literal arrays unless their content changed', () => { const ctx = _bindSimpleValue('[1, a]', TestData); ctx.componentInstance.a = 2; ctx.detectChanges(false); @@ -446,28 +446,28 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ [1, 2], [1, 3], ]); - })); + }); - it('should support literal maps made of literals', fakeAsync(() => { + it('should support literal maps made of literals', () => { const ctx = _bindSimpleValue('{z: 1}'); ctx.detectChanges(false); expect(renderLog.loggedValues[0]['z']).toEqual(1); - })); + }); - it('should support empty literal map', fakeAsync(() => { + it('should support empty literal map', () => { const ctx = _bindSimpleValue('{}'); ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual([{}]); - })); + }); - it('should support literal maps made of expressions', fakeAsync(() => { + it('should support literal maps made of expressions', () => { const ctx = _bindSimpleValue('{z: a}'); ctx.componentInstance.a = 1; ctx.detectChanges(false); expect(renderLog.loggedValues[0]['z']).toEqual(1); - })); + }); - it('should not recreate literal maps unless their content changed', fakeAsync(() => { + it('should not recreate literal maps unless their content changed', () => { const ctx = _bindSimpleValue('{z: a}'); ctx.componentInstance.a = 1; ctx.detectChanges(false); @@ -478,76 +478,76 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ expect(renderLog.loggedValues.length).toBe(2); expect(renderLog.loggedValues[0]['z']).toEqual(1); expect(renderLog.loggedValues[1]['z']).toEqual(2); - })); + }); - it('should ignore empty bindings', fakeAsync(() => { + it('should ignore empty bindings', () => { const ctx = _bindSimpleProp('[id]', TestData); ctx.componentInstance.a = 'value'; ctx.detectChanges(false); expect(renderLog.log).toEqual([]); - })); + }); - it('should support interpolation', fakeAsync(() => { + it('should support interpolation', () => { const ctx = _bindSimpleProp('id="B{{a}}A"', TestData); ctx.componentInstance.a = 'value'; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=BvalueA']); - })); + }); - it('should output empty strings for null values in interpolation', fakeAsync(() => { + it('should output empty strings for null values in interpolation', () => { const ctx = _bindSimpleProp('id="B{{a}}A"', TestData); ctx.componentInstance.a = null; ctx.detectChanges(false); expect(renderLog.log).toEqual(['id=BA']); - })); + }); - it('should escape values in literals that indicate interpolation', fakeAsync(() => { + it('should escape values in literals that indicate interpolation', () => { expect(_bindAndCheckSimpleValue('"$"')).toEqual(['id=$']); - })); + }); - it('should read locals', fakeAsync(() => { + it('should read locals', () => { const ctx = createCompFixture( '{{local}}', ); ctx.detectChanges(false); expect(renderLog.log).toEqual(['{{someLocalValue}}']); - })); + }); describe('pipes', () => { - it('should use the return value of the pipe', fakeAsync(() => { + it('should use the return value of the pipe', () => { const ctx = _bindSimpleValue('name | countingPipe', Person); ctx.componentInstance.name = 'bob'; ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual(['bob state:0']); - })); + }); - it('should support arguments in pipes', fakeAsync(() => { + it('should support arguments in pipes', () => { const ctx = _bindSimpleValue('name | multiArgPipe:"one":address.city', Person); ctx.componentInstance.name = 'value'; ctx.componentInstance.address = new Address('two'); ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual(['value one two default']); - })); + }); - it('should associate pipes right-to-left', fakeAsync(() => { + it('should associate pipes right-to-left', () => { const ctx = _bindSimpleValue('name | multiArgPipe:"a":"b" | multiArgPipe:0:1', Person); ctx.componentInstance.name = 'value'; ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual(['value a b default 0 1 default']); - })); + }); - it('should support calling pure pipes with different number of arguments', fakeAsync(() => { + it('should support calling pure pipes with different number of arguments', () => { const ctx = _bindSimpleValue('name | multiArgPipe:"a":"b" | multiArgPipe:0:1:2', Person); ctx.componentInstance.name = 'value'; ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual(['value a b default 0 1 2']); - })); + }); - it('should do nothing when no change', fakeAsync(() => { + it('should do nothing when no change', () => { const ctx = _bindSimpleValue('"Megatron" | identityPipe', Person); ctx.detectChanges(false); @@ -558,9 +558,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(renderLog.log).toEqual([]); - })); + }); - it('should call pure pipes only if the arguments change', fakeAsync(() => { + it('should call pure pipes only if the arguments change', () => { const ctx = _bindSimpleValue('name | countingPipe', Person); // change from undefined -> null ctx.componentInstance.name = null!; @@ -582,9 +582,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ expect(renderLog.loggedValues).toEqual(['null state:0', 'bob state:1', 'bart state:2']); ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual(['null state:0', 'bob state:1', 'bart state:2']); - })); + }); - it('should call pure pipes that are used multiple times only when the arguments change', fakeAsync(() => { + it('should call pure pipes that are used multiple times only when the arguments change', () => { const ctx = createCompFixture( `
` + '
', @@ -616,20 +616,20 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'mtv state:0', '11 state:1', ]); - })); + }); - it('should call impure pipes on each change detection run', fakeAsync(() => { + it('should call impure pipes on each change detection run', () => { const ctx = _bindSimpleValue('name | countingImpurePipe', Person); ctx.componentInstance.name = 'bob'; ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual(['bob state:0']); ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual(['bob state:0', 'bob state:1']); - })); + }); }); describe('event expressions', () => { - it('should support field assignments', fakeAsync(() => { + it('should support field assignments', () => { const ctx = _bindSimpleProp('(event)="b=a=$event"'); const childEl = ctx.debugElement.children[0]; const evt = 'EVENT'; @@ -637,34 +637,34 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ expect(ctx.componentInstance.a).toEqual(evt); expect(ctx.componentInstance.b).toEqual(evt); - })); + }); - it('should support keyed assignments', fakeAsync(() => { + it('should support keyed assignments', () => { const ctx = _bindSimpleProp('(event)="a[0]=$event"'); const childEl = ctx.debugElement.children[0]; ctx.componentInstance.a = ['OLD']; const evt = 'EVENT'; childEl.triggerEventHandler('event', evt); expect(ctx.componentInstance.a).toEqual([evt]); - })); + }); - it('should support chains', fakeAsync(() => { + it('should support chains', () => { const ctx = _bindSimpleProp('(event)="a=a+1; a=a+1;"'); const childEl = ctx.debugElement.children[0]; ctx.componentInstance.a = 0; childEl.triggerEventHandler('event', 'EVENT'); expect(ctx.componentInstance.a).toEqual(2); - })); + }); - it('should support empty literals', fakeAsync(() => { + it('should support empty literals', () => { const ctx = _bindSimpleProp('(event)="a=[{},[]]"'); const childEl = ctx.debugElement.children[0]; childEl.triggerEventHandler('event', 'EVENT'); expect(ctx.componentInstance.a).toEqual([{}, []]); - })); + }); - xit('should throw when trying to assign to a local', fakeAsync(() => { + xit('should throw when trying to assign to a local', () => { expect(() => { _bindSimpleProp('(event)="$event=1"'); }).toThrowError( @@ -672,20 +672,20 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'Cannot assign value (.*) to template variable (.*). Template variables are read-only.', ), ); - })); + }); - it('should support short-circuiting', fakeAsync(() => { + it('should support short-circuiting', () => { const ctx = _bindSimpleProp('(event)="true ? a = a + 1 : a = a + 1"'); const childEl = ctx.debugElement.children[0]; ctx.componentInstance.a = 0; childEl.triggerEventHandler('event', 'EVENT'); expect(ctx.componentInstance.a).toEqual(1); - })); + }); }); }); describe('RendererFactory', () => { - it('should call the begin and end methods on the renderer factory when change detection is called', fakeAsync(() => { + it('should call the begin and end methods on the renderer factory when change detection is called', () => { const ctx = createCompFixture('
'); const rf = TestBed.inject(RendererFactory2); // TODO: @JiaLiPassion, need to wait @types/jasmine to fix the @@ -699,31 +699,31 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(rf.begin).toHaveBeenCalled(); expect(rf.end).toHaveBeenCalled(); - })); + }); }); describe('change notification', () => { describe('updating directives', () => { - it('should happen without invoking the renderer', fakeAsync(() => { + it('should happen without invoking the renderer', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); expect(renderLog.log).toEqual([]); expect(queryDirs(ctx.debugElement, TestDirective)[0].a).toEqual(42); - })); + }); }); describe('reading directives', () => { - it('should read directive properties', fakeAsync(() => { + it('should read directive properties', () => { const ctx = createCompFixture( '
', ); ctx.detectChanges(false); expect(renderLog.loggedValues).toEqual([42]); - })); + }); }); describe('ngOnChanges', () => { - it('should notify the directive when a group of records changes', fakeAsync(() => { + it('should notify the directive when a group of records changes', () => { const ctx = createCompFixture( '
', ); @@ -739,7 +739,7 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'a': new SimpleChange(undefined, 4, true), 'name': new SimpleChange(undefined, 'bName', true), }); - })); + }); }); }); @@ -759,7 +759,7 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ } describe('ngOnInit', () => { - it('should be called after ngOnChanges', fakeAsync(() => { + it('should be called after ngOnChanges', () => { const ctx = createCompFixture('
'); expect(directiveLog.filter(['ngOnInit', 'ngOnChanges'])).toEqual([]); @@ -774,9 +774,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(directiveLog.filter(['ngOnInit'])).toEqual([]); - })); + }); - it('should only be called only once', fakeAsync(() => { + it('should only be called only once', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); @@ -795,9 +795,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(directiveLog.filter(['ngOnInit'])).toEqual([]); - })); + }); - it('should not call ngOnInit again if it throws', fakeAsync(() => { + it('should not call ngOnInit again if it throws', () => { const ctx = createCompFixture('
'); let errored = false; @@ -821,11 +821,11 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ throw new Error('Second detectChanges() should not have called ngOnInit.'); } expect(directiveLog.filter(['ngOnInit'])).toEqual([]); - })); + }); }); describe('ngDoCheck', () => { - it('should be called after ngOnInit', fakeAsync(() => { + it('should be called after ngOnInit', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); @@ -833,9 +833,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'dir.ngOnInit', 'dir.ngDoCheck', ]); - })); + }); - it('should be called on every detectChanges run, except for checkNoChanges', fakeAsync(() => { + it('should be called on every detectChanges run, except for checkNoChanges', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); @@ -854,11 +854,11 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(directiveLog.filter(['ngDoCheck'])).toEqual(['dir.ngDoCheck']); - })); + }); }); describe('ngAfterContentInit', () => { - it('should be called after processing the content children but before the view children', fakeAsync(() => { + it('should be called after processing the content children but before the view children', () => { const ctx = createCompWithContentAndViewChild(); ctx.detectChanges(false); @@ -870,9 +870,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'viewChild.ngDoCheck', 'viewChild.ngAfterContentInit', ]); - })); + }); - it('should only be called only once', fakeAsync(() => { + it('should only be called only once', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); @@ -891,9 +891,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(directiveLog.filter(['ngAfterContentInit'])).toEqual([]); - })); + }); - it('should not call ngAfterContentInit again if it throws', fakeAsync(() => { + it('should not call ngAfterContentInit again if it throws', () => { const ctx = createCompFixture( '
', ); @@ -918,11 +918,11 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ throw new Error('Second detectChanges() should not have run detection.'); } expect(directiveLog.filter(['ngAfterContentInit'])).toEqual([]); - })); + }); }); describe('ngAfterContentChecked', () => { - it('should be called after the content children but before the view children', fakeAsync(() => { + it('should be called after the content children but before the view children', () => { const ctx = createCompWithContentAndViewChild(); ctx.detectChanges(false); @@ -935,9 +935,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'viewChild.ngDoCheck', 'viewChild.ngAfterContentChecked', ]); - })); + }); - it('should be called on every detectChanges run, except for checkNoChanges', fakeAsync(() => { + it('should be called on every detectChanges run, except for checkNoChanges', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); @@ -960,9 +960,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ expect(directiveLog.filter(['ngAfterContentChecked'])).toEqual([ 'dir.ngAfterContentChecked', ]); - })); + }); - it('should be called in reverse order so the child is always notified before the parent', fakeAsync(() => { + it('should be called in reverse order so the child is always notified before the parent', () => { const ctx = createCompFixture( '
', ); @@ -974,11 +974,11 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'parent.ngAfterContentChecked', 'sibling.ngAfterContentChecked', ]); - })); + }); }); describe('ngAfterViewInit', () => { - it('should be called after processing the view children', fakeAsync(() => { + it('should be called after processing the view children', () => { const ctx = createCompWithContentAndViewChild(); ctx.detectChanges(false); @@ -991,9 +991,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'viewChild.ngAfterViewInit', 'parent.ngAfterViewInit', ]); - })); + }); - it('should only be called only once', fakeAsync(() => { + it('should only be called only once', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); @@ -1012,9 +1012,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(directiveLog.filter(['ngAfterViewInit'])).toEqual([]); - })); + }); - it('should not call ngAfterViewInit again if it throws', fakeAsync(() => { + it('should not call ngAfterViewInit again if it throws', () => { const ctx = createCompFixture( '
', ); @@ -1039,11 +1039,11 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ throw new Error('Second detectChanges() should not have run detection.'); } expect(directiveLog.filter(['ngAfterViewInit'])).toEqual([]); - })); + }); }); describe('ngAfterViewChecked', () => { - it('should be called after processing the view children', fakeAsync(() => { + it('should be called after processing the view children', () => { const ctx = createCompWithContentAndViewChild(); ctx.detectChanges(false); @@ -1056,9 +1056,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'viewChild.ngAfterViewChecked', 'parent.ngAfterViewChecked', ]); - })); + }); - it('should be called on every detectChanges run, except for checkNoChanges', fakeAsync(() => { + it('should be called on every detectChanges run, except for checkNoChanges', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); @@ -1077,9 +1077,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(false); expect(directiveLog.filter(['ngAfterViewChecked'])).toEqual(['dir.ngAfterViewChecked']); - })); + }); - it('should be called in reverse order so the child is always notified before the parent', fakeAsync(() => { + it('should be called in reverse order so the child is always notified before the parent', () => { const ctx = createCompFixture( '
', ); @@ -1091,20 +1091,20 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'parent.ngAfterViewChecked', 'sibling.ngAfterViewChecked', ]); - })); + }); }); describe('ngOnDestroy', () => { - it('should be called on view destruction', fakeAsync(() => { + it('should be called on view destruction', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); ctx.destroy(); expect(directiveLog.filter(['ngOnDestroy'])).toEqual(['dir.ngOnDestroy']); - })); + }); - it('should be called after processing the content and view children', fakeAsync(() => { + it('should be called after processing the content and view children', () => { TestBed.overrideComponent(AnotherComponent, { set: new Component({ selector: 'other-cmp', @@ -1127,9 +1127,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'viewChild.ngOnDestroy', 'parent.ngOnDestroy', ]); - })); + }); - it('should be called in reverse order so the child is always notified before the parent', fakeAsync(() => { + it('should be called in reverse order so the child is always notified before the parent', () => { const ctx = createCompFixture( '
', ); @@ -1142,27 +1142,27 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'parent.ngOnDestroy', 'sibling.ngOnDestroy', ]); - })); + }); - it('should deliver synchronous events to parent', fakeAsync(() => { + it('should deliver synchronous events to parent', () => { const ctx = createCompFixture('
'); ctx.detectChanges(false); ctx.destroy(); expect(ctx.componentInstance.a).toEqual('destroyed'); - })); + }); - it('should call ngOnDestroy on pipes', fakeAsync(() => { + it('should call ngOnDestroy on pipes', () => { const ctx = createCompFixture('{{true | pipeWithOnDestroy }}'); ctx.detectChanges(false); ctx.destroy(); expect(directiveLog.filter(['ngOnDestroy'])).toEqual(['pipeWithOnDestroy.ngOnDestroy']); - })); + }); - it('should call ngOnDestroy on an injectable class', fakeAsync(() => { + it('should call ngOnDestroy on an injectable class', () => { TestBed.overrideDirective(TestDirective, {set: {providers: [InjectableWithLifecycle]}}); const ctx = createCompFixture('
', TestComponent); @@ -1177,12 +1177,12 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ 'dir.ngOnDestroy', 'injectable.ngOnDestroy', ]); - })); + }); }); }); describe('enforce no new changes', () => { - it('should throw when a record gets changed after it has been checked', fakeAsync(() => { + it('should throw when a record gets changed after it has been checked', () => { @Directive({ selector: '[changed]', standalone: false, @@ -1198,9 +1198,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.componentInstance.b = 1; const errMsgRegExp = /Previous value: 'undefined'\. Current value: '1'/g; expect(() => ctx.checkNoChanges()).toThrowError(errMsgRegExp); - })); + }); - it('should throw when a record gets changed after the first change detection pass', fakeAsync(() => { + it('should throw when a record gets changed after the first change detection pass', () => { @Directive({ selector: '[changed]', standalone: false, @@ -1219,7 +1219,7 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.componentInstance.b = 2; const errMsgRegExp = /Previous value: '1'\. Current value: '2'/g; expect(() => ctx.checkNoChanges()).toThrowError(errMsgRegExp); - })); + }); it('should allow view to be created in a cd hook', () => { const ctx = createCompFixture('
{{ a }}
', TestData); @@ -1228,24 +1228,24 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ expect(ctx.nativeElement.innerText).toEqual('1'); }); - it('should not throw when two arrays are structurally the same', fakeAsync(() => { + it('should not throw when two arrays are structurally the same', () => { const ctx = _bindSimpleValue('a', TestData); ctx.componentInstance.a = ['value']; ctx.detectChanges(false); ctx.componentInstance.a = ['value']; expect(() => ctx.checkNoChanges()).not.toThrow(); - })); + }); - it('should not break the next run', fakeAsync(() => { + it('should not break the next run', () => { const ctx = _bindSimpleValue('a', TestData); ctx.componentInstance.a = 'value'; expect(() => ctx.checkNoChanges()).toThrow(); ctx.detectChanges(); expect(renderLog.loggedValues).toEqual(['value']); - })); + }); - it('should not break the next run (view engine and ivy)', fakeAsync(() => { + it('should not break the next run (view engine and ivy)', () => { const ctx = _bindSimpleValue('a', TestData); ctx.detectChanges(); @@ -1256,11 +1256,11 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(); expect(renderLog.loggedValues).toEqual(['value']); - })); + }); }); describe('mode', () => { - it('Detached', fakeAsync(() => { + it('Detached', () => { const ctx = createCompFixture(''); const cmp: CompWithRef = queryDirs(ctx.debugElement, CompWithRef)[0]; cmp.value = 'hello'; @@ -1269,9 +1269,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(); expect(renderLog.log).toEqual([]); - })); + }); - it('Detached should disable OnPush', fakeAsync(() => { + it('Detached should disable OnPush', () => { const ctx = createCompFixture(''); ctx.componentInstance.value = 0; ctx.detectChanges(); @@ -1284,9 +1284,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(); expect(renderLog.log).toEqual([]); - })); + }); - it('Detached view can be checked locally', fakeAsync(() => { + it('Detached view can be checked locally', () => { const ctx = createCompFixture(''); const cmp: CompWithRef = queryDirs(ctx.debugElement, CompWithRef)[0]; cmp.value = 'hello'; @@ -1300,9 +1300,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ cmp.changeDetectorRef.detectChanges(); expect(renderLog.log).toEqual(['{{hello}}']); - })); + }); - it('Reattaches', fakeAsync(() => { + it('Reattaches', () => { const ctx = createCompFixture(''); const cmp: CompWithRef = queryDirs(ctx.debugElement, CompWithRef)[0]; @@ -1318,9 +1318,9 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(); expect(renderLog.log).toEqual(['{{hello}}']); - })); + }); - it('Reattaches in the original cd mode', fakeAsync(() => { + it('Reattaches in the original cd mode', () => { const ctx = createCompFixture(''); const cmp: PushComp = queryDirs(ctx.debugElement, PushComp)[0]; cmp.changeDetectorRef.detach(); @@ -1335,7 +1335,7 @@ const TEST_COMPILER_PROVIDERS: Provider[] = [ ctx.detectChanges(); expect(cmp.renderCount).toBe(count); - })); + }); }); describe('nested view recursion', () => { diff --git a/packages/core/test/linker/integration_spec.ts b/packages/core/test/linker/integration_spec.ts index 3df850cf2406..f91a9b922e30 100644 --- a/packages/core/test/linker/integration_spec.ts +++ b/packages/core/test/linker/integration_spec.ts @@ -51,7 +51,7 @@ import {QueryList} from '../../src/linker/query_list'; import {TemplateRef} from '../../src/linker/template_ref'; import {ViewContainerRef} from '../../src/linker/view_container_ref'; import {EmbeddedViewRef} from '../../src/linker/view_ref'; -import {fakeAsync, getTestBed, TestBed, tick, waitForAsync} from '../../testing'; +import {getTestBed, TestBed, waitForAsync} from '../../testing'; import {stringify} from '../../src/util/stringify'; @@ -589,13 +589,13 @@ describe('integration tests', function () { }); if (getDOM().supportsDOMEvents) { - it('should allow to destroy a component from within a host event handler', fakeAsync(() => { + it('should allow to destroy a component from within a host event handler', async () => { TestBed.configureTestingModule({declarations: [MyComp, [[PushCmpWithHostEvent]]]}); const template = ''; TestBed.overrideComponent(MyComp, {set: {template}}); const fixture = TestBed.createComponent(MyComp); - tick(); + await fixture.whenStable(); fixture.detectChanges(); const cmpEl = fixture.debugElement.children[0]; @@ -603,7 +603,7 @@ describe('integration tests', function () { cmp.ctxCallback = (_: any) => fixture.destroy(); expect(() => cmpEl.triggerEventHandler('click', {})).not.toThrow(); - })); + }); } it('should be checked when an event is fired', () => { @@ -663,7 +663,7 @@ describe('integration tests', function () { expect(cmp.prop).toEqual('two'); }); - it('should be checked when an async pipe requests a check', fakeAsync(() => { + it('should be checked when an async pipe requests a check', async () => { TestBed.configureTestingModule({ declarations: [MyComp, PushCmpWithAsyncPipe], imports: [CommonModule], @@ -672,7 +672,7 @@ describe('integration tests', function () { TestBed.overrideComponent(MyComp, {set: {template}}); const fixture = TestBed.createComponent(MyComp); - tick(); + await fixture.whenStable(); const cmp: PushCmpWithAsyncPipe = fixture.debugElement.children[0].references!['cmp']; fixture.detectChanges(); @@ -683,11 +683,11 @@ describe('integration tests', function () { expect(cmp.numberOfChecks).toEqual(1); cmp.resolve(2); - tick(); + await fixture.whenStable(); fixture.detectChanges(); expect(cmp.numberOfChecks).toEqual(2); - })); + }); }); it('should create a component that injects an @Host', () => { @@ -2030,7 +2030,7 @@ describe('integration tests', function () { }); if (getDOM().supportsDOMEvents) { - it('should support event decorators', fakeAsync(() => { + it('should support event decorators', async () => { TestBed.configureTestingModule({ declarations: [MyComp, DirectiveWithPropDecorators], schemas: [NO_ERRORS_SCHEMA], @@ -2039,15 +2039,15 @@ describe('integration tests', function () { TestBed.overrideComponent(MyComp, {set: {template}}); const fixture = TestBed.createComponent(MyComp); - tick(); + await fixture.whenStable(); const emitter = fixture.debugElement.children[0].injector.get(DirectiveWithPropDecorators); emitter.fireEvent('fired !'); - tick(); + await fixture.whenStable(); expect(fixture.componentInstance.ctxProp()).toEqual('called'); - })); + }); it('should support host listener decorators', () => { TestBed.configureTestingModule({ diff --git a/packages/core/test/linker/query_list_spec.ts b/packages/core/test/linker/query_list_spec.ts index ef046cd2ecfa..f16e4c33b77f 100644 --- a/packages/core/test/linker/query_list_spec.ts +++ b/packages/core/test/linker/query_list_spec.ts @@ -9,7 +9,6 @@ import {ɵgetDOM as getDOM} from '@angular/common'; import {QueryList} from '../../src/linker/query_list'; import {iterateListLike} from '../../src/util/iterable'; -import {fakeAsync, tick} from '../../testing'; describe('QueryList', () => { let queryList: QueryList; @@ -160,7 +159,7 @@ describe('QueryList', () => { if (getDOM().supportsDOMEvents) { describe('simple observable interface', () => { - it('should fire callbacks on change', fakeAsync(() => { + it('should fire callbacks on change', () => { let fires = 0; queryList.changes.subscribe({ next: (_) => { @@ -169,17 +168,15 @@ describe('QueryList', () => { }); queryList.notifyOnChanges(); - tick(); expect(fires).toEqual(1); queryList.notifyOnChanges(); - tick(); expect(fires).toEqual(2); - })); + }); - it('should provides query list as an argument', fakeAsync(() => { + it('should provides query list as an argument', () => { let recorded!: QueryList; queryList.changes.subscribe({ next: (v: QueryList) => { @@ -189,10 +186,9 @@ describe('QueryList', () => { queryList.reset(['one']); queryList.notifyOnChanges(); - tick(); expect(recorded).toBe(queryList); - })); + }); }); } }); diff --git a/packages/core/test/linker/regression_integration_spec.ts b/packages/core/test/linker/regression_integration_spec.ts index 41b6bae0256b..351aa81e8268 100644 --- a/packages/core/test/linker/regression_integration_spec.ts +++ b/packages/core/test/linker/regression_integration_spec.ts @@ -36,7 +36,7 @@ import { ViewContainerRef, provideZoneChangeDetection, } from '../../src/core'; -import {fakeAsync, inject, TestBed, tick} from '../../testing'; +import {inject, TestBed} from '../../testing'; import {BrowserModule, By, platformBrowser} from '@angular/platform-browser'; import {expect} from '@angular/private/testing/matchers'; @@ -88,7 +88,7 @@ describe('regressions', () => { expect(CountingPipe.calls).toBe(1); }); - it('should only update the bound property when using asyncPipe - #15205', fakeAsync(() => { + it('should only update the bound property when using asyncPipe - #15205', async () => { @Component({ template: '
', standalone: false, @@ -130,12 +130,12 @@ describe('regressions', () => { dir.setterCalls = {}; dir.changes = {}; - tick(); + await fixture.whenStable(); fixture.detectChanges(); expect(dir.setterCalls).toEqual({'a': 1}); expect(Object.keys(dir.changes)).toEqual(['a']); - })); + }); it('should only evaluate methods once - #10639', () => { TestBed.configureTestingModule({declarations: [MyCountingComp]}); diff --git a/packages/core/test/linker/view_injector_integration_spec.ts b/packages/core/test/linker/view_injector_integration_spec.ts index 28f725241939..421ad54499cf 100644 --- a/packages/core/test/linker/view_injector_integration_spec.ts +++ b/packages/core/test/linker/view_injector_integration_spec.ts @@ -35,7 +35,7 @@ import { ViewContainerRef, } from '../../src/core'; import {ERROR_DETAILS_PAGE_BASE_URL} from '../../src/error_details_base_url'; -import {ComponentFixture, fakeAsync, TestBed} from '../../testing'; +import {ComponentFixture, TestBed} from '../../testing'; @Directive({ selector: '[simpleDirective]', @@ -822,22 +822,22 @@ describe('View injector', () => { ); }); - it('should instantiate directives that depend on other directives', fakeAsync(() => { + it('should instantiate directives that depend on other directives', () => { TestBed.configureTestingModule({declarations: [SimpleDirective, NeedsDirective]}); const el = createComponent('
'); const d = el.children[0].children[0].injector.get(NeedsDirective); expect(d).toBeInstanceOf(NeedsDirective); expect(d.dependency).toBeInstanceOf(SimpleDirective); - })); + }); - it('should throw when a dependency cannot be resolved', fakeAsync(() => { + it('should throw when a dependency cannot be resolved', () => { TestBed.configureTestingModule({declarations: [NeedsService]}); expect(() => createComponent('
')).toThrowError( /NG0201: No provider found for `service`\./, ); - })); + }); it('should inject null when an optional dependency cannot be resolved', () => { TestBed.configureTestingModule({declarations: [OptionallyNeedsDirective]}); From da8dac62a79025fa42ae3ee5c64e3e3f1979ce54 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 6 Sep 2026 13:09:25 +0300 Subject: [PATCH 04/41] fix(docs-infra): highlight home page code for the resolved theme `CodeBlock` picked `github-light` only when the theme was exactly `light`, but `Theme` also has `auto`, the value for anyone who has not opened the theme menu, and `theme()` is `null` during prerendering. Both fell to `github-dark`, so the samples in the Signals, Control Flow and Deferrable Views tabs on https://angular.dev rendered on a dark slab inside a light page. Resolve the theme in `ThemeManager`, which already owns the `auto` translation. `resolvedTheme` returns `light` when `theme()` is `null`, which happens only during prerendering, so `window` is never read. The device scheme moves into a signal so `auto` also reacts to OS scheme changes. (cherry picked from commit 8576f161ae45f810a49be6b2c4c666ccf5f5d3c4) --- .../core/services/theme-manager.service.ts | 19 ++++++++++++++----- .../home/components/code-block/code-block.ts | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/adev/src/app/core/services/theme-manager.service.ts b/adev/src/app/core/services/theme-manager.service.ts index 5458086fb875..3e6d1ead0d67 100644 --- a/adev/src/app/core/services/theme-manager.service.ts +++ b/adev/src/app/core/services/theme-manager.service.ts @@ -7,7 +7,7 @@ */ import {DOCUMENT, isPlatformBrowser} from '@angular/common'; -import {PLATFORM_ID, Service, inject, signal} from '@angular/core'; +import {PLATFORM_ID, Service, computed, inject, signal} from '@angular/core'; import {LOCAL_STORAGE} from '@angular/docs'; // Keep these constants in sync with the code in index.html @@ -26,12 +26,21 @@ export class ThemeManager { private readonly platformId = inject(PLATFORM_ID); readonly theme = signal(this.getThemeFromLocalStorageValue()); + private readonly osScheme = signal<'dark' | 'light'>('light'); + readonly resolvedTheme = computed<'dark' | 'light'>(() => { + const theme = this.theme(); + if (theme === null) { + return 'light'; + } + return theme === 'auto' ? this.osScheme() : theme; + }); constructor() { if (!isPlatformBrowser(this.platformId)) { return; } + this.osScheme.set(preferredScheme()); this.loadThemePreference(); this.watchPreferredColorScheme(); } @@ -39,7 +48,7 @@ export class ThemeManager { setTheme(theme: Theme): void { this.theme.set(theme); this.setThemeInLocalStorage(); - this.setThemeBodyClasses(theme === 'auto' ? preferredScheme() : theme); + this.setThemeBodyClasses(this.resolvedTheme()); } // 1. Read theme preferences stored in localStorage @@ -49,7 +58,7 @@ export class ThemeManager { const useTheme = savedUserPreference ?? 'auto'; this.theme.set(useTheme); - this.setThemeBodyClasses(useTheme === 'auto' ? preferredScheme() : useTheme); + this.setThemeBodyClasses(this.resolvedTheme()); } // Set theme classes on the body element @@ -77,11 +86,11 @@ export class ThemeManager { private watchPreferredColorScheme() { window.matchMedia(PREFERS_COLOR_SCHEME_DARK).addEventListener('change', (event) => { + this.osScheme.set(event.matches ? 'dark' : 'light'); if (this.theme() !== 'auto') { return; } - const preferredScheme = event.matches ? 'dark' : 'light'; - this.setThemeBodyClasses(preferredScheme); + this.setThemeBodyClasses(this.resolvedTheme()); }); } } diff --git a/adev/src/app/features/home/components/code-block/code-block.ts b/adev/src/app/features/home/components/code-block/code-block.ts index d9fd263eb06f..d79e13a5cfc5 100644 --- a/adev/src/app/features/home/components/code-block/code-block.ts +++ b/adev/src/app/features/home/components/code-block/code-block.ts @@ -34,7 +34,7 @@ export class CodeBlock { .codeToHtml(this.code(), { cssVariablePrefix: '--shiki-', lang: this.language(), - theme: this.theme.theme() === 'light' ? 'github-light' : 'github-dark', + theme: this.theme.resolvedTheme() === 'dark' ? 'github-dark' : 'github-light', }) .then((hightlightedHtml) => { return this.sanitizer.bypassSecurityTrustHtml(hightlightedHtml); From 1905dc6b25033cf44e3b46a5b69b6be413a55287 Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Thu, 10 Sep 2026 11:37:30 -0700 Subject: [PATCH 05/41] release: bump VSCode extension version to 22.1.1 (#70666) --- vscode-ng-language-service/CHANGELOG.md | 10 ++++++++++ vscode-ng-language-service/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/vscode-ng-language-service/CHANGELOG.md b/vscode-ng-language-service/CHANGELOG.md index b51eb31fff92..6b9a30365fd3 100644 --- a/vscode-ng-language-service/CHANGELOG.md +++ b/vscode-ng-language-service/CHANGELOG.md @@ -1,3 +1,13 @@ +## 22.1.1 (2026-09-10) + +- fix(vscode-extension): prevent JSDoc link provider injection ([731b959a81](https://github.com/angular/angular/commit/731b959a810a3cef8436ebea483397f9dcdaea78)) +- fix(vscode-extension): handle escaped delimiters in inline template and styles highlighting ([120aac9108](https://github.com/angular/angular/commit/120aac91089f8f2665013e8f3ecd9b31ce6d1828)) +- fix(language-service): honor quote style preference when generating imports ([93d7f718d2](https://github.com/angular/angular/commit/93d7f718d2e057e37deda42d197e46672fe7f7f5)) +- fix(language-server): recover project for external templates in solution-style workspaces ([14fbe04612](https://github.com/angular/angular/commit/14fbe04612d29460c5d01d6c65cde579f0a42e95)) +- fix(vscode-extension): prevent command URI injection in TSDK approval ([8adaa09f95](https://github.com/angular/angular/commit/8adaa09f959c2e758de5811e7b9f6abd99be8b7d)) + + + ## 22.1.0 (2026-08-12) - fix(language-service): account for strictTemplates being enabled by default ([a99fb915c0](https://github.com/angular/angular/commit/a99fb915c09b352ac67f24e71af84cda30bcbf3e)) diff --git a/vscode-ng-language-service/package.json b/vscode-ng-language-service/package.json index 682011fd87f0..fd018c2dac50 100644 --- a/vscode-ng-language-service/package.json +++ b/vscode-ng-language-service/package.json @@ -2,7 +2,7 @@ "name": "ng-template", "displayName": "Angular Language Service", "description": "Editor services for Angular templates", - "version": "22.1.0", + "version": "22.1.1", "private": true, "publisher": "Angular", "icon": "angular.png", From 5e632b639f736de876823a596dd9e3a094b03e1b Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Wed, 9 Sep 2026 21:56:22 +0000 Subject: [PATCH 06/41] fix(compiler): wrap `@for` collection expression before appending non-null assertion When generating type check blocks for `@for` loops, a non-null assertion is appended to the collection expression. If the collection expression is a compound expression (e.g. binary or logical operations like a && b), the lack of outer parentheses caused the ! to bind only to the rightmost operand (a && b!), leading to typecheck errors such as TS2532. This wraps the expression via .wrapForTypeChecker() before appending !. (cherry picked from commit 14dbbf9b68474a442a295ae165543c8923eae4b8) --- .../typecheck/test/type_check_block_spec.ts | 29 ++-- .../test/ngtsc/template_typecheck_spec.ts | 128 ++++++++++++++++++ .../compiler/src/typecheck/ops/for_block.ts | 5 +- 3 files changed, 152 insertions(+), 10 deletions(-) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts index 847983560434..e54b2e762bcc 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts @@ -2348,7 +2348,7 @@ describe('type check blocks', () => { `; const result = tcb(TEMPLATE); - expect(result).toContain('for (const _t1 of ((this).items)!) {'); + expect(result).toContain('for (const _t1 of (((this).items))!) {'); expect(result).toContain('"" + ((this).main(_t1))'); expect(result).toContain('"" + ((this).empty())'); }); @@ -2361,7 +2361,7 @@ describe('type check blocks', () => { `; const result = tcb(TEMPLATE); - expect(result).toContain('for (const _t1 of ((this).items)!) {'); + expect(result).toContain('for (const _t1 of (((this).items))!) {'); expect(result).toContain('var _t2 = null! as number;'); expect(result).toContain('var _t3 = null! as boolean;'); expect(result).toContain('var _t4 = null! as boolean;'); @@ -2379,7 +2379,7 @@ describe('type check blocks', () => { `; const result = tcb(TEMPLATE); - expect(result).toContain('for (const _t1 of ((this).items)!) {'); + expect(result).toContain('for (const _t1 of (((this).items))!) {'); expect(result).toContain('var _t2 = null! as number;'); expect(result).toContain('var _t3 = null! as boolean;'); expect(result).toContain('var _t4 = null! as boolean;'); @@ -2395,7 +2395,7 @@ describe('type check blocks', () => { `; const result = tcb(TEMPLATE); - expect(result).toContain('for (const _t1 of ((this).items)!) {'); + expect(result).toContain('for (const _t1 of (((this).items))!) {'); expect(result).toContain('var _t2 = null! as number;'); expect(result).toContain('var _t3 = null! as number;'); expect(result).toContain('"" + (_t2) + (_t3)'); @@ -2413,15 +2413,15 @@ describe('type check blocks', () => { `; const result = tcb(TEMPLATE); - expect(result).toContain('for (const _t1 of ((this).items)!) { var _t2 = null! as number;'); + expect(result).toContain('for (const _t1 of (((this).items))!) { var _t2 = null! as number;'); expect(result).toContain('"" + (_t1) + (_t2)'); - expect(result).toContain('for (const _t3 of ((_t1).items)!) { var _t4 = null! as number;'); + expect(result).toContain('for (const _t3 of (((_t1).items))!) { var _t4 = null! as number;'); expect(result).toContain('"" + (_t1) + ((_t2)) + (_t3) + (_t4)'); }); it('should generate the tracking expression of a for loop', () => { const result = tcb(`@for (item of items; track trackingFn($index, item, prop)) {}`); - expect(result).toContain('for (const _t1 of ((this).items)!) { var _t2 = null! as number;'); + expect(result).toContain('for (const _t1 of (((this).items))!) { var _t2 = null! as number;'); expect(result).toContain('(this).trackingFn(_t2, _t1, ((this).prop));'); }); @@ -2435,10 +2435,23 @@ describe('type check blocks', () => { `; const result = tcb(TEMPLATE, undefined, {checkControlFlowBodies: false}); - expect(result).toContain('for (const _t1 of ((this).items)!) {'); + expect(result).toContain('for (const _t1 of (((this).items))!) {'); expect(result).not.toContain('.main'); expect(result).not.toContain('.empty'); }); + + it('should wrap compound expressions in parentheses before appending non-null assertion', () => { + const TEMPLATE = ` + @for (item of items && items.slice(0, 10); track item) { + {{item}} + } + `; + + const result = tcb(TEMPLATE); + expect(result).toContain( + 'for (const _t1 of ((((this).items)) && ((((this).items)).slice(0, 10)))!) {', + ); + }); }); describe('let declarations', () => { diff --git a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts index f693bb3d853e..850013a575c4 100644 --- a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts +++ b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts @@ -7120,6 +7120,134 @@ suppress ]); }); + it('should report diagnostics within sub-expressions of compound @for loop expressions', () => { + env.write( + 'test.ts', + ` + import {Component} from '@angular/core'; + + @Component({ + template: \` + @for (item of items && does_not_exist; track item) { + {{item}} + } + \`, + }) + export class Main { + items = [1, 2, 3]; + } + `, + ); + + const diags = env.driveDiagnostics(); + expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([ + "Property 'does_not_exist' does not exist on type 'Main'.", + ]); + }); + + it('should report diagnostics on invalid arguments in compound @for loop expressions', () => { + env.write( + 'test.ts', + ` + import {Component} from '@angular/core'; + + @Component({ + template: \` + @for (item of items && items.slice('not_a_number'); track item) { + {{item}} + } + \`, + }) + export class Main { + items = [1, 2, 3]; + } + `, + ); + + const diags = env.driveDiagnostics(); + expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([ + "Argument of type 'string' is not assignable to parameter of type 'number'.", + ]); + }); + + it('should report diagnostics on ternary expressions in @for loop expressions', () => { + env.write( + 'test.ts', + ` + import {Component} from '@angular/core'; + + @Component({ + template: \` + @for (item of condition ? not_found : items; track item) { + {{item}} + } + \`, + }) + export class Main { + condition = true; + items = [1, 2, 3]; + } + `, + ); + + const diags = env.driveDiagnostics(); + expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([ + "Property 'not_found' does not exist on type 'Main'.", + ]); + }); + + it('should report diagnostics on nested property reads in @for loop expressions', () => { + env.write( + 'test.ts', + ` + import {Component} from '@angular/core'; + + @Component({ + template: \` + @for (item of nested.does_not_exist; track item) { + {{item}} + } + \`, + }) + export class Main { + nested = {a: 1}; + } + `, + ); + + const diags = env.driveDiagnostics(); + expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([ + "Property 'does_not_exist' does not exist on type '{ a: number; }'.", + ]); + }); + + it('should report diagnostics when calling functions with invalid arguments in @for loop expressions', () => { + env.write( + 'test.ts', + ` + import {Component} from '@angular/core'; + + @Component({ + template: \` + @for (item of getItems('invalid'); track item) { + {{item}} + } + \`, + }) + export class Main { + getItems(count: number): string[] { + return []; + } + } + `, + ); + + const diags = env.driveDiagnostics(); + expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([ + "Argument of type 'string' is not assignable to parameter of type 'number'.", + ]); + }); + it('should check for loop variables with the same name as built-in globals', () => { // strictTemplates are necessary so the event listener is checked. env.tsconfig({strictTemplates: true}); diff --git a/packages/compiler/src/typecheck/ops/for_block.ts b/packages/compiler/src/typecheck/ops/for_block.ts index b5850f103c96..85af71caaca8 100644 --- a/packages/compiler/src/typecheck/ops/for_block.ts +++ b/packages/compiler/src/typecheck/ops/for_block.ts @@ -45,8 +45,9 @@ export class TcbForOfOp extends TcbOp { // It's common to have a for loop over a nullable value (e.g. produced by the `async` pipe). // Add a non-null expression to allow such values to be assigned. - const expression = new TcbExpr( - `${tcbExpression(this.block.expression, this.tcb, this.scope).print()}!`, + const expr = tcbExpression(this.block.expression, this.tcb, this.scope).wrapForTypeChecker(); + const expression = new TcbExpr(`${expr.print()}!`).addParseSpanInfo( + this.block.expression.sourceSpan, ); let statements: TcbExpr[]; From f9654aa29764edbcf08cccc79b36f275f0ce9b0d Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 6 Sep 2026 02:07:10 +0300 Subject: [PATCH 07/41] fix(docs-infra): restore the xlf regions on the i18n guides #65848 renamed `messages.fr.xlf.html` to `messages.fr.xlf` and, in the same lines, reverted `region=` back to `visibleRegion=`, undoing #65530 from two weeks earlier. `visibleRegion` is not read by the tokenizer, and `xlf` is not in `REGION_MATCHERS`, so both halves of the snippet handling broke at once. Since then https://angular.dev/guide/i18n/translation-files has shown the same 78 line file ten times where the prose describes single `` elements, and https://angular.dev/guide/i18n/manage-marked-text three times, each carrying the `#docregion` scaffolding into the rendered code. Mapping `xlf` to the html matcher also cleans up https://angular.dev/guide/i18n/example, which renders the whole file on purpose but leaked 27 marker lines into it. `docs-code.spec.mts` already loads this fixture but only asserted the block existed, so it stayed green throughout. It now also asserts no marker survives. (cherry picked from commit 61b353ebeeed9f199e2fe27c62258795113dcc00) --- .../marked/test/docs-code/docs-code.spec.mts | 1 + .../pipeline/shared/regions/region-parser.mts | 1 + .../shared/regions/remove-eslint-comments.mts | 1 + .../content/guide/i18n/manage-marked-text.md | 6 +++--- .../content/guide/i18n/translation-files.md | 20 +++++++++---------- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/adev/shared-docs/pipeline/shared/marked/test/docs-code/docs-code.spec.mts b/adev/shared-docs/pipeline/shared/marked/test/docs-code/docs-code.spec.mts index 270647d52583..33022e377b9f 100644 --- a/adev/shared-docs/pipeline/shared/marked/test/docs-code/docs-code.spec.mts +++ b/adev/shared-docs/pipeline/shared/marked/test/docs-code/docs-code.spec.mts @@ -46,6 +46,7 @@ describe('markdown to html', () => { it('should load header and html code', () => { const codeBlock = markdownDocument.querySelectorAll('code')[3]; expect(codeBlock).toBeTruthy(); + expect(codeBlock?.textContent).not.toContain('docregion'); }); it('should not link property names in object literals', () => { diff --git a/adev/shared-docs/pipeline/shared/regions/region-parser.mts b/adev/shared-docs/pipeline/shared/regions/region-parser.mts index 4047c86f7d0e..bb0b025bebe3 100644 --- a/adev/shared-docs/pipeline/shared/regions/region-parser.mts +++ b/adev/shared-docs/pipeline/shared/regions/region-parser.mts @@ -27,6 +27,7 @@ const REGION_MATCHERS = { es6: inlineC, html: html, svg: html, + xlf: html, css: blockC, conf: inlineHash, yaml: inlineHash, diff --git a/adev/shared-docs/pipeline/shared/regions/remove-eslint-comments.mts b/adev/shared-docs/pipeline/shared/regions/remove-eslint-comments.mts index 701a48713111..e22c4a9a0c2b 100644 --- a/adev/shared-docs/pipeline/shared/regions/remove-eslint-comments.mts +++ b/adev/shared-docs/pipeline/shared/regions/remove-eslint-comments.mts @@ -13,6 +13,7 @@ export type FileType = | 'es6' | 'html' | 'svg' + | 'xlf' | 'css' | 'conf' | 'yaml' diff --git a/adev/src/content/guide/i18n/manage-marked-text.md b/adev/src/content/guide/i18n/manage-marked-text.md index e2de6098c0f6..453f583a331a 100644 --- a/adev/src/content/guide/i18n/manage-marked-text.md +++ b/adev/src/content/guide/i18n/manage-marked-text.md @@ -9,7 +9,7 @@ As described in [How meanings control text extraction and merges][GuideI18nCommo The following example displays translation units with unique IDs. - + When you change the translatable text, the extractor generates a new ID for that translation unit. In most cases, changes in the source text also require a change to the translation. @@ -34,7 +34,7 @@ variableText1 = $localize`:@@introductionHeader:Hello i18n!`; When you specify a custom ID, the extractor generates a translation unit with the custom ID. - + If you change the text, the extractor does not change the ID. As a result, you don't have to take the extra step to update the translation. @@ -75,7 +75,7 @@ For example, in the following code snippet the same `myId` custom ID is defined The following displays the translation in French. - + Both elements now use the same translation \(`Bonjour`\), because both were defined with the same custom ID. diff --git a/adev/src/content/guide/i18n/translation-files.md b/adev/src/content/guide/i18n/translation-files.md index e684539b0851..d082942d778d 100644 --- a/adev/src/content/guide/i18n/translation-files.md +++ b/adev/src/content/guide/i18n/translation-files.md @@ -132,20 +132,20 @@ The following actions describe the translation process for French. 1. Open `messages.fr.xlf` and find the first `` element. This is a _translation unit_, also known as a _text node_, that represents the translation of the `

` greeting tag that was previously marked with the `i18n` attribute. - + The `id="introductionHeader"` is a [custom ID][GuideI18nOptionalManageMarkedText], but without the `@@` prefix required in the source HTML. 1. Duplicate the `... ` element in the text node, rename it to `target`, and then replace the content with the French text. - + In a more complex translation, the information and context in the [description and meaning elements][GuideI18nCommonPrepareAddHelpfulDescriptionsAndMeanings] help you choose the right words for translation. 1. Translate the other text nodes. The following example displays the way to translate. - + IMPORTANT: Don't change the IDs for translation units. Each `id` attribute is generated by Angular and depends on the content of the component text and the assigned meaning. @@ -169,7 +169,7 @@ To translate a `plural`, translate the ICU format match values. The following example displays the way to translate. - + ## Translate alternate expressions @@ -184,18 +184,18 @@ The following example displays a `select` ICU expression in the component templa In this example, Angular extracts the expression into two translation units. The first contains the text outside of the `select` clause, and uses a placeholder for `select` \(``\): - + IMPORTANT: When you translate the text, move the placeholder if necessary, but don't remove it. If you remove the placeholder, the ICU expression is removed from your translated application. The following example displays the second translation unit that contains the `select` clause. - + The following example displays both translation units after translation is complete. - + ## Translate nested expressions @@ -206,15 +206,15 @@ Angular extracts the expression into two translation units. The following example displays the first translation unit that contains the text outside of the nested expression. - + The following example displays the second translation unit that contains the complete nested expression. - + The following example displays both translation units after translating. - + ## What's next From 4d6d886ff6bf3c6de9858d4eb3ba2a6b8bb73f6f Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 6 Sep 2026 02:07:14 +0300 Subject: [PATCH 08/41] fix(docs-infra): escape the code example header `buildHeaderElement` interpolated the header into a string that is then parsed as HTML, so markup in a header became an element instead of text. The ten captions on https://angular.dev/guide/i18n/translation-files read `messages.fr.xlf ()`, having turned `()` into an empty element. These are the only two headers in the guides containing markup. (cherry picked from commit 907346941602605b547d24178c4e1695afe7d34f) --- .../shared/marked/extensions/docs-code/format/index.mts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/format/index.mts b/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/format/index.mts index 88f3fbaed4e2..c107addc0039 100644 --- a/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/format/index.mts +++ b/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/format/index.mts @@ -96,6 +96,11 @@ export function processForApiLinks(fragment: Element, apiEntries: ApiEntries): v }); } +/** Escapes text that is interpolated into an HTML string. */ +function escapeHtml(text: string): string { + return text.replace(/&/g, '&').replace(//g, '>'); +} + /** Build the header element if a header is provided in the token. */ function buildHeaderElement(token: CodeToken) { let header = ''; @@ -104,7 +109,7 @@ function buildHeaderElement(token: CodeToken) { } if (token.header) { - header += `

${token.header}

`; + header += `

${escapeHtml(token.header)}

`; } if (!header) return ''; From a205de99bae1a3536005069fca326693c7bc3f6f Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Thu, 10 Sep 2026 13:51:21 -0500 Subject: [PATCH 09/41] test(router): remove redundant change detection configuration OnPush is now the default change detection strategy, so the explicit test configuration is no longer needed. (cherry picked from commit a958d7fe30b5038aa4442f031e5c3fdfb9f0a8be) --- packages/router/test/integration/integration.spec.ts | 1 - packages/router/test/regression_integration.spec.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/router/test/integration/integration.spec.ts b/packages/router/test/integration/integration.spec.ts index 749ef0e77c99..503ea0bfd97f 100644 --- a/packages/router/test/integration/integration.spec.ts +++ b/packages/router/test/integration/integration.spec.ts @@ -123,7 +123,6 @@ for (const browserAPI of ['navigation', 'history'] as const) { @Component({ selector: 'root-cmp', template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, }) class OnPushOutlet {} diff --git a/packages/router/test/regression_integration.spec.ts b/packages/router/test/regression_integration.spec.ts index fdec5145f4b8..76a4367725f3 100644 --- a/packages/router/test/regression_integration.spec.ts +++ b/packages/router/test/regression_integration.spec.ts @@ -214,7 +214,6 @@ describe('Integration', () => { isActive: {{ rla.isActive }} `, - changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, }) class OnPushComponent {} From e0e1f5f952c0c8af5f3979a32fba706f760a9e6b Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Thu, 10 Sep 2026 13:51:29 -0500 Subject: [PATCH 10/41] docs(router): update scroll restoration example Uses modern dependency injection and signal-based change detection in the custom scroll restoration example. (cherry picked from commit 4380e683d80a86c7f40677046f991538e587cdd3) --- packages/router/src/router_config.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/router/src/router_config.ts b/packages/router/src/router_config.ts index a7744cca423e..4a0f34cb28de 100644 --- a/packages/router/src/router_config.ts +++ b/packages/router/src/router_config.ts @@ -169,20 +169,20 @@ export interface InMemoryScrollingOptions { * in the following example. * * ```ts - * class AppComponent { - * movieData: any; + * class App { + * movieData = signal(null); + * private router = inject(Router); + * private viewportScroller = inject(ViewportScroller); + * private changeDetectorRef = inject(ChangeDetectorRef); * - * constructor(private router: Router, private viewportScroller: ViewportScroller, - * changeDetectorRef: ChangeDetectorRef) { - * router.events.pipe(filter((event: Event): event is Scroll => event instanceof Scroll) + * constructor() { + * this.router.events.pipe(filter((event: Event): event is Scroll => event instanceof Scroll) * ).subscribe(e => { * fetch('http://example.com/movies.json').then(response => { - * this.movieData = response.json(); - * // update the template with the data before restoring scroll - * changeDetectorRef.detectChanges(); + * this.movieData.set(response.json()); * * if (e.position) { - * viewportScroller.scrollToPosition(e.position); + * this.viewportScroller.scrollToPosition(e.position); * } * }); * }); From 0e641241fb47bf51867e078d71211478594191fd Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Thu, 10 Sep 2026 13:51:36 -0500 Subject: [PATCH 11/41] test(core): remove redundant change detection configuration OnPush is now the default change detection strategy, so the explicit test and example configuration is no longer needed. (cherry picked from commit 9e5ae4b710a4973f4bffd7ac15226d12469553c1) --- .../core/test/linker/view_injector_integration_spec.ts | 2 -- .../examples/core/ts/change_detect/change-detection.ts | 10 +--------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/core/test/linker/view_injector_integration_spec.ts b/packages/core/test/linker/view_injector_integration_spec.ts index 421ad54499cf..1ea726bb9ec8 100644 --- a/packages/core/test/linker/view_injector_integration_spec.ts +++ b/packages/core/test/linker/view_injector_integration_spec.ts @@ -9,7 +9,6 @@ import {expect} from '@angular/private/testing/matchers'; import { Attribute, - ChangeDetectionStrategy, ChangeDetectorRef, Component, createComponent as coreCreateComponent, @@ -248,7 +247,6 @@ class DirectiveNeedsChangeDetectorRef { @Component({ selector: '[componentNeedsChangeDetectorRef]', template: '{{counter}}', - changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, }) class PushComponentNeedsChangeDetectorRef { diff --git a/packages/examples/core/ts/change_detect/change-detection.ts b/packages/examples/core/ts/change_detect/change-detection.ts index 31c63cb142c7..1c0500f0a5ab 100644 --- a/packages/examples/core/ts/change_detect/change-detection.ts +++ b/packages/examples/core/ts/change_detect/change-detection.ts @@ -5,21 +5,13 @@ * 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 { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - effect, - input, - signal, -} from '@angular/core'; +import {ChangeDetectorRef, Component, effect, input, signal} from '@angular/core'; import {FormsModule} from '@angular/forms'; // #docregion mark-for-check @Component({ selector: 'app-root', template: `Number of ticks: {{ numberOfTicks }}`, - changeDetection: ChangeDetectionStrategy.OnPush, }) class AppComponent { numberOfTicks = 0; From 66de56beb96a93699045c655fe8ef98d98f212df Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Thu, 10 Sep 2026 01:34:36 +0200 Subject: [PATCH 12/41] refactor(compiler-cli): relax nullish coalescing non nullable diagnostics on indexed access When noUncheckedIndexedAccess is not enabled, indexed accesses do not include undefined in the type. This relaxes the check for nullish coalescing similarly to optional chaining. Fixes #70655 fixes #70655 (cherry picked from commit 9090a758be395df1ba414f3cc10b938105578f63) --- .../src/ngtsc/typecheck/extended/api/api.ts | 26 +++ .../nullish_coalescing_not_nullable/index.ts | 17 +- .../optional_chain_not_nullable/index.ts | 3 +- .../nullish_coalescing_not_nullable_spec.ts | 156 +++++++++++++++++- .../optional_chain_not_nullable_spec.ts | 30 ++++ 5 files changed, 224 insertions(+), 8 deletions(-) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/api/api.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/api/api.ts index 2a573abb20b5..c02c71a8e875 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/extended/api/api.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/api/api.ts @@ -13,6 +13,12 @@ import { ParseSourceSpan, TmplAstNode, TmplAstTemplate, + KeyedRead, + SafePropertyRead, + SafeKeyedRead, + SafeCall, + ParenthesizedExpression, + NonNullAssert, } from '@angular/compiler'; import ts from 'typescript'; @@ -161,3 +167,23 @@ class TemplateVisitor extends CombinedRecursiveAstVisito return this.diagnostics; } } + +/** + * Checks if the given AST node originates from a KeyedRead (indexed access) + * by unwrapping parentheses, non-null assertions, and traversing the receivers + * of safe navigation operations (?. property access, ?.[] keyed access, ?.() calls). + */ +export function isAccessFromUncheckedIndex(node: AST): boolean { + if (node instanceof KeyedRead) { + return true; + } else if ( + node instanceof SafePropertyRead || + node instanceof SafeKeyedRead || + node instanceof SafeCall + ) { + return isAccessFromUncheckedIndex(node.receiver); + } else if (node instanceof ParenthesizedExpression || node instanceof NonNullAssert) { + return isAccessFromUncheckedIndex(node.expression); + } + return false; +} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.ts index 65b7ee61f5cf..14a784e938fc 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {AST, Binary, TmplAstNode} from '@angular/compiler'; +import {AST, Binary, KeyedRead, TmplAstNode} from '@angular/compiler'; import ts from 'typescript'; import {NgCompilerOptions} from '../../../../core/api'; @@ -17,6 +17,7 @@ import { TemplateCheckWithVisitor, TemplateContext, formatExtendedError, + isAccessFromUncheckedIndex, } from '../../api'; /** @@ -28,6 +29,10 @@ import { class NullishCoalescingNotNullableCheck extends TemplateCheckWithVisitor { override code = ErrorCode.NULLISH_COALESCING_NOT_NULLABLE as const; + constructor(private readonly noUncheckedIndexedAccess: boolean) { + super(); + } + override visitNode( ctx: TemplateContext, component: ts.ClassDeclaration, @@ -35,6 +40,12 @@ class NullishCoalescingNotNullableCheck extends TemplateCheckWithVisitor[] { if (!(node instanceof Binary) || node.operation !== '??') return []; + // When `noUncheckedIndexedAccess` is disabled, an indexed access is not checked + // and may result in `undefined`. + if (!this.noUncheckedIndexedAccess && isAccessFromUncheckedIndex(node.left)) { + return []; + } + const symbolLeft = ctx.templateTypeChecker.getSymbolOfNode(node.left, component); if (symbolLeft === null || symbolLeft.kind !== SymbolKind.Expression) { return []; @@ -86,6 +97,8 @@ export const factory: TemplateCheckFactory< return null; } - return new NullishCoalescingNotNullableCheck(); + const noUncheckedIndexedAccess = !!options.noUncheckedIndexedAccess; + + return new NullishCoalescingNotNullableCheck(noUncheckedIndexedAccess); }, }; diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/optional_chain_not_nullable/index.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/optional_chain_not_nullable/index.ts index ecac332a8c82..8818600ae669 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/optional_chain_not_nullable/index.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/optional_chain_not_nullable/index.ts @@ -24,6 +24,7 @@ import { TemplateCheckWithVisitor, TemplateContext, formatExtendedError, + isAccessFromUncheckedIndex, } from '../../api'; /** @@ -54,7 +55,7 @@ class OptionalChainNotNullableCheck extends TemplateCheckWithVisitor { expect(diags.length).toBe(0); }); + it('should not produce nullish coalescing warning for an indexed access if noUncheckedIndexedAccess is false', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup( + [ + { + fileName, + templates: { + 'TestCmp': `{{ arr[0] ?? 'foo' }}`, + }, + source: ` + export class TestCmp { + arr: Array = []; + } + `, + }, + ], + {options: {noUncheckedIndexedAccess: false}}, + ); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const extendedTemplateChecker = new ExtendedTemplateCheckerImpl( + templateTypeChecker, + program.getTypeChecker(), + [nullishCoalescingNotNullableFactory], + {strictNullChecks: true} /* options */, + ); + const diags = extendedTemplateChecker.getDiagnosticsForComponent(component); + expect(diags.length).toBe(0); + }); + + it('should not produce nullish coalescing warning for an indexed access if noUncheckedIndexedAccess is true', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup( + [ + { + fileName, + templates: { + 'TestCmp': `{{ arr[0] ?? 'foo' }}`, + }, + source: ` + export class TestCmp { + arr: Array = []; + } + `, + }, + ], + {options: {noUncheckedIndexedAccess: true}}, + ); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const extendedTemplateChecker = new ExtendedTemplateCheckerImpl( + templateTypeChecker, + program.getTypeChecker(), + [nullishCoalescingNotNullableFactory], + {strictNullChecks: true} /* options */, + ); + const diags = extendedTemplateChecker.getDiagnosticsForComponent(component); + expect(diags.length).toBe(0); + }); + + it('should not produce nullish coalescing warning for a SafePropertyRead off an indexed access if noUncheckedIndexedAccess is false', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup( + [ + { + fileName, + templates: { + 'TestCmp': `{{ foos[0]?.name ?? 'foo' }}`, + }, + source: ` + export class TestCmp { + foos: Array<{name: string}> = []; + } + `, + }, + ], + {options: {noUncheckedIndexedAccess: false}}, + ); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const extendedTemplateChecker = new ExtendedTemplateCheckerImpl( + templateTypeChecker, + program.getTypeChecker(), + [nullishCoalescingNotNullableFactory], + {strictNullChecks: true} /* options */, + ); + const diags = extendedTemplateChecker.getDiagnosticsForComponent(component); + expect(diags.length).toBe(0); + }); + + it('should not produce nullish coalescing warning for a SafeKeyedRead if noUncheckedIndexedAccess is false', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup( + [ + { + fileName, + templates: { + 'TestCmp': `{{ foos?.[0] ?? 'foo' }}`, + }, + source: ` + export class TestCmp { + foos: Array | null = null; + } + `, + }, + ], + {options: {noUncheckedIndexedAccess: false}}, + ); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const extendedTemplateChecker = new ExtendedTemplateCheckerImpl( + templateTypeChecker, + program.getTypeChecker(), + [nullishCoalescingNotNullableFactory], + {strictNullChecks: true} /* options */, + ); + const diags = extendedTemplateChecker.getDiagnosticsForComponent(component); + expect(diags.length).toBe(0); + }); + + it('should not produce nullish coalescing warning for a parenthesized indexed access if noUncheckedIndexedAccess is false', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup( + [ + { + fileName, + templates: { + 'TestCmp': `{{ (foos[0]) ?? 'foo' }}`, + }, + source: ` + export class TestCmp { + foos: Array = []; + } + `, + }, + ], + {options: {noUncheckedIndexedAccess: false}}, + ); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const extendedTemplateChecker = new ExtendedTemplateCheckerImpl( + templateTypeChecker, + program.getTypeChecker(), + [nullishCoalescingNotNullableFactory], + {strictNullChecks: true} /* options */, + ); + const diags = extendedTemplateChecker.getDiagnosticsForComponent(component); + expect(diags.length).toBe(0); + }); it('warns for pipe arguments which are likely configured incorrectly (?? operates on "format" here)', () => { const fileName = absoluteFrom('/main.ts'); const {program, templateTypeChecker} = setup([ @@ -341,7 +490,7 @@ runInEachFileSystem(() => { expect(diags.length).toBe(0); }); - it('should produce nullish coalescing warning for a non-nullable ElementAccessExpression', () => { + it('should not produce nullish coalescing warning for a non-nullable ElementAccessExpression when noUncheckedIndexedAccess is false', () => { const fileName = absoluteFrom('/main.ts'); const {program, templateTypeChecker} = setup([ { @@ -362,10 +511,7 @@ runInEachFileSystem(() => { {strictNullChecks: true} /* options */, ); const diags = extendedTemplateChecker.getDiagnosticsForComponent(component); - expect(diags.length).toBe(1); - expect(diags[0].category).toBe(ts.DiagnosticCategory.Warning); - expect(diags[0].code).toBe(ngErrorCode(ErrorCode.NULLISH_COALESCING_NOT_NULLABLE)); - expect(getSourceCodeForDiagnostic(diags[0])).toBe(`myDict[key] ?? 'foo'`); + expect(diags.length).toBe(0); }); it('should respect configured diagnostic category', () => { diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/test/checks/optional_chain_not_nullable/optional_chain_not_nullable_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/test/checks/optional_chain_not_nullable/optional_chain_not_nullable_spec.ts index 83add04e8e1c..8764dac7b793 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/extended/test/checks/optional_chain_not_nullable/optional_chain_not_nullable_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/test/checks/optional_chain_not_nullable/optional_chain_not_nullable_spec.ts @@ -256,6 +256,36 @@ runInEachFileSystem(() => { expect(diags.length).toBe(0); }); + it('should not produce optional chain warning for a chained safe property read off an indexed access if noUncheckedIndexedAccess is false', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup( + [ + { + fileName, + templates: { + 'TestCmp': `{{ arr[0]?.bar?.length }}`, + }, + source: ` + export class TestCmp { + arr: Array<{ bar: string }> = []; + } + `, + }, + ], + {options: {noUncheckedIndexedAccess: false}}, + ); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const extendedTemplateChecker = new ExtendedTemplateCheckerImpl( + templateTypeChecker, + program.getTypeChecker(), + [optionalChainNotNullableFactory], + {strictNullChecks: true} /* options */, + ); + const diags = extendedTemplateChecker.getDiagnosticsForComponent(component); + expect(diags.length).toBe(0); + }); + it('should produce optional chain warning for an indexed access if noUncheckedIndexedAccess is true', () => { const fileName = absoluteFrom('/main.ts'); const {program, templateTypeChecker} = setup( From 14d6999cd773421ceafd1546f471ee4b28cad70f Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 9 Sep 2026 12:16:18 +0300 Subject: [PATCH 13/41] docs(forms): close the unterminated code fences in the compatForm docs Two of the three `compatForm` overloads open a fenced code block in their `@example` and never close it. The fence then runs to the end of the tag, so the API renderer emits a plain `
` block for those two instead of a
highlighted one.

The result is that on the compatForm API page the first overload's example is
syntax highlighted while the other two, which contain identical code, render as
flat unstyled text.

Rebuilding //adev/src/assets:content with and without this change alters 1 of
1565 pages. That page goes from 6 highlighted and 2 plain code blocks to 8
highlighted and none plain.

(cherry picked from commit b9fb45697173d0ce433337822ebeb3bf0087ec97)
---
 packages/forms/signals/compat/src/api/compat_form.ts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/packages/forms/signals/compat/src/api/compat_form.ts b/packages/forms/signals/compat/src/api/compat_form.ts
index e5d33a98f95e..7f658692c2ac 100644
--- a/packages/forms/signals/compat/src/api/compat_form.ts
+++ b/packages/forms/signals/compat/src/api/compat_form.ts
@@ -75,6 +75,7 @@ export function compatForm(model: WritableSignal): FieldTree(
  * });
  *
  * nameForm.last().value(); // lastName, not FormControl
+ * ```
  *
  * @param model A writable signal that contains the model data for the form. The resulting field
  * structure will match the shape of the model and any changes to the form data will be written to

From fd8412c364f5e5aee973dee963ac84c1b1640f6d Mon Sep 17 00:00:00 2001
From: Matthieu Riegler 
Date: Fri, 11 Sep 2026 01:08:58 +0200
Subject: [PATCH 14/41] test(core): fix view injector integration spec

Restore ChangeDetectionStrategy.OnPush that was removed in a previous commit, causing tests to fail due to ExpressionChangedAfterItHasBeenCheckedError.

(cherry picked from commit ae33a5f55ec1d31ea4e216b32cd1ddc535a3b331)
---
 packages/core/test/linker/view_injector_integration_spec.ts | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/packages/core/test/linker/view_injector_integration_spec.ts b/packages/core/test/linker/view_injector_integration_spec.ts
index 1ea726bb9ec8..3b4b3298957e 100644
--- a/packages/core/test/linker/view_injector_integration_spec.ts
+++ b/packages/core/test/linker/view_injector_integration_spec.ts
@@ -9,6 +9,7 @@
 import {expect} from '@angular/private/testing/matchers';
 import {
   Attribute,
+  ChangeDetectionStrategy,
   ChangeDetectorRef,
   Component,
   createComponent as coreCreateComponent,
@@ -247,6 +248,8 @@ class DirectiveNeedsChangeDetectorRef {
 @Component({
   selector: '[componentNeedsChangeDetectorRef]',
   template: '{{counter}}',
+  // Until #69898 lands we need to explicit OnPush
+  changeDetection: ChangeDetectionStrategy.OnPush,
   standalone: false,
 })
 class PushComponentNeedsChangeDetectorRef {

From 0194634a3a6c897575e13b917949ae277b5e9bf2 Mon Sep 17 00:00:00 2001
From: Angular Robot 
Date: Thu, 10 Sep 2026 06:49:59 +0000
Subject: [PATCH 15/41] build: update pnpm/action-setup action to v6.1.0

See associated pull request for more information.
---
 .github/workflows/benchmark-compare.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/benchmark-compare.yml b/.github/workflows/benchmark-compare.yml
index 8c17a17bfe38..fb7d398edf8c 100644
--- a/.github/workflows/benchmark-compare.yml
+++ b/.github/workflows/benchmark-compare.yml
@@ -45,7 +45,7 @@ jobs:
           node-version-file: '.nvmrc'
 
       - name: Install pnpm
-        uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
+        uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
 
       - run: pnpm install --frozen-lockfile
 

From 23e5d3090a6c006dc6d15116179c1da43e993c9a Mon Sep 17 00:00:00 2001
From: Angular Robot 
Date: Thu, 10 Sep 2026 06:49:28 +0000
Subject: [PATCH 16/41] build: update pnpm to v11.26.0

See associated pull request for more information.
---
 MODULE.bazel                                       | 4 ++--
 integration/animations/package.json                | 2 +-
 integration/cli-hello-world-ivy-i18n/package.json  | 2 +-
 integration/cli-hello-world-lazy/package.json      | 2 +-
 integration/cli-hello-world/package.json           | 2 +-
 integration/cli-signal-inputs/package.json         | 2 +-
 integration/defer/package.json                     | 2 +-
 integration/legacy-animations-async/package.json   | 2 +-
 integration/legacy-animations/package.json         | 2 +-
 integration/ng-add-localize/package.json           | 2 +-
 integration/ng_elements/package.json               | 2 +-
 integration/ng_update/package.json                 | 2 +-
 integration/no_ts_linker/package.json              | 2 +-
 integration/nodenext_resolution/package.json       | 2 +-
 integration/platform-server-hydration/package.json | 2 +-
 integration/platform-server-zoneless/package.json  | 2 +-
 integration/platform-server/package.json           | 2 +-
 integration/service-worker-schema/package.json     | 2 +-
 integration/standalone-bootstrap/package.json      | 2 +-
 integration/terser/package.json                    | 2 +-
 integration/trusted-types/package.json             | 2 +-
 integration/typings_test_rxjs7/package.json        | 2 +-
 integration/typings_test_ts60/package.json         | 2 +-
 package.json                                       | 4 ++--
 pnpm-lock.yaml                                     | 4 ++--
 25 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/MODULE.bazel b/MODULE.bazel
index 29f90e87bde3..127e98f0edbc 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -71,8 +71,8 @@ use_repo(node, "nodejs_windows_amd64")
 pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
 pnpm.pnpm(
     name = "pnpm",
-    pnpm_version = "11.25.0",
-    pnpm_version_integrity = "sha512-XN6SW08HX3Jetx+64YpC/+eEUkeJ8ZthxzHLhyHsKKruFg4BqNWvT+2ypCzb8wDv4j2zVrDUoXtNY+EfirfJVg==",
+    pnpm_version = "11.26.0",
+    pnpm_version_integrity = "sha512-/A4r+JC5+YNhHxq2jAY3vOkUOQZTaZ+DwaeLAF7SXyyB53kgyP2O7i7PC1iyjNywCoTZf2m898VrLzRHECOGZA==",
 )
 use_repo(pnpm, "pnpm")
 
diff --git a/integration/animations/package.json b/integration/animations/package.json
index 26b3fdc5fe99..ce27df51df48 100644
--- a/integration/animations/package.json
+++ b/integration/animations/package.json
@@ -38,5 +38,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/cli-hello-world-ivy-i18n/package.json b/integration/cli-hello-world-ivy-i18n/package.json
index f85d04a07181..f8e1908615e7 100644
--- a/integration/cli-hello-world-ivy-i18n/package.json
+++ b/integration/cli-hello-world-ivy-i18n/package.json
@@ -45,5 +45,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/cli-hello-world-lazy/package.json b/integration/cli-hello-world-lazy/package.json
index 37d8e480b3aa..28e22698b593 100644
--- a/integration/cli-hello-world-lazy/package.json
+++ b/integration/cli-hello-world-lazy/package.json
@@ -27,5 +27,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/cli-hello-world/package.json b/integration/cli-hello-world/package.json
index b9fca4c2504b..0dbc6d7e10a2 100644
--- a/integration/cli-hello-world/package.json
+++ b/integration/cli-hello-world/package.json
@@ -32,5 +32,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/cli-signal-inputs/package.json b/integration/cli-signal-inputs/package.json
index 5e993911576d..74b9fe8841cc 100644
--- a/integration/cli-signal-inputs/package.json
+++ b/integration/cli-signal-inputs/package.json
@@ -10,7 +10,7 @@
     "lint": "ng lint",
     "e2e": "ng build --configuration production && concurrently \"serve dist/browser -l 4210 --no-clipboard --single\" \"protractor e2e/protractor.conf.js --baseUrl=http://localhost:4210\" --kill-others --success first"
   },
-  "packageManager": "pnpm@11.25.0",
+  "packageManager": "pnpm@11.26.0",
   "private": true,
   "dependencies": {
     "@angular/animations": "link:./in-existing-linked-by-bazel",
diff --git a/integration/defer/package.json b/integration/defer/package.json
index bd562470e54f..9d88268ebbc0 100644
--- a/integration/defer/package.json
+++ b/integration/defer/package.json
@@ -29,5 +29,5 @@
     "ts-node": "10.9.2",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/legacy-animations-async/package.json b/integration/legacy-animations-async/package.json
index a180cfe11620..85cd406277f3 100644
--- a/integration/legacy-animations-async/package.json
+++ b/integration/legacy-animations-async/package.json
@@ -30,5 +30,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/legacy-animations/package.json b/integration/legacy-animations/package.json
index cb8e15c93b0f..15935a2b0d8b 100644
--- a/integration/legacy-animations/package.json
+++ b/integration/legacy-animations/package.json
@@ -39,5 +39,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/ng-add-localize/package.json b/integration/ng-add-localize/package.json
index cd1c4a0c97c4..97c0f06ee4b9 100644
--- a/integration/ng-add-localize/package.json
+++ b/integration/ng-add-localize/package.json
@@ -27,5 +27,5 @@
     "@types/node": "^20.14.8",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/ng_elements/package.json b/integration/ng_elements/package.json
index 63cf02425138..ff354d465109 100644
--- a/integration/ng_elements/package.json
+++ b/integration/ng_elements/package.json
@@ -33,5 +33,5 @@
     "protractor": "protractor e2e/protractor.config.js"
   },
   "private": true,
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/ng_update/package.json b/integration/ng_update/package.json
index 61c729d533d1..05e72997bf9b 100644
--- a/integration/ng_update/package.json
+++ b/integration/ng_update/package.json
@@ -21,5 +21,5 @@
     "typescript": "6.0.3",
     "zone.js": "0.16.2"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/no_ts_linker/package.json b/integration/no_ts_linker/package.json
index 751287f8dcad..86e51a622547 100644
--- a/integration/no_ts_linker/package.json
+++ b/integration/no_ts_linker/package.json
@@ -13,5 +13,5 @@
   "scripts": {
     "test": "node ./test.mjs"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/nodenext_resolution/package.json b/integration/nodenext_resolution/package.json
index 8667cd586e75..14e6927ad191 100644
--- a/integration/nodenext_resolution/package.json
+++ b/integration/nodenext_resolution/package.json
@@ -27,5 +27,5 @@
   "scripts": {
     "test": "tsc"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/platform-server-hydration/package.json b/integration/platform-server-hydration/package.json
index aebcef48c1b2..41f7524675a2 100644
--- a/integration/platform-server-hydration/package.json
+++ b/integration/platform-server-hydration/package.json
@@ -41,5 +41,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/platform-server-zoneless/package.json b/integration/platform-server-zoneless/package.json
index 41be9b3149c3..3d0dcc188930 100644
--- a/integration/platform-server-zoneless/package.json
+++ b/integration/platform-server-zoneless/package.json
@@ -43,5 +43,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/platform-server/package.json b/integration/platform-server/package.json
index da52e2d1335b..db944a27a0a8 100644
--- a/integration/platform-server/package.json
+++ b/integration/platform-server/package.json
@@ -47,5 +47,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/service-worker-schema/package.json b/integration/service-worker-schema/package.json
index b998a029996a..86c8e9888ab7 100644
--- a/integration/service-worker-schema/package.json
+++ b/integration/service-worker-schema/package.json
@@ -13,5 +13,5 @@
     "rxjs": "^7.0.0",
     "zone.js": "0.16.2"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/standalone-bootstrap/package.json b/integration/standalone-bootstrap/package.json
index 55f52b104480..87660225f7ed 100644
--- a/integration/standalone-bootstrap/package.json
+++ b/integration/standalone-bootstrap/package.json
@@ -31,5 +31,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/terser/package.json b/integration/terser/package.json
index 52c361d4ceb1..a44fe63055e6 100644
--- a/integration/terser/package.json
+++ b/integration/terser/package.json
@@ -14,5 +14,5 @@
     "typescript": "6.0.3",
     "zone.js": "0.16.2"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/trusted-types/package.json b/integration/trusted-types/package.json
index dd1559b4bc0c..4d1628f5ba4d 100644
--- a/integration/trusted-types/package.json
+++ b/integration/trusted-types/package.json
@@ -45,5 +45,5 @@
     "ts-node": "^10.9.1",
     "typescript": "6.0.3"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/typings_test_rxjs7/package.json b/integration/typings_test_rxjs7/package.json
index 1c42bfc89c9d..70819c2e4f64 100644
--- a/integration/typings_test_rxjs7/package.json
+++ b/integration/typings_test_rxjs7/package.json
@@ -26,5 +26,5 @@
   "scripts": {
     "test": "tsc"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/integration/typings_test_ts60/package.json b/integration/typings_test_ts60/package.json
index 7d937c551e67..c3b40c3b6aad 100644
--- a/integration/typings_test_ts60/package.json
+++ b/integration/typings_test_ts60/package.json
@@ -26,5 +26,5 @@
   "scripts": {
     "test": "tsc"
   },
-  "packageManager": "pnpm@11.25.0"
+  "packageManager": "pnpm@11.26.0"
 }
diff --git a/package.json b/package.json
index edc95079e725..4251d3ae5e16 100644
--- a/package.json
+++ b/package.json
@@ -6,11 +6,11 @@
   "homepage": "https://github.com/angular/angular",
   "bugs": "https://github.com/angular/angular/issues",
   "license": "MIT",
-  "packageManager": "pnpm@11.25.0",
+  "packageManager": "pnpm@11.26.0",
   "engines": {
     "npm": "Please use pnpm instead of NPM to install dependencies",
     "yarn": "Please use pnpm instead of Yarn to install dependencies",
-    "pnpm": "11.25.0"
+    "pnpm": "11.26.0"
   },
   "repository": {
     "type": "git",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2de62ca67de4..f4b08fde3ac1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1591,7 +1591,7 @@ packages:
         optional: true
 
   '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f':
-    resolution: {gitHosted: true, tarball: https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f}
+    resolution: {gitHosted: true, integrity: sha512-EkLiV6xLvnckAPAjZUsGJDJlR7R+qx6ZN5Z9soP46ps+KVNF/wJ9HloVC1VquHtuXUjf5n1lm6vu5pyTG4ES3w==, tarball: https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f}
     version: 2.1.6
 
   '@angular/material@22.1.6':
@@ -1605,7 +1605,7 @@ packages:
       rxjs: ^6.5.3 || ^7.4.0
 
   '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981':
-    resolution: {gitHosted: true, tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981}
+    resolution: {gitHosted: true, integrity: sha512-gvSQwKrcdUefjQGC9dzuaiNY3G61f0w8sGDrQSS6ju8FKITLMlWJREmD6DzYkTclDdzE0GwxbJmUYX7QbYYvaQ==, tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981}
     version: 0.0.0-183403ae13b785698eaf13c819dda55b9fed430b
     hasBin: true
 

From 8a837f6c3420e62158a916e0f5e832ed9125fa68 Mon Sep 17 00:00:00 2001
From: Andrew Scott 
Date: Fri, 11 Sep 2026 09:14:25 -0700
Subject: [PATCH 17/41] Revert "fix(compiler): wrap `@for` collection
 expression before appending non-null assertion"

This reverts commit ed8f16c078d83215cbdda2ca5017f70a291561b9.

This caused a breakage in TGP because the changes (correctly) produced new
diagnostics on ` @for (a of (x | async) || []; track a) {` x is `any`. This
results in ` | async` which produces `unknown | null` and then the `@if`
finally narrows this down to `{}` which isn't iteratable.

(cherry picked from commit 37ca679192e0a45cb7fa2e3f40ed68689298649e)
---
 .../typecheck/test/type_check_block_spec.ts   |  29 ++--
 .../test/ngtsc/template_typecheck_spec.ts     | 128 ------------------
 .../compiler/src/typecheck/ops/for_block.ts   |   5 +-
 3 files changed, 10 insertions(+), 152 deletions(-)

diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts
index e54b2e762bcc..847983560434 100644
--- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts
+++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts
@@ -2348,7 +2348,7 @@ describe('type check blocks', () => {
       `;
 
       const result = tcb(TEMPLATE);
-      expect(result).toContain('for (const _t1 of (((this).items))!) {');
+      expect(result).toContain('for (const _t1 of ((this).items)!) {');
       expect(result).toContain('"" + ((this).main(_t1))');
       expect(result).toContain('"" + ((this).empty())');
     });
@@ -2361,7 +2361,7 @@ describe('type check blocks', () => {
       `;
 
       const result = tcb(TEMPLATE);
-      expect(result).toContain('for (const _t1 of (((this).items))!) {');
+      expect(result).toContain('for (const _t1 of ((this).items)!) {');
       expect(result).toContain('var _t2 = null! as number;');
       expect(result).toContain('var _t3 = null! as boolean;');
       expect(result).toContain('var _t4 = null! as boolean;');
@@ -2379,7 +2379,7 @@ describe('type check blocks', () => {
       `;
 
       const result = tcb(TEMPLATE);
-      expect(result).toContain('for (const _t1 of (((this).items))!) {');
+      expect(result).toContain('for (const _t1 of ((this).items)!) {');
       expect(result).toContain('var _t2 = null! as number;');
       expect(result).toContain('var _t3 = null! as boolean;');
       expect(result).toContain('var _t4 = null! as boolean;');
@@ -2395,7 +2395,7 @@ describe('type check blocks', () => {
       `;
 
       const result = tcb(TEMPLATE);
-      expect(result).toContain('for (const _t1 of (((this).items))!) {');
+      expect(result).toContain('for (const _t1 of ((this).items)!) {');
       expect(result).toContain('var _t2 = null! as number;');
       expect(result).toContain('var _t3 = null! as number;');
       expect(result).toContain('"" + (_t2) + (_t3)');
@@ -2413,15 +2413,15 @@ describe('type check blocks', () => {
       `;
 
       const result = tcb(TEMPLATE);
-      expect(result).toContain('for (const _t1 of (((this).items))!) { var _t2 = null! as number;');
+      expect(result).toContain('for (const _t1 of ((this).items)!) { var _t2 = null! as number;');
       expect(result).toContain('"" + (_t1) + (_t2)');
-      expect(result).toContain('for (const _t3 of (((_t1).items))!) { var _t4 = null! as number;');
+      expect(result).toContain('for (const _t3 of ((_t1).items)!) { var _t4 = null! as number;');
       expect(result).toContain('"" + (_t1) + ((_t2)) + (_t3) + (_t4)');
     });
 
     it('should generate the tracking expression of a for loop', () => {
       const result = tcb(`@for (item of items; track trackingFn($index, item, prop)) {}`);
-      expect(result).toContain('for (const _t1 of (((this).items))!) { var _t2 = null! as number;');
+      expect(result).toContain('for (const _t1 of ((this).items)!) { var _t2 = null! as number;');
       expect(result).toContain('(this).trackingFn(_t2, _t1, ((this).prop));');
     });
 
@@ -2435,23 +2435,10 @@ describe('type check blocks', () => {
           `;
 
       const result = tcb(TEMPLATE, undefined, {checkControlFlowBodies: false});
-      expect(result).toContain('for (const _t1 of (((this).items))!) {');
+      expect(result).toContain('for (const _t1 of ((this).items)!) {');
       expect(result).not.toContain('.main');
       expect(result).not.toContain('.empty');
     });
-
-    it('should wrap compound expressions in parentheses before appending non-null assertion', () => {
-      const TEMPLATE = `
-        @for (item of items && items.slice(0, 10); track item) {
-          {{item}}
-        }
-      `;
-
-      const result = tcb(TEMPLATE);
-      expect(result).toContain(
-        'for (const _t1 of ((((this).items)) && ((((this).items)).slice(0, 10)))!) {',
-      );
-    });
   });
 
   describe('let declarations', () => {
diff --git a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts
index 850013a575c4..f693bb3d853e 100644
--- a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts
+++ b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts
@@ -7120,134 +7120,6 @@ suppress
         ]);
       });
 
-      it('should report diagnostics within sub-expressions of compound @for loop expressions', () => {
-        env.write(
-          'test.ts',
-          `
-          import {Component} from '@angular/core';
-
-          @Component({
-            template: \`
-              @for (item of items && does_not_exist; track item) {
-                {{item}}
-              }
-            \`,
-          })
-          export class Main {
-            items = [1, 2, 3];
-          }
-        `,
-        );
-
-        const diags = env.driveDiagnostics();
-        expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([
-          "Property 'does_not_exist' does not exist on type 'Main'.",
-        ]);
-      });
-
-      it('should report diagnostics on invalid arguments in compound @for loop expressions', () => {
-        env.write(
-          'test.ts',
-          `
-          import {Component} from '@angular/core';
-
-          @Component({
-            template: \`
-              @for (item of items && items.slice('not_a_number'); track item) {
-                {{item}}
-              }
-            \`,
-          })
-          export class Main {
-            items = [1, 2, 3];
-          }
-        `,
-        );
-
-        const diags = env.driveDiagnostics();
-        expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([
-          "Argument of type 'string' is not assignable to parameter of type 'number'.",
-        ]);
-      });
-
-      it('should report diagnostics on ternary expressions in @for loop expressions', () => {
-        env.write(
-          'test.ts',
-          `
-          import {Component} from '@angular/core';
-
-          @Component({
-            template: \`
-              @for (item of condition ? not_found : items; track item) {
-                {{item}}
-              }
-            \`,
-          })
-          export class Main {
-            condition = true;
-            items = [1, 2, 3];
-          }
-        `,
-        );
-
-        const diags = env.driveDiagnostics();
-        expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([
-          "Property 'not_found' does not exist on type 'Main'.",
-        ]);
-      });
-
-      it('should report diagnostics on nested property reads in @for loop expressions', () => {
-        env.write(
-          'test.ts',
-          `
-          import {Component} from '@angular/core';
-
-          @Component({
-            template: \`
-              @for (item of nested.does_not_exist; track item) {
-                {{item}}
-              }
-            \`,
-          })
-          export class Main {
-            nested = {a: 1};
-          }
-        `,
-        );
-
-        const diags = env.driveDiagnostics();
-        expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([
-          "Property 'does_not_exist' does not exist on type '{ a: number; }'.",
-        ]);
-      });
-
-      it('should report diagnostics when calling functions with invalid arguments in @for loop expressions', () => {
-        env.write(
-          'test.ts',
-          `
-          import {Component} from '@angular/core';
-
-          @Component({
-            template: \`
-              @for (item of getItems('invalid'); track item) {
-                {{item}}
-              }
-            \`,
-          })
-          export class Main {
-            getItems(count: number): string[] {
-              return [];
-            }
-          }
-        `,
-        );
-
-        const diags = env.driveDiagnostics();
-        expect(diags.map((d) => ts.flattenDiagnosticMessageText(d.messageText, ''))).toEqual([
-          "Argument of type 'string' is not assignable to parameter of type 'number'.",
-        ]);
-      });
-
       it('should check for loop variables with the same name as built-in globals', () => {
         // strictTemplates are necessary so the event listener is checked.
         env.tsconfig({strictTemplates: true});
diff --git a/packages/compiler/src/typecheck/ops/for_block.ts b/packages/compiler/src/typecheck/ops/for_block.ts
index 85af71caaca8..b5850f103c96 100644
--- a/packages/compiler/src/typecheck/ops/for_block.ts
+++ b/packages/compiler/src/typecheck/ops/for_block.ts
@@ -45,9 +45,8 @@ export class TcbForOfOp extends TcbOp {
 
     // It's common to have a for loop over a nullable value (e.g. produced by the `async` pipe).
     // Add a non-null expression to allow such values to be assigned.
-    const expr = tcbExpression(this.block.expression, this.tcb, this.scope).wrapForTypeChecker();
-    const expression = new TcbExpr(`${expr.print()}!`).addParseSpanInfo(
-      this.block.expression.sourceSpan,
+    const expression = new TcbExpr(
+      `${tcbExpression(this.block.expression, this.tcb, this.scope).print()}!`,
     );
 
     let statements: TcbExpr[];

From 8f6b040da21840fd83855e8200b0674554dc77fd Mon Sep 17 00:00:00 2001
From: Kam 
Date: Fri, 11 Sep 2026 17:00:17 +0300
Subject: [PATCH 18/41] fix(docs-infra): match card grid row gap to column gap

The `:not(.docs-card-container) .docs-card` selector was meant to give
standalone cards a vertical margin, but no element has the
docs-card-container class, so it matched every card. Cards in a grid
without a header picked up the 1rem margin on top of the 1.25rem grid
gap, leaving rows 52px apart while columns are 20px apart (for example on
/reference/migrations, /guide/i18n and /roadmap).

Apply the margin only to cards that are not direct children of a card
grid.

(cherry picked from commit b9cbc5fbbeb4af32490a3323d512c8d01cc175ad)
---
 adev/shared-docs/styles/docs/_card.scss | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/adev/shared-docs/styles/docs/_card.scss b/adev/shared-docs/styles/docs/_card.scss
index dedda443844c..7847c94838de 100644
--- a/adev/shared-docs/styles/docs/_card.scss
+++ b/adev/shared-docs/styles/docs/_card.scss
@@ -122,7 +122,7 @@
     }
   }
 
-  :not(.docs-card-container) .docs-card {
+  :not(.docs-card-grid) > .docs-card {
     margin: 1rem 0;
   }
 

From 17d6c1bf0ed2a93f2bcb9d271b4b6e7d536d4a71 Mon Sep 17 00:00:00 2001
From: Kam 
Date: Fri, 11 Sep 2026 14:59:46 +0300
Subject: [PATCH 19/41] fix(docs-infra): raise SSR fetch limit so the menubar
 guide prerenders

The aria menubar guide content is 2.9 MB, over the 2 MiB
maxResponseBodySize set in #69379. The fetch fails during prerender,
the navigation error handler redirects to /404, and the prerendered
page is saved as that redirect. Opening /guide/aria/menubar directly
or refreshing it lands on the 404 page.

Raise the limit to 4 MiB. The combobox guide was also within 27 KB of
the old limit.

(cherry picked from commit 01d091bf9ca6c3e17f088610b1c95be293618dfd)
---
 adev/src/app/app.config.server.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/adev/src/app/app.config.server.ts b/adev/src/app/app.config.server.ts
index 9d4b6056f531..b71d9da68e5e 100644
--- a/adev/src/app/app.config.server.ts
+++ b/adev/src/app/app.config.server.ts
@@ -13,7 +13,7 @@ import {appConfig} from './app.config';
 const serverConfig: ApplicationConfig = {
   providers: [
     provideServerRendering(
-      {maxResponseBodySize: 2 * 1024 * 1024},
+      {maxResponseBodySize: 4 * 1024 * 1024},
       withRoutes([{path: '**', renderMode: RenderMode.Prerender}]),
     ),
   ],

From c4bd3e2c30a5ff3baab009513676848b01cb5fe3 Mon Sep 17 00:00:00 2001
From: Kam 
Date: Fri, 11 Sep 2026 13:31:25 +0300
Subject: [PATCH 20/41] docs: fix the broken housing location template in the
 first-app tutorial

Step 11 of the first-app tutorial ships a `housing-location.ts` whose heading
reads `{{ housingLocatio()).name }}`, a misspelled property followed by an
extra parenthesis, so the step's source fails to compile with a template
parser error. Step 10 reuses this directory as its answer.

It came in with #61686, which migrated the tutorial to signal inputs. Use
`housingLocation().name`, matching the rest of the template and every other
step.

(cherry picked from commit d0ed76c1d6b13d6779e28bb0e80aea35e44cd793)
---
 .../src/app/housing-location/housing-location.ts                | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/adev/src/content/tutorials/first-app/steps/11-details-page/src/app/housing-location/housing-location.ts b/adev/src/content/tutorials/first-app/steps/11-details-page/src/app/housing-location/housing-location.ts
index 84de14b417f7..5faee8bcc362 100644
--- a/adev/src/content/tutorials/first-app/steps/11-details-page/src/app/housing-location/housing-location.ts
+++ b/adev/src/content/tutorials/first-app/steps/11-details-page/src/app/housing-location/housing-location.ts
@@ -13,7 +13,7 @@ import {RouterLink} from '@angular/router';
         alt="Exterior photo of {{ housingLocation().name }}"
         crossorigin
       />
-      

{{ housingLocatio()).name }}

+

{{ housingLocation().name }}

{{ housingLocation().city }}, {{ housingLocation().state }}

`, From 66d6e81db2ad42a3afcf030af28bae18a7b682bd Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 11 Sep 2026 19:28:48 +0000 Subject: [PATCH 21/41] ci: stop passing preview gating inputs to adev preview build The Googler check moved out of `pack-and-upload-artifact` and into the pull request labeling action, which runs in a privileged `pull_request_target` context where secrets are available. The build job runs on `pull_request` and never receives secrets, so it no longer needs `angular-robot-key` or `triggering-label`, and the `bypassed_for_forks` placeholder can go away. Bumps the dev-infra pins to pick up that change. (cherry picked from commit 1b7dcc854a26e3f35981a076ef5e50431ce09b67) --- .github/workflows/adev-preview-build.yml | 10 ++-- .github/workflows/adev-preview-deploy.yml | 2 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/benchmark-compare.yml | 4 +- .github/workflows/ci.yml | 50 +++++++++---------- .github/workflows/dev-infra.yml | 6 +-- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/merge-ready-status.yml | 2 +- .github/workflows/perf.yml | 6 +-- .github/workflows/pr.yml | 40 +++++++-------- .github/workflows/release.yml | 2 +- MODULE.bazel | 2 +- 12 files changed, 63 insertions(+), 65 deletions(-) diff --git a/.github/workflows/adev-preview-build.yml b/.github/workflows/adev-preview-build.yml index 6b02c8120d28..da1bef0cc970 100644 --- a/.github/workflows/adev-preview-build.yml +++ b/.github/workflows/adev-preview-build.yml @@ -21,21 +21,19 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'adev: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev # `snapshot-build` config is used to stamp the exact version with sha in the footer. run: pnpm bazel build //adev:build.production --config=snapshot-build - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: workflow-artifact-name: 'adev-preview' - angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY || 'bypassed_for_forks' }} - triggering-label: 'adev: preview' pull-number: '${{github.event.pull_request.number}}' artifact-build-revision: '${{github.event.pull_request.head.sha}}' deploy-directory: './dist/bin/adev/dist/browser' diff --git a/.github/workflows/adev-preview-deploy.yml b/.github/workflows/adev-preview-deploy.yml index 8f556c639d23..3b7aa3635b2b 100644 --- a/.github/workflows/adev-preview-deploy.yml +++ b/.github/workflows/adev-preview-deploy.yml @@ -46,7 +46,7 @@ jobs: npx -y firebase-tools@15.15.0 target:clear --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs npx -y firebase-tools@15.15.0 target:apply --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'adev-preview' diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 30585fa707fd..9a635ff6fde3 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -18,6 +18,6 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/branch-manager@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/benchmark-compare.yml b/.github/workflows/benchmark-compare.yml index fb7d398edf8c..1d024b1768ea 100644 --- a/.github/workflows/benchmark-compare.yml +++ b/.github/workflows/benchmark-compare.yml @@ -50,9 +50,9 @@ jobs: - run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: bazelrc: ./.bazelrc.user diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5892c04fba34..0ff44233692f 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@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -41,13 +41,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -69,11 +69,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,11 +85,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -102,11 +102,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -121,11 +121,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -138,11 +138,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - run: echo "https://${{secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN}}:@github.com" > ${HOME}/.git_credentials @@ -154,11 +154,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -198,11 +198,11 @@ jobs: runs-on: ubuntu-latest-8core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index e4e41f8e1688..0258c036e878 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -16,7 +16,7 @@ jobs: if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/labeling/pull-request@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/labeling/pull-request@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} labels: '{"requires: TGP": ["packages/core/primitives/**/{*,.*}"]}' @@ -24,14 +24,14 @@ jobs: if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/post-approval-changes@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/post-approval-changes@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} issue_labels: if: github.event_name == 'issues' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/labeling/issue@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/labeling/issue@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} google-generative-ai-key: ${{ secrets.GOOGLE_GENERATIVE_AI_KEY }} diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index 9934a5dc5bd2..7e43461b5ffd 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: angular/dev-infra/github-actions/google-internal-tests@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/google-internal-tests@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: run-tests-guide-url: http://go/angular-g3sync-start github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/merge-ready-status.yml b/.github/workflows/merge-ready-status.yml index bc573a1d9377..0e9e23f0afd3 100644 --- a/.github/workflows/merge-ready-status.yml +++ b/.github/workflows/merge-ready-status.yml @@ -11,6 +11,6 @@ jobs: status: runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/unified-status-check@183403ae13b785698eaf13c819dda55b9fed430b # main + - uses: angular/dev-infra/github-actions/unified-status-check@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 9d00ed03347e..1fb17bec45a0 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -20,7 +20,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - 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@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - 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 26572e7aed16..eccec79cfd23 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -39,7 +39,7 @@ jobs: - name: Check code format 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@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/linting/licenses@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: allow-dependencies-licenses: 'pkg:npm/google-protobuf@' @@ -47,13 +47,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run unit tests @@ -73,11 +73,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run CI tests for framework @@ -97,11 +97,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration CI tests for framework @@ -112,11 +112,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -129,11 +129,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -144,11 +144,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main - name: Install node modules run: pnpm install --frozen-lockfile - run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4b0220bab5b0..b37a636500b6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ permissions: jobs: release: - uses: angular/dev-infra/.github/workflows/reusable-release.yml@183403ae13b785698eaf13c819dda55b9fed430b # main + uses: angular/dev-infra/.github/workflows/reusable-release.yml@4a09f9588769980eacb41fcc76e2c76d048eac42 # main secrets: wombot-token: ${{ secrets.WOMBOT_TOKEN }} angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/MODULE.bazel b/MODULE.bazel index 127e98f0edbc..03e3f67a1349 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "183403ae13b785698eaf13c819dda55b9fed430b", + commit = "4a09f9588769980eacb41fcc76e2c76d048eac42", remote = "https://github.com/angular/dev-infra.git", ) From 4b5571c324f58a919e1f7e69714aa72a6a7cf62e Mon Sep 17 00:00:00 2001 From: Kam Date: Fri, 11 Sep 2026 13:13:44 +0300 Subject: [PATCH 22/41] docs: import bootstrapApplication from platform-browser in the CSP example The `CSP_NONCE` example in the security guide imports `bootstrapApplication` from `@angular/core`, which does not export it, so copying the snippet fails with "has no exported member named 'bootstrapApplication'". It is exported from `@angular/platform-browser`, which is where every other example in the docs imports it from. Keep `CSP_NONCE` on `@angular/core` and import `bootstrapApplication` from `@angular/platform-browser`. (cherry picked from commit c097c0144c58cac685cf7297b199ad35c0b7cfa3) --- adev/src/content/guide/security.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/adev/src/content/guide/security.md b/adev/src/content/guide/security.md index 1a21c9c05f78..e0893ee70c64 100644 --- a/adev/src/content/guide/security.md +++ b/adev/src/content/guide/security.md @@ -155,7 +155,8 @@ You can set the nonce for Angular in one of the following ways: 1. Provide the nonce using the `CSP_NONCE` injection token. Use this approach if you have access to the nonce at runtime and you want to be able to cache the `index.html`. ```ts -import {bootstrapApplication, CSP_NONCE} from '@angular/core'; +import {CSP_NONCE} from '@angular/core'; +import {bootstrapApplication} from '@angular/platform-browser'; import {AppComponent} from './app/app.component'; bootstrapApplication(AppComponent, { From 376b71ea1c33522d99a91bd6f8a6779e0ca752e0 Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib <48770016+MeAkib@users.noreply.github.com> Date: Sat, 12 Sep 2026 04:16:17 +0600 Subject: [PATCH 23/41] docs(forms): document what required() considers empty The `required()` validator treats `null`, `undefined`, `''`, `false` and `NaN` as empty, but the API docs never defined "empty" at all and the validation guide listed only `null` and `''`. (cherry picked from commit 467b37b4b42490cee5890d6d04db172e57b335c4) --- .../content/guide/forms/signals/validation.md | 30 ++++++----- .../src/api/rules/validation/required.ts | 8 +++ .../test/node/api/validators/required.spec.ts | 52 +++++++++++++++++++ 3 files changed, 78 insertions(+), 12 deletions(-) diff --git a/adev/src/content/guide/forms/signals/validation.md b/adev/src/content/guide/forms/signals/validation.md index 5f3b293eb812..522bd0b746da 100644 --- a/adev/src/content/guide/forms/signals/validation.md +++ b/adev/src/content/guide/forms/signals/validation.md @@ -110,12 +110,22 @@ export class RegistrationComponent { } ``` -A field is considered "empty" when: +A field is considered "empty" when its value is one of the following, and non-empty for every other +value — including `0` and the empty array `[]`: -| Condition | Example | -| ------------------------ | ------- | -| Value is `null` | `null`, | -| Value is an empty string | `''` | +| Condition | Example | +| ------------------------ | ----------- | +| Value is `null` | `null` | +| Value is `undefined` | `undefined` | +| Value is an empty string | `''` | +| Value is `false` | `false` | +| Value is `NaN` | `NaN` | + +The last two are worth calling out: + +- `false` is empty to follow the native semantics of `required` on ``, where + an unchecked box fails validation. +- `NaN` is empty because it is usually the result of a parsing error, and is not a valid number. For conditional requirements, use the `when` option: @@ -130,7 +140,7 @@ registrationForm = form(this.registrationModel, (schemaPath) => { The validation rule only runs when the `when` function returns `true`. -Note: `required` treats an empty array as present (valid), so use [`minLength()`](#minlength-and-maxlength) to enforce a minimum number of array items; it treats `false` as missing (invalid), matching ``. +Note: `required` treats an empty array as present (valid), so use [`minLength()`](#minlength-and-maxlength) to enforce a minimum number of array items. ### email() @@ -505,9 +515,7 @@ interface User { lastName: string; } -@Component({ - /* ... */ -}) +@Component({/* ... */}) export class UserFormComponent { readonly userModel = model({ firstName: '', @@ -750,9 +758,7 @@ import {Component, computed, signal} from '@angular/core'; import {form, FormField, validateStandardSchema} from '@angular/forms/signals'; import z from 'zod'; -@Component({ - /* ... */ -}) +@Component({/* ... */}) export class DynamicSchema { model = signal({document: '', type: 'dni'}); diff --git a/packages/forms/signals/src/api/rules/validation/required.ts b/packages/forms/signals/src/api/rules/validation/required.ts index 69132d5fa398..9478fb863208 100644 --- a/packages/forms/signals/src/api/rules/validation/required.ts +++ b/packages/forms/signals/src/api/rules/validation/required.ts @@ -17,6 +17,14 @@ import {requiredError} from './validation_errors'; * This function can only be called on any type of path. * In addition to binding a validator, this function adds `REQUIRED` property to the field. * + * A value is considered empty when it is `null`, `undefined`, the empty string `''`, `false`, or + * `NaN`. Every other value is considered non-empty, including `0` and the empty array `[]` — use + * [`minLength()`](api/forms/signals/minLength) to require a minimum number of items in an array. + * + * `false` is empty to follow the native semantics of `required` on ``, where + * an unchecked box fails validation. `NaN` is empty because it is usually the result of a parsing + * error, and is not a valid number. + * * @param path Path of the field to validate * @param config Optional, allows providing any of the following options: * - `message`: A user-facing message for the error. diff --git a/packages/forms/signals/test/node/api/validators/required.spec.ts b/packages/forms/signals/test/node/api/validators/required.spec.ts index fe7b5f2b6f05..587782c99c41 100644 --- a/packages/forms/signals/test/node/api/validators/required.spec.ts +++ b/packages/forms/signals/test/node/api/validators/required.spec.ts @@ -12,6 +12,58 @@ import {form, required} from '../../../../public_api'; import {requiredError} from '../../../../src/api/rules/validation/validation_errors'; describe('required validator', () => { + // Documented on `required()` and in guide/forms/signals/validation#required. `false` follows the + // native semantics of `required` on ``; `NaN` is not a valid number. + describe('emptiness', () => { + it('treats null, empty string, false and NaN as empty', () => { + const model = signal<{ + nullable: string | null; + text: string; + checkbox: boolean; + num: number; + }>({nullable: null, text: '', checkbox: false, num: Number.NaN}); + const f = form( + model, + (p) => { + required(p.nullable); + required(p.text); + required(p.checkbox); + required(p.num); + }, + {injector: TestBed.inject(Injector)}, + ); + + expect(f.nullable().errors()).toEqual([requiredError({fieldTree: f.nullable})]); + expect(f.text().errors()).toEqual([requiredError({fieldTree: f.text})]); + expect(f.checkbox().errors()).toEqual([requiredError({fieldTree: f.checkbox})]); + expect(f.num().errors()).toEqual([requiredError({fieldTree: f.num})]); + }); + + it('treats 0, an empty array and other filled values as non-empty', () => { + const model = signal<{ + zero: number; + list: string[]; + checkbox: boolean; + text: string; + }>({zero: 0, list: [], checkbox: true, text: 'a'}); + const f = form( + model, + (p) => { + required(p.zero); + required(p.list); + required(p.checkbox); + required(p.text); + }, + {injector: TestBed.inject(Injector)}, + ); + + expect(f.zero().errors()).toEqual([]); + expect(f.list().errors()).toEqual([]); + expect(f.checkbox().errors()).toEqual([]); + expect(f.text().errors()).toEqual([]); + }); + }); + it('returns required Error when the value is not present', () => { const cat = signal({name: ''}); const f = form( From 85090453c37b72da58e9362fe5f2ffbdccf9433f Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 11 Sep 2026 21:36:04 +0000 Subject: [PATCH 24/41] build: update cross-repo angular dependencies See associated pull request for more information. --- .github/actions/deploy-docs-site/main.js | 5 +- .github/workflows/adev-preview-build.yml | 8 +- .github/workflows/adev-preview-deploy.yml | 2 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/benchmark-compare.yml | 4 +- .github/workflows/ci.yml | 50 ++--- .github/workflows/dev-infra.yml | 6 +- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/merge-ready-status.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 ++-- .github/workflows/release.yml | 2 +- MODULE.bazel | 2 +- adev/package.json | 6 +- dev-app/package.json | 6 +- integration/animations/package.json | 8 +- integration/animations/pnpm-lock.yaml | 120 +++++------ .../cli-hello-world-ivy-i18n/package.json | 6 +- .../cli-hello-world-ivy-i18n/pnpm-lock.yaml | 104 +++++----- integration/cli-hello-world-lazy/package.json | 8 +- .../cli-hello-world-lazy/pnpm-lock.yaml | 120 +++++------ integration/cli-hello-world/package.json | 8 +- integration/cli-hello-world/pnpm-lock.yaml | 120 +++++------ integration/cli-signal-inputs/package.json | 4 +- integration/cli-signal-inputs/pnpm-lock.yaml | 96 ++++----- integration/defer/package.json | 4 +- integration/defer/pnpm-lock.yaml | 64 +++--- .../legacy-animations-async/package.json | 4 +- .../legacy-animations-async/pnpm-lock.yaml | 96 ++++----- integration/legacy-animations/package.json | 4 +- integration/legacy-animations/pnpm-lock.yaml | 96 ++++----- integration/ng-add-localize/package.json | 4 +- integration/ng-add-localize/pnpm-lock.yaml | 96 ++++----- .../platform-server-hydration/package.json | 8 +- .../platform-server-hydration/pnpm-lock.yaml | 120 +++++------ .../platform-server-zoneless/package.json | 8 +- .../platform-server-zoneless/pnpm-lock.yaml | 120 +++++------ integration/platform-server/package.json | 8 +- integration/platform-server/pnpm-lock.yaml | 120 +++++------ integration/standalone-bootstrap/package.json | 8 +- .../standalone-bootstrap/pnpm-lock.yaml | 120 +++++------ integration/trusted-types/package.json | 8 +- integration/trusted-types/pnpm-lock.yaml | 120 +++++------ modules/package.json | 2 +- package.json | 16 +- packages/core/test/bundling/package.json | 2 +- packages/zone.js/package.json | 2 +- packages/zone.js/test/typings/package.json | 2 +- pnpm-lock.yaml | 188 +++++++++--------- 49 files changed, 979 insertions(+), 978 deletions(-) diff --git a/.github/actions/deploy-docs-site/main.js b/.github/actions/deploy-docs-site/main.js index e5c8490c2dbf..d4619db9af5c 100644 --- a/.github/actions/deploy-docs-site/main.js +++ b/.github/actions/deploy-docs-site/main.js @@ -38610,6 +38610,7 @@ var yellow = styleText.bind(null, "yellow"); var bold = styleText.bind(null, "bold"); var blue = styleText.bind(null, "blue"); var underline = styleText.bind(null, "underline"); +var magenta = styleText.bind(null, "magenta"); var Log = class { }; Log.info = buildLogLevelFunction(() => console.info, LogLevel.INFO, null); @@ -66030,7 +66031,7 @@ content-type/dist/index.js: @octokit/graphql/dist-bundle/index.js: (* v8 ignore if -- @preserve *) -@angular/ng-dev/bundles/chunk-H3MYIWGQ.mjs: +@angular/ng-dev/bundles/chunk-3TPHGSIP.mjs: (*! Bundled license information: yargs-parser/build/lib/string-utils.js: @@ -66071,7 +66072,7 @@ content-type/dist/index.js: *) *) -@angular/ng-dev/bundles/chunk-U7PAJR6D.mjs: +@angular/ng-dev/bundles/chunk-7IRT7ROC.mjs: (*! Bundled license information: content-type/dist/index.js: diff --git a/.github/workflows/adev-preview-build.yml b/.github/workflows/adev-preview-build.yml index da1bef0cc970..1a9673232496 100644 --- a/.github/workflows/adev-preview-build.yml +++ b/.github/workflows/adev-preview-build.yml @@ -21,17 +21,17 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'adev: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev # `snapshot-build` config is used to stamp the exact version with sha in the footer. run: pnpm bazel build //adev:build.production --config=snapshot-build - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: workflow-artifact-name: 'adev-preview' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/adev-preview-deploy.yml b/.github/workflows/adev-preview-deploy.yml index 3b7aa3635b2b..24a4381811f1 100644 --- a/.github/workflows/adev-preview-deploy.yml +++ b/.github/workflows/adev-preview-deploy.yml @@ -46,7 +46,7 @@ jobs: npx -y firebase-tools@15.15.0 target:clear --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs npx -y firebase-tools@15.15.0 target:apply --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'adev-preview' diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 9a635ff6fde3..c68a0aaede73 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -18,6 +18,6 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/branch-manager@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/benchmark-compare.yml b/.github/workflows/benchmark-compare.yml index 1d024b1768ea..18244bf80fb3 100644 --- a/.github/workflows/benchmark-compare.yml +++ b/.github/workflows/benchmark-compare.yml @@ -50,9 +50,9 @@ jobs: - run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: bazelrc: ./.bazelrc.user diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0ff44233692f..a7099e881c83 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@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -41,13 +41,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -69,11 +69,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,11 +85,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -102,11 +102,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -121,11 +121,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -138,11 +138,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - run: echo "https://${{secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN}}:@github.com" > ${HOME}/.git_credentials @@ -154,11 +154,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -198,11 +198,11 @@ jobs: runs-on: ubuntu-latest-8core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 0258c036e878..83e19f03bbe3 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -16,7 +16,7 @@ jobs: if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/labeling/pull-request@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/labeling/pull-request@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} labels: '{"requires: TGP": ["packages/core/primitives/**/{*,.*}"]}' @@ -24,14 +24,14 @@ jobs: if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/post-approval-changes@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/post-approval-changes@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} issue_labels: if: github.event_name == 'issues' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/labeling/issue@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/labeling/issue@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} google-generative-ai-key: ${{ secrets.GOOGLE_GENERATIVE_AI_KEY }} diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index 7e43461b5ffd..0a1018524f07 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: angular/dev-infra/github-actions/google-internal-tests@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/google-internal-tests@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: run-tests-guide-url: http://go/angular-g3sync-start github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/merge-ready-status.yml b/.github/workflows/merge-ready-status.yml index 0e9e23f0afd3..9dd52ac37a9f 100644 --- a/.github/workflows/merge-ready-status.yml +++ b/.github/workflows/merge-ready-status.yml @@ -11,6 +11,6 @@ jobs: status: runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/unified-status-check@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + - uses: angular/dev-infra/github-actions/unified-status-check@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index 1fb17bec45a0..bf01dbf5374a 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -20,7 +20,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - 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@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - 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 eccec79cfd23..65c25418e517 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -39,7 +39,7 @@ jobs: - name: Check code format 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@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/linting/licenses@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: allow-dependencies-licenses: 'pkg:npm/google-protobuf@' @@ -47,13 +47,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run unit tests @@ -73,11 +73,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run CI tests for framework @@ -97,11 +97,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration CI tests for framework @@ -112,11 +112,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -129,11 +129,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -144,11 +144,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main - name: Install node modules run: pnpm install --frozen-lockfile - run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b37a636500b6..dd96257f82fe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ permissions: jobs: release: - uses: angular/dev-infra/.github/workflows/reusable-release.yml@4a09f9588769980eacb41fcc76e2c76d048eac42 # main + uses: angular/dev-infra/.github/workflows/reusable-release.yml@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main secrets: wombot-token: ${{ secrets.WOMBOT_TOKEN }} angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/MODULE.bazel b/MODULE.bazel index 03e3f67a1349..a5d084d19660 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ git_override( bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "4a09f9588769980eacb41fcc76e2c76d048eac42", + commit = "cde7ad16c16f5c7dbd57b62e8b930443813484ec", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/adev/package.json b/adev/package.json index fed43b66aaa5..bdeb59864d55 100644 --- a/adev/package.json +++ b/adev/package.json @@ -6,9 +6,9 @@ "@algolia/requester-node-http": "5.56.0", "@angular/animations": "workspace:*", "@angular/aria": "22.1.6", - "@angular/build": "22.1.7", + "@angular/build": "22.1.8", "@angular/cdk": "22.1.6", - "@angular/cli": "22.1.7", + "@angular/cli": "22.1.8", "@angular/common": "workspace:*", "@angular/compiler": "workspace:*", "@angular/compiler-cli": "workspace:*", @@ -19,7 +19,7 @@ "@angular/platform-browser": "workspace:*", "@angular/platform-server": "workspace:*", "@angular/router": "workspace:*", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "@codemirror/autocomplete": "6.20.3", "@codemirror/commands": "6.10.4", "@codemirror/lang-angular": "0.1.4", diff --git a/dev-app/package.json b/dev-app/package.json index 13cb409dcf14..e5bcb87317d7 100644 --- a/dev-app/package.json +++ b/dev-app/package.json @@ -15,13 +15,13 @@ "@angular/platform-server": "workspace:*", "@angular/localize": "workspace:*", "@angular/router": "workspace:*", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "rxjs": "~7.8.0", "tslib": "^2.3.0" }, "devDependencies": { - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "workspace:*", "jsdom": "^29.0.0", "typescript": "~6.0.2", diff --git a/integration/animations/package.json b/integration/animations/package.json index ce27df51df48..b0335ebada98 100644 --- a/integration/animations/package.json +++ b/integration/animations/package.json @@ -19,15 +19,15 @@ "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/platform-browser-dynamic": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^6.0.0", "@types/node": "^20.14.8", diff --git a/integration/animations/pnpm-lock.yaml b/integration/animations/pnpm-lock.yaml index e444e3c53ed5..1f1ceb3093e2 100644 --- a/integration/animations/pnpm-lock.yaml +++ b/integration/animations/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -46,14 +46,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -88,13 +88,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -104,7 +104,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -132,15 +132,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -148,12 +148,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -163,7 +163,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -213,13 +213,13 @@ packages: '@angular/platform-browser': ^22.0.0 || ^23.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1479,8 +1479,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1963,8 +1963,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4336,20 +4336,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4361,7 +4361,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4403,7 +4403,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 transitivePeerDependencies: - '@angular/compiler' @@ -4437,16 +4437,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4457,9 +4457,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4467,10 +4467,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4502,7 +4502,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4521,10 +4521,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4556,7 +4556,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4585,15 +4585,15 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -4607,7 +4607,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5861,7 +5861,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6195,10 +6195,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/cli-hello-world-ivy-i18n/package.json b/integration/cli-hello-world-ivy-i18n/package.json index f8e1908615e7..aff2b26667d9 100644 --- a/integration/cli-hello-world-ivy-i18n/package.json +++ b/integration/cli-hello-world-ivy-i18n/package.json @@ -29,9 +29,9 @@ "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^6.0.0", "@types/jasminewd2": "^2.0.8", diff --git a/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml b/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml index 0e2f40dc57a3..68ffd0dd7320 100644 --- a/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml +++ b/integration/cli-hello-world-ivy-i18n/pnpm-lock.yaml @@ -40,14 +40,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -91,13 +91,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -107,7 +107,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -135,15 +135,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -151,12 +151,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -166,7 +166,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -207,8 +207,8 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1459,8 +1459,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1930,8 +1930,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -5301,20 +5301,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -5326,7 +5326,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -5402,16 +5402,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -5422,9 +5422,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -5432,10 +5432,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -5486,10 +5486,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -5540,15 +5540,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -6807,7 +6807,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -7136,10 +7136,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/cli-hello-world-lazy/package.json b/integration/cli-hello-world-lazy/package.json index 28e22698b593..685ce63fcc50 100644 --- a/integration/cli-hello-world-lazy/package.json +++ b/integration/cli-hello-world-lazy/package.json @@ -13,15 +13,15 @@ "@angular/core": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/cli-hello-world-lazy/pnpm-lock.yaml b/integration/cli-hello-world-lazy/pnpm-lock.yaml index 38b86a7b2bad..dd37a57e43cc 100644 --- a/integration/cli-hello-world-lazy/pnpm-lock.yaml +++ b/integration/cli-hello-world-lazy/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -37,14 +37,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -64,13 +64,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -80,7 +80,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -108,15 +108,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -124,12 +124,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -139,7 +139,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -180,13 +180,13 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1443,8 +1443,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1914,8 +1914,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4194,20 +4194,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4219,7 +4219,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4261,7 +4261,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 transitivePeerDependencies: - '@angular/compiler' @@ -4295,16 +4295,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4315,9 +4315,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4325,10 +4325,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4360,7 +4360,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) less: 4.9.0(supports-color@8.1.1) lmdb: 3.5.6 @@ -4379,10 +4379,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4414,7 +4414,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) less: 4.9.0(supports-color@8.1.1) lmdb: 3.5.6 @@ -4433,15 +4433,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@8.1.1)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -4455,7 +4455,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5707,7 +5707,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6036,10 +6036,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/cli-hello-world/package.json b/integration/cli-hello-world/package.json index 0dbc6d7e10a2..8d27cfca9cd7 100644 --- a/integration/cli-hello-world/package.json +++ b/integration/cli-hello-world/package.json @@ -18,15 +18,15 @@ "@angular/forms": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/cli-hello-world/pnpm-lock.yaml b/integration/cli-hello-world/pnpm-lock.yaml index dd81186d7cc8..9b08d5091568 100644 --- a/integration/cli-hello-world/pnpm-lock.yaml +++ b/integration/cli-hello-world/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -40,14 +40,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -67,13 +67,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -83,7 +83,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -111,15 +111,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -127,12 +127,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -142,7 +142,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -183,13 +183,13 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1446,8 +1446,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1917,8 +1917,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4197,20 +4197,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4222,7 +4222,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4264,7 +4264,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 transitivePeerDependencies: - '@angular/compiler' @@ -4298,16 +4298,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4318,9 +4318,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4328,10 +4328,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4363,7 +4363,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) less: 4.9.0(supports-color@8.1.1) lmdb: 3.5.6 @@ -4382,10 +4382,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4417,7 +4417,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) less: 4.9.0(supports-color@8.1.1) lmdb: 3.5.6 @@ -4436,15 +4436,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@8.1.1)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -4458,7 +4458,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5710,7 +5710,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6039,10 +6039,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/cli-signal-inputs/package.json b/integration/cli-signal-inputs/package.json index 74b9fe8841cc..aa34cb24b5e0 100644 --- a/integration/cli-signal-inputs/package.json +++ b/integration/cli-signal-inputs/package.json @@ -25,8 +25,8 @@ "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^6.0.0", "@types/jasminewd2": "^2.0.8", diff --git a/integration/cli-signal-inputs/pnpm-lock.yaml b/integration/cli-signal-inputs/pnpm-lock.yaml index d5e9981a4f26..a3747b0ed305 100644 --- a/integration/cli-signal-inputs/pnpm-lock.yaml +++ b/integration/cli-signal-inputs/pnpm-lock.yaml @@ -40,11 +40,11 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -100,13 +100,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -116,7 +116,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -144,15 +144,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -160,12 +160,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -175,7 +175,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -216,8 +216,8 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1472,8 +1472,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1943,8 +1943,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@socket.io/component-emitter@3.1.2': @@ -5110,20 +5110,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -5135,7 +5135,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -5211,16 +5211,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -5231,9 +5231,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -5241,10 +5241,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -5295,15 +5295,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -6564,7 +6564,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6893,10 +6893,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/defer/package.json b/integration/defer/package.json index 9d88268ebbc0..aeeb47b6ce6f 100644 --- a/integration/defer/package.json +++ b/integration/defer/package.json @@ -23,8 +23,8 @@ "zone.js": "0.16.2" }, "devDependencies": { - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "ts-node": "10.9.2", "typescript": "6.0.3" diff --git a/integration/defer/pnpm-lock.yaml b/integration/defer/pnpm-lock.yaml index bd7f80650750..fc7e5d160077 100644 --- a/integration/defer/pnpm-lock.yaml +++ b/integration/defer/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: version: 0.16.2 devDependencies: '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@26.4.0)(chokidar@5.0.0)(postcss@8.5.26)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@26.4.0)(chokidar@5.0.0)(postcss@8.5.26)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@26.4.0)(chokidar@5.0.0) + specifier: 22.1.8 + version: 22.1.8(@types/node@26.4.0)(chokidar@5.0.0) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -58,13 +58,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -72,12 +72,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -87,7 +87,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -128,8 +128,8 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1175,8 +1175,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -2215,14 +2215,14 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -2233,9 +2233,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -2243,10 +2243,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@26.4.0)(chokidar@5.0.0)(postcss@8.5.26)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@26.4.0)(chokidar@5.0.0)(postcss@8.5.26)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -2294,15 +2294,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@26.4.0)(chokidar@5.0.0)': + '@angular/cli@22.1.8(@types/node@26.4.0)(chokidar@5.0.0)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@26.4.0) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@26.4.0))(@types/node@26.4.0)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -3069,10 +3069,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/legacy-animations-async/package.json b/integration/legacy-animations-async/package.json index 85cd406277f3..295df3c7f66d 100644 --- a/integration/legacy-animations-async/package.json +++ b/integration/legacy-animations-async/package.json @@ -23,8 +23,8 @@ "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/legacy-animations-async/pnpm-lock.yaml b/integration/legacy-animations-async/pnpm-lock.yaml index 719a89622141..d231535c1c0c 100644 --- a/integration/legacy-animations-async/pnpm-lock.yaml +++ b/integration/legacy-animations-async/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -61,13 +61,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -77,7 +77,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -105,15 +105,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -121,12 +121,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -136,7 +136,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -177,8 +177,8 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1429,8 +1429,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1900,8 +1900,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4176,20 +4176,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4201,7 +4201,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4276,16 +4276,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4296,9 +4296,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4306,10 +4306,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4359,15 +4359,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@8.1.1)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -5626,7 +5626,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -5955,10 +5955,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/legacy-animations/package.json b/integration/legacy-animations/package.json index 15935a2b0d8b..edc0b5e1320b 100644 --- a/integration/legacy-animations/package.json +++ b/integration/legacy-animations/package.json @@ -23,8 +23,8 @@ "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^6.0.0", "@types/jasminewd2": "^2.0.8", diff --git a/integration/legacy-animations/pnpm-lock.yaml b/integration/legacy-animations/pnpm-lock.yaml index e79ef9ad966f..afca30f99ee9 100644 --- a/integration/legacy-animations/pnpm-lock.yaml +++ b/integration/legacy-animations/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -88,13 +88,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -104,7 +104,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -132,15 +132,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -148,12 +148,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -163,7 +163,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -204,8 +204,8 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1460,8 +1460,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1931,8 +1931,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@socket.io/component-emitter@3.1.2': @@ -4873,20 +4873,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4898,7 +4898,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4974,16 +4974,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4994,9 +4994,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -5004,10 +5004,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1))(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -5058,15 +5058,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@8.1.1)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -6327,7 +6327,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6656,10 +6656,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/ng-add-localize/package.json b/integration/ng-add-localize/package.json index 97c0f06ee4b9..eb17d087c023 100644 --- a/integration/ng-add-localize/package.json +++ b/integration/ng-add-localize/package.json @@ -21,8 +21,8 @@ "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "typescript": "6.0.3" diff --git a/integration/ng-add-localize/pnpm-lock.yaml b/integration/ng-add-localize/pnpm-lock.yaml index 53ed16df865d..aa3b07fb6352 100644 --- a/integration/ng-add-localize/pnpm-lock.yaml +++ b/integration/ng-add-localize/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -58,13 +58,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -74,7 +74,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -102,15 +102,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -118,12 +118,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -133,7 +133,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -174,8 +174,8 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1419,8 +1419,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1890,8 +1890,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tybys/wasm-util@0.10.3': @@ -4116,20 +4116,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4141,7 +4141,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4217,16 +4217,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4237,9 +4237,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4247,10 +4247,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/localize@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4301,15 +4301,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@8.1.1)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -5559,7 +5559,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -5888,10 +5888,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/platform-server-hydration/package.json b/integration/platform-server-hydration/package.json index 41f7524675a2..77e3abbff309 100644 --- a/integration/platform-server-hydration/package.json +++ b/integration/platform-server-hydration/package.json @@ -20,15 +20,15 @@ "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/platform-server": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^6.0.0", "@types/node": "^20.14.8", diff --git a/integration/platform-server-hydration/pnpm-lock.yaml b/integration/platform-server-hydration/pnpm-lock.yaml index dcba43a31b41..df0ed82ea1ec 100644 --- a/integration/platform-server-hydration/pnpm-lock.yaml +++ b/integration/platform-server-hydration/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -43,14 +43,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -91,13 +91,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -107,7 +107,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -135,15 +135,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -151,12 +151,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -166,7 +166,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -207,13 +207,13 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1470,8 +1470,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1941,8 +1941,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4727,20 +4727,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4752,7 +4752,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4795,7 +4795,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 transitivePeerDependencies: - '@angular/compiler' @@ -4829,16 +4829,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4849,9 +4849,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4859,10 +4859,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4895,7 +4895,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4914,10 +4914,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4950,7 +4950,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4969,15 +4969,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -4991,7 +4991,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -6245,7 +6245,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6574,10 +6574,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/platform-server-zoneless/package.json b/integration/platform-server-zoneless/package.json index 3d0dcc188930..3f0926b77053 100644 --- a/integration/platform-server-zoneless/package.json +++ b/integration/platform-server-zoneless/package.json @@ -21,15 +21,15 @@ "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/platform-server": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "express": "~5.2.0", "rxjs": "^7.0.0", "tslib": "^2.3.0" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/express": "^5.0.3", "@types/jasmine": "^6.0.0", diff --git a/integration/platform-server-zoneless/pnpm-lock.yaml b/integration/platform-server-zoneless/pnpm-lock.yaml index 966b515b7228..2eac176fbc77 100644 --- a/integration/platform-server-zoneless/pnpm-lock.yaml +++ b/integration/platform-server-zoneless/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) express: specifier: ~5.2.0 version: 5.2.1(supports-color@10.2.2) @@ -46,14 +46,14 @@ importers: version: 2.8.1 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -97,13 +97,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -113,7 +113,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -141,15 +141,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -157,12 +157,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -172,7 +172,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -213,13 +213,13 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1476,8 +1476,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1947,8 +1947,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4739,20 +4739,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4764,7 +4764,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4807,7 +4807,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 transitivePeerDependencies: - '@angular/compiler' @@ -4841,16 +4841,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4861,9 +4861,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4871,10 +4871,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4907,7 +4907,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4926,10 +4926,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4962,7 +4962,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4981,15 +4981,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -5003,7 +5003,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -6257,7 +6257,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6586,10 +6586,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/platform-server/package.json b/integration/platform-server/package.json index db944a27a0a8..e4b5a0ba8a33 100644 --- a/integration/platform-server/package.json +++ b/integration/platform-server/package.json @@ -24,16 +24,16 @@ "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/platform-server": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "express": "~5.2.0", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/express": "^5.0.3", "@types/jasmine": "^6.0.0", diff --git a/integration/platform-server/pnpm-lock.yaml b/integration/platform-server/pnpm-lock.yaml index 92b5323ebecf..5ef90530d784 100644 --- a/integration/platform-server/pnpm-lock.yaml +++ b/integration/platform-server/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) express: specifier: ~5.2.0 version: 5.2.1(supports-color@10.2.2) @@ -49,14 +49,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -100,13 +100,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -116,7 +116,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -144,15 +144,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -160,12 +160,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -175,7 +175,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -216,13 +216,13 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1479,8 +1479,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1950,8 +1950,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4745,20 +4745,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4770,7 +4770,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4813,7 +4813,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 transitivePeerDependencies: - '@angular/compiler' @@ -4847,16 +4847,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4867,9 +4867,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4877,10 +4877,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4913,7 +4913,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4932,10 +4932,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4968,7 +4968,7 @@ snapshots: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel '@angular/platform-server': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) lmdb: 3.5.6 @@ -4987,15 +4987,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -5009,7 +5009,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-server@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -6263,7 +6263,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6592,10 +6592,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/standalone-bootstrap/package.json b/integration/standalone-bootstrap/package.json index 87660225f7ed..95df2618edf0 100644 --- a/integration/standalone-bootstrap/package.json +++ b/integration/standalone-bootstrap/package.json @@ -17,15 +17,15 @@ "@angular/core": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/node": "^20.14.8", "ts-node": "^10.9.1", diff --git a/integration/standalone-bootstrap/pnpm-lock.yaml b/integration/standalone-bootstrap/pnpm-lock.yaml index 38b86a7b2bad..dd37a57e43cc 100644 --- a/integration/standalone-bootstrap/pnpm-lock.yaml +++ b/integration/standalone-bootstrap/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -37,14 +37,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -64,13 +64,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -80,7 +80,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -108,15 +108,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -124,12 +124,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -139,7 +139,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -180,13 +180,13 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1443,8 +1443,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1914,8 +1914,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@tsconfig/node10@1.0.13': @@ -4194,20 +4194,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@8.1.1))(jiti@2.7.0)(lightningcss@1.33.0)(supports-color@8.1.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -4219,7 +4219,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -4261,7 +4261,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 transitivePeerDependencies: - '@angular/compiler' @@ -4295,16 +4295,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -4315,9 +4315,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -4325,10 +4325,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.25)(supports-color@8.1.1)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4360,7 +4360,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) less: 4.9.0(supports-color@8.1.1) lmdb: 3.5.6 @@ -4379,10 +4379,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@8.1.1))(jiti@2.7.0)(less@4.9.0(supports-color@8.1.1))(postcss@8.5.26)(supports-color@8.1.1)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -4414,7 +4414,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) less: 4.9.0(supports-color@8.1.1) lmdb: 3.5.6 @@ -4433,15 +4433,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@8.1.1)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@8.1.1)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -4455,7 +4455,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -5707,7 +5707,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6036,10 +6036,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/integration/trusted-types/package.json b/integration/trusted-types/package.json index 4d1628f5ba4d..8d5df1f6667e 100644 --- a/integration/trusted-types/package.json +++ b/integration/trusted-types/package.json @@ -20,15 +20,15 @@ "@angular/forms": "link:./in-existing-linked-by-bazel", "@angular/platform-browser": "link:./in-existing-linked-by-bazel", "@angular/router": "link:./in-existing-linked-by-bazel", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "rxjs": "^7.0.0", "tslib": "^2.3.0", "zone.js": "0.16.2" }, "devDependencies": { - "@angular-devkit/build-angular": "22.1.7", - "@angular/build": "22.1.7", - "@angular/cli": "22.1.7", + "@angular-devkit/build-angular": "22.1.8", + "@angular/build": "22.1.8", + "@angular/cli": "22.1.8", "@angular/compiler-cli": "link:./in-existing-linked-by-bazel", "@types/jasmine": "^6.0.0", "@types/node": "^20.14.8", diff --git a/integration/trusted-types/pnpm-lock.yaml b/integration/trusted-types/pnpm-lock.yaml index 846c6400cb2b..2c7a6b085bce 100644 --- a/integration/trusted-types/pnpm-lock.yaml +++ b/integration/trusted-types/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + specifier: 22.1.8 + version: 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) rxjs: specifier: ^7.0.0 version: 7.8.2 @@ -43,14 +43,14 @@ importers: version: 0.16.2 devDependencies: '@angular-devkit/build-angular': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) + specifier: 22.1.8 + version: 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) + specifier: 22.1.8 + version: 22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2) '@angular/compiler-cli': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -103,13 +103,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/build-angular@22.1.7': - resolution: {integrity: sha512-bg2Lp9JyT2fyWzXF1DeKxDjmIVfs1KJiy1JjFo7wUGA7G4cI6PC8Jrw20F2Qkj+biXcUoeYMKCbbMBBU8xTIVw==} + '@angular-devkit/build-angular@22.1.8': + resolution: {integrity: sha512-UH75aJJ5lBpnu3QtC+WygE0Z5dESDLibNQ0jbcot4L7jnT/fLPWbffWp2WHvIjaUybVj/sh441N9rCiy0YMN3Q==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -119,7 +119,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 browser-sync: ^3.0.2 karma: ^6.3.0 ng-packagr: ^22.0.0 @@ -147,15 +147,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2201.7': - resolution: {integrity: sha512-bSF5s9B0RFBdOhCIFrv2idqtxYESi7LL6YQFctFnx4FcQp+mTU+ZomE2byO7ZxW5T3nuu9JHVFX5W2/xN34cJQ==} + '@angular-devkit/build-webpack@0.2201.8': + resolution: {integrity: sha512-T9Fl7Qcy40UFZaiGAY9ieJC3cgTTupS/eAncKTeuSdqCHpZn+IMhU+Nyl7C2yE4VZe3KCk8CGGKS3g4TmyH/QQ==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -163,12 +163,12 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -178,7 +178,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -219,13 +219,13 @@ packages: vitest: optional: true - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -1486,8 +1486,8 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@ngtools/webpack@22.1.7': - resolution: {integrity: sha512-1cqXgu5DnINuZ1pJ4ZsiyLOFDXzEGkKNdMcBuQ73WVXRhE8CwN0bdHyjEW+gOff2QXAsB2uulk7e3XO52QCA3w==} + '@ngtools/webpack@22.1.8': + resolution: {integrity: sha512-U8VA7iaxDjSWaUOmYmcK1JjrQczoGQeq4QbBwFHo1ET3ArshIDtaiXkvuIwUDHBL4N2yGHAgEZZee8ChJvz77w==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} deprecated: Angular's Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead. peerDependencies: @@ -1957,8 +1957,8 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@socket.io/component-emitter@3.1.2': @@ -5118,20 +5118,20 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': + '@angular-devkit/build-angular@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(debug@4.4.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(lightningcss@1.33.0)(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/build-webpack': 0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular/build': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular/build': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3) '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 '@babel/generator': 8.0.0 @@ -5143,7 +5143,7 @@ snapshots: '@babel/preset-env': 8.0.2(@babel/core@8.0.1) '@babel/runtime': 8.0.0 '@discoveryjs/json-ext': 1.1.0 - '@ngtools/webpack': 22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) + '@ngtools/webpack': 22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) ansi-colors: 4.1.3 autoprefixer: 10.5.4(postcss@8.5.25) babel-loader: 10.1.1(@babel/core@8.0.1)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) @@ -5185,7 +5185,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) esbuild: 0.28.2 karma: 6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: @@ -5220,16 +5220,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2201.7(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@angular-devkit/build-webpack@0.2201.8(chokidar@5.0.0)(webpack-dev-server@5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)))(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) rxjs: 7.8.2 webpack: 5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25) webpack-dev-server: 5.2.6(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) @@ -5240,9 +5240,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -5250,10 +5250,10 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.25)(supports-color@10.2.2)(terser@5.49.0)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -5285,7 +5285,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) karma: 6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) @@ -5305,10 +5305,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': + '@angular/build@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(@angular/compiler@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel))(@types/node@20.19.43)(chokidar@5.0.0)(istanbul-lib-instrument@6.0.3(supports-color@10.2.2))(jiti@2.7.0)(karma@6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2))(less@4.9.0(supports-color@10.2.2))(postcss@8.5.26)(supports-color@10.2.2)(terser@5.51.2)(tslib@2.8.1)(typescript@6.0.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:in-existing-linked-by-bazel '@angular/compiler-cli': link:in-existing-linked-by-bazel '@babel/core': 8.0.1 @@ -5340,7 +5340,7 @@ snapshots: optionalDependencies: '@angular/core': link:in-existing-linked-by-bazel '@angular/platform-browser': link:in-existing-linked-by-bazel - '@angular/ssr': 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) + '@angular/ssr': 22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel) istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) karma: 6.4.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2) less: 4.9.0(supports-color@10.2.2) @@ -5360,15 +5360,15 @@ snapshots: - tsx - yaml - '@angular/cli@22.1.7(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': + '@angular/cli@22.1.8(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@10.2.2)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.4.3) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -5382,7 +5382,7 @@ snapshots: - chokidar - supports-color - '@angular/ssr@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': + '@angular/ssr@22.1.8(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/router@in-existing-linked-by-bazel)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel @@ -6636,7 +6636,7 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@ngtools/webpack@22.1.7(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': + '@ngtools/webpack@22.1.8(@angular/compiler-cli@in-existing-linked-by-bazel)(typescript@6.0.3)(webpack@5.109.2(esbuild@0.28.2)(lightningcss@1.33.0)(postcss@8.5.25))': dependencies: '@angular/compiler-cli': link:in-existing-linked-by-bazel typescript: 6.0.3 @@ -6965,10 +6965,10 @@ snapshots: '@rolldown/pluginutils@1.0.1': {} - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: diff --git a/modules/package.json b/modules/package.json index 9b40d56844fe..d587f3a138a0 100644 --- a/modules/package.json +++ b/modules/package.json @@ -2,7 +2,7 @@ "dependencies": { "@angular/animations": "workspace:*", "@angular/benchpress": "workspace:*", - "@angular/build": "22.1.7", + "@angular/build": "22.1.8", "@angular/common": "workspace:*", "@angular/compiler": "workspace:*", "@angular/compiler-cli": "workspace:*", diff --git a/package.json b/package.json index 4251d3ae5e16..235dafac6549 100644 --- a/package.json +++ b/package.json @@ -55,14 +55,14 @@ }, "// 1": "dependencies are used locally and by bazel", "dependencies": { - "@angular-devkit/core": "22.1.7", - "@angular-devkit/schematics": "22.1.7", + "@angular-devkit/core": "22.1.8", + "@angular-devkit/schematics": "22.1.8", "@angular/animations": "workspace:*", "@angular/aria": "22.1.6", "@angular/benchpress": "workspace: *", - "@angular/build": "22.1.7", + "@angular/build": "22.1.8", "@angular/cdk": "22.1.6", - "@angular/cli": "22.1.7", + "@angular/cli": "22.1.8", "@angular/common": "workspace:*", "@angular/compiler": "workspace:*", "@angular/compiler-cli": "workspace:*", @@ -77,14 +77,14 @@ "@angular/platform-server": "workspace:*", "@angular/router": "workspace:*", "@angular/service-worker": "workspace:*", - "@angular/ssr": "22.1.7", + "@angular/ssr": "22.1.8", "@angular/upgrade": "workspace: *", "@babel/cli": "8.0.4", "@babel/core": "8.0.1", "@babel/generator": "8.0.0", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-node-resolve": "^16.0.0", - "@schematics/angular": "22.1.7", + "@schematics/angular": "22.1.8", "@types/angular": "^1.6.47", "@types/chrome": "^0.2.0", "@types/dom-navigation": "^1.0.5", @@ -104,7 +104,7 @@ "angular-mocks-1.8": "npm:angular-mocks@1.8", "chalk": "^5.4.1", "diff": "^9.0.0", - "domino": "https://github.com/angular/domino.git#4d97473116d000e3fd4d6f75ec98cbd67576fa6f", + "domino": "https://github.com/angular/domino.git#9b606f5b01b5cc518b97a618b92f990c03a33d35", "esbuild": "0.28.1", "http-server": "^14.0.0", "jasmine": "6.3.0", @@ -136,7 +136,7 @@ "devDependencies": { "@actions/core": "^3.0.0", "@actions/github": "^9.0.0", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#f166178ac5c37cd3aadab7b8cb7212f34d71b2a6", "@babel/plugin-transform-async-generator-functions": "^8.0.0", "@bazel/bazelisk": "^1.7.5", "@bazel/buildifier": "^8.0.0", diff --git a/packages/core/test/bundling/package.json b/packages/core/test/bundling/package.json index a9f39c0e8287..e95643886d34 100644 --- a/packages/core/test/bundling/package.json +++ b/packages/core/test/bundling/package.json @@ -1,7 +1,7 @@ { "dependencies": { "@angular/animations": "workspace:*", - "@angular/build": "22.1.7", + "@angular/build": "22.1.8", "@angular/common": "workspace:*", "@angular/compiler-cli": "workspace:*", "@angular/compiler": "workspace:*", diff --git a/packages/zone.js/package.json b/packages/zone.js/package.json index ba04e0ab1ef5..a7344e92fe0e 100644 --- a/packages/zone.js/package.json +++ b/packages/zone.js/package.json @@ -15,7 +15,7 @@ "@types/node": "^24.3.0", "@types/systemjs": "6.15.4", "bluebird": "3.7.2", - "domino": "https://github.com/angular/domino.git#4d97473116d000e3fd4d6f75ec98cbd67576fa6f", + "domino": "https://github.com/angular/domino.git#9b606f5b01b5cc518b97a618b92f990c03a33d35", "esbuild-plugin-umd-wrapper": "3.0.0", "jest-environment-jsdom": "30.4.1", "jest-environment-node": "30.4.1", diff --git a/packages/zone.js/test/typings/package.json b/packages/zone.js/test/typings/package.json index eafa950be032..f91b4a5dc9b8 100644 --- a/packages/zone.js/test/typings/package.json +++ b/packages/zone.js/test/typings/package.json @@ -9,7 +9,7 @@ "author": "", "license": "MIT", "dependencies": { - "domino": "https://github.com/angular/domino.git#4d97473116d000e3fd4d6f75ec98cbd67576fa6f", + "domino": "https://github.com/angular/domino.git#9b606f5b01b5cc518b97a618b92f990c03a33d35", "zone.js": "workspace:*" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4b08fde3ac1..8ee0384d2c56 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,11 +13,11 @@ importers: .: dependencies: '@angular-devkit/core': - specifier: 22.1.7 - version: 22.1.7(chokidar@5.0.0) + specifier: 22.1.8 + version: 22.1.8(chokidar@5.0.0) '@angular-devkit/schematics': - specifier: 22.1.7 - version: 22.1.7(chokidar@5.0.0) + specifier: 22.1.8 + version: 22.1.8(chokidar@5.0.0) '@angular/animations': specifier: workspace:* version: link:packages/animations @@ -28,14 +28,14 @@ importers: specifier: 'workspace: *' version: link:packages/benchpress '@angular/build': - specifier: 22.1.7 - version: 22.1.7(dda021ede472fe157a0260afb7d3850a) + specifier: 22.1.8 + version: 22.1.8(6122bb84929f84cea625d49dcdbbd50e) '@angular/cdk': specifier: 22.1.6 version: 22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@11.0.0) + specifier: 22.1.8 + version: 22.1.8(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@11.0.0) '@angular/common': specifier: workspace:* version: link:packages/common @@ -79,8 +79,8 @@ importers: specifier: workspace:* version: link:packages/service-worker '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) + specifier: 22.1.8 + version: 22.1.8(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) '@angular/upgrade': specifier: 'workspace: *' version: link:packages/upgrade @@ -100,8 +100,8 @@ importers: specifier: ^16.0.0 version: 16.0.3(rollup@4.62.2) '@schematics/angular': - specifier: 22.1.7 - version: 22.1.7(chokidar@5.0.0) + specifier: 22.1.8 + version: 22.1.8(chokidar@5.0.0) '@types/angular': specifier: ^1.6.47 version: 1.8.9 @@ -160,8 +160,8 @@ importers: specifier: ^9.0.0 version: 9.0.0 domino: - specifier: https://github.com/angular/domino.git#4d97473116d000e3fd4d6f75ec98cbd67576fa6f - version: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f' + specifier: https://github.com/angular/domino.git#9b606f5b01b5cc518b97a618b92f990c03a33d35 + version: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35' esbuild: specifier: 0.28.1 version: 0.28.1 @@ -248,8 +248,8 @@ importers: specifier: ^9.0.0 version: 9.1.1 '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981 - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981(@modelcontextprotocol/sdk@1.30.0(@cfworker/json-schema@4.1.1)(supports-color@11.0.0)) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#f166178ac5c37cd3aadab7b8cb7212f34d71b2a6 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f166178ac5c37cd3aadab7b8cb7212f34d71b2a6(@modelcontextprotocol/sdk@1.30.0(@cfworker/json-schema@4.1.1)(supports-color@11.0.0)) '@babel/plugin-transform-async-generator-functions': specifier: ^8.0.0 version: 8.0.1(@babel/core@8.0.1) @@ -350,14 +350,14 @@ importers: specifier: 22.1.6 version: 22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/core@packages+core) '@angular/build': - specifier: 22.1.7 - version: 22.1.7(57e4ee4e2aaa159d0a430f2ba59aadbf) + specifier: 22.1.8 + version: 22.1.8(85d34a3d252fb0512d76ecbfd904c3a4) '@angular/cdk': specifier: 22.1.6 version: 22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@cfworker/json-schema@4.1.1)(@types/node@24.13.3)(chokidar@5.0.0)(supports-color@11.0.0) + specifier: 22.1.8 + version: 22.1.8(@cfworker/json-schema@4.1.1)(@types/node@24.13.3)(chokidar@5.0.0)(supports-color@11.0.0) '@angular/common': specifier: workspace:* version: link:../packages/common @@ -389,8 +389,8 @@ importers: specifier: workspace:* version: link:../packages/router '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) + specifier: 22.1.8 + version: 22.1.8(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) '@codemirror/autocomplete': specifier: 6.20.3 version: 6.20.3 @@ -711,8 +711,8 @@ importers: specifier: workspace:* version: link:../packages/router '@angular/ssr': - specifier: 22.1.7 - version: 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) + specifier: 22.1.8 + version: 22.1.8(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) rxjs: specifier: ~7.8.0 version: 7.8.2 @@ -721,11 +721,11 @@ importers: version: 2.8.1 devDependencies: '@angular/build': - specifier: 22.1.7 - version: 22.1.7(dda021ede472fe157a0260afb7d3850a) + specifier: 22.1.8 + version: 22.1.8(6122bb84929f84cea625d49dcdbbd50e) '@angular/cli': - specifier: 22.1.7 - version: 22.1.7(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@11.0.0) + specifier: 22.1.8 + version: 22.1.8(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@11.0.0) '@angular/compiler-cli': specifier: workspace:* version: link:../packages/compiler-cli @@ -821,8 +821,8 @@ importers: specifier: workspace:* version: link:../packages/benchpress '@angular/build': - specifier: 22.1.7 - version: 22.1.7(5190a317824aee1a651b1742edadba91) + specifier: 22.1.8 + version: 22.1.8(c92d653f22eb8fb62b98197465e620ce) '@angular/common': specifier: workspace:* version: link:../packages/common @@ -1006,8 +1006,8 @@ importers: specifier: workspace:* version: link:../../../animations '@angular/build': - specifier: 22.1.7 - version: 22.1.7(dda021ede472fe157a0260afb7d3850a) + specifier: 22.1.8 + version: 22.1.8(6122bb84929f84cea625d49dcdbbd50e) '@angular/common': specifier: workspace:* version: link:../../../common @@ -1226,8 +1226,8 @@ importers: specifier: 3.7.2 version: 3.7.2 domino: - specifier: https://github.com/angular/domino.git#4d97473116d000e3fd4d6f75ec98cbd67576fa6f - version: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f' + specifier: https://github.com/angular/domino.git#9b606f5b01b5cc518b97a618b92f990c03a33d35 + version: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35' esbuild-plugin-umd-wrapper: specifier: 3.0.0 version: 3.0.0 @@ -1274,8 +1274,8 @@ importers: packages/zone.js/test/typings: dependencies: domino: - specifier: https://github.com/angular/domino.git#4d97473116d000e3fd4d6f75ec98cbd67576fa6f - version: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f' + specifier: https://github.com/angular/domino.git#9b606f5b01b5cc518b97a618b92f990c03a33d35 + version: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35' zone.js: specifier: workspace:* version: link:../.. @@ -1491,13 +1491,13 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2201.7': - resolution: {integrity: sha512-qffChB0+3WuLcwDk9gx3p/Vl3zYJDomweui5zsLESDMzvJ8zsbKRkgohTieOngajx+XBsklp0gKcxjiVn4NvWQ==} + '@angular-devkit/architect@0.2201.8': + resolution: {integrity: sha512-EUQo8RDS1my2Bo5FRS+gBYgz1/klfIp9XESfMpTBO04nBkjF6DkPCeOxeAf1CYjWy9nCXcWn968eSdEhV5jXiA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular-devkit/core@22.1.7': - resolution: {integrity: sha512-RKayeOOjhcIe/iBOM1fmtI5pjXwBEJh+u55VnSeIwYvFNXyxI0/jdRw4T6uhwusQ+1bzyya4d8q1mT9oaOQ/5A==} + '@angular-devkit/core@22.1.8': + resolution: {integrity: sha512-34lsgg2FwMVBX7nR/ZqzRUcdvdYPvSB8XAEr2GudXAyZwLI9ehzfQlagAWR/gEb8p4uCFZW0r7uU0toxydq4Rw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^5.0.0 @@ -1505,8 +1505,8 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@22.1.7': - resolution: {integrity: sha512-KOcVeT4MCsoPt6AMnXH7AbWZnzlKXhMyua2ITWij4UbLaNWCDwfIug/xrZssYLHUFwebCIqsR8iuG/BPH8Cz2w==} + '@angular-devkit/schematics@22.1.8': + resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@angular/aria@22.1.6': @@ -1515,8 +1515,8 @@ packages: '@angular/cdk': 22.1.6 '@angular/core': ^22.0.0 || ^23.0.0 - '@angular/build@22.1.7': - resolution: {integrity: sha512-YNZL3R2YS1qZud9zbJfW3ZSeEB0xAURBJEE0cf7WRCCwkn7NFlH7xXLW/zR+WRBwtcCBRsLrM2/ix3Y8FoKX9A==} + '@angular/build@22.1.8': + resolution: {integrity: sha512-tw+Evk0EITb8p8dTu743ONoFztCEiyDkdRbtZsh7C0vBS7Q9ElsOcFeg2Z9OAAwrmtZMIBuW3jrdPRQp7OCSdw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^22.0.0 @@ -1526,7 +1526,7 @@ packages: '@angular/platform-browser': ^22.0.0 '@angular/platform-server': ^22.0.0 '@angular/service-worker': ^22.0.0 - '@angular/ssr': ^22.1.7 + '@angular/ssr': ^22.1.8 istanbul-lib-instrument: ^6.0.0 karma: ^6.4.0 less: ^4.2.0 @@ -1576,8 +1576,8 @@ packages: '@angular/platform-browser': ^22.0.0 || ^23.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@22.1.7': - resolution: {integrity: sha512-dsOAAPHTXSrTvH5jIdZsFhqmcrTU9+aLXPSYSkQ1afMxPUT/JDjWH228xURYmCaM3ml0vVaT9R2p7/FrS7CJmg==} + '@angular/cli@22.1.8': + resolution: {integrity: sha512-MFN/FydqDndai8vF12hDxG5RlBt1HUUheeJgJNmuHYIne4bOAfOT+xuMpIK8+gLSRwCemdqR3OMM38pnsFJ/nA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true @@ -1590,8 +1590,8 @@ packages: '@angular/compiler': optional: true - '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f': - resolution: {gitHosted: true, integrity: sha512-EkLiV6xLvnckAPAjZUsGJDJlR7R+qx6ZN5Z9soP46ps+KVNF/wJ9HloVC1VquHtuXUjf5n1lm6vu5pyTG4ES3w==, tarball: https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f} + '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35': + resolution: {gitHosted: true, integrity: sha512-R863LMO9L1BdkpChzNK5hpNLToR5cUOgOPnflx/Hn8Iwcu1NNNVuVHgLKrCtGnw7igTIFXHVlQgtKv6ZjHOOTg==, tarball: https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35} version: 2.1.6 '@angular/material@22.1.6': @@ -1604,13 +1604,13 @@ packages: '@angular/platform-browser': ^22.0.0 || ^23.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/2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981': - resolution: {gitHosted: true, integrity: sha512-gvSQwKrcdUefjQGC9dzuaiNY3G61f0w8sGDrQSS6ju8FKITLMlWJREmD6DzYkTclDdzE0GwxbJmUYX7QbYYvaQ==, tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981} - version: 0.0.0-183403ae13b785698eaf13c819dda55b9fed430b + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f166178ac5c37cd3aadab7b8cb7212f34d71b2a6': + resolution: {gitHosted: true, integrity: sha512-5NrBeSt7Q//Qrxhy1OVNDNuGiZLdFOaIPMLtCgjypDsJc214fEI4xRKqN7zIpAQfMlZDoIFMh7vodM/uB9oq3A==, tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f166178ac5c37cd3aadab7b8cb7212f34d71b2a6} + version: 0.0.0-cde7ad16c16f5c7dbd57b62e8b930443813484ec hasBin: true - '@angular/ssr@22.1.7': - resolution: {integrity: sha512-fX766QHDeiMTIa+D1/OQaCMyW0EKO7nR+hUBcCd9gOcu3dMr3JnugEmLYReCCkQNKRjMmALSs7QS7o+ptrKsKg==} + '@angular/ssr@22.1.8': + resolution: {integrity: sha512-D/Is+0dXrFrYeWa3CGqN/inp73pvz+zMrje3wOAR22SBQSV4qPeY8Y4NuR8EflwMwsfiNAfGBYSDQs1WsEx+bQ==} peerDependencies: '@angular/common': ^22.0.0 '@angular/core': ^22.0.0 @@ -4556,8 +4556,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - '@schematics/angular@22.1.7': - resolution: {integrity: sha512-acBv147JjnwtWFgC8Af0KFBzPpb/TWaYxoWN/Ou3pXtUhYiEqnrdJeoFz3ssDw26eKFIdWnVBLB/dHORBykPBg==} + '@schematics/angular@22.1.8': + resolution: {integrity: sha512-V37T9uHOQVHyxxOqwcJ9xjSIW/mW9UuSfjOc7WJE4V8+3zj0abDJLHuoxDZKe0icYGapgOcvHyYjtNOjSeSivw==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@secretlint/config-creator@10.2.2': @@ -11857,14 +11857,14 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@angular-devkit/architect@0.2201.7(chokidar@5.0.0)': + '@angular-devkit/architect@0.2201.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/core@22.1.7(chokidar@5.0.0)': + '@angular-devkit/core@22.1.8(chokidar@5.0.0)': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1 @@ -11875,9 +11875,9 @@ snapshots: optionalDependencies: chokidar: 5.0.0 - '@angular-devkit/schematics@22.1.7(chokidar@5.0.0)': + '@angular-devkit/schematics@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 magic-string: 1.0.0 ora: 9.4.1 @@ -11891,17 +11891,17 @@ snapshots: '@angular/core': link:packages/core tslib: 2.8.1 - '@angular/build@22.1.7(5190a317824aee1a651b1742edadba91)': + '@angular/build@22.1.8(6122bb84929f84cea625d49dcdbbd50e)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@babel/core': 8.0.1 '@babel/helper-annotate-as-pure': 8.0.0 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 6.1.1(@types/node@24.13.3) - '@vitejs/plugin-basic-ssl': 2.3.0(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0)) + '@inquirer/confirm': 6.1.1(@types/node@20.19.43) + '@vitejs/plugin-basic-ssl': 2.3.0(vite@8.1.5(@types/node@20.19.43)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0)) beasties: 0.4.3 browserslist: 4.28.8 esbuild: 0.28.2 @@ -11921,7 +11921,7 @@ snapshots: tinyglobby: 0.2.17 tslib: 2.8.1 typescript: 6.0.3 - vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0) + vite: 8.1.5(@types/node@20.19.43)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0) watchpack: 2.5.2 optionalDependencies: '@angular/core': link:packages/core @@ -11929,7 +11929,7 @@ snapshots: '@angular/platform-browser': link:packages/platform-browser '@angular/platform-server': link:packages/platform-server '@angular/service-worker': link:packages/service-worker - '@angular/ssr': 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) + '@angular/ssr': 22.1.8(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) istanbul-lib-instrument: 6.0.3(supports-color@11.0.0) karma: 6.4.4(bufferutil@4.1.0)(debug@4.4.3(supports-color@11.0.0))(supports-color@11.0.0)(utf-8-validate@6.0.6) less: 4.9.0(supports-color@11.0.0) @@ -11938,7 +11938,7 @@ snapshots: postcss: 8.5.26 rollup: 4.62.2 tailwindcss: 3.4.19(tsx@4.23.13)(yaml@2.9.0) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.1)(jiti@1.21.7)(jsdom@29.1.1)(less@4.9.0(supports-color@11.0.0))(sass@1.103.1)(tsx@4.23.13)(yaml@2.9.0) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@20.19.43)(esbuild@0.28.1)(jiti@1.21.7)(jsdom@29.1.1)(less@4.9.0(supports-color@11.0.0))(sass@1.103.1)(tsx@4.23.13)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -11953,10 +11953,10 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(57e4ee4e2aaa159d0a430f2ba59aadbf)': + '@angular/build@22.1.8(85d34a3d252fb0512d76ecbfd904c3a4)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@babel/core': 8.0.1 @@ -11991,7 +11991,7 @@ snapshots: '@angular/platform-browser': link:packages/platform-browser '@angular/platform-server': link:packages/platform-server '@angular/service-worker': link:packages/service-worker - '@angular/ssr': 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) + '@angular/ssr': 22.1.8(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) istanbul-lib-instrument: 6.0.3(supports-color@11.0.0) karma: 6.4.4(bufferutil@4.1.0)(debug@4.4.3(supports-color@11.0.0))(supports-color@11.0.0)(utf-8-validate@6.0.6) less: 4.9.0(supports-color@11.0.0) @@ -12015,17 +12015,17 @@ snapshots: - tsx - yaml - '@angular/build@22.1.7(dda021ede472fe157a0260afb7d3850a)': + '@angular/build@22.1.8(c92d653f22eb8fb62b98197465e620ce)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) '@angular/compiler': link:packages/compiler '@angular/compiler-cli': link:packages/compiler-cli '@babel/core': 8.0.1 '@babel/helper-annotate-as-pure': 8.0.0 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 6.1.1(@types/node@20.19.43) - '@vitejs/plugin-basic-ssl': 2.3.0(vite@8.1.5(@types/node@20.19.43)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0)) + '@inquirer/confirm': 6.1.1(@types/node@24.13.3) + '@vitejs/plugin-basic-ssl': 2.3.0(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0)) beasties: 0.4.3 browserslist: 4.28.8 esbuild: 0.28.2 @@ -12045,7 +12045,7 @@ snapshots: tinyglobby: 0.2.17 tslib: 2.8.1 typescript: 6.0.3 - vite: 8.1.5(@types/node@20.19.43)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0) + vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@1.21.7)(less@4.9.0(supports-color@11.0.0))(sass@1.101.0)(tsx@4.23.13)(yaml@2.9.0) watchpack: 2.5.2 optionalDependencies: '@angular/core': link:packages/core @@ -12053,7 +12053,7 @@ snapshots: '@angular/platform-browser': link:packages/platform-browser '@angular/platform-server': link:packages/platform-server '@angular/service-worker': link:packages/service-worker - '@angular/ssr': 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) + '@angular/ssr': 22.1.8(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router) istanbul-lib-instrument: 6.0.3(supports-color@11.0.0) karma: 6.4.4(bufferutil@4.1.0)(debug@4.4.3(supports-color@11.0.0))(supports-color@11.0.0)(utf-8-validate@6.0.6) less: 4.9.0(supports-color@11.0.0) @@ -12062,7 +12062,7 @@ snapshots: postcss: 8.5.26 rollup: 4.62.2 tailwindcss: 3.4.19(tsx@4.23.13)(yaml@2.9.0) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@20.19.43)(esbuild@0.28.1)(jiti@1.21.7)(jsdom@29.1.1)(less@4.9.0(supports-color@11.0.0))(sass@1.103.1)(tsx@4.23.13)(yaml@2.9.0) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.1)(jiti@1.21.7)(jsdom@29.1.1)(less@4.9.0(supports-color@11.0.0))(sass@1.103.1)(tsx@4.23.13)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -12087,15 +12087,15 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@22.1.7(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@11.0.0)': + '@angular/cli@22.1.8(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@11.0.0)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@20.19.43) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@20.19.43)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(@cfworker/json-schema@4.1.1)(supports-color@11.0.0) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -12109,15 +12109,15 @@ snapshots: - chokidar - supports-color - '@angular/cli@22.1.7(@cfworker/json-schema@4.1.1)(@types/node@24.13.3)(chokidar@5.0.0)(supports-color@11.0.0)': + '@angular/cli@22.1.8(@cfworker/json-schema@4.1.1)(@types/node@24.13.3)(chokidar@5.0.0)(supports-color@11.0.0)': dependencies: - '@angular-devkit/architect': 0.2201.7(chokidar@5.0.0) - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/architect': 0.2201.8(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) '@inquirer/prompts': 8.5.2(@types/node@24.13.3) '@listr2/prompt-adapter-inquirer': 4.2.5(@inquirer/prompts@8.5.2(@types/node@20.19.43))(@types/node@24.13.3)(listr2@11.0.0) '@modelcontextprotocol/sdk': 1.30.0(@cfworker/json-schema@4.1.1)(supports-color@11.0.0) - '@schematics/angular': 22.1.7(chokidar@5.0.0) + '@schematics/angular': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 listr2: 11.0.0 npm-package-arg: 14.0.0 @@ -12139,7 +12139,7 @@ snapshots: optionalDependencies: '@angular/compiler': link:packages/compiler - '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/4d97473116d000e3fd4d6f75ec98cbd67576fa6f': {} + '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35': {} '@angular/material@22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2)': dependencies: @@ -12151,7 +12151,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/2fe8cf97ca7d7f1616c3f29e910dde3a7ac5b981(@modelcontextprotocol/sdk@1.30.0(@cfworker/json-schema@4.1.1)(supports-color@11.0.0))': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/f166178ac5c37cd3aadab7b8cb7212f34d71b2a6(@modelcontextprotocol/sdk@1.30.0(@cfworker/json-schema@4.1.1)(supports-color@11.0.0))': dependencies: '@actions/core': 3.0.1 '@conventional-changelog/git-client': 3.1.2(conventional-commits-filter@6.0.1)(conventional-commits-parser@7.1.2) @@ -12211,7 +12211,7 @@ snapshots: - '@modelcontextprotocol/sdk' - '@react-native-async-storage/async-storage' - '@angular/ssr@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router)': + '@angular/ssr@22.1.8(@angular/common@packages+common)(@angular/core@packages+core)(@angular/platform-server@packages+platform-server)(@angular/router@packages+router)': dependencies: '@angular/common': link:packages/common '@angular/core': link:packages/core @@ -15226,10 +15226,10 @@ snapshots: '@napi-rs/lzma-linux-x64-gnu': 1.5.1 fsevents: 2.3.3 - '@schematics/angular@22.1.7(chokidar@5.0.0)': + '@schematics/angular@22.1.8(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 22.1.7(chokidar@5.0.0) - '@angular-devkit/schematics': 22.1.7(chokidar@5.0.0) + '@angular-devkit/core': 22.1.8(chokidar@5.0.0) + '@angular-devkit/schematics': 22.1.8(chokidar@5.0.0) jsonc-parser: 3.3.1 typescript: 6.0.3 transitivePeerDependencies: From 16c80643c719cb0250d8f780262c453020d1084d Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Tue, 8 Sep 2026 21:20:01 -0500 Subject: [PATCH 25/41] test(core): reduce fakeAsync usage in animation tests Use async/await in animation acceptance tests and share the animation frame helper. Remove the obsolete fakeAsync frame utility and its Bazel dependency. (cherry picked from commit c60c41e29aa175ca25b0e91a40f5ab115b46139f) --- packages/core/test/acceptance/BUILD.bazel | 1 - .../core/test/acceptance/animation_spec.ts | 628 +++++++++--------- .../core/test/animation_utils/BUILD.bazel | 14 - .../animation_utils/tick_animation_frames.ts | 14 - packages/private/testing/src/browser_utils.ts | 5 + 5 files changed, 317 insertions(+), 345 deletions(-) delete mode 100644 packages/core/test/animation_utils/BUILD.bazel delete mode 100644 packages/core/test/animation_utils/tick_animation_frames.ts diff --git a/packages/core/test/acceptance/BUILD.bazel b/packages/core/test/acceptance/BUILD.bazel index 9179e00a3dd5..a75785113650 100644 --- a/packages/core/test/acceptance/BUILD.bazel +++ b/packages/core/test/acceptance/BUILD.bazel @@ -27,7 +27,6 @@ ts_project( "//packages/core/primitives/signals", "//packages/core/src/di/interface", "//packages/core/src/util", - "//packages/core/test/animation_utils", "//packages/core/test/render3:matchers", "//packages/core/testing", "//packages/localize", diff --git a/packages/core/test/acceptance/animation_spec.ts b/packages/core/test/acceptance/animation_spec.ts index 268400ef93c1..784afafb9ecd 100644 --- a/packages/core/test/acceptance/animation_spec.ts +++ b/packages/core/test/acceptance/animation_spec.ts @@ -23,7 +23,6 @@ import { EnvironmentInjector, ErrorHandler, inject, - input, NgModule, OnDestroy, provideZonelessChangeDetection, @@ -33,13 +32,12 @@ import { ViewContainerRef, } from '@angular/core'; import {ComponentRef} from '@angular/core/src/render3'; -import {fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {TestBed} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {BrowserTestingModule, platformBrowserTesting} from '@angular/platform-browser/testing'; -import {isNode} from '@angular/private/testing'; +import {isNode, nextAnimationFrame, timeout} from '@angular/private/testing'; import {reusedNodes} from '../../src/animation/utils'; -import {tickAnimationFrames} from '../animation_utils/tick_animation_frames'; @NgModule({ providers: [provideZonelessChangeDetection()], @@ -88,7 +86,7 @@ describe('Animation', () => { } `; - it('should delay element removal when an animation is specified', fakeAsync(() => { + it('should delay element removal when an animation is specified', async () => { const logSpy = jasmine.createSpy('logSpy'); @Component({ changeDetection: ChangeDetectionStrategy.Eager, @@ -110,26 +108,26 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const paragragh = fixture.debugElement.query(By.css('p')); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.nativeElement.outerHTML).toContain('class="fade"'); - fixture.detectChanges(); + await fixture.whenStable(); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); expect(logSpy).toHaveBeenCalled(); - })); + }); - it('should remove right away when animations are disabled', fakeAsync(() => { + it('should remove right away when animations are disabled', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -144,15 +142,15 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(false); - tickAnimationFrames(1); - fixture.detectChanges(); + await nextAnimationFrame(); + await fixture.whenStable(); expect(cmp.show()).toBeFalsy(); expect(cmp.el).toBeUndefined(); - })); + }); - it('should remove right away when classes have no animations', fakeAsync(() => { + it('should remove right away when classes have no animations', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -168,15 +166,15 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(false); - tickAnimationFrames(1); - fixture.detectChanges(); + await nextAnimationFrame(); + await fixture.whenStable(); expect(cmp.show()).toBeFalsy(); expect(cmp.el).toBeUndefined(); - })); + }); - it('should support string arrays', fakeAsync(() => { + it('should support string arrays', async () => { const multiple = ` .slide-out { animation: slide-out 2ms; @@ -219,28 +217,28 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const paragragh = fixture.debugElement.query(By.css('p')); expect(fixture.nativeElement.outerHTML).not.toContain('class="slide-out fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.nativeElement.outerHTML).toContain('class="slide-out fade"'); - fixture.detectChanges(); + await fixture.whenStable(); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'slide-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('class="slide-out fade"'); - })); + }); - it('should support binding strings with spaces', fakeAsync(() => { + it('should support binding strings with spaces', async () => { const multiple = ` .slide-out { animation: slide-out 2ms; @@ -285,28 +283,28 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const paragragh = fixture.debugElement.query(By.css('p')); expect(fixture.nativeElement.outerHTML).not.toContain('class="slide-out fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.nativeElement.outerHTML).toContain('class="slide-out fade"'); - fixture.detectChanges(); + await fixture.whenStable(); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'slide-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('class="slide-out fade"'); - })); + }); - it('should support multiple classes as a single string with spaces', fakeAsync(() => { + it('should support multiple classes as a single string with spaces', async () => { const multiple = ` .slide-out { animation: slide-out 2ms; @@ -348,28 +346,28 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const paragragh = fixture.debugElement.query(By.css('p')); expect(fixture.nativeElement.outerHTML).not.toContain('class="slide-out fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.nativeElement.outerHTML).toContain('class="slide-out fade"'); - fixture.detectChanges(); + await fixture.whenStable(); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'slide-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('class="slide-out fade"'); - })); + }); - it('should support function syntax', fakeAsync(() => { + it('should support function syntax', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -389,15 +387,15 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); expect(fixture.debugElement.nativeElement.outerHTML).not.toContain('class="slide-in"'); - })); + }); - it('should be host bindable', fakeAsync(() => { + it('should be host bindable', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'fade-cmp', @@ -422,24 +420,24 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const fadeCmp = fixture.debugElement.query(By.css('fade-cmp')); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); expect(fixture.nativeElement.outerHTML).toContain('class="fade"'); - fixture.detectChanges(); + await fixture.whenStable(); fadeCmp.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); - })); + }); - it('should be host bindable with brackets', fakeAsync(() => { + it('should be host bindable with brackets', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'fade-cmp', @@ -466,24 +464,24 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const fadeCmp = fixture.debugElement.query(By.css('fade-cmp')); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); expect(fixture.nativeElement.outerHTML).toContain('class="fade"'); - fixture.detectChanges(); + await fixture.whenStable(); fadeCmp.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); - })); + }); - it('should be host bindable with events', fakeAsync(() => { + it('should be host bindable with events', async () => { const fadeCalled = jasmine.createSpy('fadeCalled'); @Component({ changeDetection: ChangeDetectionStrategy.Eager, @@ -515,16 +513,16 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(fadeCalled).toHaveBeenCalled(); - })); + }); it('should remove element from DOM with (animate.leave) after list reordering', async () => { @Component({ @@ -580,7 +578,7 @@ describe('Animation', () => { expect(elements.length).toBe(1); }); - it('should compose class list when host binding and regular binding', fakeAsync(() => { + it('should compose class list when host binding and regular binding', async () => { const multiple = ` .slide-out { animation: slide-out 2ms; @@ -632,14 +630,14 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const childCmp = fixture.debugElement.query(By.css('child-cmp')); expect(childCmp.nativeElement.className).not.toContain('fade'); expect(childCmp.nativeElement.className).not.toContain('slide-out'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); expect(childCmp.nativeElement.className).toContain('fade'); expect(childCmp.nativeElement.className).toContain('slide-out'); @@ -650,14 +648,14 @@ describe('Animation', () => { childCmp.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'slide-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('fade'); expect(fixture.nativeElement.outerHTML).not.toContain('slide-out'); expect(fixture.debugElement.query(By.css('child-cmp'))).toBeNull(); - })); + }); - it('should compose class list when host binding on a directive and regular binding', fakeAsync(() => { + it('should compose class list when host binding on a directive and regular binding', async () => { const multiple = ` .slide-out { animation: slide-out 2ms; @@ -714,27 +712,27 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const childCmp = fixture.debugElement.query(By.css('child-cmp')); expect(childCmp.nativeElement.className).not.toContain('slide-out'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(childCmp.nativeElement.className).toContain('slide-out'); - fixture.detectChanges(); + await fixture.whenStable(); childCmp.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'slide-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('slide-out'); expect(fixture.debugElement.query(By.css('child-cmp'))).toBeNull(); - })); + }); - it('should compose class list when host binding a string and regular class strings', fakeAsync(() => { + it('should compose class list when host binding a string and regular class strings', async () => { const multiple = ` .slide-out { animation: slide-out 2ms; @@ -783,17 +781,17 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const childCmp = fixture.debugElement.query(By.css('child-cmp')); expect(childCmp.nativeElement.className).not.toContain('slide-out fade'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(childCmp.nativeElement.className).toContain('slide-out fade'); - fixture.detectChanges(); + await fixture.whenStable(); childCmp.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), @@ -804,9 +802,9 @@ describe('Animation', () => { expect(fixture.nativeElement.outerHTML).not.toContain('slide-out fade '); expect(fixture.debugElement.query(By.css('child-cmp'))).toBeNull(); - })); + }); - it('should await the longest animation when multiple transitions are present', fakeAsync(() => { + it('should await the longest animation when multiple transitions are present', async () => { const multiple = ` .slide-out { grid-template-rows: 0fr; @@ -832,17 +830,17 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const div = fixture.debugElement.query(By.css('div')); expect(div.nativeElement.className).not.toContain('slide-out'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(div.nativeElement.className).toContain('slide-out'); - fixture.detectChanges(); + await fixture.whenStable(); div.nativeElement.dispatchEvent( new TransitionEvent('transitionend', {propertyName: 'opacity'}), @@ -859,12 +857,12 @@ describe('Animation', () => { div.nativeElement.dispatchEvent( new TransitionEvent('transitionend', {propertyName: 'grid-template-rows'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('slide-out'); expect(fixture.debugElement.query(By.css('div'))).toBeNull(); - })); + }); - it('should wait for the longest duplicate-named animation when getAnimations is empty', fakeAsync(() => { + it('should wait for the longest duplicate-named animation when getAnimations is empty', async () => { const multiple = ` .duplicate-animation-name { animation: @@ -896,17 +894,17 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const paragraph = fixture.debugElement.query(By.css('p')); const getAnimations = paragraph.nativeElement.getAnimations.bind(paragraph.nativeElement); spyOn(paragraph.nativeElement, 'getAnimations').and.returnValue([]); expect(paragraph.nativeElement.className).not.toContain('duplicate-animation-name'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalse(); - fixture.detectChanges(); + await fixture.whenStable(); expect(paragraph.nativeElement.className).toContain('duplicate-animation-name'); const [shortAnimation, longAnimation] = getAnimations(); @@ -917,14 +915,14 @@ describe('Animation', () => { }; dispatchAnimationEnd(shortAnimation); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).toContain('duplicate-animation-name'); dispatchAnimationEnd(longAnimation); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('duplicate-animation-name'); expect(fixture.debugElement.query(By.css('p'))).toBeNull(); - })); + }); describe('legacy animations compatibility', () => { beforeAll(() => { @@ -949,7 +947,7 @@ describe('Animation', () => { } `; - it('should have the same exact timing when AnimationsModule is present', fakeAsync(() => { + it('should have the same exact timing when AnimationsModule is present', async () => { const logSpy = jasmine.createSpy('logSpy'); @Component({ changeDetection: ChangeDetectionStrategy.Eager, @@ -971,24 +969,24 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const paragragh = fixture.debugElement.query(By.css('p')); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.nativeElement.outerHTML).toContain('class="fade"'); - fixture.detectChanges(); + await fixture.whenStable(); paragragh.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); - tick(); + await timeout(); expect(fixture.nativeElement.outerHTML).not.toContain('class="fade"'); expect(logSpy).toHaveBeenCalled(); - })); + }); }); }); @@ -1018,7 +1016,7 @@ describe('Animation', () => { } `; - it('should apply classes on entry when animation is specified with no control flow', fakeAsync(() => { + it('should apply classes on entry when animation is specified with no control flow', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1033,12 +1031,12 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.el.nativeElement.outerHTML).toContain('class="slide-in"'); - })); + }); - it('should call animation function on entry when animation is specified with no control flow', fakeAsync(() => { + it('should call animation function on entry when animation is specified with no control flow', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1057,12 +1055,12 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.count()).toBe(1); - })); + }); - it('should call animation function only once on entry when animation is specified with control flow', fakeAsync(() => { + it('should call animation function only once on entry when animation is specified with control flow', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1083,17 +1081,17 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.count()).toBe(0); cmp.show.update((s) => !s); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.count()).toBe(1); - })); + }); - it('should apply classes on entry when animation is specified', fakeAsync(() => { + it('should apply classes on entry when animation is specified', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1109,15 +1107,15 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); expect(cmp.el.nativeElement.outerHTML).toContain('class="slide-in"'); - })); + }); - it('should support binding syntax', fakeAsync(() => { + it('should support binding syntax', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1135,15 +1133,15 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); expect(cmp.el.nativeElement.outerHTML).toContain('class="slide-in"'); - })); + }); - it('should remove classes when animation is done', fakeAsync(() => { + it('should remove classes when animation is done', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1159,10 +1157,10 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraph = fixture.debugElement.query(By.css('p')); paragraph.nativeElement.dispatchEvent(new AnimationEvent('animationstart')); @@ -1171,9 +1169,9 @@ describe('Animation', () => { new AnimationEvent('animationend', {animationName: 'slide-in'}), ); expect(cmp.el.nativeElement.outerHTML).not.toContain('class="slide-in"'); - })); + }); - it('should support function syntax', fakeAsync(() => { + it('should support function syntax', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1193,10 +1191,10 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); const paragraph = fixture.debugElement.query(By.css('p')); expect(cmp.el.nativeElement.outerHTML).toContain('class="slide-in"'); @@ -1205,9 +1203,9 @@ describe('Animation', () => { new AnimationEvent('animationend', {animationName: 'fade-in'}), ); expect(cmp.el.nativeElement.outerHTML).not.toContain('class="slide-in fade-in"'); - })); + }); - it('should support string arrays', fakeAsync(() => { + it('should support string arrays', async () => { const multiple = ` .slide-in { animation: slide-in 1ms; @@ -1249,11 +1247,11 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); expect(cmp.show()).toBeFalsy(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraph = fixture.debugElement.query(By.css('p')); expect(cmp.show()).toBeTruthy(); expect(cmp.el.nativeElement.outerHTML).toContain('class="slide-in fade-in"'); @@ -1262,9 +1260,9 @@ describe('Animation', () => { new AnimationEvent('animationend', {animationName: 'fade-in'}), ); expect(cmp.el.nativeElement.outerHTML).not.toContain('class="slide-in fade-in"'); - })); + }); - it('should support binding to a string with a space', fakeAsync(() => { + it('should support binding to a string with a space', async () => { const multiple = ` .slide-in { animation: slide-in 1ms; @@ -1308,11 +1306,11 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); expect(cmp.show()).toBeFalsy(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraph = fixture.debugElement.query(By.css('p')); expect(cmp.show()).toBeTruthy(); expect(cmp.el.nativeElement.outerHTML).toContain('class="slide-in fade-in"'); @@ -1321,9 +1319,9 @@ describe('Animation', () => { new AnimationEvent('animationend', {animationName: 'fade-in'}), ); expect(cmp.el.nativeElement.outerHTML).not.toContain('class="slide-in fade-in"'); - })); + }); - it('should support multiple classes as a single string separated by a space', fakeAsync(() => { + it('should support multiple classes as a single string separated by a space', async () => { const multiple = ` .slide-in { animation: slide-in 1ms; @@ -1364,10 +1362,10 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); expect(cmp.el.nativeElement.outerHTML).toContain('class="slide-in fade-in"'); const paragraph = fixture.debugElement.query(By.css('p')); @@ -1380,9 +1378,9 @@ describe('Animation', () => { ); expect(fixture.debugElement.nativeElement.className).not.toContain('fade-in'); expect(fixture.debugElement.nativeElement.className).not.toContain('slide-in'); - })); + }); - it('should remove right away when animations are disabled', fakeAsync(() => { + it('should remove right away when animations are disabled', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1397,14 +1395,14 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); + await fixture.whenStable(); expect(cmp.show()).toBeTruthy(); expect(cmp.el.nativeElement.outerHTML).not.toContain('class="slide-in"'); - })); + }); - it('should remove right away when no classes have animations', fakeAsync(() => { + it('should remove right away when no classes have animations', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -1420,15 +1418,15 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); expect(cmp.el.nativeElement.outerHTML).not.toContain('class="not-a-class"'); - })); + }); - it('should be host bindable', fakeAsync(() => { + it('should be host bindable', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'child-cmp', @@ -1451,8 +1449,8 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestComponent); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(fixture.debugElement.nativeElement.outerHTML).toContain('class="slide-in"'); const paragraph = fixture.debugElement.query(By.css('p')); @@ -1461,9 +1459,9 @@ describe('Animation', () => { new AnimationEvent('animationend', {animationName: 'slide-in'}), ); expect(fixture.debugElement.nativeElement.outerHTML).toContain('class="slide-in"'); - })); + }); - it('should be host bindable with brackets', fakeAsync(() => { + it('should be host bindable with brackets', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'child-cmp', @@ -1487,8 +1485,8 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestComponent); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(fixture.debugElement.nativeElement.outerHTML).toContain('class="slide-in"'); const paragraph = fixture.debugElement.query(By.css('p')); @@ -1497,9 +1495,9 @@ describe('Animation', () => { new AnimationEvent('animationend', {animationName: 'slide-in'}), ); expect(fixture.debugElement.nativeElement.outerHTML).toContain('class="slide-in"'); - })); + }); - it('should be host bindable with events', fakeAsync(() => { + it('should be host bindable with events', async () => { const slideInCalled = jasmine.createSpy('slideInCalled'); @Component({ changeDetection: ChangeDetectionStrategy.Eager, @@ -1534,11 +1532,11 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestComponent); - fixture.detectChanges(); + await fixture.whenStable(); expect(slideInCalled).toHaveBeenCalled(); - })); + }); - it('should compose class list when host binding and regular binding', fakeAsync(() => { + it('should compose class list when host binding and regular binding', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'child-cmp', @@ -1564,12 +1562,12 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestComponent); - fixture.detectChanges(); + await fixture.whenStable(); const childCmp = fixture.debugElement.query(By.css('child-cmp')); expect(childCmp.nativeElement.className).toContain('slide-in'); expect(childCmp.nativeElement.className).toContain('fade-in'); - tickAnimationFrames(1); + await nextAnimationFrame(); childCmp.nativeElement.dispatchEvent(new AnimationEvent('animationstart')); childCmp.nativeElement.dispatchEvent( @@ -1580,9 +1578,9 @@ describe('Animation', () => { ); expect(childCmp.nativeElement.className).not.toContain('slide-in'); expect(childCmp.nativeElement.className).not.toContain('fade-in'); - })); + }); - it('should compose class list when host binding a string and regular class strings', fakeAsync(() => { + it('should compose class list when host binding a string and regular class strings', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'child-cmp', @@ -1604,8 +1602,8 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestComponent); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const childCmp = fixture.debugElement.query(By.css('child-cmp')); expect(childCmp.nativeElement.className).toContain('slide-in fade-in'); @@ -1616,11 +1614,11 @@ describe('Animation', () => { childCmp.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'slide-in'}), ); - fixture.detectChanges(); + await fixture.whenStable(); expect(childCmp.nativeElement.className).not.toContain('slide-in fade-in'); - })); + }); - it('should reset leave animation and not duplicate node when toggled quickly', fakeAsync(() => { + it('should reset leave animation and not duplicate node when toggled quickly', async () => { const animateStyles = ` .slide-in { animation: slide-in 500ms; @@ -1662,26 +1660,26 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); cmp.show.set(true); - fixture.detectChanges(); + await fixture.whenStable(); expect(cmp.show()).toBeTruthy(); cmp.show.set(false); - tickAnimationFrames(1); - fixture.detectChanges(); + await nextAnimationFrame(); + await fixture.whenStable(); expect(cmp.show()).toBeFalsy(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraphs = fixture.debugElement.queryAll(By.css('p')); expect(paragraphs.length).toBe(1); - })); + }); - it('should reset leave animation and not duplicate node when toggled quickly using event bindings', fakeAsync(() => { + it('should reset leave animation and not duplicate node when toggled quickly using event bindings', async () => { const animateStyles = ` .slide-in { animation: slide-in 500ms; @@ -1733,25 +1731,25 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); cmp.show.set(false); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeFalsy(); cmp.show.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(cmp.show()).toBeTruthy(); const paragraphs = fixture.debugElement.queryAll(By.css('p')); expect(paragraphs.length).toBe(1); - })); + }); - it('should reset leave animation and not duplicate node when toggled programmatically very quickly', fakeAsync(() => { + it('should reset leave animation and not duplicate node when toggled programmatically very quickly', async () => { const animateStyles = ` .fade { animation: fade-out 500ms; @@ -1795,13 +1793,13 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; cmp.toggle(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraphs = fixture.debugElement.queryAll(By.css('p')); expect(paragraphs.length).toBe(1); - })); + }); - it('should always run animations for `@for` loops when adding and removing quickly', fakeAsync(() => { + it('should always run animations for `@for` loops when adding and removing quickly', async () => { const animateStyles = ` .slide-in { animation: slide-in 500ms; @@ -1855,8 +1853,8 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraphs = fixture.debugElement.queryAll(By.css('p')); paragraphs.forEach((p) => { p.nativeElement.dispatchEvent(new AnimationEvent('animationstart')); @@ -1866,15 +1864,15 @@ describe('Animation', () => { }); cmp.addremove(); fixture.changeDetectorRef.markForCheck(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(fixture.debugElement.queryAll(By.css('p.fade')).length).toBe(1); expect(fixture.debugElement.queryAll(By.css('p.slide-in')).length).toBe(1); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(4); - })); + }); - it('should run leave and enter animations for `@for` loops when adding / removing simultaneously', fakeAsync(() => { + it('should run leave and enter animations for `@for` loops when adding / removing simultaneously', async () => { const animateStyles = ` .slide-in { animation: slide-in 500ms; @@ -1926,8 +1924,8 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraphs = fixture.debugElement.queryAll(By.css('p')); paragraphs.forEach((p) => { p.nativeElement.dispatchEvent(new AnimationEvent('animationstart')); @@ -1936,8 +1934,8 @@ describe('Animation', () => { ); }); cmp.addremove(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const first = fixture.debugElement.query(By.css('p#item-1')); const last = fixture.debugElement.query(By.css('p#item-4')); @@ -1952,16 +1950,16 @@ describe('Animation', () => { first.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); - fixture.detectChanges(); - tickAnimationFrames(1); - tick(); + await fixture.whenStable(); + await nextAnimationFrame(); + await timeout(); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(3); expect(fixture.debugElement.queryAll(By.css('p.slide-in')).length).toBe(0); expect(fixture.debugElement.queryAll(By.css('p.fade')).length).toBe(0); - })); + }); - it('should run leave and enter animations for `@for` loops when adding / removing simultaneously with leave function', fakeAsync(() => { + it('should run leave and enter animations for `@for` loops when adding / removing simultaneously with leave function', async () => { const animateStyles = ` .slide-in { animation: slide-in 500ms; @@ -2018,8 +2016,8 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraphs = fixture.debugElement.queryAll(By.css('p')); paragraphs.forEach((p) => { p.nativeElement.dispatchEvent(new AnimationEvent('animationstart')); @@ -2028,8 +2026,8 @@ describe('Animation', () => { ); }); cmp.addremove(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const first = fixture.debugElement.query(By.css('p#item-1')); const last = fixture.debugElement.query(By.css('p#item-4')); @@ -2044,16 +2042,16 @@ describe('Animation', () => { first.nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); - fixture.detectChanges(); - tickAnimationFrames(1); - tick(); + await fixture.whenStable(); + await nextAnimationFrame(); + await timeout(); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(3); expect(fixture.debugElement.queryAll(By.css('p.slide-in')).length).toBe(0); expect(fixture.debugElement.queryAll(By.css('p.fade')).length).toBe(0); - })); + }); - it('should always run animations for custom repeater loops when adding and removing quickly', fakeAsync(() => { + it('should always run animations for custom repeater loops when adding and removing quickly', async () => { const animateStyles = ` .slide-in { animation: slide-in 500ms; @@ -2108,8 +2106,8 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const paragraphs = fixture.debugElement.queryAll(By.css('p')); paragraphs.forEach((p) => { p.nativeElement.dispatchEvent(new AnimationEvent('animationstart')); @@ -2119,15 +2117,15 @@ describe('Animation', () => { }); cmp.addremove(); fixture.changeDetectorRef.markForCheck(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(fixture.debugElement.queryAll(By.css('p.fade')).length).toBe(1); expect(fixture.debugElement.queryAll(By.css('p.slide-in')).length).toBe(1); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(4); - })); + }); - it('should only remove one element in reactive `@for` loops when removing the second to last item', fakeAsync(() => { + it('should only remove one element in reactive `@for` loops when removing the second to last item', async () => { const animateStyles = ` .fade { animation: fade-out 500ms; @@ -2173,10 +2171,10 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.removeSecondToLast(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); expect(fixture.debugElement.queryAll(By.css('p.fade')).length).toBe(1); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(4); @@ -2185,11 +2183,11 @@ describe('Animation', () => { .nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out'}), ); - tick(); + await timeout(); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(3); - })); + }); - it('should not remove elements when swapping or moving nodes', fakeAsync(() => { + it('should not remove elements when swapping or moving nodes', async () => { const animateSpy = jasmine.createSpy('animateSpy'); @Component({ changeDetection: ChangeDetectionStrategy.Eager, @@ -2226,12 +2224,12 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; cmp.shuffle(); - fixture.detectChanges(); + await fixture.whenStable(); expect(animateSpy).not.toHaveBeenCalled(); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(3); - })); + }); - it('should not remove elements when child element animations finish', fakeAsync(() => { + it('should not remove elements when child element animations finish', async () => { const animateStyles = ` .fade { animation: fade-out 500ms; @@ -2285,30 +2283,30 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.flash(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); fixture.debugElement .query(By.css('button')) .nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'flash', bubbles: true}), ); - tick(); + await timeout(); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(1); fixture.debugElement .query(By.css('p')) .nativeElement.dispatchEvent( new AnimationEvent('animationend', {animationName: 'fade-out', bubbles: true}), ); - tick(); + await timeout(); expect(fixture.debugElement.queryAll(By.css('p')).length).toBe(0); - })); + }); }); describe('animation queue timing', () => { - it('should run animations with a fresh componentRef after destroy', fakeAsync(() => { + it('should run animations with a fresh componentRef after destroy', async () => { @Component({ selector: 'app-control-panel', template: ` @@ -2376,37 +2374,37 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.debugElement.query(By.css('p.all-there-is'))).not.toBeNull(); expect(fixture.debugElement.query(By.css('p.not-here.fade-out'))).not.toBeNull(); // Finish the leave animation to ensure it is removed - tickAnimationFrames(1); + await nextAnimationFrame(); // verify element is removed post animation expect(fixture.debugElement.query(By.css('p.not-here'))).toBeNull(); cmp.toggleOverlay(); - fixture.detectChanges(); + await fixture.whenStable(); // show is false. Nothing should be present. expect(fixture.debugElement.query(By.css('p.all-there-is'))).toBeNull(); expect(fixture.debugElement.query(By.css('p.not-here'))).toBeNull(); cmp.toggleOverlay(); - fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.debugElement.query(By.css('p.not-here'))).not.toBeNull(); - tickAnimationFrames(1); + await nextAnimationFrame(); // show is true. Only one element should be present. expect(fixture.debugElement.query(By.css('p.all-there-is'))).not.toBeNull(); expect(fixture.debugElement.query(By.css('p.not-here'))).toBeNull(); - })); + }); - it('should not throw INJECTOR_ALREADY_DESTROYED when lView injector is destroyed before animation queue runs', fakeAsync(() => { + it('should not throw INJECTOR_ALREADY_DESTROYED when lView injector is destroyed before animation queue runs', async () => { const animateStyles = ` .fade-out { animation: fade-out 100ms; @@ -2449,8 +2447,7 @@ describe('Animation', () => { hostElement: hostEl, }); appRef.attachView(compRef.hostView); - appRef.tick(); - tickAnimationFrames(1); + await appRef.whenStable(); expect(hostEl.querySelector('.item')).not.toBeNull(); @@ -2464,16 +2461,16 @@ describe('Animation', () => { // destroyed while leave animations are pending. childEnvInjector.destroy(); - // Tick to flush the animation queue. Without the fix, the animation + // Wait for the animation queue to flush. Without the fix, the animation // function would call lView[INJECTOR].get(NgZone) which delegates to // the destroyed childEnvInjector, throwing NG0205. - appRef.tick(); - tickAnimationFrames(1); + await appRef.whenStable(); + await nextAnimationFrame(); expect(errorHandler.handleError).not.toHaveBeenCalled(); - })); + }); - it('should not wait for child component leave animations when host is inside an ng-container', fakeAsync(() => { + it('should not wait for child component leave animations when host is inside an ng-container', async () => { const animateStyles = ` .fade-out { animation: fade-out 5000ms; @@ -2509,26 +2506,25 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestCmp); const cmp = fixture.componentInstance; - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); expect(fixture.debugElement.query(By.css('.child'))).not.toBeNull(); cmp.show.set(false); - fixture.detectChanges(); + await fixture.whenStable(); // If the bounding logic works, the ng-container (TNodeType.ElementContainer) // containing the child component will NOT recurse into the child component's // views, so the parent host will be removed immediately without waiting // for the child's 5000ms animation. - tickAnimationFrames(1); + await nextAnimationFrame(); expect(fixture.debugElement.query(By.css('.child'))).toBeNull(); - })); + }); }); describe('animation element duplication', () => { - it('should not duplicate elements when using dynamic components in overlay-like containers', fakeAsync(() => { + it('should not duplicate elements when using dynamic components in overlay-like containers', async () => { const animateStyles = ` .example-menu { display: inline-flex; @@ -2612,7 +2608,7 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestComponent); - fixture.detectChanges(); + await fixture.whenStable(); const cmp = fixture.debugElement.query(By.css('dynamic-menu')).componentInstance; @@ -2620,35 +2616,35 @@ describe('Animation', () => { const countMenus = () => document.querySelectorAll('.example-menu').length; // Helper to complete the leave animation for all leaving menu elements - const finishLeaveAnimations = () => { - tickAnimationFrames(1); + const finishLeaveAnimations = async () => { + await nextAnimationFrame(); document.querySelectorAll('.example-menu.close').forEach((el) => { el.dispatchEvent(new AnimationEvent('animationend', {animationName: 'open'})); }); - tick(); + await timeout(); }; // Simulate rapid clicking with CD between each toggle for (let i = 0; i < 20; i++) { cmp.toggle(); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); // At no point should there be more than one menu element expect(countMenus()).toBeLessThanOrEqual(1); } // Complete any remaining leave animations - finishLeaveAnimations(); - fixture.detectChanges(); + await finishLeaveAnimations(); + await fixture.whenStable(); // 20 toggles (even) = closed = 0 elements expect(countMenus()).toBe(0); // Clean up overlay panes document.querySelectorAll('.overlay-pane').forEach((p) => p.remove()); - })); + }); - it('should run animate.leave for a sibling instance when another instance of the same template enters', fakeAsync(() => { + it('should run animate.leave for a sibling instance when another instance of the same template enters', async () => { // Regression test for a case where two *separate* instances of the same // component (which therefore share a `TNode`) are toggled in the same // change-detection tick: one panel collapses (`animate.leave`) while a @@ -2712,13 +2708,13 @@ describe('Animation', () => { TestBed.configureTestingModule({animationsEnabled: true}); const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.a.id = 'A'; cmp.b.id = 'B'; // Initially only A is open. cmp.a.open.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); const panels = () => Array.from(fixture.nativeElement.querySelectorAll('.panel')); const panelByText = (text: string) => @@ -2735,8 +2731,8 @@ describe('Animation', () => { // but live in different DOM parents (their respective hosts). cmp.a.open.set(false); cmp.b.open.set(true); - fixture.detectChanges(); - tickAnimationFrames(1); + await fixture.whenStable(); + await nextAnimationFrame(); // B's panel should have entered. expect(panelByText('Panel B')).toBeTruthy(); @@ -2748,13 +2744,13 @@ describe('Animation', () => { // Once A's leave animation completes, it is removed as usual. leavingPanelA.dispatchEvent(new AnimationEvent('animationend', {animationName: 'shrink'})); - tickAnimationFrames(1); - fixture.detectChanges(); + await nextAnimationFrame(); + await fixture.whenStable(); expect(leavingPanelA.isConnected).toBe(false); expect(panelByText('Panel A')).toBeUndefined(); expect(panelByText('Panel B')).toBeTruthy(); - })); + }); }); describe('infinite animations', () => { @@ -2768,7 +2764,7 @@ describe('Animation', () => { } `; - it('should ignore infinite animations during animate.leave and remove element immediately', fakeAsync(() => { + it('should ignore infinite animations during animate.leave and remove element immediately', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -2786,24 +2782,24 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); const paragraph = fixture.debugElement.query(By.css('p')); expect(paragraph).toBeTruthy(); cmp.show.set(false); - fixture.detectChanges(); + await fixture.whenStable(); // Simulate a frame. If the animation is ignored, it should be removed already. // If it's NOT ignored, it will wait for the animation (forever). - tickAnimationFrames(1); - fixture.detectChanges(); + await nextAnimationFrame(); + await fixture.whenStable(); // The element should be removed if infinite animations are ignored. expect(cmp.show()).toBeFalsy(); expect(fixture.debugElement.query(By.css('p'))).toBeNull(); - })); + }); - it('should ignore infinite animations during animate.enter and remove classes immediately', fakeAsync(() => { + it('should ignore infinite animations during animate.enter and remove classes immediately', async () => { @Component({ changeDetection: ChangeDetectionStrategy.Eager, selector: 'test-cmp', @@ -2821,21 +2817,21 @@ describe('Animation', () => { const fixture = TestBed.createComponent(TestComponent); const cmp = fixture.componentInstance; - fixture.detectChanges(); + await fixture.whenStable(); cmp.show.set(true); - fixture.detectChanges(); + await fixture.whenStable(); // Check that class is added initially (maybe?) let paragraph = fixture.debugElement.query(By.css('p')); expect(paragraph.nativeElement.classList.contains('infinite-anim')).toBe(true); // Simulate a frame. If ignored, class should be removed immediately. - tickAnimationFrames(1); - fixture.detectChanges(); + await nextAnimationFrame(); + await fixture.whenStable(); paragraph = fixture.debugElement.query(By.css('p')); expect(paragraph.nativeElement.classList.contains('infinite-anim')).toBe(false); - })); + }); }); }); diff --git a/packages/core/test/animation_utils/BUILD.bazel b/packages/core/test/animation_utils/BUILD.bazel deleted file mode 100644 index 6415cc1a32d9..000000000000 --- a/packages/core/test/animation_utils/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("//tools:defaults.bzl", "ts_project") - -package(default_visibility = ["//visibility:public"]) - -ts_project( - name = "animation_utils", - testonly = True, - srcs = [ - "tick_animation_frames.ts", - ], - deps = [ - "//packages/core/testing", - ], -) diff --git a/packages/core/test/animation_utils/tick_animation_frames.ts b/packages/core/test/animation_utils/tick_animation_frames.ts deleted file mode 100644 index f50c55888fc3..000000000000 --- a/packages/core/test/animation_utils/tick_animation_frames.ts +++ /dev/null @@ -1,14 +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 {tick} from '@angular/core/testing'; - -/** Ticks the specified amount of `requestAnimationFrame`-s. */ -export function tickAnimationFrames(amount: number) { - tick(16.6 * amount); // Angular turns rAF calls into 16.6ms timeouts in tests. -} diff --git a/packages/private/testing/src/browser_utils.ts b/packages/private/testing/src/browser_utils.ts index 69c42ec84cee..0681cf8ea531 100644 --- a/packages/private/testing/src/browser_utils.ts +++ b/packages/private/testing/src/browser_utils.ts @@ -9,6 +9,11 @@ import {ɵgetDOM as getDOM} from '@angular/common'; import {NgZone} from '@angular/core'; +/** Waits for callbacks queued for the next animation frame to run. */ +export function nextAnimationFrame(): Promise { + return new Promise((resolve) => requestAnimationFrame(() => resolve())); +} + export function dispatchEvent(element: any, eventType: any): Event { const evt: Event = getDOM().getDefaultDocument().createEvent('Event'); evt.initEvent(eventType, true, true); From 75cbcde3a4ae3313b14486ad0736ce0a8b0a7beb Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 16 Sep 2026 09:39:08 +0000 Subject: [PATCH 26/41] build: update cross-repo angular dependencies See associated pull request for more information. --- .github/workflows/adev-preview-build.yml | 8 +-- .github/workflows/adev-preview-deploy.yml | 2 +- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/benchmark-compare.yml | 4 +- .github/workflows/ci.yml | 50 ++++++++--------- .github/workflows/dev-infra.yml | 6 +- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/merge-ready-status.yml | 2 +- .github/workflows/perf.yml | 6 +- .github/workflows/pr.yml | 40 ++++++------- .github/workflows/release.yml | 2 +- MODULE.bazel | 6 +- MODULE.bazel.lock | 50 ++++++++--------- adev/package.json | 6 +- integration/animations/package.json | 2 +- integration/animations/pnpm-lock.yaml | 10 ++-- package.json | 6 +- pnpm-lock.yaml | 56 +++++++++---------- 18 files changed, 130 insertions(+), 130 deletions(-) diff --git a/.github/workflows/adev-preview-build.yml b/.github/workflows/adev-preview-build.yml index 1a9673232496..1030ebc53fd3 100644 --- a/.github/workflows/adev-preview-build.yml +++ b/.github/workflows/adev-preview-build.yml @@ -21,17 +21,17 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'adev: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev # `snapshot-build` config is used to stamp the exact version with sha in the footer. run: pnpm bazel build //adev:build.production --config=snapshot-build - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: workflow-artifact-name: 'adev-preview' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/adev-preview-deploy.yml b/.github/workflows/adev-preview-deploy.yml index 24a4381811f1..515cc0e480f4 100644 --- a/.github/workflows/adev-preview-deploy.yml +++ b/.github/workflows/adev-preview-deploy.yml @@ -46,7 +46,7 @@ jobs: npx -y firebase-tools@15.15.0 target:clear --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs npx -y firebase-tools@15.15.0 target:apply --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'adev-preview' diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index c68a0aaede73..a9cb3f227084 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -18,6 +18,6 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/branch-manager@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/benchmark-compare.yml b/.github/workflows/benchmark-compare.yml index 18244bf80fb3..533038e4d1ab 100644 --- a/.github/workflows/benchmark-compare.yml +++ b/.github/workflows/benchmark-compare.yml @@ -50,9 +50,9 @@ jobs: - run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: bazelrc: ./.bazelrc.user diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7099e881c83..396639182249 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@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -41,13 +41,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -69,11 +69,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -85,11 +85,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -102,11 +102,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -121,11 +121,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -138,11 +138,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - run: echo "https://${{secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN}}:@github.com" > ${HOME}/.git_credentials @@ -154,11 +154,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -198,11 +198,11 @@ jobs: runs-on: ubuntu-latest-8core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Build adev diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 83e19f03bbe3..544a3e2793a9 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -16,7 +16,7 @@ jobs: if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/labeling/pull-request@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/labeling/pull-request@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} labels: '{"requires: TGP": ["packages/core/primitives/**/{*,.*}"]}' @@ -24,14 +24,14 @@ jobs: if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/post-approval-changes@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/post-approval-changes@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} issue_labels: if: github.event_name == 'issues' runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/labeling/issue@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/labeling/issue@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} google-generative-ai-key: ${{ secrets.GOOGLE_GENERATIVE_AI_KEY }} diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index 0a1018524f07..2f7468af0374 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: angular/dev-infra/github-actions/google-internal-tests@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/google-internal-tests@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: run-tests-guide-url: http://go/angular-g3sync-start github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/merge-ready-status.yml b/.github/workflows/merge-ready-status.yml index 9dd52ac37a9f..437c68a62017 100644 --- a/.github/workflows/merge-ready-status.yml +++ b/.github/workflows/merge-ready-status.yml @@ -11,6 +11,6 @@ jobs: status: runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/unified-status-check@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + - uses: angular/dev-infra/github-actions/unified-status-check@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/perf.yml b/.github/workflows/perf.yml index bf01dbf5374a..18c4b727573a 100644 --- a/.github/workflows/perf.yml +++ b/.github/workflows/perf.yml @@ -20,7 +20,7 @@ jobs: workflows: ${{ steps.workflows.outputs.workflows }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - 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@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - 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 65c25418e517..c20f7773bf6f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Check code lint @@ -39,7 +39,7 @@ jobs: - name: Check code format 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@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/linting/licenses@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: allow-dependencies-licenses: 'pkg:npm/google-protobuf@' @@ -47,13 +47,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main with: disable-package-manager-cache: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run unit tests @@ -73,11 +73,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run CI tests for framework @@ -97,11 +97,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel Remote Caching - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration CI tests for framework @@ -112,11 +112,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -129,11 +129,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -144,11 +144,11 @@ jobs: labels: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/setup@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/github-actions/bazel/configure-remote@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main - name: Install node modules run: pnpm install --frozen-lockfile - run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dd96257f82fe..e7132bac5e19 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ permissions: jobs: release: - uses: angular/dev-infra/.github/workflows/reusable-release.yml@cde7ad16c16f5c7dbd57b62e8b930443813484ec # main + uses: angular/dev-infra/.github/workflows/reusable-release.yml@253d7e1b16eac44a903e67c2b9e3755a20a28967 # main secrets: wombot-token: ${{ secrets.WOMBOT_TOKEN }} angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/MODULE.bazel b/MODULE.bazel index a5d084d19660..d2b17f4a8fda 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -18,14 +18,14 @@ bazel_dep(name = "yq.bzl", version = "0.4.0") bazel_dep(name = "rules_angular") git_override( module_name = "rules_angular", - commit = "5fa856469c642490a6e381a05d7f58f60fad1913", + commit = "3f933b9dde5139e67575b6c2437c854986ecd10a", remote = "https://github.com/angular/rules_angular.git", ) bazel_dep(name = "devinfra") git_override( module_name = "devinfra", - commit = "cde7ad16c16f5c7dbd57b62e8b930443813484ec", + commit = "253d7e1b16eac44a903e67c2b9e3755a20a28967", remote = "https://github.com/angular/dev-infra.git", ) @@ -39,7 +39,7 @@ git_override( bazel_dep(name = "rules_browsers") git_override( module_name = "rules_browsers", - commit = "c37398d63f5e990d618d02f4c6fb2fefe40f1a79", + commit = "f87a5f7fc587219ff328da2972e06370f297a621", remote = "https://github.com/angular/rules_browsers.git", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 9b84459fc099..349b8c0857eb 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -433,16 +433,16 @@ }, "@@rules_browsers+//browsers:extensions.bzl%browsers": { "general": { - "bzlTransitiveDigest": "eNfcpVF2YJFb8xQfN64Y9PQgMrXYK0ju3uglArt8IO8=", + "bzlTransitiveDigest": "jwGo+QiVY+i/AnJLUkEJ+vaplFYfygil2SJt8C7kM5o=", "usagesDigest": "FmXYJVoVJlnfUU8x8gObSvu4qWcco/9Faw61aC/wBF0=", "recordedInputs": [], "generatedRepoSpecs": { "rules_browsers_chrome_linux": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "ad2e73e1e42c0831930dfd02d4aa8653a5f23f60b0376a5d76ddf8ecd7a41e4b", + "sha256": "11d48f3e2ee11fc2a53a230eb364b2becc44c1b67a7aa4683edb7cb8a950b6ab", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/linux64/chrome-headless-shell-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/linux64/chrome-headless-shell-linux64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell" @@ -458,9 +458,9 @@ "rules_browsers_chrome_mac": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "d66b730ed9760ae88b83aca1fa89351ac027ede430be4f5283fabd156198762d", + "sha256": "42c60eb1793fe76aabf19664b03c299170e5de53baa23ae72578f063dc9b2614", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/mac-x64/chrome-headless-shell-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/mac-x64/chrome-headless-shell-mac-x64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell" @@ -476,9 +476,9 @@ "rules_browsers_chrome_mac_arm": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "44c784c59af60ef62233b6100820ebb8b158e7d105b96c684818f007d6576848", + "sha256": "4afc1dbaeea03ad545b434c0f9eba50af326923fc265bc25927b3b4c7d9ca377", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell" @@ -494,9 +494,9 @@ "rules_browsers_chrome_win64": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "996537a6c3d31bb5c75ef328af5d4827b5f92c4a36ff7ea250e437eadf46eac0", + "sha256": "9de8381d4ca9c9f0471fd1cce15e44146328c3e11f55fec43cd667ae1a5bd482", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/win64/chrome-headless-shell-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/win64/chrome-headless-shell-win64.zip" ], "named_files": { "CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe" @@ -512,9 +512,9 @@ "rules_browsers_chromedriver_linux": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "f1db8caff52251dec46117a2f518a74cd1e4a2abadcbecc0d5bdd49e42175afa", + "sha256": "29be812bf4392619d06dfb5716d2bf9d72a278304670a594e3977d4c2cce7502", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/linux64/chromedriver-linux64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/linux64/chromedriver-linux64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-linux64/chromedriver" @@ -528,9 +528,9 @@ "rules_browsers_chromedriver_mac": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "5062675bc868f3f6a1e4850cab72b736a5c17f98f01d610736b8d0a6e009bf54", + "sha256": "d4dc141aadd9525e67c92fc78ec65e2926226c436eca7d90e39cdc813726513d", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/mac-x64/chromedriver-mac-x64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/mac-x64/chromedriver-mac-x64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-x64/chromedriver" @@ -544,9 +544,9 @@ "rules_browsers_chromedriver_mac_arm": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "04f07a2a13e969f120dbea61eef291dc4e20617a6d424dec20e90f903da0263b", + "sha256": "984056c6d3dd189569cc89affd28564a9de949d58297279fc23a045c8fc53080", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/mac-arm64/chromedriver-mac-arm64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/mac-arm64/chromedriver-mac-arm64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver" @@ -560,9 +560,9 @@ "rules_browsers_chromedriver_win64": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "7701074890112ed3b780af26104cb9f57ce68e229ca3076bfade6a1af93730d7", + "sha256": "a5bcbd013b64e6a15acc84c164fe974d0f1a58d4e061fba79d24b31cced64d88", "urls": [ - "https://storage.googleapis.com/chrome-for-testing-public/155.0.8043.0/win64/chromedriver-win64.zip" + "https://storage.googleapis.com/chrome-for-testing-public/156.0.8060.2/win64/chromedriver-win64.zip" ], "named_files": { "CHROMEDRIVER": "chromedriver-win64/chromedriver.exe" @@ -576,9 +576,9 @@ "rules_browsers_firefox_linux": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "fd9ec3f5f113d0825ca0bd1ab3c0756fbc40241034eefce6743be953bcca7473", + "sha256": "1d44cd02351c307c3e19061ea2a4d18a30f236e6be862b94f2282564afdb0167", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/155.0/linux-x86_64/en-US/firefox-155.0.tar.xz" + "https://archive.mozilla.org/pub/firefox/releases/156.0/linux-x86_64/en-US/firefox-156.0.tar.xz" ], "named_files": { "FIREFOX": "firefox/firefox" @@ -592,9 +592,9 @@ "rules_browsers_firefox_mac": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "3ae135f2023cf0c6cbce3bb757e06564ff8148b1266f682b8eccff0993a1a9f5", + "sha256": "fecc46103039ca4a77ecb2b2ef7b03892f922e13db0782f8570c512b2e458515", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/155.0/mac/en-US/Firefox%20155.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/156.0/mac/en-US/Firefox%20156.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -608,9 +608,9 @@ "rules_browsers_firefox_mac_arm": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "3ae135f2023cf0c6cbce3bb757e06564ff8148b1266f682b8eccff0993a1a9f5", + "sha256": "fecc46103039ca4a77ecb2b2ef7b03892f922e13db0782f8570c512b2e458515", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/155.0/mac/en-US/Firefox%20155.0.dmg" + "https://archive.mozilla.org/pub/firefox/releases/156.0/mac/en-US/Firefox%20156.0.dmg" ], "named_files": { "FIREFOX": "Firefox.app/Contents/MacOS/firefox" @@ -624,9 +624,9 @@ "rules_browsers_firefox_win64": { "repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo", "attributes": { - "sha256": "2718d4cc4b2cf089aa8ac370111652bc763838e1d2ed6d635d465fc17ab6327c", + "sha256": "86a027237f7408e8a4d18637c57d487455a704cbb2466a32d0d14c2207d2699a", "urls": [ - "https://archive.mozilla.org/pub/firefox/releases/155.0/win64/en-US/Firefox%20Setup%20155.0.exe" + "https://archive.mozilla.org/pub/firefox/releases/156.0/win64/en-US/Firefox%20Setup%20156.0.exe" ], "named_files": { "FIREFOX": "core/firefox.exe" diff --git a/adev/package.json b/adev/package.json index bdeb59864d55..bac6db53d85a 100644 --- a/adev/package.json +++ b/adev/package.json @@ -5,9 +5,9 @@ "@algolia/requester-browser-xhr": "5.56.0", "@algolia/requester-node-http": "5.56.0", "@angular/animations": "workspace:*", - "@angular/aria": "22.1.6", + "@angular/aria": "22.1.7", "@angular/build": "22.1.8", - "@angular/cdk": "22.1.6", + "@angular/cdk": "22.1.7", "@angular/cli": "22.1.8", "@angular/common": "workspace:*", "@angular/compiler": "workspace:*", @@ -15,7 +15,7 @@ "@angular/core": "workspace:*", "@angular/docs": "workspace:*", "@angular/forms": "workspace:*", - "@angular/material": "22.1.6", + "@angular/material": "22.1.7", "@angular/platform-browser": "workspace:*", "@angular/platform-server": "workspace:*", "@angular/router": "workspace:*", diff --git a/integration/animations/package.json b/integration/animations/package.json index b0335ebada98..d28f373f7810 100644 --- a/integration/animations/package.json +++ b/integration/animations/package.json @@ -11,7 +11,7 @@ }, "private": true, "dependencies": { - "@angular/cdk": "22.1.6", + "@angular/cdk": "22.1.7", "@angular/common": "link:./in-existing-linked-by-bazel", "@angular/compiler": "link:./in-existing-linked-by-bazel", "@angular/core": "link:./in-existing-linked-by-bazel", diff --git a/integration/animations/pnpm-lock.yaml b/integration/animations/pnpm-lock.yaml index 1f1ceb3093e2..0d1b42b04915 100644 --- a/integration/animations/pnpm-lock.yaml +++ b/integration/animations/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@angular/cdk': - specifier: 22.1.6 - version: 22.1.6(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/forms@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(rxjs@7.8.2) + specifier: 22.1.7 + version: 22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/forms@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(rxjs@7.8.2) '@angular/common': specifier: link:./in-existing-linked-by-bazel version: link:in-existing-linked-by-bazel @@ -204,8 +204,8 @@ packages: vitest: optional: true - '@angular/cdk@22.1.6': - resolution: {integrity: sha512-4eHSs/sIIp1mesNKFDkDTYDhfB/3/Bpfjzv/PbybsKVd642FTa3IAbjWf3uqHS/V7mpucF3Q5gSpirZHDgxwrg==} + '@angular/cdk@22.1.7': + resolution: {integrity: sha512-TN4pPExBZ6ZbxWnfVb77M/0cL83eRY3qpHv/R9Y1KhkNXlxdocd0My7wiueWBBimYacSpBnfHrIRNmHgX7Pc4Q==} peerDependencies: '@angular/common': ^22.0.0 || ^23.0.0 '@angular/core': ^22.0.0 || ^23.0.0 @@ -4575,7 +4575,7 @@ snapshots: - tsx - yaml - '@angular/cdk@22.1.6(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/forms@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(rxjs@7.8.2)': + '@angular/cdk@22.1.7(@angular/common@in-existing-linked-by-bazel)(@angular/core@in-existing-linked-by-bazel)(@angular/forms@in-existing-linked-by-bazel)(@angular/platform-browser@in-existing-linked-by-bazel)(rxjs@7.8.2)': dependencies: '@angular/common': link:in-existing-linked-by-bazel '@angular/core': link:in-existing-linked-by-bazel diff --git a/package.json b/package.json index 235dafac6549..c10e3089d1f6 100644 --- a/package.json +++ b/package.json @@ -58,10 +58,10 @@ "@angular-devkit/core": "22.1.8", "@angular-devkit/schematics": "22.1.8", "@angular/animations": "workspace:*", - "@angular/aria": "22.1.6", + "@angular/aria": "22.1.7", "@angular/benchpress": "workspace: *", "@angular/build": "22.1.8", - "@angular/cdk": "22.1.6", + "@angular/cdk": "22.1.7", "@angular/cli": "22.1.8", "@angular/common": "workspace:*", "@angular/compiler": "workspace:*", @@ -71,7 +71,7 @@ "@angular/forms": "workspace:*", "@angular/language-service": "workspace: *", "@angular/localize": "workspace: *", - "@angular/material": "22.1.6", + "@angular/material": "22.1.7", "@angular/platform-browser": "workspace:*", "@angular/platform-browser-dynamic": "workspace:*", "@angular/platform-server": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ee0384d2c56..0a181a790214 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,8 +22,8 @@ importers: specifier: workspace:* version: link:packages/animations '@angular/aria': - specifier: 22.1.6 - version: 22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/core@packages+core) + specifier: 22.1.7 + version: 22.1.7(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/core@packages+core) '@angular/benchpress': specifier: 'workspace: *' version: link:packages/benchpress @@ -31,8 +31,8 @@ importers: specifier: 22.1.8 version: 22.1.8(6122bb84929f84cea625d49dcdbbd50e) '@angular/cdk': - specifier: 22.1.6 - version: 22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) + specifier: 22.1.7 + version: 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/cli': specifier: 22.1.8 version: 22.1.8(@cfworker/json-schema@4.1.1)(@types/node@20.19.43)(chokidar@5.0.0)(supports-color@11.0.0) @@ -61,8 +61,8 @@ importers: specifier: 'workspace: *' version: link:packages/localize '@angular/material': - specifier: 22.1.6 - version: 22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) + specifier: 22.1.7 + version: 22.1.7(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/platform-browser': specifier: workspace:* version: link:packages/platform-browser @@ -347,14 +347,14 @@ importers: specifier: workspace:* version: link:../packages/animations '@angular/aria': - specifier: 22.1.6 - version: 22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/core@packages+core) + specifier: 22.1.7 + version: 22.1.7(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/core@packages+core) '@angular/build': specifier: 22.1.8 version: 22.1.8(85d34a3d252fb0512d76ecbfd904c3a4) '@angular/cdk': - specifier: 22.1.6 - version: 22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) + specifier: 22.1.7 + version: 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/cli': specifier: 22.1.8 version: 22.1.8(@cfworker/json-schema@4.1.1)(@types/node@24.13.3)(chokidar@5.0.0)(supports-color@11.0.0) @@ -377,8 +377,8 @@ importers: specifier: workspace:* version: link:../packages/forms '@angular/material': - specifier: 22.1.6 - version: 22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) + specifier: 22.1.7 + version: 22.1.7(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/platform-browser': specifier: workspace:* version: link:../packages/platform-browser @@ -567,7 +567,7 @@ importers: version: 11.16.0 ngx-progressbar: specifier: 14.0.0 - version: 14.0.0(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(rxjs@7.8.2) + version: 14.0.0(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(rxjs@7.8.2) playwright-core: specifier: 1.61.1 version: 1.61.1 @@ -1509,10 +1509,10 @@ packages: resolution: {integrity: sha512-Pv3cPa/44kvEwYcqwx4Ns5dhIDmcFNSHhbpheqiEG1Z/u4e2t4zHKDtE3eHZB+8o+IcC7xJj+d+AqGR44RoZDA==} engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/aria@22.1.6': - resolution: {integrity: sha512-Z/SxwiLPBgtu3pPAlAbXxwwGdPjJpqT2O+snH8N+x5uvQzotQN+vQofd+qrS9VrXtnuI5MMALQTNnQtOhZjdWg==} + '@angular/aria@22.1.7': + resolution: {integrity: sha512-181iutfHOTVKhI7yyA5wjwJ26iPn/DBn+W++bxQ4DA3mZBnBfvC2/MKQVmf36woNQ/c5yQkSqYrZTRXAWK3NIw==} peerDependencies: - '@angular/cdk': 22.1.6 + '@angular/cdk': 22.1.7 '@angular/core': ^22.0.0 || ^23.0.0 '@angular/build@22.1.8': @@ -1567,8 +1567,8 @@ packages: vitest: optional: true - '@angular/cdk@22.1.6': - resolution: {integrity: sha512-4eHSs/sIIp1mesNKFDkDTYDhfB/3/Bpfjzv/PbybsKVd642FTa3IAbjWf3uqHS/V7mpucF3Q5gSpirZHDgxwrg==} + '@angular/cdk@22.1.7': + resolution: {integrity: sha512-TN4pPExBZ6ZbxWnfVb77M/0cL83eRY3qpHv/R9Y1KhkNXlxdocd0My7wiueWBBimYacSpBnfHrIRNmHgX7Pc4Q==} peerDependencies: '@angular/common': ^22.0.0 || ^23.0.0 '@angular/core': ^22.0.0 || ^23.0.0 @@ -1594,10 +1594,10 @@ packages: resolution: {gitHosted: true, integrity: sha512-R863LMO9L1BdkpChzNK5hpNLToR5cUOgOPnflx/Hn8Iwcu1NNNVuVHgLKrCtGnw7igTIFXHVlQgtKv6ZjHOOTg==, tarball: https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35} version: 2.1.6 - '@angular/material@22.1.6': - resolution: {integrity: sha512-NpURtI21B7D6+DVltihVLxQWOm/cshlbJKqlUuSmyoGGO8Fvf4RxMtx6IZ5YAfVSQsuZvCvdXPc4BKUlJrqnHw==} + '@angular/material@22.1.7': + resolution: {integrity: sha512-mpe0lL6eDlN5AuXY7CP29SfKey7nVuHp4YhQijaq9orRFwsP3fSGrMU9BJjIRDOLWc8Zg9v/oa85E1CjNebXGg==} peerDependencies: - '@angular/cdk': 22.1.6 + '@angular/cdk': 22.1.7 '@angular/common': ^22.0.0 || ^23.0.0 '@angular/core': ^22.0.0 || ^23.0.0 '@angular/forms': ^22.0.0 || ^23.0.0 @@ -11885,9 +11885,9 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/aria@22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/core@packages+core)': + '@angular/aria@22.1.7(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/core@packages+core)': dependencies: - '@angular/cdk': 22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) + '@angular/cdk': 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/core': link:packages/core tslib: 2.8.1 @@ -12077,7 +12077,7 @@ snapshots: - tsx - yaml - '@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2)': + '@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2)': dependencies: '@angular/common': link:packages/common '@angular/core': link:packages/core @@ -12141,9 +12141,9 @@ snapshots: '@angular/domino@https://codeload.github.com/angular/domino/tar.gz/9b606f5b01b5cc518b97a618b92f990c03a33d35': {} - '@angular/material@22.1.6(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2)': + '@angular/material@22.1.7(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2)': dependencies: - '@angular/cdk': 22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) + '@angular/cdk': 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/common': link:packages/common '@angular/core': link:packages/core '@angular/forms': link:packages/forms @@ -20707,9 +20707,9 @@ snapshots: '@angular/core': link:packages/core tslib: 2.8.1 - ngx-progressbar@14.0.0(@angular/cdk@22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(rxjs@7.8.2): + ngx-progressbar@14.0.0(@angular/cdk@22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2))(@angular/common@packages+common)(@angular/core@packages+core)(rxjs@7.8.2): dependencies: - '@angular/cdk': 22.1.6(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) + '@angular/cdk': 22.1.7(@angular/common@packages+common)(@angular/core@packages+core)(@angular/forms@packages+forms)(@angular/platform-browser@packages+platform-browser)(rxjs@7.8.2) '@angular/common': link:packages/common '@angular/core': link:packages/core rxjs: 7.8.2 From 2003244b6f11dc6cfc9950965a6e71477d3651c2 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 15 Sep 2026 22:12:47 +0300 Subject: [PATCH 27/41] docs: fix malformed code block metadata Several code blocks use metadata the docs pipeline doesn't parse, so the header or the line highlighting silently disappears: - `components-scenarios.md` used `header="banner.ts"`, and `lazy-loading-services.md` and `schematics-for-libraries.md` left the header unquoted, so none of those headers rendered. - `signal-inputs.md` passed the highlight ranges without the `highlight:` key, and `kitchen-sink.md` used `highlight="[2]"`. - The forms tutorial step used `[2,6]`, which highlights lines 2 through 6 instead of lines 2 and 6. - The exhaustive `@switch` example in `control-flow.md` is a component, so it's now `angular-ts`, with the note as an HTML comment inside the template. (cherry picked from commit 49594c660e3cb977cca913c803a19d9b859c5528) --- adev/src/content/guide/di/lazy-loading-services.md | 8 +++----- adev/src/content/guide/templates/control-flow.md | 5 +++-- adev/src/content/guide/testing/components-scenarios.md | 2 +- adev/src/content/kitchen-sink.md | 2 +- adev/src/content/reference/migrations/signal-inputs.md | 2 +- adev/src/content/tools/cli/schematics-for-libraries.md | 2 +- .../tutorials/learn-angular/steps/15-forms/README.md | 2 +- 7 files changed, 11 insertions(+), 12 deletions(-) diff --git a/adev/src/content/guide/di/lazy-loading-services.md b/adev/src/content/guide/di/lazy-loading-services.md index 8425033f2729..25b1d708a3b2 100644 --- a/adev/src/content/guide/di/lazy-loading-services.md +++ b/adev/src/content/guide/di/lazy-loading-services.md @@ -31,14 +31,14 @@ The first call to `this.exporter()` triggers the dynamic import and resolves the If the lazy-loaded service is the [default export](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/export#using_the_default_export), pass the dynamic import directly, Angular unwraps the `default` for you: -```ts {header: report-exporter.ts} +```ts {header: "report-exporter.ts"} @Service() export default class ReportExporter { /* … */ } ``` -```ts {header: report.ts} +```ts {header: "report.ts"} private exporter = injectAsync(() => import('./report-exporter')); ``` @@ -51,9 +51,7 @@ Angular ships with `onIdle`, a built-in trigger that waits until the browser bec ```ts import {Component, injectAsync, onIdle} from '@angular/core'; -@Component({ - /* … */ -}) +@Component({/* … */}) export class Report { private exporter = injectAsync(() => import('./report-exporter').then((m) => m.ReportExporter), { prefetch: onIdle, diff --git a/adev/src/content/guide/templates/control-flow.md b/adev/src/content/guide/templates/control-flow.md index 32af8cbe4259..5425e5b1963f 100644 --- a/adev/src/content/guide/templates/control-flow.md +++ b/adev/src/content/guide/templates/control-flow.md @@ -142,7 +142,7 @@ By using `@default never;`, you explicitly declare that no remaining cases shoul NOTE: Exhaustiveness checking relies on TypeScript's type narrowing, which only works on variables. It will not work if the switch condition is a function call or a signal (for example, `@switch (state())`). To work around this, assign the signal to a `@let` variable, e.g.: `@let mySignal = this.mySignal()`. -```angular-html +```angular-ts @Component({ template: ` @switch (state) { @@ -154,7 +154,8 @@ NOTE: Exhaustiveness checking relies on TypeScript's type narrowing, which only

Welcome back!

} - @default never; // throws because `@case ('loading')` is missing + @default never; + } `, }) diff --git a/adev/src/content/guide/testing/components-scenarios.md b/adev/src/content/guide/testing/components-scenarios.md index 13a74f7e097d..8315cec9bb0c 100644 --- a/adev/src/content/guide/testing/components-scenarios.md +++ b/adev/src/content/guide/testing/components-scenarios.md @@ -8,7 +8,7 @@ In the example application, the `Banner` component presents static title text in After a few changes, the `Banner` component presents a dynamic title by binding to the component's `title` property like this. -```angular-ts {header="banner.ts"} +```angular-ts {header: "banner.ts"} import {Component, signal} from '@angular/core'; @Component({ diff --git a/adev/src/content/kitchen-sink.md b/adev/src/content/kitchen-sink.md index 1e200ee7958b..0a5b8497447b 100644 --- a/adev/src/content/kitchen-sink.md +++ b/adev/src/content/kitchen-sink.md @@ -163,7 +163,7 @@ npm install @angular/material --save You can style standard Markdown triple backticks with attributes for enhanced presentation: -```ts {header:"Awesome Title", linenums, highlight="[2]", hideCopy} +```ts {header:"Awesome Title", linenums, highlight: [2], hideCopy} console.log('Hello, World!'); console.log('Awesome Angular Docs!'); ``` diff --git a/adev/src/content/reference/migrations/signal-inputs.md b/adev/src/content/reference/migrations/signal-inputs.md index 8efbcec4599e..3dd3f8d7d644 100644 --- a/adev/src/content/reference/migrations/signal-inputs.md +++ b/adev/src/content/reference/migrations/signal-inputs.md @@ -45,7 +45,7 @@ export class MyComponent { **After** -```angular-ts {[[4],[7], [10,12]]} +```angular-ts {highlight: [[4],[7], [10,12]]} import {Component, input} from '@angular/core'; @Component({ diff --git a/adev/src/content/tools/cli/schematics-for-libraries.md b/adev/src/content/tools/cli/schematics-for-libraries.md index ff6eeb418d1e..e7d4ca1718a2 100644 --- a/adev/src/content/tools/cli/schematics-for-libraries.md +++ b/adev/src/content/tools/cli/schematics-for-libraries.md @@ -149,7 +149,7 @@ Schematic templates support special syntax to execute code and variable substitu 1. Create a file named `__name@dasherize__.service.ts.template` that defines a template to use for generating files. This template will generate a service that already has Angular's `HttpClient` injected into an `http` property. - ```ts {header:projects/my-lib/schematics/my-service/files/__name@dasherize__.service.ts.template (Schematic Template)} + ```ts {header: "projects/my-lib/schematics/my-service/files/__name@dasherize__.service.ts.template (Schematic Template)"} import { Service } from '@angular/core'; import { HttpClient } from '@angular/common/http'; diff --git a/adev/src/content/tutorials/learn-angular/steps/15-forms/README.md b/adev/src/content/tutorials/learn-angular/steps/15-forms/README.md index 14bf71333423..79a2bb39357e 100644 --- a/adev/src/content/tutorials/learn-angular/steps/15-forms/README.md +++ b/adev/src/content/tutorials/learn-angular/steps/15-forms/README.md @@ -31,7 +31,7 @@ For this form to use Angular features that enable data binding to forms, you'll Import the `FormsModule` from `@angular/forms` and add it to the `imports` array of the `User`. -```ts {highlight:[2,6]} +```ts {highlight:[[2],[6]]} import {Component} from '@angular/core'; import {FormsModule} from '@angular/forms'; From 64396095814277589ea86bf14ba3f55556142b84 Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 15 Sep 2026 23:36:56 +0300 Subject: [PATCH 28/41] fix(docs-infra): reject malformed code block metadata The code block tokenizer silently ignored metadata it didn't recognize, and `expandRangeStringValues` swallowed highlight parse errors, so a typo like `header="foo.ts"` or a missing `highlight:` key rendered the block without its header or highlighting and nothing flagged it. The tokenizer now throws when the metadata contains anything it doesn't parse or when `highlight` isn't a valid range. The highlight rule also stops at its closing bracket, so `highlight` no longer swallows keys that follow it, like `{highlight: [9], header: "hero.service.ts"}`. (cherry picked from commit 7bbe2636dc9e987ea3ffe599c493deeaf2da0c3a) --- .../extensions/docs-code/docs-code-block.mts | 24 ++++++++++++++++++- .../docs-code-block/docs-code-block.spec.mts | 22 +++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts b/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts index 46260f19ec3e..e1a334ebea5e 100644 --- a/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts +++ b/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts @@ -8,6 +8,7 @@ import {TokenizerThis, RendererThis} from 'marked'; import {CodeToken, formatCode} from './format/index.mjs'; +import {expandRangeStringValues} from './format/range.mjs'; import {AdevDocsRenderer} from '../../renderer.mjs'; export interface DocsCodeBlock extends CodeToken { @@ -39,12 +40,21 @@ export const docsCodeBlockExtension = { const metadataStr = match[2].trim(); const headerRule = /header\s*:\s*(['"`])(.*?)\1/; // The 2nd capture matters here - const highlightRule = /highlight\s*:\s*(.*)([^,])/; + const highlightRule = /highlight\s*:\s*(\[(?:[^[\]]|\[[^[\]]*\])*\])/; const hideCopyRule = /hideCopy/; const hideDollarRule = /hideDollar/; const preferRule = /\b(prefer|avoid)\b/; const linenumsRule = /linenums/; + validateMetadata(metadataStr, highlightRule.exec(metadataStr)?.[1], [ + headerRule, + highlightRule, + hideCopyRule, + hideDollarRule, + preferRule, + linenumsRule, + ]); + const token: DocsCodeBlock = { raw: match[0], type: 'docs-code-block', @@ -68,3 +78,15 @@ export const docsCodeBlockExtension = { return formatCode(token, (this.parser.renderer as AdevDocsRenderer).context); }, }; + +function validateMetadata(metadataStr: string, highlight: string | undefined, rules: RegExp[]) { + const unrecognized = rules + .reduce((rest, rule) => rest.replace(new RegExp(rule, 'g'), ''), metadataStr) + .replace(/[{},\s]/g, ''); + const invalidHighlight = + highlight !== undefined && expandRangeStringValues(highlight).length === 0; + + if (unrecognized || invalidHighlight) { + throw new Error(`Invalid code block metadata: ${metadataStr}`); + } +} diff --git a/adev/shared-docs/pipeline/shared/marked/test/docs-code-block/docs-code-block.spec.mts b/adev/shared-docs/pipeline/shared/marked/test/docs-code-block/docs-code-block.spec.mts index 7419bc000d73..2f61604d9470 100644 --- a/adev/shared-docs/pipeline/shared/marked/test/docs-code-block/docs-code-block.spec.mts +++ b/adev/shared-docs/pipeline/shared/marked/test/docs-code-block/docs-code-block.spec.mts @@ -48,4 +48,26 @@ describe('markdown to html', () => { const codeBlock = markdownDocument.querySelectorAll('.docs-code')[3]; expect(codeBlock.getAttribute('hideDollar')).toBe('true'); }); + + it('should parse highlight regardless of its position in the metadata', () => { + const fragment = JSDOM.fragment( + parseMarkdown('```ts {highlight: [2], header: "foo.ts"}\na\nb\n```', rendererContext), + ); + expect(fragment.querySelector('.docs-code')?.getAttribute('header')).toBe('foo.ts'); + expect(fragment.querySelectorAll('.line.highlighted').length).toBe(1); + }); + + for (const metadata of [ + '{header="foo.ts"}', + '{header: foo.ts}', + '{[[1],[2]]}', + '{highlight="[2]"}', + '{highlight: [1,]}', + ]) { + it(`should throw on invalid metadata ${metadata}`, () => { + expect(() => + parseMarkdown('```ts ' + metadata + '\ncode\n```', rendererContext), + ).toThrowError(/Invalid code block metadata/); + }); + } }); From 47afc90064ea39b292031e0ecaaf04ac6e4e4fbf Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 15 Sep 2026 22:07:24 +0300 Subject: [PATCH 29/41] docs: close the heading tag in the ng-template output example The rendered output example in the ng-template guide closes the `

` with a stray `>` instead of `

`, so the snippet shows invalid HTML that doesn't match what the component actually renders. (cherry picked from commit 152292bfdbffc89ea37d3a6252b99be1021156b2) --- adev/src/content/guide/templates/ng-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/guide/templates/ng-template.md b/adev/src/content/guide/templates/ng-template.md index 46601730e045..9e1c24eeb530 100644 --- a/adev/src/content/guide/templates/ng-template.md +++ b/adev/src/content/guide/templates/ng-template.md @@ -202,7 +202,7 @@ In the example above, clicking the "Show" button results in the following output ```angular-html -

Component with a fragment> +

Component with a fragment

From 4218ee6bee320e871422bb9641ba69d92bd80086 Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 13 Sep 2026 12:10:45 +0300 Subject: [PATCH 30/41] docs: add the missing heading to the DevTools injectors guide The page starts at `## Inspect your injectors`, so it has no H1. adev renders the page heading and the edit link only for an H1, so the page showed neither, unlike the other DevTools guides. Promote the top heading to an H1 and move its three sections up one level so the page has no skipped heading levels. Anchors come from the heading text, so no links change. (cherry picked from commit 83d2ef35ef3fc8338f56b89cc18f976413ed707e) --- adev/src/content/tools/devtools/injectors.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/adev/src/content/tools/devtools/injectors.md b/adev/src/content/tools/devtools/injectors.md index f84a95aa0533..89b699c1ba39 100644 --- a/adev/src/content/tools/devtools/injectors.md +++ b/adev/src/content/tools/devtools/injectors.md @@ -1,14 +1,14 @@ -## Inspect your injectors +# Inspect your injectors NOTE: The Injector Tree is available for Angular Applications built with version 17 or higher. -### View the injector hierarchy of your application +## View the injector hierarchy of your application The **Injector Tree** tab lets you explore the structure of the Injectors configured in your application. Here you will see two trees representing the [injector hierarchy](guide/di/hierarchical-dependency-injection) of your application. One tree is your environment hierarchy, the other is your element hierarchy. A screenshot of the 'Profiler' tab displaying the injector tree tab in Angular Devtools visualizing the injector graph for an example application. -### Visualize resolution paths +## Visualize resolution paths When a specific injector is selected, the path that Angular's dependency injection algorithm traverses from that injector to the root is highlighted. For element injectors, this includes highlighting the environment injectors that the dependency injection algorithm jumps to when a dependency cannot be resolved in the element hierarchy. @@ -16,7 +16,7 @@ See [resolution rules](guide/di/hierarchical-dependency-injection#resolution-rul A screenshot of the 'Profiler' tab displaying how the injector tree visualize highlights resolution paths when an injector is selected. -### View injector providers +## View injector providers Clicking an injector that has configured providers will display those providers in a list on the right of the injector tree view. Here you can view the provided token and it's type. The button on the right of each provider allows you to log the provider in the console. From b18961b7f4497cf56acf7ae5315c0e6d30f1f9dc Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Mon, 14 Sep 2026 16:28:17 -0500 Subject: [PATCH 31/41] docs: clarify SSR response size limit with fetch integrity (cherry picked from commit bf343eff5a5413212e06c06bf550ac4b4317677e) --- adev/src/content/guide/http/making-requests.md | 2 ++ adev/src/content/guide/ssr.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/adev/src/content/guide/http/making-requests.md b/adev/src/content/guide/http/making-requests.md index 8b388a35da0a..1527db8b5936 100644 --- a/adev/src/content/guide/http/making-requests.md +++ b/adev/src/content/guide/http/making-requests.md @@ -616,6 +616,8 @@ http IMPORTANT: The `integrity` option requires an exact match between the response content and the provided hash. If the content doesn't match, the request will fail with a network error. +CRITICAL: During SSR, the Fetch implementation reads the entire response body to verify `integrity` before returning a response, as required by the [Fetch Standard](https://fetch.spec.whatwg.org/#concept-main-fetch). Angular enforces [`maxResponseBodySize`](/guide/ssr#configuring-the-response-body-size-limit) only after Fetch returns a response, so this limit does not constrain the data buffered during integrity verification. + TIP: Use subresource integrity when loading critical resources from external sources to ensure they haven't been modified. Generate hashes using tools like `openssl`. ## HTTP `Observable`s diff --git a/adev/src/content/guide/ssr.md b/adev/src/content/guide/ssr.md index 30e3720c4a54..fb0f551d7675 100644 --- a/adev/src/content/guide/ssr.md +++ b/adev/src/content/guide/ssr.md @@ -444,6 +444,8 @@ const serverConfig: ApplicationConfig = { IMPORTANT: Keep this limit as small as your application allows. Increasing it lets server-side requests buffer larger response bodies, which can increase memory use and denial-of-service risk. Prefer moving large downloads outside server rendering. +CRITICAL: During SSR, the Fetch implementation reads the entire response body to verify `integrity` before returning a response, as required by the [Fetch Standard](https://fetch.spec.whatwg.org/#concept-main-fetch). Angular enforces [`maxResponseBodySize`](/guide/ssr#configuring-the-response-body-size-limit) only after Fetch returns a response, so this limit does not constrain the data buffered during integrity verification. + ### Configuring the caching options You can customize how Angular caches HTTP responses during server‑side rendering (SSR) and reuses them during hydration by configuring `HttpTransferCacheOptions`. From 7b386a3ce0d946b92e0457b2eb1a71b7325203e6 Mon Sep 17 00:00:00 2001 From: Kam Date: Sat, 12 Sep 2026 16:47:07 +0300 Subject: [PATCH 32/41] docs: fix the broken Unicode locale ID link in the i18n guide The text references `UnicodeCldrDevelopmentCoreSpecificationLocaleIDs`, while the definition at the bottom of the page is `UnicodeCldrDevelopmentCoreSpecificationLocaleID`. The reference never resolves, so the page renders the bracketed label as plain text instead of a link to the CLDR spec. (cherry picked from commit e9957f72a0b41283753b3dd57591cc2caf6f2d65) --- adev/src/content/guide/i18n/locale-id.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/guide/i18n/locale-id.md b/adev/src/content/guide/i18n/locale-id.md index 36336bb56f92..d5759321dd07 100644 --- a/adev/src/content/guide/i18n/locale-id.md +++ b/adev/src/content/guide/i18n/locale-id.md @@ -5,7 +5,7 @@ Angular uses the Unicode _locale identifier_ \(Unicode locale ID\) to find the c - A locale ID conforms to the [Unicode Common Locale Data Repository (CLDR) core specification][UnicodeCldrDevelopmentCoreSpecification]. - For more information about locale IDs, see [Unicode Language and Locale Identifiers][UnicodeCldrDevelopmentCoreSpecificationLocaleIDs]. + For more information about locale IDs, see [Unicode Language and Locale Identifiers][UnicodeCldrDevelopmentCoreSpecificationLocaleID]. - CLDR and Angular use [BCP 47 tags][RfcEditorInfoBcp47] as the base for the locale ID From 5fb7ee405296602a064a10e054f7d28cbe68e976 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 14 Sep 2026 00:40:29 +0300 Subject: [PATCH 33/41] fix(docs-infra): use member names as decorator member card ids Decorator member cards used `${member.name}_${index}` as their id, which was copied from the function template where overloads share a name. Links to `Component#animations`, `Directive#exportAs` and `NgModule#id`, including the one in Angular's runtime animations error, never matched a card. Decorator options have unique names, so use the member name as the id, the same as class members. (cherry picked from commit e2d69fa4950ba529f43715a3035b575b2983a82a) --- .../api-gen/rendering/templates/decorator-reference.tsx | 4 ++-- .../pipeline/api-gen/rendering/test/renderable.spec.mts | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/adev/shared-docs/pipeline/api-gen/rendering/templates/decorator-reference.tsx b/adev/shared-docs/pipeline/api-gen/rendering/templates/decorator-reference.tsx index 95f170b75df4..660083efcd8c 100644 --- a/adev/shared-docs/pipeline/api-gen/rendering/templates/decorator-reference.tsx +++ b/adev/shared-docs/pipeline/api-gen/rendering/templates/decorator-reference.tsx @@ -54,9 +54,9 @@ export function DecoratorReference(entry: DecoratorEntryRenderable) {
- {entry.members.map((member, index) => + {entry.members.map((member) => signatureCard(member.name, member, { - id: `${member.name}_${index}`, + id: member.name, }), )}
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.mts b/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.mts index 7f45d7323187..e0282088a5bf 100644 --- a/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.mts +++ b/adev/shared-docs/pipeline/api-gen/rendering/test/renderable.spec.mts @@ -89,4 +89,13 @@ describe('renderable', () => { expect(api.textContent).toContain('@Component({'); }); + + it('should use the member name as the id of decorator member cards', () => { + const component = entries.get('Component')!; + const html = renderEntry(component); + const fragment = JSDOM.fragment(html); + const card = fragment.querySelector('.docs-reference-member-card')!; + + expect(card.getAttribute('id')).toBe('selector'); + }); }); From b4138e69c5e52153def7cc3019a5a4a7a3521091 Mon Sep 17 00:00:00 2001 From: Kam Date: Sat, 12 Sep 2026 16:39:05 +0300 Subject: [PATCH 34/41] docs: show the toggle members in the i18n conditional example The `app.component.ts` snippet beside the conditional `i18n` example uses `visibleLines="[[14,21],[33,37]]"`. Those ranges are off by one, because the `// #docregion` line is stripped from the rendered code, so the snippet ends on the unrelated `inc()` method and starts its second range inside `toggleDisplay()`, showing the body without the signature. Use `[[13,18],[32,34]]`, which shows `toggle` and `toggleAriaLabel` followed by the whole `toggleDisplay()` method, the members the example's template binds to. (cherry picked from commit 0de811da8f2c2ce48b50fa556387a629d2980481) --- adev/src/content/guide/i18n/prepare.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adev/src/content/guide/i18n/prepare.md b/adev/src/content/guide/i18n/prepare.md index 95d6e393cb18..4bb6b47eb531 100644 --- a/adev/src/content/guide/i18n/prepare.md +++ b/adev/src/content/guide/i18n/prepare.md @@ -35,7 +35,7 @@ The following `
` tag will display translated text as part of `div` and `ari - + ### Translate inline text without HTML element From 7b7b20390048aba02cd471c44abb89ccf9867ea9 Mon Sep 17 00:00:00 2001 From: yoominho91 <287127232+yoominho91@users.noreply.github.com> Date: Fri, 11 Sep 2026 22:37:43 +0900 Subject: [PATCH 35/41] refactor(compiler): remove write-only collections from template pipeline phases `allocateSlots` built a `slotMap` of every declaration's slot, and its comment said the second scan would use it to propagate slot indexes into expressions. The second scan never reads it: slot indexes reach expressions through the shared `op.handle`, and the scan only copies each view's `decls` onto the op that declares it. The comment now describes what the scan does. `generateTemporaries` added each temporary to a `released` set on its final read, but nothing read the set; name reuse is driven by `count` alone. (cherry picked from commit 45e314fc5f0baa335dd770c00f69c63dbff4df31) --- .../pipeline/src/phases/slot_allocation.ts | 16 ++-------------- .../pipeline/src/phases/temporary_variables.ts | 2 -- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/packages/compiler/src/template/pipeline/src/phases/slot_allocation.ts b/packages/compiler/src/template/pipeline/src/phases/slot_allocation.ts index f58c4f857ad9..627e2bea1f2c 100644 --- a/packages/compiler/src/template/pipeline/src/phases/slot_allocation.ts +++ b/packages/compiler/src/template/pipeline/src/phases/slot_allocation.ts @@ -18,12 +18,6 @@ import type {ComponentCompilationJob} from '../compilation'; * and propagating that number into the `Template` operations which declare embedded views. */ export function allocateSlots(job: ComponentCompilationJob): void { - // Map of all declarations in all views within the component which require an assigned slot index. - // This map needs to be global (across all views within the component) since it's possible to - // reference a slot from one view from an expression within another (e.g. local references work - // this way). - const slotMap = new Map(); - // Process all views in the component and assign slot indexes. for (const unit of job.units) { // Slot indices start at 0 for each view (and are not unique between views). @@ -38,9 +32,6 @@ export function allocateSlots(job: ComponentCompilationJob): void { // Assign slots to this declaration starting at the current `slotCount`. op.handle.slot = slotCount; - // And track its assigned slot in the `slotMap`. - slotMap.set(op.xref, op.handle.slot); - // Each declaration may use more than 1 slot, so increment `slotCount` to reserve the number // of slots required. slotCount += op.numSlotsUsed; @@ -51,11 +42,8 @@ export function allocateSlots(job: ComponentCompilationJob): void { unit.decls = slotCount; } - // After slot assignment, `slotMap` now contains slot assignments for every declaration in the - // whole template, across all views. Next, look for expressions which implement - // `UsesSlotIndexExprTrait` and propagate the assigned slot indexes into them. - // Additionally, this second scan allows us to find `ir.TemplateOp`s which declare views and - // propagate the number of slots used for each view into the operation which declares it. + // After slot assignment, scan for `ir.TemplateOp`s which declare views and propagate the number + // of slots used for each view into the operation which declares it. for (const unit of job.units) { for (const op of unit.ops()) { if ( diff --git a/packages/compiler/src/template/pipeline/src/phases/temporary_variables.ts b/packages/compiler/src/template/pipeline/src/phases/temporary_variables.ts index 6e6f8b4799ad..2b9bd97f9006 100644 --- a/packages/compiler/src/template/pipeline/src/phases/temporary_variables.ts +++ b/packages/compiler/src/template/pipeline/src/phases/temporary_variables.ts @@ -54,7 +54,6 @@ function generateTemporaries( // read for the final time. let count = 0; const assigned = new Set(); - const released = new Set(); const defs = new Map(); ir.visitExpressionsInOp(op, (expr, flag) => { if (flag & ir.VisitorContextFlag.InChildOperation) { @@ -70,7 +69,6 @@ function generateTemporaries( assignName(defs, expr); } else if (expr instanceof ir.ReadTemporaryExpr) { if (finalReads.get(expr.xref) === expr) { - released.add(expr.xref); count--; } assignName(defs, expr); From 512b5590eeca3fcd5dc1969da735c12b30c6b1e7 Mon Sep 17 00:00:00 2001 From: Kam Date: Sat, 12 Sep 2026 01:10:00 +0300 Subject: [PATCH 36/41] fix(docs-infra): copy code blocks as they are rendered The copy button read the whole block's `innerText` and then removed every `\n\n\n` sequence, which dropped the blank lines between lines of code. On blocks with line numbers, the same `innerText` also picked up the number column, so pasting produced "1", the first line, "2", "3" and so on. Join the text of the visible `.line` elements instead. Line numbers sit outside those elements, and lines hidden by an example's visible range stay hidden, so the clipboard matches what the block shows. The `.remove` branch goes with it, since no line has carried that class since 8ec0a4ee5ca dropped diff support from docs-code. (cherry picked from commit cd033e5f1296741264c621aa386f72ba7159d05c) --- .../copy-source-code-button.component.spec.ts | 30 +++++++++++++++++++ .../copy-source-code-button.component.ts | 20 +++++-------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts b/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts index 8485588947e7..6bfa490135a4 100644 --- a/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts +++ b/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.spec.ts @@ -50,6 +50,36 @@ describe('CopySourceCodeButton', () => { expect(copySpy.calls.argsFor(0)[0].trim()).toBe(expectedCodeToBeCopied); }); + it('should keep blank lines and skip line numbers', async () => { + component.code.set( + '1const a = 1;\n' + + '2\n' + + '3const b = 2;', + ); + + await fixture.whenStable(); + + const button = fixture.debugElement.query(By.directive(CopySourceCodeButton)).nativeElement; + button.click(); + + expect(copySpy.calls.argsFor(0)[0]).toBe('const a = 1;\n\nconst b = 2;'); + }); + + it('should skip hidden lines', async () => { + component.code.set( + 'const a = 1;\n' + + '\n' + + 'const c = 3;', + ); + + await fixture.whenStable(); + + const button = fixture.debugElement.query(By.directive(CopySourceCodeButton)).nativeElement; + button.click(); + + expect(copySpy.calls.argsFor(0)[0]).toBe('const a = 1;\nconst c = 3;'); + }); + it(`should set ${SUCCESSFULLY_COPY_CLASS_NAME} for ${CONFIRMATION_DISPLAY_TIME_MS} ms when copy was executed properly`, async () => { const clock = jasmine.clock().install(); component.code.set('example'); diff --git a/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.ts b/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.ts index 9664603a05ae..535915b00310 100644 --- a/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.ts +++ b/adev/shared-docs/components/copy-source-code-button/copy-source-code-button.component.ts @@ -17,7 +17,6 @@ import { } from '@angular/core'; import {IconComponent} from '../icon/icon.component'; -export const REMOVED_LINE_CLASS_NAME = '.line.remove'; export const CONFIRMATION_DISPLAY_TIME_MS = 2000; @Component({ @@ -58,19 +57,16 @@ export class CopySourceCodeButton { this.showCopySuccess.set(false); this.showCopyFailure.set(false); - const removedLines: NodeList = codeElement.querySelectorAll(REMOVED_LINE_CLASS_NAME); + const lines = Array.from(codeElement.querySelectorAll('.line:not(.hidden)')); - if (removedLines.length) { - // Get only those lines which are not marked as removed - const formattedText = Array.from(codeElement.querySelectorAll('.line:not(.remove)')) - .map((line) => (line as HTMLDivElement).innerText) - .join('\n'); - - return formattedText.trim(); - } else { - const text: string = codeElement.innerText || ''; - return text.replace(/\n\n\n/g, ``).trim(); + if (lines.length) { + return lines + .map((line) => line.textContent) + .join('\n') + .trim(); } + + return (codeElement.innerText || '').trim(); } private showResult(messageState: WritableSignal) { From 5ffc3818f2bb8d0497be17db29e405b0eb7321ea Mon Sep 17 00:00:00 2001 From: Kam Date: Sun, 13 Sep 2026 21:48:26 +0300 Subject: [PATCH 37/41] docs: add the missing heading to the effects guide The page starts at `## Effects`, so it has no H1. adev renders the page heading and the edit link only for an H1, so the page showed neither, unlike the other signals guides. Promote the top heading to an H1 and move its five sections up one level so the page has no skipped heading levels. Anchors come from the heading text, so only `#effects` goes away, and the `effect()` API docs link that pointed at it now links to the page itself. (cherry picked from commit 430a8eb5b5529c99f9607a0b8effeabd5d91c518) --- adev/src/content/guide/signals/effect.md | 12 ++++++------ packages/core/src/render3/reactivity/effect.ts | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/adev/src/content/guide/signals/effect.md b/adev/src/content/guide/signals/effect.md index 0acefd12ead7..df1896b92a53 100644 --- a/adev/src/content/guide/signals/effect.md +++ b/adev/src/content/guide/signals/effect.md @@ -1,4 +1,4 @@ -## Effects +# Effects Signals are useful because they notify interested consumers when they change. An **effect** is an operation that runs whenever one or more signal values change. You can create an effect with the `effect` function: @@ -14,7 +14,7 @@ Effects always run **at least once.** When an effect runs, it tracks any signal Effects always execute **asynchronously**, during the change detection process. -### Use cases for effects +## Use cases for effects Effects should be the last API you reach for. Always prefer `computed()` for derived values and `linkedSignal()` for values that can be both derived and manually set. If you find yourself copying data from one signal to another with an effect, it's a sign you should move your source-of-truth higher up and use `computed()` or `linkedSignal()` instead. Effects are best for syncing signal state to imperative, non-signal APIs. @@ -31,7 +31,7 @@ Avoid using effects for propagation of state changes. This can result in `Expres Instead, use `computed` signals to model state that depends on other state. -### Injection context +## Injection context By default, you can only create an `effect()` within an [injection context](guide/di/dependency-injection-context) (where you have access to the `inject` function). The easiest way to satisfy this requirement is to call `effect` within a component, directive, or service `constructor`: @@ -68,7 +68,7 @@ export class EffectiveCounter { } ``` -### Execution of effects +## Execution of effects Angular implicitly defines two implicit behaviors for its effects depending on the context they were created in. @@ -82,7 +82,7 @@ The execution of both kinds of `effect` are tied to the change detection process In both cases, if at least one of the effect dependencies changed during the effect execution, the effect will re-run before moving ahead on the change detection process. -### Destroying effects +## Destroying effects When a component or directive is destroyed, Angular automatically cleans up any associated effects. @@ -93,7 +93,7 @@ An `effect` can be created in two different contexts that will affect when it's Effects return an `EffectRef`. You can use the ref's `destroy` method to manually dispose of an effect. You can combine this with the `manualCleanup` option when creating an effect to disable automatic cleanup. Be careful to actually destroy such effects when they're no longer required. -### Effect cleanup functions +## Effect cleanup functions When a component or directive is destroyed, Angular automatically cleans up any associated effects. Effects might start long-running operations, which you should cancel if the effect is destroyed or runs again before the first operation finished. When you create an effect, your function can optionally accept an `onCleanup` function as its first parameter. This `onCleanup` function lets you register a callback that is invoked before the next run of the effect begins, or when the effect is destroyed. diff --git a/packages/core/src/render3/reactivity/effect.ts b/packages/core/src/render3/reactivity/effect.ts index 35fdf552f99b..a02429eec43e 100644 --- a/packages/core/src/render3/reactivity/effect.ts +++ b/packages/core/src/render3/reactivity/effect.ts @@ -130,7 +130,7 @@ export type EffectCleanupRegisterFn = (cleanupFn: EffectCleanupFn) => void; * * `effect()` must be run in injection context, unless the `injector` option is manually specified. * - * @see [Effects](guide/signals/effect#effects) + * @see [Effects](guide/signals/effect) * * @publicApi 20.0 */ From 24ca9d4a5474a204e21a34a42a8f3f55e0dcaba4 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 16 Sep 2026 15:17:05 +0300 Subject: [PATCH 38/41] docs: remove outdated useFactory and expression lowering guidance The compiler has accepted arrow functions and non-exported functions in provider metadata since v5, and the View Engine expression lowering transform behind "Metadata rewriting" was removed along with the legacy ngc. Drop the sections that still describe those restrictions and the no-op `disableExpressionLowering` option. Fixes #70750 (cherry picked from commit 5cdae0a66a4779011436d4a719995c78cbd2dcfc) --- .../configs/angular-compiler-options.md | 7 -- adev/src/content/tools/cli/aot-compiler.md | 83 +------------------ .../content/tools/cli/aot-metadata-errors.md | 31 ------- 3 files changed, 4 insertions(+), 117 deletions(-) diff --git a/adev/src/content/reference/configs/angular-compiler-options.md b/adev/src/content/reference/configs/angular-compiler-options.md index f85040732d44..dd1371b6a7ce 100644 --- a/adev/src/content/reference/configs/angular-compiler-options.md +++ b/adev/src/content/reference/configs/angular-compiler-options.md @@ -64,13 +64,6 @@ Use `'partial'` for independently published libraries, such as npm packages. `'partial'` compilations output a stable, intermediate format which better supports usage by applications built at different Angular versions from the library. Libraries built at "HEAD" alongside their applications and using the same version of Angular such as in a mono-repository can use `'full'` since there is no risk of version skew. -### `disableExpressionLowering` - -When `true`, the default, transforms code that is or could be used in an annotation, to allow it to be imported from template factory modules. -See [metadata rewriting](tools/cli/aot-compiler#metadata-rewriting) for more information. - -When `false`, disables this rewriting, requiring the rewriting to be done manually. - ### `disableTypeScriptVersionCheck` When `true`, the compiler does not look at the TypeScript version and does not report an error when an unsupported version of TypeScript is used. diff --git a/adev/src/content/tools/cli/aot-compiler.md b/adev/src/content/tools/cli/aot-compiler.md index ae06537c3829..99ccff232ff1 100644 --- a/adev/src/content/tools/cli/aot-compiler.md +++ b/adev/src/content/tools/cli/aot-compiler.md @@ -134,43 +134,6 @@ HELPFUL: If you want `ngc` to report syntax errors immediately rather than produ Angular libraries have this option to ensure that all Angular `.metadata.json` files are clean and it is a best practice to do the same when building your own libraries. -### No arrow functions - -The AOT compiler does not support [function expressions](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/function) -and [arrow functions](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/Arrow_functions), also called _lambda_ functions. - -Consider the following component decorator: - -```ts - -@Component({ - … - providers: [{provide: server, useFactory: () => new Server()}] -}) - -``` - -The AOT collector does not support the arrow function, `() => new Server()`, in a metadata expression. -It generates an error node in place of the function. -When the compiler later interprets this node, it reports an error that invites you to turn the arrow function into an _exported function_. - -You can fix the error by converting to this: - -```ts - -export function serverFactory() { - return new Server(); -} - -@Component({ - … - providers: [{provide: server, useFactory: serverFactory}] -}) - -``` - -In version 5 and later, the compiler automatically performs this rewriting while emitting the `.js` file. - ### Code folding The compiler can only resolve references to **_exported_** symbols. @@ -284,11 +247,10 @@ The compiler, however, can later refuse to generate a call to a _particular_ fun The compiler can only create instances of certain classes, supports only core decorators, and only supports calls to macros \(functions or static methods\) that return expressions. -| Compiler action | Details | -| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | -| New instances | The compiler only allows metadata that create instances of the class `InjectionToken` from `@angular/core`. | -| Supported decorators | The compiler only supports metadata for the [Angular decorators in the `@angular/core` module](/api?type=decorator). | -| Function calls | Factory functions must be exported, named functions. The AOT compiler does not support lambda expressions \("arrow functions"\) for factory functions. | +| Compiler action | Details | +| :------------------- | :------------------------------------------------------------------------------------------------------------------- | +| New instances | The compiler only allows metadata that create instances of the class `InjectionToken` from `@angular/core`. | +| Supported decorators | The compiler only supports metadata for the [Angular decorators in the `@angular/core` module](/api?type=decorator). | ### Functions and static method calls @@ -327,43 +289,6 @@ The Angular [`RouterModule`](api/router/RouterModule) exports two macro static m Review the [source code](https://github.com/angular/angular/blob/main/packages/router/src/router_module.ts#L139 'RouterModule.forRoot source code') for these methods to see how macros can simplify configuration of complex [NgModules](guide/ngmodules/overview). -### Metadata rewriting - -The compiler treats object literals containing the fields `useClass`, `useValue`, `useFactory`, and `data` specially, converting the expression initializing one of these fields into an exported variable that replaces the expression. -This process of rewriting these expressions removes all the restrictions on what can be in them because -the compiler doesn't need to know the expression's value — it just needs to be able to generate a reference to the value. - -You might write something like: - -```ts -class TypicalServer {} - -@NgModule({ - providers: [{provide: SERVER, useFactory: () => TypicalServer}], -}) -export class TypicalModule {} -``` - -Without rewriting, this would be invalid because lambdas are not supported and `TypicalServer` is not exported. -To allow this, the compiler automatically rewrites this to something like: - -```ts -class TypicalServer {} - -export const θ0 = () => new TypicalServer(); - -@NgModule({ - providers: [{provide: SERVER, useFactory: θ0}], -}) -export class TypicalModule {} -``` - -This allows the compiler to generate a reference to `θ0` in the factory without having to know what the value of `θ0` contains. - -The compiler does the rewriting during the emit of the `.js` file. -It does not, however, rewrite the `.d.ts` file, so TypeScript doesn't recognize it as being an export. -And it does not interfere with the ES module's exported API. - ## Phase 3: Template type checking One of the Angular compiler's most helpful features is the ability to type-check expressions within templates, and catch any errors before they cause crashes at runtime. diff --git a/adev/src/content/tools/cli/aot-metadata-errors.md b/adev/src/content/tools/cli/aot-metadata-errors.md index d954c78bcd20..9de616796cc0 100644 --- a/adev/src/content/tools/cli/aot-metadata-errors.md +++ b/adev/src/content/tools/cli/aot-metadata-errors.md @@ -185,37 +185,6 @@ export abstract class MyStrategy { } … ``` -## Reference to a non-exported function - -HELPFUL: _Metadata referenced a function that wasn't exported._ - -For example, you may have set a providers `useFactory` property to a locally defined function that you neglected to export. - -```ts -// ERROR -function myStrategy() { … } - - … - providers: [ - { provide: MyStrategy, useFactory: myStrategy } - ] - … -``` - -Angular generates a class factory in a separate module and that factory [can only access exported functions](tools/cli/aot-compiler#public-or-protected-symbols). -To correct this error, export the function. - -```ts -// CORRECTED -export function myStrategy() { … } - - … - providers: [ - { provide: MyStrategy, useFactory: myStrategy } - ] - … -``` - ## Destructured variable or constant not supported HELPFUL: _Referencing an exported destructured variable or constant is not supported by the template compiler. Consider simplifying this to avoid destructuring._ From 6555c4ee1ec2aea7eb541d558981b55eb751497c Mon Sep 17 00:00:00 2001 From: Lazizbek Ergashev Date: Thu, 3 Sep 2026 14:52:18 +0500 Subject: [PATCH 39/41] fix(forms): mark control as dirty before setting its value in FVC interop When a `FormValueControl` writes a value through the reactive forms interop, the control is marked dirty only after `setValue()` has already emitted on `valueChanges`, so a subscriber that reads `dirty` still sees `false`. Mark the control dirty first, matching the order the `ControlValueAccessor` path already uses in `updateControl()`. Fixes #70554 (cherry picked from commit 15bfc1a4befdef22188c23a4d0313140595012fd) --- .../signals/test/web/reactive_fvc.spec.ts | 27 +++++++++++++++++++ packages/forms/src/directives/ng_control.ts | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/forms/signals/test/web/reactive_fvc.spec.ts b/packages/forms/signals/test/web/reactive_fvc.spec.ts index b26e01eff7a4..9d2c6a82b91d 100644 --- a/packages/forms/signals/test/web/reactive_fvc.spec.ts +++ b/packages/forms/signals/test/web/reactive_fvc.spec.ts @@ -553,6 +553,33 @@ describe('FormControlName with FVC', () => { expect(fixture.componentInstance.form.controls.name.value).toBe('from-fvc'); }); + it('should report the form as dirty inside valueChanges when the FVC writes a value', () => { + @Component({ + template: ` +
+ + + `, + imports: [MyFvcInput, ReactiveFormsModule], + }) + class TestCmp { + form = new FormGroup({ + name: new FormControl('initial'), + }); + } + + const fixture = act(() => TestBed.createComponent(TestCmp)); + const form = fixture.componentInstance.form; + + const dirtyDuringValueChanges: boolean[] = []; + form.valueChanges.subscribe(() => dirtyDuringValueChanges.push(form.dirty)); + + const fvc = fixture.debugElement.query(By.directive(MyFvcInput)).componentInstance; + act(() => fvc.value.set('from-fvc')); + + expect(dirtyDuringValueChanges).toEqual([true]); + }); + it('should fall back to CVA when no FVC pattern is present', () => { @Component({ template: ` diff --git a/packages/forms/src/directives/ng_control.ts b/packages/forms/src/directives/ng_control.ts index 03af93f91898..de11f9471b05 100644 --- a/packages/forms/src/directives/ng_control.ts +++ b/packages/forms/src/directives/ng_control.ts @@ -231,8 +231,8 @@ export abstract class NgControl extends AbstractControlDirective { // (e.g., FormControlDirective's form input hasn't been bound) host.listenToCustomControlModel((value) => { // TODO: is there a case where this input has not yet been set? - this.control?.setValue(value, {emitModelToViewChange: false}); this.control?.markAsDirty(); + this.control?.setValue(value, {emitModelToViewChange: false}); this.viewToModelUpdate(value); }); From f73f059f5fe43e75ed002b0b161c9774c11daf29 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 16 Sep 2026 12:21:50 +0300 Subject: [PATCH 40/41] docs: fix API links that point at missing member anchors `{@link Symbol#member}` is turned into `/api//#` without validation, so a miscased or stale fragment still renders a link, it just never scrolls anywhere. - `SetDisabledStateOption` linked to `FormsModule#withconfig`, the member is `withConfig`. - `downgradeModule` linked to `PlatformRef#bootstrapmodule` and `#bootstrapmodulefactory`, the members are `bootstrapModule` and `bootstrapModuleFactory`. - `NavigationExtras` linked to `Router#createurltree`, the member is `createUrlTree`. - `UpgradeModule` linked to `#upgrading-an-angular-1-service`, the heading id is `upgrading-an-angularjs-service`. (cherry picked from commit f825c9bc7cc6dd7003983e6c009d498d808f0f0b) --- packages/forms/src/directives/shared.ts | 4 ++-- packages/router/src/navigation_transition.ts | 2 +- packages/upgrade/static/src/downgrade_module.ts | 16 +++++++--------- packages/upgrade/static/src/upgrade_module.ts | 2 +- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/forms/src/directives/shared.ts b/packages/forms/src/directives/shared.ts index ba1b45952cdd..a5c2a39ef255 100644 --- a/packages/forms/src/directives/shared.ts +++ b/packages/forms/src/directives/shared.ts @@ -43,7 +43,7 @@ export const ɵFORM_CONTROL_INTEGRATION = new InjectionToken<ɵFormControlIntegr * Token to provide to allow SetDisabledState to always be called when a CVA is added, regardless of * whether the control is disabled or enabled. * - * @see {@link FormsModule#withconfig} + * @see {@link FormsModule#withConfig} */ export const CALL_SET_DISABLED_STATE = new InjectionToken( typeof ngDevMode === 'undefined' || ngDevMode ? 'CallSetDisabledState' : '', @@ -58,7 +58,7 @@ export const CALL_SET_DISABLED_STATE = new InjectionToken( * called when disabled, which is the legacy behavior for compatibility. * * @publicApi - * @see {@link FormsModule#withconfig} + * @see {@link FormsModule#withConfig} */ export type SetDisabledStateOption = 'whenDisabledForLegacyCode' | 'always'; diff --git a/packages/router/src/navigation_transition.ts b/packages/router/src/navigation_transition.ts index 12beb119c939..621ac20d457e 100644 --- a/packages/router/src/navigation_transition.ts +++ b/packages/router/src/navigation_transition.ts @@ -203,7 +203,7 @@ export interface UrlCreationOptions { * * @see {@link Router#navigate} * @see {@link Router#navigateByUrl} - * @see {@link Router#createurltree} + * @see {@link Router#createUrlTree} * @see [Routing and Navigation guide](guide/routing/common-router-tasks) * @see {@link UrlCreationOptions} * @see {@link NavigationBehaviorOptions} diff --git a/packages/upgrade/static/src/downgrade_module.ts b/packages/upgrade/static/src/downgrade_module.ts index fb2db39d291b..5ff93d0b9300 100644 --- a/packages/upgrade/static/src/downgrade_module.ts +++ b/packages/upgrade/static/src/downgrade_module.ts @@ -125,8 +125,8 @@ let moduleUid = 0; * `StaticProvider`s, when creating the `PlatformRef` (e.g. via `platformBrowser` or * `platformBrowserDynamic`). * - * - When using {@link PlatformRef#bootstrapmodule `bootstrapModule()`} or - * {@link PlatformRef#bootstrapmodulefactory `bootstrapModuleFactory()`} to bootstrap the + * - When using {@link PlatformRef#bootstrapModule `bootstrapModule()`} or + * {@link PlatformRef#bootstrapModuleFactory `bootstrapModuleFactory()`} to bootstrap the * downgraded modules, each one is considered a "root" module. As a consequence, a new instance * will be created for every injectable provided in `"root"` (via * {@link /api/core/Injectable#providedIn providedIn} @@ -241,8 +241,8 @@ export function downgradeModule( * `StaticProvider`s, when creating the `PlatformRef` (e.g. via `platformBrowser` or * `platformBrowserDynamic`). * - * - When using {@link PlatformRef#bootstrapmodule `bootstrapModule()`} or - * {@link PlatformRef#bootstrapmodulefactory `bootstrapModuleFactory()`} to bootstrap the + * - When using {@link PlatformRef#bootstrapModule `bootstrapModule()`} or + * {@link PlatformRef#bootstrapModuleFactory `bootstrapModuleFactory()`} to bootstrap the * downgraded modules, each one is considered a "root" module. As a consequence, a new instance * will be created for every injectable provided in `"root"` (via * {@link /api/core/Injectable#providedIn providedIn} @@ -358,8 +358,8 @@ export function downgradeModule(moduleOrBootstrapFn: NgModuleFactory): str * `StaticProvider`s, when creating the `PlatformRef` (e.g. via `platformBrowser` or * `platformBrowserDynamic`). * - * - When using {@link PlatformRef#bootstrapmodule `bootstrapModule()`} or - * {@link PlatformRef#bootstrapmodulefactory `bootstrapModuleFactory()`} to bootstrap the + * - When using {@link PlatformRef#bootstrapModule `bootstrapModule()`} or + * {@link PlatformRef#bootstrapModuleFactory `bootstrapModuleFactory()`} to bootstrap the * downgraded modules, each one is considered a "root" module. As a consequence, a new instance * will be created for every injectable provided in `"root"` (via * {@link /api/core/Injectable#providedIn providedIn} @@ -372,9 +372,7 @@ export function downgradeModule(moduleOrBootstrapFn: NgModuleFactory): str */ export function downgradeModule( moduleOrBootstrapFn: - | Type - | NgModuleFactory - | ((extraProviders: StaticProvider[]) => Promise>), + Type | NgModuleFactory | ((extraProviders: StaticProvider[]) => Promise>), ): string { const lazyModuleName = `${ɵconstants.UPGRADE_MODULE_NAME}.lazy${++moduleUid}`; const lazyModuleRefKey = `${ɵconstants.LAZY_MODULE_REF}${lazyModuleName}`; diff --git a/packages/upgrade/static/src/upgrade_module.ts b/packages/upgrade/static/src/upgrade_module.ts index 8124fd640055..084e97aad03b 100644 --- a/packages/upgrade/static/src/upgrade_module.ts +++ b/packages/upgrade/static/src/upgrade_module.ts @@ -42,7 +42,7 @@ import {NgAdapterInjector} from './util'; * that it can be used in an AngularJS template. See `downgradeComponent`. * 3. Creation of an Angular root injector provider that wraps and exposes an AngularJS * service so that it can be injected into an Angular context. See - * {@link UpgradeModule#upgrading-an-angular-1-service Upgrading an AngularJS service} below. + * {@link UpgradeModule#upgrading-an-angularjs-service Upgrading an AngularJS service} below. * 4. Creation of an AngularJS service that wraps and exposes an Angular injectable * so that it can be injected into an AngularJS context. See `downgradeInjectable`. * 5. Bootstrapping of a hybrid Angular application which contains both of the frameworks From f3358f24b884e34d44cfb8ec3db53965153d61e1 Mon Sep 17 00:00:00 2001 From: Pawel Kozlowski Date: Wed, 16 Sep 2026 20:54:04 +0200 Subject: [PATCH 41/41] release: cut the v22.1.7 release --- CHANGELOG.md | 17 +++++++++++++++++ package.json | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54bf5856d86f..bacebfcfde28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ + +# 22.1.7 (2026-09-16) +### compiler +| Commit | Type | Description | +| -- | -- | -- | +| [5e632b639f](https://github.com/angular/angular/commit/5e632b639f736de876823a596dd9e3a094b03e1b) | fix | wrap `@for` collection expression before appending non-null assertion | +### core +| Commit | Type | Description | +| -- | -- | -- | +| [ec48c8305c](https://github.com/angular/angular/commit/ec48c8305c40fbafbab51801f93bb4e4b6a25ea0) | fix | return null when getDirectiveMetadata is called with null or undefined | +### forms +| Commit | Type | Description | +| -- | -- | -- | +| [6555c4ee1e](https://github.com/angular/angular/commit/6555c4ee1ec2aea7eb541d558981b55eb751497c) | fix | mark control as dirty before setting its value in FVC interop | + + + # 22.1.6 (2026-09-09) ### compiler diff --git a/package.json b/package.json index c10e3089d1f6..f1db7ebccbfd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-srcs", - "version": "22.1.6", + "version": "22.1.7", "private": true, "description": "Angular - a web framework for modern web apps", "homepage": "https://github.com/angular/angular",