@angular/compiler-cli 12.1.1 → 12.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) 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/file_system/testing/src/mock_file_system_native.js +1 -1
  30. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  31. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  32. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  33. package/src/ngtsc/incremental/src/incremental.js +30 -4
  34. package/src/ngtsc/indexer/src/template.js +1 -1
  35. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  36. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  37. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  38. package/src/ngtsc/program_driver/src/api.js +3 -2
  39. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  40. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  41. package/src/ngtsc/reflection/src/typescript.js +4 -1
  42. package/src/ngtsc/transform/src/transform.js +1 -1
  43. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  44. package/src/ngtsc/typecheck/src/context.js +11 -3
  45. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  46. package/src/ngtsc/typecheck/src/template_symbol_builder.js +21 -1
  47. package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
  48. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  49. package/src/ngtsc/typecheck/src/type_emitter.js +25 -6
  50. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  51. package/src/ngtsc/util/src/visitor.js +1 -8
  52. package/src/version.js +1 -1
  53. package/compiler-cli.externs.js +0 -0
  54. package/index.mjs +0 -20
  55. package/linker/babel/babel.externs.js +0 -0
  56. package/linker/babel/index.mjs +0 -11
  57. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  58. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  59. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  60. package/linker/babel/src/babel_plugin.mjs +0 -23
  61. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  62. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  63. package/linker/index.mjs +0 -7
  64. package/linker/linker.externs.js +0 -0
  65. package/linker/src/ast/ast_host.mjs +0 -9
  66. package/linker/src/ast/ast_value.mjs +0 -256
  67. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  68. package/linker/src/ast/utils.mjs +0 -17
  69. package/linker/src/fatal_linker_error.mjs +0 -30
  70. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  71. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  72. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  73. package/linker/src/file_linker/file_linker.mjs +0 -70
  74. package/linker/src/file_linker/get_source_file.mjs +0 -28
  75. package/linker/src/file_linker/linker_environment.mjs +0 -23
  76. package/linker/src/file_linker/linker_options.mjs +0 -16
  77. package/linker/src/file_linker/needs_linking.mjs +0 -27
  78. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  79. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  80. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  81. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  82. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  83. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  84. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  85. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  86. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  87. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  88. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  89. package/linker/src/file_linker/translator.mjs +0 -23
  90. package/linker/src/linker_import_generator.mjs +0 -28
  91. package/ngcc/index.mjs +0 -16
  92. package/ngcc/main-ivy-ngcc.mjs +0 -12
  93. package/ngcc/main-ngcc.mjs +0 -32
  94. package/ngcc/ngcc.externs.js +0 -0
  95. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  96. package/ngcc/src/analysis/migration_host.mjs +0 -80
  97. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  98. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  99. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  100. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  101. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  102. package/ngcc/src/analysis/types.mjs +0 -2
  103. package/ngcc/src/analysis/util.mjs +0 -19
  104. package/ngcc/src/command_line_options.mjs +0 -142
  105. package/ngcc/src/constants.mjs +0 -10
  106. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  107. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  108. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  109. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  110. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  111. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  112. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  113. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  114. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  115. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  116. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  117. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  118. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  119. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  120. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  121. package/ngcc/src/execution/api.mjs +0 -2
  122. package/ngcc/src/execution/cluster/api.mjs +0 -9
  123. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  124. package/ngcc/src/execution/cluster/master.mjs +0 -261
  125. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  126. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  127. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  128. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  129. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  130. package/ngcc/src/execution/tasks/api.mjs +0 -22
  131. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  132. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  133. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  134. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  135. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  136. package/ngcc/src/host/commonjs_host.mjs +0 -220
  137. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  138. package/ngcc/src/host/delegating_host.mjs +0 -140
  139. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  140. package/ngcc/src/host/esm5_host.mjs +0 -721
  141. package/ngcc/src/host/ngcc_host.mjs +0 -15
  142. package/ngcc/src/host/umd_host.mjs +0 -486
  143. package/ngcc/src/host/utils.mjs +0 -12
  144. package/ngcc/src/locking/async_locker.mjs +0 -76
  145. package/ngcc/src/locking/lock_file.mjs +0 -4
  146. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  147. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  148. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  149. package/ngcc/src/locking/sync_locker.mjs +0 -52
  150. package/ngcc/src/main.mjs +0 -134
  151. package/ngcc/src/migrations/migration.mjs +0 -2
  152. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  153. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  154. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  155. package/ngcc/src/migrations/utils.mjs +0 -117
  156. package/ngcc/src/ngcc_options.mjs +0 -119
  157. package/ngcc/src/packages/build_marker.mjs +0 -84
  158. package/ngcc/src/packages/bundle_program.mjs +0 -52
  159. package/ngcc/src/packages/configuration.mjs +0 -255
  160. package/ngcc/src/packages/entry_point.mjs +0 -239
  161. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  162. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  163. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  164. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  165. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  166. package/ngcc/src/packages/transformer.mjs +0 -140
  167. package/ngcc/src/path_mappings.mjs +0 -13
  168. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  169. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  170. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  171. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  172. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  173. package/ngcc/src/rendering/renderer.mjs +0 -170
  174. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  175. package/ngcc/src/rendering/source_maps.mjs +0 -54
  176. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  177. package/ngcc/src/rendering/utils.mjs +0 -20
  178. package/ngcc/src/utils.mjs +0 -144
  179. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  180. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  181. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  182. package/ngcc/src/writing/file_writer.mjs +0 -2
  183. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  184. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  185. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  186. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  187. package/src/diagnostics/typescript_version.mjs +0 -79
  188. package/src/extract_i18n.mjs +0 -46
  189. package/src/language_services.mjs +0 -18
  190. package/src/main.mjs +0 -185
  191. package/src/metadata/bundle_index_host.mjs +0 -107
  192. package/src/metadata/bundler.mjs +0 -556
  193. package/src/metadata/collector.mjs +0 -701
  194. package/src/metadata/evaluator.mjs +0 -643
  195. package/src/metadata/index.mjs +0 -11
  196. package/src/metadata/index_writer.mjs +0 -44
  197. package/src/metadata/schema.mjs +0 -102
  198. package/src/metadata/symbols.mjs +0 -117
  199. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  200. package/src/ngtsc/annotations/index.mjs +0 -15
  201. package/src/ngtsc/annotations/src/api.mjs +0 -9
  202. package/src/ngtsc/annotations/src/component.mjs +0 -1068
  203. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  204. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  205. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  206. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  207. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  208. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  209. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  210. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  211. package/src/ngtsc/annotations/src/util.mjs +0 -495
  212. package/src/ngtsc/core/api/index.mjs +0 -12
  213. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  214. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  215. package/src/ngtsc/core/api/src/options.mjs +0 -9
  216. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  217. package/src/ngtsc/core/api.externs.js +0 -0
  218. package/src/ngtsc/core/core.externs.js +0 -0
  219. package/src/ngtsc/core/index.mjs +0 -10
  220. package/src/ngtsc/core/src/compiler.mjs +0 -917
  221. package/src/ngtsc/core/src/config.mjs +0 -15
  222. package/src/ngtsc/core/src/host.mjs +0 -229
  223. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  224. package/src/ngtsc/cycles/index.mjs +0 -10
  225. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  226. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  227. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  228. package/src/ngtsc/diagnostics/index.mjs +0 -11
  229. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  230. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  231. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  232. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  233. package/src/ngtsc/entry_point/index.mjs +0 -12
  234. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  235. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  236. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  237. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  238. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  239. package/src/ngtsc/file_system/index.mjs +0 -13
  240. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  241. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  242. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  243. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  244. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  245. package/src/ngtsc/file_system/src/types.mjs +0 -9
  246. package/src/ngtsc/file_system/src/util.mjs +0 -22
  247. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  248. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  249. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  250. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  251. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  252. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  253. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  254. package/src/ngtsc/imports/imports.externs.js +0 -0
  255. package/src/ngtsc/imports/index.mjs +0 -14
  256. package/src/ngtsc/imports/src/alias.mjs +0 -137
  257. package/src/ngtsc/imports/src/core.mjs +0 -78
  258. package/src/ngtsc/imports/src/default.mjs +0 -135
  259. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  260. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  261. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  262. package/src/ngtsc/imports/src/references.mjs +0 -137
  263. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  264. package/src/ngtsc/incremental/api.externs.js +0 -0
  265. package/src/ngtsc/incremental/api.mjs +0 -9
  266. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  267. package/src/ngtsc/incremental/index.mjs +0 -12
  268. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  269. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  270. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  271. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  272. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  273. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  274. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  275. package/src/ngtsc/incremental/src/incremental.mjs +0 -271
  276. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  277. package/src/ngtsc/incremental/src/state.mjs +0 -17
  278. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  279. package/src/ngtsc/indexer/index.mjs +0 -11
  280. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  281. package/src/ngtsc/indexer/src/api.mjs +0 -30
  282. package/src/ngtsc/indexer/src/context.mjs +0 -25
  283. package/src/ngtsc/indexer/src/template.mjs +0 -303
  284. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  285. package/src/ngtsc/logging/index.mjs +0 -10
  286. package/src/ngtsc/logging/logging.externs.js +0 -0
  287. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  288. package/src/ngtsc/logging/src/logger.mjs +0 -15
  289. package/src/ngtsc/logging/testing/index.mjs +0 -9
  290. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  291. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  292. package/src/ngtsc/metadata/index.mjs +0 -15
  293. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  294. package/src/ngtsc/metadata/src/api.mjs +0 -13
  295. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  296. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  297. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  298. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  299. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  300. package/src/ngtsc/metadata/src/util.mjs +0 -200
  301. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  302. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  303. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  304. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -174
  305. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -94
  306. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  307. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -719
  308. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  309. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  310. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  311. package/src/ngtsc/perf/index.mjs +0 -11
  312. package/src/ngtsc/perf/perf.externs.js +0 -0
  313. package/src/ngtsc/perf/src/api.mjs +0 -278
  314. package/src/ngtsc/perf/src/clock.mjs +0 -15
  315. package/src/ngtsc/perf/src/noop.mjs +0 -21
  316. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  317. package/src/ngtsc/program.mjs +0 -271
  318. package/src/ngtsc/program_driver/index.mjs +0 -10
  319. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  320. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  321. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  322. package/src/ngtsc/reflection/index.mjs +0 -12
  323. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  324. package/src/ngtsc/reflection/src/host.mjs +0 -73
  325. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  326. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  327. package/src/ngtsc/reflection/src/util.mjs +0 -21
  328. package/src/ngtsc/resource/index.mjs +0 -9
  329. package/src/ngtsc/resource/resource.externs.js +0 -0
  330. package/src/ngtsc/resource/src/loader.mjs +0 -242
  331. package/src/ngtsc/routing/index.mjs +0 -11
  332. package/src/ngtsc/routing/routing.externs.js +0 -0
  333. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  334. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  335. package/src/ngtsc/routing/src/route.mjs +0 -51
  336. package/src/ngtsc/scope/index.mjs +0 -12
  337. package/src/ngtsc/scope/scope.externs.js +0 -0
  338. package/src/ngtsc/scope/src/api.mjs +0 -9
  339. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  340. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  341. package/src/ngtsc/scope/src/local.mjs +0 -531
  342. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  343. package/src/ngtsc/shims/api.externs.js +0 -0
  344. package/src/ngtsc/shims/api.mjs +0 -2
  345. package/src/ngtsc/shims/index.mjs +0 -14
  346. package/src/ngtsc/shims/shims.externs.js +0 -0
  347. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  348. package/src/ngtsc/shims/src/expando.mjs +0 -102
  349. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  350. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  351. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  352. package/src/ngtsc/shims/src/util.mjs +0 -26
  353. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  354. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  355. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  356. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  357. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  358. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  359. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  360. package/src/ngtsc/switch/index.mjs +0 -9
  361. package/src/ngtsc/switch/src/switch.mjs +0 -115
  362. package/src/ngtsc/switch/switch.externs.js +0 -0
  363. package/src/ngtsc/transform/index.mjs +0 -14
  364. package/src/ngtsc/transform/src/alias.mjs +0 -30
  365. package/src/ngtsc/transform/src/api.mjs +0 -63
  366. package/src/ngtsc/transform/src/compilation.mjs +0 -514
  367. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  368. package/src/ngtsc/transform/src/trait.mjs +0 -95
  369. package/src/ngtsc/transform/src/transform.mjs +0 -298
  370. package/src/ngtsc/transform/src/utils.mjs +0 -57
  371. package/src/ngtsc/transform/transform.externs.js +0 -0
  372. package/src/ngtsc/translator/index.mjs +0 -14
  373. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  374. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  375. package/src/ngtsc/translator/src/context.mjs +0 -24
  376. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  377. package/src/ngtsc/translator/src/translator.mjs +0 -317
  378. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  379. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  380. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  381. package/src/ngtsc/translator/translator.externs.js +0 -0
  382. package/src/ngtsc/tsc_plugin.mjs +0 -98
  383. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  384. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  385. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  386. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  387. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  388. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  389. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  390. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  391. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  392. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  393. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  394. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  395. package/src/ngtsc/typecheck/index.mjs +0 -12
  396. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  397. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  398. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  399. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  400. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  401. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  402. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  403. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  404. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  405. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  406. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  407. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  408. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  409. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  410. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -485
  411. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  412. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  413. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  414. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  415. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -127
  416. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -93
  417. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  418. package/src/ngtsc/util/src/path.mjs +0 -18
  419. package/src/ngtsc/util/src/typescript.mjs +0 -143
  420. package/src/ngtsc/util/src/visitor.mjs +0 -107
  421. package/src/ngtsc/util/util.externs.js +0 -0
  422. package/src/ngtsc/xi18n/index.mjs +0 -9
  423. package/src/ngtsc/xi18n/src/context.mjs +0 -9
  424. package/src/ngtsc/xi18n/xi18n.externs.js +0 -0
  425. package/src/perform_compile.mjs +0 -275
  426. package/src/perform_watch.mjs +0 -247
  427. package/src/tooling.mjs +0 -32
  428. package/src/transformers/api.mjs +0 -27
  429. package/src/transformers/compiler_host.mjs +0 -593
  430. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  431. package/src/transformers/entry_points.mjs +0 -10
  432. package/src/transformers/i18n.mjs +0 -59
  433. package/src/transformers/inline_resources.mjs +0 -269
  434. package/src/transformers/lower_expressions.mjs +0 -336
  435. package/src/transformers/metadata_cache.mjs +0 -53
  436. package/src/transformers/metadata_reader.mjs +0 -104
  437. package/src/transformers/node_emitter.mjs +0 -606
  438. package/src/transformers/node_emitter_transform.mjs +0 -78
  439. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  440. package/src/transformers/program.mjs +0 -887
  441. package/src/transformers/r3_metadata_transform.mjs +0 -46
  442. package/src/transformers/r3_transform.mjs +0 -29
  443. package/src/transformers/util.mjs +0 -89
  444. package/src/typescript_support.mjs +0 -57
  445. package/src/version.mjs +0 -15
@@ -1,143 +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 { Reference } from '../../imports';
10
- import { isNamedClassDeclaration } from '../../reflection';
11
- import { MetaType } from './api';
12
- import { ClassPropertyMapping } from './property_mapping';
13
- import { extractDirectiveTypeCheckMeta, extractReferencesFromType, readStringArrayType, readStringMapType, readStringType } from './util';
14
- /**
15
- * A `MetadataReader` that can read metadata from `.d.ts` files, which have static Ivy properties
16
- * from an upstream compilation already.
17
- */
18
- export class DtsMetadataReader {
19
- constructor(checker, reflector) {
20
- this.checker = checker;
21
- this.reflector = reflector;
22
- }
23
- /**
24
- * Read the metadata from a class that has already been compiled somehow (either it's in a .d.ts
25
- * file, or in a .ts file with a handwritten definition).
26
- *
27
- * @param ref `Reference` to the class of interest, with the context of how it was obtained.
28
- */
29
- getNgModuleMetadata(ref) {
30
- const clazz = ref.node;
31
- const resolutionContext = clazz.getSourceFile().fileName;
32
- // This operation is explicitly not memoized, as it depends on `ref.ownedByModuleGuess`.
33
- // TODO(alxhub): investigate caching of .d.ts module metadata.
34
- const ngModuleDef = this.reflector.getMembersOfClass(clazz).find(member => member.name === 'ɵmod' && member.isStatic);
35
- if (ngModuleDef === undefined) {
36
- return null;
37
- }
38
- else if (
39
- // Validate that the shape of the ngModuleDef type is correct.
40
- ngModuleDef.type === null || !ts.isTypeReferenceNode(ngModuleDef.type) ||
41
- ngModuleDef.type.typeArguments === undefined ||
42
- ngModuleDef.type.typeArguments.length !== 4) {
43
- return null;
44
- }
45
- // Read the ModuleData out of the type arguments.
46
- const [_, declarationMetadata, importMetadata, exportMetadata] = ngModuleDef.type.typeArguments;
47
- return {
48
- ref,
49
- declarations: extractReferencesFromType(this.checker, declarationMetadata, ref.ownedByModuleGuess, resolutionContext),
50
- exports: extractReferencesFromType(this.checker, exportMetadata, ref.ownedByModuleGuess, resolutionContext),
51
- imports: extractReferencesFromType(this.checker, importMetadata, ref.ownedByModuleGuess, resolutionContext),
52
- schemas: [],
53
- rawDeclarations: null,
54
- };
55
- }
56
- /**
57
- * Read directive (or component) metadata from a referenced class in a .d.ts file.
58
- */
59
- getDirectiveMetadata(ref) {
60
- const clazz = ref.node;
61
- const def = this.reflector.getMembersOfClass(clazz).find(field => field.isStatic && (field.name === 'ɵcmp' || field.name === 'ɵdir'));
62
- if (def === undefined) {
63
- // No definition could be found.
64
- return null;
65
- }
66
- else if (def.type === null || !ts.isTypeReferenceNode(def.type) ||
67
- def.type.typeArguments === undefined || def.type.typeArguments.length < 2) {
68
- // The type metadata was the wrong shape.
69
- return null;
70
- }
71
- const isComponent = def.name === 'ɵcmp';
72
- const ctorParams = this.reflector.getConstructorParameters(clazz);
73
- // A directive is considered to be structural if:
74
- // 1) it's a directive, not a component, and
75
- // 2) it injects `TemplateRef`
76
- const isStructural = !isComponent && ctorParams !== null && ctorParams.some(param => {
77
- return param.typeValueReference.kind === 1 /* IMPORTED */ &&
78
- param.typeValueReference.moduleName === '@angular/core' &&
79
- param.typeValueReference.importedName === 'TemplateRef';
80
- });
81
- const inputs = ClassPropertyMapping.fromMappedObject(readStringMapType(def.type.typeArguments[3]));
82
- const outputs = ClassPropertyMapping.fromMappedObject(readStringMapType(def.type.typeArguments[4]));
83
- return Object.assign(Object.assign({ type: MetaType.Directive, ref, name: clazz.name.text, isComponent, selector: readStringType(def.type.typeArguments[1]), exportAs: readStringArrayType(def.type.typeArguments[2]), inputs,
84
- outputs, queries: readStringArrayType(def.type.typeArguments[5]) }, extractDirectiveTypeCheckMeta(clazz, inputs, this.reflector)), { baseClass: readBaseClass(clazz, this.checker, this.reflector), isPoisoned: false, isStructural });
85
- }
86
- /**
87
- * Read pipe metadata from a referenced class in a .d.ts file.
88
- */
89
- getPipeMetadata(ref) {
90
- const def = this.reflector.getMembersOfClass(ref.node).find(field => field.isStatic && field.name === 'ɵpipe');
91
- if (def === undefined) {
92
- // No definition could be found.
93
- return null;
94
- }
95
- else if (def.type === null || !ts.isTypeReferenceNode(def.type) ||
96
- def.type.typeArguments === undefined || def.type.typeArguments.length < 2) {
97
- // The type metadata was the wrong shape.
98
- return null;
99
- }
100
- const type = def.type.typeArguments[1];
101
- if (!ts.isLiteralTypeNode(type) || !ts.isStringLiteral(type.literal)) {
102
- // The type metadata was the wrong type.
103
- return null;
104
- }
105
- const name = type.literal.text;
106
- return {
107
- type: MetaType.Pipe,
108
- ref,
109
- name,
110
- nameExpr: null,
111
- };
112
- }
113
- }
114
- function readBaseClass(clazz, checker, reflector) {
115
- if (!isNamedClassDeclaration(clazz)) {
116
- // Technically this is an error in a .d.ts file, but for the purposes of finding the base class
117
- // it's ignored.
118
- return reflector.hasBaseClass(clazz) ? 'dynamic' : null;
119
- }
120
- if (clazz.heritageClauses !== undefined) {
121
- for (const clause of clazz.heritageClauses) {
122
- if (clause.token === ts.SyntaxKind.ExtendsKeyword) {
123
- const baseExpr = clause.types[0].expression;
124
- let symbol = checker.getSymbolAtLocation(baseExpr);
125
- if (symbol === undefined) {
126
- return 'dynamic';
127
- }
128
- else if (symbol.flags & ts.SymbolFlags.Alias) {
129
- symbol = checker.getAliasedSymbol(symbol);
130
- }
131
- if (symbol.valueDeclaration !== undefined &&
132
- isNamedClassDeclaration(symbol.valueDeclaration)) {
133
- return new Reference(symbol.valueDeclaration);
134
- }
135
- else {
136
- return 'dynamic';
137
- }
138
- }
139
- }
140
- }
141
- return null;
142
- }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9tZXRhZGF0YS9zcmMvZHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFtQix1QkFBdUIsRUFBeUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVuSCxPQUFPLEVBQWdDLFFBQVEsRUFBeUIsTUFBTSxPQUFPLENBQUM7QUFDdEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFDLDZCQUE2QixFQUFFLHlCQUF5QixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUV4STs7O0dBR0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW9CLE9BQXVCLEVBQVUsU0FBeUI7UUFBMUQsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFnQjtJQUFHLENBQUM7SUFFbEY7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBQyxHQUFnQztRQUNsRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUN6RCx3RkFBd0Y7UUFDeEYsOERBQThEO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM1RCxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLE1BQU0s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SSxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQzFDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTtnQkFDakQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQzVDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO29CQUN4QixPQUFPLFNBQVMsQ0FBQztpQkFDbEI7cUJBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO29CQUM5QyxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO29CQUNyQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtvQkFDcEQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDL0M7cUJBQU07b0JBQ0wsT0FBTyxTQUFTLENBQUM7aUJBQ2xCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdCwgVHlwZVZhbHVlUmVmZXJlbmNlS2luZH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7RGlyZWN0aXZlTWV0YSwgTWV0YWRhdGFSZWFkZXIsIE1ldGFUeXBlLCBOZ01vZHVsZU1ldGEsIFBpcGVNZXRhfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge0NsYXNzUHJvcGVydHlNYXBwaW5nfSBmcm9tICcuL3Byb3BlcnR5X21hcHBpbmcnO1xuaW1wb3J0IHtleHRyYWN0RGlyZWN0aXZlVHlwZUNoZWNrTWV0YSwgZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZSwgcmVhZFN0cmluZ0FycmF5VHlwZSwgcmVhZFN0cmluZ01hcFR5cGUsIHJlYWRTdHJpbmdUeXBlfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEEgYE1ldGFkYXRhUmVhZGVyYCB0aGF0IGNhbiByZWFkIG1ldGFkYXRhIGZyb20gYC5kLnRzYCBmaWxlcywgd2hpY2ggaGF2ZSBzdGF0aWMgSXZ5IHByb3BlcnRpZXNcbiAqIGZyb20gYW4gdXBzdHJlYW0gY29tcGlsYXRpb24gYWxyZWFkeS5cbiAqL1xuZXhwb3J0IGNsYXNzIER0c01ldGFkYXRhUmVhZGVyIGltcGxlbWVudHMgTWV0YWRhdGFSZWFkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCBwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIFJlYWQgdGhlIG1ldGFkYXRhIGZyb20gYSBjbGFzcyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY29tcGlsZWQgc29tZWhvdyAoZWl0aGVyIGl0J3MgaW4gYSAuZC50c1xuICAgKiBmaWxlLCBvciBpbiBhIC50cyBmaWxlIHdpdGggYSBoYW5kd3JpdHRlbiBkZWZpbml0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIHJlZiBgUmVmZXJlbmNlYCB0byB0aGUgY2xhc3Mgb2YgaW50ZXJlc3QsIHdpdGggdGhlIGNvbnRleHQgb2YgaG93IGl0IHdhcyBvYnRhaW5lZC5cbiAgICovXG4gIGdldE5nTW9kdWxlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBOZ01vZHVsZU1ldGF8bnVsbCB7XG4gICAgY29uc3QgY2xhenogPSByZWYubm9kZTtcbiAgICBjb25zdCByZXNvbHV0aW9uQ29udGV4dCA9IGNsYXp6LmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcbiAgICAvLyBUaGlzIG9wZXJhdGlvbiBpcyBleHBsaWNpdGx5IG5vdCBtZW1vaXplZCwgYXMgaXQgZGVwZW5kcyBvbiBgcmVmLm93bmVkQnlNb2R1bGVHdWVzc2AuXG4gICAgLy8gVE9ETyhhbHhodWIpOiBpbnZlc3RpZ2F0ZSBjYWNoaW5nIG9mIC5kLnRzIG1vZHVsZSBtZXRhZGF0YS5cbiAgICBjb25zdCBuZ01vZHVsZURlZiA9IHRoaXMucmVmbGVjdG9yLmdldE1lbWJlcnNPZkNsYXNzKGNsYXp6KS5maW5kKFxuICAgICAgICBtZW1iZXIgPT4gbWVtYmVyLm5hbWUgPT09ICfJtW1vZCcgJiYgbWVtYmVyLmlzU3RhdGljKTtcbiAgICBpZiAobmdNb2R1bGVEZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc2hhcGUgb2YgdGhlIG5nTW9kdWxlRGVmIHR5cGUgaXMgY29ycmVjdC5cbiAgICAgICAgbmdNb2R1bGVEZWYudHlwZSA9PT0gbnVsbCB8fCAhdHMuaXNUeXBlUmVmZXJlbmNlTm9kZShuZ01vZHVsZURlZi50eXBlKSB8fFxuICAgICAgICBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZWFkIHRoZSBNb2R1bGVEYXRhIG91dCBvZiB0aGUgdHlwZSBhcmd1bWVudHMuXG4gICAgY29uc3QgW18sIGRlY2xhcmF0aW9uTWV0YWRhdGEsIGltcG9ydE1ldGFkYXRhLCBleHBvcnRNZXRhZGF0YV0gPSBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZixcbiAgICAgIGRlY2xhcmF0aW9uczogZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZShcbiAgICAgICAgICB0aGlzLmNoZWNrZXIsIGRlY2xhcmF0aW9uTWV0YWRhdGEsIHJlZi5vd25lZEJ5TW9kdWxlR3Vlc3MsIHJlc29sdXRpb25Db250ZXh0KSxcbiAgICAgIGV4cG9ydHM6IGV4dHJhY3RSZWZlcmVuY2VzRnJvbVR5cGUoXG4gICAgICAgICAgdGhpcy5jaGVja2VyLCBleHBvcnRNZXRhZGF0YSwgcmVmLm93bmVkQnlNb2R1bGVHdWVzcywgcmVzb2x1dGlvbkNvbnRleHQpLFxuICAgICAgaW1wb3J0czogZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZShcbiAgICAgICAgICB0aGlzLmNoZWNrZXIsIGltcG9ydE1ldGFkYXRhLCByZWYub3duZWRCeU1vZHVsZUd1ZXNzLCByZXNvbHV0aW9uQ29udGV4dCksXG4gICAgICBzY2hlbWFzOiBbXSxcbiAgICAgIHJhd0RlY2xhcmF0aW9uczogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgZGlyZWN0aXZlIChvciBjb21wb25lbnQpIG1ldGFkYXRhIGZyb20gYSByZWZlcmVuY2VkIGNsYXNzIGluIGEgLmQudHMgZmlsZS5cbiAgICovXG4gIGdldERpcmVjdGl2ZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogRGlyZWN0aXZlTWV0YXxudWxsIHtcbiAgICBjb25zdCBjbGF6eiA9IHJlZi5ub2RlO1xuICAgIGNvbnN0IGRlZiA9IHRoaXMucmVmbGVjdG9yLmdldE1lbWJlcnNPZkNsYXNzKGNsYXp6KS5maW5kKFxuICAgICAgICBmaWVsZCA9PiBmaWVsZC5pc1N0YXRpYyAmJiAoZmllbGQubmFtZSA9PT0gJ8m1Y21wJyB8fCBmaWVsZC5uYW1lID09PSAnybVkaXInKSk7XG4gICAgaWYgKGRlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBObyBkZWZpbml0aW9uIGNvdWxkIGJlIGZvdW5kLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgZGVmLnR5cGUgPT09IG51bGwgfHwgIXRzLmlzVHlwZVJlZmVyZW5jZU5vZGUoZGVmLnR5cGUpIHx8XG4gICAgICAgIGRlZi50eXBlLnR5cGVBcmd1bWVudHMgPT09IHVuZGVmaW5lZCB8fCBkZWYudHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIC8vIFRoZSB0eXBlIG1ldGFkYXRhIHdhcyB0aGUgd3Jvbmcgc2hhcGUuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpc0NvbXBvbmVudCA9IGRlZi5uYW1lID09PSAnybVjbXAnO1xuXG4gICAgY29uc3QgY3RvclBhcmFtcyA9IHRoaXMucmVmbGVjdG9yLmdldENvbnN0cnVjdG9yUGFyYW1ldGVycyhjbGF6eik7XG5cbiAgICAvLyBBIGRpcmVjdGl2ZSBpcyBjb25zaWRlcmVkIHRvIGJlIHN0cnVjdHVyYWwgaWY6XG4gICAgLy8gMSkgaXQncyBhIGRpcmVjdGl2ZSwgbm90IGEgY29tcG9uZW50LCBhbmRcbiAgICAvLyAyKSBpdCBpbmplY3RzIGBUZW1wbGF0ZVJlZmBcbiAgICBjb25zdCBpc1N0cnVjdHVyYWwgPSAhaXNDb21wb25lbnQgJiYgY3RvclBhcmFtcyAhPT0gbnVsbCAmJiBjdG9yUGFyYW1zLnNvbWUocGFyYW0gPT4ge1xuICAgICAgcmV0dXJuIHBhcmFtLnR5cGVWYWx1ZVJlZmVyZW5jZS5raW5kID09PSBUeXBlVmFsdWVSZWZlcmVuY2VLaW5kLklNUE9SVEVEICYmXG4gICAgICAgICAgcGFyYW0udHlwZVZhbHVlUmVmZXJlbmNlLm1vZHVsZU5hbWUgPT09ICdAYW5ndWxhci9jb3JlJyAmJlxuICAgICAgICAgIHBhcmFtLnR5cGVWYWx1ZVJlZmVyZW5jZS5pbXBvcnRlZE5hbWUgPT09ICdUZW1wbGF0ZVJlZic7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnB1dHMgPVxuICAgICAgICBDbGFzc1Byb3BlcnR5TWFwcGluZy5mcm9tTWFwcGVkT2JqZWN0KHJlYWRTdHJpbmdNYXBUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbM10pKTtcbiAgICBjb25zdCBvdXRwdXRzID1cbiAgICAgICAgQ2xhc3NQcm9wZXJ0eU1hcHBpbmcuZnJvbU1hcHBlZE9iamVjdChyZWFkU3RyaW5nTWFwVHlwZShkZWYudHlwZS50eXBlQXJndW1lbnRzWzRdKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IE1ldGFUeXBlLkRpcmVjdGl2ZSxcbiAgICAgIHJlZixcbiAgICAgIG5hbWU6IGNsYXp6Lm5hbWUudGV4dCxcbiAgICAgIGlzQ29tcG9uZW50LFxuICAgICAgc2VsZWN0b3I6IHJlYWRTdHJpbmdUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbMV0pLFxuICAgICAgZXhwb3J0QXM6IHJlYWRTdHJpbmdBcnJheVR5cGUoZGVmLnR5cGUudHlwZUFyZ3VtZW50c1syXSksXG4gICAgICBpbnB1dHMsXG4gICAgICBvdXRwdXRzLFxuICAgICAgcXVlcmllczogcmVhZFN0cmluZ0FycmF5VHlwZShkZWYudHlwZS50eXBlQXJndW1lbnRzWzVdKSxcbiAgICAgIC4uLmV4dHJhY3REaXJlY3RpdmVUeXBlQ2hlY2tNZXRhKGNsYXp6LCBpbnB1dHMsIHRoaXMucmVmbGVjdG9yKSxcbiAgICAgIGJhc2VDbGFzczogcmVhZEJhc2VDbGFzcyhjbGF6eiwgdGhpcy5jaGVja2VyLCB0aGlzLnJlZmxlY3RvciksXG4gICAgICBpc1BvaXNvbmVkOiBmYWxzZSxcbiAgICAgIGlzU3RydWN0dXJhbCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgcGlwZSBtZXRhZGF0YSBmcm9tIGEgcmVmZXJlbmNlZCBjbGFzcyBpbiBhIC5kLnRzIGZpbGUuXG4gICAqL1xuICBnZXRQaXBlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBQaXBlTWV0YXxudWxsIHtcbiAgICBjb25zdCBkZWYgPSB0aGlzLnJlZmxlY3Rvci5nZXRNZW1iZXJzT2ZDbGFzcyhyZWYubm9kZSkuZmluZChcbiAgICAgICAgZmllbGQgPT4gZmllbGQuaXNTdGF0aWMgJiYgZmllbGQubmFtZSA9PT0gJ8m1cGlwZScpO1xuICAgIGlmIChkZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm8gZGVmaW5pdGlvbiBjb3VsZCBiZSBmb3VuZC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRlZi50eXBlID09PSBudWxsIHx8ICF0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKGRlZi50eXBlKSB8fFxuICAgICAgICBkZWYudHlwZS50eXBlQXJndW1lbnRzID09PSB1bmRlZmluZWQgfHwgZGVmLnR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAvLyBUaGUgdHlwZSBtZXRhZGF0YSB3YXMgdGhlIHdyb25nIHNoYXBlLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSBkZWYudHlwZS50eXBlQXJndW1lbnRzWzFdO1xuICAgIGlmICghdHMuaXNMaXRlcmFsVHlwZU5vZGUodHlwZSkgfHwgIXRzLmlzU3RyaW5nTGl0ZXJhbCh0eXBlLmxpdGVyYWwpKSB7XG4gICAgICAvLyBUaGUgdHlwZSBtZXRhZGF0YSB3YXMgdGhlIHdyb25nIHR5cGUuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHR5cGUubGl0ZXJhbC50ZXh0O1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBNZXRhVHlwZS5QaXBlLFxuICAgICAgcmVmLFxuICAgICAgbmFtZSxcbiAgICAgIG5hbWVFeHByOiBudWxsLFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZEJhc2VDbGFzcyhjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbiwgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpOlxuICAgIFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPnwnZHluYW1pYyd8bnVsbCB7XG4gIGlmICghaXNOYW1lZENsYXNzRGVjbGFyYXRpb24oY2xhenopKSB7XG4gICAgLy8gVGVjaG5pY2FsbHkgdGhpcyBpcyBhbiBlcnJvciBpbiBhIC5kLnRzIGZpbGUsIGJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGZpbmRpbmcgdGhlIGJhc2UgY2xhc3NcbiAgICAvLyBpdCdzIGlnbm9yZWQuXG4gICAgcmV0dXJuIHJlZmxlY3Rvci5oYXNCYXNlQ2xhc3MoY2xhenopID8gJ2R5bmFtaWMnIDogbnVsbDtcbiAgfVxuXG4gIGlmIChjbGF6ei5oZXJpdGFnZUNsYXVzZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgY2xhdXNlIG9mIGNsYXp6Lmhlcml0YWdlQ2xhdXNlcykge1xuICAgICAgaWYgKGNsYXVzZS50b2tlbiA9PT0gdHMuU3ludGF4S2luZC5FeHRlbmRzS2V5d29yZCkge1xuICAgICAgICBjb25zdCBiYXNlRXhwciA9IGNsYXVzZS50eXBlc1swXS5leHByZXNzaW9uO1xuICAgICAgICBsZXQgc3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKGJhc2VFeHByKTtcbiAgICAgICAgaWYgKHN5bWJvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuICdkeW5hbWljJztcbiAgICAgICAgfSBlbHNlIGlmIChzeW1ib2wuZmxhZ3MgJiB0cy5TeW1ib2xGbGFncy5BbGlhcykge1xuICAgICAgICAgIHN5bWJvbCA9IGNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbChzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbihzeW1ib2wudmFsdWVEZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlZmVyZW5jZShzeW1ib2wudmFsdWVEZWNsYXJhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICdkeW5hbWljJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
@@ -1,71 +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 { ClassPropertyMapping } from './property_mapping';
9
- /**
10
- * Given a reference to a directive, return a flattened version of its `DirectiveMeta` metadata
11
- * which includes metadata from its entire inheritance chain.
12
- *
13
- * The returned `DirectiveMeta` will either have `baseClass: null` if the inheritance chain could be
14
- * fully resolved, or `baseClass: 'dynamic'` if the inheritance chain could not be completely
15
- * followed.
16
- */
17
- export function flattenInheritedDirectiveMetadata(reader, dir) {
18
- const topMeta = reader.getDirectiveMetadata(dir);
19
- if (topMeta === null) {
20
- throw new Error(`Metadata not found for directive: ${dir.debugName}`);
21
- }
22
- if (topMeta.baseClass === null) {
23
- return topMeta;
24
- }
25
- const coercedInputFields = new Set();
26
- const undeclaredInputFields = new Set();
27
- const restrictedInputFields = new Set();
28
- const stringLiteralInputFields = new Set();
29
- let isDynamic = false;
30
- let inputs = ClassPropertyMapping.empty();
31
- let outputs = ClassPropertyMapping.empty();
32
- let isStructural = false;
33
- const addMetadata = (meta) => {
34
- if (meta.baseClass === 'dynamic') {
35
- isDynamic = true;
36
- }
37
- else if (meta.baseClass !== null) {
38
- const baseMeta = reader.getDirectiveMetadata(meta.baseClass);
39
- if (baseMeta !== null) {
40
- addMetadata(baseMeta);
41
- }
42
- else {
43
- // Missing metadata for the base class means it's effectively dynamic.
44
- isDynamic = true;
45
- }
46
- }
47
- isStructural = isStructural || meta.isStructural;
48
- inputs = ClassPropertyMapping.merge(inputs, meta.inputs);
49
- outputs = ClassPropertyMapping.merge(outputs, meta.outputs);
50
- for (const coercedInputField of meta.coercedInputFields) {
51
- coercedInputFields.add(coercedInputField);
52
- }
53
- for (const undeclaredInputField of meta.undeclaredInputFields) {
54
- undeclaredInputFields.add(undeclaredInputField);
55
- }
56
- for (const restrictedInputField of meta.restrictedInputFields) {
57
- restrictedInputFields.add(restrictedInputField);
58
- }
59
- for (const field of meta.stringLiteralInputFields) {
60
- stringLiteralInputFields.add(field);
61
- }
62
- };
63
- addMetadata(topMeta);
64
- return Object.assign(Object.assign({}, topMeta), { inputs,
65
- outputs,
66
- coercedInputFields,
67
- undeclaredInputFields,
68
- restrictedInputFields,
69
- stringLiteralInputFields, baseClass: isDynamic ? 'dynamic' : null, isStructural });
70
- }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5oZXJpdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL21ldGFkYXRhL3NyYy9pbmhlcml0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFNSCxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLE1BQU0sb0JBQW9CLENBQUM7QUFFM0U7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FDN0MsTUFBc0IsRUFBRSxHQUFnQztJQUMxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtRQUM5QixPQUFPLE9BQU8sQ0FBQztLQUNoQjtJQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFDeEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUMzRCxNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO0lBQzNELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFDOUQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLElBQUksTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLElBQUksT0FBTyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLElBQUksWUFBWSxHQUFZLEtBQUssQ0FBQztJQUVsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQW1CLEVBQVEsRUFBRTtRQUNoRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQ2hDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDbEI7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUNyQixXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsc0VBQXNFO2dCQUN0RSxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ2xCO1NBQ0Y7UUFFRCxZQUFZLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFakQsTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RCxLQUFLLE1BQU0saUJBQWlCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsS0FBSyxNQUFNLG9CQUFvQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM3RCxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNqRDtRQUNELEtBQUssTUFBTSxvQkFBb0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDN0QscUJBQXFCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDakQ7UUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqRCx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDLENBQUM7SUFFRixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFckIsdUNBQ0ssT0FBTyxLQUNWLE1BQU07UUFDTixPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUN2QyxZQUFZLElBQ1o7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuLi8uLi9pbXBvcnRzJztcbmltcG9ydCB7Q2xhc3NEZWNsYXJhdGlvbn0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7RGlyZWN0aXZlTWV0YSwgTWV0YWRhdGFSZWFkZXJ9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7Q2xhc3NQcm9wZXJ0eU1hcHBpbmcsIENsYXNzUHJvcGVydHlOYW1lfSBmcm9tICcuL3Byb3BlcnR5X21hcHBpbmcnO1xuXG4vKipcbiAqIEdpdmVuIGEgcmVmZXJlbmNlIHRvIGEgZGlyZWN0aXZlLCByZXR1cm4gYSBmbGF0dGVuZWQgdmVyc2lvbiBvZiBpdHMgYERpcmVjdGl2ZU1ldGFgIG1ldGFkYXRhXG4gKiB3aGljaCBpbmNsdWRlcyBtZXRhZGF0YSBmcm9tIGl0cyBlbnRpcmUgaW5oZXJpdGFuY2UgY2hhaW4uXG4gKlxuICogVGhlIHJldHVybmVkIGBEaXJlY3RpdmVNZXRhYCB3aWxsIGVpdGhlciBoYXZlIGBiYXNlQ2xhc3M6IG51bGxgIGlmIHRoZSBpbmhlcml0YW5jZSBjaGFpbiBjb3VsZCBiZVxuICogZnVsbHkgcmVzb2x2ZWQsIG9yIGBiYXNlQ2xhc3M6ICdkeW5hbWljJ2AgaWYgdGhlIGluaGVyaXRhbmNlIGNoYWluIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWx5XG4gKiBmb2xsb3dlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Jbmhlcml0ZWREaXJlY3RpdmVNZXRhZGF0YShcbiAgICByZWFkZXI6IE1ldGFkYXRhUmVhZGVyLCBkaXI6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPik6IERpcmVjdGl2ZU1ldGEge1xuICBjb25zdCB0b3BNZXRhID0gcmVhZGVyLmdldERpcmVjdGl2ZU1ldGFkYXRhKGRpcik7XG4gIGlmICh0b3BNZXRhID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNZXRhZGF0YSBub3QgZm91bmQgZm9yIGRpcmVjdGl2ZTogJHtkaXIuZGVidWdOYW1lfWApO1xuICB9XG4gIGlmICh0b3BNZXRhLmJhc2VDbGFzcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0b3BNZXRhO1xuICB9XG5cbiAgY29uc3QgY29lcmNlZElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgY29uc3QgdW5kZWNsYXJlZElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgY29uc3QgcmVzdHJpY3RlZElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgY29uc3Qgc3RyaW5nTGl0ZXJhbElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgbGV0IGlzRHluYW1pYyA9IGZhbHNlO1xuICBsZXQgaW5wdXRzID0gQ2xhc3NQcm9wZXJ0eU1hcHBpbmcuZW1wdHkoKTtcbiAgbGV0IG91dHB1dHMgPSBDbGFzc1Byb3BlcnR5TWFwcGluZy5lbXB0eSgpO1xuICBsZXQgaXNTdHJ1Y3R1cmFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3QgYWRkTWV0YWRhdGEgPSAobWV0YTogRGlyZWN0aXZlTWV0YSk6IHZvaWQgPT4ge1xuICAgIGlmIChtZXRhLmJhc2VDbGFzcyA9PT0gJ2R5bmFtaWMnKSB7XG4gICAgICBpc0R5bmFtaWMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWV0YS5iYXNlQ2xhc3MgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGJhc2VNZXRhID0gcmVhZGVyLmdldERpcmVjdGl2ZU1ldGFkYXRhKG1ldGEuYmFzZUNsYXNzKTtcbiAgICAgIGlmIChiYXNlTWV0YSAhPT0gbnVsbCkge1xuICAgICAgICBhZGRNZXRhZGF0YShiYXNlTWV0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNaXNzaW5nIG1ldGFkYXRhIGZvciB0aGUgYmFzZSBjbGFzcyBtZWFucyBpdCdzIGVmZmVjdGl2ZWx5IGR5bmFtaWMuXG4gICAgICAgIGlzRHluYW1pYyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXNTdHJ1Y3R1cmFsID0gaXNTdHJ1Y3R1cmFsIHx8IG1ldGEuaXNTdHJ1Y3R1cmFsO1xuXG4gICAgaW5wdXRzID0gQ2xhc3NQcm9wZXJ0eU1hcHBpbmcubWVyZ2UoaW5wdXRzLCBtZXRhLmlucHV0cyk7XG4gICAgb3V0cHV0cyA9IENsYXNzUHJvcGVydHlNYXBwaW5nLm1lcmdlKG91dHB1dHMsIG1ldGEub3V0cHV0cyk7XG5cbiAgICBmb3IgKGNvbnN0IGNvZXJjZWRJbnB1dEZpZWxkIG9mIG1ldGEuY29lcmNlZElucHV0RmllbGRzKSB7XG4gICAgICBjb2VyY2VkSW5wdXRGaWVsZHMuYWRkKGNvZXJjZWRJbnB1dEZpZWxkKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB1bmRlY2xhcmVkSW5wdXRGaWVsZCBvZiBtZXRhLnVuZGVjbGFyZWRJbnB1dEZpZWxkcykge1xuICAgICAgdW5kZWNsYXJlZElucHV0RmllbGRzLmFkZCh1bmRlY2xhcmVkSW5wdXRGaWVsZCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVzdHJpY3RlZElucHV0RmllbGQgb2YgbWV0YS5yZXN0cmljdGVkSW5wdXRGaWVsZHMpIHtcbiAgICAgIHJlc3RyaWN0ZWRJbnB1dEZpZWxkcy5hZGQocmVzdHJpY3RlZElucHV0RmllbGQpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIG1ldGEuc3RyaW5nTGl0ZXJhbElucHV0RmllbGRzKSB7XG4gICAgICBzdHJpbmdMaXRlcmFsSW5wdXRGaWVsZHMuYWRkKGZpZWxkKTtcbiAgICB9XG4gIH07XG5cbiAgYWRkTWV0YWRhdGEodG9wTWV0YSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi50b3BNZXRhLFxuICAgIGlucHV0cyxcbiAgICBvdXRwdXRzLFxuICAgIGNvZXJjZWRJbnB1dEZpZWxkcyxcbiAgICB1bmRlY2xhcmVkSW5wdXRGaWVsZHMsXG4gICAgcmVzdHJpY3RlZElucHV0RmllbGRzLFxuICAgIHN0cmluZ0xpdGVyYWxJbnB1dEZpZWxkcyxcbiAgICBiYXNlQ2xhc3M6IGlzRHluYW1pYyA/ICdkeW5hbWljJyA6IG51bGwsXG4gICAgaXNTdHJ1Y3R1cmFsLFxuICB9O1xufVxuIl19
@@ -1,136 +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
- /**
9
- * A mapping of component property and template binding property names, for example containing the
10
- * inputs of a particular directive or component.
11
- *
12
- * A single component property has exactly one input/output annotation (and therefore one binding
13
- * property name) associated with it, but the same binding property name may be shared across many
14
- * component property names.
15
- *
16
- * Allows bidirectional querying of the mapping - looking up all inputs/outputs with a given
17
- * property name, or mapping from a specific class property to its binding property name.
18
- */
19
- export class ClassPropertyMapping {
20
- constructor(forwardMap) {
21
- this.forwardMap = forwardMap;
22
- this.reverseMap = reverseMapFromForwardMap(forwardMap);
23
- }
24
- /**
25
- * Construct a `ClassPropertyMapping` with no entries.
26
- */
27
- static empty() {
28
- return new ClassPropertyMapping(new Map());
29
- }
30
- /**
31
- * Construct a `ClassPropertyMapping` from a primitive JS object which maps class property names
32
- * to either binding property names or an array that contains both names, which is used in on-disk
33
- * metadata formats (e.g. in .d.ts files).
34
- */
35
- static fromMappedObject(obj) {
36
- const forwardMap = new Map();
37
- for (const classPropertyName of Object.keys(obj)) {
38
- const value = obj[classPropertyName];
39
- const bindingPropertyName = Array.isArray(value) ? value[0] : value;
40
- const inputOrOutput = { classPropertyName, bindingPropertyName };
41
- forwardMap.set(classPropertyName, inputOrOutput);
42
- }
43
- return new ClassPropertyMapping(forwardMap);
44
- }
45
- /**
46
- * Merge two mappings into one, with class properties from `b` taking precedence over class
47
- * properties from `a`.
48
- */
49
- static merge(a, b) {
50
- const forwardMap = new Map(a.forwardMap.entries());
51
- for (const [classPropertyName, inputOrOutput] of b.forwardMap) {
52
- forwardMap.set(classPropertyName, inputOrOutput);
53
- }
54
- return new ClassPropertyMapping(forwardMap);
55
- }
56
- /**
57
- * All class property names mapped in this mapping.
58
- */
59
- get classPropertyNames() {
60
- return Array.from(this.forwardMap.keys());
61
- }
62
- /**
63
- * All binding property names mapped in this mapping.
64
- */
65
- get propertyNames() {
66
- return Array.from(this.reverseMap.keys());
67
- }
68
- /**
69
- * Check whether a mapping for the given property name exists.
70
- */
71
- hasBindingPropertyName(propertyName) {
72
- return this.reverseMap.has(propertyName);
73
- }
74
- /**
75
- * Lookup all `InputOrOutput`s that use this `propertyName`.
76
- */
77
- getByBindingPropertyName(propertyName) {
78
- return this.reverseMap.has(propertyName) ? this.reverseMap.get(propertyName) : null;
79
- }
80
- /**
81
- * Lookup the `InputOrOutput` associated with a `classPropertyName`.
82
- */
83
- getByClassPropertyName(classPropertyName) {
84
- return this.forwardMap.has(classPropertyName) ? this.forwardMap.get(classPropertyName) : null;
85
- }
86
- /**
87
- * Convert this mapping to a primitive JS object which maps each class property directly to the
88
- * binding property name associated with it.
89
- */
90
- toDirectMappedObject() {
91
- const obj = {};
92
- for (const [classPropertyName, inputOrOutput] of this.forwardMap) {
93
- obj[classPropertyName] = inputOrOutput.bindingPropertyName;
94
- }
95
- return obj;
96
- }
97
- /**
98
- * Convert this mapping to a primitive JS object which maps each class property either to itself
99
- * (for cases where the binding property name is the same) or to an array which contains both
100
- * names if they differ.
101
- *
102
- * This object format is used when mappings are serialized (for example into .d.ts files).
103
- */
104
- toJointMappedObject() {
105
- const obj = {};
106
- for (const [classPropertyName, inputOrOutput] of this.forwardMap) {
107
- if (inputOrOutput.bindingPropertyName === classPropertyName) {
108
- obj[classPropertyName] = inputOrOutput.bindingPropertyName;
109
- }
110
- else {
111
- obj[classPropertyName] = [inputOrOutput.bindingPropertyName, classPropertyName];
112
- }
113
- }
114
- return obj;
115
- }
116
- /**
117
- * Implement the iterator protocol and return entry objects which contain the class and binding
118
- * property names (and are useful for destructuring).
119
- */
120
- *[Symbol.iterator]() {
121
- for (const [classPropertyName, inputOrOutput] of this.forwardMap.entries()) {
122
- yield [classPropertyName, inputOrOutput.bindingPropertyName];
123
- }
124
- }
125
- }
126
- function reverseMapFromForwardMap(forwardMap) {
127
- const reverseMap = new Map();
128
- for (const [_, inputOrOutput] of forwardMap) {
129
- if (!reverseMap.has(inputOrOutput.bindingPropertyName)) {
130
- reverseMap.set(inputOrOutput.bindingPropertyName, []);
131
- }
132
- reverseMap.get(inputOrOutput.bindingPropertyName).push(inputOrOutput);
133
- }
134
- return reverseMap;
135
- }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlfbWFwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvbWV0YWRhdGEvc3JjL3Byb3BlcnR5X21hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBbUNIOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBVy9CLFlBQW9CLFVBQWlEO1FBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUs7UUFDVixPQUFPLElBQUksb0JBQW9CLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBRXZCO1FBQ0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQW9DLENBQUM7UUFFL0QsS0FBSyxNQUFNLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDckMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNwRSxNQUFNLGFBQWEsR0FBa0IsRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxDQUFDO1lBQzlFLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxPQUFPLElBQUksb0JB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RUQsU0FBUyx3QkFBd0IsQ0FBQyxVQUFpRDtJQUVqRixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBd0MsQ0FBQztJQUNuRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLElBQUksVUFBVSxFQUFFO1FBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RELFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDeEU7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5wdXRPdXRwdXRQcm9wZXJ0eVNldH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIGEgY2xhc3MgcHJvcGVydHkgdGhhdCBiYWNrcyBhbiBpbnB1dCBvciBvdXRwdXQgZGVjbGFyZWQgYnkgYSBkaXJlY3RpdmUgb3IgY29tcG9uZW50LlxuICpcbiAqIFRoaXMgdHlwZSBleGlzdHMgZm9yIGRvY3VtZW50YXRpb24gb25seS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2xhc3NQcm9wZXJ0eU5hbWUgPSBzdHJpbmc7XG5cbi8qKlxuICogVGhlIG5hbWUgYnkgd2hpY2ggYW4gaW5wdXQgb3Igb3V0cHV0IG9mIGEgZGlyZWN0aXZlIG9yIGNvbXBvbmVudCBpcyBib3VuZCBpbiBhbiBBbmd1bGFyIHRlbXBsYXRlLlxuICpcbiAqIFRoaXMgdHlwZSBleGlzdHMgZm9yIGRvY3VtZW50YXRpb24gb25seS5cbiAqL1xuZXhwb3J0IHR5cGUgQmluZGluZ1Byb3BlcnR5TmFtZSA9IHN0cmluZztcblxuLyoqXG4gKiBBbiBpbnB1dCBvciBvdXRwdXQgb2YgYSBkaXJlY3RpdmUgdGhhdCBoYXMgYm90aCBhIG5hbWVkIEphdmFTY3JpcHQgY2xhc3MgcHJvcGVydHkgb24gYSBjb21wb25lbnRcbiAqIG9yIGRpcmVjdGl2ZSBjbGFzcywgYXMgd2VsbCBhcyBhbiBBbmd1bGFyIHRlbXBsYXRlIHByb3BlcnR5IG5hbWUgdXNlZCBmb3IgYmluZGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9yT3V0cHV0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBKYXZhU2NyaXB0IHByb3BlcnR5IG9uIHRoZSBjb21wb25lbnQgb3IgZGlyZWN0aXZlIGluc3RhbmNlIGZvciB0aGlzIGlucHV0IG9yXG4gICAqIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzUHJvcGVydHlOYW1lOiBDbGFzc1Byb3BlcnR5TmFtZTtcblxuICAvKipcbiAgICogVGhlIHByb3BlcnR5IG5hbWUgdXNlZCB0byBiaW5kIHRoaXMgaW5wdXQgb3Igb3V0cHV0IGluIGFuIEFuZ3VsYXIgdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBiaW5kaW5nUHJvcGVydHlOYW1lOiBCaW5kaW5nUHJvcGVydHlOYW1lO1xufVxuXG4vKipcbiAqIEEgbWFwcGluZyBvZiBjb21wb25lbnQgcHJvcGVydHkgYW5kIHRlbXBsYXRlIGJpbmRpbmcgcHJvcGVydHkgbmFtZXMsIGZvciBleGFtcGxlIGNvbnRhaW5pbmcgdGhlXG4gKiBpbnB1dHMgb2YgYSBwYXJ0aWN1bGFyIGRpcmVjdGl2ZSBvciBjb21wb25lbnQuXG4gKlxuICogQSBzaW5nbGUgY29tcG9uZW50IHByb3BlcnR5IGhhcyBleGFjdGx5IG9uZSBpbnB1dC9vdXRwdXQgYW5ub3RhdGlvbiAoYW5kIHRoZXJlZm9yZSBvbmUgYmluZGluZ1xuICogcHJvcGVydHkgbmFtZSkgYXNzb2NpYXRlZCB3aXRoIGl0LCBidXQgdGhlIHNhbWUgYmluZGluZyBwcm9wZXJ0eSBuYW1lIG1heSBiZSBzaGFyZWQgYWNyb3NzIG1hbnlcbiAqIGNvbXBvbmVudCBwcm9wZXJ0eSBuYW1lcy5cbiAqXG4gKiBBbGxvd3MgYmlkaXJlY3Rpb25hbCBxdWVyeWluZyBvZiB0aGUgbWFwcGluZyAtIGxvb2tpbmcgdXAgYWxsIGlucHV0cy9vdXRwdXRzIHdpdGggYSBnaXZlblxuICogcHJvcGVydHkgbmFtZSwgb3IgbWFwcGluZyBmcm9tIGEgc3BlY2lmaWMgY2xhc3MgcHJvcGVydHkgdG8gaXRzIGJpbmRpbmcgcHJvcGVydHkgbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsYXNzUHJvcGVydHlNYXBwaW5nIGltcGxlbWVudHMgSW5wdXRPdXRwdXRQcm9wZXJ0eVNldCB7XG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gY2xhc3MgcHJvcGVydHkgbmFtZXMgdG8gdGhlIHNpbmdsZSBgSW5wdXRPck91dHB1dGAgZm9yIHRoYXQgY2xhc3MgcHJvcGVydHkuXG4gICAqL1xuICBwcml2YXRlIGZvcndhcmRNYXA6IE1hcDxDbGFzc1Byb3BlcnR5TmFtZSwgSW5wdXRPck91dHB1dD47XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBwcm9wZXJ0eSBuYW1lcyB0byBvbmUgb3IgbW9yZSBgSW5wdXRPck91dHB1dGBzIHdoaWNoIHNoYXJlIHRoYXQgbmFtZS5cbiAgICovXG4gIHByaXZhdGUgcmV2ZXJzZU1hcDogTWFwPEJpbmRpbmdQcm9wZXJ0eU5hbWUsIElucHV0T3JPdXRwdXRbXT47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihmb3J3YXJkTWFwOiBNYXA8Q2xhc3NQcm9wZXJ0eU5hbWUsIElucHV0T3JPdXRwdXQ+KSB7XG4gICAgdGhpcy5mb3J3YXJkTWFwID0gZm9yd2FyZE1hcDtcbiAgICB0aGlzLnJldmVyc2VNYXAgPSByZXZlcnNlTWFwRnJvbUZvcndhcmRNYXAoZm9yd2FyZE1hcCk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0IGEgYENsYXNzUHJvcGVydHlNYXBwaW5nYCB3aXRoIG5vIGVudHJpZXMuXG4gICAqL1xuICBzdGF0aWMgZW1wdHkoKTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcge1xuICAgIHJldHVybiBuZXcgQ2xhc3NQcm9wZXJ0eU1hcHBpbmcobmV3IE1hcCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgYSBgQ2xhc3NQcm9wZXJ0eU1hcHBpbmdgIGZyb20gYSBwcmltaXRpdmUgSlMgb2JqZWN0IHdoaWNoIG1hcHMgY2xhc3MgcHJvcGVydHkgbmFtZXNcbiAgICogdG8gZWl0aGVyIGJpbmRpbmcgcHJvcGVydHkgbmFtZXMgb3IgYW4gYXJyYXkgdGhhdCBjb250YWlucyBib3RoIG5hbWVzLCB3aGljaCBpcyB1c2VkIGluIG9uLWRpc2tcbiAgICogbWV0YWRhdGEgZm9ybWF0cyAoZS5nLiBpbiAuZC50cyBmaWxlcykuXG4gICAqL1xuICBzdGF0aWMgZnJvbU1hcHBlZE9iamVjdChvYmo6IHtcbiAgICBbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV8W0NsYXNzUHJvcGVydHlOYW1lLCBCaW5kaW5nUHJvcGVydHlOYW1lXVxuICB9KTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcge1xuICAgIGNvbnN0IGZvcndhcmRNYXAgPSBuZXcgTWFwPENsYXNzUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0PigpO1xuXG4gICAgZm9yIChjb25zdCBjbGFzc1Byb3BlcnR5TmFtZSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtjbGFzc1Byb3BlcnR5TmFtZV07XG4gICAgICBjb25zdCBiaW5kaW5nUHJvcGVydHlOYW1lID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlO1xuICAgICAgY29uc3QgaW5wdXRPck91dHB1dDogSW5wdXRPck91dHB1dCA9IHtjbGFzc1Byb3BlcnR5TmFtZSwgYmluZGluZ1Byb3BlcnR5TmFtZX07XG4gICAgICBmb3J3YXJkTWFwLnNldChjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDbGFzc1Byb3BlcnR5TWFwcGluZyhmb3J3YXJkTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSB0d28gbWFwcGluZ3MgaW50byBvbmUsIHdpdGggY2xhc3MgcHJvcGVydGllcyBmcm9tIGBiYCB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIGNsYXNzXG4gICAqIHByb3BlcnRpZXMgZnJvbSBgYWAuXG4gICAqL1xuICBzdGF0aWMgbWVyZ2UoYTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcsIGI6IENsYXNzUHJvcGVydHlNYXBwaW5nKTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcge1xuICAgIGNvbnN0IGZvcndhcmRNYXAgPSBuZXcgTWFwPENsYXNzUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0PihhLmZvcndhcmRNYXAuZW50cmllcygpKTtcbiAgICBmb3IgKGNvbnN0IFtjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dF0gb2YgYi5mb3J3YXJkTWFwKSB7XG4gICAgICBmb3J3YXJkTWFwLnNldChjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDbGFzc1Byb3BlcnR5TWFwcGluZyhmb3J3YXJkTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgY2xhc3MgcHJvcGVydHkgbmFtZXMgbWFwcGVkIGluIHRoaXMgbWFwcGluZy5cbiAgICovXG4gIGdldCBjbGFzc1Byb3BlcnR5TmFtZXMoKTogQ2xhc3NQcm9wZXJ0eU5hbWVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mb3J3YXJkTWFwLmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGJpbmRpbmcgcHJvcGVydHkgbmFtZXMgbWFwcGVkIGluIHRoaXMgbWFwcGluZy5cbiAgICovXG4gIGdldCBwcm9wZXJ0eU5hbWVzKCk6IEJpbmRpbmdQcm9wZXJ0eU5hbWVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5yZXZlcnNlTWFwLmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIG1hcHBpbmcgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSBuYW1lIGV4aXN0cy5cbiAgICovXG4gIGhhc0JpbmRpbmdQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lOiBCaW5kaW5nUHJvcGVydHlOYW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmV2ZXJzZU1hcC5oYXMocHJvcGVydHlOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rdXAgYWxsIGBJbnB1dE9yT3V0cHV0YHMgdGhhdCB1c2UgdGhpcyBgcHJvcGVydHlOYW1lYC5cbiAgICovXG4gIGdldEJ5QmluZGluZ1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFJlYWRvbmx5QXJyYXk8SW5wdXRPck91dHB1dD58bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmV2ZXJzZU1hcC5oYXMocHJvcGVydHlOYW1lKSA/IHRoaXMucmV2ZXJzZU1hcC5nZXQocHJvcGVydHlOYW1lKSEgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2t1cCB0aGUgYElucHV0T3JPdXRwdXRgIGFzc29jaWF0ZWQgd2l0aCBhIGBjbGFzc1Byb3BlcnR5TmFtZWAuXG4gICAqL1xuICBnZXRCeUNsYXNzUHJvcGVydHlOYW1lKGNsYXNzUHJvcGVydHlOYW1lOiBzdHJpbmcpOiBJbnB1dE9yT3V0cHV0fG51bGwge1xuICAgIHJldHVybiB0aGlzLmZvcndhcmRNYXAuaGFzKGNsYXNzUHJvcGVydHlOYW1lKSA/IHRoaXMuZm9yd2FyZE1hcC5nZXQoY2xhc3NQcm9wZXJ0eU5hbWUpISA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIG1hcHBpbmcgdG8gYSBwcmltaXRpdmUgSlMgb2JqZWN0IHdoaWNoIG1hcHMgZWFjaCBjbGFzcyBwcm9wZXJ0eSBkaXJlY3RseSB0byB0aGVcbiAgICogYmluZGluZyBwcm9wZXJ0eSBuYW1lIGFzc29jaWF0ZWQgd2l0aCBpdC5cbiAgICovXG4gIHRvRGlyZWN0TWFwcGVkT2JqZWN0KCk6IHtbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV9IHtcbiAgICBjb25zdCBvYmo6IHtbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV9ID0ge307XG4gICAgZm9yIChjb25zdCBbY2xhc3NQcm9wZXJ0eU5hbWUsIGlucHV0T3JPdXRwdXRdIG9mIHRoaXMuZm9yd2FyZE1hcCkge1xuICAgICAgb2JqW2NsYXNzUHJvcGVydHlOYW1lXSA9IGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgbWFwcGluZyB0byBhIHByaW1pdGl2ZSBKUyBvYmplY3Qgd2hpY2ggbWFwcyBlYWNoIGNsYXNzIHByb3BlcnR5IGVpdGhlciB0byBpdHNlbGZcbiAgICogKGZvciBjYXNlcyB3aGVyZSB0aGUgYmluZGluZyBwcm9wZXJ0eSBuYW1lIGlzIHRoZSBzYW1lKSBvciB0byBhbiBhcnJheSB3aGljaCBjb250YWlucyBib3RoXG4gICAqIG5hbWVzIGlmIHRoZXkgZGlmZmVyLlxuICAgKlxuICAgKiBUaGlzIG9iamVjdCBmb3JtYXQgaXMgdXNlZCB3aGVuIG1hcHBpbmdzIGFyZSBzZXJpYWxpemVkIChmb3IgZXhhbXBsZSBpbnRvIC5kLnRzIGZpbGVzKS5cbiAgICovXG4gIHRvSm9pbnRNYXBwZWRPYmplY3QoKTpcbiAgICAgIHtbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV8W0JpbmRpbmdQcm9wZXJ0eU5hbWUsIENsYXNzUHJvcGVydHlOYW1lXX0ge1xuICAgIGNvbnN0IG9iajoge1xuICAgICAgW2NsYXNzUHJvcGVydHlOYW1lOiBzdHJpbmddOiBCaW5kaW5nUHJvcGVydHlOYW1lfFtCaW5kaW5nUHJvcGVydHlOYW1lLCBDbGFzc1Byb3BlcnR5TmFtZV1cbiAgICB9ID0ge307XG4gICAgZm9yIChjb25zdCBbY2xhc3NQcm9wZXJ0eU5hbWUsIGlucHV0T3JPdXRwdXRdIG9mIHRoaXMuZm9yd2FyZE1hcCkge1xuICAgICAgaWYgKGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSBhcyBzdHJpbmcgPT09IGNsYXNzUHJvcGVydHlOYW1lIGFzIHN0cmluZykge1xuICAgICAgICBvYmpbY2xhc3NQcm9wZXJ0eU5hbWVdID0gaW5wdXRPck91dHB1dC5iaW5kaW5nUHJvcGVydHlOYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqW2NsYXNzUHJvcGVydHlOYW1lXSA9IFtpbnB1dE9yT3V0cHV0LmJpbmRpbmdQcm9wZXJ0eU5hbWUsIGNsYXNzUHJvcGVydHlOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sIGFuZCByZXR1cm4gZW50cnkgb2JqZWN0cyB3aGljaCBjb250YWluIHRoZSBjbGFzcyBhbmQgYmluZGluZ1xuICAgKiBwcm9wZXJ0eSBuYW1lcyAoYW5kIGFyZSB1c2VmdWwgZm9yIGRlc3RydWN0dXJpbmcpLlxuICAgKi9cbiAgKiBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFtDbGFzc1Byb3BlcnR5TmFtZSwgQmluZGluZ1Byb3BlcnR5TmFtZV0+IHtcbiAgICBmb3IgKGNvbnN0IFtjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dF0gb2YgdGhpcy5mb3J3YXJkTWFwLmVudHJpZXMoKSkge1xuICAgICAgeWllbGQgW2NsYXNzUHJvcGVydHlOYW1lLCBpbnB1dE9yT3V0cHV0LmJpbmRpbmdQcm9wZXJ0eU5hbWVdO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXZlcnNlTWFwRnJvbUZvcndhcmRNYXAoZm9yd2FyZE1hcDogTWFwPENsYXNzUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0Pik6XG4gICAgTWFwPEJpbmRpbmdQcm9wZXJ0eU5hbWUsIElucHV0T3JPdXRwdXRbXT4ge1xuICBjb25zdCByZXZlcnNlTWFwID0gbmV3IE1hcDxCaW5kaW5nUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0W10+KCk7XG4gIGZvciAoY29uc3QgW18sIGlucHV0T3JPdXRwdXRdIG9mIGZvcndhcmRNYXApIHtcbiAgICBpZiAoIXJldmVyc2VNYXAuaGFzKGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSkpIHtcbiAgICAgIHJldmVyc2VNYXAuc2V0KGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSwgW10pO1xuICAgIH1cblxuICAgIHJldmVyc2VNYXAuZ2V0KGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSkhLnB1c2goaW5wdXRPck91dHB1dCk7XG4gIH1cbiAgcmV0dXJuIHJldmVyc2VNYXA7XG59XG4iXX0=
@@ -1,80 +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 { hasInjectableFields } from './util';
9
- /**
10
- * A registry of directive, pipe, and module metadata for types defined in the current compilation
11
- * unit, which supports both reading and registering.
12
- */
13
- export class LocalMetadataRegistry {
14
- constructor() {
15
- this.directives = new Map();
16
- this.ngModules = new Map();
17
- this.pipes = new Map();
18
- }
19
- getDirectiveMetadata(ref) {
20
- return this.directives.has(ref.node) ? this.directives.get(ref.node) : null;
21
- }
22
- getNgModuleMetadata(ref) {
23
- return this.ngModules.has(ref.node) ? this.ngModules.get(ref.node) : null;
24
- }
25
- getPipeMetadata(ref) {
26
- return this.pipes.has(ref.node) ? this.pipes.get(ref.node) : null;
27
- }
28
- registerDirectiveMetadata(meta) {
29
- this.directives.set(meta.ref.node, meta);
30
- }
31
- registerNgModuleMetadata(meta) {
32
- this.ngModules.set(meta.ref.node, meta);
33
- }
34
- registerPipeMetadata(meta) {
35
- this.pipes.set(meta.ref.node, meta);
36
- }
37
- }
38
- /**
39
- * A `MetadataRegistry` which registers metdata with multiple delegate `MetadataRegistry` instances.
40
- */
41
- export class CompoundMetadataRegistry {
42
- constructor(registries) {
43
- this.registries = registries;
44
- }
45
- registerDirectiveMetadata(meta) {
46
- for (const registry of this.registries) {
47
- registry.registerDirectiveMetadata(meta);
48
- }
49
- }
50
- registerNgModuleMetadata(meta) {
51
- for (const registry of this.registries) {
52
- registry.registerNgModuleMetadata(meta);
53
- }
54
- }
55
- registerPipeMetadata(meta) {
56
- for (const registry of this.registries) {
57
- registry.registerPipeMetadata(meta);
58
- }
59
- }
60
- }
61
- /**
62
- * Registry that keeps track of classes that can be constructed via dependency injection (e.g.
63
- * injectables, directives, pipes).
64
- */
65
- export class InjectableClassRegistry {
66
- constructor(host) {
67
- this.host = host;
68
- this.classes = new Set();
69
- }
70
- registerInjectable(declaration) {
71
- this.classes.add(declaration);
72
- }
73
- isInjectable(declaration) {
74
- // Figure out whether the class is injectable based on the registered classes, otherwise
75
- // fall back to looking at its members since we might not have been able register the class
76
- // if it was compiled already.
77
- return this.classes.has(declaration) || hasInjectableFields(declaration, this.host);
78
- }
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL21ldGFkYXRhL3NyYy9yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFNSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFM0M7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjtJQUFsQztRQUNVLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFDdEQsVUFBSyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO0lBcUJ4RCxDQUFDO0lBbkJDLG9CQUFvQixDQUFDLEdBQWdDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvRSxDQUFDO0lBQ0QsbUJBQW1CLENBQUMsR0FBZ0M7UUFDbEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7SUFDRCxlQUFlLENBQUMsR0FBZ0M7UUFDOUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFtQjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsSUFBa0I7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELG9CQUFvQixDQUFDLElBQWM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFlBQW9CLFVBQThCO1FBQTlCLGVBQVUsR0FBVixVQUFVLENBQW9CO0lBQUcsQ0FBQztJQUV0RCx5QkFBeUIsQ0FBQyxJQUFtQjtRQUMzQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQWtCO1FBQ3pDLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN0QyxRQUFRLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBYztRQUNqQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUdsQyxZQUFvQixJQUFvQjtRQUFwQixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUZoQyxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7SUFFSCxDQUFDO0lBRTVDLGtCQUFrQixDQUFDLFdBQTZCO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLENBQUMsV0FBNkI7UUFDeEMsd0ZBQXdGO1FBQ3hGLDJGQUEyRjtRQUMzRiw4QkFBOEI7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuaW1wb3J0IHtEaXJlY3RpdmVNZXRhLCBNZXRhZGF0YVJlYWRlciwgTWV0YWRhdGFSZWdpc3RyeSwgTmdNb2R1bGVNZXRhLCBQaXBlTWV0YX0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHtoYXNJbmplY3RhYmxlRmllbGRzfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEEgcmVnaXN0cnkgb2YgZGlyZWN0aXZlLCBwaXBlLCBhbmQgbW9kdWxlIG1ldGFkYXRhIGZvciB0eXBlcyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uXG4gKiB1bml0LCB3aGljaCBzdXBwb3J0cyBib3RoIHJlYWRpbmcgYW5kIHJlZ2lzdGVyaW5nLlxuICovXG5leHBvcnQgY2xhc3MgTG9jYWxNZXRhZGF0YVJlZ2lzdHJ5IGltcGxlbWVudHMgTWV0YWRhdGFSZWdpc3RyeSwgTWV0YWRhdGFSZWFkZXIge1xuICBwcml2YXRlIGRpcmVjdGl2ZXMgPSBuZXcgTWFwPENsYXNzRGVjbGFyYXRpb24sIERpcmVjdGl2ZU1ldGE+KCk7XG4gIHByaXZhdGUgbmdNb2R1bGVzID0gbmV3IE1hcDxDbGFzc0RlY2xhcmF0aW9uLCBOZ01vZHVsZU1ldGE+KCk7XG4gIHByaXZhdGUgcGlwZXMgPSBuZXcgTWFwPENsYXNzRGVjbGFyYXRpb24sIFBpcGVNZXRhPigpO1xuXG4gIGdldERpcmVjdGl2ZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogRGlyZWN0aXZlTWV0YXxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmVzLmhhcyhyZWYubm9kZSkgPyB0aGlzLmRpcmVjdGl2ZXMuZ2V0KHJlZi5ub2RlKSEgOiBudWxsO1xuICB9XG4gIGdldE5nTW9kdWxlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBOZ01vZHVsZU1ldGF8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2R1bGVzLmhhcyhyZWYubm9kZSkgPyB0aGlzLm5nTW9kdWxlcy5nZXQocmVmLm5vZGUpISA6IG51bGw7XG4gIH1cbiAgZ2V0UGlwZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogUGlwZU1ldGF8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGlwZXMuaGFzKHJlZi5ub2RlKSA/IHRoaXMucGlwZXMuZ2V0KHJlZi5ub2RlKSEgOiBudWxsO1xuICB9XG5cbiAgcmVnaXN0ZXJEaXJlY3RpdmVNZXRhZGF0YShtZXRhOiBEaXJlY3RpdmVNZXRhKTogdm9pZCB7XG4gICAgdGhpcy5kaXJlY3RpdmVzLnNldChtZXRhLnJlZi5ub2RlLCBtZXRhKTtcbiAgfVxuICByZWdpc3Rlck5nTW9kdWxlTWV0YWRhdGEobWV0YTogTmdNb2R1bGVNZXRhKTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZHVsZXMuc2V0KG1ldGEucmVmLm5vZGUsIG1ldGEpO1xuICB9XG4gIHJlZ2lzdGVyUGlwZU1ldGFkYXRhKG1ldGE6IFBpcGVNZXRhKTogdm9pZCB7XG4gICAgdGhpcy5waXBlcy5zZXQobWV0YS5yZWYubm9kZSwgbWV0YSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGBNZXRhZGF0YVJlZ2lzdHJ5YCB3aGljaCByZWdpc3RlcnMgbWV0ZGF0YSB3aXRoIG11bHRpcGxlIGRlbGVnYXRlIGBNZXRhZGF0YVJlZ2lzdHJ5YCBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wb3VuZE1ldGFkYXRhUmVnaXN0cnkgaW1wbGVtZW50cyBNZXRhZGF0YVJlZ2lzdHJ5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWdpc3RyaWVzOiBNZXRhZGF0YVJlZ2lzdHJ5W10pIHt9XG5cbiAgcmVnaXN0ZXJEaXJlY3RpdmVNZXRhZGF0YShtZXRhOiBEaXJlY3RpdmVNZXRhKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCByZWdpc3RyeSBvZiB0aGlzLnJlZ2lzdHJpZXMpIHtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyRGlyZWN0aXZlTWV0YWRhdGEobWV0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJOZ01vZHVsZU1ldGFkYXRhKG1ldGE6IE5nTW9kdWxlTWV0YSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgcmVnaXN0cnkgb2YgdGhpcy5yZWdpc3RyaWVzKSB7XG4gICAgICByZWdpc3RyeS5yZWdpc3Rlck5nTW9kdWxlTWV0YWRhdGEobWV0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJQaXBlTWV0YWRhdGEobWV0YTogUGlwZU1ldGEpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHJlZ2lzdHJ5IG9mIHRoaXMucmVnaXN0cmllcykge1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXJQaXBlTWV0YWRhdGEobWV0YSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVnaXN0cnkgdGhhdCBrZWVwcyB0cmFjayBvZiBjbGFzc2VzIHRoYXQgY2FuIGJlIGNvbnN0cnVjdGVkIHZpYSBkZXBlbmRlbmN5IGluamVjdGlvbiAoZS5nLlxuICogaW5qZWN0YWJsZXMsIGRpcmVjdGl2ZXMsIHBpcGVzKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdGFibGVDbGFzc1JlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBjbGFzc2VzID0gbmV3IFNldDxDbGFzc0RlY2xhcmF0aW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdDogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgcmVnaXN0ZXJJbmplY3RhYmxlKGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jbGFzc2VzLmFkZChkZWNsYXJhdGlvbik7XG4gIH1cblxuICBpc0luamVjdGFibGUoZGVjbGFyYXRpb246IENsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgICAvLyBGaWd1cmUgb3V0IHdoZXRoZXIgdGhlIGNsYXNzIGlzIGluamVjdGFibGUgYmFzZWQgb24gdGhlIHJlZ2lzdGVyZWQgY2xhc3Nlcywgb3RoZXJ3aXNlXG4gICAgLy8gZmFsbCBiYWNrIHRvIGxvb2tpbmcgYXQgaXRzIG1lbWJlcnMgc2luY2Ugd2UgbWlnaHQgbm90IGhhdmUgYmVlbiBhYmxlIHJlZ2lzdGVyIHRoZSBjbGFzc1xuICAgIC8vIGlmIGl0IHdhcyBjb21waWxlZCBhbHJlYWR5LlxuICAgIHJldHVybiB0aGlzLmNsYXNzZXMuaGFzKGRlY2xhcmF0aW9uKSB8fCBoYXNJbmplY3RhYmxlRmllbGRzKGRlY2xhcmF0aW9uLCB0aGlzLmhvc3QpO1xuICB9XG59XG4iXX0=
@@ -1,81 +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 function isExternalResource(resource) {
9
- return resource.path !== null;
10
- }
11
- /**
12
- * Tracks the mapping between external template/style files and the component(s) which use them.
13
- *
14
- * This information is produced during analysis of the program and is used mainly to support
15
- * external tooling, for which such a mapping is challenging to determine without compiler
16
- * assistance.
17
- */
18
- export class ResourceRegistry {
19
- constructor() {
20
- this.externalTemplateToComponentsMap = new Map();
21
- this.componentToTemplateMap = new Map();
22
- this.componentToStylesMap = new Map();
23
- this.externalStyleToComponentsMap = new Map();
24
- }
25
- getComponentsWithTemplate(template) {
26
- if (!this.externalTemplateToComponentsMap.has(template)) {
27
- return new Set();
28
- }
29
- return this.externalTemplateToComponentsMap.get(template);
30
- }
31
- registerResources(resources, component) {
32
- if (resources.template !== null) {
33
- this.registerTemplate(resources.template, component);
34
- }
35
- for (const style of resources.styles) {
36
- this.registerStyle(style, component);
37
- }
38
- }
39
- registerTemplate(templateResource, component) {
40
- const { path } = templateResource;
41
- if (path !== null) {
42
- if (!this.externalTemplateToComponentsMap.has(path)) {
43
- this.externalTemplateToComponentsMap.set(path, new Set());
44
- }
45
- this.externalTemplateToComponentsMap.get(path).add(component);
46
- }
47
- this.componentToTemplateMap.set(component, templateResource);
48
- }
49
- getTemplate(component) {
50
- if (!this.componentToTemplateMap.has(component)) {
51
- return null;
52
- }
53
- return this.componentToTemplateMap.get(component);
54
- }
55
- registerStyle(styleResource, component) {
56
- const { path } = styleResource;
57
- if (!this.componentToStylesMap.has(component)) {
58
- this.componentToStylesMap.set(component, new Set());
59
- }
60
- if (path !== null) {
61
- if (!this.externalStyleToComponentsMap.has(path)) {
62
- this.externalStyleToComponentsMap.set(path, new Set());
63
- }
64
- this.externalStyleToComponentsMap.get(path).add(component);
65
- }
66
- this.componentToStylesMap.get(component).add(styleResource);
67
- }
68
- getStyles(component) {
69
- if (!this.componentToStylesMap.has(component)) {
70
- return new Set();
71
- }
72
- return this.componentToStylesMap.get(component);
73
- }
74
- getComponentsWithStyle(styleUrl) {
75
- if (!this.externalStyleToComponentsMap.has(styleUrl)) {
76
- return new Set();
77
- }
78
- return this.externalStyleToComponentsMap.get(styleUrl);
79
- }
80
- }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VfcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL21ldGFkYXRhL3NyYy9yZXNvdXJjZV9yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUF1QkgsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFFBQWtCO0lBQ25ELE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQztBQVlEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFBN0I7UUFDVSxvQ0FBK0IsR0FBRyxJQUFJLEdBQUcsRUFBeUMsQ0FBQztRQUNuRiwyQkFBc0IsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUMvRCx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUNsRSxpQ0FBNEIsR0FBRyxJQUFJLEdBQUcsRUFBeUMsQ0FBQztJQWlFMUYsQ0FBQztJQS9EQyx5QkFBeUIsQ0FBQyxRQUF3QjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2RCxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7U0FDbEI7UUFFRCxPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQTZCLEVBQUUsU0FBMkI7UUFDMUUsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN0RDtRQUNELEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxnQkFBMEIsRUFBRSxTQUEyQjtRQUN0RSxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFDaEMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDM0Q7WUFDRCxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRTtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUEyQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMvQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxhQUFhLENBQUMsYUFBdUIsRUFBRSxTQUEyQjtRQUNoRSxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsYUFBYSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztTQUNyRDtRQUNELElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3hEO1lBQ0QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDN0Q7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQTJCO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdDLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUNsQjtRQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBd0I7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEQsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO0lBQzFELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9ufSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIHJlc291cmNlIGZvciBhIGNvbXBvbmVudCBhbmQgY29udGFpbnMgdGhlIGBBYnNvbHV0ZUZzUGF0aGBcbiAqIHRvIHRoZSBmaWxlIHdoaWNoIHdhcyByZXNvbHZlZCBieSBldmFsdWF0aW5nIHRoZSBgdHMuRXhwcmVzc2lvbmAgKGdlbmVyYWxseSwgYSByZWxhdGl2ZSBvclxuICogYWJzb2x1dGUgc3RyaW5nIHBhdGggdG8gdGhlIHJlc291cmNlKS5cbiAqXG4gKiBJZiB0aGUgcmVzb3VyY2UgaXMgaW5saW5lLCB0aGUgYHBhdGhgIHdpbGwgYmUgYG51bGxgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgcGF0aDogQWJzb2x1dGVGc1BhdGh8bnVsbDtcbiAgZXhwcmVzc2lvbjogdHMuRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbFJlc291cmNlIGV4dGVuZHMgUmVzb3VyY2Uge1xuICBwYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxSZXNvdXJjZShyZXNvdXJjZTogUmVzb3VyY2UpOiByZXNvdXJjZSBpcyBFeHRlcm5hbFJlc291cmNlIHtcbiAgcmV0dXJuIHJlc291cmNlLnBhdGggIT09IG51bGw7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZWl0aGVyIGlubGluZSBvciBleHRlcm5hbCByZXNvdXJjZXMgb2YgYSBjb21wb25lbnQuXG4gKlxuICogQSByZXNvdXJjZSB3aXRoIGEgYHBhdGhgIG9mIGBudWxsYCBpcyBjb25zaWRlcmVkIGlubGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRSZXNvdXJjZXMge1xuICB0ZW1wbGF0ZTogUmVzb3VyY2U7XG4gIHN0eWxlczogUmVhZG9ubHlTZXQ8UmVzb3VyY2U+O1xufVxuXG4vKipcbiAqIFRyYWNrcyB0aGUgbWFwcGluZyBiZXR3ZWVuIGV4dGVybmFsIHRlbXBsYXRlL3N0eWxlIGZpbGVzIGFuZCB0aGUgY29tcG9uZW50KHMpIHdoaWNoIHVzZSB0aGVtLlxuICpcbiAqIFRoaXMgaW5mb3JtYXRpb24gaXMgcHJvZHVjZWQgZHVyaW5nIGFuYWx5c2lzIG9mIHRoZSBwcm9ncmFtIGFuZCBpcyB1c2VkIG1haW5seSB0byBzdXBwb3J0XG4gKiBleHRlcm5hbCB0b29saW5nLCBmb3Igd2hpY2ggc3VjaCBhIG1hcHBpbmcgaXMgY2hhbGxlbmdpbmcgdG8gZGV0ZXJtaW5lIHdpdGhvdXQgY29tcGlsZXJcbiAqIGFzc2lzdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBleHRlcm5hbFRlbXBsYXRlVG9Db21wb25lbnRzTWFwID0gbmV3IE1hcDxBYnNvbHV0ZUZzUGF0aCwgU2V0PENsYXNzRGVjbGFyYXRpb24+PigpO1xuICBwcml2YXRlIGNvbXBvbmVudFRvVGVtcGxhdGVNYXAgPSBuZXcgTWFwPENsYXNzRGVjbGFyYXRpb24sIFJlc291cmNlPigpO1xuICBwcml2YXRlIGNvbXBvbmVudFRvU3R5bGVzTWFwID0gbmV3IE1hcDxDbGFzc0RlY2xhcmF0aW9uLCBTZXQ8UmVzb3VyY2U+PigpO1xuICBwcml2YXRlIGV4dGVybmFsU3R5bGVUb0NvbXBvbmVudHNNYXAgPSBuZXcgTWFwPEFic29sdXRlRnNQYXRoLCBTZXQ8Q2xhc3NEZWNsYXJhdGlvbj4+KCk7XG5cbiAgZ2V0Q29tcG9uZW50c1dpdGhUZW1wbGF0ZSh0ZW1wbGF0ZTogQWJzb2x1dGVGc1BhdGgpOiBSZWFkb25seVNldDxDbGFzc0RlY2xhcmF0aW9uPiB7XG4gICAgaWYgKCF0aGlzLmV4dGVybmFsVGVtcGxhdGVUb0NvbXBvbmVudHNNYXAuaGFzKHRlbXBsYXRlKSkge1xuICAgICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leHRlcm5hbFRlbXBsYXRlVG9Db21wb25lbnRzTWFwLmdldCh0ZW1wbGF0ZSkhO1xuICB9XG5cbiAgcmVnaXN0ZXJSZXNvdXJjZXMocmVzb3VyY2VzOiBDb21wb25lbnRSZXNvdXJjZXMsIGNvbXBvbmVudDogQ2xhc3NEZWNsYXJhdGlvbikge1xuICAgIGlmIChyZXNvdXJjZXMudGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJUZW1wbGF0ZShyZXNvdXJjZXMudGVtcGxhdGUsIGNvbXBvbmVudCk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc3R5bGUgb2YgcmVzb3VyY2VzLnN0eWxlcykge1xuICAgICAgdGhpcy5yZWdpc3RlclN0eWxlKHN0eWxlLCBjb21wb25lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyVGVtcGxhdGUodGVtcGxhdGVSZXNvdXJjZTogUmVzb3VyY2UsIGNvbXBvbmVudDogQ2xhc3NEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHtwYXRofSA9IHRlbXBsYXRlUmVzb3VyY2U7XG4gICAgaWYgKHBhdGggIT09IG51bGwpIHtcbiAgICAgIGlmICghdGhpcy5leHRlcm5hbFRlbXBsYXRlVG9Db21wb25lbnRzTWFwLmhhcyhwYXRoKSkge1xuICAgICAgICB0aGlzLmV4dGVybmFsVGVtcGxhdGVUb0NvbXBvbmVudHNNYXAuc2V0KHBhdGgsIG5ldyBTZXQoKSk7XG4gICAgICB9XG4gICAgICB0aGlzLmV4dGVybmFsVGVtcGxhdGVUb0NvbXBvbmVudHNNYXAuZ2V0KHBhdGgpIS5hZGQoY29tcG9uZW50KTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRUb1RlbXBsYXRlTWFwLnNldChjb21wb25lbnQsIHRlbXBsYXRlUmVzb3VyY2UpO1xuICB9XG5cbiAgZ2V0VGVtcGxhdGUoY29tcG9uZW50OiBDbGFzc0RlY2xhcmF0aW9uKTogUmVzb3VyY2V8bnVsbCB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFRvVGVtcGxhdGVNYXAuaGFzKGNvbXBvbmVudCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRUb1RlbXBsYXRlTWFwLmdldChjb21wb25lbnQpITtcbiAgfVxuXG4gIHJlZ2lzdGVyU3R5bGUoc3R5bGVSZXNvdXJjZTogUmVzb3VyY2UsIGNvbXBvbmVudDogQ2xhc3NEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHtwYXRofSA9IHN0eWxlUmVzb3VyY2U7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFRvU3R5bGVzTWFwLmhhcyhjb21wb25lbnQpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFRvU3R5bGVzTWFwLnNldChjb21wb25lbnQsIG5ldyBTZXQoKSk7XG4gICAgfVxuICAgIGlmIChwYXRoICE9PSBudWxsKSB7XG4gICAgICBpZiAoIXRoaXMuZXh0ZXJuYWxTdHlsZVRvQ29tcG9uZW50c01hcC5oYXMocGF0aCkpIHtcbiAgICAgICAgdGhpcy5leHRlcm5hbFN0eWxlVG9Db21wb25lbnRzTWFwLnNldChwYXRoLCBuZXcgU2V0KCkpO1xuICAgICAgfVxuICAgICAgdGhpcy5leHRlcm5hbFN0eWxlVG9Db21wb25lbnRzTWFwLmdldChwYXRoKSEuYWRkKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50VG9TdHlsZXNNYXAuZ2V0KGNvbXBvbmVudCkhLmFkZChzdHlsZVJlc291cmNlKTtcbiAgfVxuXG4gIGdldFN0eWxlcyhjb21wb25lbnQ6IENsYXNzRGVjbGFyYXRpb24pOiBTZXQ8UmVzb3VyY2U+IHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50VG9TdHlsZXNNYXAuaGFzKGNvbXBvbmVudCkpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFRvU3R5bGVzTWFwLmdldChjb21wb25lbnQpITtcbiAgfVxuXG4gIGdldENvbXBvbmVudHNXaXRoU3R5bGUoc3R5bGVVcmw6IEFic29sdXRlRnNQYXRoKTogUmVhZG9ubHlTZXQ8Q2xhc3NEZWNsYXJhdGlvbj4ge1xuICAgIGlmICghdGhpcy5leHRlcm5hbFN0eWxlVG9Db21wb25lbnRzTWFwLmhhcyhzdHlsZVVybCkpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXh0ZXJuYWxTdHlsZVRvQ29tcG9uZW50c01hcC5nZXQoc3R5bGVVcmwpITtcbiAgfVxufVxuIl19