@angular/compiler-cli 9.0.0-rc.9 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/ngcc/src/analysis/decoration_analyzer.d.ts +9 -23
  2. package/ngcc/src/analysis/decoration_analyzer.js +82 -144
  3. package/ngcc/src/analysis/migration_host.d.ts +5 -16
  4. package/ngcc/src/analysis/migration_host.js +20 -91
  5. package/ngcc/src/analysis/module_with_providers_analyzer.js +2 -2
  6. package/ngcc/src/analysis/ngcc_trait_compiler.d.ts +42 -0
  7. package/ngcc/src/analysis/ngcc_trait_compiler.js +107 -0
  8. package/ngcc/src/analysis/types.d.ts +6 -20
  9. package/ngcc/src/analysis/types.js +1 -1
  10. package/ngcc/src/analysis/util.d.ts +0 -5
  11. package/ngcc/src/analysis/util.js +2 -116
  12. package/ngcc/src/dependencies/dts_dependency_host.d.ts +5 -1
  13. package/ngcc/src/dependencies/dts_dependency_host.js +9 -2
  14. package/ngcc/src/dependencies/esm_dependency_host.d.ts +7 -0
  15. package/ngcc/src/dependencies/esm_dependency_host.js +29 -21
  16. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.d.ts +2 -0
  17. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +49 -9
  18. package/ngcc/src/execution/cluster/executor.d.ts +3 -1
  19. package/ngcc/src/execution/cluster/executor.js +11 -6
  20. package/ngcc/src/execution/cluster/package_json_updater.js +3 -2
  21. package/ngcc/src/execution/lock_file.d.ts +43 -0
  22. package/ngcc/src/execution/lock_file.js +129 -0
  23. package/ngcc/src/execution/single_process_executor.d.ts +3 -1
  24. package/ngcc/src/execution/single_process_executor.js +18 -15
  25. package/ngcc/src/host/commonjs_host.js +5 -4
  26. package/ngcc/src/host/esm2015_host.d.ts +3 -1
  27. package/ngcc/src/host/esm2015_host.js +40 -9
  28. package/ngcc/src/host/esm5_host.js +3 -1
  29. package/ngcc/src/host/umd_host.js +5 -4
  30. package/ngcc/src/main.js +62 -122
  31. package/ngcc/src/migrations/migration.d.ts +1 -0
  32. package/ngcc/src/migrations/migration.js +1 -1
  33. package/ngcc/src/packages/build_marker.d.ts +17 -8
  34. package/ngcc/src/packages/build_marker.js +61 -32
  35. package/ngcc/src/packages/entry_point_bundle.js +2 -2
  36. package/ngcc/src/rendering/dts_renderer.js +7 -4
  37. package/ngcc/src/rendering/renderer.js +4 -4
  38. package/ngcc/src/writing/cleaning/cleaning_strategies.d.ts +45 -0
  39. package/ngcc/src/writing/cleaning/cleaning_strategies.js +77 -0
  40. package/ngcc/src/writing/cleaning/package_cleaner.d.ts +39 -0
  41. package/ngcc/src/writing/cleaning/package_cleaner.js +125 -0
  42. package/ngcc/src/writing/cleaning/utils.d.ts +16 -0
  43. package/ngcc/src/writing/cleaning/utils.js +29 -0
  44. package/ngcc/src/writing/in_place_file_writer.d.ts +1 -0
  45. package/ngcc/src/writing/in_place_file_writer.js +3 -2
  46. package/ngcc/src/writing/new_entry_point_file_writer.d.ts +2 -0
  47. package/ngcc/src/writing/new_entry_point_file_writer.js +5 -4
  48. package/ngcc/src/writing/package_json_updater.d.ts +24 -10
  49. package/ngcc/src/writing/package_json_updater.js +53 -10
  50. package/package.json +5 -4
  51. package/src/ngtsc/annotations/src/component.d.ts +1 -1
  52. package/src/ngtsc/annotations/src/component.js +4 -3
  53. package/src/ngtsc/annotations/src/directive.js +4 -3
  54. package/src/ngtsc/annotations/src/injectable.js +2 -1
  55. package/src/ngtsc/annotations/src/ng_module.js +2 -1
  56. package/src/ngtsc/annotations/src/pipe.js +2 -1
  57. package/src/ngtsc/annotations/src/util.js +3 -3
  58. package/src/ngtsc/core/api.d.ts +368 -0
  59. package/src/ngtsc/core/api.js +20 -0
  60. package/src/ngtsc/core/index.d.ts +10 -0
  61. package/src/ngtsc/core/index.js +24 -0
  62. package/src/ngtsc/core/src/compiler.d.ts +120 -0
  63. package/src/ngtsc/core/src/compiler.js +769 -0
  64. package/src/ngtsc/core/src/host.d.ts +85 -0
  65. package/src/ngtsc/core/src/host.js +208 -0
  66. package/src/ngtsc/diagnostics/index.d.ts +1 -1
  67. package/src/ngtsc/diagnostics/index.js +5 -5
  68. package/src/ngtsc/diagnostics/src/error.d.ts +1 -1
  69. package/src/ngtsc/diagnostics/src/error.js +1 -1
  70. package/src/ngtsc/diagnostics/src/{code.d.ts → error_code.d.ts} +4 -6
  71. package/src/ngtsc/diagnostics/src/error_code.js +128 -0
  72. package/src/ngtsc/file_system/src/cached_file_system.d.ts +3 -1
  73. package/src/ngtsc/file_system/src/cached_file_system.js +48 -4
  74. package/src/ngtsc/file_system/src/invalid_file_system.d.ts +3 -1
  75. package/src/ngtsc/file_system/src/invalid_file_system.js +4 -2
  76. package/src/ngtsc/file_system/src/node_js_file_system.d.ts +3 -1
  77. package/src/ngtsc/file_system/src/node_js_file_system.js +8 -4
  78. package/src/ngtsc/file_system/src/types.d.ts +3 -1
  79. package/src/ngtsc/file_system/src/types.js +1 -1
  80. package/src/ngtsc/imports/index.d.ts +3 -3
  81. package/src/ngtsc/imports/index.js +4 -4
  82. package/src/ngtsc/imports/src/alias.d.ts +12 -11
  83. package/src/ngtsc/imports/src/alias.js +21 -16
  84. package/src/ngtsc/imports/src/emitter.d.ts +37 -16
  85. package/src/ngtsc/imports/src/emitter.js +51 -18
  86. package/src/ngtsc/imports/src/references.d.ts +0 -4
  87. package/src/ngtsc/imports/src/references.js +1 -6
  88. package/src/ngtsc/incremental/api.d.ts +2 -1
  89. package/src/ngtsc/incremental/api.js +1 -1
  90. package/src/ngtsc/incremental/src/dependency_tracking.d.ts +4 -3
  91. package/src/ngtsc/incremental/src/dependency_tracking.js +2 -2
  92. package/src/ngtsc/incremental/src/state.js +33 -13
  93. package/src/ngtsc/indexer/index.d.ts +1 -0
  94. package/src/ngtsc/indexer/index.js +4 -2
  95. package/src/ngtsc/modulewithproviders/src/scanner.js +2 -2
  96. package/src/ngtsc/partial_evaluator/src/builtin.d.ts +7 -6
  97. package/src/ngtsc/partial_evaluator/src/builtin.js +54 -9
  98. package/src/ngtsc/partial_evaluator/src/interpreter.js +9 -5
  99. package/src/ngtsc/partial_evaluator/src/known_declaration.d.ts +19 -0
  100. package/src/ngtsc/partial_evaluator/src/known_declaration.js +38 -0
  101. package/src/ngtsc/partial_evaluator/src/result.d.ts +1 -1
  102. package/src/ngtsc/partial_evaluator/src/result.js +1 -1
  103. package/src/ngtsc/partial_evaluator/src/ts_helpers.d.ts +1 -1
  104. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +13 -3
  105. package/src/ngtsc/program.d.ts +46 -64
  106. package/src/ngtsc/program.js +76 -724
  107. package/src/ngtsc/reflection/src/host.d.ts +19 -2
  108. package/src/ngtsc/reflection/src/host.js +17 -3
  109. package/src/ngtsc/reflection/src/typescript.js +4 -4
  110. package/src/ngtsc/resource/index.d.ts +9 -0
  111. package/src/ngtsc/resource/index.js +22 -0
  112. package/src/ngtsc/{resource_loader.d.ts → resource/src/loader.d.ts} +4 -4
  113. package/src/ngtsc/resource/src/loader.js +193 -0
  114. package/src/ngtsc/shims/index.d.ts +1 -1
  115. package/src/ngtsc/shims/index.js +2 -5
  116. package/src/ngtsc/shims/src/api.d.ts +25 -0
  117. package/src/ngtsc/shims/src/api.js +13 -0
  118. package/src/ngtsc/shims/src/factory_generator.d.ts +1 -1
  119. package/src/ngtsc/shims/src/factory_generator.js +1 -1
  120. package/src/ngtsc/shims/src/summary_generator.d.ts +1 -1
  121. package/src/ngtsc/shims/src/summary_generator.js +1 -1
  122. package/src/ngtsc/shims/src/typecheck_shim.d.ts +1 -1
  123. package/src/ngtsc/shims/src/typecheck_shim.js +1 -1
  124. package/src/ngtsc/transform/index.d.ts +2 -0
  125. package/src/ngtsc/transform/index.js +7 -2
  126. package/src/ngtsc/transform/src/alias.d.ts +1 -1
  127. package/src/ngtsc/transform/src/alias.js +1 -1
  128. package/src/ngtsc/transform/src/api.d.ts +16 -0
  129. package/src/ngtsc/transform/src/api.js +1 -1
  130. package/src/ngtsc/transform/src/compilation.d.ts +8 -6
  131. package/src/ngtsc/transform/src/compilation.js +47 -20
  132. package/src/ngtsc/transform/src/declaration.d.ts +1 -1
  133. package/src/ngtsc/transform/src/declaration.js +1 -1
  134. package/src/ngtsc/typecheck/index.d.ts +1 -0
  135. package/src/ngtsc/typecheck/index.js +4 -2
  136. package/src/ngtsc/typecheck/src/api.d.ts +8 -0
  137. package/src/ngtsc/typecheck/src/api.js +1 -1
  138. package/src/ngtsc/typecheck/src/diagnostics.d.ts +13 -3
  139. package/src/ngtsc/typecheck/src/diagnostics.js +14 -5
  140. package/src/ngtsc/typecheck/src/dom.js +3 -3
  141. package/src/ngtsc/typecheck/src/environment.js +7 -3
  142. package/src/ngtsc/typecheck/src/host.d.ts +1 -0
  143. package/src/ngtsc/typecheck/src/host.js +4 -1
  144. package/src/ngtsc/typecheck/src/oob.js +4 -4
  145. package/src/ngtsc/typecheck/src/ts_util.js +36 -1
  146. package/src/ngtsc/typecheck/src/type_check_block.js +31 -18
  147. package/src/ngtsc/util/src/typescript.d.ts +2 -0
  148. package/src/ngtsc/util/src/typescript.js +12 -4
  149. package/src/perform_watch.js +6 -5
  150. package/src/transformers/api.d.ts +3 -206
  151. package/src/transformers/api.js +1 -1
  152. package/src/transformers/compiler_host.js +2 -2
  153. package/src/transformers/program.js +1 -1
  154. package/src/version.js +1 -1
  155. package/src/ngtsc/diagnostics/src/code.js +0 -126
  156. package/src/ngtsc/resource_loader.js +0 -193
  157. package/src/ngtsc/shims/src/host.d.ts +0 -46
  158. package/src/ngtsc/shims/src/host.js +0 -82
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@angular/compiler-cli/ngcc/src/analysis/migration_host", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/ngtsc/diagnostics", "@angular/compiler-cli/ngcc/src/analysis/util"], factory);
7
+ define("@angular/compiler-cli/ngcc/src/analysis/migration_host", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/ngtsc/transform", "@angular/compiler-cli/ngcc/src/analysis/util"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -18,64 +18,41 @@
18
18
  * found in the LICENSE file at https://angular.io/license
19
19
  */
20
20
  var ts = require("typescript");
21
- var diagnostics_1 = require("@angular/compiler-cli/src/ngtsc/diagnostics");
21
+ var transform_1 = require("@angular/compiler-cli/src/ngtsc/transform");
22
22
  var util_1 = require("@angular/compiler-cli/ngcc/src/analysis/util");
23
23
  /**
24
- * The standard implementation of `MigrationHost`, which is created by the
25
- * `DecorationAnalyzer`.
24
+ * The standard implementation of `MigrationHost`, which is created by the `DecorationAnalyzer`.
26
25
  */
27
26
  var DefaultMigrationHost = /** @class */ (function () {
28
- function DefaultMigrationHost(reflectionHost, metadata, evaluator, handlers, entryPointPath, analyzedFiles, diagnosticHandler) {
27
+ function DefaultMigrationHost(reflectionHost, metadata, evaluator, compiler, entryPointPath) {
29
28
  this.reflectionHost = reflectionHost;
30
29
  this.metadata = metadata;
31
30
  this.evaluator = evaluator;
32
- this.handlers = handlers;
31
+ this.compiler = compiler;
33
32
  this.entryPointPath = entryPointPath;
34
- this.analyzedFiles = analyzedFiles;
35
- this.diagnosticHandler = diagnosticHandler;
36
33
  }
37
34
  DefaultMigrationHost.prototype.injectSyntheticDecorator = function (clazz, decorator, flags) {
38
35
  var e_1, _a;
39
- var classSymbol = this.reflectionHost.getClassSymbol(clazz);
40
- var newAnalyzedClass = util_1.analyzeDecorators(classSymbol, [decorator], this.handlers, flags);
41
- if (newAnalyzedClass === null) {
42
- return;
43
- }
44
- if (newAnalyzedClass.diagnostics !== undefined) {
45
- try {
46
- for (var _b = tslib_1.__values(newAnalyzedClass.diagnostics), _c = _b.next(); !_c.done; _c = _b.next()) {
47
- var diagnostic = _c.value;
48
- this.diagnosticHandler(createMigrationDiagnostic(diagnostic, clazz, decorator));
49
- }
50
- }
51
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
52
- finally {
53
- try {
54
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
36
+ var migratedTraits = this.compiler.injectSyntheticDecorator(clazz, decorator, flags);
37
+ try {
38
+ for (var migratedTraits_1 = tslib_1.__values(migratedTraits), migratedTraits_1_1 = migratedTraits_1.next(); !migratedTraits_1_1.done; migratedTraits_1_1 = migratedTraits_1.next()) {
39
+ var trait = migratedTraits_1_1.value;
40
+ if (trait.state === transform_1.TraitState.ERRORED) {
41
+ trait.diagnostics =
42
+ trait.diagnostics.map(function (diag) { return createMigrationDiagnostic(diag, clazz, decorator); });
55
43
  }
56
- finally { if (e_1) throw e_1.error; }
57
44
  }
58
45
  }
59
- var analyzedFile = getOrCreateAnalyzedFile(this.analyzedFiles, clazz.getSourceFile());
60
- var oldAnalyzedClass = analyzedFile.analyzedClasses.find(function (c) { return c.declaration === clazz; });
61
- if (oldAnalyzedClass === undefined) {
62
- analyzedFile.analyzedClasses.push(newAnalyzedClass);
63
- }
64
- else {
65
- mergeAnalyzedClasses(oldAnalyzedClass, newAnalyzedClass);
46
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
47
+ finally {
48
+ try {
49
+ if (migratedTraits_1_1 && !migratedTraits_1_1.done && (_a = migratedTraits_1.return)) _a.call(migratedTraits_1);
50
+ }
51
+ finally { if (e_1) throw e_1.error; }
66
52
  }
67
53
  };
68
54
  DefaultMigrationHost.prototype.getAllDecorators = function (clazz) {
69
- var sourceFile = clazz.getSourceFile();
70
- var analyzedFile = this.analyzedFiles.find(function (file) { return file.sourceFile === sourceFile; });
71
- if (analyzedFile === undefined) {
72
- return null;
73
- }
74
- var analyzedClass = analyzedFile.analyzedClasses.find(function (c) { return c.declaration === clazz; });
75
- if (analyzedClass === undefined) {
76
- return null;
77
- }
78
- return analyzedClass.decorators;
55
+ return this.compiler.getAllDecorators(clazz);
79
56
  };
80
57
  DefaultMigrationHost.prototype.isInScope = function (clazz) {
81
58
  return util_1.isWithinPackage(this.entryPointPath, clazz.getSourceFile());
@@ -83,54 +60,6 @@
83
60
  return DefaultMigrationHost;
84
61
  }());
85
62
  exports.DefaultMigrationHost = DefaultMigrationHost;
86
- function getOrCreateAnalyzedFile(analyzedFiles, sourceFile) {
87
- var analyzedFile = analyzedFiles.find(function (file) { return file.sourceFile === sourceFile; });
88
- if (analyzedFile !== undefined) {
89
- return analyzedFile;
90
- }
91
- else {
92
- var newAnalyzedFile = { sourceFile: sourceFile, analyzedClasses: [] };
93
- analyzedFiles.push(newAnalyzedFile);
94
- return newAnalyzedFile;
95
- }
96
- }
97
- function mergeAnalyzedClasses(oldClass, newClass) {
98
- var e_2, _a, _b, _c;
99
- if (newClass.decorators !== null) {
100
- if (oldClass.decorators === null) {
101
- oldClass.decorators = newClass.decorators;
102
- }
103
- else {
104
- var _loop_1 = function (newDecorator) {
105
- if (oldClass.decorators.some(function (d) { return d.name === newDecorator.name; })) {
106
- throw new diagnostics_1.FatalDiagnosticError(diagnostics_1.ErrorCode.NGCC_MIGRATION_DECORATOR_INJECTION_ERROR, newClass.declaration, "Attempted to inject \"" + newDecorator.name + "\" decorator over a pre-existing decorator with the same name on the \"" + newClass.name + "\" class.");
107
- }
108
- };
109
- try {
110
- for (var _d = tslib_1.__values(newClass.decorators), _e = _d.next(); !_e.done; _e = _d.next()) {
111
- var newDecorator = _e.value;
112
- _loop_1(newDecorator);
113
- }
114
- }
115
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
116
- finally {
117
- try {
118
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
119
- }
120
- finally { if (e_2) throw e_2.error; }
121
- }
122
- (_b = oldClass.decorators).push.apply(_b, tslib_1.__spread(newClass.decorators));
123
- }
124
- }
125
- if (newClass.diagnostics !== undefined) {
126
- if (oldClass.diagnostics === undefined) {
127
- oldClass.diagnostics = newClass.diagnostics;
128
- }
129
- else {
130
- (_c = oldClass.diagnostics).push.apply(_c, tslib_1.__spread(newClass.diagnostics));
131
- }
132
- }
133
- }
134
63
  /**
135
64
  * Creates a diagnostic from another one, containing additional information about the synthetic
136
65
  * decorator.
@@ -170,4 +99,4 @@
170
99
  return clone;
171
100
  }
172
101
  });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uX2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvYW5hbHlzaXMvbWlncmF0aW9uX2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsK0JBQWlDO0lBRWpDLDJFQUErRTtJQVUvRSxxRUFBMEQ7SUFFMUQ7OztPQUdHO0lBQ0g7UUFDRSw4QkFDYSxjQUFrQyxFQUFXLFFBQXdCLEVBQ3JFLFNBQTJCLEVBQzVCLFFBQXVELEVBQ3ZELGNBQThCLEVBQVUsYUFBNkIsRUFDckUsaUJBQWlEO1lBSmhELG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtZQUFXLGFBQVEsR0FBUixRQUFRLENBQWdCO1lBQ3JFLGNBQVMsR0FBVCxTQUFTLENBQWtCO1lBQzVCLGFBQVEsR0FBUixRQUFRLENBQStDO1lBQ3ZELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtZQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtZQUNyRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWdDO1FBQUcsQ0FBQztRQUVqRSx1REFBd0IsR0FBeEIsVUFBeUIsS0FBdUIsRUFBRSxTQUFvQixFQUFFLEtBQW9COztZQUUxRixJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUcsQ0FBQztZQUNoRSxJQUFNLGdCQUFnQixHQUFHLHdCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0YsSUFBSSxnQkFBZ0IsS0FBSyxJQUFJLEVBQUU7Z0JBQzdCLE9BQU87YUFDUjtZQUVELElBQUksZ0JBQWdCLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTs7b0JBQzlDLEtBQXlCLElBQUEsS0FBQSxpQkFBQSxnQkFBZ0Is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R0FBRyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFiLENBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRSxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNULFdBQVcsRUFBRSxNQUFJLFNBQVMsQ0FBQyxJQUFJLFNBQUksSUFBSSxNQUFHO2dCQUMxQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU87Z0JBQ3ZDLElBQUksRUFBRSxDQUFDO2FBQ1IsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLE9BQU8sS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7WUFDekMsS0FBSyxDQUFDLFdBQVcsR0FBRztnQkFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQzdCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsSUFBSSxFQUFFLEtBQUs7YUFDWixDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUN4QyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsQ0FBQSxLQUFBLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFBLENBQUMsSUFBSSw0QkFBSSxLQUFLLEdBQUU7YUFDdkM7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0Vycm9yQ29kZSwgRmF0YWxEaWFnbm9zdGljRXJyb3J9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9kaWFnbm9zdGljcyc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRofSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtNZXRhZGF0YVJlYWRlcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL21ldGFkYXRhJztcbmltcG9ydCB7UGFydGlhbEV2YWx1YXRvcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3BhcnRpYWxfZXZhbHVhdG9yJztcbmltcG9ydCB7Q2xhc3NEZWNsYXJhdGlvbiwgRGVjb3JhdG9yfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvcmVmbGVjdGlvbic7XG5pbXBvcnQge0RlY29yYXRvckhhbmRsZXIsIEhhbmRsZXJGbGFnc30gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3RyYW5zZm9ybSc7XG5pbXBvcnQge05nY2NSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vaG9zdC9uZ2NjX2hvc3QnO1xuaW1wb3J0IHtNaWdyYXRpb25Ib3N0fSBmcm9tICcuLi9taWdyYXRpb25zL21pZ3JhdGlvbic7XG5cbmltcG9ydCB7QW5hbHl6ZWRDbGFzcywgQW5hbHl6ZWRGaWxlfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7YW5hbHl6ZURlY29yYXRvcnMsIGlzV2l0aGluUGFja2FnZX0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUaGUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24gb2YgYE1pZ3JhdGlvbkhvc3RgLCB3aGljaCBpcyBjcmVhdGVkIGJ5IHRoZVxuICogYERlY29yYXRpb25BbmFseXplcmAuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0TWlncmF0aW9uSG9zdCBpbXBsZW1lbnRzIE1pZ3JhdGlvbkhvc3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHJlYWRvbmx5IHJlZmxlY3Rpb25Ib3N0OiBOZ2NjUmVmbGVjdGlvbkhvc3QsIHJlYWRvbmx5IG1ldGFkYXRhOiBNZXRhZGF0YVJlYWRlcixcbiAgICAgIHJlYWRvbmx5IGV2YWx1YXRvcjogUGFydGlhbEV2YWx1YXRvcixcbiAgICAgIHByaXZhdGUgaGFuZGxlcnM6IERlY29yYXRvckhhbmRsZXI8dW5rbm93biwgdW5rbm93biwgdW5rbm93bj5bXSxcbiAgICAgIHByaXZhdGUgZW50cnlQb2ludFBhdGg6IEFic29sdXRlRnNQYXRoLCBwcml2YXRlIGFuYWx5emVkRmlsZXM6IEFuYWx5emVkRmlsZVtdLFxuICAgICAgcHJpdmF0ZSBkaWFnbm9zdGljSGFuZGxlcjogKGVycm9yOiB0cy5EaWFnbm9zdGljKSA9PiB2b2lkKSB7fVxuXG4gIGluamVjdFN5bnRoZXRpY0RlY29yYXRvcihjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbiwgZGVjb3JhdG9yOiBEZWNvcmF0b3IsIGZsYWdzPzogSGFuZGxlckZsYWdzKTpcbiAgICAgIHZvaWQge1xuICAgIGNvbnN0IGNsYXNzU3ltYm9sID0gdGhpcy5yZWZsZWN0aW9uSG9zdC5nZXRDbGFzc1N5bWJvbChjbGF6eikgITtcbiAgICBjb25zdCBuZXdBbmFseXplZENsYXNzID0gYW5hbHl6ZURlY29yYXRvcnMoY2xhc3NTeW1ib2wsIFtkZWNvcmF0b3JdLCB0aGlzLmhhbmRsZXJzLCBmbGFncyk7XG4gICAgaWYgKG5ld0FuYWx5emVkQ2xhc3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobmV3QW5hbHl6ZWRDbGFzcy5kaWFnbm9zdGljcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGRpYWdub3N0aWMgb2YgbmV3QW5hbHl6ZWRDbGFzcy5kaWFnbm9zdGljcykge1xuICAgICAgICB0aGlzLmRpYWdub3N0aWNIYW5kbGVyKGNyZWF0ZU1pZ3JhdGlvbkRpYWdub3N0aWMoZGlhZ25vc3RpYywgY2xhenosIGRlY29yYXRvcikpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFuYWx5emVkRmlsZSA9IGdldE9yQ3JlYXRlQW5hbHl6ZWRGaWxlKHRoaXMuYW5hbHl6ZWRGaWxlcywgY2xhenouZ2V0U291cmNlRmlsZSgpKTtcbiAgICBjb25zdCBvbGRBbmFseXplZENsYXNzID0gYW5hbHl6ZWRGaWxlLmFuYWx5emVkQ2xhc3Nlcy5maW5kKGMgPT4gYy5kZWNsYXJhdGlvbiA9PT0gY2xhenopO1xuICAgIGlmIChvbGRBbmFseXplZENsYXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFuYWx5emVkRmlsZS5hbmFseXplZENsYXNzZXMucHVzaChuZXdBbmFseXplZENsYXNzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VBbmFseXplZENsYXNzZXMob2xkQW5hbHl6ZWRDbGFzcywgbmV3QW5hbHl6ZWRDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsRGVjb3JhdG9ycyhjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbik6IERlY29yYXRvcltdfG51bGwge1xuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBjbGF6ei5nZXRTb3VyY2VGaWxlKCk7XG4gICAgY29uc3QgYW5hbHl6ZWRGaWxlID0gdGhpcy5hbmFseXplZEZpbGVzLmZpbmQoZmlsZSA9PiBmaWxlLnNvdXJjZUZpbGUgPT09IHNvdXJjZUZpbGUpO1xuICAgIGlmIChhbmFseXplZEZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYW5hbHl6ZWRDbGFzcyA9IGFuYWx5emVkRmlsZS5hbmFseXplZENsYXNzZXMuZmluZChjID0+IGMuZGVjbGFyYXRpb24gPT09IGNsYXp6KTtcbiAgICBpZiAoYW5hbHl6ZWRDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYW5hbHl6ZWRDbGFzcy5kZWNvcmF0b3JzO1xuICB9XG5cbiAgaXNJblNjb3BlKGNsYXp6OiBDbGFzc0RlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzV2l0aGluUGFja2FnZSh0aGlzLmVudHJ5UG9pbnRQYXRoLCBjbGF6ei5nZXRTb3VyY2VGaWxlKCkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldE9yQ3JlYXRlQW5hbHl6ZWRGaWxlKFxuICAgIGFuYWx5emVkRmlsZXM6IEFuYWx5emVkRmlsZVtdLCBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogQW5hbHl6ZWRGaWxlIHtcbiAgY29uc3QgYW5hbHl6ZWRGaWxlID0gYW5hbHl6ZWRGaWxlcy5maW5kKGZpbGUgPT4gZmlsZS5zb3VyY2VGaWxlID09PSBzb3VyY2VGaWxlKTtcbiAgaWYgKGFuYWx5emVkRmlsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGFuYWx5emVkRmlsZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBuZXdBbmFseXplZEZpbGU6IEFuYWx5emVkRmlsZSA9IHtzb3VyY2VGaWxlLCBhbmFseXplZENsYXNzZXM6IFtdfTtcbiAgICBhbmFseXplZEZpbGVzLnB1c2gobmV3QW5hbHl6ZWRGaWxlKTtcbiAgICByZXR1cm4gbmV3QW5hbHl6ZWRGaWxlO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlQW5hbHl6ZWRDbGFzc2VzKG9sZENsYXNzOiBBbmFseXplZENsYXNzLCBuZXdDbGFzczogQW5hbHl6ZWRDbGFzcykge1xuICBpZiAobmV3Q2xhc3MuZGVjb3JhdG9ycyAhPT0gbnVsbCkge1xuICAgIGlmIChvbGRDbGFzcy5kZWNvcmF0b3JzID09PSBudWxsKSB7XG4gICAgICBvbGRDbGFzcy5kZWNvcmF0b3JzID0gbmV3Q2xhc3MuZGVjb3JhdG9ycztcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBuZXdEZWNvcmF0b3Igb2YgbmV3Q2xhc3MuZGVjb3JhdG9ycykge1xuICAgICAgICBpZiAob2xkQ2xhc3MuZGVjb3JhdG9ycy5zb21lKGQgPT4gZC5uYW1lID09PSBuZXdEZWNvcmF0b3IubmFtZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRmF0YWxEaWFnbm9zdGljRXJyb3IoXG4gICAgICAgICAgICAgIEVycm9yQ29kZS5OR0NDX01JR1JBVElPTl9ERUNPUkFUT1JfSU5KRUNUSU9OX0VSUk9SLCBuZXdDbGFzcy5kZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgYEF0dGVtcHRlZCB0byBpbmplY3QgXCIke25ld0RlY29yYXRvci5uYW1lfVwiIGRlY29yYXRvciBvdmVyIGEgcHJlLWV4aXN0aW5nIGRlY29yYXRvciB3aXRoIHRoZSBzYW1lIG5hbWUgb24gdGhlIFwiJHtuZXdDbGFzcy5uYW1lfVwiIGNsYXNzLmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbGRDbGFzcy5kZWNvcmF0b3JzLnB1c2goLi4ubmV3Q2xhc3MuZGVjb3JhdG9ycyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5ld0NsYXNzLmRpYWdub3N0aWNzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAob2xkQ2xhc3MuZGlhZ25vc3RpY3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb2xkQ2xhc3MuZGlhZ25vc3RpY3MgPSBuZXdDbGFzcy5kaWFnbm9zdGljcztcbiAgICB9IGVsc2Uge1xuICAgICAgb2xkQ2xhc3MuZGlhZ25vc3RpY3MucHVzaCguLi5uZXdDbGFzcy5kaWFnbm9zdGljcyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRpYWdub3N0aWMgZnJvbSBhbm90aGVyIG9uZSwgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzeW50aGV0aWNcbiAqIGRlY29yYXRvci5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlTWlncmF0aW9uRGlhZ25vc3RpYyhcbiAgICBkaWFnbm9zdGljOiB0cy5EaWFnbm9zdGljLCBzb3VyY2U6IHRzLk5vZGUsIGRlY29yYXRvcjogRGVjb3JhdG9yKTogdHMuRGlhZ25vc3RpYyB7XG4gIGNvbnN0IGNsb25lID0gey4uLmRpYWdub3N0aWN9O1xuXG4gIGNvbnN0IGNoYWluOiB0cy5EaWFnbm9zdGljTWVzc2FnZUNoYWluW10gPSBbe1xuICAgIG1lc3NhZ2VUZXh0OiBgT2NjdXJzIGZvciBAJHtkZWNvcmF0b3IubmFtZX0gZGVjb3JhdG9yIGluc2VydGVkIGJ5IGFuIGF1dG9tYXRpYyBtaWdyYXRpb25gLFxuICAgIGNhdGVnb3J5OiB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuTWVzc2FnZSxcbiAgICBjb2RlOiAwLFxuICB9XTtcblxuICBpZiAoZGVjb3JhdG9yLmFyZ3MgIT09IG51bGwpIHtcbiAgICBjb25zdCBhcmdzID0gZGVjb3JhdG9yLmFyZ3MubWFwKGFyZyA9PiBhcmcuZ2V0VGV4dCgpKS5qb2luKCcsICcpO1xuICAgIGNoYWluLnB1c2goe1xuICAgICAgbWVzc2FnZVRleHQ6IGBAJHtkZWNvcmF0b3IubmFtZX0oJHthcmdzfSlgLFxuICAgICAgY2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFxuICAgICAgY29kZTogMCxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY2xvbmUubWVzc2FnZVRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgY2xvbmUubWVzc2FnZVRleHQgPSB7XG4gICAgICBtZXNzYWdlVGV4dDogY2xvbmUubWVzc2FnZVRleHQsXG4gICAgICBjYXRlZ29yeTogZGlhZ25vc3RpYy5jYXRlZ29yeSxcbiAgICAgIGNvZGU6IGRpYWdub3N0aWMuY29kZSxcbiAgICAgIG5leHQ6IGNoYWluLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgaWYgKGNsb25lLm1lc3NhZ2VUZXh0Lm5leHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xvbmUubWVzc2FnZVRleHQubmV4dCA9IGNoYWluO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbG9uZS5tZXNzYWdlVGV4dC5uZXh0LnB1c2goLi4uY2hhaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2xvbmU7XG59XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uX2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvYW5hbHlzaXMvbWlncmF0aW9uX2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsK0JBQWlDO0lBTWpDLHVFQUFzRTtJQUt0RSxxRUFBdUM7SUFFdkM7O09BRUc7SUFDSDtRQUNFLDhCQUNhLGNBQWtDLEVBQVcsUUFBd0IsRUFDckUsU0FBMkIsRUFBVSxRQUEyQixFQUNqRSxjQUE4QjtZQUY3QixtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7WUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtZQUNyRSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtZQUFVLGFBQVEsR0FBUixRQUFRLENBQW1CO1lBQ2pFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFHLENBQUM7UUFFOUMsdURBQXdCLEdBQXhCLFVBQXlCLEtBQXVCLEVBQUUsU0FBb0IsRUFBRSxLQUFvQjs7WUFFMUYsSUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDOztnQkFFdkYsS0FBb0IsSUFBQSxtQkFBQSxpQkFBQSxjQUFjLENBQUEsOENBQUEsMEVBQUU7b0JBQS9CLElBQU0sS0FBSywyQkFBQTtvQkFDZCxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssc0JBQVUsQ0FBQyxPQUFPLEVBQUU7d0JBQ3RDLEtBQUssQ0FBQyxXQUFXOzRCQUNiLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEseUJBQXlCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBakQsQ0FBaUQsQ0FBQyxDQUFDO3FCQUN0RjtpQkFDRjs7Ozs7Ozs7O1FBQ0gsQ0FBQztRQUVELCtDQUFnQixHQUFoQixVQUFpQixLQUF1QjtZQUN0QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELHdDQUFTLEdBQVQsVUFBVSxLQUF1QjtZQUMvQixPQUFPLHNCQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0gsMkJBQUM7SUFBRCxDQUFDLEFBekJELElBeUJDO0lBekJZLG9EQUFvQjtJQTJCakM7OztPQUdHO0lBQ0gsU0FBUyx5QkFBeUIsQ0FDOUIsVUFBeUIsRUFBRSxNQUFlLEVBQUUsU0FBb0I7O1FBQ2xFLElBQU0sS0FBSyx3QkFBTyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFNLEtBQUssR0FBZ0MsQ0FBQztnQkFDMUMsV0FBVyxFQUFFLGlCQUFlLFNBQVMsQ0FBQyxJQUFJLGtEQUErQztnQkFDekYsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPO2dCQUN2QyxJQUFJLEVBQUUsQ0FBQzthQUNSLENBQUMsQ0FBQztRQUVILElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDM0IsSUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQWIsQ0FBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pFLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsV0FBVyxFQUFFLE1BQUksU0FBUyxDQUFDLElBQUksU0FBSSxJQUFJLE1BQUc7Z0JBQzFDLFFBQVEsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTztnQkFDdkMsSUFBSSxFQUFFLENBQUM7YUFDUixDQUFDLENBQUM7U0FDSjtRQUVELElBQUksT0FBTyxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtZQUN6QyxLQUFLLENBQUMsV0FBVyxHQUFHO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtnQkFDN0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO2dCQUNyQixJQUFJLEVBQUUsS0FBSzthQUNaLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3hDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxDQUFBLEtBQUEsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUEsQ0FBQyxJQUFJLDRCQUFJLEtBQUssR0FBRTthQUN2QztTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGh9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge01ldGFkYXRhUmVhZGVyfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvbWV0YWRhdGEnO1xuaW1wb3J0IHtQYXJ0aWFsRXZhbHVhdG9yfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvcGFydGlhbF9ldmFsdWF0b3InO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBEZWNvcmF0b3J9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCB7SGFuZGxlckZsYWdzLCBUcmFpdFN0YXRlfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdHJhbnNmb3JtJztcbmltcG9ydCB7TmdjY1JlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi9ob3N0L25nY2NfaG9zdCc7XG5pbXBvcnQge01pZ3JhdGlvbkhvc3R9IGZyb20gJy4uL21pZ3JhdGlvbnMvbWlncmF0aW9uJztcblxuaW1wb3J0IHtOZ2NjVHJhaXRDb21waWxlcn0gZnJvbSAnLi9uZ2NjX3RyYWl0X2NvbXBpbGVyJztcbmltcG9ydCB7aXNXaXRoaW5QYWNrYWdlfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFRoZSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiBvZiBgTWlncmF0aW9uSG9zdGAsIHdoaWNoIGlzIGNyZWF0ZWQgYnkgdGhlIGBEZWNvcmF0aW9uQW5hbHl6ZXJgLlxuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdE1pZ3JhdGlvbkhvc3QgaW1wbGVtZW50cyBNaWdyYXRpb25Ib3N0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSByZWZsZWN0aW9uSG9zdDogTmdjY1JlZmxlY3Rpb25Ib3N0LCByZWFkb25seSBtZXRhZGF0YTogTWV0YWRhdGFSZWFkZXIsXG4gICAgICByZWFkb25seSBldmFsdWF0b3I6IFBhcnRpYWxFdmFsdWF0b3IsIHByaXZhdGUgY29tcGlsZXI6IE5nY2NUcmFpdENvbXBpbGVyLFxuICAgICAgcHJpdmF0ZSBlbnRyeVBvaW50UGF0aDogQWJzb2x1dGVGc1BhdGgpIHt9XG5cbiAgaW5qZWN0U3ludGhldGljRGVjb3JhdG9yKGNsYXp6OiBDbGFzc0RlY2xhcmF0aW9uLCBkZWNvcmF0b3I6IERlY29yYXRvciwgZmxhZ3M/OiBIYW5kbGVyRmxhZ3MpOlxuICAgICAgdm9pZCB7XG4gICAgY29uc3QgbWlncmF0ZWRUcmFpdHMgPSB0aGlzLmNvbXBpbGVyLmluamVjdFN5bnRoZXRpY0RlY29yYXRvcihjbGF6eiwgZGVjb3JhdG9yLCBmbGFncyk7XG5cbiAgICBmb3IgKGNvbnN0IHRyYWl0IG9mIG1pZ3JhdGVkVHJhaXRzKSB7XG4gICAgICBpZiAodHJhaXQuc3RhdGUgPT09IFRyYWl0U3RhdGUuRVJST1JFRCkge1xuICAgICAgICB0cmFpdC5kaWFnbm9zdGljcyA9XG4gICAgICAgICAgICB0cmFpdC5kaWFnbm9zdGljcy5tYXAoZGlhZyA9PiBjcmVhdGVNaWdyYXRpb25EaWFnbm9zdGljKGRpYWcsIGNsYXp6LCBkZWNvcmF0b3IpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRBbGxEZWNvcmF0b3JzKGNsYXp6OiBDbGFzc0RlY2xhcmF0aW9uKTogRGVjb3JhdG9yW118bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGlsZXIuZ2V0QWxsRGVjb3JhdG9ycyhjbGF6eik7XG4gIH1cblxuICBpc0luU2NvcGUoY2xheno6IENsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNXaXRoaW5QYWNrYWdlKHRoaXMuZW50cnlQb2ludFBhdGgsIGNsYXp6LmdldFNvdXJjZUZpbGUoKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGlhZ25vc3RpYyBmcm9tIGFub3RoZXIgb25lLCBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5bnRoZXRpY1xuICogZGVjb3JhdG9yLlxuICovXG5mdW5jdGlvbiBjcmVhdGVNaWdyYXRpb25EaWFnbm9zdGljKFxuICAgIGRpYWdub3N0aWM6IHRzLkRpYWdub3N0aWMsIHNvdXJjZTogdHMuTm9kZSwgZGVjb3JhdG9yOiBEZWNvcmF0b3IpOiB0cy5EaWFnbm9zdGljIHtcbiAgY29uc3QgY2xvbmUgPSB7Li4uZGlhZ25vc3RpY307XG5cbiAgY29uc3QgY2hhaW46IHRzLkRpYWdub3N0aWNNZXNzYWdlQ2hhaW5bXSA9IFt7XG4gICAgbWVzc2FnZVRleHQ6IGBPY2N1cnMgZm9yIEAke2RlY29yYXRvci5uYW1lfSBkZWNvcmF0b3IgaW5zZXJ0ZWQgYnkgYW4gYXV0b21hdGljIG1pZ3JhdGlvbmAsXG4gICAgY2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5NZXNzYWdlLFxuICAgIGNvZGU6IDAsXG4gIH1dO1xuXG4gIGlmIChkZWNvcmF0b3IuYXJncyAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGFyZ3MgPSBkZWNvcmF0b3IuYXJncy5tYXAoYXJnID0+IGFyZy5nZXRUZXh0KCkpLmpvaW4oJywgJyk7XG4gICAgY2hhaW4ucHVzaCh7XG4gICAgICBtZXNzYWdlVGV4dDogYEAke2RlY29yYXRvci5uYW1lfSgke2FyZ3N9KWAsXG4gICAgICBjYXRlZ29yeTogdHMuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXG4gICAgICBjb2RlOiAwLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjbG9uZS5tZXNzYWdlVGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjbG9uZS5tZXNzYWdlVGV4dCA9IHtcbiAgICAgIG1lc3NhZ2VUZXh0OiBjbG9uZS5tZXNzYWdlVGV4dCxcbiAgICAgIGNhdGVnb3J5OiBkaWFnbm9zdGljLmNhdGVnb3J5LFxuICAgICAgY29kZTogZGlhZ25vc3RpYy5jb2RlLFxuICAgICAgbmV4dDogY2hhaW4sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoY2xvbmUubWVzc2FnZVRleHQubmV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbG9uZS5tZXNzYWdlVGV4dC5uZXh0ID0gY2hhaW47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsb25lLm1lc3NhZ2VUZXh0Lm5leHQucHVzaCguLi5jaGFpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiBjbG9uZTtcbn1cbiJdfQ==
@@ -96,7 +96,7 @@
96
96
  if (!ts.isClassDeclaration(dtsNgModule) || !utils_1.hasNameIdentifier(dtsNgModule)) {
97
97
  throw new Error("The referenced NgModule in " + fn.declaration.getText() + " is not a named class declaration in the typings program; instead we get " + dtsNgModule.getText());
98
98
  }
99
- return { node: dtsNgModule, viaModule: null };
99
+ return { node: dtsNgModule, known: null, viaModule: null };
100
100
  };
101
101
  return ModuleWithProvidersAnalyzer;
102
102
  }());
@@ -108,4 +108,4 @@
108
108
  return typeParam.kind === ts.SyntaxKind.AnyKeyword;
109
109
  }
110
110
  });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlX3dpdGhfcHJvdmlkZXJzX2FuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2FuYWx5c2lzL21vZHVsZV93aXRoX3Byb3ZpZGVyc19hbmFseXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILCtCQUFpQztJQUdqQyxtRUFBcUQ7SUFHckQsOERBQXNEO0lBZ0J6QyxRQUFBLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztJQUUvQztRQUNFLHFDQUNZLElBQXdCLEVBQVUsa0JBQXNDLEVBQ3hFLFVBQW1CO1lBRG5CLFNBQUksR0FBSixJQUFJLENBQW9CO1lBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtZQUN4RSxlQUFVLEdBQVYsVUFBVSxDQUFTO1FBQUcsQ0FBQztRQUVuQyxvREFBYyxHQUFkLFVBQWUsT0FBbUI7WUFBbEMsaUJBNEJDO1lBM0JDLElBQU0sUUFBUSxHQUFHLElBQUksbUNBQTJCLEVBQUUsQ0FBQztZQUNuRCxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO2dCQUNqQixJQUFNLEdBQUcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEVBQUU7b0JBQ25CLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO3dCQUNsQyxrRkFBa0Y7d0JBQ2xGLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxtQkFBUyxDQUFDLEVBQUUsQ0FBQyxR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QUFXLENBQUMsSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELFNBQVMsWUFBWSxDQUFDLFNBQXNCO1FBQzFDLE9BQU8sU0FBUyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7UmVmZXJlbmNlc1JlZ2lzdHJ5fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvYW5ub3RhdGlvbnMnO1xuaW1wb3J0IHtSZWZlcmVuY2V9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9pbXBvcnRzJztcbmltcG9ydCB7Q2xhc3NEZWNsYXJhdGlvbiwgQ29uY3JldGVEZWNsYXJhdGlvbn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzRnVuY3Rpb24sIE5nY2NSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vaG9zdC9uZ2NjX2hvc3QnO1xuaW1wb3J0IHtoYXNOYW1lSWRlbnRpZmllciwgaXNEZWZpbmVkfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlV2l0aFByb3ZpZGVyc0luZm8ge1xuICAvKipcbiAgICogVGhlIGRlY2xhcmF0aW9uIChpbiB0aGUgLmQudHMgZmlsZSkgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJuc1xuICAgKiBhIGBNb2R1bGVXaXRoUHJvdmlkZXJzIG9iamVjdCwgYnV0IGhhcyBhIHNpZ25hdHVyZSB0aGF0IG5lZWRzXG4gICAqIGEgdHlwZSBwYXJhbWV0ZXIgYWRkaW5nLlxuICAgKi9cbiAgZGVjbGFyYXRpb246IHRzLk1ldGhvZERlY2xhcmF0aW9ufHRzLkZ1bmN0aW9uRGVjbGFyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgTmdNb2R1bGUgY2xhc3MgZGVjbGFyYXRpb24gKGluIHRoZSAuZC50cyBmaWxlKSB0byBhZGQgYXMgYSB0eXBlIHBhcmFtZXRlci5cbiAgICovXG4gIG5nTW9kdWxlOiBDb25jcmV0ZURlY2xhcmF0aW9uPENsYXNzRGVjbGFyYXRpb24+O1xufVxuXG5leHBvcnQgdHlwZSBNb2R1bGVXaXRoUHJvdmlkZXJzQW5hbHlzZXMgPSBNYXA8dHMuU291cmNlRmlsZSwgTW9kdWxlV2l0aFByb3ZpZGVyc0luZm9bXT47XG5leHBvcnQgY29uc3QgTW9kdWxlV2l0aFByb3ZpZGVyc0FuYWx5c2VzID0gTWFwO1xuXG5leHBvcnQgY2xhc3MgTW9kdWxlV2l0aFByb3ZpZGVyc0FuYWx5emVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCwgcHJpdmF0ZSByZWZlcmVuY2VzUmVnaXN0cnk6IFJlZmVyZW5jZXNSZWdpc3RyeSxcbiAgICAgIHByaXZhdGUgcHJvY2Vzc0R0czogYm9vbGVhbikge31cblxuICBhbmFseXplUHJvZ3JhbShwcm9ncmFtOiB0cy5Qcm9ncmFtKTogTW9kdWxlV2l0aFByb3ZpZGVyc0FuYWx5c2VzIHtcbiAgICBjb25zdCBhbmFseXNlcyA9IG5ldyBNb2R1bGVXaXRoUHJvdmlkZXJzQW5hbHlzZXMoKTtcbiAgICBjb25zdCByb290RmlsZXMgPSB0aGlzLmdldFJvb3RGaWxlcyhwcm9ncmFtKTtcbiAgICByb290RmlsZXMuZm9yRWFjaChmID0+IHtcbiAgICAgIGNvbnN0IGZucyA9IHRoaXMuaG9zdC5nZXRNb2R1bGVXaXRoUHJvdmlkZXJzRnVuY3Rpb25zKGYpO1xuICAgICAgZm5zICYmIGZucy5mb3JFYWNoKGZuID0+IHtcbiAgICAgICAgaWYgKGZuLm5nTW9kdWxlLnZpYU1vZHVsZSA9PT0gbnVsbCkge1xuICAgICAgICAgIC8vIFJlY29yZCB0aGUgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgbW9kdWxlIGFzIGl0IG5lZWRzIHRvIGJlY29tZSBhbiBleHBvcnRlZCBzeW1ib2xcbiAgICAgICAgICB0aGlzLnJlZmVyZW5jZXNSZWdpc3RyeS5hZGQoZm4ubmdNb2R1bGUubm9kZSwgbmV3IFJlZmVyZW5jZShmbi5uZ01vZHVsZS5ub2RlKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHdoZW4gcHJvY2Vzc2luZyB0aGUgZHRzIGZpbGVzIGRvIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIGRlY2xhcmF0aW9uIHRvIHVwZGF0ZS5cbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc0R0cykge1xuICAgICAgICAgIGNvbnN0IGR0c0ZuID0gdGhpcy5nZXREdHNEZWNsYXJhdGlvbkZvckZ1bmN0aW9uKGZuKTtcbiAgICAgICAgICBjb25zdCB0eXBlUGFyYW0gPSBkdHNGbi50eXBlICYmIHRzLmlzVHlwZVJlZmVyZW5jZU5vZGUoZHRzRm4udHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgIGR0c0ZuLnR5cGUudHlwZUFyZ3VtZW50cyAmJiBkdHNGbi50eXBlLnR5cGVBcmd1bWVudHNbMF0gfHxcbiAgICAgICAgICAgICAgbnVsbDtcbiAgICAgICAgICBpZiAoIXR5cGVQYXJhbSB8fCBpc0FueUtleXdvcmQodHlwZVBhcmFtKSkge1xuICAgICAgICAgICAgY29uc3QgbmdNb2R1bGUgPSB0aGlzLnJlc29sdmVOZ01vZHVsZVJlZmVyZW5jZShmbik7XG4gICAgICAgICAgICBjb25zdCBkdHNGaWxlID0gZHRzRm4uZ2V0U291cmNlRmlsZSgpO1xuICAgICAgICAgICAgY29uc3QgYW5hbHlzaXMgPSBhbmFseXNlcy5oYXMoZHRzRmlsZSkgPyBhbmFseXNlcy5nZXQoZHRzRmlsZSkgOiBbXTtcbiAgICAgICAgICAgIGFuYWx5c2lzLnB1c2goe2RlY2xhcmF0aW9uOiBkdHNGbiwgbmdNb2R1bGV9KTtcbiAgICAgICAgICAgIGFuYWx5c2VzLnNldChkdHNGaWxlLCBhbmFseXNpcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYW5hbHlzZXM7XG4gIH1cblxuICBwcml2YXRlIGdldFJvb3RGaWxlcyhwcm9ncmFtOiB0cy5Qcm9ncmFtKTogdHMuU291cmNlRmlsZVtdIHtcbiAgICByZXR1cm4gcHJvZ3JhbS5nZXRSb290RmlsZU5hbWVzKCkubWFwKGYgPT4gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKGYpKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHRzRGVjbGFyYXRpb25Gb3JGdW5jdGlvbihmbjogTW9kdWxlV2l0aFByb3ZpZGVyc0Z1bmN0aW9uKSB7XG4gICAgbGV0IGR0c0ZuOiB0cy5EZWNsYXJhdGlvbnxudWxsID0gbnVsbDtcbiAgICBjb25zdCBjb250YWluZXJDbGFzcyA9IGZuLmNvbnRhaW5lciAmJiB0aGlzLmhvc3QuZ2V0Q2xhc3NTeW1ib2woZm4uY29udGFpbmVyKTtcbiAgICBpZiAoY29udGFpbmVyQ2xhc3MpIHtcbiAgICAgIGNvbnN0IGR0c0NsYXNzID0gdGhpcy5ob3N0LmdldER0c0RlY2xhcmF0aW9uKGNvbnRhaW5lckNsYXNzLmRlY2xhcmF0aW9uLnZhbHVlRGVjbGFyYXRpb24pO1xuICAgICAgLy8gR2V0IHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgbWF0Y2hpbmcgc3RhdGljIG1ldGhvZFxuICAgICAgZHRzRm4gPSBkdHNDbGFzcyAmJiB0cy5pc0NsYXNzRGVjbGFyYXRpb24oZHRzQ2xhc3MpID9cbiAgICAgICAgICBkdHNDbGFzcy5tZW1iZXJzXG4gICAgICAgICAgICAgIC5maW5kKFxuICAgICAgICAgICAgICAgICAgbWVtYmVyID0+IHRzLmlzTWV0aG9kRGVjbGFyYXRpb24obWVtYmVyKSAmJiB0cy5pc0lkZW50aWZpZXIobWVtYmVyLm5hbWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgbWVtYmVyLm5hbWUudGV4dCA9PT0gZm4ubmFtZSkgYXMgdHMuRGVjbGFyYXRpb24gOlxuICAgICAgICAgIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGR0c0ZuID0gdGhpcy5ob3N0LmdldER0c0RlY2xhcmF0aW9uKGZuLmRlY2xhcmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKCFkdHNGbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaGluZyB0eXBlIGRlY2xhcmF0aW9uIGZvciAke2ZuLmRlY2xhcmF0aW9uLmdldFRleHQoKX0gaXMgbWlzc2luZ2ApO1xuICAgIH1cbiAgICBpZiAoIWlzRnVuY3Rpb25Pck1ldGhvZChkdHNGbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTWF0Y2hpbmcgdHlwZSBkZWNsYXJhdGlvbiBmb3IgJHtmbi5kZWNsYXJhdGlvbi5nZXRUZXh0KCl9IGlzIG5vdCBhIGZ1bmN0aW9uOiAke2R0c0ZuLmdldFRleHQoKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGR0c0ZuO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlTmdNb2R1bGVSZWZlcmVuY2UoZm46IE1vZHVsZVdpdGhQcm92aWRlcnNGdW5jdGlvbik6XG4gICAgICBDb25jcmV0ZURlY2xhcmF0aW9uPENsYXNzRGVjbGFyYXRpb24+IHtcbiAgICBjb25zdCBuZ01vZHVsZSA9IGZuLm5nTW9kdWxlO1xuXG4gICAgLy8gRm9yIGV4dGVybmFsIG1vZHVsZSByZWZlcmVuY2VzLCB1c2UgdGhlIGRlY2xhcmF0aW9uIGFzIGlzLlxuICAgIGlmIChuZ01vZHVsZS52aWFNb2R1bGUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBuZ01vZHVsZTtcbiAgICB9XG5cbiAgICAvLyBGb3IgaW50ZXJuYWwgKG5vbi1saWJyYXJ5KSBtb2R1bGUgcmVmZXJlbmNlcywgcmVkaXJlY3QgdGhlIG1vZHVsZSdzIHZhbHVlIGRlY2xhcmF0aW9uXG4gICAgLy8gdG8gaXRzIHR5cGUgZGVjbGFyYXRpb24uXG4gICAgY29uc3QgZHRzTmdNb2R1bGUgPSB0aGlzLmhvc3QuZ2V0RHRzRGVjbGFyYXRpb24obmdNb2R1bGUubm9kZSk7XG4gICAgaWYgKCFkdHNOZ01vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBObyB0eXBpbmdzIGRlY2xhcmF0aW9uIGNhbiBiZSBmb3VuZCBmb3IgdGhlIHJlZmVyZW5jZWQgTmdNb2R1bGUgY2xhc3MgaW4gJHtmbi5kZWNsYXJhdGlvbi5nZXRUZXh0KCl9LmApO1xuICAgIH1cbiAgICBpZiAoIXRzLmlzQ2xhc3NEZWNsYXJhdGlvbihkdHNOZ01vZHVsZSkgfHwgIWhhc05hbWVJZGVudGlmaWVyKGR0c05nTW9kdWxlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGUgcmVmZXJlbmNlZCBOZ01vZHVsZSBpbiAke2ZuLmRlY2xhcmF0aW9uLmdldFRleHQoKX0gaXMgbm90IGEgbmFtZWQgY2xhc3MgZGVjbGFyYXRpb24gaW4gdGhlIHR5cGluZ3MgcHJvZ3JhbTsgaW5zdGVhZCB3ZSBnZXQgJHtkdHNOZ01vZHVsZS5nZXRUZXh0KCl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtub2RlOiBkdHNOZ01vZHVsZSwgdmlhTW9kdWxlOiBudWxsfTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb25Pck1ldGhvZChkZWNsYXJhdGlvbjogdHMuRGVjbGFyYXRpb24pOiBkZWNsYXJhdGlvbiBpcyB0cy5GdW5jdGlvbkRlY2xhcmF0aW9ufFxuICAgIHRzLk1ldGhvZERlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihkZWNsYXJhdGlvbikgfHwgdHMuaXNNZXRob2REZWNsYXJhdGlvbihkZWNsYXJhdGlvbik7XG59XG5cbmZ1bmN0aW9uIGlzQW55S2V5d29yZCh0eXBlUGFyYW06IHRzLlR5cGVOb2RlKTogdHlwZVBhcmFtIGlzIHRzLktleXdvcmRUeXBlTm9kZSB7XG4gIHJldHVybiB0eXBlUGFyYW0ua2luZCA9PT0gdHMuU3ludGF4S2luZC5BbnlLZXl3b3JkO1xufVxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlX3dpdGhfcHJvdmlkZXJzX2FuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2FuYWx5c2lzL21vZHVsZV93aXRoX3Byb3ZpZGVyc19hbmFseXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILCtCQUFpQztJQUdqQyxtRUFBcUQ7SUFHckQsOERBQXNEO0lBZ0J6QyxRQUFBLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztJQUUvQztRQUNFLHFDQUNZLElBQXdCLEVBQVUsa0JBQXNDLEVBQ3hFLFVBQW1CO1lBRG5CLFNBQUksR0FBSixJQUFJLENBQW9CO1lBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtZQUN4RSxlQUFVLEdBQVYsVUFBVSxDQUFTO1FBQUcsQ0FBQztRQUVuQyxvREFBYyxHQUFkLFVBQWUsT0FBbUI7WUFBbEMsaUJBNEJDO1lBM0JDLElBQU0sUUFBUSxHQUFHLElBQUksbUNBQTJCLEVBQUUsQ0FBQztZQUNuRCxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO2dCQUNqQixJQUFNLEdBQUcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEVBQUU7b0JBQ25CLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO3dCQUNsQyxrRkFBa0Y7d0JBQ2xGLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxtQkFBUyxDQUFDLEVBQUUsQ0FBQyxR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RSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsU0FBUyxZQUFZLENBQUMsU0FBc0I7UUFDMUMsT0FBTyxTQUFTLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtSZWZlcmVuY2VzUmVnaXN0cnl9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9hbm5vdGF0aW9ucyc7XG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2ltcG9ydHMnO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBDb25jcmV0ZURlY2xhcmF0aW9ufSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvcmVmbGVjdGlvbic7XG5pbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnNGdW5jdGlvbiwgTmdjY1JlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi9ob3N0L25nY2NfaG9zdCc7XG5pbXBvcnQge2hhc05hbWVJZGVudGlmaWVyLCBpc0RlZmluZWR9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVXaXRoUHJvdmlkZXJzSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgZGVjbGFyYXRpb24gKGluIHRoZSAuZC50cyBmaWxlKSBvZiB0aGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zXG4gICAqIGEgYE1vZHVsZVdpdGhQcm92aWRlcnMgb2JqZWN0LCBidXQgaGFzIGEgc2lnbmF0dXJlIHRoYXQgbmVlZHNcbiAgICogYSB0eXBlIHBhcmFtZXRlciBhZGRpbmcuXG4gICAqL1xuICBkZWNsYXJhdGlvbjogdHMuTWV0aG9kRGVjbGFyYXRpb258dHMuRnVuY3Rpb25EZWNsYXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBOZ01vZHVsZSBjbGFzcyBkZWNsYXJhdGlvbiAoaW4gdGhlIC5kLnRzIGZpbGUpIHRvIGFkZCBhcyBhIHR5cGUgcGFyYW1ldGVyLlxuICAgKi9cbiAgbmdNb2R1bGU6IENvbmNyZXRlRGVjbGFyYXRpb248Q2xhc3NEZWNsYXJhdGlvbj47XG59XG5cbmV4cG9ydCB0eXBlIE1vZHVsZVdpdGhQcm92aWRlcnNBbmFseXNlcyA9IE1hcDx0cy5Tb3VyY2VGaWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzSW5mb1tdPjtcbmV4cG9ydCBjb25zdCBNb2R1bGVXaXRoUHJvdmlkZXJzQW5hbHlzZXMgPSBNYXA7XG5cbmV4cG9ydCBjbGFzcyBNb2R1bGVXaXRoUHJvdmlkZXJzQW5hbHl6ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgaG9zdDogTmdjY1JlZmxlY3Rpb25Ib3N0LCBwcml2YXRlIHJlZmVyZW5jZXNSZWdpc3RyeTogUmVmZXJlbmNlc1JlZ2lzdHJ5LFxuICAgICAgcHJpdmF0ZSBwcm9jZXNzRHRzOiBib29sZWFuKSB7fVxuXG4gIGFuYWx5emVQcm9ncmFtKHByb2dyYW06IHRzLlByb2dyYW0pOiBNb2R1bGVXaXRoUHJvdmlkZXJzQW5hbHlzZXMge1xuICAgIGNvbnN0IGFuYWx5c2VzID0gbmV3IE1vZHVsZVdpdGhQcm92aWRlcnNBbmFseXNlcygpO1xuICAgIGNvbnN0IHJvb3RGaWxlcyA9IHRoaXMuZ2V0Um9vdEZpbGVzKHByb2dyYW0pO1xuICAgIHJvb3RGaWxlcy5mb3JFYWNoKGYgPT4ge1xuICAgICAgY29uc3QgZm5zID0gdGhpcy5ob3N0LmdldE1vZHVsZVdpdGhQcm92aWRlcnNGdW5jdGlvbnMoZik7XG4gICAgICBmbnMgJiYgZm5zLmZvckVhY2goZm4gPT4ge1xuICAgICAgICBpZiAoZm4ubmdNb2R1bGUudmlhTW9kdWxlID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gUmVjb3JkIHRoZSB1c2FnZSBvZiBhbiBpbnRlcm5hbCBtb2R1bGUgYXMgaXQgbmVlZHMgdG8gYmVjb21lIGFuIGV4cG9ydGVkIHN5bWJvbFxuICAgICAgICAgIHRoaXMucmVmZXJlbmNlc1JlZ2lzdHJ5LmFkZChmbi5uZ01vZHVsZS5ub2RlLCBuZXcgUmVmZXJlbmNlKGZuLm5nTW9kdWxlLm5vZGUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgd2hlbiBwcm9jZXNzaW5nIHRoZSBkdHMgZmlsZXMgZG8gd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hpY2ggZGVjbGFyYXRpb24gdG8gdXBkYXRlLlxuICAgICAgICBpZiAodGhpcy5wcm9jZXNzRHRzKSB7XG4gICAgICAgICAgY29uc3QgZHRzRm4gPSB0aGlzLmdldER0c0RlY2xhcmF0aW9uRm9yRnVuY3Rpb24oZm4pO1xuICAgICAgICAgIGNvbnN0IHR5cGVQYXJhbSA9IGR0c0ZuLnR5cGUgJiYgdHMuaXNUeXBlUmVmZXJlbmNlTm9kZShkdHNGbi50eXBlKSAmJlxuICAgICAgICAgICAgICAgICAgZHRzRm4udHlwZS50eXBlQXJndW1lbnRzICYmIGR0c0ZuLnR5cGUudHlwZUFyZ3VtZW50c1swXSB8fFxuICAgICAgICAgICAgICBudWxsO1xuICAgICAgICAgIGlmICghdHlwZVBhcmFtIHx8IGlzQW55S2V5d29yZCh0eXBlUGFyYW0pKSB7XG4gICAgICAgICAgICBjb25zdCBuZ01vZHVsZSA9IHRoaXMucmVzb2x2ZU5nTW9kdWxlUmVmZXJlbmNlKGZuKTtcbiAgICAgICAgICAgIGNvbnN0IGR0c0ZpbGUgPSBkdHNGbi5nZXRTb3VyY2VGaWxlKCk7XG4gICAgICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5c2VzLmhhcyhkdHNGaWxlKSA/IGFuYWx5c2VzLmdldChkdHNGaWxlKSA6IFtdO1xuICAgICAgICAgICAgYW5hbHlzaXMucHVzaCh7ZGVjbGFyYXRpb246IGR0c0ZuLCBuZ01vZHVsZX0pO1xuICAgICAgICAgICAgYW5hbHlzZXMuc2V0KGR0c0ZpbGUsIGFuYWx5c2lzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBhbmFseXNlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um9vdEZpbGVzKHByb2dyYW06IHRzLlByb2dyYW0pOiB0cy5Tb3VyY2VGaWxlW10ge1xuICAgIHJldHVybiBwcm9ncmFtLmdldFJvb3RGaWxlTmFtZXMoKS5tYXAoZiA9PiBwcm9ncmFtLmdldFNvdXJjZUZpbGUoZikpLmZpbHRlcihpc0RlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREdHNEZWNsYXJhdGlvbkZvckZ1bmN0aW9uKGZuOiBNb2R1bGVXaXRoUHJvdmlkZXJzRnVuY3Rpb24pIHtcbiAgICBsZXQgZHRzRm46IHRzLkRlY2xhcmF0aW9ufG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGNvbnRhaW5lckNsYXNzID0gZm4uY29udGFpbmVyICYmIHRoaXMuaG9zdC5nZXRDbGFzc1N5bWJvbChmbi5jb250YWluZXIpO1xuICAgIGlmIChjb250YWluZXJDbGFzcykge1xuICAgICAgY29uc3QgZHRzQ2xhc3MgPSB0aGlzLmhvc3QuZ2V0RHRzRGVjbGFyYXRpb24oY29udGFpbmVyQ2xhc3MuZGVjbGFyYXRpb24udmFsdWVEZWNsYXJhdGlvbik7XG4gICAgICAvLyBHZXQgdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSBtYXRjaGluZyBzdGF0aWMgbWV0aG9kXG4gICAgICBkdHNGbiA9IGR0c0NsYXNzICYmIHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihkdHNDbGFzcykgP1xuICAgICAgICAgIGR0c0NsYXNzLm1lbWJlcnNcbiAgICAgICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICAgICAgICBtZW1iZXIgPT4gdHMuaXNNZXRob2REZWNsYXJhdGlvbihtZW1iZXIpICYmIHRzLmlzSWRlbnRpZmllcihtZW1iZXIubmFtZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIubmFtZS50ZXh0ID09PSBmbi5uYW1lKSBhcyB0cy5EZWNsYXJhdGlvbiA6XG4gICAgICAgICAgbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgZHRzRm4gPSB0aGlzLmhvc3QuZ2V0RHRzRGVjbGFyYXRpb24oZm4uZGVjbGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAoIWR0c0ZuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1hdGNoaW5nIHR5cGUgZGVjbGFyYXRpb24gZm9yICR7Zm4uZGVjbGFyYXRpb24uZ2V0VGV4dCgpfSBpcyBtaXNzaW5nYCk7XG4gICAgfVxuICAgIGlmICghaXNGdW5jdGlvbk9yTWV0aG9kKGR0c0ZuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNYXRjaGluZyB0eXBlIGRlY2xhcmF0aW9uIGZvciAke2ZuLmRlY2xhcmF0aW9uLmdldFRleHQoKX0gaXMgbm90IGEgZnVuY3Rpb246ICR7ZHRzRm4uZ2V0VGV4dCgpfWApO1xuICAgIH1cbiAgICByZXR1cm4gZHRzRm47XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVOZ01vZHVsZVJlZmVyZW5jZShmbjogTW9kdWxlV2l0aFByb3ZpZGVyc0Z1bmN0aW9uKTpcbiAgICAgIENvbmNyZXRlRGVjbGFyYXRpb248Q2xhc3NEZWNsYXJhdGlvbj4ge1xuICAgIGNvbnN0IG5nTW9kdWxlID0gZm4ubmdNb2R1bGU7XG5cbiAgICAvLyBGb3IgZXh0ZXJuYWwgbW9kdWxlIHJlZmVyZW5jZXMsIHVzZSB0aGUgZGVjbGFyYXRpb24gYXMgaXMuXG4gICAgaWYgKG5nTW9kdWxlLnZpYU1vZHVsZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5nTW9kdWxlO1xuICAgIH1cblxuICAgIC8vIEZvciBpbnRlcm5hbCAobm9uLWxpYnJhcnkpIG1vZHVsZSByZWZlcmVuY2VzLCByZWRpcmVjdCB0aGUgbW9kdWxlJ3MgdmFsdWUgZGVjbGFyYXRpb25cbiAgICAvLyB0byBpdHMgdHlwZSBkZWNsYXJhdGlvbi5cbiAgICBjb25zdCBkdHNOZ01vZHVsZSA9IHRoaXMuaG9zdC5nZXREdHNEZWNsYXJhdGlvbihuZ01vZHVsZS5ub2RlKTtcbiAgICBpZiAoIWR0c05nTW9kdWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE5vIHR5cGluZ3MgZGVjbGFyYXRpb24gY2FuIGJlIGZvdW5kIGZvciB0aGUgcmVmZXJlbmNlZCBOZ01vZHVsZSBjbGFzcyBpbiAke2ZuLmRlY2xhcmF0aW9uLmdldFRleHQoKX0uYCk7XG4gICAgfVxuICAgIGlmICghdHMuaXNDbGFzc0RlY2xhcmF0aW9uKGR0c05nTW9kdWxlKSB8fCAhaGFzTmFtZUlkZW50aWZpZXIoZHRzTmdNb2R1bGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZSByZWZlcmVuY2VkIE5nTW9kdWxlIGluICR7Zm4uZGVjbGFyYXRpb24uZ2V0VGV4dCgpfSBpcyBub3QgYSBuYW1lZCBjbGFzcyBkZWNsYXJhdGlvbiBpbiB0aGUgdHlwaW5ncyBwcm9ncmFtOyBpbnN0ZWFkIHdlIGdldCAke2R0c05nTW9kdWxlLmdldFRleHQoKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge25vZGU6IGR0c05nTW9kdWxlLCBrbm93bjogbnVsbCwgdmlhTW9kdWxlOiBudWxsfTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb25Pck1ldGhvZChkZWNsYXJhdGlvbjogdHMuRGVjbGFyYXRpb24pOiBkZWNsYXJhdGlvbiBpcyB0cy5GdW5jdGlvbkRlY2xhcmF0aW9ufFxuICAgIHRzLk1ldGhvZERlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihkZWNsYXJhdGlvbikgfHwgdHMuaXNNZXRob2REZWNsYXJhdGlvbihkZWNsYXJhdGlvbik7XG59XG5cbmZ1bmN0aW9uIGlzQW55S2V5d29yZCh0eXBlUGFyYW06IHRzLlR5cGVOb2RlKTogdHlwZVBhcmFtIGlzIHRzLktleXdvcmRUeXBlTm9kZSB7XG4gIHJldHVybiB0eXBlUGFyYW0ua2luZCA9PT0gdHMuU3ludGF4S2luZC5BbnlLZXl3b3JkO1xufVxuIl19
@@ -0,0 +1,42 @@
1
+ /// <amd-module name="@angular/compiler-cli/ngcc/src/analysis/ngcc_trait_compiler" />
2
+ /**
3
+ * @license
4
+ * Copyright Google Inc. 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
+ import * as ts from 'typescript';
10
+ import { ClassDeclaration, Decorator } from '../../../src/ngtsc/reflection';
11
+ import { DecoratorHandler, HandlerFlags, Trait, TraitCompiler } from '../../../src/ngtsc/transform';
12
+ import { NgccReflectionHost } from '../host/ngcc_host';
13
+ /**
14
+ * Specializes the `TraitCompiler` for ngcc purposes. Mainly, this includes an alternative way of
15
+ * scanning for classes to compile using the reflection host's `findClassSymbols`, together with
16
+ * support to inject synthetic decorators into the compilation for ad-hoc migrations that ngcc
17
+ * performs.
18
+ */
19
+ export declare class NgccTraitCompiler extends TraitCompiler {
20
+ private ngccReflector;
21
+ constructor(handlers: DecoratorHandler<unknown, unknown, unknown>[], ngccReflector: NgccReflectionHost);
22
+ get analyzedFiles(): ts.SourceFile[];
23
+ /**
24
+ * Analyzes the source file in search for classes to process. For any class that is found in the
25
+ * file, a `ClassRecord` is created and the source file is included in the `analyzedFiles` array.
26
+ */
27
+ analyzeFile(sf: ts.SourceFile): void;
28
+ /**
29
+ * Associate a new synthesized decorator, which did not appear in the original source, with a
30
+ * given class.
31
+ * @param clazz the class to receive the new decorator.
32
+ * @param decorator the decorator to inject.
33
+ * @param flags optional bitwise flag to influence the compilation of the decorator.
34
+ */
35
+ injectSyntheticDecorator(clazz: ClassDeclaration, decorator: Decorator, flags?: HandlerFlags): Trait<unknown, unknown, unknown>[];
36
+ /**
37
+ * Returns all decorators that have been recognized for the provided class, including any
38
+ * synthetically injected decorators.
39
+ * @param clazz the declaration for which the decorators are returned.
40
+ */
41
+ getAllDecorators(clazz: ClassDeclaration): Decorator[] | null;
42
+ }
@@ -0,0 +1,107 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define("@angular/compiler-cli/ngcc/src/analysis/ngcc_trait_compiler", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/perf", "@angular/compiler-cli/src/ngtsc/transform", "@angular/compiler-cli/ngcc/src/utils"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ var tslib_1 = require("tslib");
13
+ var perf_1 = require("@angular/compiler-cli/src/ngtsc/perf");
14
+ var transform_1 = require("@angular/compiler-cli/src/ngtsc/transform");
15
+ var utils_1 = require("@angular/compiler-cli/ngcc/src/utils");
16
+ /**
17
+ * Specializes the `TraitCompiler` for ngcc purposes. Mainly, this includes an alternative way of
18
+ * scanning for classes to compile using the reflection host's `findClassSymbols`, together with
19
+ * support to inject synthetic decorators into the compilation for ad-hoc migrations that ngcc
20
+ * performs.
21
+ */
22
+ var NgccTraitCompiler = /** @class */ (function (_super) {
23
+ tslib_1.__extends(NgccTraitCompiler, _super);
24
+ function NgccTraitCompiler(handlers, ngccReflector) {
25
+ var _this = _super.call(this, handlers, ngccReflector, perf_1.NOOP_PERF_RECORDER, new NoIncrementalBuild(),
26
+ /* compileNonExportedClasses */ true, new transform_1.DtsTransformRegistry()) || this;
27
+ _this.ngccReflector = ngccReflector;
28
+ return _this;
29
+ }
30
+ Object.defineProperty(NgccTraitCompiler.prototype, "analyzedFiles", {
31
+ get: function () { return Array.from(this.fileToClasses.keys()); },
32
+ enumerable: true,
33
+ configurable: true
34
+ });
35
+ /**
36
+ * Analyzes the source file in search for classes to process. For any class that is found in the
37
+ * file, a `ClassRecord` is created and the source file is included in the `analyzedFiles` array.
38
+ */
39
+ NgccTraitCompiler.prototype.analyzeFile = function (sf) {
40
+ var e_1, _a;
41
+ var ngccClassSymbols = this.ngccReflector.findClassSymbols(sf);
42
+ try {
43
+ for (var ngccClassSymbols_1 = tslib_1.__values(ngccClassSymbols), ngccClassSymbols_1_1 = ngccClassSymbols_1.next(); !ngccClassSymbols_1_1.done; ngccClassSymbols_1_1 = ngccClassSymbols_1.next()) {
44
+ var classSymbol = ngccClassSymbols_1_1.value;
45
+ this.analyzeClass(classSymbol.declaration.valueDeclaration, null);
46
+ }
47
+ }
48
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
49
+ finally {
50
+ try {
51
+ if (ngccClassSymbols_1_1 && !ngccClassSymbols_1_1.done && (_a = ngccClassSymbols_1.return)) _a.call(ngccClassSymbols_1);
52
+ }
53
+ finally { if (e_1) throw e_1.error; }
54
+ }
55
+ return undefined;
56
+ };
57
+ /**
58
+ * Associate a new synthesized decorator, which did not appear in the original source, with a
59
+ * given class.
60
+ * @param clazz the class to receive the new decorator.
61
+ * @param decorator the decorator to inject.
62
+ * @param flags optional bitwise flag to influence the compilation of the decorator.
63
+ */
64
+ NgccTraitCompiler.prototype.injectSyntheticDecorator = function (clazz, decorator, flags) {
65
+ var e_2, _a;
66
+ var migratedTraits = this.detectTraits(clazz, [decorator]);
67
+ if (migratedTraits === null) {
68
+ return [];
69
+ }
70
+ try {
71
+ for (var migratedTraits_1 = tslib_1.__values(migratedTraits), migratedTraits_1_1 = migratedTraits_1.next(); !migratedTraits_1_1.done; migratedTraits_1_1 = migratedTraits_1.next()) {
72
+ var trait = migratedTraits_1_1.value;
73
+ this.analyzeTrait(clazz, trait, flags);
74
+ }
75
+ }
76
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
77
+ finally {
78
+ try {
79
+ if (migratedTraits_1_1 && !migratedTraits_1_1.done && (_a = migratedTraits_1.return)) _a.call(migratedTraits_1);
80
+ }
81
+ finally { if (e_2) throw e_2.error; }
82
+ }
83
+ return migratedTraits;
84
+ };
85
+ /**
86
+ * Returns all decorators that have been recognized for the provided class, including any
87
+ * synthetically injected decorators.
88
+ * @param clazz the declaration for which the decorators are returned.
89
+ */
90
+ NgccTraitCompiler.prototype.getAllDecorators = function (clazz) {
91
+ var record = this.recordFor(clazz);
92
+ if (record === null) {
93
+ return null;
94
+ }
95
+ return record.traits.map(function (trait) { return trait.detected.decorator; }).filter(utils_1.isDefined);
96
+ };
97
+ return NgccTraitCompiler;
98
+ }(transform_1.TraitCompiler));
99
+ exports.NgccTraitCompiler = NgccTraitCompiler;
100
+ var NoIncrementalBuild = /** @class */ (function () {
101
+ function NoIncrementalBuild() {
102
+ }
103
+ NoIncrementalBuild.prototype.priorWorkFor = function (sf) { return null; };
104
+ return NoIncrementalBuild;
105
+ }());
106
+ });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdjY190cmFpdF9jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9hbmFseXNpcy9uZ2NjX3RyYWl0X2NvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQVVBLDZEQUEyRDtJQUUzRCx1RUFBd0g7SUFFeEgsOERBQW1DO0lBRW5DOzs7OztPQUtHO0lBQ0g7UUFBdUMsNkNBQWE7UUFDbEQsMkJBQ0ksUUFBdUQsRUFDL0MsYUFBaUM7WUFGN0MsWUFHRSxrQkFDSSxRQUFRLEVBQUUsYUFBYSxFQUFFLHlCQUFrQixFQUFFLElBQUksa0JBQWtCLEVBQUU7WUFDckUsK0JBQStCLENBQUMsSUFBSSxFQUFFLElBQUksZ0NBQW9CLEVBQUUsQ0FBQyxTQUN0RTtZQUpXLG1CQUFhLEdBQWIsYUFBYSxDQUFvQjs7UUFJN0MsQ0FBQztRQUVELHNCQUFJLDRDQUFhO2lCQUFqQixjQUF1QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7O1dBQUE7UUFFdEY7OztXQUdHO1FBQ0gsdUNBQVcsR0FBWCxVQUFZLEVBQWlCOztZQUMzQixJQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7O2dCQUNqRSxLQUEwQixJQUFBLHFCQUFBLGlCQUFBLGdCQUFnQixDQUFBLGtEQUFBLGdGQUFFO29CQUF2QyxJQUFNLFdBQVcsNkJBQUE7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDbkU7Ozs7Ozs7OztZQUVELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRDs7Ozs7O1dBTUc7UUFDSCxvREFBd0IsR0FBeEIsVUFBeUIsS0FBdUIsRUFBRSxTQUFvQixFQUFFLEtBQW9COztZQUUxRixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsSUFBSSxjQUFjLEtBQUssSUFBSSxFQUFFO2dCQUMzQixPQUFPLEVBQUUsQ0FBQzthQUNYOztnQkFFRCxLQUFvQixJQUFBLG1CQUFBLGlCQUFBLGNBQWMsQ0FBQSw4Q0FBQSwwRUFBRTtvQkFBL0IsSUFBTSxLQUFLLDJCQUFBO29CQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDeEM7Ozs7Ozs7OztZQUVELE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRDs7OztXQUlHO1FBQ0gsNENBQWdCLEdBQWhCLFVBQWlCLEtBQXVCO1lBQ3RDLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUF4QixDQUF3QixDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFTLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBQ0gsd0JBQUM7SUFBRCxDQUFDLEFBMURELENBQXVDLHlCQUFhLEdBMERuRDtJQTFEWSw4Q0FBaUI7SUE0RDlCO1FBQUE7UUFFQSxDQUFDO1FBREMseUNBQVksR0FBWixVQUFhLEVBQWlCLElBQWdCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RCx5QkFBQztJQUFELENBQUMsQUFGRCxJQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7SW5jcmVtZW50YWxCdWlsZH0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2luY3JlbWVudGFsL2FwaSc7XG5pbXBvcnQge05PT1BfUEVSRl9SRUNPUkRFUn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3BlcmYnO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBEZWNvcmF0b3J9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCB7RGVjb3JhdG9ySGFuZGxlciwgRHRzVHJhbnNmb3JtUmVnaXN0cnksIEhhbmRsZXJGbGFncywgVHJhaXQsIFRyYWl0Q29tcGlsZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy90cmFuc2Zvcm0nO1xuaW1wb3J0IHtOZ2NjUmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uL2hvc3QvbmdjY19ob3N0JztcbmltcG9ydCB7aXNEZWZpbmVkfSBmcm9tICcuLi91dGlscyc7XG5cbi8qKlxuICogU3BlY2lhbGl6ZXMgdGhlIGBUcmFpdENvbXBpbGVyYCBmb3IgbmdjYyBwdXJwb3Nlcy4gTWFpbmx5LCB0aGlzIGluY2x1ZGVzIGFuIGFsdGVybmF0aXZlIHdheSBvZlxuICogc2Nhbm5pbmcgZm9yIGNsYXNzZXMgdG8gY29tcGlsZSB1c2luZyB0aGUgcmVmbGVjdGlvbiBob3N0J3MgYGZpbmRDbGFzc1N5bWJvbHNgLCB0b2dldGhlciB3aXRoXG4gKiBzdXBwb3J0IHRvIGluamVjdCBzeW50aGV0aWMgZGVjb3JhdG9ycyBpbnRvIHRoZSBjb21waWxhdGlvbiBmb3IgYWQtaG9jIG1pZ3JhdGlvbnMgdGhhdCBuZ2NjXG4gKiBwZXJmb3Jtcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5nY2NUcmFpdENvbXBpbGVyIGV4dGVuZHMgVHJhaXRDb21waWxlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgaGFuZGxlcnM6IERlY29yYXRvckhhbmRsZXI8dW5rbm93biwgdW5rbm93biwgdW5rbm93bj5bXSxcbiAgICAgIHByaXZhdGUgbmdjY1JlZmxlY3RvcjogTmdjY1JlZmxlY3Rpb25Ib3N0KSB7XG4gICAgc3VwZXIoXG4gICAgICAgIGhhbmRsZXJzLCBuZ2NjUmVmbGVjdG9yLCBOT09QX1BFUkZfUkVDT1JERVIsIG5ldyBOb0luY3JlbWVudGFsQnVpbGQoKSxcbiAgICAgICAgLyogY29tcGlsZU5vbkV4cG9ydGVkQ2xhc3NlcyAqLyB0cnVlLCBuZXcgRHRzVHJhbnNmb3JtUmVnaXN0cnkoKSk7XG4gIH1cblxuICBnZXQgYW5hbHl6ZWRGaWxlcygpOiB0cy5Tb3VyY2VGaWxlW10geyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZpbGVUb0NsYXNzZXMua2V5cygpKTsgfVxuXG4gIC8qKlxuICAgKiBBbmFseXplcyB0aGUgc291cmNlIGZpbGUgaW4gc2VhcmNoIGZvciBjbGFzc2VzIHRvIHByb2Nlc3MuIEZvciBhbnkgY2xhc3MgdGhhdCBpcyBmb3VuZCBpbiB0aGVcbiAgICogZmlsZSwgYSBgQ2xhc3NSZWNvcmRgIGlzIGNyZWF0ZWQgYW5kIHRoZSBzb3VyY2UgZmlsZSBpcyBpbmNsdWRlZCBpbiB0aGUgYGFuYWx5emVkRmlsZXNgIGFycmF5LlxuICAgKi9cbiAgYW5hbHl6ZUZpbGUoc2Y6IHRzLlNvdXJjZUZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBuZ2NjQ2xhc3NTeW1ib2xzID0gdGhpcy5uZ2NjUmVmbGVjdG9yLmZpbmRDbGFzc1N5bWJvbHMoc2YpO1xuICAgIGZvciAoY29uc3QgY2xhc3NTeW1ib2wgb2YgbmdjY0NsYXNzU3ltYm9scykge1xuICAgICAgdGhpcy5hbmFseXplQ2xhc3MoY2xhc3NTeW1ib2wuZGVjbGFyYXRpb24udmFsdWVEZWNsYXJhdGlvbiwgbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NvY2lhdGUgYSBuZXcgc3ludGhlc2l6ZWQgZGVjb3JhdG9yLCB3aGljaCBkaWQgbm90IGFwcGVhciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCB3aXRoIGFcbiAgICogZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSBjbGF6eiB0aGUgY2xhc3MgdG8gcmVjZWl2ZSB0aGUgbmV3IGRlY29yYXRvci5cbiAgICogQHBhcmFtIGRlY29yYXRvciB0aGUgZGVjb3JhdG9yIHRvIGluamVjdC5cbiAgICogQHBhcmFtIGZsYWdzIG9wdGlvbmFsIGJpdHdpc2UgZmxhZyB0byBpbmZsdWVuY2UgdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBkZWNvcmF0b3IuXG4gICAqL1xuICBpbmplY3RTeW50aGV0aWNEZWNvcmF0b3IoY2xheno6IENsYXNzRGVjbGFyYXRpb24sIGRlY29yYXRvcjogRGVjb3JhdG9yLCBmbGFncz86IEhhbmRsZXJGbGFncyk6XG4gICAgICBUcmFpdDx1bmtub3duLCB1bmtub3duLCB1bmtub3duPltdIHtcbiAgICBjb25zdCBtaWdyYXRlZFRyYWl0cyA9IHRoaXMuZGV0ZWN0VHJhaXRzKGNsYXp6LCBbZGVjb3JhdG9yXSk7XG4gICAgaWYgKG1pZ3JhdGVkVHJhaXRzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0cmFpdCBvZiBtaWdyYXRlZFRyYWl0cykge1xuICAgICAgdGhpcy5hbmFseXplVHJhaXQoY2xhenosIHRyYWl0LCBmbGFncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pZ3JhdGVkVHJhaXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGRlY29yYXRvcnMgdGhhdCBoYXZlIGJlZW4gcmVjb2duaXplZCBmb3IgdGhlIHByb3ZpZGVkIGNsYXNzLCBpbmNsdWRpbmcgYW55XG4gICAqIHN5bnRoZXRpY2FsbHkgaW5qZWN0ZWQgZGVjb3JhdG9ycy5cbiAgICogQHBhcmFtIGNsYXp6IHRoZSBkZWNsYXJhdGlvbiBmb3Igd2hpY2ggdGhlIGRlY29yYXRvcnMgYXJlIHJldHVybmVkLlxuICAgKi9cbiAgZ2V0QWxsRGVjb3JhdG9ycyhjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbik6IERlY29yYXRvcltdfG51bGwge1xuICAgIGNvbnN0IHJlY29yZCA9IHRoaXMucmVjb3JkRm9yKGNsYXp6KTtcbiAgICBpZiAocmVjb3JkID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVjb3JkLnRyYWl0cy5tYXAodHJhaXQgPT4gdHJhaXQuZGV0ZWN0ZWQuZGVjb3JhdG9yKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgfVxufVxuXG5jbGFzcyBOb0luY3JlbWVudGFsQnVpbGQgaW1wbGVtZW50cyBJbmNyZW1lbnRhbEJ1aWxkPGFueT4ge1xuICBwcmlvcldvcmtGb3Ioc2Y6IHRzLlNvdXJjZUZpbGUpOiBhbnlbXXxudWxsIHsgcmV0dXJuIG51bGw7IH1cbn1cbiJdfQ==
@@ -10,35 +10,21 @@ import { ConstantPool } from '@angular/compiler';
10
10
  import * as ts from 'typescript';
11
11
  import { Reexport } from '../../../src/ngtsc/imports';
12
12
  import { ClassDeclaration, Decorator } from '../../../src/ngtsc/reflection';
13
- import { CompileResult, DecoratorHandler, DetectResult } from '../../../src/ngtsc/transform';
14
- export interface AnalyzedFile {
15
- sourceFile: ts.SourceFile;
16
- analyzedClasses: AnalyzedClass[];
17
- }
18
- export interface AnalyzedClass {
13
+ import { CompileResult } from '../../../src/ngtsc/transform';
14
+ export interface CompiledClass {
19
15
  name: string;
20
16
  decorators: Decorator[] | null;
21
17
  declaration: ClassDeclaration;
22
- diagnostics?: ts.Diagnostic[];
23
- matches: MatchingHandler<unknown, unknown, unknown>[];
24
- }
25
- export interface CompiledClass extends AnalyzedClass {
26
18
  compilation: CompileResult[];
27
- /**
28
- * Any re-exports which should be added next to this class, both in .js and (if possible) .d.ts.
29
- */
30
- reexports: Reexport[];
31
19
  }
32
20
  export interface CompiledFile {
33
21
  compiledClasses: CompiledClass[];
34
22
  sourceFile: ts.SourceFile;
35
23
  constantPool: ConstantPool;
24
+ /**
25
+ * Any re-exports which should be added next to this class, both in .js and (if possible) .d.ts.
26
+ */
27
+ reexports: Reexport[];
36
28
  }
37
29
  export declare type DecorationAnalyses = Map<ts.SourceFile, CompiledFile>;
38
30
  export declare const DecorationAnalyses: MapConstructor;
39
- export interface MatchingHandler<D, A, R> {
40
- handler: DecoratorHandler<D, A, R>;
41
- detected: DetectResult<D>;
42
- analysis: Readonly<A>;
43
- resolution: Readonly<R>;
44
- }
@@ -11,4 +11,4 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DecorationAnalyses = Map;
13
13
  });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvYW5hbHlzaXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUEwQ2EsUUFBQSxrQkFBa0IsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0NvbnN0YW50UG9vbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge1JlZXhwb3J0fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIERlY29yYXRvcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtDb21waWxlUmVzdWx0LCBEZWNvcmF0b3JIYW5kbGVyLCBEZXRlY3RSZXN1bHR9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy90cmFuc2Zvcm0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5emVkRmlsZSB7XG4gIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGU7XG4gIGFuYWx5emVkQ2xhc3NlczogQW5hbHl6ZWRDbGFzc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5emVkQ2xhc3Mge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlY29yYXRvcnM6IERlY29yYXRvcltdfG51bGw7XG4gIGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uO1xuICBkaWFnbm9zdGljcz86IHRzLkRpYWdub3N0aWNbXTtcbiAgbWF0Y2hlczogTWF0Y2hpbmdIYW5kbGVyPHVua25vd24sIHVua25vd24sIHVua25vd24+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZWRDbGFzcyBleHRlbmRzIEFuYWx5emVkQ2xhc3Mge1xuICBjb21waWxhdGlvbjogQ29tcGlsZVJlc3VsdFtdO1xuXG4gIC8qKlxuICAgKiBBbnkgcmUtZXhwb3J0cyB3aGljaCBzaG91bGQgYmUgYWRkZWQgbmV4dCB0byB0aGlzIGNsYXNzLCBib3RoIGluIC5qcyBhbmQgKGlmIHBvc3NpYmxlKSAuZC50cy5cbiAgICovXG4gIHJlZXhwb3J0czogUmVleHBvcnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlZEZpbGUge1xuICBjb21waWxlZENsYXNzZXM6IENvbXBpbGVkQ2xhc3NbXTtcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZTtcbiAgY29uc3RhbnRQb29sOiBDb25zdGFudFBvb2w7XG59XG5cbmV4cG9ydCB0eXBlIERlY29yYXRpb25BbmFseXNlcyA9IE1hcDx0cy5Tb3VyY2VGaWxlLCBDb21waWxlZEZpbGU+O1xuZXhwb3J0IGNvbnN0IERlY29yYXRpb25BbmFseXNlcyA9IE1hcDtcblxuZXhwb3J0IGludGVyZmFjZSBNYXRjaGluZ0hhbmRsZXI8RCwgQSwgUj4ge1xuICBoYW5kbGVyOiBEZWNvcmF0b3JIYW5kbGVyPEQsIEEsIFI+O1xuICBkZXRlY3RlZDogRGV0ZWN0UmVzdWx0PEQ+O1xuICBhbmFseXNpczogUmVhZG9ubHk8QT47XG4gIHJlc29sdXRpb246IFJlYWRvbmx5PFI+O1xufVxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvYW5hbHlzaXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFnQ2EsUUFBQSxrQkFBa0IsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0NvbnN0YW50UG9vbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge1JlZXhwb3J0fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIERlY29yYXRvcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtDb21waWxlUmVzdWx0fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdHJhbnNmb3JtJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlZENsYXNzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JbXXxudWxsO1xuICBkZWNsYXJhdGlvbjogQ2xhc3NEZWNsYXJhdGlvbjtcbiAgY29tcGlsYXRpb246IENvbXBpbGVSZXN1bHRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlZEZpbGUge1xuICBjb21waWxlZENsYXNzZXM6IENvbXBpbGVkQ2xhc3NbXTtcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZTtcbiAgY29uc3RhbnRQb29sOiBDb25zdGFudFBvb2w7XG5cbiAgLyoqXG4gICAqIEFueSByZS1leHBvcnRzIHdoaWNoIHNob3VsZCBiZSBhZGRlZCBuZXh0IHRvIHRoaXMgY2xhc3MsIGJvdGggaW4gLmpzIGFuZCAoaWYgcG9zc2libGUpIC5kLnRzLlxuICAgKi9cbiAgcmVleHBvcnRzOiBSZWV4cG9ydFtdO1xufVxuXG5leHBvcnQgdHlwZSBEZWNvcmF0aW9uQW5hbHlzZXMgPSBNYXA8dHMuU291cmNlRmlsZSwgQ29tcGlsZWRGaWxlPjtcbmV4cG9ydCBjb25zdCBEZWNvcmF0aW9uQW5hbHlzZXMgPSBNYXA7XG4iXX0=
@@ -9,10 +9,5 @@
9
9
  import * as ts from 'typescript';
10
10
  import { AbsoluteFsPath } from '../../../src/ngtsc/file_system';
11
11
  import { DependencyTracker } from '../../../src/ngtsc/incremental/api';
12
- import { Decorator } from '../../../src/ngtsc/reflection';
13
- import { DecoratorHandler, HandlerFlags } from '../../../src/ngtsc/transform';
14
- import { NgccClassSymbol } from '../host/ngcc_host';
15
- import { AnalyzedClass } from './types';
16
12
  export declare function isWithinPackage(packagePath: AbsoluteFsPath, sourceFile: ts.SourceFile): boolean;
17
- export declare function analyzeDecorators(classSymbol: NgccClassSymbol, decorators: Decorator[] | null, handlers: DecoratorHandler<unknown, unknown, unknown>[], flags?: HandlerFlags): AnalyzedClass | null;
18
13
  export declare const NOOP_DEPENDENCY_TRACKER: DependencyTracker;