@angular/compiler-cli 12.2.0-next.1 → 12.2.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 (467) hide show
  1. package/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
  2. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  3. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  4. package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
  5. package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
  6. package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
  7. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
  8. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
  9. package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
  10. package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
  11. package/ngcc/src/host/commonjs_host.js +1 -1
  12. package/ngcc/src/host/esm2015_host.js +1 -1
  13. package/ngcc/src/host/esm5_host.js +1 -1
  14. package/ngcc/src/host/umd_host.js +1 -1
  15. package/ngcc/src/packages/build_marker.d.ts +1 -1
  16. package/ngcc/src/packages/build_marker.js +1 -1
  17. package/ngcc/src/packages/entry_point_manifest.js +1 -1
  18. package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
  19. package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
  20. package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
  21. package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
  22. package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
  23. package/package.json +2 -2
  24. package/src/ngtsc/annotations/src/component.js +1 -1
  25. package/src/ngtsc/annotations/src/directive.js +1 -1
  26. package/src/ngtsc/annotations/src/ng_module.js +1 -1
  27. package/src/ngtsc/annotations/src/pipe.js +1 -1
  28. package/src/ngtsc/core/src/compiler.js +1 -1
  29. package/src/ngtsc/cycles/src/analyzer.d.ts +7 -0
  30. package/src/ngtsc/cycles/src/analyzer.js +89 -4
  31. package/src/ngtsc/cycles/src/imports.d.ts +1 -6
  32. package/src/ngtsc/cycles/src/imports.js +5 -23
  33. package/src/ngtsc/diagnostics/src/error_code.d.ts +5 -0
  34. package/src/ngtsc/diagnostics/src/error_code.js +6 -1
  35. package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
  36. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  37. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  38. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  39. package/src/ngtsc/incremental/src/incremental.js +30 -4
  40. package/src/ngtsc/indexer/src/template.js +1 -1
  41. package/src/ngtsc/metadata/src/dts.js +4 -5
  42. package/src/ngtsc/metadata/src/util.d.ts +2 -2
  43. package/src/ngtsc/metadata/src/util.js +9 -6
  44. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  45. package/src/ngtsc/partial_evaluator/src/interpreter.js +6 -5
  46. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  47. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  48. package/src/ngtsc/program_driver/src/api.js +3 -2
  49. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  50. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  51. package/src/ngtsc/reflection/src/typescript.js +4 -1
  52. package/src/ngtsc/transform/src/compilation.d.ts +5 -0
  53. package/src/ngtsc/transform/src/compilation.js +95 -72
  54. package/src/ngtsc/transform/src/transform.js +1 -1
  55. package/src/ngtsc/typecheck/api/checker.d.ts +18 -1
  56. package/src/ngtsc/typecheck/api/checker.js +1 -1
  57. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.d.ts +5 -3
  58. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.js +48 -21
  59. package/src/ngtsc/typecheck/src/checker.d.ts +11 -1
  60. package/src/ngtsc/typecheck/src/checker.js +20 -5
  61. package/src/ngtsc/typecheck/src/completion.d.ts +3 -1
  62. package/src/ngtsc/typecheck/src/completion.js +52 -2
  63. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  64. package/src/ngtsc/typecheck/src/context.js +11 -3
  65. package/src/ngtsc/typecheck/src/oob.d.ts +7 -1
  66. package/src/ngtsc/typecheck/src/oob.js +48 -10
  67. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  68. package/src/ngtsc/typecheck/src/template_symbol_builder.js +21 -1
  69. package/src/ngtsc/typecheck/src/type_check_block.js +35 -2
  70. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  71. package/src/ngtsc/typecheck/src/type_emitter.js +25 -6
  72. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  73. package/src/ngtsc/util/src/visitor.js +1 -8
  74. package/src/version.js +1 -1
  75. package/compiler-cli.externs.js +0 -0
  76. package/index.mjs +0 -20
  77. package/linker/babel/babel.externs.js +0 -0
  78. package/linker/babel/index.mjs +0 -11
  79. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  80. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  81. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  82. package/linker/babel/src/babel_plugin.mjs +0 -23
  83. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  84. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  85. package/linker/index.mjs +0 -7
  86. package/linker/linker.externs.js +0 -0
  87. package/linker/src/ast/ast_host.mjs +0 -9
  88. package/linker/src/ast/ast_value.mjs +0 -256
  89. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  90. package/linker/src/ast/utils.mjs +0 -17
  91. package/linker/src/fatal_linker_error.mjs +0 -30
  92. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  93. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  94. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  95. package/linker/src/file_linker/file_linker.mjs +0 -70
  96. package/linker/src/file_linker/get_source_file.mjs +0 -28
  97. package/linker/src/file_linker/linker_environment.mjs +0 -23
  98. package/linker/src/file_linker/linker_options.mjs +0 -16
  99. package/linker/src/file_linker/needs_linking.mjs +0 -27
  100. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  101. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  102. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  103. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  104. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  105. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  106. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  107. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  108. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  109. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  110. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  111. package/linker/src/file_linker/translator.mjs +0 -23
  112. package/linker/src/linker_import_generator.mjs +0 -28
  113. package/ngcc/index.mjs +0 -16
  114. package/ngcc/main-ivy-ngcc.mjs +0 -12
  115. package/ngcc/main-ngcc.mjs +0 -32
  116. package/ngcc/ngcc.externs.js +0 -0
  117. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  118. package/ngcc/src/analysis/migration_host.mjs +0 -80
  119. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  120. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  121. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  122. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  123. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  124. package/ngcc/src/analysis/types.mjs +0 -2
  125. package/ngcc/src/analysis/util.mjs +0 -19
  126. package/ngcc/src/command_line_options.mjs +0 -142
  127. package/ngcc/src/constants.mjs +0 -10
  128. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  129. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  130. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  131. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  132. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  133. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  134. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  135. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  136. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  137. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  138. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  139. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  140. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  141. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  142. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  143. package/ngcc/src/execution/api.mjs +0 -2
  144. package/ngcc/src/execution/cluster/api.mjs +0 -9
  145. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  146. package/ngcc/src/execution/cluster/master.mjs +0 -261
  147. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  148. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  149. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  150. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  151. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  152. package/ngcc/src/execution/tasks/api.mjs +0 -22
  153. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  154. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  155. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  156. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  157. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  158. package/ngcc/src/host/commonjs_host.mjs +0 -220
  159. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  160. package/ngcc/src/host/delegating_host.mjs +0 -140
  161. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  162. package/ngcc/src/host/esm5_host.mjs +0 -721
  163. package/ngcc/src/host/ngcc_host.mjs +0 -15
  164. package/ngcc/src/host/umd_host.mjs +0 -486
  165. package/ngcc/src/host/utils.mjs +0 -12
  166. package/ngcc/src/locking/async_locker.mjs +0 -76
  167. package/ngcc/src/locking/lock_file.mjs +0 -4
  168. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  169. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  170. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  171. package/ngcc/src/locking/sync_locker.mjs +0 -52
  172. package/ngcc/src/main.mjs +0 -134
  173. package/ngcc/src/migrations/migration.mjs +0 -2
  174. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  175. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  176. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  177. package/ngcc/src/migrations/utils.mjs +0 -117
  178. package/ngcc/src/ngcc_options.mjs +0 -119
  179. package/ngcc/src/packages/build_marker.mjs +0 -84
  180. package/ngcc/src/packages/bundle_program.mjs +0 -52
  181. package/ngcc/src/packages/configuration.mjs +0 -255
  182. package/ngcc/src/packages/entry_point.mjs +0 -239
  183. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  184. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  185. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  186. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  187. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  188. package/ngcc/src/packages/transformer.mjs +0 -140
  189. package/ngcc/src/path_mappings.mjs +0 -13
  190. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  191. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  192. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  193. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  194. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  195. package/ngcc/src/rendering/renderer.mjs +0 -170
  196. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  197. package/ngcc/src/rendering/source_maps.mjs +0 -54
  198. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  199. package/ngcc/src/rendering/utils.mjs +0 -20
  200. package/ngcc/src/utils.mjs +0 -144
  201. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  202. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  203. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  204. package/ngcc/src/writing/file_writer.mjs +0 -2
  205. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  206. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  207. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  208. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  209. package/src/diagnostics/typescript_version.mjs +0 -79
  210. package/src/extract_i18n.mjs +0 -46
  211. package/src/language_services.mjs +0 -18
  212. package/src/main.mjs +0 -185
  213. package/src/metadata/bundle_index_host.mjs +0 -107
  214. package/src/metadata/bundler.mjs +0 -556
  215. package/src/metadata/collector.mjs +0 -701
  216. package/src/metadata/evaluator.mjs +0 -643
  217. package/src/metadata/index.mjs +0 -11
  218. package/src/metadata/index_writer.mjs +0 -44
  219. package/src/metadata/schema.mjs +0 -102
  220. package/src/metadata/symbols.mjs +0 -117
  221. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  222. package/src/ngtsc/annotations/index.mjs +0 -15
  223. package/src/ngtsc/annotations/src/api.mjs +0 -9
  224. package/src/ngtsc/annotations/src/component.mjs +0 -1068
  225. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  226. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  227. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  228. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  229. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  230. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  231. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  232. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  233. package/src/ngtsc/annotations/src/util.mjs +0 -495
  234. package/src/ngtsc/core/api/index.mjs +0 -12
  235. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  236. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  237. package/src/ngtsc/core/api/src/options.mjs +0 -9
  238. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  239. package/src/ngtsc/core/api.externs.js +0 -0
  240. package/src/ngtsc/core/core.externs.js +0 -0
  241. package/src/ngtsc/core/index.mjs +0 -10
  242. package/src/ngtsc/core/src/compiler.mjs +0 -917
  243. package/src/ngtsc/core/src/config.mjs +0 -15
  244. package/src/ngtsc/core/src/host.mjs +0 -229
  245. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  246. package/src/ngtsc/cycles/index.mjs +0 -10
  247. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  248. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  249. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  250. package/src/ngtsc/diagnostics/index.mjs +0 -11
  251. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  252. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  253. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  254. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  255. package/src/ngtsc/entry_point/index.mjs +0 -12
  256. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  257. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  258. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  259. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  260. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  261. package/src/ngtsc/file_system/index.mjs +0 -13
  262. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  263. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  264. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  265. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  266. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  267. package/src/ngtsc/file_system/src/types.mjs +0 -9
  268. package/src/ngtsc/file_system/src/util.mjs +0 -22
  269. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  270. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  271. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  272. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  273. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  274. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  275. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  276. package/src/ngtsc/imports/imports.externs.js +0 -0
  277. package/src/ngtsc/imports/index.mjs +0 -14
  278. package/src/ngtsc/imports/src/alias.mjs +0 -137
  279. package/src/ngtsc/imports/src/core.mjs +0 -78
  280. package/src/ngtsc/imports/src/default.mjs +0 -135
  281. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  282. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  283. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  284. package/src/ngtsc/imports/src/references.mjs +0 -137
  285. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  286. package/src/ngtsc/incremental/api.externs.js +0 -0
  287. package/src/ngtsc/incremental/api.mjs +0 -9
  288. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  289. package/src/ngtsc/incremental/index.mjs +0 -12
  290. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  291. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  292. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  293. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  294. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  295. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  296. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  297. package/src/ngtsc/incremental/src/incremental.mjs +0 -271
  298. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  299. package/src/ngtsc/incremental/src/state.mjs +0 -17
  300. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  301. package/src/ngtsc/indexer/index.mjs +0 -11
  302. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  303. package/src/ngtsc/indexer/src/api.mjs +0 -30
  304. package/src/ngtsc/indexer/src/context.mjs +0 -25
  305. package/src/ngtsc/indexer/src/template.mjs +0 -303
  306. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  307. package/src/ngtsc/logging/index.mjs +0 -10
  308. package/src/ngtsc/logging/logging.externs.js +0 -0
  309. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  310. package/src/ngtsc/logging/src/logger.mjs +0 -15
  311. package/src/ngtsc/logging/testing/index.mjs +0 -9
  312. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  313. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  314. package/src/ngtsc/metadata/index.mjs +0 -15
  315. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  316. package/src/ngtsc/metadata/src/api.mjs +0 -13
  317. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  318. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  319. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  320. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  321. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  322. package/src/ngtsc/metadata/src/util.mjs +0 -200
  323. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  324. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  325. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  326. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -174
  327. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -94
  328. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  329. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -719
  330. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  331. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  332. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  333. package/src/ngtsc/perf/index.mjs +0 -11
  334. package/src/ngtsc/perf/perf.externs.js +0 -0
  335. package/src/ngtsc/perf/src/api.mjs +0 -278
  336. package/src/ngtsc/perf/src/clock.mjs +0 -15
  337. package/src/ngtsc/perf/src/noop.mjs +0 -21
  338. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  339. package/src/ngtsc/program.mjs +0 -271
  340. package/src/ngtsc/program_driver/index.mjs +0 -10
  341. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  342. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  343. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  344. package/src/ngtsc/reflection/index.mjs +0 -12
  345. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  346. package/src/ngtsc/reflection/src/host.mjs +0 -73
  347. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  348. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  349. package/src/ngtsc/reflection/src/util.mjs +0 -21
  350. package/src/ngtsc/resource/index.mjs +0 -9
  351. package/src/ngtsc/resource/resource.externs.js +0 -0
  352. package/src/ngtsc/resource/src/loader.mjs +0 -242
  353. package/src/ngtsc/routing/index.mjs +0 -11
  354. package/src/ngtsc/routing/routing.externs.js +0 -0
  355. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  356. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  357. package/src/ngtsc/routing/src/route.mjs +0 -51
  358. package/src/ngtsc/scope/index.mjs +0 -12
  359. package/src/ngtsc/scope/scope.externs.js +0 -0
  360. package/src/ngtsc/scope/src/api.mjs +0 -9
  361. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  362. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  363. package/src/ngtsc/scope/src/local.mjs +0 -531
  364. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  365. package/src/ngtsc/shims/api.externs.js +0 -0
  366. package/src/ngtsc/shims/api.mjs +0 -2
  367. package/src/ngtsc/shims/index.mjs +0 -14
  368. package/src/ngtsc/shims/shims.externs.js +0 -0
  369. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  370. package/src/ngtsc/shims/src/expando.mjs +0 -102
  371. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  372. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  373. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  374. package/src/ngtsc/shims/src/util.mjs +0 -26
  375. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  376. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  377. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  378. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  379. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  380. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  381. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  382. package/src/ngtsc/switch/index.mjs +0 -9
  383. package/src/ngtsc/switch/src/switch.mjs +0 -115
  384. package/src/ngtsc/switch/switch.externs.js +0 -0
  385. package/src/ngtsc/transform/index.mjs +0 -14
  386. package/src/ngtsc/transform/src/alias.mjs +0 -30
  387. package/src/ngtsc/transform/src/api.mjs +0 -63
  388. package/src/ngtsc/transform/src/compilation.mjs +0 -514
  389. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  390. package/src/ngtsc/transform/src/trait.mjs +0 -95
  391. package/src/ngtsc/transform/src/transform.mjs +0 -298
  392. package/src/ngtsc/transform/src/utils.mjs +0 -57
  393. package/src/ngtsc/transform/transform.externs.js +0 -0
  394. package/src/ngtsc/translator/index.mjs +0 -14
  395. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  396. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  397. package/src/ngtsc/translator/src/context.mjs +0 -24
  398. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  399. package/src/ngtsc/translator/src/translator.mjs +0 -317
  400. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  401. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  402. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  403. package/src/ngtsc/translator/translator.externs.js +0 -0
  404. package/src/ngtsc/tsc_plugin.mjs +0 -98
  405. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  406. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  407. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  408. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  409. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  410. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  411. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  412. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  413. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  414. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  415. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  416. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  417. package/src/ngtsc/typecheck/index.mjs +0 -12
  418. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  419. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  420. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  421. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  422. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  423. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  424. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  425. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  426. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  427. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  428. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  429. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  430. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  431. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  432. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -485
  433. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  434. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  435. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  436. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  437. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -127
  438. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -93
  439. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  440. package/src/ngtsc/util/src/path.mjs +0 -18
  441. package/src/ngtsc/util/src/typescript.mjs +0 -143
  442. package/src/ngtsc/util/src/visitor.mjs +0 -107
  443. package/src/ngtsc/util/util.externs.js +0 -0
  444. package/src/ngtsc/xi18n/index.mjs +0 -9
  445. package/src/ngtsc/xi18n/src/context.mjs +0 -9
  446. package/src/ngtsc/xi18n/xi18n.externs.js +0 -0
  447. package/src/perform_compile.mjs +0 -275
  448. package/src/perform_watch.mjs +0 -247
  449. package/src/tooling.mjs +0 -32
  450. package/src/transformers/api.mjs +0 -27
  451. package/src/transformers/compiler_host.mjs +0 -593
  452. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  453. package/src/transformers/entry_points.mjs +0 -10
  454. package/src/transformers/i18n.mjs +0 -59
  455. package/src/transformers/inline_resources.mjs +0 -269
  456. package/src/transformers/lower_expressions.mjs +0 -336
  457. package/src/transformers/metadata_cache.mjs +0 -53
  458. package/src/transformers/metadata_reader.mjs +0 -104
  459. package/src/transformers/node_emitter.mjs +0 -606
  460. package/src/transformers/node_emitter_transform.mjs +0 -78
  461. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  462. package/src/transformers/program.mjs +0 -887
  463. package/src/transformers/r3_metadata_transform.mjs +0 -46
  464. package/src/transformers/r3_transform.mjs +0 -29
  465. package/src/transformers/util.mjs +0 -89
  466. package/src/typescript_support.mjs +0 -57
  467. package/src/version.mjs +0 -15
@@ -1,14 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { AliasStrategy, PrivateExportAliasingHost, UnifiedModulesAliasingHost } from './src/alias';
9
- export { NoopImportRewriter, R3SymbolsImportRewriter, validateAndRewriteCoreSymbol } from './src/core';
10
- export { DefaultImportTracker } from './src/default';
11
- export { AbsoluteModuleStrategy, ImportFlags, LocalIdentifierStrategy, LogicalProjectStrategy, ReferenceEmitter, RelativePathStrategy, UnifiedModulesStrategy } from './src/emitter';
12
- export { Reference } from './src/references';
13
- export { ModuleResolver } from './src/resolver';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2ltcG9ydHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFlLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUMvRyxPQUFPLEVBQWlCLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3JILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQWtDLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBeUIsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFMU8sT0FBTyxFQUFlLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQge0FsaWFzaW5nSG9zdCwgQWxpYXNTdHJhdGVneSwgUHJpdmF0ZUV4cG9ydEFsaWFzaW5nSG9zdCwgVW5pZmllZE1vZHVsZXNBbGlhc2luZ0hvc3R9IGZyb20gJy4vc3JjL2FsaWFzJztcbmV4cG9ydCB7SW1wb3J0UmV3cml0ZXIsIE5vb3BJbXBvcnRSZXdyaXRlciwgUjNTeW1ib2xzSW1wb3J0UmV3cml0ZXIsIHZhbGlkYXRlQW5kUmV3cml0ZUNvcmVTeW1ib2x9IGZyb20gJy4vc3JjL2NvcmUnO1xuZXhwb3J0IHtEZWZhdWx0SW1wb3J0VHJhY2tlcn0gZnJvbSAnLi9zcmMvZGVmYXVsdCc7XG5leHBvcnQge0Fic29sdXRlTW9kdWxlU3RyYXRlZ3ksIEVtaXR0ZWRSZWZlcmVuY2UsIEltcG9ydGVkRmlsZSwgSW1wb3J0RmxhZ3MsIExvY2FsSWRlbnRpZmllclN0cmF0ZWd5LCBMb2dpY2FsUHJvamVjdFN0cmF0ZWd5LCBSZWZlcmVuY2VFbWl0U3RyYXRlZ3ksIFJlZmVyZW5jZUVtaXR0ZXIsIFJlbGF0aXZlUGF0aFN0cmF0ZWd5LCBVbmlmaWVkTW9kdWxlc1N0cmF0ZWd5fSBmcm9tICcuL3NyYy9lbWl0dGVyJztcbmV4cG9ydCB7UmVleHBvcnR9IGZyb20gJy4vc3JjL3JlZXhwb3J0JztcbmV4cG9ydCB7T3duaW5nTW9kdWxlLCBSZWZlcmVuY2V9IGZyb20gJy4vc3JjL3JlZmVyZW5jZXMnO1xuZXhwb3J0IHtNb2R1bGVSZXNvbHZlcn0gZnJvbSAnLi9zcmMvcmVzb2x2ZXInO1xuIl19
@@ -1,137 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { ExternalExpr } from '@angular/compiler';
9
- import { ImportFlags } from './emitter';
10
- // Escape anything that isn't alphanumeric, '/' or '_'.
11
- const CHARS_TO_ESCAPE = /[^a-zA-Z0-9/_]/g;
12
- /**
13
- * An `AliasingHost` which generates and consumes alias re-exports when module names for each file
14
- * are determined by a `UnifiedModulesHost`.
15
- *
16
- * When using a `UnifiedModulesHost`, aliasing prevents issues with transitive dependencies. See the
17
- * README.md for more details.
18
- */
19
- export class UnifiedModulesAliasingHost {
20
- constructor(unifiedModulesHost) {
21
- this.unifiedModulesHost = unifiedModulesHost;
22
- /**
23
- * With a `UnifiedModulesHost`, aliases are chosen automatically without the need to look through
24
- * the exports present in a .d.ts file, so we can avoid cluttering the .d.ts files.
25
- */
26
- this.aliasExportsInDts = false;
27
- }
28
- maybeAliasSymbolAs(ref, context, ngModuleName, isReExport) {
29
- if (!isReExport) {
30
- // Aliasing is used with a UnifiedModulesHost to prevent transitive dependencies. Thus,
31
- // aliases
32
- // only need to be created for directives/pipes which are not direct declarations of an
33
- // NgModule which exports them.
34
- return null;
35
- }
36
- return this.aliasName(ref.node, context);
37
- }
38
- /**
39
- * Generates an `Expression` to import `decl` from `via`, assuming an export was added when `via`
40
- * was compiled per `maybeAliasSymbolAs` above.
41
- */
42
- getAliasIn(decl, via, isReExport) {
43
- if (!isReExport) {
44
- // Directly exported directives/pipes don't require an alias, per the logic in
45
- // `maybeAliasSymbolAs`.
46
- return null;
47
- }
48
- // viaModule is the module it'll actually be imported from.
49
- const moduleName = this.unifiedModulesHost.fileNameToModuleName(via.fileName, via.fileName);
50
- return new ExternalExpr({ moduleName, name: this.aliasName(decl, via) });
51
- }
52
- /**
53
- * Generates an alias name based on the full module name of the file which declares the aliased
54
- * directive/pipe.
55
- */
56
- aliasName(decl, context) {
57
- // The declared module is used to get the name of the alias.
58
- const declModule = this.unifiedModulesHost.fileNameToModuleName(decl.getSourceFile().fileName, context.fileName);
59
- const replaced = declModule.replace(CHARS_TO_ESCAPE, '_').replace(/\//g, '$');
60
- return 'ɵng$' + replaced + '$$' + decl.name.text;
61
- }
62
- }
63
- /**
64
- * An `AliasingHost` which exports directives from any file containing an NgModule in which they're
65
- * declared/exported, under a private symbol name.
66
- *
67
- * These exports support cases where an NgModule is imported deeply from an absolute module path
68
- * (that is, it's not part of an Angular Package Format entrypoint), and the compiler needs to
69
- * import any matched directives/pipes from the same path (to the NgModule file). See README.md for
70
- * more details.
71
- */
72
- export class PrivateExportAliasingHost {
73
- constructor(host) {
74
- this.host = host;
75
- /**
76
- * Under private export aliasing, the `AbsoluteModuleStrategy` used for emitting references will
77
- * will select aliased exports that it finds in the .d.ts file for an NgModule's file. Thus,
78
- * emitting these exports in .d.ts is a requirement for the `PrivateExportAliasingHost` to
79
- * function correctly.
80
- */
81
- this.aliasExportsInDts = true;
82
- }
83
- maybeAliasSymbolAs(ref, context, ngModuleName) {
84
- if (ref.hasOwningModuleGuess) {
85
- // Skip nodes that already have an associated absolute module specifier, since they can be
86
- // safely imported from that specifier.
87
- return null;
88
- }
89
- // Look for a user-provided export of `decl` in `context`. If one exists, then an alias export
90
- // is not needed.
91
- // TODO(alxhub): maybe add a host method to check for the existence of an export without going
92
- // through the entire list of exports.
93
- const exports = this.host.getExportsOfModule(context);
94
- if (exports === null) {
95
- // Something went wrong, and no exports were available at all. Bail rather than risk creating
96
- // re-exports when they're not needed.
97
- throw new Error(`Could not determine the exports of: ${context.fileName}`);
98
- }
99
- let found = false;
100
- exports.forEach(value => {
101
- if (value.node === ref.node) {
102
- found = true;
103
- }
104
- });
105
- if (found) {
106
- // The module exports the declared class directly, no alias is necessary.
107
- return null;
108
- }
109
- return `ɵngExportɵ${ngModuleName}ɵ${ref.node.name.text}`;
110
- }
111
- /**
112
- * A `PrivateExportAliasingHost` only generates re-exports and does not direct the compiler to
113
- * directly consume the aliases it creates.
114
- *
115
- * Instead, they're consumed indirectly: `AbsoluteModuleStrategy` `ReferenceEmitterStrategy` will
116
- * select these alias exports automatically when looking for an export of the directive/pipe from
117
- * the same path as the NgModule was imported.
118
- *
119
- * Thus, `getAliasIn` always returns `null`.
120
- */
121
- getAliasIn() {
122
- return null;
123
- }
124
- }
125
- /**
126
- * A `ReferenceEmitStrategy` which will consume the alias attached to a particular `Reference` to a
127
- * directive or pipe, if it exists.
128
- */
129
- export class AliasStrategy {
130
- emit(ref, context, importMode) {
131
- if (importMode & ImportFlags.NoAliasing || ref.alias === null) {
132
- return null;
133
- }
134
- return { expression: ref.alias, importedFile: 'unknown' };
135
- }
136
- }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2ltcG9ydHMvc3JjL2FsaWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBYSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQU0zRCxPQUFPLEVBQW1CLFdBQVcsRUFBd0IsTUFBTSxXQUFXLENBQUM7QUFJL0UsdURBQXVEO0FBQ3ZELE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDO0FBbUUxQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTFEOzs7V0FHRztRQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztJQU4wQixDQUFDO0lBUTlELGtCQUFrQixDQUNkLEdBQWdDLEVBQUUsT0FBc0IsRUFBRSxZQUFvQixFQUM5RSxVQUFtQjtRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsdUZBQXVGO1lBQ3ZGLFVBQVU7WUFDVix1RkFBdUY7WUFDdkYsK0JBQStCO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQXNCLEVBQUUsR0FBa0IsRUFBRSxVQUFtQjtRQUN4RSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsOEVBQThFO1lBQzlFLHdCQUF3QjtZQUN4QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsMkRBQTJEO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RixPQUFPLElBQUksWUFBWSxDQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFNBQVMsQ0FBQyxJQUFzQixFQUFFLE9BQXNCO1FBQzlELDREQUE0RDtRQUM1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQzNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUUsT0FBTyxNQUFNLEdBQUcsUUFBUSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsWUFBb0IsSUFBb0I7UUFBcEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFFeEM7Ozs7O1dBS0c7UUFDTSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFSUyxDQUFDO0lBVTVDLGtCQUFrQixDQUNkLEdBQWdDLEVBQUUsT0FBc0IsRUFBRSxZQUFvQjtRQUNoRixJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtZQUM1QiwwRkFBMEY7WUFDMUYsdUNBQXVDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCw4RkFBOEY7UUFDOUYsaUJBQWlCO1FBQ2pCLDhGQUE4RjtRQUM5RixzQ0FBc0M7UUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDcEIsNkZBQTZGO1lBQzdGLHNDQUFzQztZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUM1RTtRQUNELElBQUksS0FBSyxHQUFZLEtBQUssQ0FBQztRQUMzQixPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUMzQixLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxFQUFFO1lBQ1QseUVBQXlFO1lBQ3pFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLGFBQWEsWUFBWSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixJQUFJLENBQUMsR0FBYyxFQUFFLE9BQXNCLEVBQUUsVUFBdUI7UUFDbEUsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUM3RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtFeHByZXNzaW9uLCBFeHRlcm5hbEV4cHJ9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1VuaWZpZWRNb2R1bGVzSG9zdH0gZnJvbSAnLi4vLi4vY29yZS9hcGknO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7RW1pdHRlZFJlZmVyZW5jZSwgSW1wb3J0RmxhZ3MsIFJlZmVyZW5jZUVtaXRTdHJhdGVneX0gZnJvbSAnLi9lbWl0dGVyJztcbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuL3JlZmVyZW5jZXMnO1xuXG5cbi8vIEVzY2FwZSBhbnl0aGluZyB0aGF0IGlzbid0IGFscGhhbnVtZXJpYywgJy8nIG9yICdfJy5cbmNvbnN0IENIQVJTX1RPX0VTQ0FQRSA9IC9bXmEtekEtWjAtOS9fXS9nO1xuXG4vKipcbiAqIEEgaG9zdCBmb3IgdGhlIGFsaWFzaW5nIHN5c3RlbSwgd2hpY2ggYWxsb3dzIGZvciBhbHRlcm5hdGl2ZSBleHBvcnRzL2ltcG9ydHMgb2YgZGlyZWN0aXZlcy9waXBlcy5cbiAqXG4gKiBHaXZlbiBhbiBpbXBvcnQgb2YgYW4gTmdNb2R1bGUgKGUuZy4gYENvbW1vbk1vZHVsZWApLCB0aGUgY29tcGlsZXIgbXVzdCBnZW5lcmF0ZSBpbXBvcnRzIHRvIHRoZVxuICogZGlyZWN0aXZlcyBhbmQgcGlwZXMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKGUuZy4gYE5nSWZgKSB3aGVuIHRoZXkncmUgdXNlZCBpbiBhIHBhcnRpY3VsYXJcbiAqIHRlbXBsYXRlLiBJbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBpZiB0aGUgY29tcGlsZXIgaXMgbm90IGRpcmVjdGx5IGFibGUgdG8gaW1wb3J0IHRoZVxuICogY29tcG9uZW50IGZyb20gYW5vdGhlciBmaWxlIHdpdGhpbiB0aGUgc2FtZSBwcm9qZWN0LCBpdCB3aWxsIGF0dGVtcHQgdG8gaW1wb3J0IHRoZSBjb21wb25lbnRcbiAqIGZyb20gdGhlIHNhbWUgKGFic29sdXRlKSBwYXRoIGJ5IHdoaWNoIHRoZSBtb2R1bGUgd2FzIGltcG9ydGVkLiBTbyBpbiB0aGUgYWJvdmUgZXhhbXBsZSBpZlxuICogYENvbW1vbk1vZHVsZWAgd2FzIGltcG9ydGVkIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbicsIHRoZSBjb21waWxlciB3aWxsIGF0dGVtcHQgdG8gaW1wb3J0IGBOZ0lmYFxuICogZnJvbSAnQGFuZ3VsYXIvY29tbW9uJyBhcyB3ZWxsLlxuICpcbiAqIFRoZSBhbGlhc2luZyBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIGFib3ZlIGxvZ2ljIGluIHR3byBkaXN0aW5jdCB3YXlzLlxuICpcbiAqIDEpIEl0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBcImFsaWFzXCIgcmUtZXhwb3J0cyBmcm9tIGRpZmZlcmVudCBmaWxlcywgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbiB0aGVcbiAqICAgIHVzZXIgaGFzbid0IGV4cG9ydGVkIHRoZSBkaXJlY3RpdmUocykgZnJvbSB0aGUgRVMgbW9kdWxlIGNvbnRhaW5pbmcgdGhlIE5nTW9kdWxlLiBUaGVzZSByZS1cbiAqICAgIGV4cG9ydHMgY2FuIGFsc28gYmUgaGVscGZ1bCB3aGVuIHVzaW5nIGEgYFVuaWZpZWRNb2R1bGVzSG9zdGAsIHdoaWNoIG92ZXJyaWRlcyB0aGUgaW1wb3J0XG4gKiAgICBsb2dpYyBkZXNjcmliZWQgYWJvdmUuXG4gKlxuICogMikgSXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGFuIGFsdGVybmF0aXZlIGltcG9ydCBleHByZXNzaW9uIGZvciBhIGRpcmVjdGl2ZSBvciBwaXBlLCBpbnN0ZWFkIG9mXG4gKiAgICB0aGUgaW1wb3J0IHRoYXQgdGhlIG5vcm1hbCBsb2dpYyB3b3VsZCBhcHBseS4gVGhlIGFsaWFzIHVzZWQgZGVwZW5kcyBvbiB0aGUgcHJvdmVuYW5jZSBvZiB0aGVcbiAqICAgIGBSZWZlcmVuY2VgIHdoaWNoIHdhcyBvYnRhaW5lZCBmb3IgdGhlIGRpcmVjdGl2ZS9waXBlLCB3aGljaCBpcyB1c3VhbGx5IGEgcHJvcGVydHkgb2YgaG93IGl0XG4gKiAgICBjYW1lIHRvIGJlIGluIGEgdGVtcGxhdGUncyBzY29wZSAoZS5nLiBieSB3aGljaCBOZ01vZHVsZSkuXG4gKlxuICogU2VlIHRoZSBSRUFETUUubWQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IGFsaWFzaW5nIHdvcmtzIHdpdGhpbiB0aGUgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNpbmdIb3N0IHtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgYW55IGFsaWFzIHJlLWV4cG9ydHMgYXJlIHJlbmRlcmVkIGludG8gLmQudHMgZmlsZXMuXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGFsd2F5cyBuZWNlc3NhcnkgZm9yIGFsaWFzaW5nIHRvIGZ1bmN0aW9uIGNvcnJlY3RseSwgc28gdGhpcyBmbGFnIGFsbG93cyBhblxuICAgKiBgQWxpYXNpbmdIb3N0YCB0byBhdm9pZCBjbHV0dGVyaW5nIHRoZSAuZC50cyBmaWxlcyBpZiBleHBvcnRzIGFyZSBub3Qgc3RyaWN0bHkgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNFeHBvcnRzSW5EdHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBhIG5hbWUgYnkgd2hpY2ggYGRlY2xgIHNob3VsZCBiZSByZS1leHBvcnRlZCBmcm9tIGBjb250ZXh0YCwgZGVwZW5kaW5nIG9uIHRoZVxuICAgKiBwYXJ0aWN1bGFyIHNldCBvZiBhbGlhc2luZyBydWxlcyBpbiBwbGFjZS5cbiAgICpcbiAgICogYG1heWJlQWxpYXNTeW1ib2xBc2AgY2FuIHJldHVybiBgbnVsbGAsIGluIHdoaWNoIGNhc2Ugbm8gYWxpYXMgZXhwb3J0IHNob3VsZCBiZSBnZW5lcmF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSByZWYgYSBgUmVmZXJlbmNlYCB0byB0aGUgZGlyZWN0aXZlL3BpcGUgdG8gY29uc2lkZXIgZm9yIGFsaWFzaW5nLlxuICAgKiBAcGFyYW0gY29udGV4dCB0aGUgYHRzLlNvdXJjZUZpbGVgIGluIHdoaWNoIHRoZSBhbGlhcyByZS1leHBvcnQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmF0ZWQuXG4gICAqIEBwYXJhbSBuZ01vZHVsZU5hbWUgdGhlIGRlY2xhcmVkIG5hbWUgb2YgdGhlIGBOZ01vZHVsZWAgd2l0aGluIGBjb250ZXh0YCBmb3Igd2hpY2ggdGhlIGFsaWFzXG4gICAqIHdvdWxkIGJlIGdlbmVyYXRlZC5cbiAgICogQHBhcmFtIGlzUmVFeHBvcnQgd2hldGhlciB0aGUgZGlyZWN0aXZlL3BpcGUgdW5kZXIgY29uc2lkZXJhdGlvbiBpcyByZS1leHBvcnRlZCBmcm9tIGFub3RoZXJcbiAgICogTmdNb2R1bGUgKGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVjbGFyZWQgYnkgaXQgZGlyZWN0bHkpLlxuICAgKi9cbiAgbWF5YmVBbGlhc1N5bWJvbEFzKFxuICAgICAgcmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUsIG5nTW9kdWxlTmFtZTogc3RyaW5nLFxuICAgICAgaXNSZUV4cG9ydDogYm9vbGVhbik6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgYW4gYEV4cHJlc3Npb25gIGJ5IHdoaWNoIGBkZWNsYCBzaG91bGQgYmUgaW1wb3J0ZWQgZnJvbSBgdmlhYCB1c2luZyBhbiBhbGlhcyBleHBvcnRcbiAgICogKHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gcHJldmlvdXNseSBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIGB2aWFgKS5cbiAgICpcbiAgICogYGdldEFsaWFzSW5gIGNhbiByZXR1cm4gYG51bGxgLCBpbiB3aGljaCBjYXNlIG5vIGFsaWFzIGlzIG5lZWRlZCB0byBpbXBvcnQgYGRlY2xgIGZyb20gYHZpYWBcbiAgICogKGFuZCB0aGUgbm9ybWFsIGltcG9ydCBydWxlcyBzaG91bGQgYmUgdXNlZCkuXG4gICAqXG4gICAqIEBwYXJhbSBkZWNsIHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgZGlyZWN0aXZlL3BpcGUgd2hpY2ggaXMgYmVpbmcgaW1wb3J0ZWQsIGFuZCB3aGljaCBtaWdodCBiZVxuICAgKiBhbGlhc2VkLlxuICAgKiBAcGFyYW0gdmlhIHRoZSBgdHMuU291cmNlRmlsZWAgd2hpY2ggbWlnaHQgY29udGFpbiBhbiBhbGlhcyB0byB0aGVcbiAgICovXG4gIGdldEFsaWFzSW4oZGVjbDogQ2xhc3NEZWNsYXJhdGlvbiwgdmlhOiB0cy5Tb3VyY2VGaWxlLCBpc1JlRXhwb3J0OiBib29sZWFuKTogRXhwcmVzc2lvbnxudWxsO1xufVxuXG4vKipcbiAqIEFuIGBBbGlhc2luZ0hvc3RgIHdoaWNoIGdlbmVyYXRlcyBhbmQgY29uc3VtZXMgYWxpYXMgcmUtZXhwb3J0cyB3aGVuIG1vZHVsZSBuYW1lcyBmb3IgZWFjaCBmaWxlXG4gKiBhcmUgZGV0ZXJtaW5lZCBieSBhIGBVbmlmaWVkTW9kdWxlc0hvc3RgLlxuICpcbiAqIFdoZW4gdXNpbmcgYSBgVW5pZmllZE1vZHVsZXNIb3N0YCwgYWxpYXNpbmcgcHJldmVudHMgaXNzdWVzIHdpdGggdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMuIFNlZSB0aGVcbiAqIFJFQURNRS5tZCBmb3IgbW9yZSBkZXRhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgVW5pZmllZE1vZHVsZXNBbGlhc2luZ0hvc3QgaW1wbGVtZW50cyBBbGlhc2luZ0hvc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVuaWZpZWRNb2R1bGVzSG9zdDogVW5pZmllZE1vZHVsZXNIb3N0KSB7fVxuXG4gIC8qKlxuICAgKiBXaXRoIGEgYFVuaWZpZWRNb2R1bGVzSG9zdGAsIGFsaWFzZXMgYXJlIGNob3NlbiBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgdGhlIG5lZWQgdG8gbG9vayB0aHJvdWdoXG4gICAqIHRoZSBleHBvcnRzIHByZXNlbnQgaW4gYSAuZC50cyBmaWxlLCBzbyB3ZSBjYW4gYXZvaWQgY2x1dHRlcmluZyB0aGUgLmQudHMgZmlsZXMuXG4gICAqL1xuICByZWFkb25seSBhbGlhc0V4cG9ydHNJbkR0cyA9IGZhbHNlO1xuXG4gIG1heWJlQWxpYXNTeW1ib2xBcyhcbiAgICAgIHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+LCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBuZ01vZHVsZU5hbWU6IHN0cmluZyxcbiAgICAgIGlzUmVFeHBvcnQ6IGJvb2xlYW4pOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKCFpc1JlRXhwb3J0KSB7XG4gICAgICAvLyBBbGlhc2luZyBpcyB1c2VkIHdpdGggYSBVbmlmaWVkTW9kdWxlc0hvc3QgdG8gcHJldmVudCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcy4gVGh1cyxcbiAgICAgIC8vIGFsaWFzZXNcbiAgICAgIC8vIG9ubHkgbmVlZCB0byBiZSBjcmVhdGVkIGZvciBkaXJlY3RpdmVzL3BpcGVzIHdoaWNoIGFyZSBub3QgZGlyZWN0IGRlY2xhcmF0aW9ucyBvZiBhblxuICAgICAgLy8gTmdNb2R1bGUgd2hpY2ggZXhwb3J0cyB0aGVtLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFsaWFzTmFtZShyZWYubm9kZSwgY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGBFeHByZXNzaW9uYCB0byBpbXBvcnQgYGRlY2xgIGZyb20gYHZpYWAsIGFzc3VtaW5nIGFuIGV4cG9ydCB3YXMgYWRkZWQgd2hlbiBgdmlhYFxuICAgKiB3YXMgY29tcGlsZWQgcGVyIGBtYXliZUFsaWFzU3ltYm9sQXNgIGFib3ZlLlxuICAgKi9cbiAgZ2V0QWxpYXNJbihkZWNsOiBDbGFzc0RlY2xhcmF0aW9uLCB2aWE6IHRzLlNvdXJjZUZpbGUsIGlzUmVFeHBvcnQ6IGJvb2xlYW4pOiBFeHByZXNzaW9ufG51bGwge1xuICAgIGlmICghaXNSZUV4cG9ydCkge1xuICAgICAgLy8gRGlyZWN0bHkgZXhwb3J0ZWQgZGlyZWN0aXZlcy9waXBlcyBkb24ndCByZXF1aXJlIGFuIGFsaWFzLCBwZXIgdGhlIGxvZ2ljIGluXG4gICAgICAvLyBgbWF5YmVBbGlhc1N5bWJvbEFzYC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyB2aWFNb2R1bGUgaXMgdGhlIG1vZHVsZSBpdCdsbCBhY3R1YWxseSBiZSBpbXBvcnRlZCBmcm9tLlxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSB0aGlzLnVuaWZpZWRNb2R1bGVzSG9zdC5maWxlTmFtZVRvTW9kdWxlTmFtZSh2aWEuZmlsZU5hbWUsIHZpYS5maWxlTmFtZSk7XG4gICAgcmV0dXJuIG5ldyBFeHRlcm5hbEV4cHIoe21vZHVsZU5hbWUsIG5hbWU6IHRoaXMuYWxpYXNOYW1lKGRlY2wsIHZpYSl9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYWxpYXMgbmFtZSBiYXNlZCBvbiB0aGUgZnVsbCBtb2R1bGUgbmFtZSBvZiB0aGUgZmlsZSB3aGljaCBkZWNsYXJlcyB0aGUgYWxpYXNlZFxuICAgKiBkaXJlY3RpdmUvcGlwZS5cbiAgICovXG4gIHByaXZhdGUgYWxpYXNOYW1lKGRlY2w6IENsYXNzRGVjbGFyYXRpb24sIGNvbnRleHQ6IHRzLlNvdXJjZUZpbGUpOiBzdHJpbmcge1xuICAgIC8vIFRoZSBkZWNsYXJlZCBtb2R1bGUgaXMgdXNlZCB0byBnZXQgdGhlIG5hbWUgb2YgdGhlIGFsaWFzLlxuICAgIGNvbnN0IGRlY2xNb2R1bGUgPSB0aGlzLnVuaWZpZWRNb2R1bGVzSG9zdC5maWxlTmFtZVRvTW9kdWxlTmFtZShcbiAgICAgICAgZGVjbC5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUsIGNvbnRleHQuZmlsZU5hbWUpO1xuXG4gICAgY29uc3QgcmVwbGFjZWQgPSBkZWNsTW9kdWxlLnJlcGxhY2UoQ0hBUlNfVE9fRVNDQVBFLCAnXycpLnJlcGxhY2UoL1xcLy9nLCAnJCcpO1xuICAgIHJldHVybiAnybVuZyQnICsgcmVwbGFjZWQgKyAnJCQnICsgZGVjbC5uYW1lLnRleHQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBgQWxpYXNpbmdIb3N0YCB3aGljaCBleHBvcnRzIGRpcmVjdGl2ZXMgZnJvbSBhbnkgZmlsZSBjb250YWluaW5nIGFuIE5nTW9kdWxlIGluIHdoaWNoIHRoZXkncmVcbiAqIGRlY2xhcmVkL2V4cG9ydGVkLCB1bmRlciBhIHByaXZhdGUgc3ltYm9sIG5hbWUuXG4gKlxuICogVGhlc2UgZXhwb3J0cyBzdXBwb3J0IGNhc2VzIHdoZXJlIGFuIE5nTW9kdWxlIGlzIGltcG9ydGVkIGRlZXBseSBmcm9tIGFuIGFic29sdXRlIG1vZHVsZSBwYXRoXG4gKiAodGhhdCBpcywgaXQncyBub3QgcGFydCBvZiBhbiBBbmd1bGFyIFBhY2thZ2UgRm9ybWF0IGVudHJ5cG9pbnQpLCBhbmQgdGhlIGNvbXBpbGVyIG5lZWRzIHRvXG4gKiBpbXBvcnQgYW55IG1hdGNoZWQgZGlyZWN0aXZlcy9waXBlcyBmcm9tIHRoZSBzYW1lIHBhdGggKHRvIHRoZSBOZ01vZHVsZSBmaWxlKS4gU2VlIFJFQURNRS5tZCBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhdGVFeHBvcnRBbGlhc2luZ0hvc3QgaW1wbGVtZW50cyBBbGlhc2luZ0hvc3Qge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3Q6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIC8qKlxuICAgKiBVbmRlciBwcml2YXRlIGV4cG9ydCBhbGlhc2luZywgdGhlIGBBYnNvbHV0ZU1vZHVsZVN0cmF0ZWd5YCB1c2VkIGZvciBlbWl0dGluZyByZWZlcmVuY2VzIHdpbGxcbiAgICogd2lsbCBzZWxlY3QgYWxpYXNlZCBleHBvcnRzIHRoYXQgaXQgZmluZHMgaW4gdGhlIC5kLnRzIGZpbGUgZm9yIGFuIE5nTW9kdWxlJ3MgZmlsZS4gVGh1cyxcbiAgICogZW1pdHRpbmcgdGhlc2UgZXhwb3J0cyBpbiAuZC50cyBpcyBhIHJlcXVpcmVtZW50IGZvciB0aGUgYFByaXZhdGVFeHBvcnRBbGlhc2luZ0hvc3RgIHRvXG4gICAqIGZ1bmN0aW9uIGNvcnJlY3RseS5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzRXhwb3J0c0luRHRzID0gdHJ1ZTtcblxuICBtYXliZUFsaWFzU3ltYm9sQXMoXG4gICAgICByZWY6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPiwgY29udGV4dDogdHMuU291cmNlRmlsZSwgbmdNb2R1bGVOYW1lOiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKHJlZi5oYXNPd25pbmdNb2R1bGVHdWVzcykge1xuICAgICAgLy8gU2tpcCBub2RlcyB0aGF0IGFscmVhZHkgaGF2ZSBhbiBhc3NvY2lhdGVkIGFic29sdXRlIG1vZHVsZSBzcGVjaWZpZXIsIHNpbmNlIHRoZXkgY2FuIGJlXG4gICAgICAvLyBzYWZlbHkgaW1wb3J0ZWQgZnJvbSB0aGF0IHNwZWNpZmllci5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBMb29rIGZvciBhIHVzZXItcHJvdmlkZWQgZXhwb3J0IG9mIGBkZWNsYCBpbiBgY29udGV4dGAuIElmIG9uZSBleGlzdHMsIHRoZW4gYW4gYWxpYXMgZXhwb3J0XG4gICAgLy8gaXMgbm90IG5lZWRlZC5cbiAgICAvLyBUT0RPKGFseGh1Yik6IG1heWJlIGFkZCBhIGhvc3QgbWV0aG9kIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIGV4cG9ydCB3aXRob3V0IGdvaW5nXG4gICAgLy8gdGhyb3VnaCB0aGUgZW50aXJlIGxpc3Qgb2YgZXhwb3J0cy5cbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5ob3N0LmdldEV4cG9ydHNPZk1vZHVsZShjb250ZXh0KTtcbiAgICBpZiAoZXhwb3J0cyA9PT0gbnVsbCkge1xuICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcsIGFuZCBubyBleHBvcnRzIHdlcmUgYXZhaWxhYmxlIGF0IGFsbC4gQmFpbCByYXRoZXIgdGhhbiByaXNrIGNyZWF0aW5nXG4gICAgICAvLyByZS1leHBvcnRzIHdoZW4gdGhleSdyZSBub3QgbmVlZGVkLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBleHBvcnRzIG9mOiAke2NvbnRleHQuZmlsZU5hbWV9YCk7XG4gICAgfVxuICAgIGxldCBmb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGV4cG9ydHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUubm9kZSA9PT0gcmVmLm5vZGUpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgLy8gVGhlIG1vZHVsZSBleHBvcnRzIHRoZSBkZWNsYXJlZCBjbGFzcyBkaXJlY3RseSwgbm8gYWxpYXMgaXMgbmVjZXNzYXJ5LlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBgybVuZ0V4cG9ydMm1JHtuZ01vZHVsZU5hbWV9ybUke3JlZi5ub2RlLm5hbWUudGV4dH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgYFByaXZhdGVFeHBvcnRBbGlhc2luZ0hvc3RgIG9ubHkgZ2VuZXJhdGVzIHJlLWV4cG9ydHMgYW5kIGRvZXMgbm90IGRpcmVjdCB0aGUgY29tcGlsZXIgdG9cbiAgICogZGlyZWN0bHkgY29uc3VtZSB0aGUgYWxpYXNlcyBpdCBjcmVhdGVzLlxuICAgKlxuICAgKiBJbnN0ZWFkLCB0aGV5J3JlIGNvbnN1bWVkIGluZGlyZWN0bHk6IGBBYnNvbHV0ZU1vZHVsZVN0cmF0ZWd5YCBgUmVmZXJlbmNlRW1pdHRlclN0cmF0ZWd5YCB3aWxsXG4gICAqIHNlbGVjdCB0aGVzZSBhbGlhcyBleHBvcnRzIGF1dG9tYXRpY2FsbHkgd2hlbiBsb29raW5nIGZvciBhbiBleHBvcnQgb2YgdGhlIGRpcmVjdGl2ZS9waXBlIGZyb21cbiAgICogdGhlIHNhbWUgcGF0aCBhcyB0aGUgTmdNb2R1bGUgd2FzIGltcG9ydGVkLlxuICAgKlxuICAgKiBUaHVzLCBgZ2V0QWxpYXNJbmAgYWx3YXlzIHJldHVybnMgYG51bGxgLlxuICAgKi9cbiAgZ2V0QWxpYXNJbigpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEEgYFJlZmVyZW5jZUVtaXRTdHJhdGVneWAgd2hpY2ggd2lsbCBjb25zdW1lIHRoZSBhbGlhcyBhdHRhY2hlZCB0byBhIHBhcnRpY3VsYXIgYFJlZmVyZW5jZWAgdG8gYVxuICogZGlyZWN0aXZlIG9yIHBpcGUsIGlmIGl0IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWFzU3RyYXRlZ3kgaW1wbGVtZW50cyBSZWZlcmVuY2VFbWl0U3RyYXRlZ3kge1xuICBlbWl0KHJlZjogUmVmZXJlbmNlLCBjb250ZXh0OiB0cy5Tb3VyY2VGaWxlLCBpbXBvcnRNb2RlOiBJbXBvcnRGbGFncyk6IEVtaXR0ZWRSZWZlcmVuY2V8bnVsbCB7XG4gICAgaWYgKGltcG9ydE1vZGUgJiBJbXBvcnRGbGFncy5Ob0FsaWFzaW5nIHx8IHJlZi5hbGlhcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtleHByZXNzaW9uOiByZWYuYWxpYXMsIGltcG9ydGVkRmlsZTogJ3Vua25vd24nfTtcbiAgfVxufVxuIl19
@@ -1,78 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { relativePathBetween } from '../../util/src/path';
9
- /**
10
- * `ImportRewriter` that does no rewriting.
11
- */
12
- export class NoopImportRewriter {
13
- shouldImportSymbol(symbol, specifier) {
14
- return true;
15
- }
16
- rewriteSymbol(symbol, specifier) {
17
- return symbol;
18
- }
19
- rewriteSpecifier(specifier, inContextOfFile) {
20
- return specifier;
21
- }
22
- }
23
- /**
24
- * A mapping of supported symbols that can be imported from within @angular/core, and the names by
25
- * which they're exported from r3_symbols.
26
- */
27
- const CORE_SUPPORTED_SYMBOLS = new Map([
28
- ['ɵɵdefineInjectable', 'ɵɵdefineInjectable'],
29
- ['ɵɵdefineInjector', 'ɵɵdefineInjector'],
30
- ['ɵɵdefineNgModule', 'ɵɵdefineNgModule'],
31
- ['ɵɵsetNgModuleScope', 'ɵɵsetNgModuleScope'],
32
- ['ɵɵinject', 'ɵɵinject'],
33
- ['ɵɵFactoryDeclaration', 'ɵɵFactoryDeclaration'],
34
- ['ɵsetClassMetadata', 'setClassMetadata'],
35
- ['ɵɵInjectableDeclaration', 'ɵɵInjectableDeclaration'],
36
- ['ɵɵInjectorDeclaration', 'ɵɵInjectorDeclaration'],
37
- ['ɵɵNgModuleDeclaration', 'ɵɵNgModuleDeclaration'],
38
- ['ɵNgModuleFactory', 'NgModuleFactory'],
39
- ['ɵnoSideEffects', 'ɵnoSideEffects'],
40
- ]);
41
- const CORE_MODULE = '@angular/core';
42
- /**
43
- * `ImportRewriter` that rewrites imports from '@angular/core' to be imported from the r3_symbols.ts
44
- * file instead.
45
- */
46
- export class R3SymbolsImportRewriter {
47
- constructor(r3SymbolsPath) {
48
- this.r3SymbolsPath = r3SymbolsPath;
49
- }
50
- shouldImportSymbol(symbol, specifier) {
51
- return true;
52
- }
53
- rewriteSymbol(symbol, specifier) {
54
- if (specifier !== CORE_MODULE) {
55
- // This import isn't from core, so ignore it.
56
- return symbol;
57
- }
58
- return validateAndRewriteCoreSymbol(symbol);
59
- }
60
- rewriteSpecifier(specifier, inContextOfFile) {
61
- if (specifier !== CORE_MODULE) {
62
- // This module isn't core, so ignore it.
63
- return specifier;
64
- }
65
- const relativePathToR3Symbols = relativePathBetween(inContextOfFile, this.r3SymbolsPath);
66
- if (relativePathToR3Symbols === null) {
67
- throw new Error(`Failed to rewrite import inside ${CORE_MODULE}: ${inContextOfFile} -> ${this.r3SymbolsPath}`);
68
- }
69
- return relativePathToR3Symbols;
70
- }
71
- }
72
- export function validateAndRewriteCoreSymbol(name) {
73
- if (!CORE_SUPPORTED_SYMBOLS.has(name)) {
74
- throw new Error(`Importing unexpected symbol ${name} while compiling ${CORE_MODULE}`);
75
- }
76
- return CORE_SUPPORTED_SYMBOLS.get(name);
77
- }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQTBCeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxTQUFpQjtRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLFNBQWlCO1FBQzdDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLGVBQXVCO1FBQ3pELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQWlCO0lBQ3JELENBQUMsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUM7SUFDNUMsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQztJQUN4QyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO0lBQ3hDLENBQUMsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUM7SUFDNUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQ3hCLENBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7SUFDaEQsQ0FBQyxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQztJQUN6QyxDQUFDLHlCQUF5QixFQUFFLHlCQUF5QixDQUFDO0lBQ3RELENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLENBQUM7SUFDbEQsQ0FBQyx1QkFBdUIsRUFBRSx1QkFBdUIsQ0FBQztJQUNsRCxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDO0lBQ3ZDLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7Q0FDckMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDO0FBRXBDOzs7R0FHRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsYUFBcUI7UUFBckIsa0JBQWEsR0FBYixhQUFhLENBQVE7SUFBRyxDQUFDO0lBRTdDLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxTQUFpQjtRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYyxFQUFFLFNBQWlCO1FBQzdDLElBQUksU0FBUyxLQUFLLFdBQVcsRUFBRTtZQUM3Qiw2Q0FBNkM7WUFDN0MsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUVELE9BQU8sNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsZUFBdUI7UUFDekQsSUFBSSxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQzdCLHdDQUF3QztZQUN4QyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sdUJBQXVCLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RixJQUFJLHVCQUF1QixLQUFLLElBQUksRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxXQUFXLEtBQUssZUFBZSxPQUM5RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUMzQjtRQUVELE9BQU8sdUJBQXVCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLElBQVk7SUFDdkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixJQUFJLG9CQUFvQixXQUFXLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZGO0lBQ0QsT0FBTyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3JlbGF0aXZlUGF0aEJldHdlZW59IGZyb20gJy4uLy4uL3V0aWwvc3JjL3BhdGgnO1xuXG4vKipcbiAqIFJld3JpdGVzIGltcG9ydHMgb2Ygc3ltYm9scyBiZWluZyB3cml0dGVuIGludG8gZ2VuZXJhdGVkIGNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UmV3cml0ZXIge1xuICAvKipcbiAgICogU2hvdWxkIHRoZSBnaXZlbiBzeW1ib2wgYmUgaW1wb3J0ZWQgYXQgYWxsP1xuICAgKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzeW1ib2wgc2hvdWxkIGJlIGltcG9ydGVkIGZyb20gdGhlIGdpdmVuIHNwZWNpZmllci4gSWYgYGZhbHNlYCwgdGhlIHN5bWJvbFxuICAgKiBzaG91bGQgYmUgcmVmZXJlbmNlZCBkaXJlY3RseSwgd2l0aG91dCBhbiBpbXBvcnQuXG4gICAqL1xuICBzaG91bGRJbXBvcnRTeW1ib2woc3ltYm9sOiBzdHJpbmcsIHNwZWNpZmllcjogc3RyaW5nKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSByZXdyaXRlIGEgcmVmZXJlbmNlIHRvIGFuIGltcG9ydGVkIHN5bWJvbCwgY2hhbmdpbmcgZWl0aGVyIHRoZSBiaW5kaW5nIHByZWZpeCBvciB0aGVcbiAgICogc3ltYm9sIG5hbWUgaXRzZWxmLlxuICAgKi9cbiAgcmV3cml0ZVN5bWJvbChzeW1ib2w6IHN0cmluZywgc3BlY2lmaWVyOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgcmV3cml0ZSB0aGUgZ2l2ZW4gbW9kdWxlIHNwZWNpZmllciBpbiB0aGUgY29udGV4dCBvZiBhIGdpdmVuIGZpbGUuXG4gICAqL1xuICByZXdyaXRlU3BlY2lmaWVyKHNwZWNpZmllcjogc3RyaW5nLCBpbkNvbnRleHRPZkZpbGU6IHN0cmluZyk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBgSW1wb3J0UmV3cml0ZXJgIHRoYXQgZG9lcyBubyByZXdyaXRpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBOb29wSW1wb3J0UmV3cml0ZXIgaW1wbGVtZW50cyBJbXBvcnRSZXdyaXRlciB7XG4gIHNob3VsZEltcG9ydFN5bWJvbChzeW1ib2w6IHN0cmluZywgc3BlY2lmaWVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJld3JpdGVTeW1ib2woc3ltYm9sOiBzdHJpbmcsIHNwZWNpZmllcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG5cbiAgcmV3cml0ZVNwZWNpZmllcihzcGVjaWZpZXI6IHN0cmluZywgaW5Db250ZXh0T2ZGaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzcGVjaWZpZXI7XG4gIH1cbn1cblxuLyoqXG4gKiBBIG1hcHBpbmcgb2Ygc3VwcG9ydGVkIHN5bWJvbHMgdGhhdCBjYW4gYmUgaW1wb3J0ZWQgZnJvbSB3aXRoaW4gQGFuZ3VsYXIvY29yZSwgYW5kIHRoZSBuYW1lcyBieVxuICogd2hpY2ggdGhleSdyZSBleHBvcnRlZCBmcm9tIHIzX3N5bWJvbHMuXG4gKi9cbmNvbnN0IENPUkVfU1VQUE9SVEVEX1NZTUJPTFMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXG4gIFsnybXJtWRlZmluZUluamVjdGFibGUnLCAnybXJtWRlZmluZUluamVjdGFibGUnXSxcbiAgWyfJtcm1ZGVmaW5lSW5qZWN0b3InLCAnybXJtWRlZmluZUluamVjdG9yJ10sXG4gIFsnybXJtWRlZmluZU5nTW9kdWxlJywgJ8m1ybVkZWZpbmVOZ01vZHVsZSddLFxuICBbJ8m1ybVzZXROZ01vZHVsZVNjb3BlJywgJ8m1ybVzZXROZ01vZHVsZVNjb3BlJ10sXG4gIFsnybXJtWluamVjdCcsICfJtcm1aW5qZWN0J10sXG4gIFsnybXJtUZhY3RvcnlEZWNsYXJhdGlvbicsICfJtcm1RmFjdG9yeURlY2xhcmF0aW9uJ10sXG4gIFsnybVzZXRDbGFzc01ldGFkYXRhJywgJ3NldENsYXNzTWV0YWRhdGEnXSxcbiAgWyfJtcm1SW5qZWN0YWJsZURlY2xhcmF0aW9uJywgJ8m1ybVJbmplY3RhYmxlRGVjbGFyYXRpb24nXSxcbiAgWyfJtcm1SW5qZWN0b3JEZWNsYXJhdGlvbicsICfJtcm1SW5qZWN0b3JEZWNsYXJhdGlvbiddLFxuICBbJ8m1ybVOZ01vZHVsZURlY2xhcmF0aW9uJywgJ8m1ybVOZ01vZHVsZURlY2xhcmF0aW9uJ10sXG4gIFsnybVOZ01vZHVsZUZhY3RvcnknLCAnTmdNb2R1bGVGYWN0b3J5J10sXG4gIFsnybVub1NpZGVFZmZlY3RzJywgJ8m1bm9TaWRlRWZmZWN0cyddLFxuXSk7XG5cbmNvbnN0IENPUkVfTU9EVUxFID0gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIGBJbXBvcnRSZXdyaXRlcmAgdGhhdCByZXdyaXRlcyBpbXBvcnRzIGZyb20gJ0Bhbmd1bGFyL2NvcmUnIHRvIGJlIGltcG9ydGVkIGZyb20gdGhlIHIzX3N5bWJvbHMudHNcbiAqIGZpbGUgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFIzU3ltYm9sc0ltcG9ydFJld3JpdGVyIGltcGxlbWVudHMgSW1wb3J0UmV3cml0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHIzU3ltYm9sc1BhdGg6IHN0cmluZykge31cblxuICBzaG91bGRJbXBvcnRTeW1ib2woc3ltYm9sOiBzdHJpbmcsIHNwZWNpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXdyaXRlU3ltYm9sKHN5bWJvbDogc3RyaW5nLCBzcGVjaWZpZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHNwZWNpZmllciAhPT0gQ09SRV9NT0RVTEUpIHtcbiAgICAgIC8vIFRoaXMgaW1wb3J0IGlzbid0IGZyb20gY29yZSwgc28gaWdub3JlIGl0LlxuICAgICAgcmV0dXJuIHN5bWJvbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVBbmRSZXdyaXRlQ29yZVN5bWJvbChzeW1ib2wpO1xuICB9XG5cbiAgcmV3cml0ZVNwZWNpZmllcihzcGVjaWZpZXI6IHN0cmluZywgaW5Db250ZXh0T2ZGaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChzcGVjaWZpZXIgIT09IENPUkVfTU9EVUxFKSB7XG4gICAgICAvLyBUaGlzIG1vZHVsZSBpc24ndCBjb3JlLCBzbyBpZ25vcmUgaXQuXG4gICAgICByZXR1cm4gc3BlY2lmaWVyO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aXZlUGF0aFRvUjNTeW1ib2xzID0gcmVsYXRpdmVQYXRoQmV0d2VlbihpbkNvbnRleHRPZkZpbGUsIHRoaXMucjNTeW1ib2xzUGF0aCk7XG4gICAgaWYgKHJlbGF0aXZlUGF0aFRvUjNTeW1ib2xzID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXdyaXRlIGltcG9ydCBpbnNpZGUgJHtDT1JFX01PRFVMRX06ICR7aW5Db250ZXh0T2ZGaWxlfSAtPiAke1xuICAgICAgICAgIHRoaXMucjNTeW1ib2xzUGF0aH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVsYXRpdmVQYXRoVG9SM1N5bWJvbHM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQW5kUmV3cml0ZUNvcmVTeW1ib2wobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFDT1JFX1NVUFBPUlRFRF9TWU1CT0xTLmhhcyhuYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW1wb3J0aW5nIHVuZXhwZWN0ZWQgc3ltYm9sICR7bmFtZX0gd2hpbGUgY29tcGlsaW5nICR7Q09SRV9NT0RVTEV9YCk7XG4gIH1cbiAgcmV0dXJuIENPUkVfU1VQUE9SVEVEX1NZTUJPTFMuZ2V0KG5hbWUpITtcbn1cbiJdfQ==
@@ -1,135 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as ts from 'typescript';
9
- import { getSourceFile } from '../../util/src/typescript';
10
- const DefaultImportDeclaration = Symbol('DefaultImportDeclaration');
11
- /**
12
- * Attaches a default import declaration to `expr` to indicate the dependency of `expr` on the
13
- * default import.
14
- */
15
- export function attachDefaultImportDeclaration(expr, importDecl) {
16
- expr[DefaultImportDeclaration] = importDecl;
17
- }
18
- /**
19
- * Obtains the default import declaration that `expr` depends on, or `null` if there is no such
20
- * dependency.
21
- */
22
- export function getDefaultImportDeclaration(expr) {
23
- var _a;
24
- return (_a = expr[DefaultImportDeclaration]) !== null && _a !== void 0 ? _a : null;
25
- }
26
- /**
27
- * TypeScript has trouble with generating default imports inside of transformers for some module
28
- * formats. The issue is that for the statement:
29
- *
30
- * import X from 'some/module';
31
- * console.log(X);
32
- *
33
- * TypeScript will not use the "X" name in generated code. For normal user code, this is fine
34
- * because references to X will also be renamed. However, if both the import and any references are
35
- * added in a transformer, TypeScript does not associate the two, and will leave the "X" references
36
- * dangling while renaming the import variable. The generated code looks something like:
37
- *
38
- * const module_1 = require('some/module');
39
- * console.log(X); // now X is a dangling reference.
40
- *
41
- * Therefore, we cannot synthetically add default imports, and must reuse the imports that users
42
- * include. Doing this poses a challenge for imports that are only consumed in the type position in
43
- * the user's code. If Angular reuses the imported symbol in a value position (for example, we
44
- * see a constructor parameter of type Foo and try to write "inject(Foo)") we will also end up with
45
- * a dangling reference, as TS will elide the import because it was only used in the type position
46
- * originally.
47
- *
48
- * To avoid this, the compiler must "touch" the imports with `ts.getMutableClone`, and should
49
- * only do this for imports which are actually consumed. The `DefaultImportTracker` keeps track of
50
- * these imports as they're encountered and emitted, and implements a transform which can correctly
51
- * flag the imports as required.
52
- *
53
- * This problem does not exist for non-default imports as the compiler can easily insert
54
- * "import * as X" style imports for those, and the "X" identifier survives transformation.
55
- */
56
- export class DefaultImportTracker {
57
- constructor() {
58
- /**
59
- * A `Map` which tracks the `Set` of `ts.ImportDeclaration`s for default imports that were used in
60
- * a given `ts.SourceFile` and need to be preserved.
61
- */
62
- this.sourceFileToUsedImports = new Map();
63
- }
64
- recordUsedImport(importDecl) {
65
- const sf = getSourceFile(importDecl);
66
- // Add the default import declaration to the set of used import declarations for the file.
67
- if (!this.sourceFileToUsedImports.has(sf)) {
68
- this.sourceFileToUsedImports.set(sf, new Set());
69
- }
70
- this.sourceFileToUsedImports.get(sf).add(importDecl);
71
- }
72
- /**
73
- * Get a `ts.TransformerFactory` which will preserve default imports that were previously marked
74
- * as used.
75
- *
76
- * This transformer must run after any other transformers which call `recordUsedImport`.
77
- */
78
- importPreservingTransformer() {
79
- return (context) => {
80
- return (sf) => {
81
- return this.transformSourceFile(sf);
82
- };
83
- };
84
- }
85
- /**
86
- * Process a `ts.SourceFile` and replace any `ts.ImportDeclaration`s.
87
- */
88
- transformSourceFile(sf) {
89
- const originalSf = ts.getOriginalNode(sf);
90
- // Take a fast path if no import declarations need to be preserved in the file.
91
- if (!this.sourceFileToUsedImports.has(originalSf)) {
92
- return sf;
93
- }
94
- // There are declarations that need to be preserved.
95
- const importsToPreserve = this.sourceFileToUsedImports.get(originalSf);
96
- // Generate a new statement list which preserves any imports present in `importsToPreserve`.
97
- const statements = sf.statements.map(stmt => {
98
- if (ts.isImportDeclaration(stmt) && importsToPreserve.has(stmt)) {
99
- // Preserving an import that's marked as unreferenced (type-only) is tricky in TypeScript.
100
- //
101
- // Various approaches have been tried, with mixed success:
102
- //
103
- // 1. Using `ts.updateImportDeclaration` does not cause the import to be retained.
104
- //
105
- // 2. Using `ts.createImportDeclaration` with the same `ts.ImportClause` causes the import
106
- // to correctly be retained, but when emitting CommonJS module format code, references
107
- // to the imported value will not match the import variable.
108
- //
109
- // 3. Emitting "import * as" imports instead generates the correct import variable, but
110
- // references are missing the ".default" access. This happens to work for tsickle code
111
- // with goog.module transformations as tsickle strips the ".default" anyway.
112
- //
113
- // 4. It's possible to trick TypeScript by setting `ts.NodeFlag.Synthesized` on the import
114
- // declaration. This causes the import to be correctly retained and generated, but can
115
- // violate invariants elsewhere in the compiler and cause crashes.
116
- //
117
- // 5. Using `ts.getMutableClone` seems to correctly preserve the import and correctly
118
- // generate references to the import variable across all module types.
119
- //
120
- // Therefore, option 5 is the one used here. It seems to be implemented as the correct way
121
- // to perform option 4, which preserves all the compiler's invariants.
122
- //
123
- // TODO(alxhub): discuss with the TypeScript team and determine if there's a better way to
124
- // deal with this issue.
125
- stmt = ts.getMutableClone(stmt);
126
- }
127
- return stmt;
128
- });
129
- // Save memory - there's no need to keep these around once the transform has run for the given
130
- // file.
131
- this.sourceFileToUsedImports.delete(originalSf);
132
- return ts.updateSourceFileNode(sf, statements);
133
- }
134
- }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW1wb3J0cy9zcmMvZGVmYXVsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFHSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQU1wRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzFDLElBQThCLEVBQUUsVUFBZ0M7SUFDakUsSUFBcUMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNoRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLElBQThCOztJQUV4RSxPQUFPLE1BQUMsSUFBcUMsQ0FBQyx3QkFBd0IsQ0FBQyxtQ0FBSSxJQUFJLENBQUM7QUFDbEYsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFBakM7UUFDRTs7O1dBR0c7UUFDSyw0QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBNEMsQ0FBQztJQStFeEYsQ0FBQztJQTdFQyxnQkFBZ0IsQ0FBQyxVQUFnQztRQUMvQyxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckMsMEZBQTBGO1FBQzFGLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxFQUF3QixDQUFDLENBQUM7U0FDdkU7UUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCwyQkFBMkI7UUFDekIsT0FBTyxDQUFDLE9BQWlDLEVBQUUsRUFBRTtZQUMzQyxPQUFPLENBQUMsRUFBaUIsRUFBRSxFQUFFO2dCQUMzQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQyxFQUFpQjtRQUMzQyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBa0IsQ0FBQztRQUMzRCwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakQsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELG9EQUFvRDtRQUNwRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUM7UUFFeEUsNEZBQTRGO1FBQzVGLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFDLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0QsMEZBQTBGO2dCQUMxRixFQUFFO2dCQUNGLDBEQUEwRDtnQkFDMUQsRUFBRTtnQkFDRixrRkFBa0Y7Z0JBQ2xGLEVBQUU7Z0JBQ0YsMEZBQTBGO2dCQUMxRix5RkFBeUY7Z0JBQ3pGLCtEQUErRDtnQkFDL0QsRUFBRTtnQkFDRix1RkFBdUY7Z0JBQ3ZGLHlGQUF5RjtnQkFDekYsK0VBQStFO2dCQUMvRSxFQUFFO2dCQUNGLDBGQUEwRjtnQkFDMUYseUZBQXlGO2dCQUN6RixxRUFBcUU7Z0JBQ3JFLEVBQUU7Z0JBQ0YscUZBQXFGO2dCQUNyRix5RUFBeUU7Z0JBQ3pFLEVBQUU7Z0JBQ0YsMEZBQTBGO2dCQUMxRixzRUFBc0U7Z0JBQ3RFLEVBQUU7Z0JBQ0YsMEZBQTBGO2dCQUMxRix3QkFBd0I7Z0JBQ3hCLElBQUksR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILDhGQUE4RjtRQUM5RixRQUFRO1FBQ1IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVoRCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7V3JhcHBlZE5vZGVFeHByfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtnZXRTb3VyY2VGaWxlfSBmcm9tICcuLi8uLi91dGlsL3NyYy90eXBlc2NyaXB0JztcblxuY29uc3QgRGVmYXVsdEltcG9ydERlY2xhcmF0aW9uID0gU3ltYm9sKCdEZWZhdWx0SW1wb3J0RGVjbGFyYXRpb24nKTtcblxuaW50ZXJmYWNlIFdpdGhEZWZhdWx0SW1wb3J0RGVjbGFyYXRpb24ge1xuICBbRGVmYXVsdEltcG9ydERlY2xhcmF0aW9uXT86IHRzLkltcG9ydERlY2xhcmF0aW9uO1xufVxuXG4vKipcbiAqIEF0dGFjaGVzIGEgZGVmYXVsdCBpbXBvcnQgZGVjbGFyYXRpb24gdG8gYGV4cHJgIHRvIGluZGljYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGBleHByYCBvbiB0aGVcbiAqIGRlZmF1bHQgaW1wb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoRGVmYXVsdEltcG9ydERlY2xhcmF0aW9uKFxuICAgIGV4cHI6IFdyYXBwZWROb2RlRXhwcjx1bmtub3duPiwgaW1wb3J0RGVjbDogdHMuSW1wb3J0RGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgKGV4cHIgYXMgV2l0aERlZmF1bHRJbXBvcnREZWNsYXJhdGlvbilbRGVmYXVsdEltcG9ydERlY2xhcmF0aW9uXSA9IGltcG9ydERlY2w7XG59XG5cbi8qKlxuICogT2J0YWlucyB0aGUgZGVmYXVsdCBpbXBvcnQgZGVjbGFyYXRpb24gdGhhdCBgZXhwcmAgZGVwZW5kcyBvbiwgb3IgYG51bGxgIGlmIHRoZXJlIGlzIG5vIHN1Y2hcbiAqIGRlcGVuZGVuY3kuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0SW1wb3J0RGVjbGFyYXRpb24oZXhwcjogV3JhcHBlZE5vZGVFeHByPHVua25vd24+KTogdHMuSW1wb3J0RGVjbGFyYXRpb258XG4gICAgbnVsbCB7XG4gIHJldHVybiAoZXhwciBhcyBXaXRoRGVmYXVsdEltcG9ydERlY2xhcmF0aW9uKVtEZWZhdWx0SW1wb3J0RGVjbGFyYXRpb25dID8/IG51bGw7XG59XG5cbi8qKlxuICogVHlwZVNjcmlwdCBoYXMgdHJvdWJsZSB3aXRoIGdlbmVyYXRpbmcgZGVmYXVsdCBpbXBvcnRzIGluc2lkZSBvZiB0cmFuc2Zvcm1lcnMgZm9yIHNvbWUgbW9kdWxlXG4gKiBmb3JtYXRzLiBUaGUgaXNzdWUgaXMgdGhhdCBmb3IgdGhlIHN0YXRlbWVudDpcbiAqXG4gKiBpbXBvcnQgWCBmcm9tICdzb21lL21vZHVsZSc7XG4gKiBjb25zb2xlLmxvZyhYKTtcbiAqXG4gKiBUeXBlU2NyaXB0IHdpbGwgbm90IHVzZSB0aGUgXCJYXCIgbmFtZSBpbiBnZW5lcmF0ZWQgY29kZS4gRm9yIG5vcm1hbCB1c2VyIGNvZGUsIHRoaXMgaXMgZmluZVxuICogYmVjYXVzZSByZWZlcmVuY2VzIHRvIFggd2lsbCBhbHNvIGJlIHJlbmFtZWQuIEhvd2V2ZXIsIGlmIGJvdGggdGhlIGltcG9ydCBhbmQgYW55IHJlZmVyZW5jZXMgYXJlXG4gKiBhZGRlZCBpbiBhIHRyYW5zZm9ybWVyLCBUeXBlU2NyaXB0IGRvZXMgbm90IGFzc29jaWF0ZSB0aGUgdHdvLCBhbmQgd2lsbCBsZWF2ZSB0aGUgXCJYXCIgcmVmZXJlbmNlc1xuICogZGFuZ2xpbmcgd2hpbGUgcmVuYW1pbmcgdGhlIGltcG9ydCB2YXJpYWJsZS4gVGhlIGdlbmVyYXRlZCBjb2RlIGxvb2tzIHNvbWV0aGluZyBsaWtlOlxuICpcbiAqIGNvbnN0IG1vZHVsZV8xID0gcmVxdWlyZSgnc29tZS9tb2R1bGUnKTtcbiAqIGNvbnNvbGUubG9nKFgpOyAvLyBub3cgWCBpcyBhIGRhbmdsaW5nIHJlZmVyZW5jZS5cbiAqXG4gKiBUaGVyZWZvcmUsIHdlIGNhbm5vdCBzeW50aGV0aWNhbGx5IGFkZCBkZWZhdWx0IGltcG9ydHMsIGFuZCBtdXN0IHJldXNlIHRoZSBpbXBvcnRzIHRoYXQgdXNlcnNcbiAqIGluY2x1ZGUuIERvaW5nIHRoaXMgcG9zZXMgYSBjaGFsbGVuZ2UgZm9yIGltcG9ydHMgdGhhdCBhcmUgb25seSBjb25zdW1lZCBpbiB0aGUgdHlwZSBwb3NpdGlvbiBpblxuICogdGhlIHVzZXIncyBjb2RlLiBJZiBBbmd1bGFyIHJldXNlcyB0aGUgaW1wb3J0ZWQgc3ltYm9sIGluIGEgdmFsdWUgcG9zaXRpb24gKGZvciBleGFtcGxlLCB3ZVxuICogc2VlIGEgY29uc3RydWN0b3IgcGFyYW1ldGVyIG9mIHR5cGUgRm9vIGFuZCB0cnkgdG8gd3JpdGUgXCJpbmplY3QoRm9vKVwiKSB3ZSB3aWxsIGFsc28gZW5kIHVwIHdpdGhcbiAqIGEgZGFuZ2xpbmcgcmVmZXJlbmNlLCBhcyBUUyB3aWxsIGVsaWRlIHRoZSBpbXBvcnQgYmVjYXVzZSBpdCB3YXMgb25seSB1c2VkIGluIHRoZSB0eXBlIHBvc2l0aW9uXG4gKiBvcmlnaW5hbGx5LlxuICpcbiAqIFRvIGF2b2lkIHRoaXMsIHRoZSBjb21waWxlciBtdXN0IFwidG91Y2hcIiB0aGUgaW1wb3J0cyB3aXRoIGB0cy5nZXRNdXRhYmxlQ2xvbmVgLCBhbmQgc2hvdWxkXG4gKiBvbmx5IGRvIHRoaXMgZm9yIGltcG9ydHMgd2hpY2ggYXJlIGFjdHVhbGx5IGNvbnN1bWVkLiBUaGUgYERlZmF1bHRJbXBvcnRUcmFja2VyYCBrZWVwcyB0cmFjayBvZlxuICogdGhlc2UgaW1wb3J0cyBhcyB0aGV5J3JlIGVuY291bnRlcmVkIGFuZCBlbWl0dGVkLCBhbmQgaW1wbGVtZW50cyBhIHRyYW5zZm9ybSB3aGljaCBjYW4gY29ycmVjdGx5XG4gKiBmbGFnIHRoZSBpbXBvcnRzIGFzIHJlcXVpcmVkLlxuICpcbiAqIFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBleGlzdCBmb3Igbm9uLWRlZmF1bHQgaW1wb3J0cyBhcyB0aGUgY29tcGlsZXIgY2FuIGVhc2lseSBpbnNlcnRcbiAqIFwiaW1wb3J0ICogYXMgWFwiIHN0eWxlIGltcG9ydHMgZm9yIHRob3NlLCBhbmQgdGhlIFwiWFwiIGlkZW50aWZpZXIgc3Vydml2ZXMgdHJhbnNmb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0SW1wb3J0VHJhY2tlciB7XG4gIC8qKlxuICAgKiBBIGBNYXBgIHdoaWNoIHRyYWNrcyB0aGUgYFNldGAgb2YgYHRzLkltcG9ydERlY2xhcmF0aW9uYHMgZm9yIGRlZmF1bHQgaW1wb3J0cyB0aGF0IHdlcmUgdXNlZCBpblxuICAgKiBhIGdpdmVuIGB0cy5Tb3VyY2VGaWxlYCBhbmQgbmVlZCB0byBiZSBwcmVzZXJ2ZWQuXG4gICAqL1xuICBwcml2YXRlIHNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzID0gbmV3IE1hcDx0cy5Tb3VyY2VGaWxlLCBTZXQ8dHMuSW1wb3J0RGVjbGFyYXRpb24+PigpO1xuXG4gIHJlY29yZFVzZWRJbXBvcnQoaW1wb3J0RGVjbDogdHMuSW1wb3J0RGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBzZiA9IGdldFNvdXJjZUZpbGUoaW1wb3J0RGVjbCk7XG5cbiAgICAvLyBBZGQgdGhlIGRlZmF1bHQgaW1wb3J0IGRlY2xhcmF0aW9uIHRvIHRoZSBzZXQgb2YgdXNlZCBpbXBvcnQgZGVjbGFyYXRpb25zIGZvciB0aGUgZmlsZS5cbiAgICBpZiAoIXRoaXMuc291cmNlRmlsZVRvVXNlZEltcG9ydHMuaGFzKHNmKSkge1xuICAgICAgdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5zZXQoc2YsIG5ldyBTZXQ8dHMuSW1wb3J0RGVjbGFyYXRpb24+KCkpO1xuICAgIH1cbiAgICB0aGlzLnNvdXJjZUZpbGVUb1VzZWRJbXBvcnRzLmdldChzZikhLmFkZChpbXBvcnREZWNsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBgdHMuVHJhbnNmb3JtZXJGYWN0b3J5YCB3aGljaCB3aWxsIHByZXNlcnZlIGRlZmF1bHQgaW1wb3J0cyB0aGF0IHdlcmUgcHJldmlvdXNseSBtYXJrZWRcbiAgICogYXMgdXNlZC5cbiAgICpcbiAgICogVGhpcyB0cmFuc2Zvcm1lciBtdXN0IHJ1biBhZnRlciBhbnkgb3RoZXIgdHJhbnNmb3JtZXJzIHdoaWNoIGNhbGwgYHJlY29yZFVzZWRJbXBvcnRgLlxuICAgKi9cbiAgaW1wb3J0UHJlc2VydmluZ1RyYW5zZm9ybWVyKCk6IHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPiB7XG4gICAgcmV0dXJuIChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiAoc2Y6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtU291cmNlRmlsZShzZik7XG4gICAgICB9O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhIGB0cy5Tb3VyY2VGaWxlYCBhbmQgcmVwbGFjZSBhbnkgYHRzLkltcG9ydERlY2xhcmF0aW9uYHMuXG4gICAqL1xuICBwcml2YXRlIHRyYW5zZm9ybVNvdXJjZUZpbGUoc2Y6IHRzLlNvdXJjZUZpbGUpOiB0cy5Tb3VyY2VGaWxlIHtcbiAgICBjb25zdCBvcmlnaW5hbFNmID0gdHMuZ2V0T3JpZ2luYWxOb2RlKHNmKSBhcyB0cy5Tb3VyY2VGaWxlO1xuICAgIC8vIFRha2UgYSBmYXN0IHBhdGggaWYgbm8gaW1wb3J0IGRlY2xhcmF0aW9ucyBuZWVkIHRvIGJlIHByZXNlcnZlZCBpbiB0aGUgZmlsZS5cbiAgICBpZiAoIXRoaXMuc291cmNlRmlsZVRvVXNlZEltcG9ydHMuaGFzKG9yaWdpbmFsU2YpKSB7XG4gICAgICByZXR1cm4gc2Y7XG4gICAgfVxuXG4gICAgLy8gVGhlcmUgYXJlIGRlY2xhcmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgcHJlc2VydmVkLlxuICAgIGNvbnN0IGltcG9ydHNUb1ByZXNlcnZlID0gdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5nZXQob3JpZ2luYWxTZikhO1xuXG4gICAgLy8gR2VuZXJhdGUgYSBuZXcgc3RhdGVtZW50IGxpc3Qgd2hpY2ggcHJlc2VydmVzIGFueSBpbXBvcnRzIHByZXNlbnQgaW4gYGltcG9ydHNUb1ByZXNlcnZlYC5cbiAgICBjb25zdCBzdGF0ZW1lbnRzID0gc2Yuc3RhdGVtZW50cy5tYXAoc3RtdCA9PiB7XG4gICAgICBpZiAodHMuaXNJbXBvcnREZWNsYXJhdGlvbihzdG10KSAmJiBpbXBvcnRzVG9QcmVzZXJ2ZS5oYXMoc3RtdCkpIHtcbiAgICAgICAgLy8gUHJlc2VydmluZyBhbiBpbXBvcnQgdGhhdCdzIG1hcmtlZCBhcyB1bnJlZmVyZW5jZWQgKHR5cGUtb25seSkgaXMgdHJpY2t5IGluIFR5cGVTY3JpcHQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFZhcmlvdXMgYXBwcm9hY2hlcyBoYXZlIGJlZW4gdHJpZWQsIHdpdGggbWl4ZWQgc3VjY2VzczpcbiAgICAgICAgLy9cbiAgICAgICAgLy8gMS4gVXNpbmcgYHRzLnVwZGF0ZUltcG9ydERlY2xhcmF0aW9uYCBkb2VzIG5vdCBjYXVzZSB0aGUgaW1wb3J0IHRvIGJlIHJldGFpbmVkLlxuICAgICAgICAvL1xuICAgICAgICAvLyAyLiBVc2luZyBgdHMuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb25gIHdpdGggdGhlIHNhbWUgYHRzLkltcG9ydENsYXVzZWAgY2F1c2VzIHRoZSBpbXBvcnRcbiAgICAgICAgLy8gICAgdG8gY29ycmVjdGx5IGJlIHJldGFpbmVkLCBidXQgd2hlbiBlbWl0dGluZyBDb21tb25KUyBtb2R1bGUgZm9ybWF0IGNvZGUsIHJlZmVyZW5jZXNcbiAgICAgICAgLy8gICAgdG8gdGhlIGltcG9ydGVkIHZhbHVlIHdpbGwgbm90IG1hdGNoIHRoZSBpbXBvcnQgdmFyaWFibGUuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIDMuIEVtaXR0aW5nIFwiaW1wb3J0ICogYXNcIiBpbXBvcnRzIGluc3RlYWQgZ2VuZXJhdGVzIHRoZSBjb3JyZWN0IGltcG9ydCB2YXJpYWJsZSwgYnV0XG4gICAgICAgIC8vICAgIHJlZmVyZW5jZXMgYXJlIG1pc3NpbmcgdGhlIFwiLmRlZmF1bHRcIiBhY2Nlc3MuIFRoaXMgaGFwcGVucyB0byB3b3JrIGZvciB0c2lja2xlIGNvZGVcbiAgICAgICAgLy8gICAgd2l0aCBnb29nLm1vZHVsZSB0cmFuc2Zvcm1hdGlvbnMgYXMgdHNpY2tsZSBzdHJpcHMgdGhlIFwiLmRlZmF1bHRcIiBhbnl3YXkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIDQuIEl0J3MgcG9zc2libGUgdG8gdHJpY2sgVHlwZVNjcmlwdCBieSBzZXR0aW5nIGB0cy5Ob2RlRmxhZy5TeW50aGVzaXplZGAgb24gdGhlIGltcG9ydFxuICAgICAgICAvLyAgICBkZWNsYXJhdGlvbi4gVGhpcyBjYXVzZXMgdGhlIGltcG9ydCB0byBiZSBjb3JyZWN0bHkgcmV0YWluZWQgYW5kIGdlbmVyYXRlZCwgYnV0IGNhblxuICAgICAgICAvLyAgICB2aW9sYXRlIGludmFyaWFudHMgZWxzZXdoZXJlIGluIHRoZSBjb21waWxlciBhbmQgY2F1c2UgY3Jhc2hlcy5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gNS4gVXNpbmcgYHRzLmdldE11dGFibGVDbG9uZWAgc2VlbXMgdG8gY29ycmVjdGx5IHByZXNlcnZlIHRoZSBpbXBvcnQgYW5kIGNvcnJlY3RseVxuICAgICAgICAvLyAgICBnZW5lcmF0ZSByZWZlcmVuY2VzIHRvIHRoZSBpbXBvcnQgdmFyaWFibGUgYWNyb3NzIGFsbCBtb2R1bGUgdHlwZXMuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZXJlZm9yZSwgb3B0aW9uIDUgaXMgdGhlIG9uZSB1c2VkIGhlcmUuIEl0IHNlZW1zIHRvIGJlIGltcGxlbWVudGVkIGFzIHRoZSBjb3JyZWN0IHdheVxuICAgICAgICAvLyB0byBwZXJmb3JtIG9wdGlvbiA0LCB3aGljaCBwcmVzZXJ2ZXMgYWxsIHRoZSBjb21waWxlcidzIGludmFyaWFudHMuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRPRE8oYWx4aHViKTogZGlzY3VzcyB3aXRoIHRoZSBUeXBlU2NyaXB0IHRlYW0gYW5kIGRldGVybWluZSBpZiB0aGVyZSdzIGEgYmV0dGVyIHdheSB0b1xuICAgICAgICAvLyBkZWFsIHdpdGggdGhpcyBpc3N1ZS5cbiAgICAgICAgc3RtdCA9IHRzLmdldE11dGFibGVDbG9uZShzdG10KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdG10O1xuICAgIH0pO1xuXG4gICAgLy8gU2F2ZSBtZW1vcnkgLSB0aGVyZSdzIG5vIG5lZWQgdG8ga2VlcCB0aGVzZSBhcm91bmQgb25jZSB0aGUgdHJhbnNmb3JtIGhhcyBydW4gZm9yIHRoZSBnaXZlblxuICAgIC8vIGZpbGUuXG4gICAgdGhpcy5zb3VyY2VGaWxlVG9Vc2VkSW1wb3J0cy5kZWxldGUob3JpZ2luYWxTZik7XG5cbiAgICByZXR1cm4gdHMudXBkYXRlU291cmNlRmlsZU5vZGUoc2YsIHN0YXRlbWVudHMpO1xuICB9XG59XG4iXX0=