@angular/router 19.0.0-next.0 → 19.0.0-next.2

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.
Files changed (69) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/router.mjs +86 -96
  3. package/fesm2022/router.mjs.map +1 -1
  4. package/fesm2022/testing.mjs +11 -11
  5. package/fesm2022/upgrade.mjs +1 -1
  6. package/index.d.ts +1 -1
  7. package/package.json +4 -10
  8. package/testing/index.d.ts +1 -1
  9. package/upgrade/index.d.ts +1 -1
  10. package/esm2022/index.mjs +0 -13
  11. package/esm2022/public_api.mjs +0 -15
  12. package/esm2022/router.mjs +0 -5
  13. package/esm2022/src/apply_redirects.mjs +0 -124
  14. package/esm2022/src/components/empty_outlet.mjs +0 -49
  15. package/esm2022/src/create_router_state.mjs +0 -52
  16. package/esm2022/src/create_url_tree.mjs +0 -420
  17. package/esm2022/src/directives/router_link.mjs +0 -361
  18. package/esm2022/src/directives/router_link_active.mjs +0 -237
  19. package/esm2022/src/directives/router_outlet.mjs +0 -388
  20. package/esm2022/src/errors.mjs +0 -2
  21. package/esm2022/src/events.mjs +0 -588
  22. package/esm2022/src/index.mjs +0 -31
  23. package/esm2022/src/models.mjs +0 -45
  24. package/esm2022/src/models_deprecated.mjs +0 -9
  25. package/esm2022/src/navigation_canceling_error.mjs +0 -33
  26. package/esm2022/src/navigation_transition.mjs +0 -437
  27. package/esm2022/src/operators/activate_routes.mjs +0 -190
  28. package/esm2022/src/operators/check_guards.mjs +0 -157
  29. package/esm2022/src/operators/prioritized_guard_value.mjs +0 -40
  30. package/esm2022/src/operators/recognize.mjs +0 -15
  31. package/esm2022/src/operators/resolve_data.mjs +0 -92
  32. package/esm2022/src/operators/switch_tap.mjs +0 -25
  33. package/esm2022/src/page_title_strategy.mjs +0 -89
  34. package/esm2022/src/private_export.mjs +0 -12
  35. package/esm2022/src/provide_router.mjs +0 -549
  36. package/esm2022/src/recognize.mjs +0 -321
  37. package/esm2022/src/route_reuse_strategy.mjs +0 -79
  38. package/esm2022/src/router.mjs +0 -571
  39. package/esm2022/src/router_config.mjs +0 -18
  40. package/esm2022/src/router_config_loader.mjs +0 -137
  41. package/esm2022/src/router_module.mjs +0 -226
  42. package/esm2022/src/router_outlet_context.mjs +0 -90
  43. package/esm2022/src/router_preloader.mjs +0 -162
  44. package/esm2022/src/router_scroller.mjs +0 -111
  45. package/esm2022/src/router_state.mjs +0 -419
  46. package/esm2022/src/shared.mjs +0 -97
  47. package/esm2022/src/statemanager/state_manager.mjs +0 -200
  48. package/esm2022/src/url_handling_strategy.mjs +0 -45
  49. package/esm2022/src/url_tree.mjs +0 -643
  50. package/esm2022/src/utils/collection.mjs +0 -75
  51. package/esm2022/src/utils/config.mjs +0 -191
  52. package/esm2022/src/utils/config_matching.mjs +0 -150
  53. package/esm2022/src/utils/functional_guards.mjs +0 -69
  54. package/esm2022/src/utils/navigations.mjs +0 -44
  55. package/esm2022/src/utils/preactivation.mjs +0 -154
  56. package/esm2022/src/utils/tree.mjs +0 -94
  57. package/esm2022/src/utils/type_guards.mjs +0 -46
  58. package/esm2022/src/utils/view_transition.mjs +0 -61
  59. package/esm2022/src/version.mjs +0 -18
  60. package/esm2022/testing/index.mjs +0 -13
  61. package/esm2022/testing/public_api.mjs +0 -15
  62. package/esm2022/testing/src/router_testing_harness.mjs +0 -127
  63. package/esm2022/testing/src/router_testing_module.mjs +0 -75
  64. package/esm2022/testing/src/testing.mjs +0 -15
  65. package/esm2022/testing/testing.mjs +0 -5
  66. package/esm2022/upgrade/index.mjs +0 -13
  67. package/esm2022/upgrade/public_api.mjs +0 -15
  68. package/esm2022/upgrade/src/upgrade.mjs +0 -128
  69. package/esm2022/upgrade/upgrade.mjs +0 -5
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.0
2
+ * @license Angular v19.0.0-next.2
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -59,16 +59,16 @@ class RouterTestingModule {
59
59
  ],
60
60
  };
61
61
  }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RouterTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
63
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.0", ngImport: i0, type: RouterTestingModule, exports: [RouterModule] }); }
64
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RouterTestingModule, providers: [
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RouterTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
63
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.2", ngImport: i0, type: RouterTestingModule, exports: [RouterModule] }); }
64
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RouterTestingModule, providers: [
65
65
  ɵROUTER_PROVIDERS,
66
66
  provideLocationMocks(),
67
67
  withPreloading(NoPreloading).ɵproviders,
68
68
  { provide: ROUTES, multi: true, useValue: [] },
69
69
  ], imports: [RouterModule] }); }
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RouterTestingModule, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RouterTestingModule, decorators: [{
72
72
  type: NgModule,
73
73
  args: [{
74
74
  exports: [RouterModule],
@@ -97,10 +97,10 @@ class RootFixtureService {
97
97
  this.fixture.detectChanges();
98
98
  return this.fixture;
99
99
  }
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RootFixtureService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
101
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RootFixtureService, providedIn: 'root' }); }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RootFixtureService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
101
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RootFixtureService, providedIn: 'root' }); }
102
102
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RootFixtureService, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RootFixtureService, decorators: [{
104
104
  type: Injectable,
105
105
  args: [{ providedIn: 'root' }]
106
106
  }] });
@@ -108,10 +108,10 @@ class RootCmp {
108
108
  constructor() {
109
109
  this.routerOutletData = signal(undefined);
110
110
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RootCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.0", type: RootCmp, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "outlet", first: true, predicate: RouterOutlet, descendants: true }], ngImport: i0, template: '<router-outlet [routerOutletData]="routerOutletData()"></router-outlet>', isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RootCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.2", type: RootCmp, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "outlet", first: true, predicate: RouterOutlet, descendants: true }], ngImport: i0, template: '<router-outlet [routerOutletData]="routerOutletData()"></router-outlet>', isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
113
113
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: RootCmp, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.2", ngImport: i0, type: RootCmp, decorators: [{
115
115
  type: Component,
116
116
  args: [{
117
117
  standalone: true,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.0
2
+ * @license Angular v19.0.0-next.2
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.0
2
+ * @license Angular v19.0.0-next.2
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/router",
3
- "version": "19.0.0-next.0",
3
+ "version": "19.0.0-next.2",
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": "19.0.0-next.0",
28
- "@angular/common": "19.0.0-next.0",
29
- "@angular/platform-browser": "19.0.0-next.0",
27
+ "@angular/core": "19.0.0-next.2",
28
+ "@angular/common": "19.0.0-next.2",
29
+ "@angular/platform-browser": "19.0.0-next.2",
30
30
  "rxjs": "^6.5.3 || ^7.4.0"
31
31
  },
32
32
  "ng-update": {
@@ -59,20 +59,14 @@
59
59
  },
60
60
  ".": {
61
61
  "types": "./index.d.ts",
62
- "esm2022": "./esm2022/router.mjs",
63
- "esm": "./esm2022/router.mjs",
64
62
  "default": "./fesm2022/router.mjs"
65
63
  },
66
64
  "./testing": {
67
65
  "types": "./testing/index.d.ts",
68
- "esm2022": "./esm2022/testing/testing.mjs",
69
- "esm": "./esm2022/testing/testing.mjs",
70
66
  "default": "./fesm2022/testing.mjs"
71
67
  },
72
68
  "./upgrade": {
73
69
  "types": "./upgrade/index.d.ts",
74
- "esm2022": "./esm2022/upgrade/upgrade.mjs",
75
- "esm": "./esm2022/upgrade/upgrade.mjs",
76
70
  "default": "./fesm2022/upgrade.mjs"
77
71
  }
78
72
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.0
2
+ * @license Angular v19.0.0-next.2
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v19.0.0-next.0
2
+ * @license Angular v19.0.0-next.2
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
package/esm2022/index.mjs DELETED
@@ -1,13 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- // This file is not used to build this module. It is only used during editing
9
- // by the TypeScript language service and during build for verification. `ngc`
10
- // replaces this file with production index.ts when it rewrites private symbol
11
- // names.
12
- export * from './public_api';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9yb3V0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNkVBQTZFO0FBQzdFLDhFQUE4RTtBQUM5RSw4RUFBOEU7QUFDOUUsU0FBUztBQUVULGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vIFRoaXMgZmlsZSBpcyBub3QgdXNlZCB0byBidWlsZCB0aGlzIG1vZHVsZS4gSXQgaXMgb25seSB1c2VkIGR1cmluZyBlZGl0aW5nXG4vLyBieSB0aGUgVHlwZVNjcmlwdCBsYW5ndWFnZSBzZXJ2aWNlIGFuZCBkdXJpbmcgYnVpbGQgZm9yIHZlcmlmaWNhdGlvbi4gYG5nY2Bcbi8vIHJlcGxhY2VzIHRoaXMgZmlsZSB3aXRoIHByb2R1Y3Rpb24gaW5kZXgudHMgd2hlbiBpdCByZXdyaXRlcyBwcml2YXRlIHN5bWJvbFxuLy8gbmFtZXMuXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -1,15 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * @module
10
- * @description
11
- * Entry point for all public APIs of this package.
12
- */
13
- export * from './src/index';
14
- // This file only reexports content of the `src` folder. Keep it that way.
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3JvdXRlci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFDSCxjQUFjLGFBQWEsQ0FBQztBQUU1QiwwRUFBMEUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBAbW9kdWxlXG4gKiBAZGVzY3JpcHRpb25cbiAqIEVudHJ5IHBvaW50IGZvciBhbGwgcHVibGljIEFQSXMgb2YgdGhpcyBwYWNrYWdlLlxuICovXG5leHBvcnQgKiBmcm9tICcuL3NyYy9pbmRleCc7XG5cbi8vIFRoaXMgZmlsZSBvbmx5IHJlZXhwb3J0cyBjb250ZW50IG9mIHRoZSBgc3JjYCBmb2xkZXIuIEtlZXAgaXQgdGhhdCB3YXkuXG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcm91dGVyL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,124 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { runInInjectionContext, ɵRuntimeError as RuntimeError } from '@angular/core';
9
- import { of, throwError } from 'rxjs';
10
- import { NavigationCancellationCode } from './events';
11
- import { navigationCancelingError } from './navigation_canceling_error';
12
- import { PRIMARY_OUTLET } from './shared';
13
- import { UrlSegmentGroup, UrlTree } from './url_tree';
14
- export class NoMatch {
15
- constructor(segmentGroup) {
16
- this.segmentGroup = segmentGroup || null;
17
- }
18
- }
19
- export class AbsoluteRedirect extends Error {
20
- constructor(urlTree) {
21
- super();
22
- this.urlTree = urlTree;
23
- }
24
- }
25
- export function noMatch(segmentGroup) {
26
- return throwError(new NoMatch(segmentGroup));
27
- }
28
- export function absoluteRedirect(newTree) {
29
- return throwError(new AbsoluteRedirect(newTree));
30
- }
31
- export function namedOutletsRedirect(redirectTo) {
32
- return throwError(new RuntimeError(4000 /* RuntimeErrorCode.NAMED_OUTLET_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
33
- `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));
34
- }
35
- export function canLoadFails(route) {
36
- return throwError(navigationCancelingError((typeof ngDevMode === 'undefined' || ngDevMode) &&
37
- `Cannot load children because the guard of the route "path: '${route.path}'" returned false`, NavigationCancellationCode.GuardRejected));
38
- }
39
- export class ApplyRedirects {
40
- constructor(urlSerializer, urlTree) {
41
- this.urlSerializer = urlSerializer;
42
- this.urlTree = urlTree;
43
- }
44
- lineralizeSegments(route, urlTree) {
45
- let res = [];
46
- let c = urlTree.root;
47
- while (true) {
48
- res = res.concat(c.segments);
49
- if (c.numberOfChildren === 0) {
50
- return of(res);
51
- }
52
- if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {
53
- return namedOutletsRedirect(`${route.redirectTo}`);
54
- }
55
- c = c.children[PRIMARY_OUTLET];
56
- }
57
- }
58
- applyRedirectCommands(segments, redirectTo, posParams, currentSnapshot, injector) {
59
- if (typeof redirectTo !== 'string') {
60
- const redirectToFn = redirectTo;
61
- const { queryParams, fragment, routeConfig, url, outlet, params, data, title } = currentSnapshot;
62
- const newRedirect = runInInjectionContext(injector, () => redirectToFn({ params, data, queryParams, fragment, routeConfig, url, outlet, title }));
63
- if (newRedirect instanceof UrlTree) {
64
- throw new AbsoluteRedirect(newRedirect);
65
- }
66
- redirectTo = newRedirect;
67
- }
68
- const newTree = this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);
69
- if (redirectTo[0] === '/') {
70
- throw new AbsoluteRedirect(newTree);
71
- }
72
- return newTree;
73
- }
74
- applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) {
75
- const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);
76
- return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);
77
- }
78
- createQueryParams(redirectToParams, actualParams) {
79
- const res = {};
80
- Object.entries(redirectToParams).forEach(([k, v]) => {
81
- const copySourceValue = typeof v === 'string' && v[0] === ':';
82
- if (copySourceValue) {
83
- const sourceName = v.substring(1);
84
- res[k] = actualParams[sourceName];
85
- }
86
- else {
87
- res[k] = v;
88
- }
89
- });
90
- return res;
91
- }
92
- createSegmentGroup(redirectTo, group, segments, posParams) {
93
- const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);
94
- let children = {};
95
- Object.entries(group.children).forEach(([name, child]) => {
96
- children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);
97
- });
98
- return new UrlSegmentGroup(updatedSegments, children);
99
- }
100
- createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {
101
- return redirectToSegments.map((s) => s.path[0] === ':'
102
- ? this.findPosParam(redirectTo, s, posParams)
103
- : this.findOrReturn(s, actualSegments));
104
- }
105
- findPosParam(redirectTo, redirectToUrlSegment, posParams) {
106
- const pos = posParams[redirectToUrlSegment.path.substring(1)];
107
- if (!pos)
108
- throw new RuntimeError(4001 /* RuntimeErrorCode.MISSING_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
109
- `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);
110
- return pos;
111
- }
112
- findOrReturn(redirectToUrlSegment, actualSegments) {
113
- let idx = 0;
114
- for (const s of actualSegments) {
115
- if (s.path === redirectToUrlSegment.path) {
116
- actualSegments.splice(idx);
117
- return s;
118
- }
119
- idx++;
120
- }
121
- return redirectToUrlSegment;
122
- }
123
- }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHlfcmVkaXJlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcm91dGVyL3NyYy9hcHBseV9yZWRpcmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFXLHFCQUFxQixFQUFFLGFBQWEsSUFBSSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFhLEVBQUUsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHaEQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXBELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXRFLE9BQU8sRUFBUyxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFhLGVBQWUsRUFBaUIsT0FBTyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRS9FLE1BQU0sT0FBTyxPQUFPO0lBR2xCLFlBQVksWUFBOEI7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxLQUFLO0lBQ3pDLFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssRUFBRSxDQUFDO1FBRFMsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUVuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLFlBQTZCO0lBQ25ELE9BQU8sVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFnQjtJQUMvQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxV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QUFJLENBQ3BGLENBQUM7UUFDSixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLENBQUMsb0JBQWdDLEVBQUUsY0FBNEI7UUFDekUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osS0FBSyxNQUFNLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUNELEdBQUcsRUFBRSxDQUFDO1FBQ1IsQ0FBQztRQUNELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0b3IsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgybVSdW50aW1lRXJyb3IgYXMgUnVudGltZUVycm9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1J1bnRpbWVFcnJvckNvZGV9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7TmF2aWdhdGlvbkNhbmNlbGxhdGlvbkNvZGV9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7TG9hZGVkUm91dGVyQ29uZmlnLCBSZWRpcmVjdEZ1bmN0aW9uLCBSb3V0ZX0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtuYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3J9IGZyb20gJy4vbmF2aWdhdGlvbl9jYW5jZWxpbmdfZXJyb3InO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90fSBmcm9tICcuL3JvdXRlcl9zdGF0ZSc7XG5pbXBvcnQge1BhcmFtcywgUFJJTUFSWV9PVVRMRVR9IGZyb20gJy4vc2hhcmVkJztcbmltcG9ydCB7VXJsU2VnbWVudCwgVXJsU2VnbWVudEdyb3VwLCBVcmxTZXJpYWxpemVyLCBVcmxUcmVlfSBmcm9tICcuL3VybF90cmVlJztcblxuZXhwb3J0IGNsYXNzIE5vTWF0Y2gge1xuICBwdWJsaWMgc2VnbWVudEdyb3VwOiBVcmxTZWdtZW50R3JvdXAgfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHNlZ21lbnRHcm91cD86IFVybFNlZ21lbnRHcm91cCkge1xuICAgIHRoaXMuc2VnbWVudEdyb3VwID0gc2VnbWVudEdyb3VwIHx8IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFic29sdXRlUmVkaXJlY3QgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1cmxUcmVlOiBVcmxUcmVlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9NYXRjaChzZWdtZW50R3JvdXA6IFVybFNlZ21lbnRHcm91cCk6IE9ic2VydmFibGU8YW55PiB7XG4gIHJldHVybiB0aHJvd0Vycm9yKG5ldyBOb01hdGNoKHNlZ21lbnRHcm91cCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJzb2x1dGVSZWRpcmVjdChuZXdUcmVlOiBVcmxUcmVlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgcmV0dXJuIHRocm93RXJyb3IobmV3IEFic29sdXRlUmVkaXJlY3QobmV3VHJlZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZWRPdXRsZXRzUmVkaXJlY3QocmVkaXJlY3RUbzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgcmV0dXJuIHRocm93RXJyb3IoXG4gICAgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgIFJ1bnRpbWVFcnJvckNvZGUuTkFNRURfT1VUTEVUX1JFRElSRUNULFxuICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiZcbiAgICAgICAgYE9ubHkgYWJzb2x1dGUgcmVkaXJlY3RzIGNhbiBoYXZlIG5hbWVkIG91dGxldHMuIHJlZGlyZWN0VG86ICcke3JlZGlyZWN0VG99J2AsXG4gICAgKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbkxvYWRGYWlscyhyb3V0ZTogUm91dGUpOiBPYnNlcnZhYmxlPExvYWRlZFJvdXRlckNvbmZpZz4ge1xuICByZXR1cm4gdGhyb3dFcnJvcihcbiAgICBuYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3IoXG4gICAgICAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJlxuICAgICAgICBgQ2Fubm90IGxvYWQgY2hpbGRyZW4gYmVjYXVzZSB0aGUgZ3VhcmQgb2YgdGhlIHJvdXRlIFwicGF0aDogJyR7cm91dGUucGF0aH0nXCIgcmV0dXJuZWQgZmFsc2VgLFxuICAgICAgTmF2aWdhdGlvbkNhbmNlbGxhdGlvbkNvZGUuR3VhcmRSZWplY3RlZCxcbiAgICApLFxuICApO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwbHlSZWRpcmVjdHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXG4gICAgcHJpdmF0ZSB1cmxUcmVlOiBVcmxUcmVlLFxuICApIHt9XG5cbiAgbGluZXJhbGl6ZVNlZ21lbnRzKHJvdXRlOiBSb3V0ZSwgdXJsVHJlZTogVXJsVHJlZSk6IE9ic2VydmFibGU8VXJsU2VnbWVudFtdPiB7XG4gICAgbGV0IHJlczogVXJsU2VnbWVudFtdID0gW107XG4gICAgbGV0IGMgPSB1cmxUcmVlLnJvb3Q7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHJlcyA9IHJlcy5jb25jYXQoYy5zZWdtZW50cyk7XG4gICAgICBpZiAoYy5udW1iZXJPZkNoaWxkcmVuID09PSAwKSB7XG4gICAgICAgIHJldHVybiBvZihyZXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYy5udW1iZXJPZkNoaWxkcmVuID4gMSB8fCAhYy5jaGlsZHJlbltQUklNQVJZX09VVExFVF0pIHtcbiAgICAgICAgcmV0dXJuIG5hbWVkT3V0bGV0c1JlZGlyZWN0KGAke3JvdXRlLnJlZGlyZWN0VG8hfWApO1xuICAgICAgfVxuXG4gICAgICBjID0gYy5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG4gICAgfVxuICB9XG5cbiAgYXBwbHlSZWRpcmVjdENvbW1hbmRzKFxuICAgIHNlZ21lbnRzOiBVcmxTZWdtZW50W10sXG4gICAgcmVkaXJlY3RUbzogc3RyaW5nIHwgUmVkaXJlY3RGdW5jdGlvbixcbiAgICBwb3NQYXJhbXM6IHtbazogc3RyaW5nXTogVXJsU2VnbWVudH0sXG4gICAgY3VycmVudFNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgKTogVXJsVHJlZSB7XG4gICAgaWYgKHR5cGVvZiByZWRpcmVjdFRvICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcmVkaXJlY3RUb0ZuID0gcmVkaXJlY3RUbztcbiAgICAgIGNvbnN0IHtxdWVyeVBhcmFtcywgZnJhZ21lbnQsIHJvdXRlQ29uZmlnLCB1cmwsIG91dGxldCwgcGFyYW1zLCBkYXRhLCB0aXRsZX0gPVxuICAgICAgICBjdXJyZW50U25hcHNob3Q7XG4gICAgICBjb25zdCBuZXdSZWRpcmVjdCA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT5cbiAgICAgICAgcmVkaXJlY3RUb0ZuKHtwYXJhbXMsIGRhdGEsIHF1ZXJ5UGFyYW1zLCBmcmFnbWVudCwgcm91dGVDb25maWcsIHVybCwgb3V0bGV0LCB0aXRsZX0pLFxuICAgICAgKTtcbiAgICAgIGlmIChuZXdSZWRpcmVjdCBpbnN0YW5jZW9mIFVybFRyZWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFic29sdXRlUmVkaXJlY3QobmV3UmVkaXJlY3QpO1xuICAgICAgfVxuXG4gICAgICByZWRpcmVjdFRvID0gbmV3UmVkaXJlY3Q7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3VHJlZSA9IHRoaXMuYXBwbHlSZWRpcmVjdENyZWF0ZVVybFRyZWUoXG4gICAgICByZWRpcmVjdFRvLFxuICAgICAgdGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKHJlZGlyZWN0VG8pLFxuICAgICAgc2VnbWVudHMsXG4gICAgICBwb3NQYXJhbXMsXG4gICAgKTtcbiAgICBpZiAocmVkaXJlY3RUb1swXSA9PT0gJy8nKSB7XG4gICAgICB0aHJvdyBuZXcgQWJzb2x1dGVSZWRpcmVjdChuZXdUcmVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1RyZWU7XG4gIH1cblxuICBhcHBseVJlZGlyZWN0Q3JlYXRlVXJsVHJlZShcbiAgICByZWRpcmVjdFRvOiBzdHJpbmcsXG4gICAgdXJsVHJlZTogVXJsVHJlZSxcbiAgICBzZWdtZW50czogVXJsU2VnbWVudFtdLFxuICAgIHBvc1BhcmFtczoge1trOiBzdHJpbmddOiBVcmxTZWdtZW50fSxcbiAgKTogVXJsVHJlZSB7XG4gICAgY29uc3QgbmV3Um9vdCA9IHRoaXMuY3JlYXRlU2VnbWVudEdyb3VwKHJlZGlyZWN0VG8sIHVybFRyZWUucm9vdCwgc2VnbWVudHMsIHBvc1BhcmFtcyk7XG4gICAgcmV0dXJuIG5ldyBVcmxUcmVlKFxuICAgICAgbmV3Um9vdCxcbiAgICAgIHRoaXMuY3JlYXRlUXVlcnlQYXJhbXModXJsVHJlZS5xdWVyeVBhcmFtcywgdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSxcbiAgICAgIHVybFRyZWUuZnJhZ21lbnQsXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVF1ZXJ5UGFyYW1zKHJlZGlyZWN0VG9QYXJhbXM6IFBhcmFtcywgYWN0dWFsUGFyYW1zOiBQYXJhbXMpOiBQYXJhbXMge1xuICAgIGNvbnN0IHJlczogUGFyYW1zID0ge307XG4gICAgT2JqZWN0LmVudHJpZXMocmVkaXJlY3RUb1BhcmFtcykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICBjb25zdCBjb3B5U291cmNlVmFsdWUgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdlswXSA9PT0gJzonO1xuICAgICAgaWYgKGNvcHlTb3VyY2VWYWx1ZSkge1xuICAgICAgICBjb25zdCBzb3VyY2VOYW1lID0gdi5zdWJzdHJpbmcoMSk7XG4gICAgICAgIHJlc1trXSA9IGFjdHVhbFBhcmFtc1tzb3VyY2VOYW1lXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc1trXSA9IHY7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGNyZWF0ZVNlZ21lbnRHcm91cChcbiAgICByZWRpcmVjdFRvOiBzdHJpbmcsXG4gICAgZ3JvdXA6IFVybFNlZ21lbnRHcm91cCxcbiAgICBzZWdtZW50czogVXJsU2VnbWVudFtdLFxuICAgIHBvc1BhcmFtczoge1trOiBzdHJpbmddOiBVcmxTZWdtZW50fSxcbiAgKTogVXJsU2VnbWVudEdyb3VwIHtcbiAgICBjb25zdCB1cGRhdGVkU2VnbWVudHMgPSB0aGlzLmNyZWF0ZVNlZ21lbnRzKHJlZGlyZWN0VG8sIGdyb3VwLnNlZ21lbnRzLCBzZWdtZW50cywgcG9zUGFyYW1zKTtcblxuICAgIGxldCBjaGlsZHJlbjoge1tuOiBzdHJpbmddOiBVcmxTZWdtZW50R3JvdXB9ID0ge307XG4gICAgT2JqZWN0LmVudHJpZXMoZ3JvdXAuY2hpbGRyZW4pLmZvckVhY2goKFtuYW1lLCBjaGlsZF0pID0+IHtcbiAgICAgIGNoaWxkcmVuW25hbWVdID0gdGhpcy5jcmVhdGVTZWdtZW50R3JvdXAocmVkaXJlY3RUbywgY2hpbGQsIHNlZ21lbnRzLCBwb3NQYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBVcmxTZWdtZW50R3JvdXAodXBkYXRlZFNlZ21lbnRzLCBjaGlsZHJlbik7XG4gIH1cblxuICBjcmVhdGVTZWdtZW50cyhcbiAgICByZWRpcmVjdFRvOiBzdHJpbmcsXG4gICAgcmVkaXJlY3RUb1NlZ21lbnRzOiBVcmxTZWdtZW50W10sXG4gICAgYWN0dWFsU2VnbWVudHM6IFVybFNlZ21lbnRbXSxcbiAgICBwb3NQYXJhbXM6IHtbazogc3RyaW5nXTogVXJsU2VnbWVudH0sXG4gICk6IFVybFNlZ21lbnRbXSB7XG4gICAgcmV0dXJuIHJlZGlyZWN0VG9TZWdtZW50cy5tYXAoKHMpID0+XG4gICAgICBzLnBhdGhbMF0gPT09ICc6J1xuICAgICAgICA/IHRoaXMuZmluZFBvc1BhcmFtKHJlZGlyZWN0VG8sIHMsIHBvc1BhcmFtcylcbiAgICAgICAgOiB0aGlzLmZpbmRPclJldHVybihzLCBhY3R1YWxTZWdtZW50cyksXG4gICAgKTtcbiAgfVxuXG4gIGZpbmRQb3NQYXJhbShcbiAgICByZWRpcmVjdFRvOiBzdHJpbmcsXG4gICAgcmVkaXJlY3RUb1VybFNlZ21lbnQ6IFVybFNlZ21lbnQsXG4gICAgcG9zUGFyYW1zOiB7W2s6IHN0cmluZ106IFVybFNlZ21lbnR9LFxuICApOiBVcmxTZWdtZW50IHtcbiAgICBjb25zdCBwb3MgPSBwb3NQYXJhbXNbcmVkaXJlY3RUb1VybFNlZ21lbnQucGF0aC5zdWJzdHJpbmcoMSldO1xuICAgIGlmICghcG9zKVxuICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgUnVudGltZUVycm9yQ29kZS5NSVNTSU5HX1JFRElSRUNULFxuICAgICAgICAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJlxuICAgICAgICAgIGBDYW5ub3QgcmVkaXJlY3QgdG8gJyR7cmVkaXJlY3RUb30nLiBDYW5ub3QgZmluZCAnJHtyZWRpcmVjdFRvVXJsU2VnbWVudC5wYXRofScuYCxcbiAgICAgICk7XG4gICAgcmV0dXJuIHBvcztcbiAgfVxuXG4gIGZpbmRPclJldHVybihyZWRpcmVjdFRvVXJsU2VnbWVudDogVXJsU2VnbWVudCwgYWN0dWFsU2VnbWVudHM6IFVybFNlZ21lbnRbXSk6IFVybFNlZ21lbnQge1xuICAgIGxldCBpZHggPSAwO1xuICAgIGZvciAoY29uc3QgcyBvZiBhY3R1YWxTZWdtZW50cykge1xuICAgICAgaWYgKHMucGF0aCA9PT0gcmVkaXJlY3RUb1VybFNlZ21lbnQucGF0aCkge1xuICAgICAgICBhY3R1YWxTZWdtZW50cy5zcGxpY2UoaWR4KTtcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgICB9XG4gICAgICBpZHgrKztcbiAgICB9XG4gICAgcmV0dXJuIHJlZGlyZWN0VG9VcmxTZWdtZW50O1xuICB9XG59XG4iXX0=
@@ -1,49 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Component } from '@angular/core';
9
- import { RouterOutlet } from '../directives/router_outlet';
10
- import { PRIMARY_OUTLET } from '../shared';
11
- import * as i0 from "@angular/core";
12
- export { ɵEmptyOutletComponent as EmptyOutletComponent };
13
- /**
14
- * This component is used internally within the router to be a placeholder when an empty
15
- * router-outlet is needed. For example, with a config such as:
16
- *
17
- * `{path: 'parent', outlet: 'nav', children: [...]}`
18
- *
19
- * In order to render, there needs to be a component on this config, which will default
20
- * to this `EmptyOutletComponent`.
21
- */
22
- export class ɵEmptyOutletComponent {
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.0", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
27
- type: Component,
28
- args: [{
29
- template: `<router-outlet></router-outlet>`,
30
- imports: [RouterOutlet],
31
- standalone: true,
32
- }]
33
- }] });
34
- /**
35
- * Makes a copy of the config and adds any default required properties.
36
- */
37
- export function standardizeConfig(r) {
38
- const children = r.children && r.children.map(standardizeConfig);
39
- const c = children ? { ...r, children } : { ...r };
40
- if (!c.component &&
41
- !c.loadComponent &&
42
- (children || c.loadChildren) &&
43
- c.outlet &&
44
- c.outlet !== PRIMARY_OUTLET) {
45
- c.component = ɵEmptyOutletComponent;
46
- }
47
- return c;
48
- }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHlfb3V0bGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcm91dGVyL3NyYy9jb21wb25lbnRzL2VtcHR5X291dGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUV6QyxPQUFPLEVBQUMscUJBQXFCLElBQUksb0JBQW9CLEVBQUMsQ0FBQztBQUV2RDs7Ozs7Ozs7R0FRRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7eUhBQXJCLHFCQUFxQjs2R0FBckIscUJBQXFCLHdFQUp0QixpQ0FBaUMsNERBQ2pDLFlBQVk7O3NHQUdYLHFCQUFxQjtrQkFMakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFHRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxDQUFRO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNqRSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQztJQUMvQyxJQUNFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDWixDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2hCLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDNUIsQ0FBQyxDQUFDLE1BQU07UUFDUixDQUFDLENBQUMsTUFBTSxLQUFLLGNBQWMsRUFDM0IsQ0FBQztRQUNELENBQUMsQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUM7SUFDdEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Um91dGVyT3V0bGV0fSBmcm9tICcuLi9kaXJlY3RpdmVzL3JvdXRlcl9vdXRsZXQnO1xuaW1wb3J0IHtQUklNQVJZX09VVExFVH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7Um91dGV9IGZyb20gJy4uL21vZGVscyc7XG5leHBvcnQge8m1RW1wdHlPdXRsZXRDb21wb25lbnQgYXMgRW1wdHlPdXRsZXRDb21wb25lbnR9O1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gdGhlIHJvdXRlciB0byBiZSBhIHBsYWNlaG9sZGVyIHdoZW4gYW4gZW1wdHlcbiAqIHJvdXRlci1vdXRsZXQgaXMgbmVlZGVkLiBGb3IgZXhhbXBsZSwgd2l0aCBhIGNvbmZpZyBzdWNoIGFzOlxuICpcbiAqIGB7cGF0aDogJ3BhcmVudCcsIG91dGxldDogJ25hdicsIGNoaWxkcmVuOiBbLi4uXX1gXG4gKlxuICogSW4gb3JkZXIgdG8gcmVuZGVyLCB0aGVyZSBuZWVkcyB0byBiZSBhIGNvbXBvbmVudCBvbiB0aGlzIGNvbmZpZywgd2hpY2ggd2lsbCBkZWZhdWx0XG4gKiB0byB0aGlzIGBFbXB0eU91dGxldENvbXBvbmVudGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5gLFxuICBpbXBvcnRzOiBbUm91dGVyT3V0bGV0XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgybVFbXB0eU91dGxldENvbXBvbmVudCB7fVxuXG4vKipcbiAqIE1ha2VzIGEgY29weSBvZiB0aGUgY29uZmlnIGFuZCBhZGRzIGFueSBkZWZhdWx0IHJlcXVpcmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFuZGFyZGl6ZUNvbmZpZyhyOiBSb3V0ZSk6IFJvdXRlIHtcbiAgY29uc3QgY2hpbGRyZW4gPSByLmNoaWxkcmVuICYmIHIuY2hpbGRyZW4ubWFwKHN0YW5kYXJkaXplQ29uZmlnKTtcbiAgY29uc3QgYyA9IGNoaWxkcmVuID8gey4uLnIsIGNoaWxkcmVufSA6IHsuLi5yfTtcbiAgaWYgKFxuICAgICFjLmNvbXBvbmVudCAmJlxuICAgICFjLmxvYWRDb21wb25lbnQgJiZcbiAgICAoY2hpbGRyZW4gfHwgYy5sb2FkQ2hpbGRyZW4pICYmXG4gICAgYy5vdXRsZXQgJiZcbiAgICBjLm91dGxldCAhPT0gUFJJTUFSWV9PVVRMRVRcbiAgKSB7XG4gICAgYy5jb21wb25lbnQgPSDJtUVtcHR5T3V0bGV0Q29tcG9uZW50O1xuICB9XG4gIHJldHVybiBjO1xufVxuIl19
@@ -1,52 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { BehaviorSubject } from 'rxjs';
9
- import { ActivatedRoute, RouterState, } from './router_state';
10
- import { TreeNode } from './utils/tree';
11
- export function createRouterState(routeReuseStrategy, curr, prevState) {
12
- const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);
13
- return new RouterState(root, curr);
14
- }
15
- function createNode(routeReuseStrategy, curr, prevState) {
16
- // reuse an activated route that is currently displayed on the screen
17
- if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {
18
- const value = prevState.value;
19
- value._futureSnapshot = curr.value;
20
- const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);
21
- return new TreeNode(value, children);
22
- }
23
- else {
24
- if (routeReuseStrategy.shouldAttach(curr.value)) {
25
- // retrieve an activated route that is used to be displayed, but is not currently displayed
26
- const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);
27
- if (detachedRouteHandle !== null) {
28
- const tree = detachedRouteHandle.route;
29
- tree.value._futureSnapshot = curr.value;
30
- tree.children = curr.children.map((c) => createNode(routeReuseStrategy, c));
31
- return tree;
32
- }
33
- }
34
- const value = createActivatedRoute(curr.value);
35
- const children = curr.children.map((c) => createNode(routeReuseStrategy, c));
36
- return new TreeNode(value, children);
37
- }
38
- }
39
- function createOrReuseChildren(routeReuseStrategy, curr, prevState) {
40
- return curr.children.map((child) => {
41
- for (const p of prevState.children) {
42
- if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {
43
- return createNode(routeReuseStrategy, child, p);
44
- }
45
- }
46
- return createNode(routeReuseStrategy, child);
47
- });
48
- }
49
- function createActivatedRoute(c) {
50
- return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);
51
- }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX3JvdXRlcl9zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3JvdXRlci9zcmMvY3JlYXRlX3JvdXRlcl9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3JDLE9BQU8sRUFDTCxjQUFjLEVBRWQsV0FBVyxHQUVaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV0QyxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLGtCQUFzQyxFQUN0QyxJQUF5QixFQUN6QixTQUFzQjtJQUV0QixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pHLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FDakIsa0JBQXNDLEVBQ3RDLElBQXNDLEVBQ3RDLFNBQW9DO0lBRXBDLHFFQUFxRTtJQUNyRSxJQUFJLFNBQVMsSUFBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQzlCLEtBQUssQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUUsT0FBTyxJQUFJLFFBQVEsQ0FBaUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEQsMkZBQTJGO1lBQzNGLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRSxJQUFJLG1CQUFtQixLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNqQyxNQUFNLElBQUksR0FBSSxtQkFBbUQsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1RSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksUUFBUSxDQUFpQixLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixrQkFBc0MsRUFDdEMsSUFBc0MsRUFDdEMsU0FBbUM7SUFFbkMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2pDLEtBQUssTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25DLElBQUksa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZFLE9BQU8sVUFBVSxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsQ0FBeUI7SUFDckQsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMxQixJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQzdCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFDbEMsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUMvQixJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQzNCLENBQUMsQ0FBQyxNQUFNLEVBQ1IsQ0FBQyxDQUFDLFNBQVMsRUFDWCxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0RldGFjaGVkUm91dGVIYW5kbGVJbnRlcm5hbCwgUm91dGVSZXVzZVN0cmF0ZWd5fSBmcm9tICcuL3JvdXRlX3JldXNlX3N0cmF0ZWd5JztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZSxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbn0gZnJvbSAnLi9yb3V0ZXJfc3RhdGUnO1xuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi91dGlscy90cmVlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlclN0YXRlKFxuICByb3V0ZVJldXNlU3RyYXRlZ3k6IFJvdXRlUmV1c2VTdHJhdGVneSxcbiAgY3VycjogUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgcHJldlN0YXRlOiBSb3V0ZXJTdGF0ZSxcbik6IFJvdXRlclN0YXRlIHtcbiAgY29uc3Qgcm9vdCA9IGNyZWF0ZU5vZGUocm91dGVSZXVzZVN0cmF0ZWd5LCBjdXJyLl9yb290LCBwcmV2U3RhdGUgPyBwcmV2U3RhdGUuX3Jvb3QgOiB1bmRlZmluZWQpO1xuICByZXR1cm4gbmV3IFJvdXRlclN0YXRlKHJvb3QsIGN1cnIpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOb2RlKFxuICByb3V0ZVJldXNlU3RyYXRlZ3k6IFJvdXRlUmV1c2VTdHJhdGVneSxcbiAgY3VycjogVHJlZU5vZGU8QWN0aXZhdGVkUm91dGVTbmFwc2hvdD4sXG4gIHByZXZTdGF0ZT86IFRyZWVOb2RlPEFjdGl2YXRlZFJvdXRlPixcbik6IFRyZWVOb2RlPEFjdGl2YXRlZFJvdXRlPiB7XG4gIC8vIHJldXNlIGFuIGFjdGl2YXRlZCByb3V0ZSB0aGF0IGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQgb24gdGhlIHNjcmVlblxuICBpZiAocHJldlN0YXRlICYmIHJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlKGN1cnIudmFsdWUsIHByZXZTdGF0ZS52YWx1ZS5zbmFwc2hvdCkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByZXZTdGF0ZS52YWx1ZTtcbiAgICB2YWx1ZS5fZnV0dXJlU25hcHNob3QgPSBjdXJyLnZhbHVlO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gY3JlYXRlT3JSZXVzZUNoaWxkcmVuKHJvdXRlUmV1c2VTdHJhdGVneSwgY3VyciwgcHJldlN0YXRlKTtcbiAgICByZXR1cm4gbmV3IFRyZWVOb2RlPEFjdGl2YXRlZFJvdXRlPih2YWx1ZSwgY2hpbGRyZW4pO1xuICB9IGVsc2Uge1xuICAgIGlmIChyb3V0ZVJldXNlU3RyYXRlZ3kuc2hvdWxkQXR0YWNoKGN1cnIudmFsdWUpKSB7XG4gICAgICAvLyByZXRyaWV2ZSBhbiBhY3RpdmF0ZWQgcm91dGUgdGhhdCBpcyB1c2VkIHRvIGJlIGRpc3BsYXllZCwgYnV0IGlzIG5vdCBjdXJyZW50bHkgZGlzcGxheWVkXG4gICAgICBjb25zdCBkZXRhY2hlZFJvdXRlSGFuZGxlID0gcm91dGVSZXVzZVN0cmF0ZWd5LnJldHJpZXZlKGN1cnIudmFsdWUpO1xuICAgICAgaWYgKGRldGFjaGVkUm91dGVIYW5kbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdHJlZSA9IChkZXRhY2hlZFJvdXRlSGFuZGxlIGFzIERldGFjaGVkUm91dGVIYW5kbGVJbnRlcm5hbCkucm91dGU7XG4gICAgICAgIHRyZWUudmFsdWUuX2Z1dHVyZVNuYXBzaG90ID0gY3Vyci52YWx1ZTtcbiAgICAgICAgdHJlZS5jaGlsZHJlbiA9IGN1cnIuY2hpbGRyZW4ubWFwKChjKSA9PiBjcmVhdGVOb2RlKHJvdXRlUmV1c2VTdHJhdGVneSwgYykpO1xuICAgICAgICByZXR1cm4gdHJlZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNyZWF0ZUFjdGl2YXRlZFJvdXRlKGN1cnIudmFsdWUpO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gY3Vyci5jaGlsZHJlbi5tYXAoKGMpID0+IGNyZWF0ZU5vZGUocm91dGVSZXVzZVN0cmF0ZWd5LCBjKSk7XG4gICAgcmV0dXJuIG5ldyBUcmVlTm9kZTxBY3RpdmF0ZWRSb3V0ZT4odmFsdWUsIGNoaWxkcmVuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVPclJldXNlQ2hpbGRyZW4oXG4gIHJvdXRlUmV1c2VTdHJhdGVneTogUm91dGVSZXVzZVN0cmF0ZWd5LFxuICBjdXJyOiBUcmVlTm9kZTxBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90PixcbiAgcHJldlN0YXRlOiBUcmVlTm9kZTxBY3RpdmF0ZWRSb3V0ZT4sXG4pIHtcbiAgcmV0dXJuIGN1cnIuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xuICAgIGZvciAoY29uc3QgcCBvZiBwcmV2U3RhdGUuY2hpbGRyZW4pIHtcbiAgICAgIGlmIChyb3V0ZVJldXNlU3RyYXRlZ3kuc2hvdWxkUmV1c2VSb3V0ZShjaGlsZC52YWx1ZSwgcC52YWx1ZS5zbmFwc2hvdCkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU5vZGUocm91dGVSZXVzZVN0cmF0ZWd5LCBjaGlsZCwgcCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVOb2RlKHJvdXRlUmV1c2VTdHJhdGVneSwgY2hpbGQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQWN0aXZhdGVkUm91dGUoYzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICByZXR1cm4gbmV3IEFjdGl2YXRlZFJvdXRlKFxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoYy51cmwpLFxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoYy5wYXJhbXMpLFxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoYy5xdWVyeVBhcmFtcyksXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdChjLmZyYWdtZW50KSxcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KGMuZGF0YSksXG4gICAgYy5vdXRsZXQsXG4gICAgYy5jb21wb25lbnQsXG4gICAgYyxcbiAgKTtcbn1cbiJdfQ==