@angular/router 21.0.0 → 21.0.1

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.0.0
2
+ * @license Angular v21.0.1
3
3
  * (c) 2010-2025 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.0.0');
31
+ const VERSION = /* @__PURE__ */new Version('21.0.1');
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":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/router/src/utils/functional_guards.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/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.0.0');\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":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/router/src/utils/functional_guards.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/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.0.1');\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.0.0
2
+ * @license Angular v21.0.1
3
3
  * (c) 2010-2025 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.0.0",
36
+ version: "21.0.1",
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.0.0",
44
+ version: "21.0.1",
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.0.0",
51
+ version: "21.0.1",
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.0.0",
64
+ version: "21.0.1",
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.0.0",
100
+ version: "21.0.1",
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.0.0",
108
+ version: "21.0.1",
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.0.0",
116
+ version: "21.0.1",
117
117
  ngImport: i0,
118
118
  type: RootFixtureService,
119
119
  decorators: [{
@@ -125,12 +125,14 @@ i0.ɵɵngDeclareClassMetadata({
125
125
  });
126
126
  class RootCmp {
127
127
  outlet;
128
- routerOutletData = signal(undefined, ...(ngDevMode ? [{
129
- debugName: "routerOutletData"
130
- }] : []));
128
+ routerOutletData = signal(undefined, {
129
+ ...(ngDevMode ? {
130
+ debugName: "routerOutletData"
131
+ } : {})
132
+ });
131
133
  static ɵfac = i0.ɵɵngDeclareFactory({
132
134
  minVersion: "12.0.0",
133
- version: "21.0.0",
135
+ version: "21.0.1",
134
136
  ngImport: i0,
135
137
  type: RootCmp,
136
138
  deps: [],
@@ -138,7 +140,7 @@ class RootCmp {
138
140
  });
139
141
  static ɵcmp = i0.ɵɵngDeclareComponent({
140
142
  minVersion: "14.0.0",
141
- version: "21.0.0",
143
+ version: "21.0.1",
142
144
  type: RootCmp,
143
145
  isStandalone: true,
144
146
  selector: "ng-component",
@@ -163,7 +165,7 @@ class RootCmp {
163
165
  }
164
166
  i0.ɵɵngDeclareClassMetadata({
165
167
  minVersion: "12.0.0",
166
- version: "21.0.0",
168
+ version: "21.0.1",
167
169
  ngImport: i0,
168
170
  type: RootCmp,
169
171
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/packages/router/testing/src/router_testing_module.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/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":";;;;;;;;;;;;;;;;;;;MA4DaA,mBAAmB,CAAA;AAC9B,EAAA,OAAOC,UAAUA,CACfC,MAAc,EACdC,MAAqB,EAAA;IAErB,OAAO;AACLC,MAAAA,QAAQ,EAAEJ,mBAAmB;AAC7BK,MAAAA,SAAS,EAAE,CACT;AAACC,QAAAA,OAAO,EAAEC,MAAM;AAAEC,QAAAA,KAAK,EAAE,IAAI;AAAEC,QAAAA,QAAQ,EAAEP;AAAO,OAAA,EAChD;AAACI,QAAAA,OAAO,EAAEI,oBAAoB;AAAED,QAAAA,QAAQ,EAAEN,MAAM,GAAGA,MAAM,GAAG;OAAG;KAElE;AACH;;;;;UAZWH,mBAAmB;AAAAW,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAnB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAArB,mBAAmB;cARpBsB,YAAY;AAAA,GAAA,CAAA;AAQX,EAAA,OAAAC,IAAA,GAAAV,EAAA,CAAAW,mBAAA,CAAA;AAAAN,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAArB,mBAAmB;AAPnBK,IAAAA,SAAA,EAAA,CACToB,gBAAgB,EAChBC,oBAAoB,EAAE,EACtBC,cAAc,CAACC,YAAY,CAAC,CAACC,UAAU,EACvC;AAACvB,MAAAA,OAAO,EAAEC,MAAM;AAAEC,MAAAA,KAAK,EAAE,IAAI;AAAEC,MAAAA,QAAQ,EAAE;AAAG,KAAA,CAC7C;IAAAqB,OAAA,EAAA,CANSR,YAAY;AAAA,GAAA,CAAA;;;;;;QAQXtB,mBAAmB;AAAA+B,EAAAA,UAAA,EAAA,CAAA;UAT/BhB,QAAQ;AAACiB,IAAAA,IAAA,EAAA,CAAA;MACRC,OAAO,EAAE,CAACX,YAAY,CAAC;AACvBjB,MAAAA,SAAS,EAAE,CACToB,gBAAgB,EAChBC,oBAAoB,EAAE,EACtBC,cAAc,CAACC,YAAY,CAAC,CAACC,UAAU,EACvC;AAACvB,QAAAA,OAAO,EAAEC,MAAM;AAAEC,QAAAA,KAAK,EAAE,IAAI;AAAEC,QAAAA,QAAQ,EAAE;OAAG;KAE/C;;;;MCtCYyB,kBAAkB,CAAA;EACrBC,OAAO;EACPC,OAAO;AAEfC,EAAAA,aAAaA,GAAA;IACX,IAAI,IAAI,CAACD,OAAO,EAAE;AAChB,MAAA,MAAM,IAAIE,KAAK,CAAC,8CAA8C,CAAC;AACjE;IACA,IAAI,CAACF,OAAO,GAAG,IAAIG,oBAAoB,CAAC,IAAI,CAACC,cAAc,EAAE,CAAC;IAC9D,OAAO,IAAI,CAACJ,OAAO;AACrB;AAEQI,EAAAA,cAAcA,GAAA;AACpB,IAAA,IAAI,IAAI,CAACL,OAAO,KAAKM,SAAS,EAAE;MAC9B,OAAO,IAAI,CAACN,OAAO;AACrB;IACA,IAAI,CAACA,OAAO,GAAGO,OAAO,CAACC,eAAe,CAACC,OAAO,CAAC;AAC/C,IAAA,IAAI,CAACT,OAAO,CAACU,aAAa,EAAE;IAC5B,OAAO,IAAI,CAACV,OAAO;AACrB;;;;;UAnBWD,kBAAkB;AAAAvB,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAgC;AAAA,GAAA,CAAA;AAAlB,EAAA,OAAAC,KAAA,GAAAlC,EAAA,CAAAmC,qBAAA,CAAA;AAAA9B,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAa,kBAAkB;gBADN;AAAM,GAAA,CAAA;;;;;;QAClBA,kBAAkB;AAAAH,EAAAA,UAAA,EAAA,CAAA;UAD9Be,UAAU;WAAC;AAACG,MAAAA,UAAU,EAAE;KAAO;;;MA2BnBL,OAAO,CAAA;EACOM,MAAM;EACtBC,gBAAgB,GAAGC,MAAM,CAAUX,SAAS;;WAAC;;;;;UAF3CG,OAAO;AAAAjC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAuC;AAAA,GAAA,CAAA;AAAP,EAAA,OAAAC,IAAA,GAAAzC,EAAA,CAAA0C,oBAAA,CAAA;AAAArC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAE,IAAAA,IAAA,EAAAuB,OAAO;AACPY,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,cAAA;AAAAC,IAAAA,WAAA,EAAA,CAAA;AAAAC,MAAAA,YAAA,EAAA,QAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;AAAAC,MAAAA,SAAA,EAAAC,YAAY;AAJbC,MAAAA,WAAA,EAAA;AAAA,KAAA,CAAA;AAAA3C,IAAAA,QAAA,EAAAP,EAAA;AAAAmD,IAAAA,QAAA,EAAA,yEAAyE;;;;YACzEF,YAAY;AAAAL,MAAAA,QAAA,EAAA,eAAA;AAAAQ,MAAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA;MAAAC,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA;MAAAC,QAAA,EAAA,CAAA,QAAA;KAAA;AAAA,GAAA,CAAA;;;;;;QAEXvB,OAAO;AAAAb,EAAAA,UAAA,EAAA,CAAA;UAJnBsB,SAAS;AAACrB,IAAAA,IAAA,EAAA,CAAA;AACTgC,MAAAA,QAAQ,EAAE,yEAAyE;MACnFlC,OAAO,EAAE,CAACgC,YAAY;KACvB;;;;YAEEM,SAAS;aAACN,YAAY;;;;MAUZvB,oBAAoB,CAAA;EAY/B,aAAa8B,MAAMA,CAACC,UAAmB,EAAA;IACrC,MAAMlC,OAAO,GAAGM,OAAO,CAAC6B,MAAM,CAACrC,kBAAkB,CAAC,CAACG,aAAa,EAAE;IAClE,IAAIiC,UAAU,KAAK7B,SAAS,EAAE;AAC5B,MAAA,MAAML,OAAO,CAACoC,aAAa,CAACF,UAAU,CAAC;AACzC;AACA,IAAA,OAAOlC,OAAO;AAChB;EAKgBD,OAAO;EAGvBsC,WAAAA,CAAYtC,OAAsE,EAAA;IAChF,IAAI,CAACA,OAAO,GAAGA,OAAO;AACxB;AAGAU,EAAAA,aAAaA,GAAA;AACX,IAAA,IAAI,CAACV,OAAO,CAACU,aAAa,EAAE;AAC9B;EAEA,IAAI6B,iBAAiBA,GAAA;IACnB,MAAMxB,MAAM,GAAI,IAAI,CAACf,OAAO,CAACwC,iBAA6B,CAACzB,MAAM;AACjE,IAAA,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAAC0B,WAAW,EAAE;AAClC,MAAA,OAAO,IAAI;AACb;AACA,IAAA,OAAO,IAAI,CAACzC,OAAO,CAAC0C,YAAY,CAACC,KAAK,CAAEC,CAAC,IAAKA,CAAC,CAACJ,iBAAiB,KAAKzB,MAAM,CAAC8B,SAAS,CAAC;AACzF;EAEA,IAAIC,kBAAkBA,GAAA;AACpB,IAAA,OAAO,IAAI,CAACP,iBAAiB,EAAEQ,aAAa,IAAI,IAAI;AACtD;AAwCA,EAAA,MAAMV,aAAaA,CAAIW,GAAW,EAAEC,2BAAqC,EAAA;AACvE,IAAA,MAAMC,MAAM,GAAG3C,OAAO,CAAC6B,MAAM,CAACe,MAAM,CAAC;AACrC,IAAA,IAAIC,SAAsB;AAC1B,IAAA,MAAMC,uBAAuB,GAAG,IAAIC,OAAO,CAAQC,OAAO,IAAI;AAC5DH,MAAAA,SAAS,GAAGG,OAAO;AACrB,KAAC,CAAC;IACFC,mBAAmB,CAACjD,OAAO,CAAC6B,MAAM,CAACe,MAAM,CAAC,EAAEC,SAAS,CAAC;AACtD,IAAA,MAAMF,MAAM,CAACb,aAAa,CAACW,GAAG,CAAC;AAC/B,IAAA,MAAMK,uBAAuB;AAC7B,IAAA,IAAI,CAACrD,OAAO,CAACU,aAAa,EAAE;IAC5B,MAAMK,MAAM,GAAI,IAAI,CAACf,OAAO,CAACwC,iBAA6B,CAACzB,MAAM;IAGjE,IAAIA,MAAM,IAAIA,MAAM,CAAC0B,WAAW,IAAI1B,MAAM,CAAC0C,cAAc,CAACZ,SAAS,EAAE;AACnE,MAAA,MAAMa,kBAAkB,GAAG3C,MAAM,CAAC8B,SAAS;MAC3C,IACEI,2BAA2B,KAAK3C,SAAS,IACzC,EAAEoD,kBAAkB,YAAYT,2BAA2B,CAAC,EAC5D;AACA,QAAA,MAAM,IAAI9C,KAAK,CACb,CAAA,2CAAA,EAA8C8C,2BAA2B,CAACU,IAAI,CAAYD,SAAAA,EAAAA,kBAAkB,CAACpB,WAAW,CAACqB,IAAI,EAAE,CAChI;AACH;AACA,MAAA,OAAOD,kBAAuB;AAChC,KAAA,MAAO;MACL,IAAIT,2BAA2B,KAAK3C,SAAS,EAAE;QAC7C,MAAM,IAAIH,KAAK,CACb,CAAA,2CAAA,EAA8C8C,2BAA2B,CAACU,IAAI,qDAAqD,CACpI;AACH;AACA,MAAA,OAAO,IAAI;AACb;AACF;AACD;;;;"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/packages/router/testing/src/router_testing_module.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/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":";;;;;;;;;;;;;;;;;;;MA4DaA,mBAAmB,CAAA;AAC9B,EAAA,OAAOC,UAAUA,CACfC,MAAc,EACdC,MAAqB,EAAA;IAErB,OAAO;AACLC,MAAAA,QAAQ,EAAEJ,mBAAmB;AAC7BK,MAAAA,SAAS,EAAE,CACT;AAACC,QAAAA,OAAO,EAAEC,MAAM;AAAEC,QAAAA,KAAK,EAAE,IAAI;AAAEC,QAAAA,QAAQ,EAAEP;AAAO,OAAA,EAChD;AAACI,QAAAA,OAAO,EAAEI,oBAAoB;AAAED,QAAAA,QAAQ,EAAEN,MAAM,GAAGA,MAAM,GAAG;OAAG;KAElE;AACH;;;;;UAZWH,mBAAmB;AAAAW,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAnB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAArB,mBAAmB;cARpBsB,YAAY;AAAA,GAAA,CAAA;AAQX,EAAA,OAAAC,IAAA,GAAAV,EAAA,CAAAW,mBAAA,CAAA;AAAAN,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAArB,mBAAmB;AAPnBK,IAAAA,SAAA,EAAA,CACToB,gBAAgB,EAChBC,oBAAoB,EAAE,EACtBC,cAAc,CAACC,YAAY,CAAC,CAACC,UAAU,EACvC;AAACvB,MAAAA,OAAO,EAAEC,MAAM;AAAEC,MAAAA,KAAK,EAAE,IAAI;AAAEC,MAAAA,QAAQ,EAAE;AAAG,KAAA,CAC7C;IAAAqB,OAAA,EAAA,CANSR,YAAY;AAAA,GAAA,CAAA;;;;;;QAQXtB,mBAAmB;AAAA+B,EAAAA,UAAA,EAAA,CAAA;UAT/BhB,QAAQ;AAACiB,IAAAA,IAAA,EAAA,CAAA;MACRC,OAAO,EAAE,CAACX,YAAY,CAAC;AACvBjB,MAAAA,SAAS,EAAE,CACToB,gBAAgB,EAChBC,oBAAoB,EAAE,EACtBC,cAAc,CAACC,YAAY,CAAC,CAACC,UAAU,EACvC;AAACvB,QAAAA,OAAO,EAAEC,MAAM;AAAEC,QAAAA,KAAK,EAAE,IAAI;AAAEC,QAAAA,QAAQ,EAAE;OAAG;KAE/C;;;;MCtCYyB,kBAAkB,CAAA;EACrBC,OAAO;EACPC,OAAO;AAEfC,EAAAA,aAAaA,GAAA;IACX,IAAI,IAAI,CAACD,OAAO,EAAE;AAChB,MAAA,MAAM,IAAIE,KAAK,CAAC,8CAA8C,CAAC;AACjE;IACA,IAAI,CAACF,OAAO,GAAG,IAAIG,oBAAoB,CAAC,IAAI,CAACC,cAAc,EAAE,CAAC;IAC9D,OAAO,IAAI,CAACJ,OAAO;AACrB;AAEQI,EAAAA,cAAcA,GAAA;AACpB,IAAA,IAAI,IAAI,CAACL,OAAO,KAAKM,SAAS,EAAE;MAC9B,OAAO,IAAI,CAACN,OAAO;AACrB;IACA,IAAI,CAACA,OAAO,GAAGO,OAAO,CAACC,eAAe,CAACC,OAAO,CAAC;AAC/C,IAAA,IAAI,CAACT,OAAO,CAACU,aAAa,EAAE;IAC5B,OAAO,IAAI,CAACV,OAAO;AACrB;;;;;UAnBWD,kBAAkB;AAAAvB,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAgC;AAAA,GAAA,CAAA;AAAlB,EAAA,OAAAC,KAAA,GAAAlC,EAAA,CAAAmC,qBAAA,CAAA;AAAA9B,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAa,kBAAkB;gBADN;AAAM,GAAA,CAAA;;;;;;QAClBA,kBAAkB;AAAAH,EAAAA,UAAA,EAAA,CAAA;UAD9Be,UAAU;WAAC;AAACG,MAAAA,UAAU,EAAE;KAAO;;;MA2BnBL,OAAO,CAAA;EACOM,MAAM;AACtBC,EAAAA,gBAAgB,GAAGC,MAAM,CAAUX,SAAS;;;;IAAC;;;;;UAF3CG,OAAO;AAAAjC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAuC;AAAA,GAAA,CAAA;AAAP,EAAA,OAAAC,IAAA,GAAAzC,EAAA,CAAA0C,oBAAA,CAAA;AAAArC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,mBAAA;AAAAE,IAAAA,IAAA,EAAAuB,OAAO;AACPY,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,cAAA;AAAAC,IAAAA,WAAA,EAAA,CAAA;AAAAC,MAAAA,YAAA,EAAA,QAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;AAAAC,MAAAA,SAAA,EAAAC,YAAY;AAJbC,MAAAA,WAAA,EAAA;AAAA,KAAA,CAAA;AAAA3C,IAAAA,QAAA,EAAAP,EAAA;AAAAmD,IAAAA,QAAA,EAAA,yEAAyE;;;;YACzEF,YAAY;AAAAL,MAAAA,QAAA,EAAA,eAAA;AAAAQ,MAAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA;MAAAC,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA;MAAAC,QAAA,EAAA,CAAA,QAAA;KAAA;AAAA,GAAA,CAAA;;;;;;QAEXvB,OAAO;AAAAb,EAAAA,UAAA,EAAA,CAAA;UAJnBsB,SAAS;AAACrB,IAAAA,IAAA,EAAA,CAAA;AACTgC,MAAAA,QAAQ,EAAE,yEAAyE;MACnFlC,OAAO,EAAE,CAACgC,YAAY;KACvB;;;;YAEEM,SAAS;aAACN,YAAY;;;;MAUZvB,oBAAoB,CAAA;EAY/B,aAAa8B,MAAMA,CAACC,UAAmB,EAAA;IACrC,MAAMlC,OAAO,GAAGM,OAAO,CAAC6B,MAAM,CAACrC,kBAAkB,CAAC,CAACG,aAAa,EAAE;IAClE,IAAIiC,UAAU,KAAK7B,SAAS,EAAE;AAC5B,MAAA,MAAML,OAAO,CAACoC,aAAa,CAACF,UAAU,CAAC;AACzC;AACA,IAAA,OAAOlC,OAAO;AAChB;EAKgBD,OAAO;EAGvBsC,WAAAA,CAAYtC,OAAsE,EAAA;IAChF,IAAI,CAACA,OAAO,GAAGA,OAAO;AACxB;AAGAU,EAAAA,aAAaA,GAAA;AACX,IAAA,IAAI,CAACV,OAAO,CAACU,aAAa,EAAE;AAC9B;EAEA,IAAI6B,iBAAiBA,GAAA;IACnB,MAAMxB,MAAM,GAAI,IAAI,CAACf,OAAO,CAACwC,iBAA6B,CAACzB,MAAM;AACjE,IAAA,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAAC0B,WAAW,EAAE;AAClC,MAAA,OAAO,IAAI;AACb;AACA,IAAA,OAAO,IAAI,CAACzC,OAAO,CAAC0C,YAAY,CAACC,KAAK,CAAEC,CAAC,IAAKA,CAAC,CAACJ,iBAAiB,KAAKzB,MAAM,CAAC8B,SAAS,CAAC;AACzF;EAEA,IAAIC,kBAAkBA,GAAA;AACpB,IAAA,OAAO,IAAI,CAACP,iBAAiB,EAAEQ,aAAa,IAAI,IAAI;AACtD;AAwCA,EAAA,MAAMV,aAAaA,CAAIW,GAAW,EAAEC,2BAAqC,EAAA;AACvE,IAAA,MAAMC,MAAM,GAAG3C,OAAO,CAAC6B,MAAM,CAACe,MAAM,CAAC;AACrC,IAAA,IAAIC,SAAsB;AAC1B,IAAA,MAAMC,uBAAuB,GAAG,IAAIC,OAAO,CAAQC,OAAO,IAAI;AAC5DH,MAAAA,SAAS,GAAGG,OAAO;AACrB,KAAC,CAAC;IACFC,mBAAmB,CAACjD,OAAO,CAAC6B,MAAM,CAACe,MAAM,CAAC,EAAEC,SAAS,CAAC;AACtD,IAAA,MAAMF,MAAM,CAACb,aAAa,CAACW,GAAG,CAAC;AAC/B,IAAA,MAAMK,uBAAuB;AAC7B,IAAA,IAAI,CAACrD,OAAO,CAACU,aAAa,EAAE;IAC5B,MAAMK,MAAM,GAAI,IAAI,CAACf,OAAO,CAACwC,iBAA6B,CAACzB,MAAM;IAGjE,IAAIA,MAAM,IAAIA,MAAM,CAAC0B,WAAW,IAAI1B,MAAM,CAAC0C,cAAc,CAACZ,SAAS,EAAE;AACnE,MAAA,MAAMa,kBAAkB,GAAG3C,MAAM,CAAC8B,SAAS;MAC3C,IACEI,2BAA2B,KAAK3C,SAAS,IACzC,EAAEoD,kBAAkB,YAAYT,2BAA2B,CAAC,EAC5D;AACA,QAAA,MAAM,IAAI9C,KAAK,CACb,CAAA,2CAAA,EAA8C8C,2BAA2B,CAACU,IAAI,CAAYD,SAAAA,EAAAA,kBAAkB,CAACpB,WAAW,CAACqB,IAAI,EAAE,CAChI;AACH;AACA,MAAA,OAAOD,kBAAuB;AAChC,KAAA,MAAO;MACL,IAAIT,2BAA2B,KAAK3C,SAAS,EAAE;QAC7C,MAAM,IAAIH,KAAK,CACb,CAAA,2CAAA,EAA8C8C,2BAA2B,CAACU,IAAI,qDAAqD,CACpI;AACH;AACA,MAAA,OAAO,IAAI;AACb;AACF;AACD;;;;"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.0
2
+ * @license Angular v21.0.1
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/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":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/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.0.0",
3
+ "version": "21.0.1",
4
4
  "description": "Angular - the routing library",
5
5
  "keywords": [
6
6
  "angular",
@@ -24,9 +24,9 @@
24
24
  "tslib": "^2.3.0"
25
25
  },
26
26
  "peerDependencies": {
27
- "@angular/core": "21.0.0",
28
- "@angular/common": "21.0.0",
29
- "@angular/platform-browser": "21.0.0",
27
+ "@angular/core": "21.0.1",
28
+ "@angular/common": "21.0.1",
29
+ "@angular/platform-browser": "21.0.1",
30
30
  "rxjs": "^6.5.3 || ^7.4.0"
31
31
  },
32
32
  "ng-update": {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.0
2
+ * @license Angular v21.0.1
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1654,7 +1654,7 @@ interface NavigationBehaviorOptions {
1654
1654
  /**
1655
1655
  * When true, navigates without pushing a new state into history.
1656
1656
  *
1657
- * ```
1657
+ * ```ts
1658
1658
  * // Navigate silently to /view
1659
1659
  * this.router.navigate(['/view'], { skipLocationChange: true });
1660
1660
  * ```
@@ -1663,7 +1663,7 @@ interface NavigationBehaviorOptions {
1663
1663
  /**
1664
1664
  * When true, navigates while replacing the current state in history.
1665
1665
  *
1666
- * ```
1666
+ * ```ts
1667
1667
  * // Navigate to /view
1668
1668
  * this.router.navigate(['/view'], { replaceUrl: true });
1669
1669
  * ```
@@ -1807,7 +1807,7 @@ declare class RouterState extends Tree<ActivatedRoute> {
1807
1807
  * on shallow equality. For example, changing deeply nested properties in resolved `data` will not
1808
1808
  * cause the `ActivatedRoute.data` `Observable` to emit a new value.
1809
1809
  *
1810
- * {@example router/activated-route/module.ts region="activated-route"}
1810
+ * {@example router/activated-route/activated_route_component.ts region="activated-route"}
1811
1811
  *
1812
1812
  * @see [Getting route information](guide/routing/common-router-tasks#getting-route-information)
1813
1813
  *
@@ -2782,6 +2782,7 @@ interface RouterOutletContract {
2782
2782
  *
2783
2783
  * @see {@link RouterLink}
2784
2784
  * @see {@link Route}
2785
+ * @see [Show routes with outlets](guide/routing/show-routes-with-outlets)
2785
2786
  * @ngModule RouterModule
2786
2787
  *
2787
2788
  * @publicApi
@@ -2868,7 +2869,7 @@ interface UrlCreationOptions {
2868
2869
  * For example, consider the following route configuration where the parent route
2869
2870
  * has two children.
2870
2871
  *
2871
- * ```
2872
+ * ```ts
2872
2873
  * [{
2873
2874
  * path: 'parent',
2874
2875
  * component: ParentComponent,
@@ -2903,7 +2904,7 @@ interface UrlCreationOptions {
2903
2904
  /**
2904
2905
  * Sets query parameters to the URL.
2905
2906
  *
2906
- * ```
2907
+ * ```ts
2907
2908
  * // Navigate to /results?page=1
2908
2909
  * router.navigate(['/results'], { queryParams: { page: 1 } });
2909
2910
  * ```
@@ -2912,7 +2913,7 @@ interface UrlCreationOptions {
2912
2913
  /**
2913
2914
  * Sets the hash fragment for the URL.
2914
2915
  *
2915
- * ```
2916
+ * ```ts
2916
2917
  * // Navigate to /results#top
2917
2918
  * router.navigate(['/results'], { fragment: 'top' });
2918
2919
  * ```
@@ -2925,13 +2926,13 @@ interface UrlCreationOptions {
2925
2926
  * * `merge` : Merge new with current parameters.
2926
2927
  *
2927
2928
  * The "preserve" option discards any new query params:
2928
- * ```
2929
+ * ```ts
2929
2930
  * // from /view1?page=1 to/view2?page=1
2930
2931
  * router.navigate(['/view2'], { queryParams: { page: 2 }, queryParamsHandling: "preserve"
2931
2932
  * });
2932
2933
  * ```
2933
2934
  * The "merge" option appends new query params to the params from the current URL:
2934
- * ```
2935
+ * ```ts
2935
2936
  * // from /view1?page=1 to/view2?page=1&otherKey=2
2936
2937
  * router.navigate(['/view2'], { queryParams: { otherKey: 2 }, queryParamsHandling: "merge"
2937
2938
  * });
@@ -2944,7 +2945,7 @@ interface UrlCreationOptions {
2944
2945
  /**
2945
2946
  * When true, preserves the URL fragment for the next navigation
2946
2947
  *
2947
- * ```
2948
+ * ```ts
2948
2949
  * // Preserve fragment from /results#top to /view#top
2949
2950
  * router.navigate(['/view'], { preserveFragment: true });
2950
2951
  * ```
@@ -3188,7 +3189,7 @@ declare class Router {
3188
3189
  *
3189
3190
  * @usageNotes
3190
3191
  *
3191
- * ```
3192
+ * ```ts
3192
3193
  * // create /team/33/user/11
3193
3194
  * router.createUrlTree(['/team', 33, 'user', 11]);
3194
3195
  *
@@ -3218,10 +3219,10 @@ declare class Router {
3218
3219
  *
3219
3220
  * // navigate to /team/44/user/22
3220
3221
  * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});
3221
- *
3222
+ * ```
3222
3223
  * Note that a value of `null` or `undefined` for `relativeTo` indicates that the
3223
3224
  * tree should be created relative to the root.
3224
- * ```
3225
+ *
3225
3226
  */
3226
3227
  createUrlTree(commands: readonly any[], navigationExtras?: UrlCreationOptions): UrlTree;
3227
3228
  /**
package/types/router.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.0
2
+ * @license Angular v21.0.1
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -244,6 +244,7 @@ declare function loadChildren(route: Route, compiler: Compiler, parentInjector:
244
244
  *
245
245
  * Provides a preloading strategy.
246
246
  *
247
+ * @see [Preloading strategy](guide/routing/customizing-route-behavior#preloading-strategy)
247
248
  * @publicApi
248
249
  */
249
250
  declare abstract class PreloadingStrategy {
@@ -258,6 +259,20 @@ declare abstract class PreloadingStrategy {
258
259
  * RouterModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})
259
260
  * ```
260
261
  *
262
+ * ```ts
263
+ * export const appConfig: ApplicationConfig = {
264
+ * providers: [
265
+ * provideRouter(
266
+ * routes,
267
+ * withPreloading(PreloadAllModules)
268
+ * )
269
+ * ]
270
+ * };
271
+ * ```
272
+ *
273
+ *
274
+ * @see [Preloading strategy](guide/routing/customizing-route-behavior#preloading-strategy)
275
+ *
261
276
  * @publicApi
262
277
  */
263
278
  declare class PreloadAllModules implements PreloadingStrategy {
@@ -272,6 +287,8 @@ declare class PreloadAllModules implements PreloadingStrategy {
272
287
  *
273
288
  * This strategy is enabled by default.
274
289
  *
290
+ * @see [Preloading strategy](guide/routing/customizing-route-behavior#preloading-strategy)
291
+ *
275
292
  * @publicApi
276
293
  */
277
294
  declare class NoPreloading implements PreloadingStrategy {
@@ -829,6 +846,8 @@ declare const enum RouterFeatureKind {
829
846
  *
830
847
  * Provides a way to migrate AngularJS applications to Angular.
831
848
  *
849
+ * @see [URL handling strategy](guide/routing/customizing-route-behavior#built-in-preloading-strategies)
850
+ *
832
851
  * @publicApi
833
852
  */
834
853
  declare abstract class UrlHandlingStrategy {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.0
2
+ * @license Angular v21.0.1
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.0.0
2
+ * @license Angular v21.0.1
3
3
  * (c) 2010-2025 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */