@angular/cdk 12.0.0-rc.2 → 12.0.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 (107) hide show
  1. package/a11y/focus-trap/focus-trap.d.ts +6 -2
  2. package/a11y/index.metadata.json +1 -1
  3. package/bundles/cdk-a11y.umd.js +7 -3
  4. package/bundles/cdk-a11y.umd.js.map +1 -1
  5. package/bundles/cdk-overlay.umd.js +14 -12
  6. package/bundles/cdk-overlay.umd.js.map +1 -1
  7. package/bundles/cdk-platform.umd.js +19 -0
  8. package/bundles/cdk-platform.umd.js.map +1 -1
  9. package/bundles/cdk-testing.umd.js +48 -4
  10. package/bundles/cdk-testing.umd.js.map +1 -1
  11. package/bundles/cdk.umd.js +1 -1
  12. package/bundles/cdk.umd.js.map +1 -1
  13. package/esm2015/a11y/focus-trap/focus-trap.js +9 -4
  14. package/esm2015/overlay/dispatchers/overlay-outside-click-dispatcher.js +15 -13
  15. package/esm2015/platform/features/shadow-dom.js +19 -1
  16. package/esm2015/testing/change-detection.js +8 -1
  17. package/esm2015/testing/component-harness.js +42 -4
  18. package/esm2015/version.js +1 -1
  19. package/fesm2015/a11y.js +8 -4
  20. package/fesm2015/a11y.js.map +1 -1
  21. package/fesm2015/cdk.js +1 -1
  22. package/fesm2015/cdk.js.map +1 -1
  23. package/fesm2015/overlay.js +14 -12
  24. package/fesm2015/overlay.js.map +1 -1
  25. package/fesm2015/platform.js +19 -1
  26. package/fesm2015/platform.js.map +1 -1
  27. package/fesm2015/testing.js +48 -3
  28. package/fesm2015/testing.js.map +1 -1
  29. package/package.json +3 -3
  30. package/platform/features/shadow-dom.d.ts +5 -0
  31. package/platform/index.metadata.json +1 -1
  32. package/schematics/index.mjs +33 -0
  33. package/schematics/ng-add/index.js +1 -1
  34. package/schematics/ng-add/index.mjs +39 -0
  35. package/schematics/ng-add/package-config.mjs +47 -0
  36. package/schematics/ng-add/schema.mjs +10 -0
  37. package/schematics/ng-generate/drag-drop/index.mjs +39 -0
  38. package/schematics/ng-generate/drag-drop/schema.mjs +10 -0
  39. package/schematics/ng-update/data/attribute-selectors.mjs +21 -0
  40. package/schematics/ng-update/data/class-names.mjs +40 -0
  41. package/schematics/ng-update/data/constructor-checks.mjs +66 -0
  42. package/schematics/ng-update/data/css-selectors.mjs +15 -0
  43. package/schematics/ng-update/data/element-selectors.mjs +15 -0
  44. package/schematics/ng-update/data/index.mjs +29 -0
  45. package/schematics/ng-update/data/input-names.mjs +81 -0
  46. package/schematics/ng-update/data/method-call-checks.mjs +43 -0
  47. package/schematics/ng-update/data/output-names.mjs +27 -0
  48. package/schematics/ng-update/data/property-names.mjs +129 -0
  49. package/schematics/ng-update/devkit-file-system.mjs +81 -0
  50. package/schematics/ng-update/devkit-migration-rule.mjs +136 -0
  51. package/schematics/ng-update/devkit-migration.mjs +20 -0
  52. package/schematics/ng-update/find-stylesheets.d.ts +8 -2
  53. package/schematics/ng-update/find-stylesheets.js +16 -5
  54. package/schematics/ng-update/find-stylesheets.mjs +42 -0
  55. package/schematics/ng-update/html-parsing/angular.mjs +52 -0
  56. package/schematics/ng-update/html-parsing/elements.mjs +62 -0
  57. package/schematics/ng-update/index.mjs +59 -0
  58. package/schematics/ng-update/migrations/attribute-selectors.mjs +67 -0
  59. package/schematics/ng-update/migrations/class-inheritance.mjs +58 -0
  60. package/schematics/ng-update/migrations/class-names.mjs +90 -0
  61. package/schematics/ng-update/migrations/constructor-signature.mjs +135 -0
  62. package/schematics/ng-update/migrations/css-selectors.mjs +74 -0
  63. package/schematics/ng-update/migrations/element-selectors.mjs +65 -0
  64. package/schematics/ng-update/migrations/input-names.mjs +60 -0
  65. package/schematics/ng-update/migrations/method-call-arguments.mjs +61 -0
  66. package/schematics/ng-update/migrations/misc-template.mjs +38 -0
  67. package/schematics/ng-update/migrations/output-names.mjs +47 -0
  68. package/schematics/ng-update/migrations/property-names.mjs +59 -0
  69. package/schematics/ng-update/public-api.mjs +30 -0
  70. package/schematics/ng-update/typescript/base-types.mjs +24 -0
  71. package/schematics/ng-update/typescript/imports.mjs +54 -0
  72. package/schematics/ng-update/typescript/literal.mjs +33 -0
  73. package/schematics/ng-update/typescript/module-specifiers.mjs +35 -0
  74. package/schematics/ng-update/upgrade-data.mjs +35 -0
  75. package/schematics/paths.mjs +16 -0
  76. package/schematics/schematics.externs.js +0 -0
  77. package/schematics/update-tool/component-resource-collector.mjs +147 -0
  78. package/schematics/update-tool/file-system.mjs +18 -0
  79. package/schematics/update-tool/index.mjs +158 -0
  80. package/schematics/update-tool/logger.mjs +18 -0
  81. package/schematics/update-tool/migration.mjs +67 -0
  82. package/schematics/update-tool/public-api.mjs +28 -0
  83. package/schematics/update-tool/target-version.mjs +34 -0
  84. package/schematics/update-tool/update-recorder.mjs +10 -0
  85. package/schematics/update-tool/update-tool.externs.js +0 -0
  86. package/schematics/update-tool/utils/decorators.mjs +38 -0
  87. package/schematics/update-tool/utils/functions.mjs +21 -0
  88. package/schematics/update-tool/utils/imports.mjs +111 -0
  89. package/schematics/update-tool/utils/line-mappings.mjs +76 -0
  90. package/schematics/update-tool/utils/parse-tsconfig.mjs +19 -0
  91. package/schematics/update-tool/utils/property-name.mjs +28 -0
  92. package/schematics/update-tool/utils/virtual-host.mjs +62 -0
  93. package/schematics/update-tool/version-changes.mjs +39 -0
  94. package/schematics/utils/ast/ng-module-imports.mjs +81 -0
  95. package/schematics/utils/ast.mjs +79 -0
  96. package/schematics/utils/build-component.mjs +193 -0
  97. package/schematics/utils/get-project.mjs +24 -0
  98. package/schematics/utils/html-manipulation.mjs +89 -0
  99. package/schematics/utils/index.mjs +31 -0
  100. package/schematics/utils/parse5-element.mjs +32 -0
  101. package/schematics/utils/project-index-file.mjs +21 -0
  102. package/schematics/utils/project-main-file.mjs +23 -0
  103. package/schematics/utils/project-style-file.mjs +44 -0
  104. package/schematics/utils/project-targets.mjs +34 -0
  105. package/schematics/utils/project-tsconfig-paths.mjs +50 -0
  106. package/schematics/utils/schematic-options.mjs +55 -0
  107. package/schematics/utils/vendored-ast-utils/index.mjs +480 -0
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.Migration = void 0;
11
+ const ts = require("typescript");
12
+ class Migration {
13
+ constructor(
14
+ /** TypeScript program for the migration. */
15
+ program,
16
+ /** TypeChecker instance for the analysis program. */
17
+ typeChecker,
18
+ /** Version for which the migration rule should run. */
19
+ targetVersion,
20
+ /** Context data for the migration. */
21
+ context,
22
+ /** Upgrade data passed to the migration. */
23
+ upgradeData,
24
+ /** File system that can be used for modifying files. */
25
+ fileSystem,
26
+ /** Logger that can be used to print messages as part of the migration. */
27
+ logger) {
28
+ this.program = program;
29
+ this.typeChecker = typeChecker;
30
+ this.targetVersion = targetVersion;
31
+ this.context = context;
32
+ this.upgradeData = upgradeData;
33
+ this.fileSystem = fileSystem;
34
+ this.logger = logger;
35
+ /** List of migration failures that need to be reported. */
36
+ this.failures = [];
37
+ }
38
+ /** Method can be used to perform global analysis of the program. */
39
+ init() { }
40
+ /**
41
+ * Method that will be called once all nodes, templates and stylesheets
42
+ * have been visited.
43
+ */
44
+ postAnalysis() { }
45
+ /**
46
+ * Method that will be called for each node in a given source file. Unlike tslint, this
47
+ * function will only retrieve TypeScript nodes that need to be casted manually. This
48
+ * allows us to only walk the program source files once per program and not per
49
+ * migration rule (significant performance boost).
50
+ */
51
+ visitNode(node) { }
52
+ /** Method that will be called for each Angular template in the program. */
53
+ visitTemplate(template) { }
54
+ /** Method that will be called for each stylesheet in the program. */
55
+ visitStylesheet(stylesheet) { }
56
+ /** Creates a failure with a specified message at the given node location. */
57
+ createFailureAtNode(node, message) {
58
+ const sourceFile = node.getSourceFile();
59
+ this.failures.push({
60
+ filePath: this.fileSystem.resolve(sourceFile.fileName),
61
+ position: ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()),
62
+ message: message,
63
+ });
64
+ }
65
+ }
66
+ exports.Migration = Migration;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3VwZGF0ZS10b29sL21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxpQ0FBaUM7QUF1QmpDLE1BQXNCLFNBQVM7SUFPN0I7SUFDSSw0Q0FBNEM7SUFDckMsT0FBbUI7SUFDMUIscURBQXFEO0lBQzlDLFdBQTJCO0lBQ2xDLHVEQUF1RDtJQUNoRCxhQUE0QjtJQUNuQyxzQ0FBc0M7SUFDL0IsT0FBZ0I7SUFDdkIsNENBQTRDO0lBQ3JDLFdBQWlCO0lBQ3hCLHdEQUF3RDtJQUNqRCxVQUFzQjtJQUM3QiwwRUFBMEU7SUFDbkUsTUFBb0I7UUFacEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUVuQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFFM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFNUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUVoQixnQkFBVyxHQUFYLFdBQVcsQ0FBTTtRQUVqQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFwQi9CLDJEQUEyRDtRQUMzRCxhQUFRLEdBQXVCLEVBQUUsQ0FBQztJQW1CQSxDQUFDO0lBRW5DLG9FQUFvRTtJQUNwRSxJQUFJLEtBQVUsQ0FBQztJQUVmOzs7T0FHRztJQUNILFlBQVksS0FBVSxDQUFDO0lBRXZCOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLElBQWEsSUFBUyxDQUFDO0lBRWpDLDJFQUEyRTtJQUMzRSxhQUFhLENBQUMsUUFBMEIsSUFBUyxDQUFDO0lBRWxELHFFQUFxRTtJQUNyRSxlQUFlLENBQUMsVUFBNEIsSUFBUyxDQUFDO0lBRXRELDZFQUE2RTtJQUNuRSxtQkFBbUIsQ0FBQyxJQUFhLEVBQUUsT0FBZTtRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDdEQsUUFBUSxFQUFFLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXZERCw4QkF1REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge1Jlc29sdmVkUmVzb3VyY2V9IGZyb20gJy4vY29tcG9uZW50LXJlc291cmNlLWNvbGxlY3Rvcic7XG5pbXBvcnQge0ZpbGVTeXN0ZW0sIFdvcmtzcGFjZVBhdGh9IGZyb20gJy4vZmlsZS1zeXN0ZW0nO1xuaW1wb3J0IHtVcGRhdGVMb2dnZXJ9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7VGFyZ2V0VmVyc2lvbn0gZnJvbSAnLi90YXJnZXQtdmVyc2lvbic7XG5pbXBvcnQge0xpbmVBbmRDaGFyYWN0ZXJ9IGZyb20gJy4vdXRpbHMvbGluZS1tYXBwaW5ncyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0aW9uRmFpbHVyZSB7XG4gIGZpbGVQYXRoOiBXb3Jrc3BhY2VQYXRoO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBvc2l0aW9uPzogTGluZUFuZENoYXJhY3Rlcjtcbn1cblxuZXhwb3J0IHR5cGUgUG9zdE1pZ3JhdGlvbkFjdGlvbiA9IHZvaWQgfCB7XG4gIC8qKiBXaGV0aGVyIHRoZSBwYWNrYWdlIG1hbmFnZXIgc2hvdWxkIHJ1biB1cG9uIG1pZ3JhdGlvbiBjb21wbGV0aW9uLiAqL1xuICBydW5QYWNrYWdlTWFuYWdlcjogYm9vbGVhbjtcbn07XG5cbi8qKiBDcmVhdGVzIGEgY29uc3RydWN0b3IgdHlwZSBmb3IgdGhlIHNwZWNpZmllZCB0eXBlLiAqL1xuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VD4gPSAobmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCk7XG4vKiogR2V0cyBhIGNvbnN0cnVjdG9yIHR5cGUgZm9yIHRoZSBwYXNzZWQgbWlncmF0aW9uIGRhdGEuICovXG5leHBvcnQgdHlwZSBNaWdyYXRpb25DdG9yPERhdGEsIENvbnRleHQgPSBuZXZlcj4gPSBDb25zdHJ1Y3RvcjxNaWdyYXRpb248RGF0YSwgQ29udGV4dD4+O1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWlncmF0aW9uPERhdGEsIENvbnRleHQgPSBuZXZlcj4ge1xuICAvKiogTGlzdCBvZiBtaWdyYXRpb24gZmFpbHVyZXMgdGhhdCBuZWVkIHRvIGJlIHJlcG9ydGVkLiAqL1xuICBmYWlsdXJlczogTWlncmF0aW9uRmFpbHVyZVtdID0gW107XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1pZ3JhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC4gKi9cbiAgYWJzdHJhY3QgZW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIC8qKiBUeXBlU2NyaXB0IHByb2dyYW0gZm9yIHRoZSBtaWdyYXRpb24uICovXG4gICAgICBwdWJsaWMgcHJvZ3JhbTogdHMuUHJvZ3JhbSxcbiAgICAgIC8qKiBUeXBlQ2hlY2tlciBpbnN0YW5jZSBmb3IgdGhlIGFuYWx5c2lzIHByb2dyYW0uICovXG4gICAgICBwdWJsaWMgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgICAgLyoqIFZlcnNpb24gZm9yIHdoaWNoIHRoZSBtaWdyYXRpb24gcnVsZSBzaG91bGQgcnVuLiAqL1xuICAgICAgcHVibGljIHRhcmdldFZlcnNpb246IFRhcmdldFZlcnNpb24sXG4gICAgICAvKiogQ29udGV4dCBkYXRhIGZvciB0aGUgbWlncmF0aW9uLiAqL1xuICAgICAgcHVibGljIGNvbnRleHQ6IENvbnRleHQsXG4gICAgICAvKiogVXBncmFkZSBkYXRhIHBhc3NlZCB0byB0aGUgbWlncmF0aW9uLiAqL1xuICAgICAgcHVibGljIHVwZ3JhZGVEYXRhOiBEYXRhLFxuICAgICAgLyoqIEZpbGUgc3lzdGVtIHRoYXQgY2FuIGJlIHVzZWQgZm9yIG1vZGlmeWluZyBmaWxlcy4gKi9cbiAgICAgIHB1YmxpYyBmaWxlU3lzdGVtOiBGaWxlU3lzdGVtLFxuICAgICAgLyoqIExvZ2dlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHByaW50IG1lc3NhZ2VzIGFzIHBhcnQgb2YgdGhlIG1pZ3JhdGlvbi4gKi9cbiAgICAgIHB1YmxpYyBsb2dnZXI6IFVwZGF0ZUxvZ2dlcikge31cblxuICAvKiogTWV0aG9kIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gZ2xvYmFsIGFuYWx5c2lzIG9mIHRoZSBwcm9ncmFtLiAqL1xuICBpbml0KCk6IHZvaWQge31cblxuICAvKipcbiAgICogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBhbGwgbm9kZXMsIHRlbXBsYXRlcyBhbmQgc3R5bGVzaGVldHNcbiAgICogaGF2ZSBiZWVuIHZpc2l0ZWQuXG4gICAqL1xuICBwb3N0QW5hbHlzaXMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBub2RlIGluIGEgZ2l2ZW4gc291cmNlIGZpbGUuIFVubGlrZSB0c2xpbnQsIHRoaXNcbiAgICogZnVuY3Rpb24gd2lsbCBvbmx5IHJldHJpZXZlIFR5cGVTY3JpcHQgbm9kZXMgdGhhdCBuZWVkIHRvIGJlIGNhc3RlZCBtYW51YWxseS4gVGhpc1xuICAgKiBhbGxvd3MgdXMgdG8gb25seSB3YWxrIHRoZSBwcm9ncmFtIHNvdXJjZSBmaWxlcyBvbmNlIHBlciBwcm9ncmFtIGFuZCBub3QgcGVyXG4gICAqIG1pZ3JhdGlvbiBydWxlIChzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBib29zdCkuXG4gICAqL1xuICB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge31cblxuICAvKiogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggQW5ndWxhciB0ZW1wbGF0ZSBpbiB0aGUgcHJvZ3JhbS4gKi9cbiAgdmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZTogUmVzb2x2ZWRSZXNvdXJjZSk6IHZvaWQge31cblxuICAvKiogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggc3R5bGVzaGVldCBpbiB0aGUgcHJvZ3JhbS4gKi9cbiAgdmlzaXRTdHlsZXNoZWV0KHN0eWxlc2hlZXQ6IFJlc29sdmVkUmVzb3VyY2UpOiB2b2lkIHt9XG5cbiAgLyoqIENyZWF0ZXMgYSBmYWlsdXJlIHdpdGggYSBzcGVjaWZpZWQgbWVzc2FnZSBhdCB0aGUgZ2l2ZW4gbm9kZSBsb2NhdGlvbi4gKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUZhaWx1cmVBdE5vZGUobm9kZTogdHMuTm9kZSwgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IG5vZGUuZ2V0U291cmNlRmlsZSgpO1xuICAgIHRoaXMuZmFpbHVyZXMucHVzaCh7XG4gICAgICBmaWxlUGF0aDogdGhpcy5maWxlU3lzdGVtLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSksXG4gICAgICBwb3NpdGlvbjogdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oc291cmNlRmlsZSwgbm9kZS5nZXRTdGFydCgpKSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./component-resource-collector"), exports);
21
+ __exportStar(require("./file-system"), exports);
22
+ __exportStar(require("./index"), exports);
23
+ __exportStar(require("./migration"), exports);
24
+ __exportStar(require("./target-version"), exports);
25
+ __exportStar(require("./utils/decorators"), exports);
26
+ __exportStar(require("./utils/imports"), exports);
27
+ __exportStar(require("./version-changes"), exports);
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy91cGRhdGUtdG9vbC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztBQUVILGlFQUErQztBQUMvQyxnREFBOEI7QUFDOUIsMENBQXdCO0FBQ3hCLDhDQUE0QjtBQUM1QixtREFBaUM7QUFDakMscURBQW1DO0FBQ25DLGtEQUFnQztBQUNoQyxvREFBa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQtcmVzb3VyY2UtY29sbGVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS1zeXN0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL21pZ3JhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldC12ZXJzaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZGVjb3JhdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2ltcG9ydHMnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLWNoYW5nZXMnO1xuIl19
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getAllVersionNames = exports.TargetVersion = void 0;
11
+ /** Possible versions that can be automatically migrated by `ng update`. */
12
+ // Used in an `Object.keys` call below so it can't be `const enum`.
13
+ // tslint:disable-next-line:prefer-const-enum
14
+ var TargetVersion;
15
+ (function (TargetVersion) {
16
+ TargetVersion["V6"] = "version 6";
17
+ TargetVersion["V7"] = "version 7";
18
+ TargetVersion["V8"] = "version 8";
19
+ TargetVersion["V9"] = "version 9";
20
+ TargetVersion["V10"] = "version 10";
21
+ TargetVersion["V11"] = "version 11";
22
+ TargetVersion["V12"] = "version 12";
23
+ })(TargetVersion = exports.TargetVersion || (exports.TargetVersion = {}));
24
+ /**
25
+ * Returns all versions that are supported by "ng update". The versions are determined
26
+ * based on the "TargetVersion" enum.
27
+ */
28
+ function getAllVersionNames() {
29
+ return Object.keys(TargetVersion).filter(enumValue => {
30
+ return typeof TargetVersion[enumValue] === 'string';
31
+ });
32
+ }
33
+ exports.getAllVersionNames = getAllVersionNames;
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LXZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXBkYXRlLXRvb2wvdGFyZ2V0LXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsMkVBQTJFO0FBQzNFLG1FQUFtRTtBQUNuRSw2Q0FBNkM7QUFDN0MsSUFBWSxhQVFYO0FBUkQsV0FBWSxhQUFhO0lBQ3ZCLGlDQUFnQixDQUFBO0lBQ2hCLGlDQUFnQixDQUFBO0lBQ2hCLGlDQUFnQixDQUFBO0lBQ2hCLGlDQUFnQixDQUFBO0lBQ2hCLG1DQUFrQixDQUFBO0lBQ2xCLG1DQUFrQixDQUFBO0lBQ2xCLG1DQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFSVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQVF4QjtBQUVEOzs7R0FHRztBQUNILFNBQWdCLGtCQUFrQjtJQUNoQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ25ELE9BQU8sT0FBUSxhQUFrRCxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsQ0FBQztJQUM1RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFKRCxnREFJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKiogUG9zc2libGUgdmVyc2lvbnMgdGhhdCBjYW4gYmUgYXV0b21hdGljYWxseSBtaWdyYXRlZCBieSBgbmcgdXBkYXRlYC4gKi9cbi8vIFVzZWQgaW4gYW4gYE9iamVjdC5rZXlzYCBjYWxsIGJlbG93IHNvIGl0IGNhbid0IGJlIGBjb25zdCBlbnVtYC5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItY29uc3QtZW51bVxuZXhwb3J0IGVudW0gVGFyZ2V0VmVyc2lvbiB7XG4gIFY2ID0gJ3ZlcnNpb24gNicsXG4gIFY3ID0gJ3ZlcnNpb24gNycsXG4gIFY4ID0gJ3ZlcnNpb24gOCcsXG4gIFY5ID0gJ3ZlcnNpb24gOScsXG4gIFYxMCA9ICd2ZXJzaW9uIDEwJyxcbiAgVjExID0gJ3ZlcnNpb24gMTEnLFxuICBWMTIgPSAndmVyc2lvbiAxMicsXG59XG5cbi8qKlxuICogUmV0dXJucyBhbGwgdmVyc2lvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IFwibmcgdXBkYXRlXCIuIFRoZSB2ZXJzaW9ucyBhcmUgZGV0ZXJtaW5lZFxuICogYmFzZWQgb24gdGhlIFwiVGFyZ2V0VmVyc2lvblwiIGVudW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxWZXJzaW9uTmFtZXMoKTogc3RyaW5nW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoVGFyZ2V0VmVyc2lvbikuZmlsdGVyKGVudW1WYWx1ZSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiAoVGFyZ2V0VmVyc2lvbiBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmd8dW5kZWZpbmVkPilbZW51bVZhbHVlXSA9PT0gJ3N0cmluZyc7XG4gIH0pO1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXJlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3VwZGF0ZS10b29sL3VwZGF0ZS1yZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBVcGRhdGUgcmVjb3JkZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBjaGFuZ2VzIHRvIGEgc291cmNlIGZpbGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlY29yZGVyIHtcbiAgaW5zZXJ0TGVmdChpbmRleDogbnVtYmVyLCBjb250ZW50OiBzdHJpbmcpOiBVcGRhdGVSZWNvcmRlcjtcbiAgaW5zZXJ0UmlnaHQoaW5kZXg6IG51bWJlciwgY29udGVudDogc3RyaW5nKTogVXBkYXRlUmVjb3JkZXI7XG4gIHJlbW92ZShpbmRleDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IFVwZGF0ZVJlY29yZGVyO1xufVxuIl19
File without changes
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getCallDecoratorImport = exports.getAngularDecorators = void 0;
11
+ const ts = require("typescript");
12
+ const imports_1 = require("./imports");
13
+ /**
14
+ * Gets all decorators which are imported from an Angular package
15
+ * (e.g. "@angular/core") from a list of decorators.
16
+ */
17
+ function getAngularDecorators(typeChecker, decorators) {
18
+ return decorators.map(node => ({ node, importData: getCallDecoratorImport(typeChecker, node) }))
19
+ .filter(({ importData }) => importData && importData.moduleName.startsWith('@angular/'))
20
+ .map(({ node, importData }) => ({ node: node, name: importData.symbolName }));
21
+ }
22
+ exports.getAngularDecorators = getAngularDecorators;
23
+ function getCallDecoratorImport(typeChecker, decorator) {
24
+ if (!ts.isCallExpression(decorator.expression)) {
25
+ return null;
26
+ }
27
+ const valueExpr = decorator.expression.expression;
28
+ let identifier = null;
29
+ if (ts.isIdentifier(valueExpr)) {
30
+ identifier = valueExpr;
31
+ }
32
+ else if (ts.isPropertyAccessExpression(valueExpr) && ts.isIdentifier(valueExpr.name)) {
33
+ identifier = valueExpr.name;
34
+ }
35
+ return identifier ? imports_1.getImportOfIdentifier(identifier, typeChecker) : null;
36
+ }
37
+ exports.getCallDecoratorImport = getCallDecoratorImport;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy91cGRhdGUtdG9vbC91dGlscy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILGlDQUFpQztBQUVqQyx1Q0FBd0Q7QUFXeEQ7OztHQUdHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2hDLFdBQTJCLEVBQUUsVUFBbUM7SUFDbEUsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsc0JBQXNCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztTQUN6RixNQUFNLENBQUMsQ0FBQyxFQUFDLFVBQVUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDckYsR0FBRyxDQUNBLENBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDLEVBQUUsRUFBRSxDQUNuQixDQUFDLEVBQUMsSUFBSSxFQUFFLElBQStCLEVBQUUsSUFBSSxFQUFFLFVBQVcsQ0FBQyxVQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQVBELG9EQU9DO0FBRUQsU0FBZ0Isc0JBQXNCLENBQ2xDLFdBQTJCLEVBQUUsU0FBdUI7SUFDdEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDOUMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQ2xELElBQUksVUFBVSxHQUF1QixJQUFJLENBQUM7SUFDMUMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzlCLFVBQVUsR0FBRyxTQUFTLENBQUM7S0FDeEI7U0FBTSxJQUFJLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0RixVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztLQUM3QjtJQUNELE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQywrQkFBcUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDO0FBYkQsd0RBYUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0SW1wb3J0T2ZJZGVudGlmaWVyLCBJbXBvcnR9IGZyb20gJy4vaW1wb3J0cyc7XG5cbmV4cG9ydCB0eXBlIENhbGxFeHByZXNzaW9uRGVjb3JhdG9yID0gdHMuRGVjb3JhdG9yJntcbiAgZXhwcmVzc2lvbjogdHMuQ2FsbEV4cHJlc3Npb247XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5nRGVjb3JhdG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICBub2RlOiBDYWxsRXhwcmVzc2lvbkRlY29yYXRvcjtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBkZWNvcmF0b3JzIHdoaWNoIGFyZSBpbXBvcnRlZCBmcm9tIGFuIEFuZ3VsYXIgcGFja2FnZVxuICogKGUuZy4gXCJAYW5ndWxhci9jb3JlXCIpIGZyb20gYSBsaXN0IG9mIGRlY29yYXRvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmd1bGFyRGVjb3JhdG9ycyhcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIGRlY29yYXRvcnM6IHJlYWRvbmx5IHRzLkRlY29yYXRvcltdKTogcmVhZG9ubHkgTmdEZWNvcmF0b3JbXSB7XG4gIHJldHVybiBkZWNvcmF0b3JzLm1hcChub2RlID0+ICh7bm9kZSwgaW1wb3J0RGF0YTogZ2V0Q2FsbERlY29yYXRvckltcG9ydCh0eXBlQ2hlY2tlciwgbm9kZSl9KSlcbiAgICAgIC5maWx0ZXIoKHtpbXBvcnREYXRhfSkgPT4gaW1wb3J0RGF0YSAmJiBpbXBvcnREYXRhLm1vZHVsZU5hbWUuc3RhcnRzV2l0aCgnQGFuZ3VsYXIvJykpXG4gICAgICAubWFwKFxuICAgICAgICAgICh7bm9kZSwgaW1wb3J0RGF0YX0pID0+XG4gICAgICAgICAgICAgICh7bm9kZTogbm9kZSBhcyBDYWxsRXhwcmVzc2lvbkRlY29yYXRvciwgbmFtZTogaW1wb3J0RGF0YSEuc3ltYm9sTmFtZX0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGxEZWNvcmF0b3JJbXBvcnQoXG4gICAgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCBkZWNvcmF0b3I6IHRzLkRlY29yYXRvcik6IEltcG9ydHxudWxsIHtcbiAgaWYgKCF0cy5pc0NhbGxFeHByZXNzaW9uKGRlY29yYXRvci5leHByZXNzaW9uKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHZhbHVlRXhwciA9IGRlY29yYXRvci5leHByZXNzaW9uLmV4cHJlc3Npb247XG4gIGxldCBpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyfG51bGwgPSBudWxsO1xuICBpZiAodHMuaXNJZGVudGlmaWVyKHZhbHVlRXhwcikpIHtcbiAgICBpZGVudGlmaWVyID0gdmFsdWVFeHByO1xuICB9IGVsc2UgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKHZhbHVlRXhwcikgJiYgdHMuaXNJZGVudGlmaWVyKHZhbHVlRXhwci5uYW1lKSkge1xuICAgIGlkZW50aWZpZXIgPSB2YWx1ZUV4cHIubmFtZTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllciA/IGdldEltcG9ydE9mSWRlbnRpZmllcihpZGVudGlmaWVyLCB0eXBlQ2hlY2tlcikgOiBudWxsO1xufVxuIl19
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.unwrapExpression = void 0;
11
+ const ts = require("typescript");
12
+ /**
13
+ * Unwraps a given expression TypeScript node. Expressions can be wrapped within multiple
14
+ * parentheses. e.g. "(((({exp}))))()". The function should return the TypeScript node
15
+ * referring to the inner expression. e.g "exp".
16
+ */
17
+ function unwrapExpression(node) {
18
+ return ts.isParenthesizedExpression(node) ? unwrapExpression(node.expression) : node;
19
+ }
20
+ exports.unwrapExpression = unwrapExpression;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3VwZGF0ZS10b29sL3V0aWxzL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxpQ0FBaUM7QUFFakM7Ozs7R0FJRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLElBQThDO0lBQzdFLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN2RixDQUFDO0FBRkQsNENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKlxuICogVW53cmFwcyBhIGdpdmVuIGV4cHJlc3Npb24gVHlwZVNjcmlwdCBub2RlLiBFeHByZXNzaW9ucyBjYW4gYmUgd3JhcHBlZCB3aXRoaW4gbXVsdGlwbGVcbiAqIHBhcmVudGhlc2VzLiBlLmcuIFwiKCgoKHtleHB9KSkpKSgpXCIuIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoZSBUeXBlU2NyaXB0IG5vZGVcbiAqIHJlZmVycmluZyB0byB0aGUgaW5uZXIgZXhwcmVzc2lvbi4gZS5nIFwiZXhwXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBFeHByZXNzaW9uKG5vZGU6IHRzLkV4cHJlc3Npb258dHMuUGFyZW50aGVzaXplZEV4cHJlc3Npb24pOiB0cy5FeHByZXNzaW9uIHtcbiAgcmV0dXJuIHRzLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24obm9kZSkgPyB1bndyYXBFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbikgOiBub2RlO1xufVxuIl19
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getImportOfIdentifier = void 0;
11
+ const ts = require("typescript");
12
+ /** Resolves the import of the specified identifier. */
13
+ function getImportOfIdentifier(node, typeChecker) {
14
+ // Free standing identifiers which resolve to an import will be handled
15
+ // as direct imports. e.g. "@Component()" where "Component" is an identifier
16
+ // referring to an import specifier.
17
+ const directImport = getSpecificImportOfIdentifier(node, typeChecker);
18
+ if (directImport !== null) {
19
+ return directImport;
20
+ }
21
+ else if (ts.isQualifiedName(node.parent) && node.parent.right === node) {
22
+ // Determines the import of a qualified name. e.g. "let t: core.Component". In that
23
+ // case, the import of the most left identifier will be determined ("core").
24
+ const qualifierRoot = getQualifiedNameRoot(node.parent);
25
+ if (qualifierRoot) {
26
+ const moduleName = getImportOfNamespacedIdentifier(qualifierRoot, typeChecker);
27
+ if (moduleName) {
28
+ return { moduleName, symbolName: node.text };
29
+ }
30
+ }
31
+ }
32
+ else if (ts.isPropertyAccessExpression(node.parent) && node.parent.name === node) {
33
+ // Determines the import of a property expression. e.g. "@core.Component". In that
34
+ // case, the import of the most left identifier will be determined ("core").
35
+ const rootIdentifier = getPropertyAccessRoot(node.parent);
36
+ if (rootIdentifier) {
37
+ const moduleName = getImportOfNamespacedIdentifier(rootIdentifier, typeChecker);
38
+ if (moduleName) {
39
+ return { moduleName, symbolName: node.text };
40
+ }
41
+ }
42
+ }
43
+ return null;
44
+ }
45
+ exports.getImportOfIdentifier = getImportOfIdentifier;
46
+ /**
47
+ * Resolves the import of the specified identifier. Expects the identifier to resolve
48
+ * to a fine-grained import declaration with import specifiers.
49
+ */
50
+ function getSpecificImportOfIdentifier(node, typeChecker) {
51
+ const symbol = typeChecker.getSymbolAtLocation(node);
52
+ if (!symbol || !symbol.declarations || !symbol.declarations.length) {
53
+ return null;
54
+ }
55
+ const declaration = symbol.declarations[0];
56
+ if (!ts.isImportSpecifier(declaration)) {
57
+ return null;
58
+ }
59
+ // Since the declaration is an import specifier, we can walk up three times to get a reference
60
+ // to the import declaration node (NamedImports -> ImportClause -> ImportDeclaration).
61
+ const importDecl = declaration.parent.parent.parent;
62
+ if (!ts.isStringLiteral(importDecl.moduleSpecifier)) {
63
+ return null;
64
+ }
65
+ return {
66
+ moduleName: importDecl.moduleSpecifier.text,
67
+ symbolName: declaration.propertyName ? declaration.propertyName.text : declaration.name.text
68
+ };
69
+ }
70
+ /**
71
+ * Resolves the import of the specified identifier. Expects the identifier to
72
+ * resolve to a namespaced import declaration. e.g. "import * as core from ...".
73
+ */
74
+ function getImportOfNamespacedIdentifier(node, typeChecker) {
75
+ const symbol = typeChecker.getSymbolAtLocation(node);
76
+ if (!symbol || !symbol.declarations || !symbol.declarations.length) {
77
+ return null;
78
+ }
79
+ const declaration = symbol.declarations[0];
80
+ if (!ts.isNamespaceImport(declaration)) {
81
+ return null;
82
+ }
83
+ // Since the declaration is a namespace import, we can walk up three times to get a reference
84
+ // to the import declaration node (NamespaceImport -> ImportClause -> ImportDeclaration).
85
+ const importDecl = declaration.parent.parent;
86
+ if (!ts.isStringLiteral(importDecl.moduleSpecifier)) {
87
+ return null;
88
+ }
89
+ return importDecl.moduleSpecifier.text;
90
+ }
91
+ /**
92
+ * Gets the root identifier of a qualified type chain. For example: "core.GestureConfig"
93
+ * will return the "core" identifier. Allowing us to find the import of "core".
94
+ */
95
+ function getQualifiedNameRoot(name) {
96
+ while (ts.isQualifiedName(name.left)) {
97
+ name = name.left;
98
+ }
99
+ return ts.isIdentifier(name.left) ? name.left : null;
100
+ }
101
+ /**
102
+ * Gets the root identifier of a property access chain. For example: "core.GestureConfig"
103
+ * will return the "core" identifier. Allowing us to find the import of "core".
104
+ */
105
+ function getPropertyAccessRoot(node) {
106
+ while (ts.isPropertyAccessExpression(node.expression)) {
107
+ node = node.expression;
108
+ }
109
+ return ts.isIdentifier(node.expression) ? node.expression : null;
110
+ }
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy91cGRhdGUtdG9vbC91dGlscy9pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILGlDQUFpQztBQVdqQyx1REFBdUQ7QUFDdkQsU0FBZ0IscUJBQXFCLENBQUMsSUFBbUIsRUFBRSxXQUEyQjtJQUVwRix1RUFBdUU7SUFDdkUsNEVBQTRFO0lBQzVFLG9DQUFvQztJQUNwQyxNQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEUsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1FBQ3pCLE9BQU8sWUFBWSxDQUFDO0tBQ3JCO1NBQU0sSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDeEUsbUZBQW1GO1FBQ25GLDRFQUE0RTtRQUM1RSxNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsSUFBSSxhQUFhLEVBQUU7WUFDakIsTUFBTSxVQUFVLEdBQUcsK0JBQStCLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQy9FLElBQUksVUFBVSxFQUFFO2dCQUNkLE9BQU8sRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQzthQUM1QztTQUNGO0tBQ0Y7U0FBTSxJQUFJLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1FBQ2xGLGtGQUFrRjtRQUNsRiw0RUFBNEU7UUFDNUUsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELElBQUksY0FBYyxFQUFFO1lBQ2xCLE1BQU0sVUFBVSxHQUFHLCtCQUErQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNoRixJQUFJLFVBQVUsRUFBRTtnQkFDZCxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUM7YUFDNUM7U0FDRjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBOUJELHNEQThCQztBQUVEOzs7R0FHRztBQUNILFNBQVMsNkJBQTZCLENBQUMsSUFBbUIsRUFBRSxXQUEyQjtJQUVyRixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtRQUNsRSxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCw4RkFBOEY7SUFDOUYsc0ZBQXNGO0lBQ3RGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwRCxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDbkQsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU87UUFDTCxVQUFVLEVBQUUsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJO1FBQzNDLFVBQVUsRUFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJO0tBQzdGLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUywrQkFBK0IsQ0FBQyxJQUFtQixFQUFFLFdBQTJCO0lBRXZGLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1FBQ2xFLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDdEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELDZGQUE2RjtJQUM3Rix5RkFBeUY7SUFDekYsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDN0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO0FBQ3pDLENBQUM7QUFHRDs7O0dBR0c7QUFDSCxTQUFTLG9CQUFvQixDQUFDLElBQXNCO0lBQ2xELE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7S0FDbEI7SUFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMscUJBQXFCLENBQUMsSUFBaUM7SUFDOUQsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3JELElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0tBQ3hCO0lBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBhIHJlc29sdmVkIGltcG9ydC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0IHtcbiAgLyoqIE5hbWUgb2YgdGhlIGltcG9ydGVkIHN5bWJvbC4gKi9cbiAgc3ltYm9sTmFtZTogc3RyaW5nO1xuICAvKiogTW9kdWxlIG5hbWUgZnJvbSB3aGljaCB0aGUgc3ltYm9sIGhhcyBiZWVuIGltcG9ydGVkLiAqL1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG59XG5cblxuLyoqIFJlc29sdmVzIHRoZSBpbXBvcnQgb2YgdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcG9ydE9mSWRlbnRpZmllcihub2RlOiB0cy5JZGVudGlmaWVyLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiBJbXBvcnR8XG4gICAgbnVsbCB7XG4gIC8vIEZyZWUgc3RhbmRpbmcgaWRlbnRpZmllcnMgd2hpY2ggcmVzb2x2ZSB0byBhbiBpbXBvcnQgd2lsbCBiZSBoYW5kbGVkXG4gIC8vIGFzIGRpcmVjdCBpbXBvcnRzLiBlLmcuIFwiQENvbXBvbmVudCgpXCIgd2hlcmUgXCJDb21wb25lbnRcIiBpcyBhbiBpZGVudGlmaWVyXG4gIC8vIHJlZmVycmluZyB0byBhbiBpbXBvcnQgc3BlY2lmaWVyLlxuICBjb25zdCBkaXJlY3RJbXBvcnQgPSBnZXRTcGVjaWZpY0ltcG9ydE9mSWRlbnRpZmllcihub2RlLCB0eXBlQ2hlY2tlcik7XG4gIGlmIChkaXJlY3RJbXBvcnQgIT09IG51bGwpIHtcbiAgICByZXR1cm4gZGlyZWN0SW1wb3J0O1xuICB9IGVsc2UgaWYgKHRzLmlzUXVhbGlmaWVkTmFtZShub2RlLnBhcmVudCkgJiYgbm9kZS5wYXJlbnQucmlnaHQgPT09IG5vZGUpIHtcbiAgICAvLyBEZXRlcm1pbmVzIHRoZSBpbXBvcnQgb2YgYSBxdWFsaWZpZWQgbmFtZS4gZS5nLiBcImxldCB0OiBjb3JlLkNvbXBvbmVudFwiLiBJbiB0aGF0XG4gICAgLy8gY2FzZSwgdGhlIGltcG9ydCBvZiB0aGUgbW9zdCBsZWZ0IGlkZW50aWZpZXIgd2lsbCBiZSBkZXRlcm1pbmVkIChcImNvcmVcIikuXG4gICAgY29uc3QgcXVhbGlmaWVyUm9vdCA9IGdldFF1YWxpZmllZE5hbWVSb290KG5vZGUucGFyZW50KTtcbiAgICBpZiAocXVhbGlmaWVyUm9vdCkge1xuICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IGdldEltcG9ydE9mTmFtZXNwYWNlZElkZW50aWZpZXIocXVhbGlmaWVyUm9vdCwgdHlwZUNoZWNrZXIpO1xuICAgICAgaWYgKG1vZHVsZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHttb2R1bGVOYW1lLCBzeW1ib2xOYW1lOiBub2RlLnRleHR9O1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICh0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlLnBhcmVudCkgJiYgbm9kZS5wYXJlbnQubmFtZSA9PT0gbm9kZSkge1xuICAgIC8vIERldGVybWluZXMgdGhlIGltcG9ydCBvZiBhIHByb3BlcnR5IGV4cHJlc3Npb24uIGUuZy4gXCJAY29yZS5Db21wb25lbnRcIi4gSW4gdGhhdFxuICAgIC8vIGNhc2UsIHRoZSBpbXBvcnQgb2YgdGhlIG1vc3QgbGVmdCBpZGVudGlmaWVyIHdpbGwgYmUgZGV0ZXJtaW5lZCAoXCJjb3JlXCIpLlxuICAgIGNvbnN0IHJvb3RJZGVudGlmaWVyID0gZ2V0UHJvcGVydHlBY2Nlc3NSb290KG5vZGUucGFyZW50KTtcbiAgICBpZiAocm9vdElkZW50aWZpZXIpIHtcbiAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBnZXRJbXBvcnRPZk5hbWVzcGFjZWRJZGVudGlmaWVyKHJvb3RJZGVudGlmaWVyLCB0eXBlQ2hlY2tlcik7XG4gICAgICBpZiAobW9kdWxlTmFtZSkge1xuICAgICAgICByZXR1cm4ge21vZHVsZU5hbWUsIHN5bWJvbE5hbWU6IG5vZGUudGV4dH07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBpbXBvcnQgb2YgdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyLiBFeHBlY3RzIHRoZSBpZGVudGlmaWVyIHRvIHJlc29sdmVcbiAqIHRvIGEgZmluZS1ncmFpbmVkIGltcG9ydCBkZWNsYXJhdGlvbiB3aXRoIGltcG9ydCBzcGVjaWZpZXJzLlxuICovXG5mdW5jdGlvbiBnZXRTcGVjaWZpY0ltcG9ydE9mSWRlbnRpZmllcihub2RlOiB0cy5JZGVudGlmaWVyLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiBJbXBvcnR8XG4gICAgbnVsbCB7XG4gIGNvbnN0IHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obm9kZSk7XG4gIGlmICghc3ltYm9sIHx8ICFzeW1ib2wuZGVjbGFyYXRpb25zIHx8ICFzeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGRlY2xhcmF0aW9uID0gc3ltYm9sLmRlY2xhcmF0aW9uc1swXTtcbiAgaWYgKCF0cy5pc0ltcG9ydFNwZWNpZmllcihkZWNsYXJhdGlvbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBTaW5jZSB0aGUgZGVjbGFyYXRpb24gaXMgYW4gaW1wb3J0IHNwZWNpZmllciwgd2UgY2FuIHdhbGsgdXAgdGhyZWUgdGltZXMgdG8gZ2V0IGEgcmVmZXJlbmNlXG4gIC8vIHRvIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24gbm9kZSAoTmFtZWRJbXBvcnRzIC0+IEltcG9ydENsYXVzZSAtPiBJbXBvcnREZWNsYXJhdGlvbikuXG4gIGNvbnN0IGltcG9ydERlY2wgPSBkZWNsYXJhdGlvbi5wYXJlbnQucGFyZW50LnBhcmVudDtcbiAgaWYgKCF0cy5pc1N0cmluZ0xpdGVyYWwoaW1wb3J0RGVjbC5tb2R1bGVTcGVjaWZpZXIpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVOYW1lOiBpbXBvcnREZWNsLm1vZHVsZVNwZWNpZmllci50ZXh0LFxuICAgIHN5bWJvbE5hbWU6IGRlY2xhcmF0aW9uLnByb3BlcnR5TmFtZSA/IGRlY2xhcmF0aW9uLnByb3BlcnR5TmFtZS50ZXh0IDogZGVjbGFyYXRpb24ubmFtZS50ZXh0XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGltcG9ydCBvZiB0aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIuIEV4cGVjdHMgdGhlIGlkZW50aWZpZXIgdG9cbiAqIHJlc29sdmUgdG8gYSBuYW1lc3BhY2VkIGltcG9ydCBkZWNsYXJhdGlvbi4gZS5nLiBcImltcG9ydCAqIGFzIGNvcmUgZnJvbSAuLi5cIi5cbiAqL1xuZnVuY3Rpb24gZ2V0SW1wb3J0T2ZOYW1lc3BhY2VkSWRlbnRpZmllcihub2RlOiB0cy5JZGVudGlmaWVyLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiBzdHJpbmd8XG4gICAgbnVsbCB7XG4gIGNvbnN0IHN5bWJvbCA9IHR5cGVDaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obm9kZSk7XG4gIGlmICghc3ltYm9sIHx8ICFzeW1ib2wuZGVjbGFyYXRpb25zIHx8ICFzeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGRlY2xhcmF0aW9uID0gc3ltYm9sLmRlY2xhcmF0aW9uc1swXTtcbiAgaWYgKCF0cy5pc05hbWVzcGFjZUltcG9ydChkZWNsYXJhdGlvbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBTaW5jZSB0aGUgZGVjbGFyYXRpb24gaXMgYSBuYW1lc3BhY2UgaW1wb3J0LCB3ZSBjYW4gd2FsayB1cCB0aHJlZSB0aW1lcyB0byBnZXQgYSByZWZlcmVuY2VcbiAgLy8gdG8gdGhlIGltcG9ydCBkZWNsYXJhdGlvbiBub2RlIChOYW1lc3BhY2VJbXBvcnQgLT4gSW1wb3J0Q2xhdXNlIC0+IEltcG9ydERlY2xhcmF0aW9uKS5cbiAgY29uc3QgaW1wb3J0RGVjbCA9IGRlY2xhcmF0aW9uLnBhcmVudC5wYXJlbnQ7XG4gIGlmICghdHMuaXNTdHJpbmdMaXRlcmFsKGltcG9ydERlY2wubW9kdWxlU3BlY2lmaWVyKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGltcG9ydERlY2wubW9kdWxlU3BlY2lmaWVyLnRleHQ7XG59XG5cblxuLyoqXG4gKiBHZXRzIHRoZSByb290IGlkZW50aWZpZXIgb2YgYSBxdWFsaWZpZWQgdHlwZSBjaGFpbi4gRm9yIGV4YW1wbGU6IFwiY29yZS5HZXN0dXJlQ29uZmlnXCJcbiAqIHdpbGwgcmV0dXJuIHRoZSBcImNvcmVcIiBpZGVudGlmaWVyLiBBbGxvd2luZyB1cyB0byBmaW5kIHRoZSBpbXBvcnQgb2YgXCJjb3JlXCIuXG4gKi9cbmZ1bmN0aW9uIGdldFF1YWxpZmllZE5hbWVSb290KG5hbWU6IHRzLlF1YWxpZmllZE5hbWUpOiB0cy5JZGVudGlmaWVyfG51bGwge1xuICB3aGlsZSAodHMuaXNRdWFsaWZpZWROYW1lKG5hbWUubGVmdCkpIHtcbiAgICBuYW1lID0gbmFtZS5sZWZ0O1xuICB9XG4gIHJldHVybiB0cy5pc0lkZW50aWZpZXIobmFtZS5sZWZ0KSA/IG5hbWUubGVmdCA6IG51bGw7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcm9vdCBpZGVudGlmaWVyIG9mIGEgcHJvcGVydHkgYWNjZXNzIGNoYWluLiBGb3IgZXhhbXBsZTogXCJjb3JlLkdlc3R1cmVDb25maWdcIlxuICogd2lsbCByZXR1cm4gdGhlIFwiY29yZVwiIGlkZW50aWZpZXIuIEFsbG93aW5nIHVzIHRvIGZpbmQgdGhlIGltcG9ydCBvZiBcImNvcmVcIi5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcGVydHlBY2Nlc3NSb290KG5vZGU6IHRzLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik6IHRzLklkZW50aWZpZXJ8bnVsbCB7XG4gIHdoaWxlICh0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24pKSB7XG4gICAgbm9kZSA9IG5vZGUuZXhwcmVzc2lvbjtcbiAgfVxuICByZXR1cm4gdHMuaXNJZGVudGlmaWVyKG5vZGUuZXhwcmVzc2lvbikgPyBub2RlLmV4cHJlc3Npb24gOiBudWxsO1xufVxuIl19
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.computeLineStartsMap = exports.getLineAndCharacterFromPosition = void 0;
11
+ /*
12
+ * Line mapping utilities which can be used to retrieve line and character based
13
+ * on an absolute character position in a given file. This functionality is similar
14
+ * to TypeScript's "ts.getLineAndCharacterFromPosition" utility, but we cannot leverage
15
+ * their logic for line mappings as it's internal and we need to generate line mappings
16
+ * for non-TypeScript files such as HTML templates or stylesheets.
17
+ *
18
+ * Line and character can be retrieved by splitting a given source text based on
19
+ * line breaks into line start entries. Later when a specific position is requested,
20
+ * the closest line-start position is determined based on the given position.
21
+ */
22
+ const LF_CHAR = 10;
23
+ const CR_CHAR = 13;
24
+ const LINE_SEP_CHAR = 8232;
25
+ const PARAGRAPH_CHAR = 8233;
26
+ /** Gets the line and character for the given position from the line starts map. */
27
+ function getLineAndCharacterFromPosition(lineStartsMap, position) {
28
+ const lineIndex = findClosestLineStartPosition(lineStartsMap, position);
29
+ return { character: position - lineStartsMap[lineIndex], line: lineIndex };
30
+ }
31
+ exports.getLineAndCharacterFromPosition = getLineAndCharacterFromPosition;
32
+ /**
33
+ * Computes the line start map of the given text. This can be used in order to
34
+ * retrieve the line and character of a given text position index.
35
+ */
36
+ function computeLineStartsMap(text) {
37
+ const result = [0];
38
+ let pos = 0;
39
+ while (pos < text.length) {
40
+ const char = text.charCodeAt(pos++);
41
+ // Handles the "CRLF" line break. In that case we peek the character
42
+ // after the "CR" and check if it is a line feed.
43
+ if (char === CR_CHAR) {
44
+ if (text.charCodeAt(pos) === LF_CHAR) {
45
+ pos++;
46
+ }
47
+ result.push(pos);
48
+ }
49
+ else if (char === LF_CHAR || char === LINE_SEP_CHAR || char === PARAGRAPH_CHAR) {
50
+ result.push(pos);
51
+ }
52
+ }
53
+ result.push(pos);
54
+ return result;
55
+ }
56
+ exports.computeLineStartsMap = computeLineStartsMap;
57
+ /** Finds the closest line start for the given position. */
58
+ function findClosestLineStartPosition(linesMap, position, low = 0, high = linesMap.length - 1) {
59
+ while (low <= high) {
60
+ const pivotIndex = Math.floor((low + high) / 2);
61
+ const pivotEl = linesMap[pivotIndex];
62
+ if (pivotEl === position) {
63
+ return pivotIndex;
64
+ }
65
+ else if (position > pivotEl) {
66
+ low = pivotIndex + 1;
67
+ }
68
+ else {
69
+ high = pivotIndex - 1;
70
+ }
71
+ }
72
+ // In case there was no exact match, return the closest "lower" line index. We also
73
+ // subtract the index by one because want the index of the previous line start.
74
+ return low - 1;
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1tYXBwaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy91cGRhdGUtdG9vbC91dGlscy9saW5lLW1hcHBpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVIOzs7Ozs7Ozs7O0dBVUc7QUFFSCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDbkIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ25CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUM7QUFPNUIsbUZBQW1GO0FBQ25GLFNBQWdCLCtCQUErQixDQUFDLGFBQXVCLEVBQUUsUUFBZ0I7SUFDdkYsTUFBTSxTQUFTLEdBQUcsNEJBQTRCLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUM7QUFDM0UsQ0FBQztBQUhELDBFQUdDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsSUFBWTtJQUMvQyxNQUFNLE1BQU0sR0FBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNaLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLG9FQUFvRTtRQUNwRSxpREFBaUQ7UUFDakQsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUU7Z0JBQ3BDLEdBQUcsRUFBRSxDQUFDO2FBQ1A7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLElBQUksS0FBSyxhQUFhLElBQUksSUFBSSxLQUFLLGNBQWMsRUFBRTtZQUNoRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO0tBQ0Y7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFsQkQsb0RBa0JDO0FBRUQsMkRBQTJEO0FBQzNELFNBQVMsNEJBQTRCLENBQ2pDLFFBQWEsRUFBRSxRQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQ2pFLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRTtRQUNsQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyQyxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDeEIsT0FBTyxVQUFVLENBQUM7U0FDbkI7YUFBTSxJQUFJLFFBQVEsR0FBRyxPQUFPLEVBQUU7WUFDN0IsR0FBRyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUM7U0FDdEI7YUFBTTtZQUNMLElBQUksR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCO0tBQ0Y7SUFFRCxtRkFBbUY7SUFDbkYsK0VBQStFO0lBQy9FLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qXG4gKiBMaW5lIG1hcHBpbmcgdXRpbGl0aWVzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIGxpbmUgYW5kIGNoYXJhY3RlciBiYXNlZFxuICogb24gYW4gYWJzb2x1dGUgY2hhcmFjdGVyIHBvc2l0aW9uIGluIGEgZ2l2ZW4gZmlsZS4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHNpbWlsYXJcbiAqIHRvIFR5cGVTY3JpcHQncyBcInRzLmdldExpbmVBbmRDaGFyYWN0ZXJGcm9tUG9zaXRpb25cIiB1dGlsaXR5LCBidXQgd2UgY2Fubm90IGxldmVyYWdlXG4gKiB0aGVpciBsb2dpYyBmb3IgbGluZSBtYXBwaW5ncyBhcyBpdCdzIGludGVybmFsIGFuZCB3ZSBuZWVkIHRvIGdlbmVyYXRlIGxpbmUgbWFwcGluZ3NcbiAqIGZvciBub24tVHlwZVNjcmlwdCBmaWxlcyBzdWNoIGFzIEhUTUwgdGVtcGxhdGVzIG9yIHN0eWxlc2hlZXRzLlxuICpcbiAqIExpbmUgYW5kIGNoYXJhY3RlciBjYW4gYmUgcmV0cmlldmVkIGJ5IHNwbGl0dGluZyBhIGdpdmVuIHNvdXJjZSB0ZXh0IGJhc2VkIG9uXG4gKiBsaW5lIGJyZWFrcyBpbnRvIGxpbmUgc3RhcnQgZW50cmllcy4gTGF0ZXIgd2hlbiBhIHNwZWNpZmljIHBvc2l0aW9uIGlzIHJlcXVlc3RlZCxcbiAqIHRoZSBjbG9zZXN0IGxpbmUtc3RhcnQgcG9zaXRpb24gaXMgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcG9zaXRpb24uXG4gKi9cblxuY29uc3QgTEZfQ0hBUiA9IDEwO1xuY29uc3QgQ1JfQ0hBUiA9IDEzO1xuY29uc3QgTElORV9TRVBfQ0hBUiA9IDgyMzI7XG5jb25zdCBQQVJBR1JBUEhfQ0hBUiA9IDgyMzM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZUFuZENoYXJhY3RlciB7XG4gIGNoYXJhY3RlcjogbnVtYmVyO1xuICBsaW5lOiBudW1iZXI7XG59XG5cbi8qKiBHZXRzIHRoZSBsaW5lIGFuZCBjaGFyYWN0ZXIgZm9yIHRoZSBnaXZlbiBwb3NpdGlvbiBmcm9tIHRoZSBsaW5lIHN0YXJ0cyBtYXAuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZUFuZENoYXJhY3RlckZyb21Qb3NpdGlvbihsaW5lU3RhcnRzTWFwOiBudW1iZXJbXSwgcG9zaXRpb246IG51bWJlcikge1xuICBjb25zdCBsaW5lSW5kZXggPSBmaW5kQ2xvc2VzdExpbmVTdGFydFBvc2l0aW9uKGxpbmVTdGFydHNNYXAsIHBvc2l0aW9uKTtcbiAgcmV0dXJuIHtjaGFyYWN0ZXI6IHBvc2l0aW9uIC0gbGluZVN0YXJ0c01hcFtsaW5lSW5kZXhdLCBsaW5lOiBsaW5lSW5kZXh9O1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBsaW5lIHN0YXJ0IG1hcCBvZiB0aGUgZ2l2ZW4gdGV4dC4gVGhpcyBjYW4gYmUgdXNlZCBpbiBvcmRlciB0b1xuICogcmV0cmlldmUgdGhlIGxpbmUgYW5kIGNoYXJhY3RlciBvZiBhIGdpdmVuIHRleHQgcG9zaXRpb24gaW5kZXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlTGluZVN0YXJ0c01hcCh0ZXh0OiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gIGNvbnN0IHJlc3VsdDogbnVtYmVyW10gPSBbMF07XG4gIGxldCBwb3MgPSAwO1xuICB3aGlsZSAocG9zIDwgdGV4dC5sZW5ndGgpIHtcbiAgICBjb25zdCBjaGFyID0gdGV4dC5jaGFyQ29kZUF0KHBvcysrKTtcbiAgICAvLyBIYW5kbGVzIHRoZSBcIkNSTEZcIiBsaW5lIGJyZWFrLiBJbiB0aGF0IGNhc2Ugd2UgcGVlayB0aGUgY2hhcmFjdGVyXG4gICAgLy8gYWZ0ZXIgdGhlIFwiQ1JcIiBhbmQgY2hlY2sgaWYgaXQgaXMgYSBsaW5lIGZlZWQuXG4gICAgaWYgKGNoYXIgPT09IENSX0NIQVIpIHtcbiAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQocG9zKSA9PT0gTEZfQ0hBUikge1xuICAgICAgICBwb3MrKztcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHBvcyk7XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBMRl9DSEFSIHx8IGNoYXIgPT09IExJTkVfU0VQX0NIQVIgfHwgY2hhciA9PT0gUEFSQUdSQVBIX0NIQVIpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHBvcyk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5wdXNoKHBvcyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBGaW5kcyB0aGUgY2xvc2VzdCBsaW5lIHN0YXJ0IGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24uICovXG5mdW5jdGlvbiBmaW5kQ2xvc2VzdExpbmVTdGFydFBvc2l0aW9uPFQ+KFxuICAgIGxpbmVzTWFwOiBUW10sIHBvc2l0aW9uOiBULCBsb3cgPSAwLCBoaWdoID0gbGluZXNNYXAubGVuZ3RoIC0gMSkge1xuICB3aGlsZSAobG93IDw9IGhpZ2gpIHtcbiAgICBjb25zdCBwaXZvdEluZGV4ID0gTWF0aC5mbG9vcigobG93ICsgaGlnaCkgLyAyKTtcbiAgICBjb25zdCBwaXZvdEVsID0gbGluZXNNYXBbcGl2b3RJbmRleF07XG5cbiAgICBpZiAocGl2b3RFbCA9PT0gcG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBwaXZvdEluZGV4O1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPiBwaXZvdEVsKSB7XG4gICAgICBsb3cgPSBwaXZvdEluZGV4ICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGlnaCA9IHBpdm90SW5kZXggLSAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIEluIGNhc2UgdGhlcmUgd2FzIG5vIGV4YWN0IG1hdGNoLCByZXR1cm4gdGhlIGNsb3Nlc3QgXCJsb3dlclwiIGxpbmUgaW5kZXguIFdlIGFsc29cbiAgLy8gc3VidHJhY3QgdGhlIGluZGV4IGJ5IG9uZSBiZWNhdXNlIHdhbnQgdGhlIGluZGV4IG9mIHRoZSBwcmV2aW91cyBsaW5lIHN0YXJ0LlxuICByZXR1cm4gbG93IC0gMTtcbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.parseTsconfigFile = void 0;
11
+ const ts = require("typescript");
12
+ const virtual_host_1 = require("./virtual-host");
13
+ const path_1 = require("path");
14
+ function parseTsconfigFile(tsconfigPath, fileSystem) {
15
+ const { config } = ts.readConfigFile(tsconfigPath, p => fileSystem.read(fileSystem.resolve(p)));
16
+ return ts.parseJsonConfigFileContent(config, new virtual_host_1.FileSystemHost(fileSystem), path_1.dirname(tsconfigPath), {});
17
+ }
18
+ exports.parseTsconfigFile = parseTsconfigFile;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdHNjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXBkYXRlLXRvb2wvdXRpbHMvcGFyc2UtdHNjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsaUNBQWlDO0FBRWpDLGlEQUE4QztBQUM5QywrQkFBNkI7QUFFN0IsU0FBZ0IsaUJBQWlCLENBQUMsWUFBMkIsRUFDM0IsVUFBc0I7SUFDdEQsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7SUFDbEQsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLElBQUksNkJBQWMsQ0FBQyxVQUFVLENBQUMsRUFDdkUsY0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFORCw4Q0FNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7RmlsZVN5c3RlbSwgV29ya3NwYWNlUGF0aH0gZnJvbSAnLi4vZmlsZS1zeXN0ZW0nO1xuaW1wb3J0IHtGaWxlU3lzdGVtSG9zdH0gZnJvbSAnLi92aXJ0dWFsLWhvc3QnO1xuaW1wb3J0IHtkaXJuYW1lfSBmcm9tICdwYXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHNjb25maWdGaWxlKHRzY29uZmlnUGF0aDogV29ya3NwYWNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlU3lzdGVtOiBGaWxlU3lzdGVtKTogdHMuUGFyc2VkQ29tbWFuZExpbmUge1xuICBjb25zdCB7Y29uZmlnfSA9IHRzLnJlYWRDb25maWdGaWxlKHRzY29uZmlnUGF0aCxcbiAgICAgIHAgPT4gZmlsZVN5c3RlbS5yZWFkKGZpbGVTeXN0ZW0ucmVzb2x2ZShwKSkhKTtcbiAgcmV0dXJuIHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KGNvbmZpZywgbmV3IEZpbGVTeXN0ZW1Ib3N0KGZpbGVTeXN0ZW0pLFxuICAgICAgZGlybmFtZSh0c2NvbmZpZ1BhdGgpLCB7fSk7XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.hasPropertyNameText = exports.getPropertyNameText = void 0;
11
+ const ts = require("typescript");
12
+ /**
13
+ * Gets the text of the given property name. Returns null if the property
14
+ * name couldn't be determined statically.
15
+ */
16
+ function getPropertyNameText(node) {
17
+ if (ts.isIdentifier(node) || ts.isStringLiteralLike(node)) {
18
+ return node.text;
19
+ }
20
+ return null;
21
+ }
22
+ exports.getPropertyNameText = getPropertyNameText;
23
+ /** Checks whether the given property name has a text. */
24
+ function hasPropertyNameText(node) {
25
+ return ts.isStringLiteral(node) || ts.isNumericLiteral(node) || ts.isIdentifier(node);
26
+ }
27
+ exports.hasPropertyNameText = hasPropertyNameText;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktbmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy91cGRhdGUtdG9vbC91dGlscy9wcm9wZXJ0eS1uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILGlDQUFpQztBQUtqQzs7O0dBR0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxJQUFxQjtJQUN2RCxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztLQUNsQjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUxELGtEQUtDO0FBRUQseURBQXlEO0FBQ3pELFNBQWdCLG1CQUFtQixDQUFDLElBQXFCO0lBQ3ZELE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRkQsa0RBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKiBUeXBlIHRoYXQgZGVzY3JpYmVzIGEgcHJvcGVydHkgbmFtZSB3aXRoIGFuIG9idGFpbmFibGUgdGV4dC4gKi9cbnR5cGUgUHJvcGVydHlOYW1lV2l0aFRleHQgPSBFeGNsdWRlPHRzLlByb3BlcnR5TmFtZSwgdHMuQ29tcHV0ZWRQcm9wZXJ0eU5hbWU+O1xuXG4vKipcbiAqIEdldHMgdGhlIHRleHQgb2YgdGhlIGdpdmVuIHByb3BlcnR5IG5hbWUuIFJldHVybnMgbnVsbCBpZiB0aGUgcHJvcGVydHlcbiAqIG5hbWUgY291bGRuJ3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlOYW1lVGV4dChub2RlOiB0cy5Qcm9wZXJ0eU5hbWUpOiBzdHJpbmd8bnVsbCB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZSkgfHwgdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShub2RlKSkge1xuICAgIHJldHVybiBub2RlLnRleHQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gcHJvcGVydHkgbmFtZSBoYXMgYSB0ZXh0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1Byb3BlcnR5TmFtZVRleHQobm9kZTogdHMuUHJvcGVydHlOYW1lKTogbm9kZSBpcyBQcm9wZXJ0eU5hbWVXaXRoVGV4dCB7XG4gIHJldHVybiB0cy5pc1N0cmluZ0xpdGVyYWwobm9kZSkgfHwgdHMuaXNOdW1lcmljTGl0ZXJhbChub2RlKSB8fCB0cy5pc0lkZW50aWZpZXIobm9kZSk7XG59XG4iXX0=
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createFileSystemCompilerHost = exports.FileSystemHost = void 0;
11
+ const ts = require("typescript");
12
+ /**
13
+ * Implementation of a TypeScript parse config host that relies fully on
14
+ * a given virtual file system.
15
+ */
16
+ class FileSystemHost {
17
+ constructor(_fileSystem) {
18
+ this._fileSystem = _fileSystem;
19
+ this.useCaseSensitiveFileNames = ts.sys.useCaseSensitiveFileNames;
20
+ }
21
+ fileExists(path) {
22
+ return this._fileSystem.exists(this._fileSystem.resolve(path));
23
+ }
24
+ readFile(path) {
25
+ const content = this._fileSystem.read(this._fileSystem.resolve(path));
26
+ if (content === null) {
27
+ return undefined;
28
+ }
29
+ // Strip BOM as otherwise TSC methods (e.g. "getWidth") will return an offset which
30
+ // which breaks the CLI UpdateRecorder. https://github.com/angular/angular/pull/30719
31
+ return content.replace(/^\uFEFF/, '');
32
+ }
33
+ readDirectory(rootDir, extensions, excludes, includes, depth) {
34
+ if (ts.matchFiles === undefined) {
35
+ throw Error('Unable to read directory in virtual file system host. This means that ' +
36
+ 'TypeScript changed its file matching internals.\n\nPlease consider downgrading your ' +
37
+ 'TypeScript version, and report an issue in the Angular Components repository.');
38
+ }
39
+ return ts.matchFiles(rootDir, extensions, extensions, includes, this.useCaseSensitiveFileNames, '/', depth, p => this._getFileSystemEntries(p), p => this._fileSystem.resolve(p));
40
+ }
41
+ _getFileSystemEntries(path) {
42
+ return this._fileSystem.readDirectory(this._fileSystem.resolve(path));
43
+ }
44
+ }
45
+ exports.FileSystemHost = FileSystemHost;
46
+ /**
47
+ * Creates a TypeScript compiler host that fully relies fully on the given
48
+ * virtual file system. i.e. no interactions with the working directory.
49
+ */
50
+ function createFileSystemCompilerHost(options, fileSystem) {
51
+ const host = ts.createCompilerHost(options, true);
52
+ const virtualHost = new FileSystemHost(fileSystem);
53
+ host.readFile = virtualHost.readFile.bind(virtualHost);
54
+ host.readDirectory = virtualHost.readDirectory.bind(virtualHost);
55
+ host.fileExists = virtualHost.fileExists.bind(virtualHost);
56
+ host.directoryExists = (dirPath) => fileSystem.exists(fileSystem.resolve(dirPath));
57
+ host.getCurrentDirectory = () => '/';
58
+ host.getCanonicalFileName = p => fileSystem.resolve(p);
59
+ return host;
60
+ }
61
+ exports.createFileSystemCompilerHost = createFileSystemCompilerHost;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3VwZGF0ZS10b29sL3V0aWxzL3ZpcnR1YWwtaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxpQ0FBaUM7QUF3QmpDOzs7R0FHRztBQUNILE1BQWEsY0FBYztJQUd6QixZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUYzQyw4QkFBeUIsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDO0lBRWYsQ0FBQztJQUUvQyxVQUFVLENBQUMsSUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ3BCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBQ0QsbUZBQW1GO1FBQ25GLHFGQUFxRjtRQUNyRixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxhQUFhLENBQ1QsT0FBZSxFQUFFLFVBQW9CLEVBQUUsUUFBNEIsRUFBRSxRQUFrQixFQUN2RixLQUFjO1FBQ2hCLElBQUksRUFBRSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDL0IsTUFBTSxLQUFLLENBQ1Asd0VBQXdFO2dCQUN4RSxzRkFBc0Y7Z0JBQ3RGLCtFQUErRSxDQUFDLENBQUM7U0FDdEY7UUFDRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQ2hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFDckYsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxJQUFZO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFwQ0Qsd0NBb0NDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQ3hDLE9BQTJCLEVBQUUsVUFBc0I7SUFDckQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBYkQsb0VBYUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge0ZpbGVTeXN0ZW19IGZyb20gJy4uL2ZpbGUtc3lzdGVtJztcblxuLy8gV2UgdXNlIFR5cGVTY3JpcHQncyBuYXRpdmUgYHRzLm1hdGNoRmlsZXNgIHV0aWxpdHkgZm9yIHRoZSB2aXJ0dWFsIGZpbGUgc3lzdGVtXG4vLyBob3N0cywgYXMgdGhhdCBmdW5jdGlvbiBpbXBsZW1lbnRzIGNvbXBsZXggbG9naWMgZm9yIG1hdGNoaW5nIGZpbGVzIHdpdGggcmVzcGVjdFxuLy8gdG8gcm9vdCBkaXJlY3RvcnksIGV4dGVuc2lvbnMsIGV4Y2x1ZGVzLCBpbmNsdWRlcyBldGMuIFRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHlcbi8vIGludGVybmFsIGJ1dCB3ZSBjYW4gdXNlIGl0IGFzIHRoZSBBUEkgbW9zdCBsaWtlbHkgd2lsbCBub3QgY2hhbmdlIGFueSB0aW1lIHNvb24sXG4vLyBub3IgZG9lcyBpdCBzZWVtIGxpa2UgdGhpcyBpcyBiZWluZyBtYWRlIHB1YmxpYyBhbnkgdGltZSBzb29uLlxuLy8gUmVsYXRlZCBpc3N1ZSBmb3IgdHJhY2tpbmc6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMTM3OTMuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9iMzk3ZDFmZDRhYmQwZWRlZjg1YWRmMGFmZDkxYzAzMGJiMGI0OTU1L3NyYy9jb21waWxlci91dGlsaXRpZXMudHMjTDYxOTJcbmRlY2xhcmUgbW9kdWxlICd0eXBlc2NyaXB0JyB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgRmlsZVN5c3RlbUVudHJpZXMge1xuICAgIHJlYWRvbmx5IGZpbGVzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgICByZWFkb25seSBkaXJlY3RvcmllczogcmVhZG9ubHkgc3RyaW5nW107XG4gIH1cblxuICBleHBvcnQgY29uc3QgbWF0Y2hGaWxlczogdW5kZWZpbmVkfFxuICAgICAgKChwYXRoOiBzdHJpbmcsIGV4dGVuc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdfHVuZGVmaW5lZCxcbiAgICAgICAgZXhjbHVkZXM6IHJlYWRvbmx5IHN0cmluZ1tdfHVuZGVmaW5lZCwgaW5jbHVkZXM6IHJlYWRvbmx5IHN0cmluZ1tdfHVuZGVmaW5lZCxcbiAgICAgICAgdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczogYm9vbGVhbiwgY3VycmVudERpcmVjdG9yeTogc3RyaW5nLCBkZXB0aDogbnVtYmVyfHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0RmlsZVN5c3RlbUVudHJpZXM6IChwYXRoOiBzdHJpbmcpID0+IEZpbGVTeXN0ZW1FbnRyaWVzLFxuICAgICAgICByZWFscGF0aDogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nKSA9PiBzdHJpbmdbXSk7XG59XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgYSBUeXBlU2NyaXB0IHBhcnNlIGNvbmZpZyBob3N0IHRoYXQgcmVsaWVzIGZ1bGx5IG9uXG4gKiBhIGdpdmVuIHZpcnR1YWwgZmlsZSBzeXN0ZW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWxlU3lzdGVtSG9zdCBpbXBsZW1lbnRzIHRzLlBhcnNlQ29uZmlnSG9zdCB7XG4gIHVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMgPSB0cy5zeXMudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9maWxlU3lzdGVtOiBGaWxlU3lzdGVtKSB7fVxuXG4gIGZpbGVFeGlzdHMocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVTeXN0ZW0uZXhpc3RzKHRoaXMuX2ZpbGVTeXN0ZW0ucmVzb2x2ZShwYXRoKSk7XG4gIH1cblxuICByZWFkRmlsZShwYXRoOiBzdHJpbmcpOiBzdHJpbmd8dW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5fZmlsZVN5c3RlbS5yZWFkKHRoaXMuX2ZpbGVTeXN0ZW0ucmVzb2x2ZShwYXRoKSk7XG4gICAgaWYgKGNvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIFN0cmlwIEJPTSBhcyBvdGhlcndpc2UgVFNDIG1ldGhvZHMgKGUuZy4gXCJnZXRXaWR0aFwiKSB3aWxsIHJldHVybiBhbiBvZmZzZXQgd2hpY2hcbiAgICAvLyB3aGljaCBicmVha3MgdGhlIENMSSBVcGRhdGVSZWNvcmRlci4gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9wdWxsLzMwNzE5XG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSgvXlxcdUZFRkYvLCAnJyk7XG4gIH1cblxuICByZWFkRGlyZWN0b3J5KFxuICAgICAgcm9vdERpcjogc3RyaW5nLCBleHRlbnNpb25zOiBzdHJpbmdbXSwgZXhjbHVkZXM6IHN0cmluZ1tdfHVuZGVmaW5lZCwgaW5jbHVkZXM6IHN0cmluZ1tdLFxuICAgICAgZGVwdGg/OiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRzLm1hdGNoRmlsZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgJ1VuYWJsZSB0byByZWFkIGRpcmVjdG9yeSBpbiB2aXJ0dWFsIGZpbGUgc3lzdGVtIGhvc3QuIFRoaXMgbWVhbnMgdGhhdCAnICtcbiAgICAgICAgICAnVHlwZVNjcmlwdCBjaGFuZ2VkIGl0cyBmaWxlIG1hdGNoaW5nIGludGVybmFscy5cXG5cXG5QbGVhc2UgY29uc2lkZXIgZG93bmdyYWRpbmcgeW91ciAnICtcbiAgICAgICAgICAnVHlwZVNjcmlwdCB2ZXJzaW9uLCBhbmQgcmVwb3J0IGFuIGlzc3VlIGluIHRoZSBBbmd1bGFyIENvbXBvbmVudHMgcmVwb3NpdG9yeS4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRzLm1hdGNoRmlsZXMoXG4gICAgICAgIHJvb3REaXIsIGV4dGVuc2lvbnMsIGV4dGVuc2lvbnMsIGluY2x1ZGVzLCB0aGlzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMsICcvJywgZGVwdGgsXG4gICAgICAgIHAgPT4gdGhpcy5fZ2V0RmlsZVN5c3RlbUVudHJpZXMocCksIHAgPT4gdGhpcy5fZmlsZVN5c3RlbS5yZXNvbHZlKHApKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEZpbGVTeXN0ZW1FbnRyaWVzKHBhdGg6IHN0cmluZyk6IHRzLkZpbGVTeXN0ZW1FbnRyaWVzIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZVN5c3RlbS5yZWFkRGlyZWN0b3J5KHRoaXMuX2ZpbGVTeXN0ZW0ucmVzb2x2ZShwYXRoKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgVHlwZVNjcmlwdCBjb21waWxlciBob3N0IHRoYXQgZnVsbHkgcmVsaWVzIGZ1bGx5IG9uIHRoZSBnaXZlblxuICogdmlydHVhbCBmaWxlIHN5c3RlbS4gaS5lLiBubyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWxlU3lzdGVtQ29tcGlsZXJIb3N0KFxuICAgIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucywgZmlsZVN5c3RlbTogRmlsZVN5c3RlbSk6IHRzLkNvbXBpbGVySG9zdCB7XG4gIGNvbnN0IGhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3Qob3B0aW9ucywgdHJ1ZSk7XG4gIGNvbnN0IHZpcnR1YWxIb3N0ID0gbmV3IEZpbGVTeXN0ZW1Ib3N0KGZpbGVTeXN0ZW0pO1xuXG4gIGhvc3QucmVhZEZpbGUgPSB2aXJ0dWFsSG9zdC5yZWFkRmlsZS5iaW5kKHZpcnR1YWxIb3N0KTtcbiAgaG9zdC5yZWFkRGlyZWN0b3J5ID0gdmlydHVhbEhvc3QucmVhZERpcmVjdG9yeS5iaW5kKHZpcnR1YWxIb3N0KTtcbiAgaG9zdC5maWxlRXhpc3RzID0gdmlydHVhbEhvc3QuZmlsZUV4aXN0cy5iaW5kKHZpcnR1YWxIb3N0KTtcbiAgaG9zdC5kaXJlY3RvcnlFeGlzdHMgPSAoZGlyUGF0aCkgPT4gZmlsZVN5c3RlbS5leGlzdHMoZmlsZVN5c3RlbS5yZXNvbHZlKGRpclBhdGgpKTtcbiAgaG9zdC5nZXRDdXJyZW50RGlyZWN0b3J5ID0gKCkgPT4gJy8nO1xuICBob3N0LmdldENhbm9uaWNhbEZpbGVOYW1lID0gcCA9PiBmaWxlU3lzdGVtLnJlc29sdmUocCk7XG5cbiAgcmV0dXJuIGhvc3Q7XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getAllChanges = exports.getChangesForTarget = void 0;
11
+ const target_version_1 = require("./target-version");
12
+ /**
13
+ * Gets the changes for a given target version from the specified version changes object.
14
+ *
15
+ * For readability and a good overview of breaking changes, the version change data always
16
+ * includes the related Pull Request link. Since this data is not needed when performing the
17
+ * upgrade, this unused data can be removed and the changes data can be flattened into an
18
+ * easy iterable array.
19
+ */
20
+ function getChangesForTarget(target, data) {
21
+ if (!data) {
22
+ const version = target_version_1.TargetVersion[target];
23
+ throw new Error(`No data could be found for target version: ${version}`);
24
+ }
25
+ return (data[target] || []).reduce((result, prData) => result.concat(prData.changes), []);
26
+ }
27
+ exports.getChangesForTarget = getChangesForTarget;
28
+ /**
29
+ * Gets all changes from the specified version changes object. This is helpful in case a migration
30
+ * rule does not distinguish data based on the target version, but for readability the
31
+ * upgrade data is separated for each target version.
32
+ */
33
+ function getAllChanges(data) {
34
+ return Object.keys(data)
35
+ .map(targetVersion => getChangesForTarget(targetVersion, data))
36
+ .reduce((result, versionData) => result.concat(versionData), []);
37
+ }
38
+ exports.getAllChanges = getAllChanges;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1jaGFuZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3VwZGF0ZS10b29sL3ZlcnNpb24tY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxxREFBK0M7QUFhL0M7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLG1CQUFtQixDQUFJLE1BQXFCLEVBQUUsSUFBdUI7SUFDbkYsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE1BQU0sT0FBTyxHQUFJLDhCQUF3QyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDMUU7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFQRCxrREFPQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUksSUFBdUI7SUFDdEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNuQixHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxhQUE4QixFQUFFLElBQUksQ0FBQyxDQUFDO1NBQy9FLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUpELHNDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7VGFyZ2V0VmVyc2lvbn0gZnJvbSAnLi90YXJnZXQtdmVyc2lvbic7XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25DaGFuZ2VzPFQ+ID0ge1xuICBbdGFyZ2V0IGluIFRhcmdldFZlcnNpb25dPzogUmVhZGFibGVDaGFuZ2U8VD5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlYWRhYmxlQ2hhbmdlPFQ+ID0ge1xuICBwcjogc3RyaW5nOyBjaGFuZ2VzOiBUW11cbn07XG5cbi8qKiBDb25kaXRpb25hbCB0eXBlIHRoYXQgdW53cmFwcyB0aGUgdmFsdWUgb2YgYSB2ZXJzaW9uIGNoYW5nZXMgdHlwZS4gKi9cbmV4cG9ydCB0eXBlIFZhbHVlT2ZDaGFuZ2VzPFQ+ID0gVCBleHRlbmRzIFZlcnNpb25DaGFuZ2VzPGluZmVyIFg+PyBYIDogbnVsbDtcblxuLyoqXG4gKiBHZXRzIHRoZSBjaGFuZ2VzIGZvciBhIGdpdmVuIHRhcmdldCB2ZXJzaW9uIGZyb20gdGhlIHNwZWNpZmllZCB2ZXJzaW9uIGNoYW5nZXMgb2JqZWN0LlxuICpcbiAqIEZvciByZWFkYWJpbGl0eSBhbmQgYSBnb29kIG92ZXJ2aWV3IG9mIGJyZWFraW5nIGNoYW5nZXMsIHRoZSB2ZXJzaW9uIGNoYW5nZSBkYXRhIGFsd2F5c1xuICogaW5jbHVkZXMgdGhlIHJlbGF0ZWQgUHVsbCBSZXF1ZXN0IGxpbmsuIFNpbmNlIHRoaXMgZGF0YSBpcyBub3QgbmVlZGVkIHdoZW4gcGVyZm9ybWluZyB0aGVcbiAqIHVwZ3JhZGUsIHRoaXMgdW51c2VkIGRhdGEgY2FuIGJlIHJlbW92ZWQgYW5kIHRoZSBjaGFuZ2VzIGRhdGEgY2FuIGJlIGZsYXR0ZW5lZCBpbnRvIGFuXG4gKiBlYXN5IGl0ZXJhYmxlIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlc0ZvclRhcmdldDxUPih0YXJnZXQ6IFRhcmdldFZlcnNpb24sIGRhdGE6IFZlcnNpb25DaGFuZ2VzPFQ+KTogVFtdIHtcbiAgaWYgKCFkYXRhKSB7XG4gICAgY29uc3QgdmVyc2lvbiA9IChUYXJnZXRWZXJzaW9uIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pW3RhcmdldF07XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBkYXRhIGNvdWxkIGJlIGZvdW5kIGZvciB0YXJnZXQgdmVyc2lvbjogJHt2ZXJzaW9ufWApO1xuICB9XG5cbiAgcmV0dXJuIChkYXRhW3RhcmdldF0gfHwgW10pLnJlZHVjZSgocmVzdWx0LCBwckRhdGEpID0+IHJlc3VsdC5jb25jYXQocHJEYXRhLmNoYW5nZXMpLCBbXSBhcyBUW10pO1xufVxuXG4vKipcbiAqIEdldHMgYWxsIGNoYW5nZXMgZnJvbSB0aGUgc3BlY2lmaWVkIHZlcnNpb24gY2hhbmdlcyBvYmplY3QuIFRoaXMgaXMgaGVscGZ1bCBpbiBjYXNlIGEgbWlncmF0aW9uXG4gKiBydWxlIGRvZXMgbm90IGRpc3Rpbmd1aXNoIGRhdGEgYmFzZWQgb24gdGhlIHRhcmdldCB2ZXJzaW9uLCBidXQgZm9yIHJlYWRhYmlsaXR5IHRoZVxuICogdXBncmFkZSBkYXRhIGlzIHNlcGFyYXRlZCBmb3IgZWFjaCB0YXJnZXQgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoYW5nZXM8VD4oZGF0YTogVmVyc2lvbkNoYW5nZXM8VD4pOiBUW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGF0YSlcbiAgICAgIC5tYXAodGFyZ2V0VmVyc2lvbiA9PiBnZXRDaGFuZ2VzRm9yVGFyZ2V0KHRhcmdldFZlcnNpb24gYXMgVGFyZ2V0VmVyc2lvbiwgZGF0YSkpXG4gICAgICAucmVkdWNlKChyZXN1bHQsIHZlcnNpb25EYXRhKSA9PiByZXN1bHQuY29uY2F0KHZlcnNpb25EYXRhKSwgW10pO1xufVxuIl19