@angular/compiler-cli 12.1.0 → 12.1.4

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 (459) hide show
  1. package/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
  2. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  3. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  4. package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
  5. package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
  6. package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
  7. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
  8. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
  9. package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
  10. package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
  11. package/ngcc/src/host/commonjs_host.js +1 -1
  12. package/ngcc/src/host/esm2015_host.js +1 -1
  13. package/ngcc/src/host/esm5_host.js +1 -1
  14. package/ngcc/src/host/umd_host.js +1 -1
  15. package/ngcc/src/packages/build_marker.d.ts +1 -1
  16. package/ngcc/src/packages/build_marker.js +1 -1
  17. package/ngcc/src/packages/entry_point_manifest.js +1 -1
  18. package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
  19. package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
  20. package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
  21. package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
  22. package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
  23. package/package.json +2 -2
  24. package/src/ngtsc/annotations/src/component.js +1 -1
  25. package/src/ngtsc/annotations/src/directive.js +1 -1
  26. package/src/ngtsc/annotations/src/ng_module.js +1 -1
  27. package/src/ngtsc/annotations/src/pipe.js +1 -1
  28. package/src/ngtsc/core/src/compiler.js +1 -1
  29. package/src/ngtsc/cycles/src/analyzer.d.ts +7 -0
  30. package/src/ngtsc/cycles/src/analyzer.js +89 -4
  31. package/src/ngtsc/cycles/src/imports.d.ts +1 -6
  32. package/src/ngtsc/cycles/src/imports.js +5 -23
  33. package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
  34. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  35. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  36. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  37. package/src/ngtsc/incremental/src/incremental.js +30 -4
  38. package/src/ngtsc/indexer/src/template.js +1 -1
  39. package/src/ngtsc/metadata/src/dts.js +4 -5
  40. package/src/ngtsc/metadata/src/util.d.ts +2 -2
  41. package/src/ngtsc/metadata/src/util.js +9 -6
  42. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  43. package/src/ngtsc/partial_evaluator/src/diagnostics.js +4 -1
  44. package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +19 -1
  45. package/src/ngtsc/partial_evaluator/src/dynamic.js +12 -4
  46. package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +2 -0
  47. package/src/ngtsc/partial_evaluator/src/interpreter.js +53 -5
  48. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  49. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  50. package/src/ngtsc/program_driver/src/api.js +3 -2
  51. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  52. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  53. package/src/ngtsc/reflection/src/typescript.js +4 -1
  54. package/src/ngtsc/transform/src/compilation.d.ts +5 -0
  55. package/src/ngtsc/transform/src/compilation.js +95 -72
  56. package/src/ngtsc/transform/src/transform.js +1 -1
  57. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  58. package/src/ngtsc/typecheck/src/context.js +11 -3
  59. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  60. package/src/ngtsc/typecheck/src/template_symbol_builder.js +21 -1
  61. package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
  62. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  63. package/src/ngtsc/typecheck/src/type_emitter.js +25 -6
  64. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  65. package/src/ngtsc/util/src/visitor.js +1 -8
  66. package/src/version.js +1 -1
  67. package/compiler-cli.externs.js +0 -0
  68. package/index.mjs +0 -20
  69. package/linker/babel/babel.externs.js +0 -0
  70. package/linker/babel/index.mjs +0 -11
  71. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  72. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  73. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  74. package/linker/babel/src/babel_plugin.mjs +0 -23
  75. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  76. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  77. package/linker/index.mjs +0 -7
  78. package/linker/linker.externs.js +0 -0
  79. package/linker/src/ast/ast_host.mjs +0 -9
  80. package/linker/src/ast/ast_value.mjs +0 -256
  81. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  82. package/linker/src/ast/utils.mjs +0 -17
  83. package/linker/src/fatal_linker_error.mjs +0 -30
  84. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  85. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  86. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  87. package/linker/src/file_linker/file_linker.mjs +0 -70
  88. package/linker/src/file_linker/get_source_file.mjs +0 -28
  89. package/linker/src/file_linker/linker_environment.mjs +0 -23
  90. package/linker/src/file_linker/linker_options.mjs +0 -16
  91. package/linker/src/file_linker/needs_linking.mjs +0 -27
  92. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  93. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  94. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  95. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  96. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  97. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  98. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  99. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  100. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  101. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  102. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  103. package/linker/src/file_linker/translator.mjs +0 -23
  104. package/linker/src/linker_import_generator.mjs +0 -28
  105. package/ngcc/index.mjs +0 -16
  106. package/ngcc/main-ivy-ngcc.mjs +0 -12
  107. package/ngcc/main-ngcc.mjs +0 -32
  108. package/ngcc/ngcc.externs.js +0 -0
  109. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  110. package/ngcc/src/analysis/migration_host.mjs +0 -80
  111. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  112. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  113. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  114. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  115. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  116. package/ngcc/src/analysis/types.mjs +0 -2
  117. package/ngcc/src/analysis/util.mjs +0 -19
  118. package/ngcc/src/command_line_options.mjs +0 -142
  119. package/ngcc/src/constants.mjs +0 -10
  120. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  121. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  122. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  123. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  124. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  125. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  126. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  127. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  128. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  129. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  130. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  131. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  132. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  133. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  134. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  135. package/ngcc/src/execution/api.mjs +0 -2
  136. package/ngcc/src/execution/cluster/api.mjs +0 -9
  137. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  138. package/ngcc/src/execution/cluster/master.mjs +0 -261
  139. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  140. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  141. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  142. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  143. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  144. package/ngcc/src/execution/tasks/api.mjs +0 -22
  145. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  146. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  147. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  148. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  149. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  150. package/ngcc/src/host/commonjs_host.mjs +0 -220
  151. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  152. package/ngcc/src/host/delegating_host.mjs +0 -140
  153. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  154. package/ngcc/src/host/esm5_host.mjs +0 -721
  155. package/ngcc/src/host/ngcc_host.mjs +0 -15
  156. package/ngcc/src/host/umd_host.mjs +0 -486
  157. package/ngcc/src/host/utils.mjs +0 -12
  158. package/ngcc/src/locking/async_locker.mjs +0 -76
  159. package/ngcc/src/locking/lock_file.mjs +0 -4
  160. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  161. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  162. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  163. package/ngcc/src/locking/sync_locker.mjs +0 -52
  164. package/ngcc/src/main.mjs +0 -134
  165. package/ngcc/src/migrations/migration.mjs +0 -2
  166. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  167. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  168. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  169. package/ngcc/src/migrations/utils.mjs +0 -117
  170. package/ngcc/src/ngcc_options.mjs +0 -119
  171. package/ngcc/src/packages/build_marker.mjs +0 -84
  172. package/ngcc/src/packages/bundle_program.mjs +0 -52
  173. package/ngcc/src/packages/configuration.mjs +0 -255
  174. package/ngcc/src/packages/entry_point.mjs +0 -239
  175. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  176. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  177. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  178. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  179. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  180. package/ngcc/src/packages/transformer.mjs +0 -140
  181. package/ngcc/src/path_mappings.mjs +0 -13
  182. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  183. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  184. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  185. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  186. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  187. package/ngcc/src/rendering/renderer.mjs +0 -170
  188. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  189. package/ngcc/src/rendering/source_maps.mjs +0 -54
  190. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  191. package/ngcc/src/rendering/utils.mjs +0 -20
  192. package/ngcc/src/utils.mjs +0 -144
  193. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  194. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  195. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  196. package/ngcc/src/writing/file_writer.mjs +0 -2
  197. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  198. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  199. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  200. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  201. package/src/diagnostics/typescript_version.mjs +0 -79
  202. package/src/extract_i18n.mjs +0 -46
  203. package/src/language_services.mjs +0 -18
  204. package/src/main.mjs +0 -185
  205. package/src/metadata/bundle_index_host.mjs +0 -107
  206. package/src/metadata/bundler.mjs +0 -556
  207. package/src/metadata/collector.mjs +0 -701
  208. package/src/metadata/evaluator.mjs +0 -643
  209. package/src/metadata/index.mjs +0 -11
  210. package/src/metadata/index_writer.mjs +0 -44
  211. package/src/metadata/schema.mjs +0 -102
  212. package/src/metadata/symbols.mjs +0 -117
  213. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  214. package/src/ngtsc/annotations/index.mjs +0 -15
  215. package/src/ngtsc/annotations/src/api.mjs +0 -9
  216. package/src/ngtsc/annotations/src/component.mjs +0 -1068
  217. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  218. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  219. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  220. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  221. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  222. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  223. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  224. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  225. package/src/ngtsc/annotations/src/util.mjs +0 -495
  226. package/src/ngtsc/core/api/index.mjs +0 -12
  227. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  228. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  229. package/src/ngtsc/core/api/src/options.mjs +0 -9
  230. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  231. package/src/ngtsc/core/api.externs.js +0 -0
  232. package/src/ngtsc/core/core.externs.js +0 -0
  233. package/src/ngtsc/core/index.mjs +0 -10
  234. package/src/ngtsc/core/src/compiler.mjs +0 -917
  235. package/src/ngtsc/core/src/config.mjs +0 -15
  236. package/src/ngtsc/core/src/host.mjs +0 -229
  237. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  238. package/src/ngtsc/cycles/index.mjs +0 -10
  239. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  240. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  241. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  242. package/src/ngtsc/diagnostics/index.mjs +0 -11
  243. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  244. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  245. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  246. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  247. package/src/ngtsc/entry_point/index.mjs +0 -12
  248. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  249. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  250. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  251. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  252. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  253. package/src/ngtsc/file_system/index.mjs +0 -13
  254. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  255. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  256. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  257. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  258. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  259. package/src/ngtsc/file_system/src/types.mjs +0 -9
  260. package/src/ngtsc/file_system/src/util.mjs +0 -22
  261. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  262. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  263. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  264. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  265. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  266. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  267. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  268. package/src/ngtsc/imports/imports.externs.js +0 -0
  269. package/src/ngtsc/imports/index.mjs +0 -14
  270. package/src/ngtsc/imports/src/alias.mjs +0 -137
  271. package/src/ngtsc/imports/src/core.mjs +0 -78
  272. package/src/ngtsc/imports/src/default.mjs +0 -135
  273. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  274. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  275. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  276. package/src/ngtsc/imports/src/references.mjs +0 -137
  277. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  278. package/src/ngtsc/incremental/api.externs.js +0 -0
  279. package/src/ngtsc/incremental/api.mjs +0 -9
  280. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  281. package/src/ngtsc/incremental/index.mjs +0 -12
  282. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  283. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  284. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  285. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  286. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  287. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  288. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  289. package/src/ngtsc/incremental/src/incremental.mjs +0 -271
  290. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  291. package/src/ngtsc/incremental/src/state.mjs +0 -17
  292. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  293. package/src/ngtsc/indexer/index.mjs +0 -11
  294. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  295. package/src/ngtsc/indexer/src/api.mjs +0 -30
  296. package/src/ngtsc/indexer/src/context.mjs +0 -25
  297. package/src/ngtsc/indexer/src/template.mjs +0 -303
  298. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  299. package/src/ngtsc/logging/index.mjs +0 -10
  300. package/src/ngtsc/logging/logging.externs.js +0 -0
  301. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  302. package/src/ngtsc/logging/src/logger.mjs +0 -15
  303. package/src/ngtsc/logging/testing/index.mjs +0 -9
  304. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  305. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  306. package/src/ngtsc/metadata/index.mjs +0 -15
  307. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  308. package/src/ngtsc/metadata/src/api.mjs +0 -13
  309. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  310. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  311. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  312. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  313. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  314. package/src/ngtsc/metadata/src/util.mjs +0 -200
  315. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  316. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  317. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  318. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -171
  319. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -86
  320. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  321. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -683
  322. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  323. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  324. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  325. package/src/ngtsc/perf/index.mjs +0 -11
  326. package/src/ngtsc/perf/perf.externs.js +0 -0
  327. package/src/ngtsc/perf/src/api.mjs +0 -278
  328. package/src/ngtsc/perf/src/clock.mjs +0 -15
  329. package/src/ngtsc/perf/src/noop.mjs +0 -21
  330. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  331. package/src/ngtsc/program.mjs +0 -271
  332. package/src/ngtsc/program_driver/index.mjs +0 -10
  333. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  334. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  335. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  336. package/src/ngtsc/reflection/index.mjs +0 -12
  337. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  338. package/src/ngtsc/reflection/src/host.mjs +0 -73
  339. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  340. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  341. package/src/ngtsc/reflection/src/util.mjs +0 -21
  342. package/src/ngtsc/resource/index.mjs +0 -9
  343. package/src/ngtsc/resource/resource.externs.js +0 -0
  344. package/src/ngtsc/resource/src/loader.mjs +0 -242
  345. package/src/ngtsc/routing/index.mjs +0 -11
  346. package/src/ngtsc/routing/routing.externs.js +0 -0
  347. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  348. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  349. package/src/ngtsc/routing/src/route.mjs +0 -51
  350. package/src/ngtsc/scope/index.mjs +0 -12
  351. package/src/ngtsc/scope/scope.externs.js +0 -0
  352. package/src/ngtsc/scope/src/api.mjs +0 -9
  353. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  354. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  355. package/src/ngtsc/scope/src/local.mjs +0 -531
  356. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  357. package/src/ngtsc/shims/api.externs.js +0 -0
  358. package/src/ngtsc/shims/api.mjs +0 -2
  359. package/src/ngtsc/shims/index.mjs +0 -14
  360. package/src/ngtsc/shims/shims.externs.js +0 -0
  361. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  362. package/src/ngtsc/shims/src/expando.mjs +0 -102
  363. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  364. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  365. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  366. package/src/ngtsc/shims/src/util.mjs +0 -26
  367. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  368. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  369. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  370. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  371. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  372. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  373. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  374. package/src/ngtsc/switch/index.mjs +0 -9
  375. package/src/ngtsc/switch/src/switch.mjs +0 -115
  376. package/src/ngtsc/switch/switch.externs.js +0 -0
  377. package/src/ngtsc/transform/index.mjs +0 -14
  378. package/src/ngtsc/transform/src/alias.mjs +0 -30
  379. package/src/ngtsc/transform/src/api.mjs +0 -63
  380. package/src/ngtsc/transform/src/compilation.mjs +0 -514
  381. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  382. package/src/ngtsc/transform/src/trait.mjs +0 -95
  383. package/src/ngtsc/transform/src/transform.mjs +0 -298
  384. package/src/ngtsc/transform/src/utils.mjs +0 -57
  385. package/src/ngtsc/transform/transform.externs.js +0 -0
  386. package/src/ngtsc/translator/index.mjs +0 -14
  387. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  388. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  389. package/src/ngtsc/translator/src/context.mjs +0 -24
  390. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  391. package/src/ngtsc/translator/src/translator.mjs +0 -317
  392. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  393. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  394. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  395. package/src/ngtsc/translator/translator.externs.js +0 -0
  396. package/src/ngtsc/tsc_plugin.mjs +0 -98
  397. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  398. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  399. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  400. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  401. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  402. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  403. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  404. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  405. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  406. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  407. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  408. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  409. package/src/ngtsc/typecheck/index.mjs +0 -12
  410. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  411. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  412. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  413. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  414. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  415. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  416. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  417. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  418. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  419. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  420. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  421. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  422. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  423. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  424. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -485
  425. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  426. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  427. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  428. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  429. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -127
  430. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -93
  431. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  432. package/src/ngtsc/util/src/path.mjs +0 -18
  433. package/src/ngtsc/util/src/typescript.mjs +0 -143
  434. package/src/ngtsc/util/src/visitor.mjs +0 -107
  435. package/src/ngtsc/util/util.externs.js +0 -0
  436. package/src/ngtsc/xi18n/index.mjs +0 -9
  437. package/src/ngtsc/xi18n/src/context.mjs +0 -9
  438. package/src/ngtsc/xi18n/xi18n.externs.js +0 -0
  439. package/src/perform_compile.mjs +0 -275
  440. package/src/perform_watch.mjs +0 -247
  441. package/src/tooling.mjs +0 -32
  442. package/src/transformers/api.mjs +0 -27
  443. package/src/transformers/compiler_host.mjs +0 -593
  444. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  445. package/src/transformers/entry_points.mjs +0 -10
  446. package/src/transformers/i18n.mjs +0 -59
  447. package/src/transformers/inline_resources.mjs +0 -269
  448. package/src/transformers/lower_expressions.mjs +0 -336
  449. package/src/transformers/metadata_cache.mjs +0 -53
  450. package/src/transformers/metadata_reader.mjs +0 -104
  451. package/src/transformers/node_emitter.mjs +0 -606
  452. package/src/transformers/node_emitter_transform.mjs +0 -78
  453. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  454. package/src/transformers/program.mjs +0 -887
  455. package/src/transformers/r3_metadata_transform.mjs +0 -46
  456. package/src/transformers/r3_transform.mjs +0 -29
  457. package/src/transformers/util.mjs +0 -89
  458. package/src/typescript_support.mjs +0 -57
  459. package/src/version.mjs +0 -15
@@ -1,65 +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 { join } from '../../file_system';
10
- import { NoopImportRewriter } from '../../imports';
11
- import { ImportManager } from '../../translator';
12
- import { Environment } from './environment';
13
- import { generateTypeCheckBlock } from './type_check_block';
14
- /**
15
- * An `Environment` representing the single type-checking file into which most (if not all) Type
16
- * Check Blocks (TCBs) will be generated.
17
- *
18
- * The `TypeCheckFile` hosts multiple TCBs and allows the sharing of declarations (e.g. type
19
- * constructors) between them. Rather than return such declarations via `getPreludeStatements()`, it
20
- * hoists them to the top of the generated `ts.SourceFile`.
21
- */
22
- export class TypeCheckFile extends Environment {
23
- constructor(fileName, config, refEmitter, reflector, compilerHost) {
24
- super(config, new ImportManager(new NoopImportRewriter(), 'i'), refEmitter, reflector, ts.createSourceFile(compilerHost.getCanonicalFileName(fileName), '', ts.ScriptTarget.Latest, true));
25
- this.fileName = fileName;
26
- this.nextTcbId = 1;
27
- this.tcbStatements = [];
28
- }
29
- addTypeCheckBlock(ref, meta, domSchemaChecker, oobRecorder, genericContextBehavior) {
30
- const fnId = ts.createIdentifier(`_tcb${this.nextTcbId++}`);
31
- const fn = generateTypeCheckBlock(this, ref, fnId, meta, domSchemaChecker, oobRecorder, genericContextBehavior);
32
- this.tcbStatements.push(fn);
33
- }
34
- render(removeComments) {
35
- let source = this.importManager.getAllImports(this.contextFile.fileName)
36
- .map(i => `import * as ${i.qualifier.text} from '${i.specifier}';`)
37
- .join('\n') +
38
- '\n\n';
39
- const printer = ts.createPrinter({ removeComments });
40
- source += '\n';
41
- for (const stmt of this.pipeInstStatements) {
42
- source += printer.printNode(ts.EmitHint.Unspecified, stmt, this.contextFile) + '\n';
43
- }
44
- for (const stmt of this.typeCtorStatements) {
45
- source += printer.printNode(ts.EmitHint.Unspecified, stmt, this.contextFile) + '\n';
46
- }
47
- source += '\n';
48
- for (const stmt of this.tcbStatements) {
49
- source += printer.printNode(ts.EmitHint.Unspecified, stmt, this.contextFile) + '\n';
50
- }
51
- // Ensure the template type-checking file is an ES module. Otherwise, it's interpreted as some
52
- // kind of global namespace in TS, which forces a full re-typecheck of the user's program that
53
- // is somehow more expensive than the initial parse.
54
- source += '\nexport const IS_A_MODULE = true;\n';
55
- return source;
56
- }
57
- getPreludeStatements() {
58
- return [];
59
- }
60
- }
61
- export function typeCheckFilePath(rootDirs) {
62
- const shortest = rootDirs.concat([]).sort((a, b) => a.length - b.length)[0];
63
- return join(shortest, '__ng_typecheck__.ts');
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9jaGVja19maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3R5cGVfY2hlY2tfZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQWlCLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBOEIsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBSS9DLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFDLHNCQUFzQixFQUE0QixNQUFNLG9CQUFvQixDQUFDO0FBSXJGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFdBQVc7SUFJNUMsWUFDYSxRQUF3QixFQUFFLE1BQTBCLEVBQUUsVUFBNEIsRUFDM0YsU0FBeUIsRUFBRSxZQUEyRDtRQUN4RixLQUFLLENBQ0QsTUFBTSxFQUFFLElBQUksYUFBYSxDQUFDLElBQUksa0JBQWtCLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUMvRSxFQUFFLENBQUMsZ0JBQWdCLENBQ2YsWUFBWSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBTDdFLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBSjdCLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFTM0MsQ0FBQztJQUVELGlCQUFpQixDQUNiLEdBQXFELEVBQUUsSUFBNEIsRUFDbkYsZ0JBQWtDLEVBQUUsV0FBd0MsRUFDNUUsc0JBQWlEO1FBQ25ELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxFQUFFLEdBQUcsc0JBQXNCLENBQzdCLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQXVCO1FBQzVCLElBQUksTUFBTSxHQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2FBQ3RELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDO2FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDaEMsTUFBTSxDQUFDO1FBQ1gsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFDLGNBQWMsRUFBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxJQUFJLElBQUksQ0FBQztRQUNmLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFDLE1BQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3JGO1FBQ0QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDckY7UUFDRCxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3JGO1FBRUQsOEZBQThGO1FBQzlGLDhGQUE4RjtRQUM5RixvREFBb0Q7UUFDcEQsTUFBTSxJQUFJLHNDQUFzQyxDQUFDO1FBRWpELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBMEI7SUFDMUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgam9pbn0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtOb29wSW1wb3J0UmV3cml0ZXIsIFJlZmVyZW5jZSwgUmVmZXJlbmNlRW1pdHRlcn0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcbmltcG9ydCB7SW1wb3J0TWFuYWdlcn0gZnJvbSAnLi4vLi4vdHJhbnNsYXRvcic7XG5pbXBvcnQge1R5cGVDaGVja0Jsb2NrTWV0YWRhdGEsIFR5cGVDaGVja2luZ0NvbmZpZ30gZnJvbSAnLi4vYXBpJztcblxuaW1wb3J0IHtEb21TY2hlbWFDaGVja2VyfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQge0Vudmlyb25tZW50fSBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7T3V0T2ZCYW5kRGlhZ25vc3RpY1JlY29yZGVyfSBmcm9tICcuL29vYic7XG5pbXBvcnQge2dlbmVyYXRlVHlwZUNoZWNrQmxvY2ssIFRjYkdlbmVyaWNDb250ZXh0QmVoYXZpb3J9IGZyb20gJy4vdHlwZV9jaGVja19ibG9jayc7XG5cblxuXG4vKipcbiAqIEFuIGBFbnZpcm9ubWVudGAgcmVwcmVzZW50aW5nIHRoZSBzaW5nbGUgdHlwZS1jaGVja2luZyBmaWxlIGludG8gd2hpY2ggbW9zdCAoaWYgbm90IGFsbCkgVHlwZVxuICogQ2hlY2sgQmxvY2tzIChUQ0JzKSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAqXG4gKiBUaGUgYFR5cGVDaGVja0ZpbGVgIGhvc3RzIG11bHRpcGxlIFRDQnMgYW5kIGFsbG93cyB0aGUgc2hhcmluZyBvZiBkZWNsYXJhdGlvbnMgKGUuZy4gdHlwZVxuICogY29uc3RydWN0b3JzKSBiZXR3ZWVuIHRoZW0uIFJhdGhlciB0aGFuIHJldHVybiBzdWNoIGRlY2xhcmF0aW9ucyB2aWEgYGdldFByZWx1ZGVTdGF0ZW1lbnRzKClgLCBpdFxuICogaG9pc3RzIHRoZW0gdG8gdGhlIHRvcCBvZiB0aGUgZ2VuZXJhdGVkIGB0cy5Tb3VyY2VGaWxlYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVDaGVja0ZpbGUgZXh0ZW5kcyBFbnZpcm9ubWVudCB7XG4gIHByaXZhdGUgbmV4dFRjYklkID0gMTtcbiAgcHJpdmF0ZSB0Y2JTdGF0ZW1lbnRzOiB0cy5TdGF0ZW1lbnRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcmVhZG9ubHkgZmlsZU5hbWU6IEFic29sdXRlRnNQYXRoLCBjb25maWc6IFR5cGVDaGVja2luZ0NvbmZpZywgcmVmRW1pdHRlcjogUmVmZXJlbmNlRW1pdHRlcixcbiAgICAgIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QsIGNvbXBpbGVySG9zdDogUGljazx0cy5Db21waWxlckhvc3QsICdnZXRDYW5vbmljYWxGaWxlTmFtZSc+KSB7XG4gICAgc3VwZXIoXG4gICAgICAgIGNvbmZpZywgbmV3IEltcG9ydE1hbmFnZXIobmV3IE5vb3BJbXBvcnRSZXdyaXRlcigpLCAnaScpLCByZWZFbWl0dGVyLCByZWZsZWN0b3IsXG4gICAgICAgIHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICAgICAgICBjb21waWxlckhvc3QuZ2V0Q2Fub25pY2FsRmlsZU5hbWUoZmlsZU5hbWUpLCAnJywgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCwgdHJ1ZSkpO1xuICB9XG5cbiAgYWRkVHlwZUNoZWNrQmxvY2soXG4gICAgICByZWY6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPHRzLkNsYXNzRGVjbGFyYXRpb24+PiwgbWV0YTogVHlwZUNoZWNrQmxvY2tNZXRhZGF0YSxcbiAgICAgIGRvbVNjaGVtYUNoZWNrZXI6IERvbVNjaGVtYUNoZWNrZXIsIG9vYlJlY29yZGVyOiBPdXRPZkJhbmREaWFnbm9zdGljUmVjb3JkZXIsXG4gICAgICBnZW5lcmljQ29udGV4dEJlaGF2aW9yOiBUY2JHZW5lcmljQ29udGV4dEJlaGF2aW9yKTogdm9pZCB7XG4gICAgY29uc3QgZm5JZCA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoYF90Y2Ike3RoaXMubmV4dFRjYklkKyt9YCk7XG4gICAgY29uc3QgZm4gPSBnZW5lcmF0ZVR5cGVDaGVja0Jsb2NrKFxuICAgICAgICB0aGlzLCByZWYsIGZuSWQsIG1ldGEsIGRvbVNjaGVtYUNoZWNrZXIsIG9vYlJlY29yZGVyLCBnZW5lcmljQ29udGV4dEJlaGF2aW9yKTtcbiAgICB0aGlzLnRjYlN0YXRlbWVudHMucHVzaChmbik7XG4gIH1cblxuICByZW5kZXIocmVtb3ZlQ29tbWVudHM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGxldCBzb3VyY2U6IHN0cmluZyA9IHRoaXMuaW1wb3J0TWFuYWdlci5nZXRBbGxJbXBvcnRzKHRoaXMuY29udGV4dEZpbGUuZmlsZU5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoaSA9PiBgaW1wb3J0ICogYXMgJHtpLnF1YWxpZmllci50ZXh0fSBmcm9tICcke2kuc3BlY2lmaWVyfSc7YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ1xcbicpICtcbiAgICAgICAgJ1xcblxcbic7XG4gICAgY29uc3QgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoe3JlbW92ZUNvbW1lbnRzfSk7XG4gICAgc291cmNlICs9ICdcXG4nO1xuICAgIGZvciAoY29uc3Qgc3RtdCBvZiB0aGlzLnBpcGVJbnN0U3RhdGVtZW50cykge1xuICAgICAgc291cmNlICs9IHByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBzdG10LCB0aGlzLmNvbnRleHRGaWxlKSArICdcXG4nO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHN0bXQgb2YgdGhpcy50eXBlQ3RvclN0YXRlbWVudHMpIHtcbiAgICAgIHNvdXJjZSArPSBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgc3RtdCwgdGhpcy5jb250ZXh0RmlsZSkgKyAnXFxuJztcbiAgICB9XG4gICAgc291cmNlICs9ICdcXG4nO1xuICAgIGZvciAoY29uc3Qgc3RtdCBvZiB0aGlzLnRjYlN0YXRlbWVudHMpIHtcbiAgICAgIHNvdXJjZSArPSBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgc3RtdCwgdGhpcy5jb250ZXh0RmlsZSkgKyAnXFxuJztcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhlIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgZmlsZSBpcyBhbiBFUyBtb2R1bGUuIE90aGVyd2lzZSwgaXQncyBpbnRlcnByZXRlZCBhcyBzb21lXG4gICAgLy8ga2luZCBvZiBnbG9iYWwgbmFtZXNwYWNlIGluIFRTLCB3aGljaCBmb3JjZXMgYSBmdWxsIHJlLXR5cGVjaGVjayBvZiB0aGUgdXNlcidzIHByb2dyYW0gdGhhdFxuICAgIC8vIGlzIHNvbWVob3cgbW9yZSBleHBlbnNpdmUgdGhhbiB0aGUgaW5pdGlhbCBwYXJzZS5cbiAgICBzb3VyY2UgKz0gJ1xcbmV4cG9ydCBjb25zdCBJU19BX01PRFVMRSA9IHRydWU7XFxuJztcblxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBnZXRQcmVsdWRlU3RhdGVtZW50cygpOiB0cy5TdGF0ZW1lbnRbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlQ2hlY2tGaWxlUGF0aChyb290RGlyczogQWJzb2x1dGVGc1BhdGhbXSk6IEFic29sdXRlRnNQYXRoIHtcbiAgY29uc3Qgc2hvcnRlc3QgPSByb290RGlycy5jb25jYXQoW10pLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoIC0gYi5sZW5ndGgpWzBdO1xuICByZXR1cm4gam9pbihzaG9ydGVzdCwgJ19fbmdfdHlwZWNoZWNrX18udHMnKTtcbn1cbiJdfQ==
@@ -1,227 +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 { checkIfGenericTypeBoundsAreContextFree } from './tcb_util';
10
- import { tsCreateTypeQueryForCoercedInput } from './ts_util';
11
- export function generateTypeCtorDeclarationFn(node, meta, nodeTypeRef, typeParams, reflector) {
12
- if (requiresInlineTypeCtor(node, reflector)) {
13
- throw new Error(`${node.name.text} requires an inline type constructor`);
14
- }
15
- const rawTypeArgs = typeParams !== undefined ? generateGenericArgs(typeParams) : undefined;
16
- const rawType = ts.createTypeReferenceNode(nodeTypeRef, rawTypeArgs);
17
- const initParam = constructTypeCtorParameter(node, meta, rawType);
18
- const typeParameters = typeParametersWithDefaultTypes(typeParams);
19
- if (meta.body) {
20
- const fnType = ts.createFunctionTypeNode(
21
- /* typeParameters */ typeParameters,
22
- /* parameters */ [initParam],
23
- /* type */ rawType);
24
- const decl = ts.createVariableDeclaration(
25
- /* name */ meta.fnName,
26
- /* type */ fnType,
27
- /* body */ ts.createNonNullExpression(ts.createNull()));
28
- const declList = ts.createVariableDeclarationList([decl], ts.NodeFlags.Const);
29
- return ts.createVariableStatement(
30
- /* modifiers */ undefined,
31
- /* declarationList */ declList);
32
- }
33
- else {
34
- return ts.createFunctionDeclaration(
35
- /* decorators */ undefined,
36
- /* modifiers */ [ts.createModifier(ts.SyntaxKind.DeclareKeyword)],
37
- /* asteriskToken */ undefined,
38
- /* name */ meta.fnName,
39
- /* typeParameters */ typeParameters,
40
- /* parameters */ [initParam],
41
- /* type */ rawType,
42
- /* body */ undefined);
43
- }
44
- }
45
- /**
46
- * Generate an inline type constructor for the given class and metadata.
47
- *
48
- * An inline type constructor is a specially shaped TypeScript static method, intended to be placed
49
- * within a directive class itself, that permits type inference of any generic type parameters of
50
- * the class from the types of expressions bound to inputs or outputs, and the types of elements
51
- * that match queries performed by the directive. It also catches any errors in the types of these
52
- * expressions. This method is never called at runtime, but is used in type-check blocks to
53
- * construct directive types.
54
- *
55
- * An inline type constructor for NgFor looks like:
56
- *
57
- * static ngTypeCtor<T>(init: Pick<NgForOf<T>, 'ngForOf'|'ngForTrackBy'|'ngForTemplate'>):
58
- * NgForOf<T>;
59
- *
60
- * A typical constructor would be:
61
- *
62
- * NgForOf.ngTypeCtor(init: {
63
- * ngForOf: ['foo', 'bar'],
64
- * ngForTrackBy: null as any,
65
- * ngForTemplate: null as any,
66
- * }); // Infers a type of NgForOf<string>.
67
- *
68
- * Any inputs declared on the type for which no property binding is present are assigned a value of
69
- * type `any`, to avoid producing any type errors for unset inputs.
70
- *
71
- * Inline type constructors are used when the type being created has bounded generic types which
72
- * make writing a declared type constructor (via `generateTypeCtorDeclarationFn`) difficult or
73
- * impossible.
74
- *
75
- * @param node the `ClassDeclaration<ts.ClassDeclaration>` for which a type constructor will be
76
- * generated.
77
- * @param meta additional metadata required to generate the type constructor.
78
- * @returns a `ts.MethodDeclaration` for the type constructor.
79
- */
80
- export function generateInlineTypeCtor(node, meta) {
81
- // Build rawType, a `ts.TypeNode` of the class with its generic parameters passed through from
82
- // the definition without any type bounds. For example, if the class is
83
- // `FooDirective<T extends Bar>`, its rawType would be `FooDirective<T>`.
84
- const rawTypeArgs = node.typeParameters !== undefined ? generateGenericArgs(node.typeParameters) : undefined;
85
- const rawType = ts.createTypeReferenceNode(node.name, rawTypeArgs);
86
- const initParam = constructTypeCtorParameter(node, meta, rawType);
87
- // If this constructor is being generated into a .ts file, then it needs a fake body. The body
88
- // is set to a return of `null!`. If the type constructor is being generated into a .d.ts file,
89
- // it needs no body.
90
- let body = undefined;
91
- if (meta.body) {
92
- body = ts.createBlock([
93
- ts.createReturn(ts.createNonNullExpression(ts.createNull())),
94
- ]);
95
- }
96
- // Create the type constructor method declaration.
97
- return ts.createMethod(
98
- /* decorators */ undefined,
99
- /* modifiers */ [ts.createModifier(ts.SyntaxKind.StaticKeyword)],
100
- /* asteriskToken */ undefined,
101
- /* name */ meta.fnName,
102
- /* questionToken */ undefined,
103
- /* typeParameters */ typeParametersWithDefaultTypes(node.typeParameters),
104
- /* parameters */ [initParam],
105
- /* type */ rawType,
106
- /* body */ body);
107
- }
108
- function constructTypeCtorParameter(node, meta, rawType) {
109
- // initType is the type of 'init', the single argument to the type constructor method.
110
- // If the Directive has any inputs, its initType will be:
111
- //
112
- // Pick<rawType, 'inputA'|'inputB'>
113
- //
114
- // Pick here is used to select only those fields from which the generic type parameters of the
115
- // directive will be inferred.
116
- //
117
- // In the special case there are no inputs, initType is set to {}.
118
- let initType = null;
119
- const keys = meta.fields.inputs;
120
- const plainKeys = [];
121
- const coercedKeys = [];
122
- for (const key of keys) {
123
- if (!meta.coercedInputFields.has(key)) {
124
- plainKeys.push(ts.createLiteralTypeNode(ts.createStringLiteral(key)));
125
- }
126
- else {
127
- coercedKeys.push(ts.createPropertySignature(
128
- /* modifiers */ undefined,
129
- /* name */ key,
130
- /* questionToken */ undefined,
131
- /* type */ tsCreateTypeQueryForCoercedInput(rawType.typeName, key),
132
- /* initializer */ undefined));
133
- }
134
- }
135
- if (plainKeys.length > 0) {
136
- // Construct a union of all the field names.
137
- const keyTypeUnion = ts.createUnionTypeNode(plainKeys);
138
- // Construct the Pick<rawType, keyTypeUnion>.
139
- initType = ts.createTypeReferenceNode('Pick', [rawType, keyTypeUnion]);
140
- }
141
- if (coercedKeys.length > 0) {
142
- const coercedLiteral = ts.createTypeLiteralNode(coercedKeys);
143
- initType = initType !== null ? ts.createIntersectionTypeNode([initType, coercedLiteral]) :
144
- coercedLiteral;
145
- }
146
- if (initType === null) {
147
- // Special case - no inputs, outputs, or other fields which could influence the result type.
148
- initType = ts.createTypeLiteralNode([]);
149
- }
150
- // Create the 'init' parameter itself.
151
- return ts.createParameter(
152
- /* decorators */ undefined,
153
- /* modifiers */ undefined,
154
- /* dotDotDotToken */ undefined,
155
- /* name */ 'init',
156
- /* questionToken */ undefined,
157
- /* type */ initType,
158
- /* initializer */ undefined);
159
- }
160
- function generateGenericArgs(params) {
161
- return params.map(param => ts.createTypeReferenceNode(param.name, undefined));
162
- }
163
- export function requiresInlineTypeCtor(node, host) {
164
- // The class requires an inline type constructor if it has generic type bounds that can not be
165
- // emitted into a different context.
166
- return !checkIfGenericTypeBoundsAreContextFree(node, host);
167
- }
168
- /**
169
- * Add a default `= any` to type parameters that don't have a default value already.
170
- *
171
- * TypeScript uses the default type of a type parameter whenever inference of that parameter fails.
172
- * This can happen when inferring a complex type from 'any'. For example, if `NgFor`'s inference is
173
- * done with the TCB code:
174
- *
175
- * ```
176
- * class NgFor<T> {
177
- * ngForOf: T[];
178
- * }
179
- *
180
- * declare function ctor<T>(o: Pick<NgFor<T>, 'ngForOf'|'ngForTrackBy'|'ngForTemplate'>): NgFor<T>;
181
- * ```
182
- *
183
- * An invocation looks like:
184
- *
185
- * ```
186
- * var _t1 = ctor({ngForOf: [1, 2], ngForTrackBy: null as any, ngForTemplate: null as any});
187
- * ```
188
- *
189
- * This correctly infers the type `NgFor<number>` for `_t1`, since `T` is inferred from the
190
- * assignment of type `number[]` to `ngForOf`'s type `T[]`. However, if `any` is passed instead:
191
- *
192
- * ```
193
- * var _t2 = ctor({ngForOf: [1, 2] as any, ngForTrackBy: null as any, ngForTemplate: null as any});
194
- * ```
195
- *
196
- * then inference for `T` fails (it cannot be inferred from `T[] = any`). In this case, `T` takes
197
- * the type `{}`, and so `_t2` is inferred as `NgFor<{}>`. This is obviously wrong.
198
- *
199
- * Adding a default type to the generic declaration in the constructor solves this problem, as the
200
- * default type will be used in the event that inference fails.
201
- *
202
- * ```
203
- * declare function ctor<T = any>(o: Pick<NgFor<T>, 'ngForOf'>): NgFor<T>;
204
- *
205
- * var _t3 = ctor({ngForOf: [1, 2] as any});
206
- * ```
207
- *
208
- * This correctly infers `T` as `any`, and therefore `_t3` as `NgFor<any>`.
209
- */
210
- function typeParametersWithDefaultTypes(params) {
211
- if (params === undefined) {
212
- return undefined;
213
- }
214
- return params.map(param => {
215
- if (param.default === undefined) {
216
- return ts.updateTypeParameterDeclaration(
217
- /* node */ param,
218
- /* name */ param.name,
219
- /* constraint */ param.constraint,
220
- /* defaultType */ ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword));
221
- }
222
- else {
223
- return param;
224
- }
225
- });
226
- }
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9jb25zdHJ1Y3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90eXBlX2NvbnN0cnVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSWpDLE9BQU8sRUFBQyxzQ0FBc0MsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVsRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFM0QsTUFBTSxVQUFVLDZCQUE2QixDQUN6QyxJQUEyQyxFQUFFLElBQXNCLEVBQUUsV0FBMEIsRUFDL0YsVUFBbUQsRUFBRSxTQUF5QjtJQUNoRixJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLHNDQUFzQyxDQUFDLENBQUM7S0FDMUU7SUFFRCxNQUFNLFdBQVcsR0FBRyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNGLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFckUsTUFBTSxTQUFTLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVsRSxNQUFNLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVsRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDYixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsc0JBQXNCO1FBQ3BDLG9CQUFvQixDQUFDLGNB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TyxTQUFTLENBQUM7S0FDbEI7SUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUMvQixPQUFPLEVBQUUsQ0FBQyw4QkFBOEI7WUFDcEMsVUFBVSxDQUFDLEtBQUs7WUFDaEIsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ2pDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDM0U7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Q2xhc3NEZWNsYXJhdGlvbiwgUmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtUeXBlQ3Rvck1ldGFkYXRhfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtjaGVja0lmR2VuZXJpY1R5cGVCb3VuZHNBcmVDb250ZXh0RnJlZX0gZnJvbSAnLi90Y2JfdXRpbCc7XG5cbmltcG9ydCB7dHNDcmVhdGVUeXBlUXVlcnlGb3JDb2VyY2VkSW5wdXR9IGZyb20gJy4vdHNfdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVR5cGVDdG9yRGVjbGFyYXRpb25GbihcbiAgICBub2RlOiBDbGFzc0RlY2xhcmF0aW9uPHRzLkNsYXNzRGVjbGFyYXRpb24+LCBtZXRhOiBUeXBlQ3Rvck1ldGFkYXRhLCBub2RlVHlwZVJlZjogdHMuRW50aXR5TmFtZSxcbiAgICB0eXBlUGFyYW1zOiB0cy5UeXBlUGFyYW1ldGVyRGVjbGFyYXRpb25bXXx1bmRlZmluZWQsIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpOiB0cy5TdGF0ZW1lbnQge1xuICBpZiAocmVxdWlyZXNJbmxpbmVUeXBlQ3Rvcihub2RlLCByZWZsZWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke25vZGUubmFtZS50ZXh0fSByZXF1aXJlcyBhbiBpbmxpbmUgdHlwZSBjb25zdHJ1Y3RvcmApO1xuICB9XG5cbiAgY29uc3QgcmF3VHlwZUFyZ3MgPSB0eXBlUGFyYW1zICE9PSB1bmRlZmluZWQgPyBnZW5lcmF0ZUdlbmVyaWNBcmdzKHR5cGVQYXJhbXMpIDogdW5kZWZpbmVkO1xuICBjb25zdCByYXdUeXBlID0gdHMuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUobm9kZVR5cGVSZWYsIHJhd1R5cGVBcmdzKTtcblxuICBjb25zdCBpbml0UGFyYW0gPSBjb25zdHJ1Y3RUeXBlQ3RvclBhcmFtZXRlcihub2RlLCBtZXRhLCByYXdUeXBlKTtcblxuICBjb25zdCB0eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzV2l0aERlZmF1bHRUeXBlcyh0eXBlUGFyYW1zKTtcblxuICBpZiAobWV0YS5ib2R5KSB7XG4gICAgY29uc3QgZm5UeXBlID0gdHMuY3JlYXRlRnVuY3Rpb25UeXBlTm9kZShcbiAgICAgICAgLyogdHlwZVBhcmFtZXRlcnMgKi8gdHlwZVBhcmFtZXRlcnMsXG4gICAgICAgIC8qIHBhcmFtZXRlcnMgKi9baW5pdFBhcmFtXSxcbiAgICAgICAgLyogdHlwZSAqLyByYXdUeXBlLFxuICAgICk7XG5cbiAgICBjb25zdCBkZWNsID0gdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcbiAgICAgICAgLyogbmFtZSAqLyBtZXRhLmZuTmFtZSxcbiAgICAgICAgLyogdHlwZSAqLyBmblR5cGUsXG4gICAgICAgIC8qIGJvZHkgKi8gdHMuY3JlYXRlTm9uTnVsbEV4cHJlc3Npb24odHMuY3JlYXRlTnVsbCgpKSk7XG4gICAgY29uc3QgZGVjbExpc3QgPSB0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChbZGVjbF0sIHRzLk5vZGVGbGFncy5Db25zdCk7XG4gICAgcmV0dXJuIHRzLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgICAgICAvKiBtb2RpZmllcnMgKi8gdW5kZWZpbmVkLFxuICAgICAgICAvKiBkZWNsYXJhdGlvbkxpc3QgKi8gZGVjbExpc3QpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0cy5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgICAgICAvKiBkZWNvcmF0b3JzICovIHVuZGVmaW5lZCxcbiAgICAgICAgLyogbW9kaWZpZXJzICovW3RzLmNyZWF0ZU1vZGlmaWVyKHRzLlN5bnRheEtpbmQuRGVjbGFyZUtleXdvcmQpXSxcbiAgICAgICAgLyogYXN0ZXJpc2tUb2tlbiAqLyB1bmRlZmluZWQsXG4gICAgICAgIC8qIG5hbWUgKi8gbWV0YS5mbk5hbWUsXG4gICAgICAgIC8qIHR5cGVQYXJhbWV0ZXJzICovIHR5cGVQYXJhbWV0ZXJzLFxuICAgICAgICAvKiBwYXJhbWV0ZXJzICovW2luaXRQYXJhbV0sXG4gICAgICAgIC8qIHR5cGUgKi8gcmF3VHlwZSxcbiAgICAgICAgLyogYm9keSAqLyB1bmRlZmluZWQpO1xuICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYW4gaW5saW5lIHR5cGUgY29uc3RydWN0b3IgZm9yIHRoZSBnaXZlbiBjbGFzcyBhbmQgbWV0YWRhdGEuXG4gKlxuICogQW4gaW5saW5lIHR5cGUgY29uc3RydWN0b3IgaXMgYSBzcGVjaWFsbHkgc2hhcGVkIFR5cGVTY3JpcHQgc3RhdGljIG1ldGhvZCwgaW50ZW5kZWQgdG8gYmUgcGxhY2VkXG4gKiB3aXRoaW4gYSBkaXJlY3RpdmUgY2xhc3MgaXRzZWxmLCB0aGF0IHBlcm1pdHMgdHlwZSBpbmZlcmVuY2Ugb2YgYW55IGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXJzIG9mXG4gKiB0aGUgY2xhc3MgZnJvbSB0aGUgdHlwZXMgb2YgZXhwcmVzc2lvbnMgYm91bmQgdG8gaW5wdXRzIG9yIG91dHB1dHMsIGFuZCB0aGUgdHlwZXMgb2YgZWxlbWVudHNcbiAqIHRoYXQgbWF0Y2ggcXVlcmllcyBwZXJmb3JtZWQgYnkgdGhlIGRpcmVjdGl2ZS4gSXQgYWxzbyBjYXRjaGVzIGFueSBlcnJvcnMgaW4gdGhlIHR5cGVzIG9mIHRoZXNlXG4gKiBleHByZXNzaW9ucy4gVGhpcyBtZXRob2QgaXMgbmV2ZXIgY2FsbGVkIGF0IHJ1bnRpbWUsIGJ1dCBpcyB1c2VkIGluIHR5cGUtY2hlY2sgYmxvY2tzIHRvXG4gKiBjb25zdHJ1Y3QgZGlyZWN0aXZlIHR5cGVzLlxuICpcbiAqIEFuIGlubGluZSB0eXBlIGNvbnN0cnVjdG9yIGZvciBOZ0ZvciBsb29rcyBsaWtlOlxuICpcbiAqIHN0YXRpYyBuZ1R5cGVDdG9yPFQ+KGluaXQ6IFBpY2s8TmdGb3JPZjxUPiwgJ25nRm9yT2YnfCduZ0ZvclRyYWNrQnknfCduZ0ZvclRlbXBsYXRlJz4pOlxuICogICBOZ0Zvck9mPFQ+O1xuICpcbiAqIEEgdHlwaWNhbCBjb25zdHJ1Y3RvciB3b3VsZCBiZTpcbiAqXG4gKiBOZ0Zvck9mLm5nVHlwZUN0b3IoaW5pdDoge1xuICogICBuZ0Zvck9mOiBbJ2ZvbycsICdiYXInXSxcbiAqICAgbmdGb3JUcmFja0J5OiBudWxsIGFzIGFueSxcbiAqICAgbmdGb3JUZW1wbGF0ZTogbnVsbCBhcyBhbnksXG4gKiB9KTsgLy8gSW5mZXJzIGEgdHlwZSBvZiBOZ0Zvck9mPHN0cmluZz4uXG4gKlxuICogQW55IGlucHV0cyBkZWNsYXJlZCBvbiB0aGUgdHlwZSBmb3Igd2hpY2ggbm8gcHJvcGVydHkgYmluZGluZyBpcyBwcmVzZW50IGFyZSBhc3NpZ25lZCBhIHZhbHVlIG9mXG4gKiB0eXBlIGBhbnlgLCB0byBhdm9pZCBwcm9kdWNpbmcgYW55IHR5cGUgZXJyb3JzIGZvciB1bnNldCBpbnB1dHMuXG4gKlxuICogSW5saW5lIHR5cGUgY29uc3RydWN0b3JzIGFyZSB1c2VkIHdoZW4gdGhlIHR5cGUgYmVpbmcgY3JlYXRlZCBoYXMgYm91bmRlZCBnZW5lcmljIHR5cGVzIHdoaWNoXG4gKiBtYWtlIHdyaXRpbmcgYSBkZWNsYXJlZCB0eXBlIGNvbnN0cnVjdG9yICh2aWEgYGdlbmVyYXRlVHlwZUN0b3JEZWNsYXJhdGlvbkZuYCkgZGlmZmljdWx0IG9yXG4gKiBpbXBvc3NpYmxlLlxuICpcbiAqIEBwYXJhbSBub2RlIHRoZSBgQ2xhc3NEZWNsYXJhdGlvbjx0cy5DbGFzc0RlY2xhcmF0aW9uPmAgZm9yIHdoaWNoIGEgdHlwZSBjb25zdHJ1Y3RvciB3aWxsIGJlXG4gKiBnZW5lcmF0ZWQuXG4gKiBAcGFyYW0gbWV0YSBhZGRpdGlvbmFsIG1ldGFkYXRhIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRoZSB0eXBlIGNvbnN0cnVjdG9yLlxuICogQHJldHVybnMgYSBgdHMuTWV0aG9kRGVjbGFyYXRpb25gIGZvciB0aGUgdHlwZSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSW5saW5lVHlwZUN0b3IoXG4gICAgbm9kZTogQ2xhc3NEZWNsYXJhdGlvbjx0cy5DbGFzc0RlY2xhcmF0aW9uPiwgbWV0YTogVHlwZUN0b3JNZXRhZGF0YSk6IHRzLk1ldGhvZERlY2xhcmF0aW9uIHtcbiAgLy8gQnVpbGQgcmF3VHlwZSwgYSBgdHMuVHlwZU5vZGVgIG9mIHRoZSBjbGFzcyB3aXRoIGl0cyBnZW5lcmljIHBhcmFtZXRlcnMgcGFzc2VkIHRocm91Z2ggZnJvbVxuICAvLyB0aGUgZGVmaW5pdGlvbiB3aXRob3V0IGFueSB0eXBlIGJvdW5kcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjbGFzcyBpc1xuICAvLyBgRm9vRGlyZWN0aXZlPFQgZXh0ZW5kcyBCYXI+YCwgaXRzIHJhd1R5cGUgd291bGQgYmUgYEZvb0RpcmVjdGl2ZTxUPmAuXG4gIGNvbnN0IHJhd1R5cGVBcmdzID1cbiAgICAgIG5vZGUudHlwZVBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCA/IGdlbmVyYXRlR2VuZXJpY0FyZ3Mobm9kZS50eXBlUGFyYW1ldGVycykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJhd1R5cGUgPSB0cy5jcmVhdGVUeXBlUmVmZXJlbmNlTm9kZShub2RlLm5hbWUsIHJhd1R5cGVBcmdzKTtcblxuICBjb25zdCBpbml0UGFyYW0gPSBjb25zdHJ1Y3RUeXBlQ3RvclBhcmFtZXRlcihub2RlLCBtZXRhLCByYXdUeXBlKTtcblxuICAvLyBJZiB0aGlzIGNvbnN0cnVjdG9yIGlzIGJlaW5nIGdlbmVyYXRlZCBpbnRvIGEgLnRzIGZpbGUsIHRoZW4gaXQgbmVlZHMgYSBmYWtlIGJvZHkuIFRoZSBib2R5XG4gIC8vIGlzIHNldCB0byBhIHJldHVybiBvZiBgbnVsbCFgLiBJZiB0aGUgdHlwZSBjb25zdHJ1Y3RvciBpcyBiZWluZyBnZW5lcmF0ZWQgaW50byBhIC5kLnRzIGZpbGUsXG4gIC8vIGl0IG5lZWRzIG5vIGJvZHkuXG4gIGxldCBib2R5OiB0cy5CbG9ja3x1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGlmIChtZXRhLmJvZHkpIHtcbiAgICBib2R5ID0gdHMuY3JlYXRlQmxvY2soW1xuICAgICAgdHMuY3JlYXRlUmV0dXJuKHRzLmNyZWF0ZU5vbk51bGxFeHByZXNzaW9uKHRzLmNyZWF0ZU51bGwoKSkpLFxuICAgIF0pO1xuICB9XG5cbiAgLy8gQ3JlYXRlIHRoZSB0eXBlIGNvbnN0cnVjdG9yIG1ldGhvZCBkZWNsYXJhdGlvbi5cbiAgcmV0dXJuIHRzLmNyZWF0ZU1ldGhvZChcbiAgICAgIC8qIGRlY29yYXRvcnMgKi8gdW5kZWZpbmVkLFxuICAgICAgLyogbW9kaWZpZXJzICovW3RzLmNyZWF0ZU1vZGlmaWVyKHRzLlN5bnRheEtpbmQuU3RhdGljS2V5d29yZCldLFxuICAgICAgLyogYXN0ZXJpc2tUb2tlbiAqLyB1bmRlZmluZWQsXG4gICAgICAvKiBuYW1lICovIG1ldGEuZm5OYW1lLFxuICAgICAgLyogcXVlc3Rpb25Ub2tlbiAqLyB1bmRlZmluZWQsXG4gICAgICAvKiB0eXBlUGFyYW1ldGVycyAqLyB0eXBlUGFyYW1ldGVyc1dpdGhEZWZhdWx0VHlwZXMobm9kZS50eXBlUGFyYW1ldGVycyksXG4gICAgICAvKiBwYXJhbWV0ZXJzICovW2luaXRQYXJhbV0sXG4gICAgICAvKiB0eXBlICovIHJhd1R5cGUsXG4gICAgICAvKiBib2R5ICovIGJvZHksXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFR5cGVDdG9yUGFyYW1ldGVyKFxuICAgIG5vZGU6IENsYXNzRGVjbGFyYXRpb248dHMuQ2xhc3NEZWNsYXJhdGlvbj4sIG1ldGE6IFR5cGVDdG9yTWV0YWRhdGEsXG4gICAgcmF3VHlwZTogdHMuVHlwZVJlZmVyZW5jZU5vZGUpOiB0cy5QYXJhbWV0ZXJEZWNsYXJhdGlvbiB7XG4gIC8vIGluaXRUeXBlIGlzIHRoZSB0eXBlIG9mICdpbml0JywgdGhlIHNpbmdsZSBhcmd1bWVudCB0byB0aGUgdHlwZSBjb25zdHJ1Y3RvciBtZXRob2QuXG4gIC8vIElmIHRoZSBEaXJlY3RpdmUgaGFzIGFueSBpbnB1dHMsIGl0cyBpbml0VHlwZSB3aWxsIGJlOlxuICAvL1xuICAvLyBQaWNrPHJhd1R5cGUsICdpbnB1dEEnfCdpbnB1dEInPlxuICAvL1xuICAvLyBQaWNrIGhlcmUgaXMgdXNlZCB0byBzZWxlY3Qgb25seSB0aG9zZSBmaWVsZHMgZnJvbSB3aGljaCB0aGUgZ2VuZXJpYyB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlXG4gIC8vIGRpcmVjdGl2ZSB3aWxsIGJlIGluZmVycmVkLlxuICAvL1xuICAvLyBJbiB0aGUgc3BlY2lhbCBjYXNlIHRoZXJlIGFyZSBubyBpbnB1dHMsIGluaXRUeXBlIGlzIHNldCB0byB7fS5cbiAgbGV0IGluaXRUeXBlOiB0cy5UeXBlTm9kZXxudWxsID0gbnVsbDtcblxuICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IG1ldGEuZmllbGRzLmlucHV0cztcbiAgY29uc3QgcGxhaW5LZXlzOiB0cy5MaXRlcmFsVHlwZU5vZGVbXSA9IFtdO1xuICBjb25zdCBjb2VyY2VkS2V5czogdHMuUHJvcGVydHlTaWduYXR1cmVbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKCFtZXRhLmNvZXJjZWRJbnB1dEZpZWxkcy5oYXMoa2V5KSkge1xuICAgICAgcGxhaW5LZXlzLnB1c2godHMuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKHRzLmNyZWF0ZVN0cmluZ0xpdGVyYWwoa2V5KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2VyY2VkS2V5cy5wdXNoKHRzLmNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlKFxuICAgICAgICAgIC8qIG1vZGlmaWVycyAqLyB1bmRlZmluZWQsXG4gICAgICAgICAgLyogbmFtZSAqLyBrZXksXG4gICAgICAgICAgLyogcXVlc3Rpb25Ub2tlbiAqLyB1bmRlZmluZWQsXG4gICAgICAgICAgLyogdHlwZSAqLyB0c0NyZWF0ZVR5cGVRdWVyeUZvckNvZXJjZWRJbnB1dChyYXdUeXBlLnR5cGVOYW1lLCBrZXkpLFxuICAgICAgICAgIC8qIGluaXRpYWxpemVyICovIHVuZGVmaW5lZCkpO1xuICAgIH1cbiAgfVxuICBpZiAocGxhaW5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBDb25zdHJ1Y3QgYSB1bmlvbiBvZiBhbGwgdGhlIGZpZWxkIG5hbWVzLlxuICAgIGNvbnN0IGtleVR5cGVVbmlvbiA9IHRzLmNyZWF0ZVVuaW9uVHlwZU5vZGUocGxhaW5LZXlzKTtcblxuICAgIC8vIENvbnN0cnVjdCB0aGUgUGljazxyYXdUeXBlLCBrZXlUeXBlVW5pb24+LlxuICAgIGluaXRUeXBlID0gdHMuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUoJ1BpY2snLCBbcmF3VHlwZSwga2V5VHlwZVVuaW9uXSk7XG4gIH1cbiAgaWYgKGNvZXJjZWRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBjb2VyY2VkTGl0ZXJhbCA9IHRzLmNyZWF0ZVR5cGVMaXRlcmFsTm9kZShjb2VyY2VkS2V5cyk7XG5cbiAgICBpbml0VHlwZSA9IGluaXRUeXBlICE9PSBudWxsID8gdHMuY3JlYXRlSW50ZXJzZWN0aW9uVHlwZU5vZGUoW2luaXRUeXBlLCBjb2VyY2VkTGl0ZXJhbF0pIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lcmNlZExpdGVyYWw7XG4gIH1cblxuICBpZiAoaW5pdFR5cGUgPT09IG51bGwpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgLSBubyBpbnB1dHMsIG91dHB1dHMsIG9yIG90aGVyIGZpZWxkcyB3aGljaCBjb3VsZCBpbmZsdWVuY2UgdGhlIHJlc3VsdCB0eXBlLlxuICAgIGluaXRUeXBlID0gdHMuY3JlYXRlVHlwZUxpdGVyYWxOb2RlKFtdKTtcbiAgfVxuXG4gIC8vIENyZWF0ZSB0aGUgJ2luaXQnIHBhcmFtZXRlciBpdHNlbGYuXG4gIHJldHVybiB0cy5jcmVhdGVQYXJhbWV0ZXIoXG4gICAgICAvKiBkZWNvcmF0b3JzICovIHVuZGVmaW5lZCxcbiAgICAgIC8qIG1vZGlmaWVycyAqLyB1bmRlZmluZWQsXG4gICAgICAvKiBkb3REb3REb3RUb2tlbiAqLyB1bmRlZmluZWQsXG4gICAgICAvKiBuYW1lICovICdpbml0JyxcbiAgICAgIC8qIHF1ZXN0aW9uVG9rZW4gKi8gdW5kZWZpbmVkLFxuICAgICAgLyogdHlwZSAqLyBpbml0VHlwZSxcbiAgICAgIC8qIGluaXRpYWxpemVyICovIHVuZGVmaW5lZCk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlR2VuZXJpY0FyZ3MocGFyYW1zOiBSZWFkb25seUFycmF5PHRzLlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj4pOiB0cy5UeXBlTm9kZVtdIHtcbiAgcmV0dXJuIHBhcmFtcy5tYXAocGFyYW0gPT4gdHMuY3JlYXRlVHlwZVJlZmVyZW5jZU5vZGUocGFyYW0ubmFtZSwgdW5kZWZpbmVkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlc0lubGluZVR5cGVDdG9yKFxuICAgIG5vZGU6IENsYXNzRGVjbGFyYXRpb248dHMuQ2xhc3NEZWNsYXJhdGlvbj4sIGhvc3Q6IFJlZmxlY3Rpb25Ib3N0KTogYm9vbGVhbiB7XG4gIC8vIFRoZSBjbGFzcyByZXF1aXJlcyBhbiBpbmxpbmUgdHlwZSBjb25zdHJ1Y3RvciBpZiBpdCBoYXMgZ2VuZXJpYyB0eXBlIGJvdW5kcyB0aGF0IGNhbiBub3QgYmVcbiAgLy8gZW1pdHRlZCBpbnRvIGEgZGlmZmVyZW50IGNvbnRleHQuXG4gIHJldHVybiAhY2hlY2tJZkdlbmVyaWNUeXBlQm91bmRzQXJlQ29udGV4dEZyZWUobm9kZSwgaG9zdCk7XG59XG5cbi8qKlxuICogQWRkIGEgZGVmYXVsdCBgPSBhbnlgIHRvIHR5cGUgcGFyYW1ldGVycyB0aGF0IGRvbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlIGFscmVhZHkuXG4gKlxuICogVHlwZVNjcmlwdCB1c2VzIHRoZSBkZWZhdWx0IHR5cGUgb2YgYSB0eXBlIHBhcmFtZXRlciB3aGVuZXZlciBpbmZlcmVuY2Ugb2YgdGhhdCBwYXJhbWV0ZXIgZmFpbHMuXG4gKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiBpbmZlcnJpbmcgYSBjb21wbGV4IHR5cGUgZnJvbSAnYW55Jy4gRm9yIGV4YW1wbGUsIGlmIGBOZ0ZvcmAncyBpbmZlcmVuY2UgaXNcbiAqIGRvbmUgd2l0aCB0aGUgVENCIGNvZGU6XG4gKlxuICogYGBgXG4gKiBjbGFzcyBOZ0ZvcjxUPiB7XG4gKiAgIG5nRm9yT2Y6IFRbXTtcbiAqIH1cbiAqXG4gKiBkZWNsYXJlIGZ1bmN0aW9uIGN0b3I8VD4obzogUGljazxOZ0ZvcjxUPiwgJ25nRm9yT2YnfCduZ0ZvclRyYWNrQnknfCduZ0ZvclRlbXBsYXRlJz4pOiBOZ0ZvcjxUPjtcbiAqIGBgYFxuICpcbiAqIEFuIGludm9jYXRpb24gbG9va3MgbGlrZTpcbiAqXG4gKiBgYGBcbiAqIHZhciBfdDEgPSBjdG9yKHtuZ0Zvck9mOiBbMSwgMl0sIG5nRm9yVHJhY2tCeTogbnVsbCBhcyBhbnksIG5nRm9yVGVtcGxhdGU6IG51bGwgYXMgYW55fSk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGNvcnJlY3RseSBpbmZlcnMgdGhlIHR5cGUgYE5nRm9yPG51bWJlcj5gIGZvciBgX3QxYCwgc2luY2UgYFRgIGlzIGluZmVycmVkIGZyb20gdGhlXG4gKiBhc3NpZ25tZW50IG9mIHR5cGUgYG51bWJlcltdYCB0byBgbmdGb3JPZmAncyB0eXBlIGBUW11gLiBIb3dldmVyLCBpZiBgYW55YCBpcyBwYXNzZWQgaW5zdGVhZDpcbiAqXG4gKiBgYGBcbiAqIHZhciBfdDIgPSBjdG9yKHtuZ0Zvck9mOiBbMSwgMl0gYXMgYW55LCBuZ0ZvclRyYWNrQnk6IG51bGwgYXMgYW55LCBuZ0ZvclRlbXBsYXRlOiBudWxsIGFzIGFueX0pO1xuICogYGBgXG4gKlxuICogdGhlbiBpbmZlcmVuY2UgZm9yIGBUYCBmYWlscyAoaXQgY2Fubm90IGJlIGluZmVycmVkIGZyb20gYFRbXSA9IGFueWApLiBJbiB0aGlzIGNhc2UsIGBUYCB0YWtlc1xuICogdGhlIHR5cGUgYHt9YCwgYW5kIHNvIGBfdDJgIGlzIGluZmVycmVkIGFzIGBOZ0Zvcjx7fT5gLiBUaGlzIGlzIG9idmlvdXNseSB3cm9uZy5cbiAqXG4gKiBBZGRpbmcgYSBkZWZhdWx0IHR5cGUgdG8gdGhlIGdlbmVyaWMgZGVjbGFyYXRpb24gaW4gdGhlIGNvbnN0cnVjdG9yIHNvbHZlcyB0aGlzIHByb2JsZW0sIGFzIHRoZVxuICogZGVmYXVsdCB0eXBlIHdpbGwgYmUgdXNlZCBpbiB0aGUgZXZlbnQgdGhhdCBpbmZlcmVuY2UgZmFpbHMuXG4gKlxuICogYGBgXG4gKiBkZWNsYXJlIGZ1bmN0aW9uIGN0b3I8VCA9IGFueT4obzogUGljazxOZ0ZvcjxUPiwgJ25nRm9yT2YnPik6IE5nRm9yPFQ+O1xuICpcbiAqIHZhciBfdDMgPSBjdG9yKHtuZ0Zvck9mOiBbMSwgMl0gYXMgYW55fSk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGNvcnJlY3RseSBpbmZlcnMgYFRgIGFzIGBhbnlgLCBhbmQgdGhlcmVmb3JlIGBfdDNgIGFzIGBOZ0Zvcjxhbnk+YC5cbiAqL1xuZnVuY3Rpb24gdHlwZVBhcmFtZXRlcnNXaXRoRGVmYXVsdFR5cGVzKHBhcmFtczogUmVhZG9ubHlBcnJheTx0cy5UeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24+fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCk6IHRzLlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbltdfHVuZGVmaW5lZCB7XG4gIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zLm1hcChwYXJhbSA9PiB7XG4gICAgaWYgKHBhcmFtLmRlZmF1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRzLnVwZGF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihcbiAgICAgICAgICAvKiBub2RlICovIHBhcmFtLFxuICAgICAgICAgIC8qIG5hbWUgKi8gcGFyYW0ubmFtZSxcbiAgICAgICAgICAvKiBjb25zdHJhaW50ICovIHBhcmFtLmNvbnN0cmFpbnQsXG4gICAgICAgICAgLyogZGVmYXVsdFR5cGUgKi8gdHMuY3JlYXRlS2V5d29yZFR5cGVOb2RlKHRzLlN5bnRheEtpbmQuQW55S2V5d29yZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFyYW07XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -1,127 +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
- const INELIGIBLE = {};
11
- /**
12
- * Determines whether the provided type can be emitted, which means that it can be safely emitted
13
- * into a different location.
14
- *
15
- * If this function returns true, a `TypeEmitter` should be able to succeed. Vice versa, if this
16
- * function returns false, then using the `TypeEmitter` should not be attempted as it is known to
17
- * fail.
18
- */
19
- export function canEmitType(type, resolver) {
20
- return canEmitTypeWorker(type);
21
- function canEmitTypeWorker(type) {
22
- return visitNode(type) !== INELIGIBLE;
23
- }
24
- // To determine whether a type can be emitted, we have to recursively look through all type nodes.
25
- // If a type reference node is found at any position within the type and that type reference
26
- // cannot be emitted, then the `INELIGIBLE` constant is returned to stop the recursive walk as
27
- // the type as a whole cannot be emitted in that case. Otherwise, the result of visiting all child
28
- // nodes determines the result. If no ineligible type reference node is found then the walk
29
- // returns `undefined`, indicating that no type node was visited that could not be emitted.
30
- function visitNode(node) {
31
- // Emitting a type reference node in a different context requires that an import for the type
32
- // can be created. If a type reference node cannot be emitted, `INELIGIBLE` is returned to stop
33
- // the walk.
34
- if (ts.isTypeReferenceNode(node) && !canEmitTypeReference(node)) {
35
- return INELIGIBLE;
36
- }
37
- else {
38
- return ts.forEachChild(node, visitNode);
39
- }
40
- }
41
- function canEmitTypeReference(type) {
42
- const reference = resolver(type);
43
- // If the type could not be resolved, it can not be emitted.
44
- if (reference === null) {
45
- return false;
46
- }
47
- // If the type is a reference, consider the type to be eligible for emitting.
48
- if (reference instanceof Reference) {
49
- return true;
50
- }
51
- // The type can be emitted if either it does not have any type arguments, or all of them can be
52
- // emitted.
53
- return type.typeArguments === undefined || type.typeArguments.every(canEmitTypeWorker);
54
- }
55
- }
56
- /**
57
- * Given a `ts.TypeNode`, this class derives an equivalent `ts.TypeNode` that has been emitted into
58
- * a different context.
59
- *
60
- * For example, consider the following code:
61
- *
62
- * ```
63
- * import {NgIterable} from '@angular/core';
64
- *
65
- * class NgForOf<T, U extends NgIterable<T>> {}
66
- * ```
67
- *
68
- * Here, the generic type parameters `T` and `U` can be emitted into a different context, as the
69
- * type reference to `NgIterable` originates from an absolute module import so that it can be
70
- * emitted anywhere, using that same module import. The process of emitting translates the
71
- * `NgIterable` type reference to a type reference that is valid in the context in which it is
72
- * emitted, for example:
73
- *
74
- * ```
75
- * import * as i0 from '@angular/core';
76
- * import * as i1 from '@angular/common';
77
- *
78
- * const _ctor1: <T, U extends i0.NgIterable<T>>(o: Pick<i1.NgForOf<T, U>, 'ngForOf'>):
79
- * i1.NgForOf<T, U>;
80
- * ```
81
- *
82
- * Notice how the type reference for `NgIterable` has been translated into a qualified name,
83
- * referring to the namespace import that was created.
84
- */
85
- export class TypeEmitter {
86
- constructor(resolver, emitReference) {
87
- this.resolver = resolver;
88
- this.emitReference = emitReference;
89
- }
90
- emitType(type) {
91
- const typeReferenceTransformer = context => {
92
- const visitNode = (node) => {
93
- if (ts.isTypeReferenceNode(node)) {
94
- return this.emitTypeReference(node);
95
- }
96
- else {
97
- return ts.visitEachChild(node, visitNode, context);
98
- }
99
- };
100
- return node => ts.visitNode(node, visitNode);
101
- };
102
- return ts.transform(type, [typeReferenceTransformer]).transformed[0];
103
- }
104
- emitTypeReference(type) {
105
- // Determine the reference that the type corresponds with.
106
- const reference = this.resolver(type);
107
- if (reference === null) {
108
- throw new Error('Unable to emit an unresolved reference');
109
- }
110
- // Emit the type arguments, if any.
111
- let typeArguments = undefined;
112
- if (type.typeArguments !== undefined) {
113
- typeArguments = ts.createNodeArray(type.typeArguments.map(typeArg => this.emitType(typeArg)));
114
- }
115
- // Emit the type name.
116
- let typeName = type.typeName;
117
- if (reference instanceof Reference) {
118
- const emittedType = this.emitReference(reference);
119
- if (!ts.isTypeReferenceNode(emittedType)) {
120
- throw new Error(`Expected TypeReferenceNode for emitted reference, got ${ts.SyntaxKind[emittedType.kind]}`);
121
- }
122
- typeName = emittedType.typeName;
123
- }
124
- return ts.updateTypeReferenceNode(type, typeName, typeArguments);
125
- }
126
- }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90eXBlY2hlY2svc3JjL3R5cGVfZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBc0J4QyxNQUFNLFVBQVUsR0FBZSxFQUFnQixDQUFDO0FBRWhEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQWlCLEVBQUUsUUFBK0I7SUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvQixTQUFTLGlCQUFpQixDQUFDLElBQWlCO1FBQzFDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsa0dBQWtHO0lBQ2xHLDRGQUE0RjtJQUM1Riw4RkFBOEY7SUFDOUYsa0dBQWtHO0lBQ2xHLDJGQUEyRjtJQUMzRiwyRkFBMkY7SUFDM0YsU0FBUyxTQUFTLENBQUMsSUFBYTtRQUM5Qiw2RkFBNkY7UUFDN0YsK0ZBQStGO1FBQy9GLFlBQVk7UUFDWixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9ELE9BQU8sVUFBVSxDQUFDO1NBQ25CO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELFNBQVMsb0JBQW9CLENBQUMsSUFBMEI7UUFDdEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLDREQUE0RDtRQUM1RCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELDZFQUE2RTtRQUM3RSxJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELCtGQUErRjtRQUMvRixXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVl0QixZQUFZLFFBQStCLEVBQUUsYUFBOEM7UUFDekYsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFpQjtRQUN4QixNQUFNLHdCQUF3QixHQUF1QyxPQUFPLENBQUMsRUFBRTtZQUM3RSxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQWEsRUFBVyxFQUFFO2dCQUMzQyxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUNwRDtZQUNILENBQUMsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFDRixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBMEI7UUFDbEQsMERBQTBEO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRDtRQUVELG1DQUFtQztRQUNuQyxJQUFJLGFBQWEsR0FBd0MsU0FBUyxDQUFDO1FBQ25FLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDcEMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRjtRQUVELHNCQUFzQjtRQUN0QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLElBQUksU0FBUyxZQUFZLFNBQVMsRUFBRTtZQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7U0FDakM7UUFFRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5cbi8qKlxuICogQSByZXNvbHZlZCB0eXBlIHJlZmVyZW5jZSBjYW4gZWl0aGVyIGJlIGEgYFJlZmVyZW5jZWAsIHRoZSBvcmlnaW5hbCBgdHMuVHlwZVJlZmVyZW5jZU5vZGVgIGl0c2VsZlxuICogb3IgbnVsbC4gQSB2YWx1ZSBvZiBudWxsIGluZGljYXRlcyB0aGF0IG5vIHJlZmVyZW5jZSBjb3VsZCBiZSByZXNvbHZlZCBvciB0aGF0IHRoZSByZWZlcmVuY2UgY2FuXG4gKiBub3QgYmUgZW1pdHRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb2x2ZWRUeXBlUmVmZXJlbmNlID0gUmVmZXJlbmNlfHRzLlR5cGVSZWZlcmVuY2VOb2RlfG51bGw7XG5cbi8qKlxuICogQSB0eXBlIHJlZmVyZW5jZSByZXNvbHZlciBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIHR5cGVcbiAqIHJlZmVyZW5jZSBhbmQgdmVyaWZ5aW5nIHdoZXRoZXIgaXQgY2FuIGJlIGVtaXR0ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVSZWZlcmVuY2VSZXNvbHZlciA9ICh0eXBlOiB0cy5UeXBlUmVmZXJlbmNlTm9kZSkgPT4gUmVzb2x2ZWRUeXBlUmVmZXJlbmNlO1xuXG4vKipcbiAqIEEgbWFya2VyIHRvIGluZGljYXRlIHRoYXQgYSB0eXBlIHJlZmVyZW5jZSBpcyBpbmVsaWdpYmxlIGZvciBlbWl0dGluZy4gVGhpcyBuZWVkcyB0byBiZSB0cnV0aHlcbiAqIGFzIGl0J3MgcmV0dXJuZWQgZnJvbSBgdHMuZm9yRWFjaENoaWxkYCwgd2hpY2ggb25seSByZXR1cm5zIHRydXRoeSB2YWx1ZXMuXG4gKi9cbnR5cGUgSU5FTElHSUJMRSA9IHtcbiAgX19icmFuZDogJ2luZWxpZ2libGUnO1xufTtcbmNvbnN0IElORUxJR0lCTEU6IElORUxJR0lCTEUgPSB7fSBhcyBJTkVMSUdJQkxFO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgdHlwZSBjYW4gYmUgZW1pdHRlZCwgd2hpY2ggbWVhbnMgdGhhdCBpdCBjYW4gYmUgc2FmZWx5IGVtaXR0ZWRcbiAqIGludG8gYSBkaWZmZXJlbnQgbG9jYXRpb24uXG4gKlxuICogSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIGEgYFR5cGVFbWl0dGVyYCBzaG91bGQgYmUgYWJsZSB0byBzdWNjZWVkLiBWaWNlIHZlcnNhLCBpZiB0aGlzXG4gKiBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0aGVuIHVzaW5nIHRoZSBgVHlwZUVtaXR0ZXJgIHNob3VsZCBub3QgYmUgYXR0ZW1wdGVkIGFzIGl0IGlzIGtub3duIHRvXG4gKiBmYWlsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuRW1pdFR5cGUodHlwZTogdHMuVHlwZU5vZGUsIHJlc29sdmVyOiBUeXBlUmVmZXJlbmNlUmVzb2x2ZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNhbkVtaXRUeXBlV29ya2VyKHR5cGUpO1xuXG4gIGZ1bmN0aW9uIGNhbkVtaXRUeXBlV29ya2VyKHR5cGU6IHRzLlR5cGVOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZpc2l0Tm9kZSh0eXBlKSAhPT0gSU5FTElHSUJMRTtcbiAgfVxuXG4gIC8vIFRvIGRldGVybWluZSB3aGV0aGVyIGEgdHlwZSBjYW4gYmUgZW1pdHRlZCwgd2UgaGF2ZSB0byByZWN1cnNpdmVseSBsb29rIHRocm91Z2ggYWxsIHR5cGUgbm9kZXMuXG4gIC8vIElmIGEgdHlwZSByZWZlcmVuY2Ugbm9kZSBpcyBmb3VuZCBhdCBhbnkgcG9zaXRpb24gd2l0aGluIHRoZSB0eXBlIGFuZCB0aGF0IHR5cGUgcmVmZXJlbmNlXG4gIC8vIGNhbm5vdCBiZSBlbWl0dGVkLCB0aGVuIHRoZSBgSU5FTElHSUJMRWAgY29uc3RhbnQgaXMgcmV0dXJuZWQgdG8gc3RvcCB0aGUgcmVjdXJzaXZlIHdhbGsgYXNcbiAgLy8gdGhlIHR5cGUgYXMgYSB3aG9sZSBjYW5ub3QgYmUgZW1pdHRlZCBpbiB0aGF0IGNhc2UuIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBvZiB2aXNpdGluZyBhbGwgY2hpbGRcbiAgLy8gbm9kZXMgZGV0ZXJtaW5lcyB0aGUgcmVzdWx0LiBJZiBubyBpbmVsaWdpYmxlIHR5cGUgcmVmZXJlbmNlIG5vZGUgaXMgZm91bmQgdGhlbiB0aGUgd2Fsa1xuICAvLyByZXR1cm5zIGB1bmRlZmluZWRgLCBpbmRpY2F0aW5nIHRoYXQgbm8gdHlwZSBub2RlIHdhcyB2aXNpdGVkIHRoYXQgY291bGQgbm90IGJlIGVtaXR0ZWQuXG4gIGZ1bmN0aW9uIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogSU5FTElHSUJMRXx1bmRlZmluZWQge1xuICAgIC8vIEVtaXR0aW5nIGEgdHlwZSByZWZlcmVuY2Ugbm9kZSBpbiBhIGRpZmZlcmVudCBjb250ZXh0IHJlcXVpcmVzIHRoYXQgYW4gaW1wb3J0IGZvciB0aGUgdHlwZVxuICAgIC8vIGNhbiBiZSBjcmVhdGVkLiBJZiBhIHR5cGUgcmVmZXJlbmNlIG5vZGUgY2Fubm90IGJlIGVtaXR0ZWQsIGBJTkVMSUdJQkxFYCBpcyByZXR1cm5lZCB0byBzdG9wXG4gICAgLy8gdGhlIHdhbGsuXG4gICAgaWYgKHRzLmlzVHlwZVJlZmVyZW5jZU5vZGUobm9kZSkgJiYgIWNhbkVtaXRUeXBlUmVmZXJlbmNlKG5vZGUpKSB7XG4gICAgICByZXR1cm4gSU5FTElHSUJMRTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbkVtaXRUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gcmVzb2x2ZXIodHlwZSk7XG5cbiAgICAvLyBJZiB0aGUgdHlwZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQsIGl0IGNhbiBub3QgYmUgZW1pdHRlZC5cbiAgICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHR5cGUgaXMgYSByZWZlcmVuY2UsIGNvbnNpZGVyIHRoZSB0eXBlIHRvIGJlIGVsaWdpYmxlIGZvciBlbWl0dGluZy5cbiAgICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgUmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBUaGUgdHlwZSBjYW4gYmUgZW1pdHRlZCBpZiBlaXRoZXIgaXQgZG9lcyBub3QgaGF2ZSBhbnkgdHlwZSBhcmd1bWVudHMsIG9yIGFsbCBvZiB0aGVtIGNhbiBiZVxuICAgIC8vIGVtaXR0ZWQuXG4gICAgcmV0dXJuIHR5cGUudHlwZUFyZ3VtZW50cyA9PT0gdW5kZWZpbmVkIHx8IHR5cGUudHlwZUFyZ3VtZW50cy5ldmVyeShjYW5FbWl0VHlwZVdvcmtlcik7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIGB0cy5UeXBlTm9kZWAsIHRoaXMgY2xhc3MgZGVyaXZlcyBhbiBlcXVpdmFsZW50IGB0cy5UeXBlTm9kZWAgdGhhdCBoYXMgYmVlbiBlbWl0dGVkIGludG9cbiAqIGEgZGlmZmVyZW50IGNvbnRleHQuXG4gKlxuICogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY29kZTpcbiAqXG4gKiBgYGBcbiAqIGltcG9ydCB7TmdJdGVyYWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKlxuICogY2xhc3MgTmdGb3JPZjxULCBVIGV4dGVuZHMgTmdJdGVyYWJsZTxUPj4ge31cbiAqIGBgYFxuICpcbiAqIEhlcmUsIHRoZSBnZW5lcmljIHR5cGUgcGFyYW1ldGVycyBgVGAgYW5kIGBVYCBjYW4gYmUgZW1pdHRlZCBpbnRvIGEgZGlmZmVyZW50IGNvbnRleHQsIGFzIHRoZVxuICogdHlwZSByZWZlcmVuY2UgdG8gYE5nSXRlcmFibGVgIG9yaWdpbmF0ZXMgZnJvbSBhbiBhYnNvbHV0ZSBtb2R1bGUgaW1wb3J0IHNvIHRoYXQgaXQgY2FuIGJlXG4gKiBlbWl0dGVkIGFueXdoZXJlLCB1c2luZyB0aGF0IHNhbWUgbW9kdWxlIGltcG9ydC4gVGhlIHByb2Nlc3Mgb2YgZW1pdHRpbmcgdHJhbnNsYXRlcyB0aGVcbiAqIGBOZ0l0ZXJhYmxlYCB0eXBlIHJlZmVyZW5jZSB0byBhIHR5cGUgcmVmZXJlbmNlIHRoYXQgaXMgdmFsaWQgaW4gdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgaXNcbiAqIGVtaXR0ZWQsIGZvciBleGFtcGxlOlxuICpcbiAqIGBgYFxuICogaW1wb3J0ICogYXMgaTAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgKiBhcyBpMSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuICpcbiAqIGNvbnN0IF9jdG9yMTogPFQsIFUgZXh0ZW5kcyBpMC5OZ0l0ZXJhYmxlPFQ+PihvOiBQaWNrPGkxLk5nRm9yT2Y8VCwgVT4sICduZ0Zvck9mJz4pOlxuICogaTEuTmdGb3JPZjxULCBVPjtcbiAqIGBgYFxuICpcbiAqIE5vdGljZSBob3cgdGhlIHR5cGUgcmVmZXJlbmNlIGZvciBgTmdJdGVyYWJsZWAgaGFzIGJlZW4gdHJhbnNsYXRlZCBpbnRvIGEgcXVhbGlmaWVkIG5hbWUsXG4gKiByZWZlcnJpbmcgdG8gdGhlIG5hbWVzcGFjZSBpbXBvcnQgdGhhdCB3YXMgY3JlYXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVFbWl0dGVyIHtcbiAgLyoqXG4gICAqIFJlc29sdmVyIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgYSBgUmVmZXJlbmNlYCBjb3JyZXNwb25kaW5nIHdpdGggYSBgdHMuVHlwZVJlZmVyZW5jZU5vZGVgLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlcjogVHlwZVJlZmVyZW5jZVJlc29sdmVyO1xuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGBSZWZlcmVuY2VgLCB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgYWN0dWFsIGVtaXR0aW5nIHdvcmsuIEl0IHNob3VsZFxuICAgKiBwcm9kdWNlIGEgYHRzLlR5cGVOb2RlYCB0aGF0IGlzIHZhbGlkIHdpdGhpbiB0aGUgZGVzaXJlZCBjb250ZXh0LlxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0UmVmZXJlbmNlOiAocmVmOiBSZWZlcmVuY2UpID0+IHRzLlR5cGVOb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHJlc29sdmVyOiBUeXBlUmVmZXJlbmNlUmVzb2x2ZXIsIGVtaXRSZWZlcmVuY2U6IChyZWY6IFJlZmVyZW5jZSkgPT4gdHMuVHlwZU5vZGUpIHtcbiAgICB0aGlzLnJlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgdGhpcy5lbWl0UmVmZXJlbmNlID0gZW1pdFJlZmVyZW5jZTtcbiAgfVxuXG4gIGVtaXRUeXBlKHR5cGU6IHRzLlR5cGVOb2RlKTogdHMuVHlwZU5vZGUge1xuICAgIGNvbnN0IHR5cGVSZWZlcmVuY2VUcmFuc2Zvcm1lcjogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlR5cGVOb2RlPiA9IGNvbnRleHQgPT4ge1xuICAgICAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlID0+IHtcbiAgICAgICAgaWYgKHRzLmlzVHlwZVJlZmVyZW5jZU5vZGUobm9kZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbWl0VHlwZVJlZmVyZW5jZShub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHMudmlzaXRFYWNoQ2hpbGQobm9kZSwgdmlzaXROb2RlLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBub2RlID0+IHRzLnZpc2l0Tm9kZShub2RlLCB2aXNpdE5vZGUpO1xuICAgIH07XG4gICAgcmV0dXJuIHRzLnRyYW5zZm9ybSh0eXBlLCBbdHlwZVJlZmVyZW5jZVRyYW5zZm9ybWVyXSkudHJhbnNmb3JtZWRbMF07XG4gIH1cblxuICBwcml2YXRlIGVtaXRUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogdHMuVHlwZU5vZGUge1xuICAgIC8vIERldGVybWluZSB0aGUgcmVmZXJlbmNlIHRoYXQgdGhlIHR5cGUgY29ycmVzcG9uZHMgd2l0aC5cbiAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLnJlc29sdmVyKHR5cGUpO1xuICAgIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGVtaXQgYW4gdW5yZXNvbHZlZCByZWZlcmVuY2UnKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB0eXBlIGFyZ3VtZW50cywgaWYgYW55LlxuICAgIGxldCB0eXBlQXJndW1lbnRzOiB0cy5Ob2RlQXJyYXk8dHMuVHlwZU5vZGU+fHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZS50eXBlQXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHR5cGVBcmd1bWVudHMgPSB0cy5jcmVhdGVOb2RlQXJyYXkodHlwZS50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJnID0+IHRoaXMuZW1pdFR5cGUodHlwZUFyZykpKTtcbiAgICB9XG5cbiAgICAvLyBFbWl0IHRoZSB0eXBlIG5hbWUuXG4gICAgbGV0IHR5cGVOYW1lID0gdHlwZS50eXBlTmFtZTtcbiAgICBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2YgUmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCBlbWl0dGVkVHlwZSA9IHRoaXMuZW1pdFJlZmVyZW5jZShyZWZlcmVuY2UpO1xuICAgICAgaWYgKCF0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKGVtaXR0ZWRUeXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFR5cGVSZWZlcmVuY2VOb2RlIGZvciBlbWl0dGVkIHJlZmVyZW5jZSwgZ290ICR7XG4gICAgICAgICAgICB0cy5TeW50YXhLaW5kW2VtaXR0ZWRUeXBlLmtpbmRdfWApO1xuICAgICAgfVxuXG4gICAgICB0eXBlTmFtZSA9IGVtaXR0ZWRUeXBlLnR5cGVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiB0cy51cGRhdGVUeXBlUmVmZXJlbmNlTm9kZSh0eXBlLCB0eXBlTmFtZSwgdHlwZUFyZ3VtZW50cyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,93 +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 { canEmitType, TypeEmitter } from './type_emitter';
12
- /**
13
- * See `TypeEmitter` for more information on the emitting process.
14
- */
15
- export class TypeParameterEmitter {
16
- constructor(typeParameters, reflector) {
17
- this.typeParameters = typeParameters;
18
- this.reflector = reflector;
19
- }
20
- /**
21
- * Determines whether the type parameters can be emitted. If this returns true, then a call to
22
- * `emit` is known to succeed. Vice versa, if false is returned then `emit` should not be
23
- * called, as it would fail.
24
- */
25
- canEmit() {
26
- if (this.typeParameters === undefined) {
27
- return true;
28
- }
29
- return this.typeParameters.every(typeParam => {
30
- return this.canEmitType(typeParam.constraint) && this.canEmitType(typeParam.default);
31
- });
32
- }
33
- canEmitType(type) {
34
- if (type === undefined) {
35
- return true;
36
- }
37
- return canEmitType(type, typeReference => this.resolveTypeReference(typeReference));
38
- }
39
- /**
40
- * Emits the type parameters using the provided emitter function for `Reference`s.
41
- */
42
- emit(emitReference) {
43
- if (this.typeParameters === undefined) {
44
- return undefined;
45
- }
46
- const emitter = new TypeEmitter(type => this.resolveTypeReference(type), emitReference);
47
- return this.typeParameters.map(typeParam => {
48
- const constraint = typeParam.constraint !== undefined ? emitter.emitType(typeParam.constraint) : undefined;
49
- const defaultType = typeParam.default !== undefined ? emitter.emitType(typeParam.default) : undefined;
50
- return ts.updateTypeParameterDeclaration(
51
- /* node */ typeParam,
52
- /* name */ typeParam.name,
53
- /* constraint */ constraint,
54
- /* defaultType */ defaultType);
55
- });
56
- }
57
- resolveTypeReference(type) {
58
- const target = ts.isIdentifier(type.typeName) ? type.typeName : type.typeName.right;
59
- const declaration = this.reflector.getDeclarationOfIdentifier(target);
60
- // If no declaration could be resolved or does not have a `ts.Declaration`, the type cannot be
61
- // resolved.
62
- if (declaration === null || declaration.node === null) {
63
- return null;
64
- }
65
- // If the declaration corresponds with a local type parameter, the type reference can be used
66
- // as is.
67
- if (this.isLocalTypeParameter(declaration.node)) {
68
- return type;
69
- }
70
- let owningModule = null;
71
- if (declaration.viaModule !== null) {
72
- owningModule = {
73
- specifier: declaration.viaModule,
74
- resolutionContext: type.getSourceFile().fileName,
75
- };
76
- }
77
- // If no owning module is known, the reference needs to be exported to be able to emit an import
78
- // statement for it. If the declaration is not exported, null is returned to prevent emit.
79
- if (owningModule === null && !this.isStaticallyExported(declaration.node)) {
80
- return null;
81
- }
82
- return new Reference(declaration.node, owningModule);
83
- }
84
- isStaticallyExported(decl) {
85
- return isNamedClassDeclaration(decl) && this.reflector.isStaticallyExported(decl);
86
- }
87
- isLocalTypeParameter(decl) {
88
- // Checking for local type parameters only occurs during resolution of type parameters, so it is
89
- // guaranteed that type parameters are present.
90
- return this.typeParameters.some(param => param === decl);
91
- }
92
- }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9wYXJhbWV0ZXJfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90eXBlX3BhcmFtZXRlcl9lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBZSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFrQix1QkFBdUIsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRixPQUFPLEVBQUMsV0FBVyxFQUF5QixXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvRTs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDWSxjQUFtRSxFQUNuRSxTQUF5QjtRQUR6QixtQkFBYyxHQUFkLGNBQWMsQ0FBcUQ7UUFDbkUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7SUFBRyxDQUFDO0lBRXpDOzs7O09BSUc7SUFDSCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUEyQjtRQUM3QyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sV0FBVyxDQUFDLElBQUks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LEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7T3duaW5nTW9kdWxlLCBSZWZlcmVuY2V9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtEZWNsYXJhdGlvbk5vZGUsIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7Y2FuRW1pdFR5cGUsIFJlc29sdmVkVHlwZVJlZmVyZW5jZSwgVHlwZUVtaXR0ZXJ9IGZyb20gJy4vdHlwZV9lbWl0dGVyJztcblxuXG4vKipcbiAqIFNlZSBgVHlwZUVtaXR0ZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBlbWl0dGluZyBwcm9jZXNzLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZVBhcmFtZXRlckVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgdHlwZVBhcmFtZXRlcnM6IHRzLk5vZGVBcnJheTx0cy5UeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24+fHVuZGVmaW5lZCxcbiAgICAgIHByaXZhdGUgcmVmbGVjdG9yOiBSZWZsZWN0aW9uSG9zdCkge31cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0eXBlIHBhcmFtZXRlcnMgY2FuIGJlIGVtaXR0ZWQuIElmIHRoaXMgcmV0dXJucyB0cnVlLCB0aGVuIGEgY2FsbCB0b1xuICAgKiBgZW1pdGAgaXMga25vd24gdG8gc3VjY2VlZC4gVmljZSB2ZXJzYSwgaWYgZmFsc2UgaXMgcmV0dXJuZWQgdGhlbiBgZW1pdGAgc2hvdWxkIG5vdCBiZVxuICAgKiBjYWxsZWQsIGFzIGl0IHdvdWxkIGZhaWwuXG4gICAqL1xuICBjYW5FbWl0KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR5cGVQYXJhbWV0ZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzLmV2ZXJ5KHR5cGVQYXJhbSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5jYW5FbWl0VHlwZSh0eXBlUGFyYW0uY29uc3RyYWludCkgJiYgdGhpcy5jYW5FbWl0VHlwZSh0eXBlUGFyYW0uZGVmYXVsdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNhbkVtaXRUeXBlKHR5cGU6IHRzLlR5cGVOb2RlfHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjYW5FbWl0VHlwZSh0eXBlLCB0eXBlUmVmZXJlbmNlID0+IHRoaXMucmVzb2x2ZVR5cGVSZWZlcmVuY2UodHlwZVJlZmVyZW5jZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB0eXBlIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHByb3ZpZGVkIGVtaXR0ZXIgZnVuY3Rpb24gZm9yIGBSZWZlcmVuY2Vgcy5cbiAgICovXG4gIGVtaXQoZW1pdFJlZmVyZW5jZTogKHJlZjogUmVmZXJlbmNlKSA9PiB0cy5UeXBlTm9kZSk6IHRzLlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbltdfHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMudHlwZVBhcmFtZXRlcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IFR5cGVFbWl0dGVyKHR5cGUgPT4gdGhpcy5yZXNvbHZlVHlwZVJlZmVyZW5jZSh0eXBlKSwgZW1pdFJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gdGhpcy50eXBlUGFyYW1ldGVycy5tYXAodHlwZVBhcmFtID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPVxuICAgICAgICAgIHR5cGVQYXJhbS5jb25zdHJhaW50ICE9PSB1bmRlZmluZWQgPyBlbWl0dGVyLmVtaXRUeXBlKHR5cGVQYXJhbS5jb25zdHJhaW50KSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlID1cbiAgICAgICAgICB0eXBlUGFyYW0uZGVmYXVsdCAhPT0gdW5kZWZpbmVkID8gZW1pdHRlci5lbWl0VHlwZSh0eXBlUGFyYW0uZGVmYXVsdCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiB0cy51cGRhdGVUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oXG4gICAgICAgICAgLyogbm9kZSAqLyB0eXBlUGFyYW0sXG4gICAgICAgICAgLyogbmFtZSAqLyB0eXBlUGFyYW0ubmFtZSxcbiAgICAgICAgICAvKiBjb25zdHJhaW50ICovIGNvbnN0cmFpbnQsXG4gICAgICAgICAgLyogZGVmYXVsdFR5cGUgKi8gZGVmYXVsdFR5cGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVHlwZVJlZmVyZW5jZSh0eXBlOiB0cy5UeXBlUmVmZXJlbmNlTm9kZSk6IFJlc29sdmVkVHlwZVJlZmVyZW5jZSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdHMuaXNJZGVudGlmaWVyKHR5cGUudHlwZU5hbWUpID8gdHlwZS50eXBlTmFtZSA6IHR5cGUudHlwZU5hbWUucmlnaHQ7XG4gICAgY29uc3QgZGVjbGFyYXRpb24gPSB0aGlzLnJlZmxlY3Rvci5nZXREZWNsYXJhdGlvbk9mSWRlbnRpZmllcih0YXJnZXQpO1xuXG4gICAgLy8gSWYgbm8gZGVjbGFyYXRpb24gY291bGQgYmUgcmVzb2x2ZWQgb3IgZG9lcyBub3QgaGF2ZSBhIGB0cy5EZWNsYXJhdGlvbmAsIHRoZSB0eXBlIGNhbm5vdCBiZVxuICAgIC8vIHJlc29sdmVkLlxuICAgIGlmIChkZWNsYXJhdGlvbiA9PT0gbnVsbCB8fCBkZWNsYXJhdGlvbi5ub2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGVjbGFyYXRpb24gY29ycmVzcG9uZHMgd2l0aCBhIGxvY2FsIHR5cGUgcGFyYW1ldGVyLCB0aGUgdHlwZSByZWZlcmVuY2UgY2FuIGJlIHVzZWRcbiAgICAvLyBhcyBpcy5cbiAgICBpZiAodGhpcy5pc0xvY2FsVHlwZVBhcmFtZXRlcihkZWNsYXJhdGlvbi5ub2RlKSkge1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgbGV0IG93bmluZ01vZHVsZTogT3duaW5nTW9kdWxlfG51bGwgPSBudWxsO1xuICAgIGlmIChkZWNsYXJhdGlvbi52aWFNb2R1bGUgIT09IG51bGwpIHtcbiAgICAgIG93bmluZ01vZHVsZSA9IHtcbiAgICAgICAgc3BlY2lmaWVyOiBkZWNsYXJhdGlvbi52aWFNb2R1bGUsXG4gICAgICAgIHJlc29sdXRpb25Db250ZXh0OiB0eXBlLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gb3duaW5nIG1vZHVsZSBpcyBrbm93biwgdGhlIHJlZmVyZW5jZSBuZWVkcyB0byBiZSBleHBvcnRlZCB0byBiZSBhYmxlIHRvIGVtaXQgYW4gaW1wb3J0XG4gICAgLy8gc3RhdGVtZW50IGZvciBpdC4gSWYgdGhlIGRlY2xhcmF0aW9uIGlzIG5vdCBleHBvcnRlZCwgbnVsbCBpcyByZXR1cm5lZCB0byBwcmV2ZW50IGVtaXQuXG4gICAgaWYgKG93bmluZ01vZHVsZSA9PT0gbnVsbCAmJiAhdGhpcy5pc1N0YXRpY2FsbHlFeHBvcnRlZChkZWNsYXJhdGlvbi5ub2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZWZlcmVuY2UoZGVjbGFyYXRpb24ubm9kZSwgb3duaW5nTW9kdWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdGF0aWNhbGx5RXhwb3J0ZWQoZGVjbDogRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uKGRlY2wpICYmIHRoaXMucmVmbGVjdG9yLmlzU3RhdGljYWxseUV4cG9ydGVkKGRlY2wpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xvY2FsVHlwZVBhcmFtZXRlcihkZWNsOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgICAvLyBDaGVja2luZyBmb3IgbG9jYWwgdHlwZSBwYXJhbWV0ZXJzIG9ubHkgb2NjdXJzIGR1cmluZyByZXNvbHV0aW9uIG9mIHR5cGUgcGFyYW1ldGVycywgc28gaXQgaXNcbiAgICAvLyBndWFyYW50ZWVkIHRoYXQgdHlwZSBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LlxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzIS5zb21lKHBhcmFtID0+IHBhcmFtID09PSBkZWNsKTtcbiAgfVxufVxuIl19
File without changes
@@ -1,18 +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 { dirname, relative, resolve, toRelativeImport } from '../../file_system';
9
- import { stripExtension } from '../../file_system/src/util';
10
- export function relativePathBetween(from, to) {
11
- const relativePath = stripExtension(relative(dirname(resolve(from)), resolve(to)));
12
- return relativePath !== '' ? toRelativeImport(relativePath) : null;
13
- }
14
- export function normalizeSeparators(path) {
15
- // TODO: normalize path only for OS that need it.
16
- return path.replace(/\\/g, '/');
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdXRpbC9zcmMvcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVksRUFBRSxFQUFVO0lBQzFELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsT0FBTyxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxpREFBaUQ7SUFDakQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge2Rpcm5hbWUsIHJlbGF0aXZlLCByZXNvbHZlLCB0b1JlbGF0aXZlSW1wb3J0fSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge3N0cmlwRXh0ZW5zaW9ufSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbS9zcmMvdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGl2ZVBhdGhCZXR3ZWVuKGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZ3xudWxsIHtcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gc3RyaXBFeHRlbnNpb24ocmVsYXRpdmUoZGlybmFtZShyZXNvbHZlKGZyb20pKSwgcmVzb2x2ZSh0bykpKTtcbiAgcmV0dXJuIHJlbGF0aXZlUGF0aCAhPT0gJycgPyB0b1JlbGF0aXZlSW1wb3J0KHJlbGF0aXZlUGF0aCkgOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2VwYXJhdG9ycyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBUT0RPOiBub3JtYWxpemUgcGF0aCBvbmx5IGZvciBPUyB0aGF0IG5lZWQgaXQuXG4gIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbn1cbiJdfQ==