@angular/router 21.1.5 → 21.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.5
2
+ * @license Angular v21.1.6
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -28,7 +28,7 @@ function mapToResolve(provider) {
28
28
  return (...params) => inject(provider).resolve(...params);
29
29
  }
30
30
 
31
- const VERSION = /* @__PURE__ */new Version('21.1.5');
31
+ const VERSION = /* @__PURE__ */new Version('21.1.6');
32
32
 
33
33
  export { VERSION, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve };
34
34
  //# sourceMappingURL=router.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/router/src/utils/functional_guards.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/router/src/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {inject, Type} from '@angular/core';\n\nimport {\n CanActivate,\n CanActivateChild,\n CanActivateChildFn,\n CanActivateFn,\n CanDeactivate,\n CanDeactivateFn,\n CanMatch,\n CanMatchFn,\n Resolve,\n ResolveFn,\n} from '../models';\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanMatch(providers: Array<Type<CanMatch>>): CanMatchFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canMatch(...params),\n );\n}\n\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivate(providers: Array<Type<CanActivate>>): CanActivateFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivate(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivateChild(\n providers: Array<Type<CanActivateChild>>,\n): CanActivateChildFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivateChild(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanDeactivate<T = unknown>(\n providers: Array<Type<CanDeactivate<T>>>,\n): CanDeactivateFn<T>[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canDeactivate(...params),\n );\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToResolve<T>(provider: Type<Resolve<T>>): ResolveFn<T> {\n return (...params) => inject(provider).resolve(...params);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = /* @__PURE__ */ new Version('21.1.5');\n"],"names":["mapToCanMatch","providers","map","provider","params","inject","canMatch","mapToCanActivate","canActivate","mapToCanActivateChild","canActivateChild","mapToCanDeactivate","canDeactivate","mapToResolve","resolve","VERSION","Version"],"mappings":";;;;;;;;;;;;;;AAgCM,SAAUA,aAAaA,CAACC,SAAgC,EAAA;EAC5D,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACG,QAAQ,CAAC,GAAGF,MAAM,CAAC,CACzC;AACH;AAWM,SAAUG,gBAAgBA,CAACN,SAAmC,EAAA;EAClE,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACK,WAAW,CAAC,GAAGJ,MAAM,CAAC,CAC5C;AACH;AAUM,SAAUK,qBAAqBA,CACnCR,SAAwC,EAAA;EAExC,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACO,gBAAgB,CAAC,GAAGN,MAAM,CAAC,CACjD;AACH;AAUM,SAAUO,kBAAkBA,CAChCV,SAAwC,EAAA;EAExC,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACS,aAAa,CAAC,GAAGR,MAAM,CAAC,CAC9C;AACH;AAUM,SAAUS,YAAYA,CAAIV,QAA0B,EAAA;AACxD,EAAA,OAAO,CAAC,GAAGC,MAAM,KAAKC,MAAM,CAACF,QAAQ,CAAC,CAACW,OAAO,CAAC,GAAGV,MAAM,CAAC;AAC3D;;ACpFO,MAAMW,OAAO,kBAAmB,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
1
+ {"version":3,"file":"router.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/router/src/utils/functional_guards.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/router/src/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {inject, Type} from '@angular/core';\n\nimport {\n CanActivate,\n CanActivateChild,\n CanActivateChildFn,\n CanActivateFn,\n CanDeactivate,\n CanDeactivateFn,\n CanMatch,\n CanMatchFn,\n Resolve,\n ResolveFn,\n} from '../models';\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanMatch(providers: Array<Type<CanMatch>>): CanMatchFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canMatch(...params),\n );\n}\n\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivate(providers: Array<Type<CanActivate>>): CanActivateFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivate(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanActivateChild(\n providers: Array<Type<CanActivateChild>>,\n): CanActivateChildFn[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canActivateChild(...params),\n );\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToCanDeactivate<T = unknown>(\n providers: Array<Type<CanDeactivate<T>>>,\n): CanDeactivateFn<T>[] {\n return providers.map(\n (provider) =>\n (...params) =>\n inject(provider).canDeactivate(...params),\n );\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nexport function mapToResolve<T>(provider: Type<Resolve<T>>): ResolveFn<T> {\n return (...params) => inject(provider).resolve(...params);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = /* @__PURE__ */ new Version('21.1.6');\n"],"names":["mapToCanMatch","providers","map","provider","params","inject","canMatch","mapToCanActivate","canActivate","mapToCanActivateChild","canActivateChild","mapToCanDeactivate","canDeactivate","mapToResolve","resolve","VERSION","Version"],"mappings":";;;;;;;;;;;;;;AAgCM,SAAUA,aAAaA,CAACC,SAAgC,EAAA;EAC5D,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACG,QAAQ,CAAC,GAAGF,MAAM,CAAC,CACzC;AACH;AAWM,SAAUG,gBAAgBA,CAACN,SAAmC,EAAA;EAClE,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACK,WAAW,CAAC,GAAGJ,MAAM,CAAC,CAC5C;AACH;AAUM,SAAUK,qBAAqBA,CACnCR,SAAwC,EAAA;EAExC,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACO,gBAAgB,CAAC,GAAGN,MAAM,CAAC,CACjD;AACH;AAUM,SAAUO,kBAAkBA,CAChCV,SAAwC,EAAA;EAExC,OAAOA,SAAS,CAACC,GAAG,CACjBC,QAAQ,IACP,CAAC,GAAGC,MAAM,KACRC,MAAM,CAACF,QAAQ,CAAC,CAACS,aAAa,CAAC,GAAGR,MAAM,CAAC,CAC9C;AACH;AAUM,SAAUS,YAAYA,CAAIV,QAA0B,EAAA;AACxD,EAAA,OAAO,CAAC,GAAGC,MAAM,KAAKC,MAAM,CAACF,QAAQ,CAAC,CAACW,OAAO,CAAC,GAAGV,MAAM,CAAC;AAC3D;;ACpFO,MAAMW,OAAO,kBAAmB,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.5
2
+ * @license Angular v21.1.6
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -33,7 +33,7 @@ class RouterTestingModule {
33
33
  }
34
34
  static ɵfac = i0.ɵɵngDeclareFactory({
35
35
  minVersion: "12.0.0",
36
- version: "21.1.5",
36
+ version: "21.1.6",
37
37
  ngImport: i0,
38
38
  type: RouterTestingModule,
39
39
  deps: [],
@@ -41,14 +41,14 @@ class RouterTestingModule {
41
41
  });
42
42
  static ɵmod = i0.ɵɵngDeclareNgModule({
43
43
  minVersion: "14.0.0",
44
- version: "21.1.5",
44
+ version: "21.1.6",
45
45
  ngImport: i0,
46
46
  type: RouterTestingModule,
47
47
  exports: [RouterModule]
48
48
  });
49
49
  static ɵinj = i0.ɵɵngDeclareInjector({
50
50
  minVersion: "12.0.0",
51
- version: "21.1.5",
51
+ version: "21.1.6",
52
52
  ngImport: i0,
53
53
  type: RouterTestingModule,
54
54
  providers: [ROUTER_PROVIDERS, provideLocationMocks(), withPreloading(NoPreloading).ɵproviders, {
@@ -61,7 +61,7 @@ class RouterTestingModule {
61
61
  }
62
62
  i0.ɵɵngDeclareClassMetadata({
63
63
  minVersion: "12.0.0",
64
- version: "21.1.5",
64
+ version: "21.1.6",
65
65
  ngImport: i0,
66
66
  type: RouterTestingModule,
67
67
  decorators: [{
@@ -97,7 +97,7 @@ class RootFixtureService {
97
97
  }
98
98
  static ɵfac = i0.ɵɵngDeclareFactory({
99
99
  minVersion: "12.0.0",
100
- version: "21.1.5",
100
+ version: "21.1.6",
101
101
  ngImport: i0,
102
102
  type: RootFixtureService,
103
103
  deps: [],
@@ -105,7 +105,7 @@ class RootFixtureService {
105
105
  });
106
106
  static ɵprov = i0.ɵɵngDeclareInjectable({
107
107
  minVersion: "12.0.0",
108
- version: "21.1.5",
108
+ version: "21.1.6",
109
109
  ngImport: i0,
110
110
  type: RootFixtureService,
111
111
  providedIn: 'root'
@@ -113,7 +113,7 @@ class RootFixtureService {
113
113
  }
114
114
  i0.ɵɵngDeclareClassMetadata({
115
115
  minVersion: "12.0.0",
116
- version: "21.1.5",
116
+ version: "21.1.6",
117
117
  ngImport: i0,
118
118
  type: RootFixtureService,
119
119
  decorators: [{
@@ -130,7 +130,7 @@ class RootCmp {
130
130
  }] : []));
131
131
  static ɵfac = i0.ɵɵngDeclareFactory({
132
132
  minVersion: "12.0.0",
133
- version: "21.1.5",
133
+ version: "21.1.6",
134
134
  ngImport: i0,
135
135
  type: RootCmp,
136
136
  deps: [],
@@ -138,7 +138,7 @@ class RootCmp {
138
138
  });
139
139
  static ɵcmp = i0.ɵɵngDeclareComponent({
140
140
  minVersion: "14.0.0",
141
- version: "21.1.5",
141
+ version: "21.1.6",
142
142
  type: RootCmp,
143
143
  isStandalone: true,
144
144
  selector: "ng-component",
@@ -163,7 +163,7 @@ class RootCmp {
163
163
  }
164
164
  i0.ɵɵngDeclareClassMetadata({
165
165
  minVersion: "12.0.0",
166
- version: "21.1.5",
166
+ version: "21.1.6",
167
167
  ngImport: i0,
168
168
  type: RootCmp,
169
169
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/router/testing/src/router_testing_module.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/router/testing/src/router_testing_harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {provideLocationMocks} from '@angular/common/testing';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {\n ExtraOptions,\n NoPreloading,\n ROUTER_CONFIGURATION,\n RouterModule,\n ROUTES,\n Routes,\n withPreloading,\n ɵROUTER_PROVIDERS as ROUTER_PROVIDERS,\n} from '../../index';\n\n/**\n * @description\n *\n * Sets up the router to be used for testing.\n *\n * The modules sets up the router to be used for testing.\n * It provides spy implementations of `Location` and `LocationStrategy`.\n *\n * @usageNotes\n * ### Example\n *\n * ```ts\n * beforeEach(() => {\n * TestBed.configureTestingModule({\n * imports: [\n * RouterModule.forRoot(\n * [{path: '', component: BlankCmp}, {path: 'simple', component: SimpleCmp}]\n * )\n * ]\n * });\n * });\n * ```\n *\n * @publicApi\n * @deprecated Use `provideRouter` or `RouterModule`/`RouterModule.forRoot` instead.\n * This module was previously used to provide a helpful collection of test fakes,\n * most notably those for `Location` and `LocationStrategy`. These are generally not\n * required anymore, as `MockPlatformLocation` is provided in `TestBed` by default.\n * However, you can use them directly with `provideLocationMocks`.\n */\n@NgModule({\n exports: [RouterModule],\n providers: [\n ROUTER_PROVIDERS,\n provideLocationMocks(),\n withPreloading(NoPreloading).ɵproviders,\n {provide: ROUTES, multi: true, useValue: []},\n ],\n})\nexport class RouterTestingModule {\n static withRoutes(\n routes: Routes,\n config?: ExtraOptions,\n ): ModuleWithProviders<RouterTestingModule> {\n return {\n ngModule: RouterTestingModule,\n providers: [\n {provide: ROUTES, multi: true, useValue: routes},\n {provide: ROUTER_CONFIGURATION, useValue: config ? config : {}},\n ],\n };\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Component,\n DebugElement,\n Injectable,\n Type,\n ViewChild,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {ComponentFixture, TestBed} from '@angular/core/testing';\nimport {Router, RouterOutlet, ɵafterNextNavigation as afterNextNavigation} from '../../index';\n\n@Injectable({providedIn: 'root'})\nexport class RootFixtureService {\n private fixture?: ComponentFixture<RootCmp>;\n private harness?: RouterTestingHarness;\n\n createHarness(): RouterTestingHarness {\n if (this.harness) {\n throw new Error('Only one harness should be created per test.');\n }\n this.harness = new RouterTestingHarness(this.getRootFixture());\n return this.harness;\n }\n\n private getRootFixture(): ComponentFixture<RootCmp> {\n if (this.fixture !== undefined) {\n return this.fixture;\n }\n this.fixture = TestBed.createComponent(RootCmp);\n this.fixture.detectChanges();\n return this.fixture;\n }\n}\n\n@Component({\n template: '<router-outlet [routerOutletData]=\"routerOutletData()\"></router-outlet>',\n imports: [RouterOutlet],\n})\nexport class RootCmp {\n @ViewChild(RouterOutlet) outlet?: RouterOutlet;\n readonly routerOutletData = signal<unknown>(undefined);\n}\n\n/**\n * A testing harness for the `Router` to reduce the boilerplate needed to test routes and routed\n * components.\n *\n * @publicApi\n */\nexport class RouterTestingHarness {\n /**\n * Creates a `RouterTestingHarness` instance.\n *\n * The `RouterTestingHarness` also creates its own root component with a `RouterOutlet` for the\n * purposes of rendering route components.\n *\n * Throws an error if an instance has already been created.\n * Use of this harness also requires `destroyAfterEach: true` in the `ModuleTeardownOptions`\n *\n * @param initialUrl The target of navigation to trigger before returning the harness.\n */\n static async create(initialUrl?: string): Promise<RouterTestingHarness> {\n const harness = TestBed.inject(RootFixtureService).createHarness();\n if (initialUrl !== undefined) {\n await harness.navigateByUrl(initialUrl);\n }\n return harness;\n }\n\n /**\n * Fixture of the root component of the RouterTestingHarness\n */\n public readonly fixture: ComponentFixture<{routerOutletData: WritableSignal<unknown>}>;\n\n /** @internal */\n constructor(fixture: ComponentFixture<{routerOutletData: WritableSignal<unknown>}>) {\n this.fixture = fixture;\n }\n\n /** Instructs the root fixture to run change detection. */\n detectChanges(): void {\n this.fixture.detectChanges();\n }\n /** The `DebugElement` of the `RouterOutlet` component. `null` if the outlet is not activated. */\n get routeDebugElement(): DebugElement | null {\n const outlet = (this.fixture.componentInstance as RootCmp).outlet;\n if (!outlet || !outlet.isActivated) {\n return null;\n }\n return this.fixture.debugElement.query((v) => v.componentInstance === outlet.component);\n }\n /** The native element of the `RouterOutlet` component. `null` if the outlet is not activated. */\n get routeNativeElement(): HTMLElement | null {\n return this.routeDebugElement?.nativeElement ?? null;\n }\n\n /**\n * Triggers a `Router` navigation and waits for it to complete.\n *\n * The root component with a `RouterOutlet` created for the harness is used to render `Route`\n * components. The root component is reused within the same test in subsequent calls to\n * `navigateForTest`.\n *\n * When testing `Routes` with a guards that reject the navigation, the `RouterOutlet` might not be\n * activated and the `activatedComponent` may be `null`.\n *\n * {@example router/testing/test/router_testing_harness_examples.spec.ts region='Guard'}\n *\n * @param url The target of the navigation. Passed to `Router.navigateByUrl`.\n * @returns The activated component instance of the `RouterOutlet` after navigation completes\n * (`null` if the outlet does not get activated).\n */\n async navigateByUrl(url: string): Promise<null | {}>;\n /**\n * Triggers a router navigation and waits for it to complete.\n *\n * The root component with a `RouterOutlet` created for the harness is used to render `Route`\n * components.\n *\n * {@example router/testing/test/router_testing_harness_examples.spec.ts region='RoutedComponent'}\n *\n * The root component is reused within the same test in subsequent calls to `navigateByUrl`.\n *\n * This function also makes it easier to test components that depend on `ActivatedRoute` data.\n *\n * {@example router/testing/test/router_testing_harness_examples.spec.ts region='ActivatedRoute'}\n *\n * @param url The target of the navigation. Passed to `Router.navigateByUrl`.\n * @param requiredRoutedComponentType After navigation completes, the required type for the\n * activated component of the `RouterOutlet`. If the outlet is not activated or a different\n * component is activated, this function will throw an error.\n * @returns The activated component instance of the `RouterOutlet` after navigation completes.\n */\n async navigateByUrl<T>(url: string, requiredRoutedComponentType: Type<T>): Promise<T>;\n async navigateByUrl<T>(url: string, requiredRoutedComponentType?: Type<T>): Promise<T | null> {\n const router = TestBed.inject(Router);\n let resolveFn!: () => void;\n const redirectTrackingPromise = new Promise<void>((resolve) => {\n resolveFn = resolve;\n });\n afterNextNavigation(TestBed.inject(Router), resolveFn);\n await router.navigateByUrl(url);\n await redirectTrackingPromise;\n this.fixture.detectChanges();\n const outlet = (this.fixture.componentInstance as RootCmp).outlet;\n // The outlet might not be activated if the user is testing a navigation for a guard that\n // rejects\n if (outlet && outlet.isActivated && outlet.activatedRoute.component) {\n const activatedComponent = outlet.component;\n if (\n requiredRoutedComponentType !== undefined &&\n !(activatedComponent instanceof requiredRoutedComponentType)\n ) {\n throw new Error(\n `Unexpected routed component type. Expected ${requiredRoutedComponentType.name} but got ${activatedComponent.constructor.name}`,\n );\n }\n return activatedComponent as T;\n } else {\n if (requiredRoutedComponentType !== undefined) {\n throw new Error(\n `Unexpected routed component type. Expected ${requiredRoutedComponentType.name} but the navigation did not activate any component.`,\n );\n }\n return null;\n }\n }\n}\n"],"names":["RouterTestingModule","withRoutes","routes","config","ngModule","providers","provide","ROUTES","multi","useValue","ROUTER_CONFIGURATION","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","RouterModule","ɵinj","ɵɵngDeclareInjector","ROUTER_PROVIDERS","provideLocationMocks","withPreloading","NoPreloading","ɵproviders","imports","decorators","args","exports","RootFixtureService","fixture","harness","createHarness","Error","RouterTestingHarness","getRootFixture","undefined","TestBed","createComponent","RootCmp","detectChanges","Injectable","ɵprov","ɵɵngDeclareInjectable","providedIn","outlet","routerOutletData","signal","Component","ɵcmp","ɵɵngDeclareComponent","isStandalone","selector","viewQueries","propertyName","first","predicate","RouterOutlet","descendants","template","inputs","outputs","exportAs","ViewChild","create","initialUrl","inject","navigateByUrl","constructor","routeDebugElement","componentInstance","isActivated","debugElement","query","v","component","routeNativeElement","nativeElement","url","requiredRoutedComponentType","router","Router","resolveFn","redirectTrackingPromise","Promise","resolve","afterNextNavigation","activatedRoute","activatedComponent","name"],"mappings":"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"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/router/testing/src/router_testing_module.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/router/testing/src/router_testing_harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {provideLocationMocks} from '@angular/common/testing';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {\n ExtraOptions,\n NoPreloading,\n ROUTER_CONFIGURATION,\n RouterModule,\n ROUTES,\n Routes,\n withPreloading,\n ɵROUTER_PROVIDERS as ROUTER_PROVIDERS,\n} from '../../index';\n\n/**\n * @description\n *\n * Sets up the router to be used for testing.\n *\n * The modules sets up the router to be used for testing.\n * It provides spy implementations of `Location` and `LocationStrategy`.\n *\n * @usageNotes\n * ### Example\n *\n * ```ts\n * beforeEach(() => {\n * TestBed.configureTestingModule({\n * imports: [\n * RouterModule.forRoot(\n * [{path: '', component: BlankCmp}, {path: 'simple', component: SimpleCmp}]\n * )\n * ]\n * });\n * });\n * ```\n *\n * @publicApi\n * @deprecated Use `provideRouter` or `RouterModule`/`RouterModule.forRoot` instead.\n * This module was previously used to provide a helpful collection of test fakes,\n * most notably those for `Location` and `LocationStrategy`. These are generally not\n * required anymore, as `MockPlatformLocation` is provided in `TestBed` by default.\n * However, you can use them directly with `provideLocationMocks`.\n */\n@NgModule({\n exports: [RouterModule],\n providers: [\n ROUTER_PROVIDERS,\n provideLocationMocks(),\n withPreloading(NoPreloading).ɵproviders,\n {provide: ROUTES, multi: true, useValue: []},\n ],\n})\nexport class RouterTestingModule {\n static withRoutes(\n routes: Routes,\n config?: ExtraOptions,\n ): ModuleWithProviders<RouterTestingModule> {\n return {\n ngModule: RouterTestingModule,\n providers: [\n {provide: ROUTES, multi: true, useValue: routes},\n {provide: ROUTER_CONFIGURATION, useValue: config ? config : {}},\n ],\n };\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Component,\n DebugElement,\n Injectable,\n Type,\n ViewChild,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {ComponentFixture, TestBed} from '@angular/core/testing';\nimport {Router, RouterOutlet, ɵafterNextNavigation as afterNextNavigation} from '../../index';\n\n@Injectable({providedIn: 'root'})\nexport class RootFixtureService {\n private fixture?: ComponentFixture<RootCmp>;\n private harness?: RouterTestingHarness;\n\n createHarness(): RouterTestingHarness {\n if (this.harness) {\n throw new Error('Only one harness should be created per test.');\n }\n this.harness = new RouterTestingHarness(this.getRootFixture());\n return this.harness;\n }\n\n private getRootFixture(): ComponentFixture<RootCmp> {\n if (this.fixture !== undefined) {\n return this.fixture;\n }\n this.fixture = TestBed.createComponent(RootCmp);\n this.fixture.detectChanges();\n return this.fixture;\n }\n}\n\n@Component({\n template: '<router-outlet [routerOutletData]=\"routerOutletData()\"></router-outlet>',\n imports: [RouterOutlet],\n})\nexport class RootCmp {\n @ViewChild(RouterOutlet) outlet?: RouterOutlet;\n readonly routerOutletData = signal<unknown>(undefined);\n}\n\n/**\n * A testing harness for the `Router` to reduce the boilerplate needed to test routes and routed\n * components.\n *\n * @publicApi\n */\nexport class RouterTestingHarness {\n /**\n * Creates a `RouterTestingHarness` instance.\n *\n * The `RouterTestingHarness` also creates its own root component with a `RouterOutlet` for the\n * purposes of rendering route components.\n *\n * Throws an error if an instance has already been created.\n * Use of this harness also requires `destroyAfterEach: true` in the `ModuleTeardownOptions`\n *\n * @param initialUrl The target of navigation to trigger before returning the harness.\n */\n static async create(initialUrl?: string): Promise<RouterTestingHarness> {\n const harness = TestBed.inject(RootFixtureService).createHarness();\n if (initialUrl !== undefined) {\n await harness.navigateByUrl(initialUrl);\n }\n return harness;\n }\n\n /**\n * Fixture of the root component of the RouterTestingHarness\n */\n public readonly fixture: ComponentFixture<{routerOutletData: WritableSignal<unknown>}>;\n\n /** @internal */\n constructor(fixture: ComponentFixture<{routerOutletData: WritableSignal<unknown>}>) {\n this.fixture = fixture;\n }\n\n /** Instructs the root fixture to run change detection. */\n detectChanges(): void {\n this.fixture.detectChanges();\n }\n /** The `DebugElement` of the `RouterOutlet` component. `null` if the outlet is not activated. */\n get routeDebugElement(): DebugElement | null {\n const outlet = (this.fixture.componentInstance as RootCmp).outlet;\n if (!outlet || !outlet.isActivated) {\n return null;\n }\n return this.fixture.debugElement.query((v) => v.componentInstance === outlet.component);\n }\n /** The native element of the `RouterOutlet` component. `null` if the outlet is not activated. */\n get routeNativeElement(): HTMLElement | null {\n return this.routeDebugElement?.nativeElement ?? null;\n }\n\n /**\n * Triggers a `Router` navigation and waits for it to complete.\n *\n * The root component with a `RouterOutlet` created for the harness is used to render `Route`\n * components. The root component is reused within the same test in subsequent calls to\n * `navigateForTest`.\n *\n * When testing `Routes` with a guards that reject the navigation, the `RouterOutlet` might not be\n * activated and the `activatedComponent` may be `null`.\n *\n * {@example router/testing/test/router_testing_harness_examples.spec.ts region='Guard'}\n *\n * @param url The target of the navigation. Passed to `Router.navigateByUrl`.\n * @returns The activated component instance of the `RouterOutlet` after navigation completes\n * (`null` if the outlet does not get activated).\n */\n async navigateByUrl(url: string): Promise<null | {}>;\n /**\n * Triggers a router navigation and waits for it to complete.\n *\n * The root component with a `RouterOutlet` created for the harness is used to render `Route`\n * components.\n *\n * {@example router/testing/test/router_testing_harness_examples.spec.ts region='RoutedComponent'}\n *\n * The root component is reused within the same test in subsequent calls to `navigateByUrl`.\n *\n * This function also makes it easier to test components that depend on `ActivatedRoute` data.\n *\n * {@example router/testing/test/router_testing_harness_examples.spec.ts region='ActivatedRoute'}\n *\n * @param url The target of the navigation. Passed to `Router.navigateByUrl`.\n * @param requiredRoutedComponentType After navigation completes, the required type for the\n * activated component of the `RouterOutlet`. If the outlet is not activated or a different\n * component is activated, this function will throw an error.\n * @returns The activated component instance of the `RouterOutlet` after navigation completes.\n */\n async navigateByUrl<T>(url: string, requiredRoutedComponentType: Type<T>): Promise<T>;\n async navigateByUrl<T>(url: string, requiredRoutedComponentType?: Type<T>): Promise<T | null> {\n const router = TestBed.inject(Router);\n let resolveFn!: () => void;\n const redirectTrackingPromise = new Promise<void>((resolve) => {\n resolveFn = resolve;\n });\n afterNextNavigation(TestBed.inject(Router), resolveFn);\n await router.navigateByUrl(url);\n await redirectTrackingPromise;\n this.fixture.detectChanges();\n const outlet = (this.fixture.componentInstance as RootCmp).outlet;\n // The outlet might not be activated if the user is testing a navigation for a guard that\n // rejects\n if (outlet && outlet.isActivated && outlet.activatedRoute.component) {\n const activatedComponent = outlet.component;\n if (\n requiredRoutedComponentType !== undefined &&\n !(activatedComponent instanceof requiredRoutedComponentType)\n ) {\n throw new Error(\n `Unexpected routed component type. Expected ${requiredRoutedComponentType.name} but got ${activatedComponent.constructor.name}`,\n );\n }\n return activatedComponent as T;\n } else {\n if (requiredRoutedComponentType !== undefined) {\n throw new Error(\n `Unexpected routed component type. Expected ${requiredRoutedComponentType.name} but the navigation did not activate any component.`,\n );\n }\n return null;\n }\n }\n}\n"],"names":["RouterTestingModule","withRoutes","routes","config","ngModule","providers","provide","ROUTES","multi","useValue","ROUTER_CONFIGURATION","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","RouterModule","ɵinj","ɵɵngDeclareInjector","ROUTER_PROVIDERS","provideLocationMocks","withPreloading","NoPreloading","ɵproviders","imports","decorators","args","exports","RootFixtureService","fixture","harness","createHarness","Error","RouterTestingHarness","getRootFixture","undefined","TestBed","createComponent","RootCmp","detectChanges","Injectable","ɵprov","ɵɵngDeclareInjectable","providedIn","outlet","routerOutletData","signal","Component","ɵcmp","ɵɵngDeclareComponent","isStandalone","selector","viewQueries","propertyName","first","predicate","RouterOutlet","descendants","template","inputs","outputs","exportAs","ViewChild","create","initialUrl","inject","navigateByUrl","constructor","routeDebugElement","componentInstance","isActivated","debugElement","query","v","component","routeNativeElement","nativeElement","url","requiredRoutedComponentType","router","Router","resolveFn","redirectTrackingPromise","Promise","resolve","afterNextNavigation","activatedRoute","activatedComponent","name"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.5
2
+ * @license Angular v21.1.6
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/router/upgrade/src/upgrade.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Location} from '@angular/common';\nimport {APP_BOOTSTRAP_LISTENER, ComponentRef, inject} from '@angular/core';\nimport {Router, ɵRestoredState as RestoredState} from '../../index';\nimport {UpgradeModule} from '@angular/upgrade/static';\n\n/**\n * Creates an initializer that sets up `ngRoute` integration\n * along with setting up the Angular router.\n *\n * @usageNotes\n *\n * For standalone applications:\n * ```ts\n * export const appConfig: ApplicationConfig = {\n * providers: [RouterUpgradeInitializer],\n * };\n * ```\n *\n * For NgModule based applications:\n * ```ts\n * @NgModule({\n * imports: [\n * RouterModule.forRoot(SOME_ROUTES),\n * UpgradeModule\n * ],\n * providers: [\n * RouterUpgradeInitializer\n * ]\n * })\n * export class AppModule {\n * ngDoBootstrap() {}\n * }\n * ```\n *\n * @publicApi\n */\nexport const RouterUpgradeInitializer = {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useFactory: locationSyncBootstrapListener as () => () => void,\n};\n\n/**\n * @internal\n */\nexport function locationSyncBootstrapListener() {\n const ngUpgrade = inject(UpgradeModule);\n\n return () => {\n setUpLocationSync(ngUpgrade);\n };\n}\n\n/**\n * Sets up a location change listener to trigger `history.pushState`.\n * Works around the problem that `onPopState` does not trigger `history.pushState`.\n * Must be called *after* calling `UpgradeModule.bootstrap`.\n *\n * @param ngUpgrade The upgrade NgModule.\n * @param urlType The location strategy.\n * @see {@link /api/common/HashLocationStrategy HashLocationStrategy}\n * @see {@link /api/common/PathLocationStrategy PathLocationStrategy}\n *\n * @publicApi\n */\nexport function setUpLocationSync(\n ngUpgrade: UpgradeModule,\n urlType: 'path' | 'hash' = 'path',\n): void {\n if (!ngUpgrade.$injector) {\n throw new Error(`\n RouterUpgradeInitializer can be used only after UpgradeModule.bootstrap has been called.\n Remove RouterUpgradeInitializer and call setUpLocationSync after UpgradeModule.bootstrap.\n `);\n }\n\n const router: Router = ngUpgrade.injector.get(Router);\n const location: Location = ngUpgrade.injector.get(Location);\n\n ngUpgrade.$injector\n .get('$rootScope')\n .$on(\n '$locationChangeStart',\n (\n event: any,\n newUrl: string,\n oldUrl: string,\n newState?: {[k: string]: unknown} | RestoredState,\n oldState?: {[k: string]: unknown} | RestoredState,\n ) => {\n // Navigations coming from Angular router have a navigationId state\n // property. Don't trigger Angular router navigation again if it is\n // caused by a URL change from the current Angular router\n // navigation.\n const currentNavigationId = router.getCurrentNavigation()?.id;\n const newStateNavigationId = newState?.navigationId;\n if (newStateNavigationId !== undefined && newStateNavigationId === currentNavigationId) {\n return;\n }\n\n let url;\n if (urlType === 'path') {\n url = resolveUrl(newUrl);\n } else if (urlType === 'hash') {\n // Remove the first hash from the URL\n const hashIdx = newUrl.indexOf('#');\n url = resolveUrl(newUrl.substring(0, hashIdx) + newUrl.substring(hashIdx + 1));\n } else {\n throw 'Invalid URLType passed to setUpLocationSync: ' + urlType;\n }\n const path = location.normalize(url.pathname);\n router.navigateByUrl(path + url.search + url.hash);\n },\n );\n}\n\n/**\n * Normalizes and parses a URL.\n *\n * - Normalizing means that a relative URL will be resolved into an absolute URL in the context of\n * the application document.\n * - Parsing means that the anchor's `protocol`, `hostname`, `port`, `pathname` and related\n * properties are all populated to reflect the normalized URL.\n *\n * While this approach has wide compatibility, it doesn't work as expected on IE. On IE, normalizing\n * happens similar to other browsers, but the parsed components will not be set. (E.g. if you assign\n * `a.href = 'foo'`, then `a.protocol`, `a.host`, etc. will not be correctly updated.)\n * We work around that by performing the parsing in a 2nd step by taking a previously normalized URL\n * and assigning it again. This correctly populates all properties.\n *\n * See\n * https://github.com/angular/angular.js/blob/2c7400e7d07b0f6cec1817dab40b9250ce8ebce6/src/ng/urlUtils.js#L26-L33\n * for more info.\n */\nlet anchor: HTMLAnchorElement | undefined;\nfunction resolveUrl(url: string): {pathname: string; search: string; hash: string} {\n anchor ??= document.createElement('a');\n\n anchor.setAttribute('href', url);\n anchor.setAttribute('href', anchor.href);\n\n return {\n // IE does not start `pathname` with `/` like other browsers.\n pathname: `/${anchor.pathname.replace(/^\\//, '')}`,\n search: anchor.search,\n hash: anchor.hash,\n };\n}\n"],"names":["RouterUpgradeInitializer","provide","APP_BOOTSTRAP_LISTENER","multi","useFactory","locationSyncBootstrapListener","ngUpgrade","inject","UpgradeModule","setUpLocationSync","urlType","$injector","Error","router","injector","get","Router","location","Location","$on","event","newUrl","oldUrl","newState","oldState","currentNavigationId","getCurrentNavigation","id","newStateNavigationId","navigationId","undefined","url","resolveUrl","hashIdx","indexOf","substring","path","normalize","pathname","navigateByUrl","search","hash","anchor","document","createElement","setAttribute","href","replace"],"mappings":";;;;;;;;;;;;;;AA4CO,MAAMA,wBAAwB,GAAG;AACtCC,EAAAA,OAAO,EAAEC,sBAAsB;AAC/BC,EAAAA,KAAK,EAAE,IAAI;AACXC,EAAAA,UAAU,EAAEC;;SAMEA,6BAA6BA,GAAA;AAC3C,EAAA,MAAMC,SAAS,GAAGC,MAAM,CAACC,aAAa,CAAC;AAEvC,EAAA,OAAO,MAAK;IACVC,iBAAiB,CAACH,SAAS,CAAC;GAC7B;AACH;SAcgBG,iBAAiBA,CAC/BH,SAAwB,EACxBI,UAA2B,MAAM,EAAA;AAEjC,EAAA,IAAI,CAACJ,SAAS,CAACK,SAAS,EAAE;IACxB,MAAM,IAAIC,KAAK,CAAC;;;AAGb,MAAA,CAAA,CAAC;AACN;EAEA,MAAMC,MAAM,GAAWP,SAAS,CAACQ,QAAQ,CAACC,GAAG,CAACC,MAAM,CAAC;EACrD,MAAMC,QAAQ,GAAaX,SAAS,CAACQ,QAAQ,CAACC,GAAG,CAACG,QAAQ,CAAC;EAE3DZ,SAAS,CAACK,SAAS,CAChBI,GAAG,CAAC,YAAY,CAAA,CAChBI,GAAG,CACF,sBAAsB,EACtB,CACEC,KAAU,EACVC,MAAc,EACdC,MAAc,EACdC,QAAiD,EACjDC,QAAiD,KAC/C;IAKF,MAAMC,mBAAmB,GAAGZ,MAAM,CAACa,oBAAoB,EAAE,EAAEC,EAAE;AAC7D,IAAA,MAAMC,oBAAoB,GAAGL,QAAQ,EAAEM,YAAY;AACnD,IAAA,IAAID,oBAAoB,KAAKE,SAAS,IAAIF,oBAAoB,KAAKH,mBAAmB,EAAE;AACtF,MAAA;AACF;AAEA,IAAA,IAAIM,GAAG;IACP,IAAIrB,OAAO,KAAK,MAAM,EAAE;AACtBqB,MAAAA,GAAG,GAAGC,UAAU,CAACX,MAAM,CAAC;AAC1B,KAAA,MAAO,IAAIX,OAAO,KAAK,MAAM,EAAE;AAE7B,MAAA,MAAMuB,OAAO,GAAGZ,MAAM,CAACa,OAAO,CAAC,GAAG,CAAC;MACnCH,GAAG,GAAGC,UAAU,CAACX,MAAM,CAACc,SAAS,CAAC,CAAC,EAAEF,OAAO,CAAC,GAAGZ,MAAM,CAACc,SAAS,CAACF,OAAO,GAAG,CAAC,CAAC,CAAC;AAChF,KAAA,MAAO;MACL,MAAM,+CAA+C,GAAGvB,OAAO;AACjE;IACA,MAAM0B,IAAI,GAAGnB,QAAQ,CAACoB,SAAS,CAACN,GAAG,CAACO,QAAQ,CAAC;AAC7CzB,IAAAA,MAAM,CAAC0B,aAAa,CAACH,IAAI,GAAGL,GAAG,CAACS,MAAM,GAAGT,GAAG,CAACU,IAAI,CAAC;AACpD,GAAC,CACF;AACL;AAoBA,IAAIC,MAAqC;AACzC,SAASV,UAAUA,CAACD,GAAW,EAAA;AAC7BW,EAAAA,MAAM,KAAKC,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC;AAEtCF,EAAAA,MAAM,CAACG,YAAY,CAAC,MAAM,EAAEd,GAAG,CAAC;EAChCW,MAAM,CAACG,YAAY,CAAC,MAAM,EAAEH,MAAM,CAACI,IAAI,CAAC;EAExC,OAAO;AAELR,IAAAA,QAAQ,EAAE,CAAA,CAAA,EAAII,MAAM,CAACJ,QAAQ,CAACS,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAE,CAAA;IAClDP,MAAM,EAAEE,MAAM,CAACF,MAAM;IACrBC,IAAI,EAAEC,MAAM,CAACD;GACd;AACH;;;;"}
1
+ {"version":3,"file":"upgrade.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/router/upgrade/src/upgrade.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Location} from '@angular/common';\nimport {APP_BOOTSTRAP_LISTENER, ComponentRef, inject} from '@angular/core';\nimport {Router, ɵRestoredState as RestoredState} from '../../index';\nimport {UpgradeModule} from '@angular/upgrade/static';\n\n/**\n * Creates an initializer that sets up `ngRoute` integration\n * along with setting up the Angular router.\n *\n * @usageNotes\n *\n * For standalone applications:\n * ```ts\n * export const appConfig: ApplicationConfig = {\n * providers: [RouterUpgradeInitializer],\n * };\n * ```\n *\n * For NgModule based applications:\n * ```ts\n * @NgModule({\n * imports: [\n * RouterModule.forRoot(SOME_ROUTES),\n * UpgradeModule\n * ],\n * providers: [\n * RouterUpgradeInitializer\n * ]\n * })\n * export class AppModule {\n * ngDoBootstrap() {}\n * }\n * ```\n *\n * @publicApi\n */\nexport const RouterUpgradeInitializer = {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useFactory: locationSyncBootstrapListener as () => () => void,\n};\n\n/**\n * @internal\n */\nexport function locationSyncBootstrapListener() {\n const ngUpgrade = inject(UpgradeModule);\n\n return () => {\n setUpLocationSync(ngUpgrade);\n };\n}\n\n/**\n * Sets up a location change listener to trigger `history.pushState`.\n * Works around the problem that `onPopState` does not trigger `history.pushState`.\n * Must be called *after* calling `UpgradeModule.bootstrap`.\n *\n * @param ngUpgrade The upgrade NgModule.\n * @param urlType The location strategy.\n * @see {@link /api/common/HashLocationStrategy HashLocationStrategy}\n * @see {@link /api/common/PathLocationStrategy PathLocationStrategy}\n *\n * @publicApi\n */\nexport function setUpLocationSync(\n ngUpgrade: UpgradeModule,\n urlType: 'path' | 'hash' = 'path',\n): void {\n if (!ngUpgrade.$injector) {\n throw new Error(`\n RouterUpgradeInitializer can be used only after UpgradeModule.bootstrap has been called.\n Remove RouterUpgradeInitializer and call setUpLocationSync after UpgradeModule.bootstrap.\n `);\n }\n\n const router: Router = ngUpgrade.injector.get(Router);\n const location: Location = ngUpgrade.injector.get(Location);\n\n ngUpgrade.$injector\n .get('$rootScope')\n .$on(\n '$locationChangeStart',\n (\n event: any,\n newUrl: string,\n oldUrl: string,\n newState?: {[k: string]: unknown} | RestoredState,\n oldState?: {[k: string]: unknown} | RestoredState,\n ) => {\n // Navigations coming from Angular router have a navigationId state\n // property. Don't trigger Angular router navigation again if it is\n // caused by a URL change from the current Angular router\n // navigation.\n const currentNavigationId = router.getCurrentNavigation()?.id;\n const newStateNavigationId = newState?.navigationId;\n if (newStateNavigationId !== undefined && newStateNavigationId === currentNavigationId) {\n return;\n }\n\n let url;\n if (urlType === 'path') {\n url = resolveUrl(newUrl);\n } else if (urlType === 'hash') {\n // Remove the first hash from the URL\n const hashIdx = newUrl.indexOf('#');\n url = resolveUrl(newUrl.substring(0, hashIdx) + newUrl.substring(hashIdx + 1));\n } else {\n throw 'Invalid URLType passed to setUpLocationSync: ' + urlType;\n }\n const path = location.normalize(url.pathname);\n router.navigateByUrl(path + url.search + url.hash);\n },\n );\n}\n\n/**\n * Normalizes and parses a URL.\n *\n * - Normalizing means that a relative URL will be resolved into an absolute URL in the context of\n * the application document.\n * - Parsing means that the anchor's `protocol`, `hostname`, `port`, `pathname` and related\n * properties are all populated to reflect the normalized URL.\n *\n * While this approach has wide compatibility, it doesn't work as expected on IE. On IE, normalizing\n * happens similar to other browsers, but the parsed components will not be set. (E.g. if you assign\n * `a.href = 'foo'`, then `a.protocol`, `a.host`, etc. will not be correctly updated.)\n * We work around that by performing the parsing in a 2nd step by taking a previously normalized URL\n * and assigning it again. This correctly populates all properties.\n *\n * See\n * https://github.com/angular/angular.js/blob/2c7400e7d07b0f6cec1817dab40b9250ce8ebce6/src/ng/urlUtils.js#L26-L33\n * for more info.\n */\nlet anchor: HTMLAnchorElement | undefined;\nfunction resolveUrl(url: string): {pathname: string; search: string; hash: string} {\n anchor ??= document.createElement('a');\n\n anchor.setAttribute('href', url);\n anchor.setAttribute('href', anchor.href);\n\n return {\n // IE does not start `pathname` with `/` like other browsers.\n pathname: `/${anchor.pathname.replace(/^\\//, '')}`,\n search: anchor.search,\n hash: anchor.hash,\n };\n}\n"],"names":["RouterUpgradeInitializer","provide","APP_BOOTSTRAP_LISTENER","multi","useFactory","locationSyncBootstrapListener","ngUpgrade","inject","UpgradeModule","setUpLocationSync","urlType","$injector","Error","router","injector","get","Router","location","Location","$on","event","newUrl","oldUrl","newState","oldState","currentNavigationId","getCurrentNavigation","id","newStateNavigationId","navigationId","undefined","url","resolveUrl","hashIdx","indexOf","substring","path","normalize","pathname","navigateByUrl","search","hash","anchor","document","createElement","setAttribute","href","replace"],"mappings":";;;;;;;;;;;;;;AA4CO,MAAMA,wBAAwB,GAAG;AACtCC,EAAAA,OAAO,EAAEC,sBAAsB;AAC/BC,EAAAA,KAAK,EAAE,IAAI;AACXC,EAAAA,UAAU,EAAEC;;SAMEA,6BAA6BA,GAAA;AAC3C,EAAA,MAAMC,SAAS,GAAGC,MAAM,CAACC,aAAa,CAAC;AAEvC,EAAA,OAAO,MAAK;IACVC,iBAAiB,CAACH,SAAS,CAAC;GAC7B;AACH;SAcgBG,iBAAiBA,CAC/BH,SAAwB,EACxBI,UAA2B,MAAM,EAAA;AAEjC,EAAA,IAAI,CAACJ,SAAS,CAACK,SAAS,EAAE;IACxB,MAAM,IAAIC,KAAK,CAAC;;;AAGb,MAAA,CAAA,CAAC;AACN;EAEA,MAAMC,MAAM,GAAWP,SAAS,CAACQ,QAAQ,CAACC,GAAG,CAACC,MAAM,CAAC;EACrD,MAAMC,QAAQ,GAAaX,SAAS,CAACQ,QAAQ,CAACC,GAAG,CAACG,QAAQ,CAAC;EAE3DZ,SAAS,CAACK,SAAS,CAChBI,GAAG,CAAC,YAAY,CAAA,CAChBI,GAAG,CACF,sBAAsB,EACtB,CACEC,KAAU,EACVC,MAAc,EACdC,MAAc,EACdC,QAAiD,EACjDC,QAAiD,KAC/C;IAKF,MAAMC,mBAAmB,GAAGZ,MAAM,CAACa,oBAAoB,EAAE,EAAEC,EAAE;AAC7D,IAAA,MAAMC,oBAAoB,GAAGL,QAAQ,EAAEM,YAAY;AACnD,IAAA,IAAID,oBAAoB,KAAKE,SAAS,IAAIF,oBAAoB,KAAKH,mBAAmB,EAAE;AACtF,MAAA;AACF;AAEA,IAAA,IAAIM,GAAG;IACP,IAAIrB,OAAO,KAAK,MAAM,EAAE;AACtBqB,MAAAA,GAAG,GAAGC,UAAU,CAACX,MAAM,CAAC;AAC1B,KAAA,MAAO,IAAIX,OAAO,KAAK,MAAM,EAAE;AAE7B,MAAA,MAAMuB,OAAO,GAAGZ,MAAM,CAACa,OAAO,CAAC,GAAG,CAAC;MACnCH,GAAG,GAAGC,UAAU,CAACX,MAAM,CAACc,SAAS,CAAC,CAAC,EAAEF,OAAO,CAAC,GAAGZ,MAAM,CAACc,SAAS,CAACF,OAAO,GAAG,CAAC,CAAC,CAAC;AAChF,KAAA,MAAO;MACL,MAAM,+CAA+C,GAAGvB,OAAO;AACjE;IACA,MAAM0B,IAAI,GAAGnB,QAAQ,CAACoB,SAAS,CAACN,GAAG,CAACO,QAAQ,CAAC;AAC7CzB,IAAAA,MAAM,CAAC0B,aAAa,CAACH,IAAI,GAAGL,GAAG,CAACS,MAAM,GAAGT,GAAG,CAACU,IAAI,CAAC;AACpD,GAAC,CACF;AACL;AAoBA,IAAIC,MAAqC;AACzC,SAASV,UAAUA,CAACD,GAAW,EAAA;AAC7BW,EAAAA,MAAM,KAAKC,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC;AAEtCF,EAAAA,MAAM,CAACG,YAAY,CAAC,MAAM,EAAEd,GAAG,CAAC;EAChCW,MAAM,CAACG,YAAY,CAAC,MAAM,EAAEH,MAAM,CAACI,IAAI,CAAC;EAExC,OAAO;AAELR,IAAAA,QAAQ,EAAE,CAAA,CAAA,EAAII,MAAM,CAACJ,QAAQ,CAACS,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAE,CAAA;IAClDP,MAAM,EAAEE,MAAM,CAACF,MAAM;IACrBC,IAAI,EAAEC,MAAM,CAACD;GACd;AACH;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/router",
3
- "version": "21.1.5",
3
+ "version": "21.1.6",
4
4
  "description": "Angular - the routing library",
5
5
  "keywords": [
6
6
  "angular",
@@ -27,9 +27,9 @@
27
27
  "@types/dom-navigation": "^1.0.5"
28
28
  },
29
29
  "peerDependencies": {
30
- "@angular/core": "21.1.5",
31
- "@angular/common": "21.1.5",
32
- "@angular/platform-browser": "21.1.5",
30
+ "@angular/core": "21.1.6",
31
+ "@angular/common": "21.1.6",
32
+ "@angular/platform-browser": "21.1.6",
33
33
  "rxjs": "^6.5.3 || ^7.4.0"
34
34
  },
35
35
  "ng-update": {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.5
2
+ * @license Angular v21.1.6
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -9,83 +9,6 @@ import { InjectionToken, Signal, EnvironmentInjector, ComponentRef, EventEmitter
9
9
  import { Observable } from 'rxjs';
10
10
  import { LocationStrategy } from '@angular/common';
11
11
 
12
- /**
13
- * The primary routing outlet.
14
- *
15
- * @publicApi
16
- */
17
- declare const PRIMARY_OUTLET = "primary";
18
- /**
19
- * A collection of matrix and query URL parameters.
20
- * @see {@link convertToParamMap}
21
- * @see {@link ParamMap}
22
- *
23
- * @publicApi
24
- */
25
- type Params = {
26
- [key: string]: any;
27
- };
28
- /**
29
- * A map that provides access to the required and optional parameters
30
- * specific to a route.
31
- * The map supports retrieving a single value with `get()`
32
- * or multiple values with `getAll()`.
33
- *
34
- * @see [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
35
- *
36
- * @publicApi
37
- */
38
- interface ParamMap {
39
- /**
40
- * Reports whether the map contains a given parameter.
41
- * @param name The parameter name.
42
- * @returns True if the map contains the given parameter, false otherwise.
43
- */
44
- has(name: string): boolean;
45
- /**
46
- * Retrieves a single value for a parameter.
47
- * @param name The parameter name.
48
- * @return The parameter's single value,
49
- * or the first value if the parameter has multiple values,
50
- * or `null` when there is no such parameter.
51
- */
52
- get(name: string): string | null;
53
- /**
54
- * Retrieves multiple values for a parameter.
55
- * @param name The parameter name.
56
- * @return An array containing one or more values,
57
- * or an empty array if there is no such parameter.
58
- *
59
- */
60
- getAll(name: string): string[];
61
- /** Names of the parameters in the map. */
62
- readonly keys: string[];
63
- }
64
- /**
65
- * Converts a `Params` instance to a `ParamMap`.
66
- * @param params The instance to convert.
67
- * @returns The new map instance.
68
- *
69
- * @publicApi
70
- */
71
- declare function convertToParamMap(params: Params): ParamMap;
72
- /**
73
- * Matches the route configuration (`route`) against the actual URL (`segments`).
74
- *
75
- * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.
76
- *
77
- * @param segments The remaining unmatched segments in the current navigation
78
- * @param segmentGroup The current segment group being matched
79
- * @param route The `Route` to match against.
80
- *
81
- * @see {@link UrlMatchResult}
82
- * @see {@link Route}
83
- *
84
- * @returns The resulting match information or `null` if the `route` should not match.
85
- * @publicApi
86
- */
87
- declare function defaultUrlMatcher(segments: UrlSegment[], segmentGroup: UrlSegmentGroup, route: Route): UrlMatchResult | null;
88
-
89
12
  /**
90
13
  * Identifies the call or event that triggered a navigation.
91
14
  *
@@ -206,7 +129,7 @@ declare class NavigationStart extends RouterEvent {
206
129
  [k: string]: any;
207
130
  navigationId: number;
208
131
  } | null);
209
- /** @docsNotRequired */
132
+ /** @docs-private */
210
133
  toString(): string;
211
134
  }
212
135
  /**
@@ -229,7 +152,7 @@ declare class NavigationEnd extends RouterEvent {
229
152
  url: string,
230
153
  /** @docsNotRequired */
231
154
  urlAfterRedirects: string);
232
- /** @docsNotRequired */
155
+ /** @docs-private */
233
156
  toString(): string;
234
157
  }
235
158
  /**
@@ -321,7 +244,7 @@ declare class NavigationCancel extends RouterEvent {
321
244
  * used in production.
322
245
  */
323
246
  code?: NavigationCancellationCode | undefined);
324
- /** @docsNotRequired */
247
+ /** @docs-private */
325
248
  toString(): string;
326
249
  }
327
250
  /**
@@ -396,7 +319,7 @@ declare class NavigationError extends RouterEvent {
396
319
  * `RouterStateSnapshot` was created for the navigation.
397
320
  */
398
321
  target?: RouterStateSnapshot | undefined);
399
- /** @docsNotRequired */
322
+ /** @docs-private */
400
323
  toString(): string;
401
324
  }
402
325
  /**
@@ -419,7 +342,7 @@ declare class RoutesRecognized extends RouterEvent {
419
342
  urlAfterRedirects: string,
420
343
  /** @docsNotRequired */
421
344
  state: RouterStateSnapshot);
422
- /** @docsNotRequired */
345
+ /** @docs-private */
423
346
  toString(): string;
424
347
  }
425
348
  /**
@@ -444,6 +367,7 @@ declare class GuardsCheckStart extends RouterEvent {
444
367
  urlAfterRedirects: string,
445
368
  /** @docsNotRequired */
446
369
  state: RouterStateSnapshot);
370
+ /** @docs-private */
447
371
  toString(): string;
448
372
  }
449
373
  /**
@@ -472,6 +396,7 @@ declare class GuardsCheckEnd extends RouterEvent {
472
396
  state: RouterStateSnapshot,
473
397
  /** @docsNotRequired */
474
398
  shouldActivate: boolean);
399
+ /** @docs-private */
475
400
  toString(): string;
476
401
  }
477
402
  /**
@@ -499,6 +424,7 @@ declare class ResolveStart extends RouterEvent {
499
424
  urlAfterRedirects: string,
500
425
  /** @docsNotRequired */
501
426
  state: RouterStateSnapshot);
427
+ /** @docs-private */
502
428
  toString(): string;
503
429
  }
504
430
  /**
@@ -522,6 +448,7 @@ declare class ResolveEnd extends RouterEvent {
522
448
  urlAfterRedirects: string,
523
449
  /** @docsNotRequired */
524
450
  state: RouterStateSnapshot);
451
+ /** @docs-private */
525
452
  toString(): string;
526
453
  }
527
454
  /**
@@ -538,6 +465,7 @@ declare class RouteConfigLoadStart {
538
465
  constructor(
539
466
  /** @docsNotRequired */
540
467
  route: Route);
468
+ /** @docs-private */
541
469
  toString(): string;
542
470
  }
543
471
  /**
@@ -554,6 +482,7 @@ declare class RouteConfigLoadEnd {
554
482
  constructor(
555
483
  /** @docsNotRequired */
556
484
  route: Route);
485
+ /** @docs-private */
557
486
  toString(): string;
558
487
  }
559
488
  /**
@@ -571,6 +500,7 @@ declare class ChildActivationStart {
571
500
  constructor(
572
501
  /** @docsNotRequired */
573
502
  snapshot: ActivatedRouteSnapshot);
503
+ /** @docs-private */
574
504
  toString(): string;
575
505
  }
576
506
  /**
@@ -587,6 +517,7 @@ declare class ChildActivationEnd {
587
517
  constructor(
588
518
  /** @docsNotRequired */
589
519
  snapshot: ActivatedRouteSnapshot);
520
+ /** @docs-private */
590
521
  toString(): string;
591
522
  }
592
523
  /**
@@ -604,6 +535,7 @@ declare class ActivationStart {
604
535
  constructor(
605
536
  /** @docsNotRequired */
606
537
  snapshot: ActivatedRouteSnapshot);
538
+ /** @docs-private */
607
539
  toString(): string;
608
540
  }
609
541
  /**
@@ -621,6 +553,7 @@ declare class ActivationEnd {
621
553
  constructor(
622
554
  /** @docsNotRequired */
623
555
  snapshot: ActivatedRouteSnapshot);
556
+ /** @docs-private */
624
557
  toString(): string;
625
558
  }
626
559
  /**
@@ -647,6 +580,7 @@ declare class Scroll {
647
580
  anchor: string | null,
648
581
  /** @docsNotRequired */
649
582
  scrollBehavior?: "manual" | "after-transition" | undefined);
583
+ /** @docs-private */
650
584
  toString(): string;
651
585
  }
652
586
  /**
@@ -684,6 +618,83 @@ declare class Scroll {
684
618
  */
685
619
  type Event = NavigationStart | NavigationEnd | NavigationCancel | NavigationError | RoutesRecognized | GuardsCheckStart | GuardsCheckEnd | RouteConfigLoadStart | RouteConfigLoadEnd | ChildActivationStart | ChildActivationEnd | ActivationStart | ActivationEnd | Scroll | ResolveStart | ResolveEnd | NavigationSkipped;
686
620
 
621
+ /**
622
+ * The primary routing outlet.
623
+ *
624
+ * @publicApi
625
+ */
626
+ declare const PRIMARY_OUTLET = "primary";
627
+ /**
628
+ * A collection of matrix and query URL parameters.
629
+ * @see {@link convertToParamMap}
630
+ * @see {@link ParamMap}
631
+ *
632
+ * @publicApi
633
+ */
634
+ type Params = {
635
+ [key: string]: any;
636
+ };
637
+ /**
638
+ * A map that provides access to the required and optional parameters
639
+ * specific to a route.
640
+ * The map supports retrieving a single value with `get()`
641
+ * or multiple values with `getAll()`.
642
+ *
643
+ * @see [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
644
+ *
645
+ * @publicApi
646
+ */
647
+ interface ParamMap {
648
+ /**
649
+ * Reports whether the map contains a given parameter.
650
+ * @param name The parameter name.
651
+ * @returns True if the map contains the given parameter, false otherwise.
652
+ */
653
+ has(name: string): boolean;
654
+ /**
655
+ * Retrieves a single value for a parameter.
656
+ * @param name The parameter name.
657
+ * @return The parameter's single value,
658
+ * or the first value if the parameter has multiple values,
659
+ * or `null` when there is no such parameter.
660
+ */
661
+ get(name: string): string | null;
662
+ /**
663
+ * Retrieves multiple values for a parameter.
664
+ * @param name The parameter name.
665
+ * @return An array containing one or more values,
666
+ * or an empty array if there is no such parameter.
667
+ *
668
+ */
669
+ getAll(name: string): string[];
670
+ /** Names of the parameters in the map. */
671
+ readonly keys: string[];
672
+ }
673
+ /**
674
+ * Converts a `Params` instance to a `ParamMap`.
675
+ * @param params The instance to convert.
676
+ * @returns The new map instance.
677
+ *
678
+ * @publicApi
679
+ */
680
+ declare function convertToParamMap(params: Params): ParamMap;
681
+ /**
682
+ * Matches the route configuration (`route`) against the actual URL (`segments`).
683
+ *
684
+ * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.
685
+ *
686
+ * @param segments The remaining unmatched segments in the current navigation
687
+ * @param segmentGroup The current segment group being matched
688
+ * @param route The `Route` to match against.
689
+ *
690
+ * @see {@link UrlMatchResult}
691
+ * @see {@link Route}
692
+ *
693
+ * @returns The resulting match information or `null` if the `route` should not match.
694
+ * @publicApi
695
+ */
696
+ declare function defaultUrlMatcher(segments: UrlSegment[], segmentGroup: UrlSegmentGroup, route: Route): UrlMatchResult | null;
697
+
687
698
  /**
688
699
  * An `InjectionToken` provided by the `RouterOutlet` and can be set using the `routerOutletData`
689
700
  * input.
@@ -1558,7 +1569,7 @@ declare class UrlTree {
1558
1569
  /** The fragment of the URL */
1559
1570
  fragment?: string | null);
1560
1571
  get queryParamMap(): ParamMap;
1561
- /** @docsNotRequired */
1572
+ /** @docs-private */
1562
1573
  toString(): string;
1563
1574
  }
1564
1575
  /**
@@ -1590,7 +1601,7 @@ declare class UrlSegmentGroup {
1590
1601
  hasChildren(): boolean;
1591
1602
  /** Number of child segments */
1592
1603
  get numberOfChildren(): number;
1593
- /** @docsNotRequired */
1604
+ /** @docs-private */
1594
1605
  toString(): string;
1595
1606
  }
1596
1607
  /**
@@ -1634,7 +1645,7 @@ declare class UrlSegment {
1634
1645
  [name: string]: string;
1635
1646
  });
1636
1647
  get parameterMap(): ParamMap;
1637
- /** @docsNotRequired */
1648
+ /** @docs-private */
1638
1649
  toString(): string;
1639
1650
  }
1640
1651
  /**
package/types/router.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.5
2
+ * @license Angular v21.1.6
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.5
2
+ * @license Angular v21.1.6
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.1.5
2
+ * @license Angular v21.1.6
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */