@angular/core 15.0.0-next.4 → 15.0.0-next.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/esm2020/src/application_ref.mjs +1 -1
  2. package/esm2020/src/core_private_export.mjs +2 -1
  3. package/esm2020/src/di/index.mjs +2 -2
  4. package/esm2020/src/di/injectable.mjs +1 -1
  5. package/esm2020/src/di/injection_token.mjs +6 -3
  6. package/esm2020/src/di/interface/defs.mjs +1 -1
  7. package/esm2020/src/di/interface/provider.mjs +4 -2
  8. package/esm2020/src/di/provider_collection.mjs +30 -4
  9. package/esm2020/src/di/r3_injector.mjs +4 -6
  10. package/esm2020/src/errors.mjs +1 -1
  11. package/esm2020/src/metadata/directives.mjs +1 -1
  12. package/esm2020/src/metadata/ng_module.mjs +1 -1
  13. package/esm2020/src/render3/component_ref.mjs +20 -10
  14. package/esm2020/src/render3/errors_di.mjs +9 -3
  15. package/esm2020/src/render3/features/host_directives_feature.mjs +101 -9
  16. package/esm2020/src/render3/features/ng_onchanges_feature.mjs +4 -2
  17. package/esm2020/src/render3/instructions/shared.mjs +70 -34
  18. package/esm2020/src/render3/interfaces/definition.mjs +1 -1
  19. package/esm2020/src/render3/jit/directive.mjs +2 -6
  20. package/esm2020/src/render3/jit/module.mjs +2 -2
  21. package/esm2020/src/render3/ng_module_ref.mjs +1 -1
  22. package/esm2020/src/version.mjs +1 -1
  23. package/esm2020/testing/src/logger.mjs +3 -3
  24. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  25. package/esm2020/testing/src/test_bed_compiler.mjs +29 -11
  26. package/fesm2015/core.mjs +243 -69
  27. package/fesm2015/core.mjs.map +1 -1
  28. package/fesm2015/testing.mjs +269 -73
  29. package/fesm2015/testing.mjs.map +1 -1
  30. package/fesm2020/core.mjs +243 -69
  31. package/fesm2020/core.mjs.map +1 -1
  32. package/fesm2020/testing.mjs +269 -73
  33. package/fesm2020/testing.mjs.map +1 -1
  34. package/index.d.ts +103 -32
  35. package/package.json +2 -2
  36. package/schematics/migrations/relative-link-resolution/index.d.ts +10 -0
  37. package/schematics/migrations/relative-link-resolution/index.js +68 -0
  38. package/schematics/migrations/relative-link-resolution/util.d.ts +20 -0
  39. package/schematics/migrations/relative-link-resolution/util.js +82 -0
  40. package/schematics/migrations/router-link-with-href/index.d.ts +10 -0
  41. package/schematics/migrations/router-link-with-href/index.js +70 -0
  42. package/schematics/migrations/router-link-with-href/util.d.ts +19 -0
  43. package/schematics/migrations/router-link-with-href/util.js +111 -0
  44. package/schematics/migrations.json +10 -0
  45. package/schematics/utils/typescript/imports.d.ts +10 -0
  46. package/schematics/utils/typescript/imports.js +17 -2
  47. package/testing/index.d.ts +1 -1
@@ -0,0 +1,19 @@
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
+ /// <amd-module name="@angular/core/schematics/migrations/router-link-with-href/util" />
9
+ import ts from 'typescript';
10
+ export declare const routerLink = "RouterLink";
11
+ export declare const routerLinkWithHref = "RouterLinkWithHref";
12
+ export declare const routerModule = "@angular/router";
13
+ export interface RewriteEntity {
14
+ startPos: number;
15
+ width: number;
16
+ replacement: string;
17
+ }
18
+ export declare type RewriteFn = (startPos: number, width: number, text: string) => void;
19
+ export declare function migrateFile(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker, rewrite: RewriteFn): void;
@@ -0,0 +1,111 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ (function (factory) {
12
+ if (typeof module === "object" && typeof module.exports === "object") {
13
+ var v = factory(require, exports);
14
+ if (v !== undefined) module.exports = v;
15
+ }
16
+ else if (typeof define === "function" && define.amd) {
17
+ define("@angular/core/schematics/migrations/router-link-with-href/util", ["require", "exports", "typescript", "@angular/core/schematics/utils/typescript/imports", "@angular/core/schematics/utils/typescript/nodes"], factory);
18
+ }
19
+ })(function (require, exports) {
20
+ "use strict";
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.migrateFile = exports.routerModule = exports.routerLinkWithHref = exports.routerLink = void 0;
23
+ const typescript_1 = __importDefault(require("typescript"));
24
+ const imports_1 = require("@angular/core/schematics/utils/typescript/imports");
25
+ const nodes_1 = require("@angular/core/schematics/utils/typescript/nodes");
26
+ exports.routerLink = 'RouterLink';
27
+ exports.routerLinkWithHref = 'RouterLinkWithHref';
28
+ exports.routerModule = '@angular/router';
29
+ function migrateFile(sourceFile, typeChecker, rewrite) {
30
+ const routerLinkWithHrefSpec = (0, imports_1.getImportSpecifier)(sourceFile, exports.routerModule, exports.routerLinkWithHref);
31
+ // No `RouterLinkWithHref` found, nothing to migrate, exit early.
32
+ if (routerLinkWithHrefSpec === null)
33
+ return;
34
+ let rewrites = findUsages(sourceFile, typeChecker);
35
+ // There are some usages of the `RouterLinkWithHref` symbol, which need to
36
+ // be rewritten to `RouterLink` instead. Let's check if the `RouterLink` is
37
+ // already imported.
38
+ const routerLinkSpec = (0, imports_1.getImportSpecifier)(sourceFile, exports.routerModule, exports.routerLink);
39
+ if (routerLinkSpec) {
40
+ // The `RouterLink` symbol is already imported, just drop the `RouterLinkWithHref` one.
41
+ const routerLinkNamedImports = routerLinkWithHrefSpec ?
42
+ (0, nodes_1.closestNode)(routerLinkWithHrefSpec, typescript_1.default.SyntaxKind.NamedImports) :
43
+ null;
44
+ if (routerLinkNamedImports !== null) {
45
+ // Given an original import like this one:
46
+ // ```
47
+ // import {RouterModule, RouterLinkWithHref, RouterLink} from '@angular/router';
48
+ // ```
49
+ // The code below removes the `RouterLinkWithHref` from the named imports section
50
+ // (i.e. `{RouterModule, RouterLinkWithHref, RouterLink}`) and prints an updated
51
+ // version (`{RouterModule, RouterLink}`) to a string, which is used as a
52
+ // replacement.
53
+ const rewrittenNamedImports = (0, imports_1.removeSymbolFromNamedImports)(routerLinkNamedImports, routerLinkWithHrefSpec);
54
+ const printer = typescript_1.default.createPrinter();
55
+ const replacement = printer.printNode(typescript_1.default.EmitHint.Unspecified, rewrittenNamedImports, sourceFile);
56
+ rewrites.push({
57
+ startPos: routerLinkNamedImports.getStart(),
58
+ width: routerLinkNamedImports.getWidth(),
59
+ replacement: replacement,
60
+ });
61
+ }
62
+ }
63
+ else {
64
+ // The `RouterLink` symbol is not imported, but the `RouterLinkWithHref` is imported,
65
+ // so rewrite `RouterLinkWithHref` -> `RouterLink`.
66
+ rewrites.push({
67
+ startPos: routerLinkWithHrefSpec.getStart(),
68
+ width: routerLinkWithHrefSpec.getWidth(),
69
+ replacement: exports.routerLink,
70
+ });
71
+ }
72
+ // Process rewrites last-to-first (based on start pos) to avoid offset shifts during rewrites.
73
+ rewrites = sortByStartPosDescending(rewrites);
74
+ for (const usage of rewrites) {
75
+ rewrite(usage.startPos, usage.width, usage.replacement);
76
+ }
77
+ }
78
+ exports.migrateFile = migrateFile;
79
+ function findUsages(sourceFile, typeChecker) {
80
+ const usages = [];
81
+ const visitNode = (node) => {
82
+ if (typescript_1.default.isImportSpecifier(node)) {
83
+ // Skip this node and all of its children; imports are a special case.
84
+ return;
85
+ }
86
+ if (typescript_1.default.isIdentifier(node)) {
87
+ const importIdentifier = (0, imports_1.getImportOfIdentifier)(typeChecker, node);
88
+ if ((importIdentifier === null || importIdentifier === void 0 ? void 0 : importIdentifier.importModule) === exports.routerModule &&
89
+ importIdentifier.name === exports.routerLinkWithHref) {
90
+ usages.push({
91
+ startPos: node.getStart(),
92
+ width: node.getWidth(),
93
+ replacement: exports.routerLink,
94
+ });
95
+ }
96
+ }
97
+ typescript_1.default.forEachChild(node, visitNode);
98
+ };
99
+ typescript_1.default.forEachChild(sourceFile, visitNode);
100
+ return usages;
101
+ }
102
+ /**
103
+ * Sort all found usages based on their start positions in the source file in descending order (i.e.
104
+ * last usage goes first on the list, etc). This is needed to avoid shifting offsets in the source
105
+ * file (in case there are multiple usages) as we rewrite symbols.
106
+ */
107
+ function sortByStartPosDescending(rewrites) {
108
+ return rewrites.sort((entityA, entityB) => entityB.startPos - entityA.startPos);
109
+ }
110
+ });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JvdXRlci1saW5rLXdpdGgtaHJlZi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDREQUE0QjtJQUU1QiwrRUFBdUg7SUFDdkgsMkVBQXlEO0lBRTVDLFFBQUEsVUFBVSxHQUFHLFlBQVksQ0FBQztJQUMxQixRQUFBLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDO0lBQzFDLFFBQUEsWUFBWSxHQUFHLGlCQUFpQixDQUFDO0lBVTlDLFNBQWdCLFdBQVcsQ0FDdkIsVUFBeUIsRUFBRSxXQUEyQixFQUFFLE9BQWtCO1FBQzVFLE1BQU0sc0JBQXNCLEdBQUcsSUFBQSw0QkFBa0IsRUFBQyxVQUFVLEVBQUUsb0JBQVksRUFBRSwwQkFBa0IsQ0FBQyxDQUFDO1FBRWhHLGlFQUFpRTtRQUNqRSxJQUFJLHNCQUFzQixLQUFLLElBQUk7WUFBRSxPQUFPO1FBRTVDLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFbkQsMEVBQTBFO1FBQzFFLDJFQUEyRTtRQUMzRSxvQkFBb0I7UUFDcEIsTUFBTSxjQUFjLEdBQUcsSUFBQSw0QkFBa0IsRUFBQyxVQUFVLEVBQUUsb0JBQVksRUFBRSxrQkFBVSxDQUFDLENBQUM7UUFFaEYsSUFBSSxjQUFjLEVBQUU7WUFDbEIsdUZBQXVGO1lBQ3ZGLE1BQU0sc0JBQXNCLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztnQkFDbkQsSUFBQSxtQkFBVyxFQUFrQixzQkFBc0IsRUFBRSxvQkFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixJQUFJLENBQUM7WUFDVCxJQUFJLHNCQUFzQixLQUFLLElBQUksRUFBRTtnQkFDbkMsMENBQTBDO2dCQUMxQyxNQUFNO2dCQUNOLGdGQUFnRjtnQkFDaEYsTUFBTTtnQkFDTixpRkFBaUY7Z0JBQ2pGLGdGQUFnRjtnQkFDaEYseUVBQXlFO2dCQUN6RSxlQUFlO2dCQUNmLE1BQU0scUJBQXFCLEdBQ3ZCLElBQUEsc0NBQTRCLEVBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztnQkFDakYsTUFBTSxPQUFPLEdBQUcsb0JBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxXQUFXLEdBQ2IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxvQkFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ2xGLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ1osUUFBUSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtvQkFDM0MsS0FBSyxFQUFFLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtvQkFDeEMsV0FBVyxFQUFFLFdBQVc7aUJBQ3pCLENBQUMsQ0FBQzthQUNKO1NBQ0Y7YUFBTTtZQUNMLHFGQUFxRjtZQUNyRixtREFBbUQ7WUFDbkQsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixRQUFRLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxFQUFFO2dCQUN4QyxXQUFXLEVBQUUsa0JBQVU7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCw4RkFBOEY7UUFDOUYsUUFBUSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQXRERCxrQ0FzREM7SUFFRCxTQUFTLFVBQVUsQ0FBQyxVQUF5QixFQUFFLFdBQTJCO1FBQ3hFLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRTtZQUNsQyxJQUFJLG9CQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzlCLHNFQUFzRTtnQkFDdEUsT0FBTzthQUNSO1lBQ0QsSUFBSSxvQkFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLCtCQUFxQixFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLFlBQVksTUFBSyxvQkFBWTtvQkFDL0MsZ0JBQWdCLENBQUMsSUFBSSxLQUFLLDBCQUFrQixFQUFFO29CQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTt3QkFDdEIsV0FBVyxFQUFFLGtCQUFVO3FCQUN4QixDQUFDLENBQUM7aUJBQ0o7YUFDRjtZQUNELG9CQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFDRixvQkFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLHdCQUF3QixDQUFDLFFBQXlCO1FBQ3pELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldEltcG9ydE9mSWRlbnRpZmllciwgZ2V0SW1wb3J0U3BlY2lmaWVyLCByZW1vdmVTeW1ib2xGcm9tTmFtZWRJbXBvcnRzfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2ltcG9ydHMnO1xuaW1wb3J0IHtjbG9zZXN0Tm9kZX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9ub2Rlcyc7XG5cbmV4cG9ydCBjb25zdCByb3V0ZXJMaW5rID0gJ1JvdXRlckxpbmsnO1xuZXhwb3J0IGNvbnN0IHJvdXRlckxpbmtXaXRoSHJlZiA9ICdSb3V0ZXJMaW5rV2l0aEhyZWYnO1xuZXhwb3J0IGNvbnN0IHJvdXRlck1vZHVsZSA9ICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJld3JpdGVFbnRpdHkge1xuICBzdGFydFBvczogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICByZXBsYWNlbWVudDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXdyaXRlRm4gPSAoc3RhcnRQb3M6IG51bWJlciwgd2lkdGg6IG51bWJlciwgdGV4dDogc3RyaW5nKSA9PiB2b2lkO1xuXG5leHBvcnQgZnVuY3Rpb24gbWlncmF0ZUZpbGUoXG4gICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCByZXdyaXRlOiBSZXdyaXRlRm4pIHtcbiAgY29uc3Qgcm91dGVyTGlua1dpdGhIcmVmU3BlYyA9IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCByb3V0ZXJNb2R1bGUsIHJvdXRlckxpbmtXaXRoSHJlZik7XG5cbiAgLy8gTm8gYFJvdXRlckxpbmtXaXRoSHJlZmAgZm91bmQsIG5vdGhpbmcgdG8gbWlncmF0ZSwgZXhpdCBlYXJseS5cbiAgaWYgKHJvdXRlckxpbmtXaXRoSHJlZlNwZWMgPT09IG51bGwpIHJldHVybjtcblxuICBsZXQgcmV3cml0ZXMgPSBmaW5kVXNhZ2VzKHNvdXJjZUZpbGUsIHR5cGVDaGVja2VyKTtcblxuICAvLyBUaGVyZSBhcmUgc29tZSB1c2FnZXMgb2YgdGhlIGBSb3V0ZXJMaW5rV2l0aEhyZWZgIHN5bWJvbCwgd2hpY2ggbmVlZCB0b1xuICAvLyBiZSByZXdyaXR0ZW4gdG8gYFJvdXRlckxpbmtgIGluc3RlYWQuIExldCdzIGNoZWNrIGlmIHRoZSBgUm91dGVyTGlua2AgaXNcbiAgLy8gYWxyZWFkeSBpbXBvcnRlZC5cbiAgY29uc3Qgcm91dGVyTGlua1NwZWMgPSBnZXRJbXBvcnRTcGVjaWZpZXIoc291cmNlRmlsZSwgcm91dGVyTW9kdWxlLCByb3V0ZXJMaW5rKTtcblxuICBpZiAocm91dGVyTGlua1NwZWMpIHtcbiAgICAvLyBUaGUgYFJvdXRlckxpbmtgIHN5bWJvbCBpcyBhbHJlYWR5IGltcG9ydGVkLCBqdXN0IGRyb3AgdGhlIGBSb3V0ZXJMaW5rV2l0aEhyZWZgIG9uZS5cbiAgICBjb25zdCByb3V0ZXJMaW5rTmFtZWRJbXBvcnRzID0gcm91dGVyTGlua1dpdGhIcmVmU3BlYyA/XG4gICAgICAgIGNsb3Nlc3ROb2RlPHRzLk5hbWVkSW1wb3J0cz4ocm91dGVyTGlua1dpdGhIcmVmU3BlYywgdHMuU3ludGF4S2luZC5OYW1lZEltcG9ydHMpIDpcbiAgICAgICAgbnVsbDtcbiAgICBpZiAocm91dGVyTGlua05hbWVkSW1wb3J0cyAhPT0gbnVsbCkge1xuICAgICAgLy8gR2l2ZW4gYW4gb3JpZ2luYWwgaW1wb3J0IGxpa2UgdGhpcyBvbmU6XG4gICAgICAvLyBgYGBcbiAgICAgIC8vIGltcG9ydCB7Um91dGVyTW9kdWxlLCBSb3V0ZXJMaW5rV2l0aEhyZWYsIFJvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4gICAgICAvLyBgYGBcbiAgICAgIC8vIFRoZSBjb2RlIGJlbG93IHJlbW92ZXMgdGhlIGBSb3V0ZXJMaW5rV2l0aEhyZWZgIGZyb20gdGhlIG5hbWVkIGltcG9ydHMgc2VjdGlvblxuICAgICAgLy8gKGkuZS4gYHtSb3V0ZXJNb2R1bGUsIFJvdXRlckxpbmtXaXRoSHJlZiwgUm91dGVyTGlua31gKSBhbmQgcHJpbnRzIGFuIHVwZGF0ZWRcbiAgICAgIC8vIHZlcnNpb24gKGB7Um91dGVyTW9kdWxlLCBSb3V0ZXJMaW5rfWApIHRvIGEgc3RyaW5nLCB3aGljaCBpcyB1c2VkIGFzIGFcbiAgICAgIC8vIHJlcGxhY2VtZW50LlxuICAgICAgY29uc3QgcmV3cml0dGVuTmFtZWRJbXBvcnRzID1cbiAgICAgICAgICByZW1vdmVTeW1ib2xGcm9tTmFtZWRJbXBvcnRzKHJvdXRlckxpbmtOYW1lZEltcG9ydHMsIHJvdXRlckxpbmtXaXRoSHJlZlNwZWMpO1xuICAgICAgY29uc3QgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoKTtcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID1cbiAgICAgICAgICBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgcmV3cml0dGVuTmFtZWRJbXBvcnRzLCBzb3VyY2VGaWxlKTtcbiAgICAgIHJld3JpdGVzLnB1c2goe1xuICAgICAgICBzdGFydFBvczogcm91dGVyTGlua05hbWVkSW1wb3J0cy5nZXRTdGFydCgpLFxuICAgICAgICB3aWR0aDogcm91dGVyTGlua05hbWVkSW1wb3J0cy5nZXRXaWR0aCgpLFxuICAgICAgICByZXBsYWNlbWVudDogcmVwbGFjZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlIGBSb3V0ZXJMaW5rYCBzeW1ib2wgaXMgbm90IGltcG9ydGVkLCBidXQgdGhlIGBSb3V0ZXJMaW5rV2l0aEhyZWZgIGlzIGltcG9ydGVkLFxuICAgIC8vIHNvIHJld3JpdGUgYFJvdXRlckxpbmtXaXRoSHJlZmAgLT4gYFJvdXRlckxpbmtgLlxuICAgIHJld3JpdGVzLnB1c2goe1xuICAgICAgc3RhcnRQb3M6IHJvdXRlckxpbmtXaXRoSHJlZlNwZWMuZ2V0U3RhcnQoKSxcbiAgICAgIHdpZHRoOiByb3V0ZXJMaW5rV2l0aEhyZWZTcGVjLmdldFdpZHRoKCksXG4gICAgICByZXBsYWNlbWVudDogcm91dGVyTGluayxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFByb2Nlc3MgcmV3cml0ZXMgbGFzdC10by1maXJzdCAoYmFzZWQgb24gc3RhcnQgcG9zKSB0byBhdm9pZCBvZmZzZXQgc2hpZnRzIGR1cmluZyByZXdyaXRlcy5cbiAgcmV3cml0ZXMgPSBzb3J0QnlTdGFydFBvc0Rlc2NlbmRpbmcocmV3cml0ZXMpO1xuICBmb3IgKGNvbnN0IHVzYWdlIG9mIHJld3JpdGVzKSB7XG4gICAgcmV3cml0ZSh1c2FnZS5zdGFydFBvcywgdXNhZ2Uud2lkdGgsIHVzYWdlLnJlcGxhY2VtZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kVXNhZ2VzKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcik6IFJld3JpdGVFbnRpdHlbXSB7XG4gIGNvbnN0IHVzYWdlczogUmV3cml0ZUVudGl0eVtdID0gW107XG4gIGNvbnN0IHZpc2l0Tm9kZSA9IChub2RlOiB0cy5Ob2RlKSA9PiB7XG4gICAgaWYgKHRzLmlzSW1wb3J0U3BlY2lmaWVyKG5vZGUpKSB7XG4gICAgICAvLyBTa2lwIHRoaXMgbm9kZSBhbmQgYWxsIG9mIGl0cyBjaGlsZHJlbjsgaW1wb3J0cyBhcmUgYSBzcGVjaWFsIGNhc2UuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIGNvbnN0IGltcG9ydElkZW50aWZpZXIgPSBnZXRJbXBvcnRPZklkZW50aWZpZXIodHlwZUNoZWNrZXIsIG5vZGUpO1xuICAgICAgaWYgKGltcG9ydElkZW50aWZpZXI/LmltcG9ydE1vZHVsZSA9PT0gcm91dGVyTW9kdWxlICYmXG4gICAgICAgICAgaW1wb3J0SWRlbnRpZmllci5uYW1lID09PSByb3V0ZXJMaW5rV2l0aEhyZWYpIHtcbiAgICAgICAgdXNhZ2VzLnB1c2goe1xuICAgICAgICAgIHN0YXJ0UG9zOiBub2RlLmdldFN0YXJ0KCksXG4gICAgICAgICAgd2lkdGg6IG5vZGUuZ2V0V2lkdGgoKSxcbiAgICAgICAgICByZXBsYWNlbWVudDogcm91dGVyTGluayxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUpO1xuICB9O1xuICB0cy5mb3JFYWNoQ2hpbGQoc291cmNlRmlsZSwgdmlzaXROb2RlKTtcbiAgcmV0dXJuIHVzYWdlcztcbn1cblxuLyoqXG4gKiBTb3J0IGFsbCBmb3VuZCB1c2FnZXMgYmFzZWQgb24gdGhlaXIgc3RhcnQgcG9zaXRpb25zIGluIHRoZSBzb3VyY2UgZmlsZSBpbiBkZXNjZW5kaW5nIG9yZGVyIChpLmUuXG4gKiBsYXN0IHVzYWdlIGdvZXMgZmlyc3Qgb24gdGhlIGxpc3QsIGV0YykuIFRoaXMgaXMgbmVlZGVkIHRvIGF2b2lkIHNoaWZ0aW5nIG9mZnNldHMgaW4gdGhlIHNvdXJjZVxuICogZmlsZSAoaW4gY2FzZSB0aGVyZSBhcmUgbXVsdGlwbGUgdXNhZ2VzKSBhcyB3ZSByZXdyaXRlIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIHNvcnRCeVN0YXJ0UG9zRGVzY2VuZGluZyhyZXdyaXRlczogUmV3cml0ZUVudGl0eVtdKTogUmV3cml0ZUVudGl0eVtdIHtcbiAgcmV0dXJuIHJld3JpdGVzLnNvcnQoKGVudGl0eUEsIGVudGl0eUIpID0+IGVudGl0eUIuc3RhcnRQb3MgLSBlbnRpdHlBLnN0YXJ0UG9zKTtcbn1cbiJdfQ==
@@ -14,6 +14,16 @@
14
14
  "version": "14.0.0-beta",
15
15
  "description": "In Angular version 14, the `pathMatch` property of `Routes` was updated to be a strict union of the two valid options: `'full'|'prefix'`. `Routes` and `Route` variables need an explicit type so TypeScript does not infer the property as the looser `string`.",
16
16
  "factory": "./migrations/path-match-type/index"
17
+ },
18
+ "migration-v15-router-link-with-href": {
19
+ "version": "15.0.0-beta",
20
+ "description": "Since Angular v15, the `RouterLink` contains the logic of the `RouterLinkWithHref` directive. This migration replaces all `RouterLinkWithHref` references with `RouterLink`.",
21
+ "factory": "./migrations/router-link-with-href/index"
22
+ },
23
+ "migration-v15-relative-link-resolution": {
24
+ "version": "15.0.0-beta",
25
+ "description": "In Angular version 15, the deprecated `relativeLinkResolution` config parameter of the Router is removed. This migration removes all `relativeLinkResolution` fields from the Router config objects.",
26
+ "factory": "./migrations/relative-link-resolution/index"
17
27
  }
18
28
  }
19
29
  }
@@ -34,10 +34,20 @@ export declare function getImportOfIdentifier(typeChecker: ts.TypeChecker, node:
34
34
  export declare function getImportSpecifier(sourceFile: ts.SourceFile, moduleName: string, specifierName: string): ts.ImportSpecifier | null;
35
35
  /**
36
36
  * Replaces an import inside a named imports node with a different one.
37
+ *
37
38
  * @param node Node that contains the imports.
38
39
  * @param existingImport Import that should be replaced.
39
40
  * @param newImportName Import that should be inserted.
40
41
  */
41
42
  export declare function replaceImport(node: ts.NamedImports, existingImport: string, newImportName: string): ts.NamedImports;
43
+ /**
44
+ * Removes a symbol from the named imports and updates a node
45
+ * that represents a given named imports.
46
+ *
47
+ * @param node Node that contains the imports.
48
+ * @param symbol Symbol that should be removed.
49
+ * @returns An updated node (ts.NamedImports).
50
+ */
51
+ export declare function removeSymbolFromNamedImports(node: ts.NamedImports, symbol: ts.ImportSpecifier): ts.NamedImports;
42
52
  /** Finds an import specifier with a particular name. */
43
53
  export declare function findImportSpecifier(nodes: ts.NodeArray<ts.ImportSpecifier>, specifierName: string): ts.ImportSpecifier | undefined;
@@ -19,7 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  })(function (require, exports) {
20
20
  "use strict";
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.findImportSpecifier = exports.replaceImport = exports.getImportSpecifier = exports.getImportOfIdentifier = void 0;
22
+ exports.findImportSpecifier = exports.removeSymbolFromNamedImports = exports.replaceImport = exports.getImportSpecifier = exports.getImportOfIdentifier = void 0;
23
23
  const typescript_1 = __importDefault(require("typescript"));
24
24
  /** Gets import information about the specified identifier by using the Type checker. */
25
25
  function getImportOfIdentifier(typeChecker, node) {
@@ -78,6 +78,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
78
78
  exports.getImportSpecifier = getImportSpecifier;
79
79
  /**
80
80
  * Replaces an import inside a named imports node with a different one.
81
+ *
81
82
  * @param node Node that contains the imports.
82
83
  * @param existingImport Import that should be replaced.
83
84
  * @param newImportName Import that should be inserted.
@@ -101,6 +102,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
101
102
  ]);
102
103
  }
103
104
  exports.replaceImport = replaceImport;
105
+ /**
106
+ * Removes a symbol from the named imports and updates a node
107
+ * that represents a given named imports.
108
+ *
109
+ * @param node Node that contains the imports.
110
+ * @param symbol Symbol that should be removed.
111
+ * @returns An updated node (ts.NamedImports).
112
+ */
113
+ function removeSymbolFromNamedImports(node, symbol) {
114
+ return typescript_1.default.factory.updateNamedImports(node, [
115
+ ...node.elements.filter(current => current !== symbol),
116
+ ]);
117
+ }
118
+ exports.removeSymbolFromNamedImports = removeSymbolFromNamedImports;
104
119
  /** Finds an import specifier with a particular name. */
105
120
  function findImportSpecifier(nodes, specifierName) {
106
121
  return nodes.find(element => {
@@ -110,4 +125,4 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
110
125
  }
111
126
  exports.findImportSpecifier = findImportSpecifier;
112
127
  });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy91dGlscy90eXBlc2NyaXB0L2ltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBUTVCLHdGQUF3RjtJQUN4RixTQUFnQixxQkFBcUIsQ0FBQyxXQUEyQixFQUFFLElBQW1CO1FBRXBGLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDL0UsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLG9CQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLENBQUMsb0JBQUUsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPO1lBQ0wseUVBQXlFO1lBQ3pFLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ2pFLFlBQVksRUFBRSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUk7WUFDN0MsSUFB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aHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5leHBvcnQgdHlwZSBJbXBvcnQgPSB7XG4gIG5hbWU6IHN0cmluZyxcbiAgaW1wb3J0TW9kdWxlOiBzdHJpbmcsXG4gIG5vZGU6IHRzLkltcG9ydERlY2xhcmF0aW9uXG59O1xuXG4vKiogR2V0cyBpbXBvcnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIGJ5IHVzaW5nIHRoZSBUeXBlIGNoZWNrZXIuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1wb3J0T2ZJZGVudGlmaWVyKHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuSWRlbnRpZmllcik6IEltcG9ydHxcbiAgICBudWxsIHtcbiAgY29uc3Qgc3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKTtcblxuICBpZiAoIXN5bWJvbCB8fCBzeW1ib2wuZGVjbGFyYXRpb25zID09PSB1bmRlZmluZWQgfHwgIXN5bWJvbC5kZWNsYXJhdGlvbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkZWNsID0gc3ltYm9sLmRlY2xhcmF0aW9uc1swXTtcblxuICBpZiAoIXRzLmlzSW1wb3J0U3BlY2lmaWVyKGRlY2wpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBpbXBvcnREZWNsID0gZGVjbC5wYXJlbnQucGFyZW50LnBhcmVudDtcblxuICBpZiAoIXRzLmlzU3RyaW5nTGl0ZXJhbChpbXBvcnREZWNsLm1vZHVsZVNwZWNpZmllcikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gSGFuZGxlcyBhbGlhc2VkIGltcG9ydHM6IGUuZy4gXCJpbXBvcnQge0NvbXBvbmVudCBhcyBteUNvbXB9IGZyb20gLi4uXCI7XG4gICAgbmFtZTogZGVjbC5wcm9wZXJ0eU5hbWUgPyBkZWNsLnByb3BlcnR5TmFtZS50ZXh0IDogZGVjbC5uYW1lLnRleHQsXG4gICAgaW1wb3J0TW9kdWxlOiBpbXBvcnREZWNsLm1vZHVsZVNwZWNpZmllci50ZXh0LFxuICAgIG5vZGU6IGltcG9ydERlY2xcbiAgfTtcbn1cblxuXG4vKipcbiAqIEdldHMgYSB0b3AtbGV2ZWwgaW1wb3J0IHNwZWNpZmllciB3aXRoIGEgc3BlY2lmaWMgbmFtZSB0aGF0IGlzIGltcG9ydGVkIGZyb20gYSBwYXJ0aWN1bGFyIG1vZHVsZS5cbiAqIEUuZy4gZ2l2ZW4gYSBmaWxlIHRoYXQgbG9va3MgbGlrZTpcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBGb28gfSBmcm9tICcuL2Zvbyc7XG4gKiBgYGBcbiAqXG4gKiBDYWxsaW5nIGBnZXRJbXBvcnRTcGVjaWZpZXIoc291cmNlRmlsZSwgJ0Bhbmd1bGFyL2NvcmUnLCAnRGlyZWN0aXZlJylgIHdpbGwgeWllbGQgdGhlIG5vZGVcbiAqIHJlZmVycmluZyB0byBgRGlyZWN0aXZlYCBpbiB0aGUgdG9wIGltcG9ydC5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZSBGaWxlIGluIHdoaWNoIHRvIGxvb2sgZm9yIGltcG9ydHMuXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBOYW1lIG9mIHRoZSBpbXBvcnQncyBtb2R1bGUuXG4gKiBAcGFyYW0gc3BlY2lmaWVyTmFtZSBPcmlnaW5hbCBuYW1lIG9mIHRoZSBzcGVjaWZpZXIgdG8gbG9vayBmb3IuIEFsaWFzZXMgd2lsbCBiZSByZXNvbHZlZCB0b1xuICogICAgdGhlaXIgb3JpZ2luYWwgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcG9ydFNwZWNpZmllcihcbiAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBtb2R1bGVOYW1lOiBzdHJpbmcsIHNwZWNpZmllck5hbWU6IHN0cmluZyk6IHRzLkltcG9ydFNwZWNpZmllcnxudWxsIHtcbiAgZm9yIChjb25zdCBub2RlIG9mIHNvdXJjZUZpbGUuc3RhdGVtZW50cykge1xuICAgIGlmICh0cy5pc0ltcG9ydERlY2xhcmF0aW9uKG5vZGUpICYmIHRzLmlzU3RyaW5nTGl0ZXJhbChub2RlLm1vZHVsZVNwZWNpZmllcikgJiZcbiAgICAgICAgbm9kZS5tb2R1bGVTcGVjaWZpZXIudGV4dCA9PT0gbW9kdWxlTmFtZSkge1xuICAgICAgY29uc3QgbmFtZWRCaW5kaW5ncyA9IG5vZGUuaW1wb3J0Q2xhdXNlICYmIG5vZGUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3M7XG4gICAgICBpZiAobmFtZWRCaW5kaW5ncyAmJiB0cy5pc05hbWVkSW1wb3J0cyhuYW1lZEJpbmRpbmdzKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGZpbmRJbXBvcnRTcGVjaWZpZXIobmFtZWRCaW5kaW5ncy5lbGVtZW50cywgc3BlY2lmaWVyTmFtZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5cbi8qKlxuICogUmVwbGFjZXMgYW4gaW1wb3J0IGluc2lkZSBhIG5hbWVkIGltcG9ydHMgbm9kZSB3aXRoIGEgZGlmZmVyZW50IG9uZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBjb250YWlucyB0aGUgaW1wb3J0cy5cbiAqIEBwYXJhbSBleGlzdGluZ0ltcG9ydCBJbXBvcnQgdGhhdCBzaG91bGQgYmUgcmVwbGFjZWQuXG4gKiBAcGFyYW0gbmV3SW1wb3J0TmFtZSBJbXBvcnQgdGhhdCBzaG91bGQgYmUgaW5zZXJ0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlSW1wb3J0KFxuICAgIG5vZGU6IHRzLk5hbWVkSW1wb3J0cywgZXhpc3RpbmdJbXBvcnQ6IHN0cmluZywgbmV3SW1wb3J0TmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGlzQWxyZWFkeUltcG9ydGVkID0gZmluZEltcG9ydFNwZWNpZmllcihub2RlLmVsZW1lbnRzLCBuZXdJbXBvcnROYW1lKTtcbiAgaWYgKGlzQWxyZWFkeUltcG9ydGVkKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBjb25zdCBleGlzdGluZ0ltcG9ydE5vZGUgPSBmaW5kSW1wb3J0U3BlY2lmaWVyKG5vZGUuZWxlbWVudHMsIGV4aXN0aW5nSW1wb3J0KTtcbiAgaWYgKCFleGlzdGluZ0ltcG9ydE5vZGUpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGNvbnN0IGltcG9ydFByb3BlcnR5TmFtZSA9XG4gICAgICBleGlzdGluZ0ltcG9ydE5vZGUucHJvcGVydHlOYW1lID8gdHMuZmFjdG9yeS5jcmVhdGVJZGVudGlmaWVyKG5ld0ltcG9ydE5hbWUpIDogdW5kZWZpbmVkO1xuICBjb25zdCBpbXBvcnROYW1lID0gZXhpc3RpbmdJbXBvcnROb2RlLnByb3BlcnR5TmFtZSA/IGV4aXN0aW5nSW1wb3J0Tm9kZS5uYW1lIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cy5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIobmV3SW1wb3J0TmFtZSk7XG5cbiAgcmV0dXJuIHRzLmZhY3RvcnkudXBkYXRlTmFtZWRJbXBvcnRzKG5vZGUsIFtcbiAgICAuLi5ub2RlLmVsZW1lbnRzLmZpbHRlcihjdXJyZW50ID0+IGN1cnJlbnQgIT09IGV4aXN0aW5nSW1wb3J0Tm9kZSksXG4gICAgLy8gQ3JlYXRlIGEgbmV3IGltcG9ydCB3aGlsZSB0cnlpbmcgdG8gcHJlc2VydmUgdGhlIGFsaWFzIG9mIHRoZSBvbGQgb25lLlxuICAgIHRzLmZhY3RvcnkuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKGZhbHNlLCBpbXBvcnRQcm9wZXJ0eU5hbWUsIGltcG9ydE5hbWUpXG4gIF0pO1xufVxuXG5cbi8qKiBGaW5kcyBhbiBpbXBvcnQgc3BlY2lmaWVyIHdpdGggYSBwYXJ0aWN1bGFyIG5hbWUuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEltcG9ydFNwZWNpZmllcihcbiAgICBub2RlczogdHMuTm9kZUFycmF5PHRzLkltcG9ydFNwZWNpZmllcj4sIHNwZWNpZmllck5hbWU6IHN0cmluZyk6IHRzLkltcG9ydFNwZWNpZmllcnx1bmRlZmluZWQge1xuICByZXR1cm4gbm9kZXMuZmluZChlbGVtZW50ID0+IHtcbiAgICBjb25zdCB7bmFtZSwgcHJvcGVydHlOYW1lfSA9IGVsZW1lbnQ7XG4gICAgcmV0dXJuIHByb3BlcnR5TmFtZSA/IHByb3BlcnR5TmFtZS50ZXh0ID09PSBzcGVjaWZpZXJOYW1lIDogbmFtZS50ZXh0ID09PSBzcGVjaWZpZXJOYW1lO1xuICB9KTtcbn1cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy91dGlscy90eXBlc2NyaXB0L2ltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBUTVCLHdGQUF3RjtJQUN4RixTQUFnQixxQkFBcUIsQ0FBQyxXQUEyQixFQUFFLElBQW1CO1FBRXBGLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDL0UsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLG9CQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLENBQUMsb0JBQUUsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPO1lBQ0wseUVBQXlFO1lBQ3pFLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ2pFLFlBQVksRUFBRSxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUk7WUFDN0MsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQztJQUNKLENBQUM7SUExQkQsc0RBMEJDO0lBR0Q7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxTQUFnQixrQkFBa0IsQ0FDOUIsVUFBeUIsRUFBRSxVQUFrQixFQUFFLGFBQXFCO1FBQ3RFLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUN4QyxJQUFJLG9CQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUM1QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO2dCQUMzRSxJQUFJLGFBQWEsSUFBSSxvQkFBRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDckQsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDekUsSUFBSSxLQUFLLEVBQUU7d0JBQ1QsT0FBTyxLQUFLLENBQUM7cUJBQ2Q7aUJBQ0Y7YUFDRjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBaEJELGdEQWdCQztJQUdEOzs7Ozs7T0FNRztJQUNILFNBQWdCLGFBQWEsQ0FDekIsSUFBcUIsRUFBRSxjQUFzQixFQUFFLGFBQXFCO1FBQ3RFLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM1RSxJQUFJLGlCQUFpQixFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLGtCQUFrQixHQUNwQixrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLG9CQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDN0YsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixvQkFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVoRyxPQUFPLG9CQUFFLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRTtZQUN6QyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLGtCQUFrQixDQUFDO1lBQ2xFLHlFQUF5RTtZQUN6RSxvQkFBRSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDO1NBQ3hFLENBQUMsQ0FBQztJQUNMLENBQUM7SUF0QkQsc0NBc0JDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQWdCLDRCQUE0QixDQUFDLElBQXFCLEVBQUUsTUFBMEI7UUFDNUYsT0FBTyxvQkFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDekMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUM7U0FDdkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUpELG9FQUlDO0lBRUQsd0RBQXdEO0lBQ3hELFNBQWdCLG1CQUFtQixDQUMvQixLQUF1QyxFQUFFLGFBQXFCO1FBQ2hFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQixNQUFNLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBQyxHQUFHLE9BQU8sQ0FBQztZQUNyQyxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQU5ELGtEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuZXhwb3J0IHR5cGUgSW1wb3J0ID0ge1xuICBuYW1lOiBzdHJpbmcsXG4gIGltcG9ydE1vZHVsZTogc3RyaW5nLFxuICBub2RlOiB0cy5JbXBvcnREZWNsYXJhdGlvblxufTtcblxuLyoqIEdldHMgaW1wb3J0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllciBieSB1c2luZyB0aGUgVHlwZSBjaGVja2VyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcG9ydE9mSWRlbnRpZmllcih0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIG5vZGU6IHRzLklkZW50aWZpZXIpOiBJbXBvcnR8XG4gICAgbnVsbCB7XG4gIGNvbnN0IHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obm9kZSk7XG5cbiAgaWYgKCFzeW1ib2wgfHwgc3ltYm9sLmRlY2xhcmF0aW9ucyA9PT0gdW5kZWZpbmVkIHx8ICFzeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZGVjbCA9IHN5bWJvbC5kZWNsYXJhdGlvbnNbMF07XG5cbiAgaWYgKCF0cy5pc0ltcG9ydFNwZWNpZmllcihkZWNsKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaW1wb3J0RGVjbCA9IGRlY2wucGFyZW50LnBhcmVudC5wYXJlbnQ7XG5cbiAgaWYgKCF0cy5pc1N0cmluZ0xpdGVyYWwoaW1wb3J0RGVjbC5tb2R1bGVTcGVjaWZpZXIpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIEhhbmRsZXMgYWxpYXNlZCBpbXBvcnRzOiBlLmcuIFwiaW1wb3J0IHtDb21wb25lbnQgYXMgbXlDb21wfSBmcm9tIC4uLlwiO1xuICAgIG5hbWU6IGRlY2wucHJvcGVydHlOYW1lID8gZGVjbC5wcm9wZXJ0eU5hbWUudGV4dCA6IGRlY2wubmFtZS50ZXh0LFxuICAgIGltcG9ydE1vZHVsZTogaW1wb3J0RGVjbC5tb2R1bGVTcGVjaWZpZXIudGV4dCxcbiAgICBub2RlOiBpbXBvcnREZWNsXG4gIH07XG59XG5cblxuLyoqXG4gKiBHZXRzIGEgdG9wLWxldmVsIGltcG9ydCBzcGVjaWZpZXIgd2l0aCBhIHNwZWNpZmljIG5hbWUgdGhhdCBpcyBpbXBvcnRlZCBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUuXG4gKiBFLmcuIGdpdmVuIGEgZmlsZSB0aGF0IGxvb2tzIGxpa2U6XG4gKlxuICogYGBgXG4gKiBpbXBvcnQgeyBDb21wb25lbnQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuICogaW1wb3J0IHsgRm9vIH0gZnJvbSAnLi9mb28nO1xuICogYGBgXG4gKlxuICogQ2FsbGluZyBgZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsICdAYW5ndWxhci9jb3JlJywgJ0RpcmVjdGl2ZScpYCB3aWxsIHlpZWxkIHRoZSBub2RlXG4gKiByZWZlcnJpbmcgdG8gYERpcmVjdGl2ZWAgaW4gdGhlIHRvcCBpbXBvcnQuXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGUgRmlsZSBpbiB3aGljaCB0byBsb29rIGZvciBpbXBvcnRzLlxuICogQHBhcmFtIG1vZHVsZU5hbWUgTmFtZSBvZiB0aGUgaW1wb3J0J3MgbW9kdWxlLlxuICogQHBhcmFtIHNwZWNpZmllck5hbWUgT3JpZ2luYWwgbmFtZSBvZiB0aGUgc3BlY2lmaWVyIHRvIGxvb2sgZm9yLiBBbGlhc2VzIHdpbGwgYmUgcmVzb2x2ZWQgdG9cbiAqICAgIHRoZWlyIG9yaWdpbmFsIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbXBvcnRTcGVjaWZpZXIoXG4gICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgbW9kdWxlTmFtZTogc3RyaW5nLCBzcGVjaWZpZXJOYW1lOiBzdHJpbmcpOiB0cy5JbXBvcnRTcGVjaWZpZXJ8bnVsbCB7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiBzb3VyY2VGaWxlLnN0YXRlbWVudHMpIHtcbiAgICBpZiAodHMuaXNJbXBvcnREZWNsYXJhdGlvbihub2RlKSAmJiB0cy5pc1N0cmluZ0xpdGVyYWwobm9kZS5tb2R1bGVTcGVjaWZpZXIpICYmXG4gICAgICAgIG5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQgPT09IG1vZHVsZU5hbWUpIHtcbiAgICAgIGNvbnN0IG5hbWVkQmluZGluZ3MgPSBub2RlLmltcG9ydENsYXVzZSAmJiBub2RlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzO1xuICAgICAgaWYgKG5hbWVkQmluZGluZ3MgJiYgdHMuaXNOYW1lZEltcG9ydHMobmFtZWRCaW5kaW5ncykpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBmaW5kSW1wb3J0U3BlY2lmaWVyKG5hbWVkQmluZGluZ3MuZWxlbWVudHMsIHNwZWNpZmllck5hbWUpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuXG4vKipcbiAqIFJlcGxhY2VzIGFuIGltcG9ydCBpbnNpZGUgYSBuYW1lZCBpbXBvcnRzIG5vZGUgd2l0aCBhIGRpZmZlcmVudCBvbmUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0aGF0IGNvbnRhaW5zIHRoZSBpbXBvcnRzLlxuICogQHBhcmFtIGV4aXN0aW5nSW1wb3J0IEltcG9ydCB0aGF0IHNob3VsZCBiZSByZXBsYWNlZC5cbiAqIEBwYXJhbSBuZXdJbXBvcnROYW1lIEltcG9ydCB0aGF0IHNob3VsZCBiZSBpbnNlcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VJbXBvcnQoXG4gICAgbm9kZTogdHMuTmFtZWRJbXBvcnRzLCBleGlzdGluZ0ltcG9ydDogc3RyaW5nLCBuZXdJbXBvcnROYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgaXNBbHJlYWR5SW1wb3J0ZWQgPSBmaW5kSW1wb3J0U3BlY2lmaWVyKG5vZGUuZWxlbWVudHMsIG5ld0ltcG9ydE5hbWUpO1xuICBpZiAoaXNBbHJlYWR5SW1wb3J0ZWQpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nSW1wb3J0Tm9kZSA9IGZpbmRJbXBvcnRTcGVjaWZpZXIobm9kZS5lbGVtZW50cywgZXhpc3RpbmdJbXBvcnQpO1xuICBpZiAoIWV4aXN0aW5nSW1wb3J0Tm9kZSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgY29uc3QgaW1wb3J0UHJvcGVydHlOYW1lID1cbiAgICAgIGV4aXN0aW5nSW1wb3J0Tm9kZS5wcm9wZXJ0eU5hbWUgPyB0cy5mYWN0b3J5LmNyZWF0ZUlkZW50aWZpZXIobmV3SW1wb3J0TmFtZSkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGltcG9ydE5hbWUgPSBleGlzdGluZ0ltcG9ydE5vZGUucHJvcGVydHlOYW1lID8gZXhpc3RpbmdJbXBvcnROb2RlLm5hbWUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzLmZhY3RvcnkuY3JlYXRlSWRlbnRpZmllcihuZXdJbXBvcnROYW1lKTtcblxuICByZXR1cm4gdHMuZmFjdG9yeS51cGRhdGVOYW1lZEltcG9ydHMobm9kZSwgW1xuICAgIC4uLm5vZGUuZWxlbWVudHMuZmlsdGVyKGN1cnJlbnQgPT4gY3VycmVudCAhPT0gZXhpc3RpbmdJbXBvcnROb2RlKSxcbiAgICAvLyBDcmVhdGUgYSBuZXcgaW1wb3J0IHdoaWxlIHRyeWluZyB0byBwcmVzZXJ2ZSB0aGUgYWxpYXMgb2YgdGhlIG9sZCBvbmUuXG4gICAgdHMuZmFjdG9yeS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoZmFsc2UsIGltcG9ydFByb3BlcnR5TmFtZSwgaW1wb3J0TmFtZSlcbiAgXSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhIHN5bWJvbCBmcm9tIHRoZSBuYW1lZCBpbXBvcnRzIGFuZCB1cGRhdGVzIGEgbm9kZVxuICogdGhhdCByZXByZXNlbnRzIGEgZ2l2ZW4gbmFtZWQgaW1wb3J0cy5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRoYXQgY29udGFpbnMgdGhlIGltcG9ydHMuXG4gKiBAcGFyYW0gc3ltYm9sIFN5bWJvbCB0aGF0IHNob3VsZCBiZSByZW1vdmVkLlxuICogQHJldHVybnMgQW4gdXBkYXRlZCBub2RlICh0cy5OYW1lZEltcG9ydHMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU3ltYm9sRnJvbU5hbWVkSW1wb3J0cyhub2RlOiB0cy5OYW1lZEltcG9ydHMsIHN5bWJvbDogdHMuSW1wb3J0U3BlY2lmaWVyKSB7XG4gIHJldHVybiB0cy5mYWN0b3J5LnVwZGF0ZU5hbWVkSW1wb3J0cyhub2RlLCBbXG4gICAgLi4ubm9kZS5lbGVtZW50cy5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50ICE9PSBzeW1ib2wpLFxuICBdKTtcbn1cblxuLyoqIEZpbmRzIGFuIGltcG9ydCBzcGVjaWZpZXIgd2l0aCBhIHBhcnRpY3VsYXIgbmFtZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSW1wb3J0U3BlY2lmaWVyKFxuICAgIG5vZGVzOiB0cy5Ob2RlQXJyYXk8dHMuSW1wb3J0U3BlY2lmaWVyPiwgc3BlY2lmaWVyTmFtZTogc3RyaW5nKTogdHMuSW1wb3J0U3BlY2lmaWVyfHVuZGVmaW5lZCB7XG4gIHJldHVybiBub2Rlcy5maW5kKGVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IHtuYW1lLCBwcm9wZXJ0eU5hbWV9ID0gZWxlbWVudDtcbiAgICByZXR1cm4gcHJvcGVydHlOYW1lID8gcHJvcGVydHlOYW1lLnRleHQgPT09IHNwZWNpZmllck5hbWUgOiBuYW1lLnRleHQgPT09IHNwZWNpZmllck5hbWU7XG4gIH0pO1xufVxuIl19
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v15.0.0-next.4
2
+ * @license Angular v15.0.0-next.6
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */