@angular/compiler-cli 9.0.0-rc.6 → 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 (255) hide show
  1. package/ngcc/src/analysis/decoration_analyzer.d.ts +13 -26
  2. package/ngcc/src/analysis/decoration_analyzer.js +100 -134
  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/private_declarations_analyzer.d.ts +0 -1
  9. package/ngcc/src/analysis/private_declarations_analyzer.js +4 -35
  10. package/ngcc/src/analysis/types.d.ts +6 -21
  11. package/ngcc/src/analysis/types.js +1 -1
  12. package/ngcc/src/analysis/util.d.ts +2 -5
  13. package/ngcc/src/analysis/util.js +11 -94
  14. package/ngcc/src/dependencies/commonjs_dependency_host.d.ts +1 -1
  15. package/ngcc/src/dependencies/commonjs_dependency_host.js +90 -39
  16. package/ngcc/src/dependencies/dependency_host.d.ts +7 -5
  17. package/ngcc/src/dependencies/dependency_host.js +12 -10
  18. package/ngcc/src/dependencies/dependency_resolver.d.ts +2 -1
  19. package/ngcc/src/dependencies/dependency_resolver.js +9 -4
  20. package/ngcc/src/dependencies/dts_dependency_host.d.ts +21 -0
  21. package/ngcc/src/dependencies/dts_dependency_host.js +34 -0
  22. package/ngcc/src/dependencies/esm_dependency_host.d.ts +8 -1
  23. package/ngcc/src/dependencies/esm_dependency_host.js +30 -22
  24. package/ngcc/src/dependencies/module_resolver.d.ts +1 -1
  25. package/ngcc/src/dependencies/module_resolver.js +1 -1
  26. package/ngcc/src/dependencies/umd_dependency_host.d.ts +1 -1
  27. package/ngcc/src/dependencies/umd_dependency_host.js +3 -3
  28. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.d.ts +2 -0
  29. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +49 -9
  30. package/ngcc/src/execution/cluster/executor.d.ts +3 -1
  31. package/ngcc/src/execution/cluster/executor.js +12 -7
  32. package/ngcc/src/execution/cluster/package_json_updater.js +3 -2
  33. package/ngcc/src/execution/cluster/worker.d.ts +3 -1
  34. package/ngcc/src/execution/cluster/worker.js +10 -7
  35. package/ngcc/src/execution/lock_file.d.ts +43 -0
  36. package/ngcc/src/execution/lock_file.js +129 -0
  37. package/ngcc/src/execution/single_process_executor.d.ts +3 -1
  38. package/ngcc/src/execution/single_process_executor.js +18 -15
  39. package/ngcc/src/execution/task_selection/base_task_queue.d.ts +1 -1
  40. package/ngcc/src/host/commonjs_host.d.ts +6 -18
  41. package/ngcc/src/host/commonjs_host.js +45 -81
  42. package/ngcc/src/host/commonjs_umd_utils.d.ts +73 -0
  43. package/ngcc/src/host/commonjs_umd_utils.js +109 -0
  44. package/ngcc/src/host/esm2015_host.d.ts +46 -14
  45. package/ngcc/src/host/esm2015_host.js +182 -55
  46. package/ngcc/src/host/esm5_host.js +3 -1
  47. package/ngcc/src/host/umd_host.d.ts +12 -5
  48. package/ngcc/src/host/umd_host.js +144 -92
  49. package/ngcc/src/main.js +65 -122
  50. package/ngcc/src/migrations/migration.d.ts +1 -0
  51. package/ngcc/src/migrations/migration.js +1 -1
  52. package/ngcc/src/packages/build_marker.d.ts +17 -8
  53. package/ngcc/src/packages/build_marker.js +61 -32
  54. package/ngcc/src/packages/entry_point_bundle.js +2 -2
  55. package/ngcc/src/packages/transformer.js +5 -6
  56. package/ngcc/src/rendering/commonjs_rendering_formatter.js +9 -5
  57. package/ngcc/src/rendering/dts_renderer.js +8 -5
  58. package/ngcc/src/rendering/esm_rendering_formatter.js +17 -5
  59. package/ngcc/src/rendering/renderer.js +4 -4
  60. package/ngcc/src/rendering/umd_rendering_formatter.d.ts +18 -1
  61. package/ngcc/src/rendering/umd_rendering_formatter.js +69 -16
  62. package/ngcc/src/utils.d.ts +14 -0
  63. package/ngcc/src/utils.js +29 -1
  64. package/ngcc/src/writing/cleaning/cleaning_strategies.d.ts +45 -0
  65. package/ngcc/src/writing/cleaning/cleaning_strategies.js +77 -0
  66. package/ngcc/src/writing/cleaning/package_cleaner.d.ts +39 -0
  67. package/ngcc/src/writing/cleaning/package_cleaner.js +125 -0
  68. package/ngcc/src/writing/cleaning/utils.d.ts +16 -0
  69. package/ngcc/src/writing/cleaning/utils.js +29 -0
  70. package/ngcc/src/writing/in_place_file_writer.d.ts +1 -0
  71. package/ngcc/src/writing/in_place_file_writer.js +3 -2
  72. package/ngcc/src/writing/new_entry_point_file_writer.d.ts +2 -0
  73. package/ngcc/src/writing/new_entry_point_file_writer.js +5 -4
  74. package/ngcc/src/writing/package_json_updater.d.ts +24 -10
  75. package/ngcc/src/writing/package_json_updater.js +53 -10
  76. package/package.json +6 -5
  77. package/src/main.d.ts +2 -2
  78. package/src/metadata/symbols.d.ts +1 -1
  79. package/src/ngtsc/annotations/src/component.d.ts +58 -20
  80. package/src/ngtsc/annotations/src/component.js +149 -97
  81. package/src/ngtsc/annotations/src/diagnostics.d.ts +23 -0
  82. package/src/ngtsc/annotations/src/diagnostics.js +123 -0
  83. package/src/ngtsc/annotations/src/directive.d.ts +19 -8
  84. package/src/ngtsc/annotations/src/directive.js +41 -18
  85. package/src/ngtsc/annotations/src/injectable.d.ts +8 -4
  86. package/src/ngtsc/annotations/src/injectable.js +7 -3
  87. package/src/ngtsc/annotations/src/ng_module.d.ts +22 -7
  88. package/src/ngtsc/annotations/src/ng_module.js +115 -52
  89. package/src/ngtsc/annotations/src/pipe.d.ts +12 -6
  90. package/src/ngtsc/annotations/src/pipe.js +22 -5
  91. package/src/ngtsc/annotations/src/util.d.ts +22 -0
  92. package/src/ngtsc/annotations/src/util.js +92 -3
  93. package/src/ngtsc/core/api.d.ts +368 -0
  94. package/src/ngtsc/core/api.js +20 -0
  95. package/src/ngtsc/core/index.d.ts +10 -0
  96. package/src/ngtsc/core/index.js +24 -0
  97. package/src/ngtsc/core/src/compiler.d.ts +120 -0
  98. package/src/ngtsc/core/src/compiler.js +769 -0
  99. package/src/ngtsc/core/src/host.d.ts +85 -0
  100. package/src/ngtsc/core/src/host.js +208 -0
  101. package/src/ngtsc/cycles/src/imports.js +2 -2
  102. package/src/ngtsc/diagnostics/index.d.ts +1 -1
  103. package/src/ngtsc/diagnostics/index.js +5 -5
  104. package/src/ngtsc/diagnostics/src/error.d.ts +1 -1
  105. package/src/ngtsc/diagnostics/src/error.js +1 -1
  106. package/src/ngtsc/diagnostics/src/{code.d.ts → error_code.d.ts} +27 -4
  107. package/src/ngtsc/diagnostics/src/error_code.js +128 -0
  108. package/src/ngtsc/file_system/src/cached_file_system.d.ts +3 -1
  109. package/src/ngtsc/file_system/src/cached_file_system.js +48 -4
  110. package/src/ngtsc/file_system/src/invalid_file_system.d.ts +3 -1
  111. package/src/ngtsc/file_system/src/invalid_file_system.js +4 -2
  112. package/src/ngtsc/file_system/src/node_js_file_system.d.ts +3 -1
  113. package/src/ngtsc/file_system/src/node_js_file_system.js +8 -4
  114. package/src/ngtsc/file_system/src/types.d.ts +3 -1
  115. package/src/ngtsc/file_system/src/types.js +1 -1
  116. package/src/ngtsc/imports/index.d.ts +3 -3
  117. package/src/ngtsc/imports/index.js +4 -4
  118. package/src/ngtsc/imports/src/alias.d.ts +12 -11
  119. package/src/ngtsc/imports/src/alias.js +21 -16
  120. package/src/ngtsc/imports/src/emitter.d.ts +40 -19
  121. package/src/ngtsc/imports/src/emitter.js +54 -26
  122. package/src/ngtsc/imports/src/references.d.ts +30 -8
  123. package/src/ngtsc/imports/src/references.js +41 -6
  124. package/src/ngtsc/imports/src/resolver.d.ts +3 -6
  125. package/src/ngtsc/imports/src/resolver.js +5 -4
  126. package/src/ngtsc/incremental/api.d.ts +51 -0
  127. package/src/ngtsc/incremental/api.js +20 -0
  128. package/src/ngtsc/incremental/index.d.ts +1 -0
  129. package/src/ngtsc/incremental/index.js +4 -2
  130. package/src/ngtsc/incremental/src/dependency_tracking.d.ts +56 -0
  131. package/src/ngtsc/incremental/src/dependency_tracking.js +186 -0
  132. package/src/ngtsc/incremental/src/noop.d.ts +10 -0
  133. package/src/ngtsc/incremental/src/noop.js +23 -0
  134. package/src/ngtsc/incremental/src/state.d.ts +8 -14
  135. package/src/ngtsc/incremental/src/state.js +83 -80
  136. package/src/ngtsc/indexer/index.d.ts +1 -0
  137. package/src/ngtsc/indexer/index.js +4 -2
  138. package/src/ngtsc/metadata/index.d.ts +1 -1
  139. package/src/ngtsc/metadata/index.js +2 -1
  140. package/src/ngtsc/metadata/src/api.d.ts +8 -0
  141. package/src/ngtsc/metadata/src/api.js +1 -1
  142. package/src/ngtsc/metadata/src/dts.js +2 -1
  143. package/src/ngtsc/metadata/src/registry.d.ts +12 -1
  144. package/src/ngtsc/metadata/src/registry.js +22 -2
  145. package/src/ngtsc/metadata/src/util.d.ts +2 -0
  146. package/src/ngtsc/metadata/src/util.js +10 -1
  147. package/src/ngtsc/modulewithproviders/src/scanner.js +2 -2
  148. package/src/ngtsc/partial_evaluator/index.d.ts +1 -1
  149. package/src/ngtsc/partial_evaluator/index.js +1 -1
  150. package/src/ngtsc/partial_evaluator/src/builtin.d.ts +7 -6
  151. package/src/ngtsc/partial_evaluator/src/builtin.js +54 -9
  152. package/src/ngtsc/partial_evaluator/src/interface.d.ts +3 -9
  153. package/src/ngtsc/partial_evaluator/src/interface.js +4 -3
  154. package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +4 -3
  155. package/src/ngtsc/partial_evaluator/src/interpreter.js +11 -7
  156. package/src/ngtsc/partial_evaluator/src/known_declaration.d.ts +19 -0
  157. package/src/ngtsc/partial_evaluator/src/known_declaration.js +38 -0
  158. package/src/ngtsc/partial_evaluator/src/result.d.ts +1 -1
  159. package/src/ngtsc/partial_evaluator/src/result.js +1 -1
  160. package/src/ngtsc/partial_evaluator/src/ts_helpers.d.ts +1 -1
  161. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +13 -3
  162. package/src/ngtsc/program.d.ts +46 -57
  163. package/src/ngtsc/program.js +68 -574
  164. package/src/ngtsc/reflection/src/host.d.ts +19 -2
  165. package/src/ngtsc/reflection/src/host.js +17 -3
  166. package/src/ngtsc/reflection/src/typescript.js +11 -7
  167. package/src/ngtsc/resource/index.d.ts +9 -0
  168. package/src/ngtsc/resource/index.js +22 -0
  169. package/src/ngtsc/{resource_loader.d.ts → resource/src/loader.d.ts} +4 -4
  170. package/src/ngtsc/resource/src/loader.js +193 -0
  171. package/src/ngtsc/routing/src/route.js +2 -2
  172. package/src/ngtsc/scope/index.d.ts +1 -1
  173. package/src/ngtsc/scope/index.js +1 -1
  174. package/src/ngtsc/scope/src/component_scope.d.ts +2 -2
  175. package/src/ngtsc/scope/src/component_scope.js +1 -1
  176. package/src/ngtsc/scope/src/dependency.js +10 -8
  177. package/src/ngtsc/scope/src/local.d.ts +31 -4
  178. package/src/ngtsc/scope/src/local.js +83 -15
  179. package/src/ngtsc/shims/index.d.ts +2 -1
  180. package/src/ngtsc/shims/index.js +4 -5
  181. package/src/ngtsc/shims/src/api.d.ts +25 -0
  182. package/src/ngtsc/shims/src/api.js +13 -0
  183. package/src/ngtsc/shims/src/factory_generator.d.ts +2 -2
  184. package/src/ngtsc/shims/src/factory_generator.js +1 -1
  185. package/src/ngtsc/shims/src/factory_tracker.d.ts +24 -0
  186. package/src/ngtsc/shims/src/factory_tracker.js +47 -0
  187. package/src/ngtsc/shims/src/summary_generator.d.ts +1 -1
  188. package/src/ngtsc/shims/src/summary_generator.js +1 -1
  189. package/src/ngtsc/shims/src/typecheck_shim.d.ts +1 -1
  190. package/src/ngtsc/shims/src/typecheck_shim.js +1 -1
  191. package/src/ngtsc/synthetic_files_compiler_host.d.ts +1 -1
  192. package/src/ngtsc/transform/index.d.ts +3 -1
  193. package/src/ngtsc/transform/index.js +8 -3
  194. package/src/ngtsc/transform/src/alias.d.ts +1 -1
  195. package/src/ngtsc/transform/src/alias.js +1 -1
  196. package/src/ngtsc/transform/src/api.d.ts +52 -17
  197. package/src/ngtsc/transform/src/api.js +1 -1
  198. package/src/ngtsc/transform/src/compilation.d.ts +68 -47
  199. package/src/ngtsc/transform/src/compilation.js +498 -313
  200. package/src/ngtsc/transform/src/declaration.d.ts +1 -1
  201. package/src/ngtsc/transform/src/declaration.js +6 -1
  202. package/src/ngtsc/transform/src/trait.d.ts +169 -0
  203. package/src/ngtsc/transform/src/trait.js +114 -0
  204. package/src/ngtsc/transform/src/transform.d.ts +2 -2
  205. package/src/ngtsc/transform/src/transform.js +4 -4
  206. package/src/ngtsc/translator/src/translator.d.ts +11 -9
  207. package/src/ngtsc/translator/src/translator.js +51 -18
  208. package/src/ngtsc/typecheck/index.d.ts +1 -0
  209. package/src/ngtsc/typecheck/index.js +4 -2
  210. package/src/ngtsc/typecheck/src/api.d.ts +12 -1
  211. package/src/ngtsc/typecheck/src/api.js +1 -1
  212. package/src/ngtsc/typecheck/src/context.d.ts +3 -2
  213. package/src/ngtsc/typecheck/src/context.js +10 -8
  214. package/src/ngtsc/typecheck/src/diagnostics.d.ts +30 -31
  215. package/src/ngtsc/typecheck/src/diagnostics.js +108 -70
  216. package/src/ngtsc/typecheck/src/dom.d.ts +6 -5
  217. package/src/ngtsc/typecheck/src/dom.js +3 -3
  218. package/src/ngtsc/typecheck/src/environment.d.ts +5 -3
  219. package/src/ngtsc/typecheck/src/environment.js +20 -8
  220. package/src/ngtsc/typecheck/src/expression.d.ts +2 -3
  221. package/src/ngtsc/typecheck/src/expression.js +26 -23
  222. package/src/ngtsc/typecheck/src/host.d.ts +1 -0
  223. package/src/ngtsc/typecheck/src/host.js +4 -1
  224. package/src/ngtsc/typecheck/src/oob.d.ts +11 -11
  225. package/src/ngtsc/typecheck/src/oob.js +15 -4
  226. package/src/ngtsc/typecheck/src/source.d.ts +9 -9
  227. package/src/ngtsc/typecheck/src/source.js +15 -15
  228. package/src/ngtsc/typecheck/src/template_semantics.d.ts +22 -0
  229. package/src/ngtsc/typecheck/src/template_semantics.js +51 -0
  230. package/src/ngtsc/typecheck/src/ts_util.js +36 -1
  231. package/src/ngtsc/typecheck/src/type_check_block.d.ts +3 -3
  232. package/src/ngtsc/typecheck/src/type_check_block.js +70 -43
  233. package/src/ngtsc/typecheck/src/type_check_file.d.ts +2 -2
  234. package/src/ngtsc/typecheck/src/type_check_file.js +3 -3
  235. package/src/ngtsc/typecheck/src/type_constructor.d.ts +4 -4
  236. package/src/ngtsc/typecheck/src/type_constructor.js +15 -10
  237. package/src/ngtsc/typecheck/src/type_emitter.d.ts +72 -0
  238. package/src/ngtsc/typecheck/src/type_emitter.js +150 -0
  239. package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +31 -0
  240. package/src/ngtsc/typecheck/src/type_parameter_emitter.js +96 -0
  241. package/src/ngtsc/util/src/typescript.d.ts +7 -1
  242. package/src/ngtsc/util/src/typescript.js +15 -5
  243. package/src/perform_watch.js +6 -5
  244. package/src/transformers/api.d.ts +3 -204
  245. package/src/transformers/api.js +1 -1
  246. package/src/transformers/compiler_host.js +2 -2
  247. package/src/transformers/program.js +1 -1
  248. package/src/typescript_support.js +2 -2
  249. package/src/version.js +1 -1
  250. package/src/ngtsc/diagnostics/src/code.js +0 -101
  251. package/src/ngtsc/resource_loader.js +0 -193
  252. package/src/ngtsc/shims/src/host.d.ts +0 -46
  253. package/src/ngtsc/shims/src/host.js +0 -82
  254. package/src/ngtsc/util/src/resource_recorder.d.ts +0 -18
  255. package/src/ngtsc/util/src/resource_recorder.js +0 -20
@@ -35,18 +35,29 @@
35
35
  var errorMsg = "No directive found with exportAs '" + value + "'.";
36
36
  this._diagnostics.push(diagnostics_2.makeTemplateDiagnostic(mapping, ref.valueSpan || ref.sourceSpan, ts.DiagnosticCategory.Error, diagnostics_1.ngErrorCode(diagnostics_1.ErrorCode.MISSING_REFERENCE_TARGET), errorMsg));
37
37
  };
38
- OutOfBandDiagnosticRecorderImpl.prototype.missingPipe = function (templateId, ast, absSpan) {
38
+ OutOfBandDiagnosticRecorderImpl.prototype.missingPipe = function (templateId, ast) {
39
39
  var mapping = this.resolver.getSourceMapping(templateId);
40
40
  var errorMsg = "No pipe found with name '" + ast.name + "'.";
41
- var location = diagnostics_2.absoluteSourceSpanToSourceLocation(templateId, absSpan);
42
- var sourceSpan = this.resolver.sourceLocationToSpan(location);
41
+ var sourceSpan = this.resolver.toParseSourceSpan(templateId, ast.nameSpan);
43
42
  if (sourceSpan === null) {
44
43
  throw new Error("Assertion failure: no SourceLocation found for usage of pipe '" + ast.name + "'.");
45
44
  }
46
45
  this._diagnostics.push(diagnostics_2.makeTemplateDiagnostic(mapping, sourceSpan, ts.DiagnosticCategory.Error, diagnostics_1.ngErrorCode(diagnostics_1.ErrorCode.MISSING_PIPE), errorMsg));
47
46
  };
47
+ OutOfBandDiagnosticRecorderImpl.prototype.illegalAssignmentToTemplateVar = function (templateId, assignment, target) {
48
+ var mapping = this.resolver.getSourceMapping(templateId);
49
+ var errorMsg = "Cannot use variable '" + assignment.name + "' as the left-hand side of an assignment expression. Template variables are read-only.";
50
+ var sourceSpan = this.resolver.toParseSourceSpan(templateId, assignment.sourceSpan);
51
+ if (sourceSpan === null) {
52
+ throw new Error("Assertion failure: no SourceLocation found for property binding.");
53
+ }
54
+ this._diagnostics.push(diagnostics_2.makeTemplateDiagnostic(mapping, sourceSpan, ts.DiagnosticCategory.Error, diagnostics_1.ngErrorCode(diagnostics_1.ErrorCode.WRITE_TO_READ_ONLY_VARIABLE), errorMsg, {
55
+ text: "The variable " + assignment.name + " is declared here.",
56
+ span: target.valueSpan || target.sourceSpan,
57
+ }));
58
+ };
48
59
  return OutOfBandDiagnosticRecorderImpl;
49
60
  }());
50
61
  exports.OutOfBandDiagnosticRecorderImpl = OutOfBandDiagnosticRecorderImpl;
51
62
  });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib29iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL29vYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILCtCQUFpQztJQUVqQywyRUFBeUQ7SUFFekQseUZBQTRHO0lBd0M1RztRQUdFLHlDQUFvQixRQUEyQjtZQUEzQixhQUFRLEdBQVIsUUFBUSxDQUFtQjtZQUZ2QyxpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFFTyxDQUFDO1FBRW5ELHNCQUFJLHdEQUFXO2lCQUFmLGNBQWtELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7OztXQUFBO1FBRTdFLGdFQUFzQixHQUF0QixVQUF1QixVQUFrQixFQUFFLEdBQXFCO1lBQzlELElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0QsSUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUvQixJQUFNLFFBQVEsR0FBRyx1Q0FBcUMsS0FBSyxPQUFJLENBQUM7WUFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsb0NBQXNCLENBQ3pDLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFDckUseUJBQVcsQ0FBQyx1QkFBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQscURBQVcsR0FBWCxVQUFZLFVBQWtCLEVBQUUsR0FBZ0IsRUFBRSxPQUEyQjtZQUMzRSxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNELElBQU0sUUFBUSxHQUFHLDhCQUE0QixHQUFHLENBQUMsSUFBSSxPQUFJLENBQUM7WUFFMUQsSUFBTSxRQUFRLEdBQUcsZ0RBQWtDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3pFLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO2dCQUN2QixNQUFNLElBQUksS0FBSyxDQUNYLG1FQUFpRSxHQUFHLENBQUMsSUFBSSxPQUFJLENBQUMsQ0FBQzthQUNwRjtZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9DQUFzQixDQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUseUJBQVcsQ0FBQyx1QkFBUyxDQUFDLFlBQVksQ0FBQyxFQUNyRixRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFDSCxzQ0FBQztJQUFELENBQUMsQUEvQkQsSUErQkM7SUEvQlksMEVBQStCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0Fic29sdXRlU291cmNlU3BhbiwgQmluZGluZ1BpcGUsIFRtcGxBc3RSZWZlcmVuY2V9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0Vycm9yQ29kZSwgbmdFcnJvckNvZGV9IGZyb20gJy4uLy4uL2RpYWdub3N0aWNzJztcblxuaW1wb3J0IHtUY2JTb3VyY2VSZXNvbHZlciwgYWJzb2x1dGVTb3VyY2VTcGFuVG9Tb3VyY2VMb2NhdGlvbiwgbWFrZVRlbXBsYXRlRGlhZ25vc3RpY30gZnJvbSAnLi9kaWFnbm9zdGljcyc7XG5cblxuXG4vKipcbiAqIENvbGxlY3RzIGB0cy5EaWFnbm9zdGljYHMgb24gcHJvYmxlbXMgd2hpY2ggb2NjdXIgaW4gdGhlIHRlbXBsYXRlIHdoaWNoIGFyZW4ndCBkaXJlY3RseSBzb3VyY2VkXG4gKiBmcm9tIFR5cGUgQ2hlY2sgQmxvY2tzLlxuICpcbiAqIER1cmluZyB0aGUgY3JlYXRpb24gb2YgYSBUeXBlIENoZWNrIEJsb2NrLCB0aGUgdGVtcGxhdGUgaXMgdHJhdmVyc2VkIGFuZCB0aGVcbiAqIGBPdXRPZkJhbmREaWFnbm9zdGljUmVjb3JkZXJgIGlzIGNhbGxlZCB0byByZWNvcmQgY2FzZXMgd2hlbiBhIGNvcnJlY3QgaW50ZXJwcmV0YXRpb24gZm9yIHRoZVxuICogdGVtcGxhdGUgY2Fubm90IGJlIGZvdW5kLiBUaGVzZSBvcGVyYXRpb25zIGNyZWF0ZSBgdHMuRGlhZ25vc3RpY2BzIHdoaWNoIGFyZSBzdG9yZWQgYnkgdGhlXG4gKiByZWNvcmRlciBmb3IgbGF0ZXIgZGlzcGxheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdXRPZkJhbmREaWFnbm9zdGljUmVjb3JkZXIge1xuICByZWFkb25seSBkaWFnbm9zdGljczogUmVhZG9ubHlBcnJheTx0cy5EaWFnbm9zdGljPjtcblxuICAvKipcbiAgICogUmVwb3J0cyBhIGAjcmVmPVwidGFyZ2V0XCJgIGV4cHJlc3Npb24gaW4gdGhlIHRlbXBsYXRlIGZvciB3aGljaCBhIHRhcmdldCBkaXJlY3RpdmUgY291bGQgbm90IGJlXG4gICAqIGZvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gdGVtcGxhdGVJZCB0aGUgdGVtcGxhdGUgdHlwZS1jaGVja2luZyBJRCBvZiB0aGUgdGVtcGxhdGUgd2hpY2ggY29udGFpbnMgdGhlIGJyb2tlblxuICAgKiByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSByZWYgdGhlIGBUbXBsQXN0UmVmZXJlbmNlYCB3aGljaCBjb3VsZCBub3QgYmUgbWF0Y2hlZCB0byBhIGRpcmVjdGl2ZS5cbiAgICovXG4gIG1pc3NpbmdSZWZlcmVuY2VUYXJnZXQodGVtcGxhdGVJZDogc3RyaW5nLCByZWY6IFRtcGxBc3RSZWZlcmVuY2UpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXBvcnRzIHVzYWdlIG9mIGEgYHwgcGlwZWAgZXhwcmVzc2lvbiBpbiB0aGUgdGVtcGxhdGUgZm9yIHdoaWNoIHRoZSBuYW1lZCBwaXBlIGNvdWxkIG5vdCBiZVxuICAgKiBmb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIHRlbXBsYXRlSWQgdGhlIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgSUQgb2YgdGhlIHRlbXBsYXRlIHdoaWNoIGNvbnRhaW5zIHRoZSB1bmtub3duXG4gICAqIHBpcGUuXG4gICAqIEBwYXJhbSBhc3QgdGhlIGBCaW5kaW5nUGlwZWAgaW52b2NhdGlvbiBvZiB0aGUgcGlwZSB3aGljaCBjb3VsZCBub3QgYmUgZm91bmQuXG4gICAqIEBwYXJhbSBzb3VyY2VTcGFuIHRoZSBgQWJzb2x1dGVTb3VyY2VTcGFuYCBvZiB0aGUgcGlwZSBpbnZvY2F0aW9uIChpZGVhbGx5LCB0aGlzIHNob3VsZCBiZSB0aGVcbiAgICogc291cmNlIHNwYW4gb2YgdGhlIHBpcGUncyBuYW1lKS4gVGhpcyBkZXBlbmRzIG9uIHRoZSBzb3VyY2Ugc3BhbiBvZiB0aGUgYEJpbmRpbmdQaXBlYCBpdHNlbGZcbiAgICogcGx1cyBzcGFuIG9mIHRoZSBsYXJnZXIgZXhwcmVzc2lvbiBjb250ZXh0LlxuICAgKi9cbiAgbWlzc2luZ1BpcGUodGVtcGxhdGVJZDogc3RyaW5nLCBhc3Q6IEJpbmRpbmdQaXBlLCBzb3VyY2VTcGFuOiBBYnNvbHV0ZVNvdXJjZVNwYW4pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgT3V0T2ZCYW5kRGlhZ25vc3RpY1JlY29yZGVySW1wbCBpbXBsZW1lbnRzIE91dE9mQmFuZERpYWdub3N0aWNSZWNvcmRlciB7XG4gIHByaXZhdGUgX2RpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc29sdmVyOiBUY2JTb3VyY2VSZXNvbHZlcikge31cblxuICBnZXQgZGlhZ25vc3RpY3MoKTogUmVhZG9ubHlBcnJheTx0cy5EaWFnbm9zdGljPiB7IHJldHVybiB0aGlzLl9kaWFnbm9zdGljczsgfVxuXG4gIG1pc3NpbmdSZWZlcmVuY2VUYXJnZXQodGVtcGxhdGVJZDogc3RyaW5nLCByZWY6IFRtcGxBc3RSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICBjb25zdCBtYXBwaW5nID0gdGhpcy5yZXNvbHZlci5nZXRTb3VyY2VNYXBwaW5nKHRlbXBsYXRlSWQpO1xuICAgIGNvbnN0IHZhbHVlID0gcmVmLnZhbHVlLnRyaW0oKTtcblxuICAgIGNvbnN0IGVycm9yTXNnID0gYE5vIGRpcmVjdGl2ZSBmb3VuZCB3aXRoIGV4cG9ydEFzICcke3ZhbHVlfScuYDtcbiAgICB0aGlzLl9kaWFnbm9zdGljcy5wdXNoKG1ha2VUZW1wbGF0ZURpYWdub3N0aWMoXG4gICAgICAgIG1hcHBpbmcsIHJlZi52YWx1ZVNwYW4gfHwgcmVmLnNvdXJjZVNwYW4sIHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcbiAgICAgICAgbmdFcnJvckNvZGUoRXJyb3JDb2RlLk1JU1NJTkdfUkVGRVJFTkNFX1RBUkdFVCksIGVycm9yTXNnKSk7XG4gIH1cblxuICBtaXNzaW5nUGlwZSh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGFzdDogQmluZGluZ1BpcGUsIGFic1NwYW46IEFic29sdXRlU291cmNlU3Bhbik6IHZvaWQge1xuICAgIGNvbnN0IG1hcHBpbmcgPSB0aGlzLnJlc29sdmVyLmdldFNvdXJjZU1hcHBpbmcodGVtcGxhdGVJZCk7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBgTm8gcGlwZSBmb3VuZCB3aXRoIG5hbWUgJyR7YXN0Lm5hbWV9Jy5gO1xuXG4gICAgY29uc3QgbG9jYXRpb24gPSBhYnNvbHV0ZVNvdXJjZVNwYW5Ub1NvdXJjZUxvY2F0aW9uKHRlbXBsYXRlSWQsIGFic1NwYW4pO1xuICAgIGNvbnN0IHNvdXJjZVNwYW4gPSB0aGlzLnJlc29sdmVyLnNvdXJjZUxvY2F0aW9uVG9TcGFuKGxvY2F0aW9uKTtcbiAgICBpZiAoc291cmNlU3BhbiA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBc3NlcnRpb24gZmFpbHVyZTogbm8gU291cmNlTG9jYXRpb24gZm91bmQgZm9yIHVzYWdlIG9mIHBpcGUgJyR7YXN0Lm5hbWV9Jy5gKTtcbiAgICB9XG4gICAgdGhpcy5fZGlhZ25vc3RpY3MucHVzaChtYWtlVGVtcGxhdGVEaWFnbm9zdGljKFxuICAgICAgICBtYXBwaW5nLCBzb3VyY2VTcGFuLCB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsIG5nRXJyb3JDb2RlKEVycm9yQ29kZS5NSVNTSU5HX1BJUEUpLFxuICAgICAgICBlcnJvck1zZykpO1xuICB9XG59XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib29iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL29vYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILCtCQUFpQztJQUVqQywyRUFBeUQ7SUFHekQseUZBQTZFO0lBd0M3RTtRQUdFLHlDQUFvQixRQUFnQztZQUFoQyxhQUFRLEdBQVIsUUFBUSxDQUF3QjtZQUY1QyxpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFFWSxDQUFDO1FBRXhELHNCQUFJLHdEQUFXO2lCQUFmLGNBQWtELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7OztXQUFBO1FBRTdFLGdFQUFzQixHQUF0QixVQUF1QixVQUFzQixFQUFFLEdBQXFCO1lBQ2xFLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0QsSUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUvQixJQUFNLFFBQVEsR0FBRyx1Q0FBcUMsS0FBSyxPQUFJLENBQUM7WUFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsb0NBQXNCLENBQ3pDLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFDckUseUJBQVcsQ0FBQyx1QkFBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQscURBQVcsR0FBWCxVQUFZLFVBQXNCLEVBQUUsR0FBZ0I7WUFDbEQsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzRCxJQUFNLFFBQVEsR0FBRyw4QkFBNEIsR0FBRyxDQUFDLElBQUksT0FBSSxDQUFDO1lBRTFELElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3RSxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQ1gsbUVBQWlFLEdBQUcsQ0FBQyxJQUFJLE9BQUksQ0FBQyxDQUFDO2FBQ3BGO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsb0NBQXNCLENBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSx5QkFBVyxDQUFDLHVCQUFTLENBQUMsWUFBWSxDQUFDLEVBQ3JGLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUVELHdFQUE4QixHQUE5QixVQUNJLFVBQXNCLEVBQUUsVUFBeUIsRUFBRSxNQUF1QjtZQUM1RSxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNELElBQU0sUUFBUSxHQUNWLDBCQUF3QixVQUFVLENBQUMsSUFBSSwyRkFBd0YsQ0FBQztZQUVwSSxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEYsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO2dCQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7YUFDckY7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxvQ0FBc0IsQ0FDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUNoRCx5QkFBVyxDQUFDLHVCQUFTLENBQUMsMkJBQTJCLENBQUMsRUFBRSxRQUFRLEVBQUU7Z0JBQzVELElBQUksRUFBRSxrQkFBZ0IsVUFBVSxDQUFDLElBQUksdUJBQW9CO2dCQUN6RCxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsVUFBVTthQUM1QyxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUM7UUFDSCxzQ0FBQztJQUFELENBQUMsQUFoREQsSUFnREM7SUFoRFksMEVBQStCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0JpbmRpbmdQaXBlLCBQcm9wZXJ0eVdyaXRlLCBUbXBsQXN0UmVmZXJlbmNlLCBUbXBsQXN0VmFyaWFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0Vycm9yQ29kZSwgbmdFcnJvckNvZGV9IGZyb20gJy4uLy4uL2RpYWdub3N0aWNzJztcblxuaW1wb3J0IHtUZW1wbGF0ZUlkfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge1RlbXBsYXRlU291cmNlUmVzb2x2ZXIsIG1ha2VUZW1wbGF0ZURpYWdub3N0aWN9IGZyb20gJy4vZGlhZ25vc3RpY3MnO1xuXG5cblxuLyoqXG4gKiBDb2xsZWN0cyBgdHMuRGlhZ25vc3RpY2BzIG9uIHByb2JsZW1zIHdoaWNoIG9jY3VyIGluIHRoZSB0ZW1wbGF0ZSB3aGljaCBhcmVuJ3QgZGlyZWN0bHkgc291cmNlZFxuICogZnJvbSBUeXBlIENoZWNrIEJsb2Nrcy5cbiAqXG4gKiBEdXJpbmcgdGhlIGNyZWF0aW9uIG9mIGEgVHlwZSBDaGVjayBCbG9jaywgdGhlIHRlbXBsYXRlIGlzIHRyYXZlcnNlZCBhbmQgdGhlXG4gKiBgT3V0T2ZCYW5kRGlhZ25vc3RpY1JlY29yZGVyYCBpcyBjYWxsZWQgdG8gcmVjb3JkIGNhc2VzIHdoZW4gYSBjb3JyZWN0IGludGVycHJldGF0aW9uIGZvciB0aGVcbiAqIHRlbXBsYXRlIGNhbm5vdCBiZSBmb3VuZC4gVGhlc2Ugb3BlcmF0aW9ucyBjcmVhdGUgYHRzLkRpYWdub3N0aWNgcyB3aGljaCBhcmUgc3RvcmVkIGJ5IHRoZVxuICogcmVjb3JkZXIgZm9yIGxhdGVyIGRpc3BsYXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0T2ZCYW5kRGlhZ25vc3RpY1JlY29yZGVyIHtcbiAgcmVhZG9ubHkgZGlhZ25vc3RpY3M6IFJlYWRvbmx5QXJyYXk8dHMuRGlhZ25vc3RpYz47XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgYSBgI3JlZj1cInRhcmdldFwiYCBleHByZXNzaW9uIGluIHRoZSB0ZW1wbGF0ZSBmb3Igd2hpY2ggYSB0YXJnZXQgZGlyZWN0aXZlIGNvdWxkIG5vdCBiZVxuICAgKiBmb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIHRlbXBsYXRlSWQgdGhlIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgSUQgb2YgdGhlIHRlbXBsYXRlIHdoaWNoIGNvbnRhaW5zIHRoZSBicm9rZW5cbiAgICogcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0gcmVmIHRoZSBgVG1wbEFzdFJlZmVyZW5jZWAgd2hpY2ggY291bGQgbm90IGJlIG1hdGNoZWQgdG8gYSBkaXJlY3RpdmUuXG4gICAqL1xuICBtaXNzaW5nUmVmZXJlbmNlVGFyZ2V0KHRlbXBsYXRlSWQ6IFRlbXBsYXRlSWQsIHJlZjogVG1wbEFzdFJlZmVyZW5jZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgdXNhZ2Ugb2YgYSBgfCBwaXBlYCBleHByZXNzaW9uIGluIHRoZSB0ZW1wbGF0ZSBmb3Igd2hpY2ggdGhlIG5hbWVkIHBpcGUgY291bGQgbm90IGJlXG4gICAqIGZvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gdGVtcGxhdGVJZCB0aGUgdGVtcGxhdGUgdHlwZS1jaGVja2luZyBJRCBvZiB0aGUgdGVtcGxhdGUgd2hpY2ggY29udGFpbnMgdGhlIHVua25vd25cbiAgICogcGlwZS5cbiAgICogQHBhcmFtIGFzdCB0aGUgYEJpbmRpbmdQaXBlYCBpbnZvY2F0aW9uIG9mIHRoZSBwaXBlIHdoaWNoIGNvdWxkIG5vdCBiZSBmb3VuZC5cbiAgICovXG4gIG1pc3NpbmdQaXBlKHRlbXBsYXRlSWQ6IFRlbXBsYXRlSWQsIGFzdDogQmluZGluZ1BpcGUpOiB2b2lkO1xuXG4gIGlsbGVnYWxBc3NpZ25tZW50VG9UZW1wbGF0ZVZhcihcbiAgICAgIHRlbXBsYXRlSWQ6IFRlbXBsYXRlSWQsIGFzc2lnbm1lbnQ6IFByb3BlcnR5V3JpdGUsIHRhcmdldDogVG1wbEFzdFZhcmlhYmxlKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIE91dE9mQmFuZERpYWdub3N0aWNSZWNvcmRlckltcGwgaW1wbGVtZW50cyBPdXRPZkJhbmREaWFnbm9zdGljUmVjb3JkZXIge1xuICBwcml2YXRlIF9kaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNvbHZlcjogVGVtcGxhdGVTb3VyY2VSZXNvbHZlcikge31cblxuICBnZXQgZGlhZ25vc3RpY3MoKTogUmVhZG9ubHlBcnJheTx0cy5EaWFnbm9zdGljPiB7IHJldHVybiB0aGlzLl9kaWFnbm9zdGljczsgfVxuXG4gIG1pc3NpbmdSZWZlcmVuY2VUYXJnZXQodGVtcGxhdGVJZDogVGVtcGxhdGVJZCwgcmVmOiBUbXBsQXN0UmVmZXJlbmNlKTogdm9pZCB7XG4gICAgY29uc3QgbWFwcGluZyA9IHRoaXMucmVzb2x2ZXIuZ2V0U291cmNlTWFwcGluZyh0ZW1wbGF0ZUlkKTtcbiAgICBjb25zdCB2YWx1ZSA9IHJlZi52YWx1ZS50cmltKCk7XG5cbiAgICBjb25zdCBlcnJvck1zZyA9IGBObyBkaXJlY3RpdmUgZm91bmQgd2l0aCBleHBvcnRBcyAnJHt2YWx1ZX0nLmA7XG4gICAgdGhpcy5fZGlhZ25vc3RpY3MucHVzaChtYWtlVGVtcGxhdGVEaWFnbm9zdGljKFxuICAgICAgICBtYXBwaW5nLCByZWYudmFsdWVTcGFuIHx8IHJlZi5zb3VyY2VTcGFuLCB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXG4gICAgICAgIG5nRXJyb3JDb2RlKEVycm9yQ29kZS5NSVNTSU5HX1JFRkVSRU5DRV9UQVJHRVQpLCBlcnJvck1zZykpO1xuICB9XG5cbiAgbWlzc2luZ1BpcGUodGVtcGxhdGVJZDogVGVtcGxhdGVJZCwgYXN0OiBCaW5kaW5nUGlwZSk6IHZvaWQge1xuICAgIGNvbnN0IG1hcHBpbmcgPSB0aGlzLnJlc29sdmVyLmdldFNvdXJjZU1hcHBpbmcodGVtcGxhdGVJZCk7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBgTm8gcGlwZSBmb3VuZCB3aXRoIG5hbWUgJyR7YXN0Lm5hbWV9Jy5gO1xuXG4gICAgY29uc3Qgc291cmNlU3BhbiA9IHRoaXMucmVzb2x2ZXIudG9QYXJzZVNvdXJjZVNwYW4odGVtcGxhdGVJZCwgYXN0Lm5hbWVTcGFuKTtcbiAgICBpZiAoc291cmNlU3BhbiA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBc3NlcnRpb24gZmFpbHVyZTogbm8gU291cmNlTG9jYXRpb24gZm91bmQgZm9yIHVzYWdlIG9mIHBpcGUgJyR7YXN0Lm5hbWV9Jy5gKTtcbiAgICB9XG4gICAgdGhpcy5fZGlhZ25vc3RpY3MucHVzaChtYWtlVGVtcGxhdGVEaWFnbm9zdGljKFxuICAgICAgICBtYXBwaW5nLCBzb3VyY2VTcGFuLCB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsIG5nRXJyb3JDb2RlKEVycm9yQ29kZS5NSVNTSU5HX1BJUEUpLFxuICAgICAgICBlcnJvck1zZykpO1xuICB9XG5cbiAgaWxsZWdhbEFzc2lnbm1lbnRUb1RlbXBsYXRlVmFyKFxuICAgICAgdGVtcGxhdGVJZDogVGVtcGxhdGVJZCwgYXNzaWdubWVudDogUHJvcGVydHlXcml0ZSwgdGFyZ2V0OiBUbXBsQXN0VmFyaWFibGUpOiB2b2lkIHtcbiAgICBjb25zdCBtYXBwaW5nID0gdGhpcy5yZXNvbHZlci5nZXRTb3VyY2VNYXBwaW5nKHRlbXBsYXRlSWQpO1xuICAgIGNvbnN0IGVycm9yTXNnID1cbiAgICAgICAgYENhbm5vdCB1c2UgdmFyaWFibGUgJyR7YXNzaWdubWVudC5uYW1lfScgYXMgdGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbi4gVGVtcGxhdGUgdmFyaWFibGVzIGFyZSByZWFkLW9ubHkuYDtcblxuICAgIGNvbnN0IHNvdXJjZVNwYW4gPSB0aGlzLnJlc29sdmVyLnRvUGFyc2VTb3VyY2VTcGFuKHRlbXBsYXRlSWQsIGFzc2lnbm1lbnQuc291cmNlU3Bhbik7XG4gICAgaWYgKHNvdXJjZVNwYW4gPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWx1cmU6IG5vIFNvdXJjZUxvY2F0aW9uIGZvdW5kIGZvciBwcm9wZXJ0eSBiaW5kaW5nLmApO1xuICAgIH1cbiAgICB0aGlzLl9kaWFnbm9zdGljcy5wdXNoKG1ha2VUZW1wbGF0ZURpYWdub3N0aWMoXG4gICAgICAgIG1hcHBpbmcsIHNvdXJjZVNwYW4sIHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcbiAgICAgICAgbmdFcnJvckNvZGUoRXJyb3JDb2RlLldSSVRFX1RPX1JFQURfT05MWV9WQVJJQUJMRSksIGVycm9yTXNnLCB7XG4gICAgICAgICAgdGV4dDogYFRoZSB2YXJpYWJsZSAke2Fzc2lnbm1lbnQubmFtZX0gaXMgZGVjbGFyZWQgaGVyZS5gLFxuICAgICAgICAgIHNwYW46IHRhcmdldC52YWx1ZVNwYW4gfHwgdGFyZ2V0LnNvdXJjZVNwYW4sXG4gICAgICAgIH0pKTtcbiAgfVxufVxuIl19
@@ -6,9 +6,9 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/compiler-cli/src/ngtsc/typecheck/src/source" />
9
- import { ParseSourceFile, ParseSourceSpan } from '@angular/compiler';
10
- import { TemplateSourceMapping } from './api';
11
- import { SourceLocation, TcbSourceResolver } from './diagnostics';
9
+ import { AbsoluteSourceSpan, ParseSourceFile, ParseSourceSpan } from '@angular/compiler';
10
+ import { TemplateId, TemplateSourceMapping } from './api';
11
+ import { TemplateSourceResolver } from './diagnostics';
12
12
  /**
13
13
  * Represents the source of a template that was processed during type-checking. This information is
14
14
  * used when translating parse offsets in diagnostics back to their original line/column location.
@@ -25,17 +25,17 @@ export declare class TemplateSource {
25
25
  /**
26
26
  * Assigns IDs to templates and keeps track of their origins.
27
27
  *
28
- * Implements `TcbSourceResolver` to resolve the source of a template based on these IDs.
28
+ * Implements `TemplateSourceResolver` to resolve the source of a template based on these IDs.
29
29
  */
30
- export declare class TcbSourceManager implements TcbSourceResolver {
31
- private nextTcbId;
30
+ export declare class TemplateSourceManager implements TemplateSourceResolver {
31
+ private nextTemplateId;
32
32
  /**
33
33
  * This map keeps track of all template sources that have been type-checked by the id that is
34
34
  * attached to a TCB's function declaration as leading trivia. This enables translation of
35
35
  * diagnostics produced for TCB code to their source location in the template.
36
36
  */
37
37
  private templateSources;
38
- captureSource(mapping: TemplateSourceMapping, file: ParseSourceFile): string;
39
- getSourceMapping(id: string): TemplateSourceMapping;
40
- sourceLocationToSpan(location: SourceLocation): ParseSourceSpan | null;
38
+ captureSource(mapping: TemplateSourceMapping, file: ParseSourceFile): TemplateId;
39
+ getSourceMapping(id: TemplateId): TemplateSourceMapping;
40
+ toParseSourceSpan(id: TemplateId, span: AbsoluteSourceSpan): ParseSourceSpan | null;
41
41
  }
@@ -50,11 +50,11 @@
50
50
  /**
51
51
  * Assigns IDs to templates and keeps track of their origins.
52
52
  *
53
- * Implements `TcbSourceResolver` to resolve the source of a template based on these IDs.
53
+ * Implements `TemplateSourceResolver` to resolve the source of a template based on these IDs.
54
54
  */
55
- var TcbSourceManager = /** @class */ (function () {
56
- function TcbSourceManager() {
57
- this.nextTcbId = 1;
55
+ var TemplateSourceManager = /** @class */ (function () {
56
+ function TemplateSourceManager() {
57
+ this.nextTemplateId = 1;
58
58
  /**
59
59
  * This map keeps track of all template sources that have been type-checked by the id that is
60
60
  * attached to a TCB's function declaration as leading trivia. This enables translation of
@@ -62,26 +62,26 @@
62
62
  */
63
63
  this.templateSources = new Map();
64
64
  }
65
- TcbSourceManager.prototype.captureSource = function (mapping, file) {
66
- var id = "tcb" + this.nextTcbId++;
65
+ TemplateSourceManager.prototype.captureSource = function (mapping, file) {
66
+ var id = "tcb" + this.nextTemplateId++;
67
67
  this.templateSources.set(id, new TemplateSource(mapping, file));
68
68
  return id;
69
69
  };
70
- TcbSourceManager.prototype.getSourceMapping = function (id) {
70
+ TemplateSourceManager.prototype.getSourceMapping = function (id) {
71
71
  if (!this.templateSources.has(id)) {
72
- throw new Error("Unexpected unknown TCB ID: " + id);
72
+ throw new Error("Unexpected unknown template ID: " + id);
73
73
  }
74
74
  return this.templateSources.get(id).mapping;
75
75
  };
76
- TcbSourceManager.prototype.sourceLocationToSpan = function (location) {
77
- if (!this.templateSources.has(location.id)) {
76
+ TemplateSourceManager.prototype.toParseSourceSpan = function (id, span) {
77
+ if (!this.templateSources.has(id)) {
78
78
  return null;
79
79
  }
80
- var templateSource = this.templateSources.get(location.id);
81
- return templateSource.toParseSourceSpan(location.start, location.end);
80
+ var templateSource = this.templateSources.get(id);
81
+ return templateSource.toParseSourceSpan(span.start, span.end);
82
82
  };
83
- return TcbSourceManager;
83
+ return TemplateSourceManager;
84
84
  }());
85
- exports.TcbSourceManager = TcbSourceManager;
85
+ exports.TemplateSourceManager = TemplateSourceManager;
86
86
  });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILDhDQUFrRjtJQUlsRiw2RkFBc0Y7SUFFdEY7OztPQUdHO0lBQ0g7UUFHRSx3QkFBcUIsT0FBOEIsRUFBVSxJQUFxQjtZQUE3RCxZQUFPLEdBQVAsT0FBTyxDQUF1QjtZQUFVLFNBQUksR0FBSixJQUFJLENBQWlCO1lBRjFFLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBRTRDLENBQUM7UUFFdEYsMENBQWlCLEdBQWpCLFVBQWtCLEtBQWEsRUFBRSxHQUFXO1lBQzFDLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksMEJBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVPLHdDQUFlLEdBQXZCLFVBQXdCLFFBQWdCO1lBQ3RDLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RDLElBQUEsMEVBQXlFLEVBQXhFLGNBQUksRUFBRSx3QkFBa0UsQ0FBQztZQUNoRixPQUFPLElBQUksd0JBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVPLDBDQUFpQixHQUF6QjtZQUNFLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsb0NBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzRDtZQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDO1FBQ0gscUJBQUM7SUFBRCxDQUFDLEFBdkJELElBdUJDO0lBdkJZLHdDQUFjO0lBeUIzQjs7OztPQUlHO0lBQ0g7UUFBQTtZQUNVLGNBQVMsR0FBVyxDQUFDLENBQUM7WUFDOUI7Ozs7ZUFJRztZQUNLLG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7UUFzQjlELENBQUM7UUFwQkMsd0NBQWEsR0FBYixVQUFjLE9BQThCLEVBQUUsSUFBcUI7WUFDakUsSUFBTSxFQUFFLEdBQUcsUUFBTSxJQUFJLENBQUMsU0FBUyxFQUFJLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELDJDQUFnQixHQUFoQixVQUFpQixFQUFVO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBOEIsRUFBSSxDQUFDLENBQUM7YUFDckQ7WUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNoRCxDQUFDO1FBRUQsK0NBQW9CLEdBQXBCLFVBQXFCLFFBQXdCO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFHLENBQUM7WUFDL0QsT0FBTyxjQUFjLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNILHVCQUFDO0lBQUQsQ0FBQyxBQTdCRCxJQTZCQztJQTdCWSw0Q0FBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UGFyc2VMb2NhdGlvbiwgUGFyc2VTb3VyY2VGaWxlLCBQYXJzZVNvdXJjZVNwYW59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuaW1wb3J0IHtUZW1wbGF0ZVNvdXJjZU1hcHBpbmd9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7U291cmNlTG9jYXRpb24sIFRjYlNvdXJjZVJlc29sdmVyfSBmcm9tICcuL2RpYWdub3N0aWNzJztcbmltcG9ydCB7Y29tcHV0ZUxpbmVTdGFydHNNYXAsIGdldExpbmVBbmRDaGFyYWN0ZXJGcm9tUG9zaXRpb259IGZyb20gJy4vbGluZV9tYXBwaW5ncyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc291cmNlIG9mIGEgdGVtcGxhdGUgdGhhdCB3YXMgcHJvY2Vzc2VkIGR1cmluZyB0eXBlLWNoZWNraW5nLiBUaGlzIGluZm9ybWF0aW9uIGlzXG4gKiB1c2VkIHdoZW4gdHJhbnNsYXRpbmcgcGFyc2Ugb2Zmc2V0cyBpbiBkaWFnbm9zdGljcyBiYWNrIHRvIHRoZWlyIG9yaWdpbmFsIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVTb3VyY2Uge1xuICBwcml2YXRlIGxpbmVTdGFydHM6IG51bWJlcltdfG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG1hcHBpbmc6IFRlbXBsYXRlU291cmNlTWFwcGluZywgcHJpdmF0ZSBmaWxlOiBQYXJzZVNvdXJjZUZpbGUpIHt9XG5cbiAgdG9QYXJzZVNvdXJjZVNwYW4oc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBQYXJzZVNvdXJjZVNwYW4ge1xuICAgIGNvbnN0IHN0YXJ0TG9jID0gdGhpcy50b1BhcnNlTG9jYXRpb24oc3RhcnQpO1xuICAgIGNvbnN0IGVuZExvYyA9IHRoaXMudG9QYXJzZUxvY2F0aW9uKGVuZCk7XG4gICAgcmV0dXJuIG5ldyBQYXJzZVNvdXJjZVNwYW4oc3RhcnRMb2MsIGVuZExvYyk7XG4gIH1cblxuICBwcml2YXRlIHRvUGFyc2VMb2NhdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgY29uc3QgbGluZVN0YXJ0cyA9IHRoaXMuYWNxdWlyZUxpbmVTdGFydHMoKTtcbiAgICBjb25zdCB7bGluZSwgY2hhcmFjdGVyfSA9IGdldExpbmVBbmRDaGFyYWN0ZXJGcm9tUG9zaXRpb24obGluZVN0YXJ0cywgcG9zaXRpb24pO1xuICAgIHJldHVybiBuZXcgUGFyc2VMb2NhdGlvbih0aGlzLmZpbGUsIHBvc2l0aW9uLCBsaW5lLCBjaGFyYWN0ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3F1aXJlTGluZVN0YXJ0cygpOiBudW1iZXJbXSB7XG4gICAgaWYgKHRoaXMubGluZVN0YXJ0cyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5saW5lU3RhcnRzID0gY29tcHV0ZUxpbmVTdGFydHNNYXAodGhpcy5maWxlLmNvbnRlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5saW5lU3RhcnRzO1xuICB9XG59XG5cbi8qKlxuICogQXNzaWducyBJRHMgdG8gdGVtcGxhdGVzIGFuZCBrZWVwcyB0cmFjayBvZiB0aGVpciBvcmlnaW5zLlxuICpcbiAqIEltcGxlbWVudHMgYFRjYlNvdXJjZVJlc29sdmVyYCB0byByZXNvbHZlIHRoZSBzb3VyY2Ugb2YgYSB0ZW1wbGF0ZSBiYXNlZCBvbiB0aGVzZSBJRHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBUY2JTb3VyY2VNYW5hZ2VyIGltcGxlbWVudHMgVGNiU291cmNlUmVzb2x2ZXIge1xuICBwcml2YXRlIG5leHRUY2JJZDogbnVtYmVyID0gMTtcbiAgLyoqXG4gICAqIFRoaXMgbWFwIGtlZXBzIHRyYWNrIG9mIGFsbCB0ZW1wbGF0ZSBzb3VyY2VzIHRoYXQgaGF2ZSBiZWVuIHR5cGUtY2hlY2tlZCBieSB0aGUgaWQgdGhhdCBpc1xuICAgKiBhdHRhY2hlZCB0byBhIFRDQidzIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGFzIGxlYWRpbmcgdHJpdmlhLiBUaGlzIGVuYWJsZXMgdHJhbnNsYXRpb24gb2ZcbiAgICogZGlhZ25vc3RpY3MgcHJvZHVjZWQgZm9yIFRDQiBjb2RlIHRvIHRoZWlyIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBwcml2YXRlIHRlbXBsYXRlU291cmNlcyA9IG5ldyBNYXA8c3RyaW5nLCBUZW1wbGF0ZVNvdXJjZT4oKTtcblxuICBjYXB0dXJlU291cmNlKG1hcHBpbmc6IFRlbXBsYXRlU291cmNlTWFwcGluZywgZmlsZTogUGFyc2VTb3VyY2VGaWxlKTogc3RyaW5nIHtcbiAgICBjb25zdCBpZCA9IGB0Y2Ike3RoaXMubmV4dFRjYklkKyt9YDtcbiAgICB0aGlzLnRlbXBsYXRlU291cmNlcy5zZXQoaWQsIG5ldyBUZW1wbGF0ZVNvdXJjZShtYXBwaW5nLCBmaWxlKSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0U291cmNlTWFwcGluZyhpZDogc3RyaW5nKTogVGVtcGxhdGVTb3VyY2VNYXBwaW5nIHtcbiAgICBpZiAoIXRoaXMudGVtcGxhdGVTb3VyY2VzLmhhcyhpZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1bmtub3duIFRDQiBJRDogJHtpZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTb3VyY2VzLmdldChpZCkgIS5tYXBwaW5nO1xuICB9XG5cbiAgc291cmNlTG9jYXRpb25Ub1NwYW4obG9jYXRpb246IFNvdXJjZUxvY2F0aW9uKTogUGFyc2VTb3VyY2VTcGFufG51bGwge1xuICAgIGlmICghdGhpcy50ZW1wbGF0ZVNvdXJjZXMuaGFzKGxvY2F0aW9uLmlkKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHRlbXBsYXRlU291cmNlID0gdGhpcy50ZW1wbGF0ZVNvdXJjZXMuZ2V0KGxvY2F0aW9uLmlkKSAhO1xuICAgIHJldHVybiB0ZW1wbGF0ZVNvdXJjZS50b1BhcnNlU291cmNlU3Bhbihsb2NhdGlvbi5zdGFydCwgbG9jYXRpb24uZW5kKTtcbiAgfVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILDhDQUFzRztJQUl0Ryw2RkFBc0Y7SUFFdEY7OztPQUdHO0lBQ0g7UUFHRSx3QkFBcUIsT0FBOEIsRUFBVSxJQUFxQjtZQUE3RCxZQUFPLEdBQVAsT0FBTyxDQUF1QjtZQUFVLFNBQUksR0FBSixJQUFJLENBQWlCO1lBRjFFLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBRTRDLENBQUM7UUFFdEYsMENBQWlCLEdBQWpCLFVBQWtCLEtBQWEsRUFBRSxHQUFXO1lBQzFDLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksMEJBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVPLHdDQUFlLEdBQXZCLFVBQXdCLFFBQWdCO1lBQ3RDLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RDLElBQUEsMEVBQXlFLEVBQXhFLGNBQUksRUFBRSx3QkFBa0UsQ0FBQztZQUNoRixPQUFPLElBQUksd0JBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVPLDBDQUFpQixHQUF6QjtZQUNFLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsb0NBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzRDtZQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDO1FBQ0gscUJBQUM7SUFBRCxDQUFDLEFBdkJELElBdUJDO0lBdkJZLHdDQUFjO0lBeUIzQjs7OztPQUlHO0lBQ0g7UUFBQTtZQUNVLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1lBQ25DOzs7O2VBSUc7WUFDSyxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBc0JsRSxDQUFDO1FBcEJDLDZDQUFhLEdBQWIsVUFBYyxPQUE4QixFQUFFLElBQXFCO1lBQ2pFLElBQU0sRUFBRSxHQUFHLFFBQU0sSUFBSSxDQUFDLGNBQWMsRUFBa0IsQ0FBQztZQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEUsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsZ0RBQWdCLEdBQWhCLFVBQWlCLEVBQWM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFtQyxFQUFJLENBQUMsQ0FBQzthQUMxRDtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFHLENBQUMsT0FBTyxDQUFDO1FBQ2hELENBQUM7UUFFRCxpREFBaUIsR0FBakIsVUFBa0IsRUFBYyxFQUFFLElBQXdCO1lBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDakMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRyxDQUFDO1lBQ3RELE9BQU8sY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDSCw0QkFBQztJQUFELENBQUMsQUE3QkQsSUE2QkM7SUE3Qlksc0RBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0Fic29sdXRlU291cmNlU3BhbiwgUGFyc2VMb2NhdGlvbiwgUGFyc2VTb3VyY2VGaWxlLCBQYXJzZVNvdXJjZVNwYW59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuaW1wb3J0IHtUZW1wbGF0ZUlkLCBUZW1wbGF0ZVNvdXJjZU1hcHBpbmd9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7VGVtcGxhdGVTb3VyY2VSZXNvbHZlcn0gZnJvbSAnLi9kaWFnbm9zdGljcyc7XG5pbXBvcnQge2NvbXB1dGVMaW5lU3RhcnRzTWFwLCBnZXRMaW5lQW5kQ2hhcmFjdGVyRnJvbVBvc2l0aW9ufSBmcm9tICcuL2xpbmVfbWFwcGluZ3MnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHNvdXJjZSBvZiBhIHRlbXBsYXRlIHRoYXQgd2FzIHByb2Nlc3NlZCBkdXJpbmcgdHlwZS1jaGVja2luZy4gVGhpcyBpbmZvcm1hdGlvbiBpc1xuICogdXNlZCB3aGVuIHRyYW5zbGF0aW5nIHBhcnNlIG9mZnNldHMgaW4gZGlhZ25vc3RpY3MgYmFjayB0byB0aGVpciBvcmlnaW5hbCBsaW5lL2NvbHVtbiBsb2NhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlU291cmNlIHtcbiAgcHJpdmF0ZSBsaW5lU3RhcnRzOiBudW1iZXJbXXxudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtYXBwaW5nOiBUZW1wbGF0ZVNvdXJjZU1hcHBpbmcsIHByaXZhdGUgZmlsZTogUGFyc2VTb3VyY2VGaWxlKSB7fVxuXG4gIHRvUGFyc2VTb3VyY2VTcGFuKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogUGFyc2VTb3VyY2VTcGFuIHtcbiAgICBjb25zdCBzdGFydExvYyA9IHRoaXMudG9QYXJzZUxvY2F0aW9uKHN0YXJ0KTtcbiAgICBjb25zdCBlbmRMb2MgPSB0aGlzLnRvUGFyc2VMb2NhdGlvbihlbmQpO1xuICAgIHJldHVybiBuZXcgUGFyc2VTb3VyY2VTcGFuKHN0YXJ0TG9jLCBlbmRMb2MpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1BhcnNlTG9jYXRpb24ocG9zaXRpb246IG51bWJlcikge1xuICAgIGNvbnN0IGxpbmVTdGFydHMgPSB0aGlzLmFjcXVpcmVMaW5lU3RhcnRzKCk7XG4gICAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPSBnZXRMaW5lQW5kQ2hhcmFjdGVyRnJvbVBvc2l0aW9uKGxpbmVTdGFydHMsIHBvc2l0aW9uKTtcbiAgICByZXR1cm4gbmV3IFBhcnNlTG9jYXRpb24odGhpcy5maWxlLCBwb3NpdGlvbiwgbGluZSwgY2hhcmFjdGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgYWNxdWlyZUxpbmVTdGFydHMoKTogbnVtYmVyW10ge1xuICAgIGlmICh0aGlzLmxpbmVTdGFydHMgPT09IG51bGwpIHtcbiAgICAgIHRoaXMubGluZVN0YXJ0cyA9IGNvbXB1dGVMaW5lU3RhcnRzTWFwKHRoaXMuZmlsZS5jb250ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGluZVN0YXJ0cztcbiAgfVxufVxuXG4vKipcbiAqIEFzc2lnbnMgSURzIHRvIHRlbXBsYXRlcyBhbmQga2VlcHMgdHJhY2sgb2YgdGhlaXIgb3JpZ2lucy5cbiAqXG4gKiBJbXBsZW1lbnRzIGBUZW1wbGF0ZVNvdXJjZVJlc29sdmVyYCB0byByZXNvbHZlIHRoZSBzb3VyY2Ugb2YgYSB0ZW1wbGF0ZSBiYXNlZCBvbiB0aGVzZSBJRHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVNvdXJjZU1hbmFnZXIgaW1wbGVtZW50cyBUZW1wbGF0ZVNvdXJjZVJlc29sdmVyIHtcbiAgcHJpdmF0ZSBuZXh0VGVtcGxhdGVJZDogbnVtYmVyID0gMTtcbiAgLyoqXG4gICAqIFRoaXMgbWFwIGtlZXBzIHRyYWNrIG9mIGFsbCB0ZW1wbGF0ZSBzb3VyY2VzIHRoYXQgaGF2ZSBiZWVuIHR5cGUtY2hlY2tlZCBieSB0aGUgaWQgdGhhdCBpc1xuICAgKiBhdHRhY2hlZCB0byBhIFRDQidzIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGFzIGxlYWRpbmcgdHJpdmlhLiBUaGlzIGVuYWJsZXMgdHJhbnNsYXRpb24gb2ZcbiAgICogZGlhZ25vc3RpY3MgcHJvZHVjZWQgZm9yIFRDQiBjb2RlIHRvIHRoZWlyIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBwcml2YXRlIHRlbXBsYXRlU291cmNlcyA9IG5ldyBNYXA8VGVtcGxhdGVJZCwgVGVtcGxhdGVTb3VyY2U+KCk7XG5cbiAgY2FwdHVyZVNvdXJjZShtYXBwaW5nOiBUZW1wbGF0ZVNvdXJjZU1hcHBpbmcsIGZpbGU6IFBhcnNlU291cmNlRmlsZSk6IFRlbXBsYXRlSWQge1xuICAgIGNvbnN0IGlkID0gYHRjYiR7dGhpcy5uZXh0VGVtcGxhdGVJZCsrfWAgYXMgVGVtcGxhdGVJZDtcbiAgICB0aGlzLnRlbXBsYXRlU291cmNlcy5zZXQoaWQsIG5ldyBUZW1wbGF0ZVNvdXJjZShtYXBwaW5nLCBmaWxlKSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgZ2V0U291cmNlTWFwcGluZyhpZDogVGVtcGxhdGVJZCk6IFRlbXBsYXRlU291cmNlTWFwcGluZyB7XG4gICAgaWYgKCF0aGlzLnRlbXBsYXRlU291cmNlcy5oYXMoaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdW5rbm93biB0ZW1wbGF0ZSBJRDogJHtpZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTb3VyY2VzLmdldChpZCkgIS5tYXBwaW5nO1xuICB9XG5cbiAgdG9QYXJzZVNvdXJjZVNwYW4oaWQ6IFRlbXBsYXRlSWQsIHNwYW46IEFic29sdXRlU291cmNlU3Bhbik6IFBhcnNlU291cmNlU3BhbnxudWxsIHtcbiAgICBpZiAoIXRoaXMudGVtcGxhdGVTb3VyY2VzLmhhcyhpZCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0ZW1wbGF0ZVNvdXJjZSA9IHRoaXMudGVtcGxhdGVTb3VyY2VzLmdldChpZCkgITtcbiAgICByZXR1cm4gdGVtcGxhdGVTb3VyY2UudG9QYXJzZVNvdXJjZVNwYW4oc3Bhbi5zdGFydCwgc3Bhbi5lbmQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ /// <amd-module name="@angular/compiler-cli/src/ngtsc/typecheck/src/template_semantics" />
9
+ import { AST, BoundTarget, PropertyWrite, RecursiveAstVisitor } from '@angular/compiler';
10
+ import { TemplateId } from './api';
11
+ import { OutOfBandDiagnosticRecorder } from './oob';
12
+ /**
13
+ * Visits a template and records any semantic errors within its expressions.
14
+ */
15
+ export declare class ExpressionSemanticVisitor extends RecursiveAstVisitor {
16
+ private templateId;
17
+ private boundTarget;
18
+ private oob;
19
+ constructor(templateId: TemplateId, boundTarget: BoundTarget<any>, oob: OutOfBandDiagnosticRecorder);
20
+ visitPropertyWrite(ast: PropertyWrite, context: any): void;
21
+ static visit(ast: AST, id: TemplateId, boundTarget: BoundTarget<any>, oob: OutOfBandDiagnosticRecorder): void;
22
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google Inc. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/compiler-cli/src/ngtsc/typecheck/src/template_semantics", ["require", "exports", "tslib", "@angular/compiler"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ var tslib_1 = require("tslib");
20
+ var compiler_1 = require("@angular/compiler");
21
+ /**
22
+ * Visits a template and records any semantic errors within its expressions.
23
+ */
24
+ var ExpressionSemanticVisitor = /** @class */ (function (_super) {
25
+ tslib_1.__extends(ExpressionSemanticVisitor, _super);
26
+ function ExpressionSemanticVisitor(templateId, boundTarget, oob) {
27
+ var _this = _super.call(this) || this;
28
+ _this.templateId = templateId;
29
+ _this.boundTarget = boundTarget;
30
+ _this.oob = oob;
31
+ return _this;
32
+ }
33
+ ExpressionSemanticVisitor.prototype.visitPropertyWrite = function (ast, context) {
34
+ _super.prototype.visitPropertyWrite.call(this, ast, context);
35
+ if (!(ast.receiver instanceof compiler_1.ImplicitReceiver)) {
36
+ return;
37
+ }
38
+ var target = this.boundTarget.getExpressionTarget(ast);
39
+ if (target instanceof compiler_1.TmplAstVariable) {
40
+ // Template variables are read-only.
41
+ this.oob.illegalAssignmentToTemplateVar(this.templateId, ast, target);
42
+ }
43
+ };
44
+ ExpressionSemanticVisitor.visit = function (ast, id, boundTarget, oob) {
45
+ ast.visit(new ExpressionSemanticVisitor(id, boundTarget, oob));
46
+ };
47
+ return ExpressionSemanticVisitor;
48
+ }(compiler_1.RecursiveAstVisitor));
49
+ exports.ExpressionSemanticVisitor = ExpressionSemanticVisitor;
50
+ });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVfc2VtYW50aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3RlbXBsYXRlX3NlbWFudGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSCw4Q0FBMEg7SUFLMUg7O09BRUc7SUFDSDtRQUErQyxxREFBbUI7UUFDaEUsbUNBQ1ksVUFBc0IsRUFBVSxXQUE2QixFQUM3RCxHQUFnQztZQUY1QyxZQUdFLGlCQUFPLFNBQ1I7WUFIVyxnQkFBVSxHQUFWLFVBQVUsQ0FBWTtZQUFVLGlCQUFXLEdBQVgsV0FBVyxDQUFrQjtZQUM3RCxTQUFHLEdBQUgsR0FBRyxDQUE2Qjs7UUFFNUMsQ0FBQztRQUVELHNEQUFrQixHQUFsQixVQUFtQixHQUFrQixFQUFFLE9BQVk7WUFDakQsaUJBQU0sa0JBQWtCLFlBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXZDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLFlBQVksMkJBQWdCLENBQUMsRUFBRTtnQkFDL0MsT0FBTzthQUNSO1lBRUQsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6RCxJQUFJLE1BQU0sWUFBWSwwQkFBZSxFQUFFO2dCQUNyQyxvQ0FBb0M7Z0JBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDdkU7UUFDSCxDQUFDO1FBRU0sK0JBQUssR0FBWixVQUNJLEdBQVEsRUFBRSxFQUFjLEVBQUUsV0FBNkIsRUFDdkQsR0FBZ0M7WUFDbEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLHlCQUF5QixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0gsZ0NBQUM7SUFBRCxDQUFDLEFBMUJELENBQStDLDhCQUFtQixHQTBCakU7SUExQlksOERBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0FTVCwgQm91bmRUYXJnZXQsIEltcGxpY2l0UmVjZWl2ZXIsIFByb3BlcnR5V3JpdGUsIFJlY3Vyc2l2ZUFzdFZpc2l0b3IsIFRtcGxBc3RWYXJpYWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuXG5pbXBvcnQge1RlbXBsYXRlSWR9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7T3V0T2ZCYW5kRGlhZ25vc3RpY1JlY29yZGVyfSBmcm9tICcuL29vYic7XG5cbi8qKlxuICogVmlzaXRzIGEgdGVtcGxhdGUgYW5kIHJlY29yZHMgYW55IHNlbWFudGljIGVycm9ycyB3aXRoaW4gaXRzIGV4cHJlc3Npb25zLlxuICovXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvblNlbWFudGljVmlzaXRvciBleHRlbmRzIFJlY3Vyc2l2ZUFzdFZpc2l0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgdGVtcGxhdGVJZDogVGVtcGxhdGVJZCwgcHJpdmF0ZSBib3VuZFRhcmdldDogQm91bmRUYXJnZXQ8YW55PixcbiAgICAgIHByaXZhdGUgb29iOiBPdXRPZkJhbmREaWFnbm9zdGljUmVjb3JkZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgdmlzaXRQcm9wZXJ0eVdyaXRlKGFzdDogUHJvcGVydHlXcml0ZSwgY29udGV4dDogYW55KTogdm9pZCB7XG4gICAgc3VwZXIudmlzaXRQcm9wZXJ0eVdyaXRlKGFzdCwgY29udGV4dCk7XG5cbiAgICBpZiAoIShhc3QucmVjZWl2ZXIgaW5zdGFuY2VvZiBJbXBsaWNpdFJlY2VpdmVyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuYm91bmRUYXJnZXQuZ2V0RXhwcmVzc2lvblRhcmdldChhc3QpO1xuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBUbXBsQXN0VmFyaWFibGUpIHtcbiAgICAgIC8vIFRlbXBsYXRlIHZhcmlhYmxlcyBhcmUgcmVhZC1vbmx5LlxuICAgICAgdGhpcy5vb2IuaWxsZWdhbEFzc2lnbm1lbnRUb1RlbXBsYXRlVmFyKHRoaXMudGVtcGxhdGVJZCwgYXN0LCB0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyB2aXNpdChcbiAgICAgIGFzdDogQVNULCBpZDogVGVtcGxhdGVJZCwgYm91bmRUYXJnZXQ6IEJvdW5kVGFyZ2V0PGFueT4sXG4gICAgICBvb2I6IE91dE9mQmFuZERpYWdub3N0aWNSZWNvcmRlcik6IHZvaWQge1xuICAgIGFzdC52aXNpdChuZXcgRXhwcmVzc2lvblNlbWFudGljVmlzaXRvcihpZCwgYm91bmRUYXJnZXQsIG9vYikpO1xuICB9XG59XG4iXX0=
@@ -18,7 +18,42 @@
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  var tslib_1 = require("tslib");
20
20
  var ts = require("typescript");
21
+ /**
22
+ * A `Set` of `ts.SyntaxKind`s of `ts.Expression` which are safe to wrap in a `ts.AsExpression`
23
+ * without needing to be wrapped in parentheses.
24
+ *
25
+ * For example, `foo.bar()` is a `ts.CallExpression`, and can be safely cast to `any` with
26
+ * `foo.bar() as any`. however, `foo !== bar` is a `ts.BinaryExpression`, and attempting to cast
27
+ * without the parentheses yields the expression `foo !== bar as any`. This is semantically
28
+ * equivalent to `foo !== (bar as any)`, which is not what was intended. Thus,
29
+ * `ts.BinaryExpression`s need to be wrapped in parentheses before casting.
30
+ */
31
+ //
32
+ var SAFE_TO_CAST_WITHOUT_PARENS = new Set([
33
+ // Expressions which are already parenthesized can be cast without further wrapping.
34
+ ts.SyntaxKind.ParenthesizedExpression,
35
+ // Expressions which form a single lexical unit leave no room for precedence issues with the cast.
36
+ ts.SyntaxKind.Identifier,
37
+ ts.SyntaxKind.CallExpression,
38
+ ts.SyntaxKind.NonNullExpression,
39
+ ts.SyntaxKind.ElementAccessExpression,
40
+ ts.SyntaxKind.PropertyAccessExpression,
41
+ ts.SyntaxKind.ArrayLiteralExpression,
42
+ ts.SyntaxKind.ObjectLiteralExpression,
43
+ // The same goes for various literals.
44
+ ts.SyntaxKind.StringLiteral,
45
+ ts.SyntaxKind.NumericLiteral,
46
+ ts.SyntaxKind.TrueKeyword,
47
+ ts.SyntaxKind.FalseKeyword,
48
+ ts.SyntaxKind.NullKeyword,
49
+ ts.SyntaxKind.UndefinedKeyword,
50
+ ]);
21
51
  function tsCastToAny(expr) {
52
+ // Wrap `expr` in parentheses if needed (see `SAFE_TO_CAST_WITHOUT_PARENS` above).
53
+ if (!SAFE_TO_CAST_WITHOUT_PARENS.has(expr.kind)) {
54
+ expr = ts.createParen(expr);
55
+ }
56
+ // The outer expression is always wrapped in parentheses.
22
57
  return ts.createParen(ts.createAsExpression(expr, ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)));
23
58
  }
24
59
  exports.tsCastToAny = tsCastToAny;
@@ -145,4 +180,4 @@
145
180
  }
146
181
  exports.checkIfGenericTypesAreUnbound = checkIfGenericTypesAreUnbound;
147
182
  });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNfdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90c191dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUdqQyxTQUFnQixXQUFXLENBQUMsSUFBbUI7UUFDN0MsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUNqQixFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBSEQsa0NBR0M7SUFHRDs7Ozs7T0FLRztJQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFlO1FBQzdDLElBQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxvQkFBb0I7UUFDekMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sRUFBRSxDQUFDLFVBQVU7UUFDaEIsZ0JBQWdCLENBQUMsYUFBYTtRQUM5QixtQkFBbUIsQ0FBQyxTQUFTO1FBQzdCLG9CQUFvQixDQUFBLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQVBELDBDQU9DO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsRUFBaUIsRUFBRSxJQUFpQjtRQUNwRSxJQUFNLElBQUksR0FBRyxFQUFFLENBQUMseUJBQXlCO1FBQ3JDLFVBQVUsQ0FBQyxFQUFFO1FBQ2IsVUFBVSxDQUFDLElBQUk7UUFDZixpQkFBaUIsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLENB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Qiw2QkFBNkIsQ0FBQyxJQUEyQztRQUV2RixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQTlCLENBQThCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBTkQsc0VBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9ufSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRzQ2FzdFRvQW55KGV4cHI6IHRzLkV4cHJlc3Npb24pOiB0cy5FeHByZXNzaW9uIHtcbiAgcmV0dXJuIHRzLmNyZWF0ZVBhcmVuKFxuICAgICAgdHMuY3JlYXRlQXNFeHByZXNzaW9uKGV4cHIsIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLkFueUtleXdvcmQpKSk7XG59XG5cblxuLyoqXG4gKiBDcmVhdGUgYW4gZXhwcmVzc2lvbiB3aGljaCBpbnN0YW50aWF0ZXMgYW4gZWxlbWVudCBieSBpdHMgSFRNTCB0YWdOYW1lLlxuICpcbiAqIFRoYW5rcyB0byBuYXJyb3dpbmcgb2YgYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKWAsIHRoaXMgZXhwcmVzc2lvbiB3aWxsIGhhdmUgaXRzIHR5cGUgaW5mZXJyZWRcbiAqIGJhc2VkIG9uIHRoZSB0YWcgbmFtZSwgaW5jbHVkaW5nIGZvciBjdXN0b20gZWxlbWVudHMgdGhhdCBoYXZlIGFwcHJvcHJpYXRlIC5kLnRzIGRlZmluaXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHNDcmVhdGVFbGVtZW50KHRhZ05hbWU6IHN0cmluZyk6IHRzLkV4cHJlc3Npb24ge1xuICBjb25zdCBjcmVhdGVFbGVtZW50ID0gdHMuY3JlYXRlUHJvcGVydHlBY2Nlc3MoXG4gICAgICAvKiBleHByZXNzaW9uICovIHRzLmNyZWF0ZUlkZW50aWZpZXIoJ2RvY3VtZW50JyksICdjcmVhdGVFbGVtZW50Jyk7XG4gIHJldHVybiB0cy5jcmVhdGVDYWxsKFxuICAgICAgLyogZXhwcmVzc2lvbiAqLyBjcmVhdGVFbGVtZW50LFxuICAgICAgLyogdHlwZUFyZ3VtZW50cyAqLyB1bmRlZmluZWQsXG4gICAgICAvKiBhcmd1bWVudHNBcnJheSAqL1t0cy5jcmVhdGVMaXRlcmFsKHRhZ05hbWUpXSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYHRzLlZhcmlhYmxlU3RhdGVtZW50YCB3aGljaCBkZWNsYXJlcyBhIHZhcmlhYmxlIHdpdGhvdXQgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogVGhlIGluaXRpYWxpemVyIGBudWxsIWAgaXMgdXNlZCB0byBieXBhc3Mgc3RyaWN0IHZhcmlhYmxlIGluaXRpYWxpemF0aW9uIGNoZWNrcy5cbiAqXG4gKiBVbmxpa2Ugd2l0aCBgdHNDcmVhdGVWYXJpYWJsZWAsIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBleHBsaWNpdGx5IHNwZWNpZmllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRzRGVjbGFyZVZhcmlhYmxlKGlkOiB0cy5JZGVudGlmaWVyLCB0eXBlOiB0cy5UeXBlTm9kZSk6IHRzLlZhcmlhYmxlU3RhdGVtZW50IHtcbiAgY29uc3QgZGVjbCA9IHRzLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgICAvKiBuYW1lICovIGlkLFxuICAgICAgLyogdHlwZSAqLyB0eXBlLFxuICAgICAgLyogaW5pdGlhbGl6ZXIgKi8gdHMuY3JlYXRlTm9uTnVsbEV4cHJlc3Npb24odHMuY3JlYXRlTnVsbCgpKSk7XG4gIHJldHVybiB0cy5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudChcbiAgICAgIC8qIG1vZGlmaWVycyAqLyB1bmRlZmluZWQsXG4gICAgICAvKiBkZWNsYXJhdGlvbkxpc3QgKi9bZGVjbF0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGB0cy5WYXJpYWJsZVN0YXRlbWVudGAgdGhhdCBpbml0aWFsaXplcyBhIHZhcmlhYmxlIHdpdGggYSBnaXZlbiBleHByZXNzaW9uLlxuICpcbiAqIFVubGlrZSB3aXRoIGB0c0RlY2xhcmVWYXJpYWJsZWAsIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBpbmZlcnJlZCBmcm9tIHRoZSBpbml0aWFsaXplclxuICogZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRzQ3JlYXRlVmFyaWFibGUoXG4gICAgaWQ6IHRzLklkZW50aWZpZXIsIGluaXRpYWxpemVyOiB0cy5FeHByZXNzaW9uKTogdHMuVmFyaWFibGVTdGF0ZW1lbnQge1xuICBjb25zdCBkZWNsID0gdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcbiAgICAgIC8qIG5hbWUgKi8gaWQsXG4gICAgICAvKiB0eXBlICovIHVuZGVmaW5lZCxcbiAgICAgIC8qIGluaXRpYWxpemVyICovIGluaXRpYWxpemVyKTtcbiAgcmV0dXJuIHRzLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgICAgLyogbW9kaWZpZXJzICovIHVuZGVmaW5lZCxcbiAgICAgIC8qIGRlY2xhcmF0aW9uTGlzdCAqL1tkZWNsXSk7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IGEgYHRzLkNhbGxFeHByZXNzaW9uYCB0aGF0IGNhbGxzIGEgbWV0aG9kIG9uIGEgcmVjZWl2ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0c0NhbGxNZXRob2QoXG4gICAgcmVjZWl2ZXI6IHRzLkV4cHJlc3Npb24sIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogdHMuRXhwcmVzc2lvbltdID0gW10pOiB0cy5DYWxsRXhwcmVzc2lvbiB7XG4gIGNvbnN0IG1ldGhvZEFjY2VzcyA9IHRzLmNyZWF0ZVByb3BlcnR5QWNjZXNzKHJlY2VpdmVyLCBtZXRob2ROYW1lKTtcbiAgcmV0dXJuIHRzLmNyZWF0ZUNhbGwoXG4gICAgICAvKiBleHByZXNzaW9uICovIG1ldGhvZEFjY2VzcyxcbiAgICAgIC8qIHR5cGVBcmd1bWVudHMgKi8gdW5kZWZpbmVkLFxuICAgICAgLyogYXJndW1lbnRzQXJyYXkgKi8gYXJncyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0lmQ2xhc3NJc0V4cG9ydGVkKG5vZGU6IENsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgLy8gQSBjbGFzcyBpcyBleHBvcnRlZCBpZiBvbmUgb2YgdHdvIGNvbmRpdGlvbnMgaXMgbWV0OlxuICAvLyAxKSBpdCBoYXMgdGhlICdleHBvcnQnIG1vZGlmaWVyLlxuICAvLyAyKSBpdCdzIGRlY2xhcmVkIGF0IHRoZSB0b3AgbGV2ZWwsIGFuZCB0aGVyZSBpcyBhbiBleHBvcnQgc3RhdGVtZW50IGZvciB0aGUgY2xhc3MuXG4gIGlmIChub2RlLm1vZGlmaWVycyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBub2RlLm1vZGlmaWVycy5zb21lKG1vZCA9PiBtb2Qua2luZCA9PT0gdHMuU3ludGF4S2luZC5FeHBvcnRLZXl3b3JkKSkge1xuICAgIC8vIENvbmRpdGlvbiAxIGlzIHRydWUsIHRoZSBjbGFzcyBoYXMgYW4gJ2V4cG9ydCcga2V5d29yZCBhdHRhY2hlZC5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChcbiAgICAgIG5vZGUucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgdHMuaXNTb3VyY2VGaWxlKG5vZGUucGFyZW50KSAmJlxuICAgICAgY2hlY2tJZkZpbGVIYXNFeHBvcnQobm9kZS5wYXJlbnQsIG5vZGUubmFtZS50ZXh0KSkge1xuICAgIC8vIENvbmRpdGlvbiAyIGlzIHRydWUsIHRoZSBjbGFzcyBpcyBleHBvcnRlZCB2aWEgYW4gJ2V4cG9ydCB7fScgc3RhdGVtZW50LlxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2hlY2tJZkZpbGVIYXNFeHBvcnQoc2Y6IHRzLlNvdXJjZUZpbGUsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IHN0bXQgb2Ygc2Yuc3RhdGVtZW50cykge1xuICAgIGlmICh0cy5pc0V4cG9ydERlY2xhcmF0aW9uKHN0bXQpICYmIHN0bXQuZXhwb3J0Q2xhdXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBzdG10LmV4cG9ydENsYXVzZS5lbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5wcm9wZXJ0eU5hbWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtZW50Lm5hbWUudGV4dCA9PT0gbmFtZSkge1xuICAgICAgICAgIC8vIFRoZSBuYW1lZCBkZWNsYXJhdGlvbiBpcyBkaXJlY3RseSBleHBvcnRlZC5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnByb3BlcnR5TmFtZSAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQucHJvcGVydHlOYW1lLnRleHQgPT0gbmFtZSkge1xuICAgICAgICAgIC8vIFRoZSBuYW1lZCBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZCB2aWEgYW4gYWxpYXMuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJZkdlbmVyaWNUeXBlc0FyZVVuYm91bmQobm9kZTogQ2xhc3NEZWNsYXJhdGlvbjx0cy5DbGFzc0RlY2xhcmF0aW9uPik6XG4gICAgYm9vbGVhbiB7XG4gIGlmIChub2RlLnR5cGVQYXJhbWV0ZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gbm9kZS50eXBlUGFyYW1ldGVycy5ldmVyeShwYXJhbSA9PiBwYXJhbS5jb25zdHJhaW50ID09PSB1bmRlZmluZWQpO1xufVxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNfdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90c191dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUdqQzs7Ozs7Ozs7O09BU0c7SUFDSCxFQUFFO0lBQ0YsSUFBTSwyQkFBMkIsR0FBdUIsSUFBSSxHQUFHLENBQUM7UUFDOUQsb0ZBQW9GO1FBQ3BGLEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCO1FBRXJDLGtHQUFrRztRQUNsRyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVU7UUFDeEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjO1FBQzVCLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCO1FBQy9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCO1FBQ3JDLEVBQUUsQ0FBQyxVQUFVLENBQUMsd0JBQXdCO1FBQ3RDLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCO1FBQ3BDLEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCO1FBRXJDLHNDQUFzQztRQUN0QyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWE7UUFDM0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjO1FBQzVCLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVztRQUN6QixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVk7UUFDMUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXO1FBQ3pCLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO0tBQy9CLENBQUMsQ0FBQztJQUVILFNBQWdCLFdBQVcsQ0FBQyxJQUFtQjtRQUM3QyxrRkFBa0Y7UUFDbEYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxHQUFHLEVB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QUMsQ0FBQztJQUM1RSxDQUFDO0lBTkQsc0VBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9ufSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuLyoqXG4gKiBBIGBTZXRgIG9mIGB0cy5TeW50YXhLaW5kYHMgb2YgYHRzLkV4cHJlc3Npb25gIHdoaWNoIGFyZSBzYWZlIHRvIHdyYXAgaW4gYSBgdHMuQXNFeHByZXNzaW9uYFxuICogd2l0aG91dCBuZWVkaW5nIHRvIGJlIHdyYXBwZWQgaW4gcGFyZW50aGVzZXMuXG4gKlxuICogRm9yIGV4YW1wbGUsIGBmb28uYmFyKClgIGlzIGEgYHRzLkNhbGxFeHByZXNzaW9uYCwgYW5kIGNhbiBiZSBzYWZlbHkgY2FzdCB0byBgYW55YCB3aXRoXG4gKiBgZm9vLmJhcigpIGFzIGFueWAuIGhvd2V2ZXIsIGBmb28gIT09IGJhcmAgaXMgYSBgdHMuQmluYXJ5RXhwcmVzc2lvbmAsIGFuZCBhdHRlbXB0aW5nIHRvIGNhc3RcbiAqIHdpdGhvdXQgdGhlIHBhcmVudGhlc2VzIHlpZWxkcyB0aGUgZXhwcmVzc2lvbiBgZm9vICE9PSBiYXIgYXMgYW55YC4gVGhpcyBpcyBzZW1hbnRpY2FsbHlcbiAqIGVxdWl2YWxlbnQgdG8gYGZvbyAhPT0gKGJhciBhcyBhbnkpYCwgd2hpY2ggaXMgbm90IHdoYXQgd2FzIGludGVuZGVkLiBUaHVzLFxuICogYHRzLkJpbmFyeUV4cHJlc3Npb25gcyBuZWVkIHRvIGJlIHdyYXBwZWQgaW4gcGFyZW50aGVzZXMgYmVmb3JlIGNhc3RpbmcuXG4gKi9cbi8vXG5jb25zdCBTQUZFX1RPX0NBU1RfV0lUSE9VVF9QQVJFTlM6IFNldDx0cy5TeW50YXhLaW5kPiA9IG5ldyBTZXQoW1xuICAvLyBFeHByZXNzaW9ucyB3aGljaCBhcmUgYWxyZWFkeSBwYXJlbnRoZXNpemVkIGNhbiBiZSBjYXN0IHdpdGhvdXQgZnVydGhlciB3cmFwcGluZy5cbiAgdHMuU3ludGF4S2luZC5QYXJlbnRoZXNpemVkRXhwcmVzc2lvbixcblxuICAvLyBFeHByZXNzaW9ucyB3aGljaCBmb3JtIGEgc2luZ2xlIGxleGljYWwgdW5pdCBsZWF2ZSBubyByb29tIGZvciBwcmVjZWRlbmNlIGlzc3VlcyB3aXRoIHRoZSBjYXN0LlxuICB0cy5TeW50YXhLaW5kLklkZW50aWZpZXIsXG4gIHRzLlN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb24sXG4gIHRzLlN5bnRheEtpbmQuTm9uTnVsbEV4cHJlc3Npb24sXG4gIHRzLlN5bnRheEtpbmQuRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24sXG4gIHRzLlN5bnRheEtpbmQuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLFxuICB0cy5TeW50YXhLaW5kLkFycmF5TGl0ZXJhbEV4cHJlc3Npb24sXG4gIHRzLlN5bnRheEtpbmQuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG5cbiAgLy8gVGhlIHNhbWUgZ29lcyBmb3IgdmFyaW91cyBsaXRlcmFscy5cbiAgdHMuU3ludGF4S2luZC5TdHJpbmdMaXRlcmFsLFxuICB0cy5TeW50YXhLaW5kLk51bWVyaWNMaXRlcmFsLFxuICB0cy5TeW50YXhLaW5kLlRydWVLZXl3b3JkLFxuICB0cy5TeW50YXhLaW5kLkZhbHNlS2V5d29yZCxcbiAgdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZCxcbiAgdHMuU3ludGF4S2luZC5VbmRlZmluZWRLZXl3b3JkLFxuXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB0c0Nhc3RUb0FueShleHByOiB0cy5FeHByZXNzaW9uKTogdHMuRXhwcmVzc2lvbiB7XG4gIC8vIFdyYXAgYGV4cHJgIGluIHBhcmVudGhlc2VzIGlmIG5lZWRlZCAoc2VlIGBTQUZFX1RPX0NBU1RfV0lUSE9VVF9QQVJFTlNgIGFib3ZlKS5cbiAgaWYgKCFTQUZFX1RPX0NBU1RfV0lUSE9VVF9QQVJFTlMuaGFzKGV4cHIua2luZCkpIHtcbiAgICBleHByID0gdHMuY3JlYXRlUGFyZW4oZXhwcik7XG4gIH1cblxuICAvLyBUaGUgb3V0ZXIgZXhwcmVzc2lvbiBpcyBhbHdheXMgd3JhcHBlZCBpbiBwYXJlbnRoZXNlcy5cbiAgcmV0dXJuIHRzLmNyZWF0ZVBhcmVuKFxuICAgICAgdHMuY3JlYXRlQXNFeHByZXNzaW9uKGV4cHIsIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLkFueUtleXdvcmQpKSk7XG59XG5cblxuLyoqXG4gKiBDcmVhdGUgYW4gZXhwcmVzc2lvbiB3aGljaCBpbnN0YW50aWF0ZXMgYW4gZWxlbWVudCBieSBpdHMgSFRNTCB0YWdOYW1lLlxuICpcbiAqIFRoYW5rcyB0byBuYXJyb3dpbmcgb2YgYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKWAsIHRoaXMgZXhwcmVzc2lvbiB3aWxsIGhhdmUgaXRzIHR5cGUgaW5mZXJyZWRcbiAqIGJhc2VkIG9uIHRoZSB0YWcgbmFtZSwgaW5jbHVkaW5nIGZvciBjdXN0b20gZWxlbWVudHMgdGhhdCBoYXZlIGFwcHJvcHJpYXRlIC5kLnRzIGRlZmluaXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHNDcmVhdGVFbGVtZW50KHRhZ05hbWU6IHN0cmluZyk6IHRzLkV4cHJlc3Npb24ge1xuICBjb25zdCBjcmVhdGVFbGVtZW50ID0gdHMuY3JlYXRlUHJvcGVydHlBY2Nlc3MoXG4gICAgICAvKiBleHByZXNzaW9uICovIHRzLmNyZWF0ZUlkZW50aWZpZXIoJ2RvY3VtZW50JyksICdjcmVhdGVFbGVtZW50Jyk7XG4gIHJldHVybiB0cy5jcmVhdGVDYWxsKFxuICAgICAgLyogZXhwcmVzc2lvbiAqLyBjcmVhdGVFbGVtZW50LFxuICAgICAgLyogdHlwZUFyZ3VtZW50cyAqLyB1bmRlZmluZWQsXG4gICAgICAvKiBhcmd1bWVudHNBcnJheSAqL1t0cy5jcmVhdGVMaXRlcmFsKHRhZ05hbWUpXSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYHRzLlZhcmlhYmxlU3RhdGVtZW50YCB3aGljaCBkZWNsYXJlcyBhIHZhcmlhYmxlIHdpdGhvdXQgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogVGhlIGluaXRpYWxpemVyIGBudWxsIWAgaXMgdXNlZCB0byBieXBhc3Mgc3RyaWN0IHZhcmlhYmxlIGluaXRpYWxpemF0aW9uIGNoZWNrcy5cbiAqXG4gKiBVbmxpa2Ugd2l0aCBgdHNDcmVhdGVWYXJpYWJsZWAsIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBleHBsaWNpdGx5IHNwZWNpZmllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRzRGVjbGFyZVZhcmlhYmxlKGlkOiB0cy5JZGVudGlmaWVyLCB0eXBlOiB0cy5UeXBlTm9kZSk6IHRzLlZhcmlhYmxlU3RhdGVtZW50IHtcbiAgY29uc3QgZGVjbCA9IHRzLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgICAvKiBuYW1lICovIGlkLFxuICAgICAgLyogdHlwZSAqLyB0eXBlLFxuICAgICAgLyogaW5pdGlhbGl6ZXIgKi8gdHMuY3JlYXRlTm9uTnVsbEV4cHJlc3Npb24odHMuY3JlYXRlTnVsbCgpKSk7XG4gIHJldHVybiB0cy5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudChcbiAgICAgIC8qIG1vZGlmaWVycyAqLyB1bmRlZmluZWQsXG4gICAgICAvKiBkZWNsYXJhdGlvbkxpc3QgKi9bZGVjbF0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGB0cy5WYXJpYWJsZVN0YXRlbWVudGAgdGhhdCBpbml0aWFsaXplcyBhIHZhcmlhYmxlIHdpdGggYSBnaXZlbiBleHByZXNzaW9uLlxuICpcbiAqIFVubGlrZSB3aXRoIGB0c0RlY2xhcmVWYXJpYWJsZWAsIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBpbmZlcnJlZCBmcm9tIHRoZSBpbml0aWFsaXplclxuICogZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRzQ3JlYXRlVmFyaWFibGUoXG4gICAgaWQ6IHRzLklkZW50aWZpZXIsIGluaXRpYWxpemVyOiB0cy5FeHByZXNzaW9uKTogdHMuVmFyaWFibGVTdGF0ZW1lbnQge1xuICBjb25zdCBkZWNsID0gdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcbiAgICAgIC8qIG5hbWUgKi8gaWQsXG4gICAgICAvKiB0eXBlICovIHVuZGVmaW5lZCxcbiAgICAgIC8qIGluaXRpYWxpemVyICovIGluaXRpYWxpemVyKTtcbiAgcmV0dXJuIHRzLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgICAgLyogbW9kaWZpZXJzICovIHVuZGVmaW5lZCxcbiAgICAgIC8qIGRlY2xhcmF0aW9uTGlzdCAqL1tkZWNsXSk7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IGEgYHRzLkNhbGxFeHByZXNzaW9uYCB0aGF0IGNhbGxzIGEgbWV0aG9kIG9uIGEgcmVjZWl2ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0c0NhbGxNZXRob2QoXG4gICAgcmVjZWl2ZXI6IHRzLkV4cHJlc3Npb24sIG1ldGhvZE5hbWU6IHN0cmluZywgYXJnczogdHMuRXhwcmVzc2lvbltdID0gW10pOiB0cy5DYWxsRXhwcmVzc2lvbiB7XG4gIGNvbnN0IG1ldGhvZEFjY2VzcyA9IHRzLmNyZWF0ZVByb3BlcnR5QWNjZXNzKHJlY2VpdmVyLCBtZXRob2ROYW1lKTtcbiAgcmV0dXJuIHRzLmNyZWF0ZUNhbGwoXG4gICAgICAvKiBleHByZXNzaW9uICovIG1ldGhvZEFjY2VzcyxcbiAgICAgIC8qIHR5cGVBcmd1bWVudHMgKi8gdW5kZWZpbmVkLFxuICAgICAgLyogYXJndW1lbnRzQXJyYXkgKi8gYXJncyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0lmQ2xhc3NJc0V4cG9ydGVkKG5vZGU6IENsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgLy8gQSBjbGFzcyBpcyBleHBvcnRlZCBpZiBvbmUgb2YgdHdvIGNvbmRpdGlvbnMgaXMgbWV0OlxuICAvLyAxKSBpdCBoYXMgdGhlICdleHBvcnQnIG1vZGlmaWVyLlxuICAvLyAyKSBpdCdzIGRlY2xhcmVkIGF0IHRoZSB0b3AgbGV2ZWwsIGFuZCB0aGVyZSBpcyBhbiBleHBvcnQgc3RhdGVtZW50IGZvciB0aGUgY2xhc3MuXG4gIGlmIChub2RlLm1vZGlmaWVycyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBub2RlLm1vZGlmaWVycy5zb21lKG1vZCA9PiBtb2Qua2luZCA9PT0gdHMuU3ludGF4S2luZC5FeHBvcnRLZXl3b3JkKSkge1xuICAgIC8vIENvbmRpdGlvbiAxIGlzIHRydWUsIHRoZSBjbGFzcyBoYXMgYW4gJ2V4cG9ydCcga2V5d29yZCBhdHRhY2hlZC5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChcbiAgICAgIG5vZGUucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgdHMuaXNTb3VyY2VGaWxlKG5vZGUucGFyZW50KSAmJlxuICAgICAgY2hlY2tJZkZpbGVIYXNFeHBvcnQobm9kZS5wYXJlbnQsIG5vZGUubmFtZS50ZXh0KSkge1xuICAgIC8vIENvbmRpdGlvbiAyIGlzIHRydWUsIHRoZSBjbGFzcyBpcyBleHBvcnRlZCB2aWEgYW4gJ2V4cG9ydCB7fScgc3RhdGVtZW50LlxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2hlY2tJZkZpbGVIYXNFeHBvcnQoc2Y6IHRzLlNvdXJjZUZpbGUsIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IHN0bXQgb2Ygc2Yuc3RhdGVtZW50cykge1xuICAgIGlmICh0cy5pc0V4cG9ydERlY2xhcmF0aW9uKHN0bXQpICYmIHN0bXQuZXhwb3J0Q2xhdXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBzdG10LmV4cG9ydENsYXVzZS5lbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5wcm9wZXJ0eU5hbWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtZW50Lm5hbWUudGV4dCA9PT0gbmFtZSkge1xuICAgICAgICAgIC8vIFRoZSBuYW1lZCBkZWNsYXJhdGlvbiBpcyBkaXJlY3RseSBleHBvcnRlZC5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnByb3BlcnR5TmFtZSAhPT0gdW5kZWZpbmVkICYmIGVsZW1lbnQucHJvcGVydHlOYW1lLnRleHQgPT0gbmFtZSkge1xuICAgICAgICAgIC8vIFRoZSBuYW1lZCBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZCB2aWEgYW4gYWxpYXMuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJZkdlbmVyaWNUeXBlc0FyZVVuYm91bmQobm9kZTogQ2xhc3NEZWNsYXJhdGlvbjx0cy5DbGFzc0RlY2xhcmF0aW9uPik6XG4gICAgYm9vbGVhbiB7XG4gIGlmIChub2RlLnR5cGVQYXJhbWV0ZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gbm9kZS50eXBlUGFyYW1ldGVycy5ldmVyeShwYXJhbSA9PiBwYXJhbS5jb25zdHJhaW50ID09PSB1bmRlZmluZWQpO1xufVxuIl19
@@ -10,7 +10,7 @@ import { BoundTarget, SchemaMetadata } from '@angular/compiler';
10
10
  import * as ts from 'typescript';
11
11
  import { Reference } from '../../imports';
12
12
  import { ClassDeclaration } from '../../reflection';
13
- import { TypeCheckBlockMetadata, TypeCheckableDirectiveMeta } from './api';
13
+ import { TemplateId, TypeCheckBlockMetadata, TypeCheckableDirectiveMeta } from './api';
14
14
  import { DomSchemaChecker } from './dom';
15
15
  import { Environment } from './environment';
16
16
  import { OutOfBandDiagnosticRecorder } from './oob';
@@ -48,12 +48,12 @@ export declare class Context {
48
48
  readonly env: Environment;
49
49
  readonly domSchemaChecker: DomSchemaChecker;
50
50
  readonly oobRecorder: OutOfBandDiagnosticRecorder;
51
- readonly id: string;
51
+ readonly id: TemplateId;
52
52
  readonly boundTarget: BoundTarget<TypeCheckableDirectiveMeta>;
53
53
  private pipes;
54
54
  readonly schemas: SchemaMetadata[];
55
55
  private nextId;
56
- constructor(env: Environment, domSchemaChecker: DomSchemaChecker, oobRecorder: OutOfBandDiagnosticRecorder, id: string, boundTarget: BoundTarget<TypeCheckableDirectiveMeta>, pipes: Map<string, Reference<ClassDeclaration<ts.ClassDeclaration>>>, schemas: SchemaMetadata[]);
56
+ constructor(env: Environment, domSchemaChecker: DomSchemaChecker, oobRecorder: OutOfBandDiagnosticRecorder, id: TemplateId, boundTarget: BoundTarget<TypeCheckableDirectiveMeta>, pipes: Map<string, Reference<ClassDeclaration<ts.ClassDeclaration>>>, schemas: SchemaMetadata[]);
57
57
  /**
58
58
  * Allocate a new variable name for use within the `Context`.
59
59
  *