@angular/router 21.2.0-rc.0 → 21.2.0
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.
- package/fesm2022/_router-chunk.mjs +49 -49
- package/fesm2022/_router-chunk.mjs.map +1 -1
- package/fesm2022/_router_module-chunk.mjs +29 -29
- package/fesm2022/_router_module-chunk.mjs.map +1 -1
- package/fesm2022/router.mjs +2 -2
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/testing.mjs +11 -11
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +1 -1
- package/fesm2022/upgrade.mjs.map +1 -1
- package/package.json +4 -4
- package/types/_router_module-chunk.d.ts +97 -86
- package/types/router.d.ts +1 -1
- package/types/testing.d.ts +1 -1
- package/types/upgrade.d.ts +1 -1
package/fesm2022/router.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.2.0
|
|
2
|
+
* @license Angular v21.2.0
|
|
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.2.0
|
|
31
|
+
const VERSION = /* @__PURE__ */new Version('21.2.0');
|
|
32
32
|
|
|
33
33
|
export { VERSION, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve };
|
|
34
34
|
//# sourceMappingURL=router.mjs.map
|
package/fesm2022/router.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.mjs","sources":["../../../../../
|
|
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.2.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;;;;"}
|
package/fesm2022/testing.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v21.2.0
|
|
2
|
+
* @license Angular v21.2.0
|
|
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.2.0
|
|
36
|
+
version: "21.2.0",
|
|
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.2.0
|
|
44
|
+
version: "21.2.0",
|
|
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.2.0
|
|
51
|
+
version: "21.2.0",
|
|
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.2.0
|
|
64
|
+
version: "21.2.0",
|
|
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.2.0
|
|
100
|
+
version: "21.2.0",
|
|
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.2.0
|
|
108
|
+
version: "21.2.0",
|
|
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.2.0
|
|
116
|
+
version: "21.2.0",
|
|
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.2.0
|
|
133
|
+
version: "21.2.0",
|
|
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.2.0
|
|
141
|
+
version: "21.2.0",
|
|
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.2.0
|
|
166
|
+
version: "21.2.0",
|
|
167
167
|
ngImport: i0,
|
|
168
168
|
type: RootCmp,
|
|
169
169
|
decorators: [{
|
package/fesm2022/testing.mjs.map
CHANGED
|
@@ -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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"}
|
package/fesm2022/upgrade.mjs
CHANGED
package/fesm2022/upgrade.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.mjs","sources":["../../../../../
|
|
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.2.0
|
|
3
|
+
"version": "21.2.0",
|
|
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.2.0
|
|
31
|
-
"@angular/common": "21.2.0
|
|
32
|
-
"@angular/platform-browser": "21.2.0
|
|
30
|
+
"@angular/core": "21.2.0",
|
|
31
|
+
"@angular/common": "21.2.0",
|
|
32
|
+
"@angular/platform-browser": "21.2.0",
|
|
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.2.0
|
|
2
|
+
* @license Angular v21.2.0
|
|
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
|
-
/** @
|
|
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
|
-
/** @
|
|
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
|
-
/** @
|
|
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
|
-
/** @
|
|
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
|
-
/** @
|
|
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.
|
|
@@ -1563,7 +1574,7 @@ declare class UrlTree {
|
|
|
1563
1574
|
/** The fragment of the URL */
|
|
1564
1575
|
fragment?: string | null);
|
|
1565
1576
|
get queryParamMap(): ParamMap;
|
|
1566
|
-
/** @
|
|
1577
|
+
/** @docs-private */
|
|
1567
1578
|
toString(): string;
|
|
1568
1579
|
}
|
|
1569
1580
|
/**
|
|
@@ -1595,7 +1606,7 @@ declare class UrlSegmentGroup {
|
|
|
1595
1606
|
hasChildren(): boolean;
|
|
1596
1607
|
/** Number of child segments */
|
|
1597
1608
|
get numberOfChildren(): number;
|
|
1598
|
-
/** @
|
|
1609
|
+
/** @docs-private */
|
|
1599
1610
|
toString(): string;
|
|
1600
1611
|
}
|
|
1601
1612
|
/**
|
|
@@ -1639,7 +1650,7 @@ declare class UrlSegment {
|
|
|
1639
1650
|
[name: string]: string;
|
|
1640
1651
|
});
|
|
1641
1652
|
get parameterMap(): ParamMap;
|
|
1642
|
-
/** @
|
|
1653
|
+
/** @docs-private */
|
|
1643
1654
|
toString(): string;
|
|
1644
1655
|
}
|
|
1645
1656
|
/**
|
package/types/router.d.ts
CHANGED
package/types/testing.d.ts
CHANGED
package/types/upgrade.d.ts
CHANGED