@angular/compiler-cli 12.1.0-next.5 → 12.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) 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_component_linker_1.js +2 -3
  3. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  4. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  5. package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
  6. package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
  7. package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
  8. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
  9. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
  10. package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
  11. package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
  12. package/ngcc/src/host/commonjs_host.js +1 -1
  13. package/ngcc/src/host/esm2015_host.js +1 -1
  14. package/ngcc/src/host/esm5_host.js +1 -1
  15. package/ngcc/src/host/umd_host.js +1 -1
  16. package/ngcc/src/packages/build_marker.d.ts +1 -1
  17. package/ngcc/src/packages/build_marker.js +1 -1
  18. package/ngcc/src/packages/configuration.d.ts +7 -0
  19. package/ngcc/src/packages/configuration.js +8 -3
  20. package/ngcc/src/packages/entry_point_manifest.js +2 -2
  21. package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
  22. package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
  23. package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
  24. package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
  25. package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
  26. package/package.json +2 -2
  27. package/src/ngtsc/annotations/src/component.d.ts +2 -0
  28. package/src/ngtsc/annotations/src/component.js +6 -2
  29. package/src/ngtsc/annotations/src/directive.js +1 -1
  30. package/src/ngtsc/annotations/src/ng_module.js +1 -1
  31. package/src/ngtsc/annotations/src/pipe.js +1 -1
  32. package/src/ngtsc/core/api/src/public_options.d.ts +12 -0
  33. package/src/ngtsc/core/api/src/public_options.js +1 -1
  34. package/src/ngtsc/core/src/compiler.d.ts +5 -0
  35. package/src/ngtsc/core/src/compiler.js +10 -1
  36. package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
  37. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  38. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  39. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  40. package/src/ngtsc/incremental/src/incremental.js +36 -6
  41. package/src/ngtsc/incremental/src/state.d.ts +5 -3
  42. package/src/ngtsc/incremental/src/state.js +1 -1
  43. package/src/ngtsc/indexer/src/template.js +1 -1
  44. package/src/ngtsc/metadata/src/dts.js +2 -3
  45. package/src/ngtsc/metadata/src/inheritance.js +2 -7
  46. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  47. package/src/ngtsc/partial_evaluator/src/diagnostics.js +4 -1
  48. package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +19 -1
  49. package/src/ngtsc/partial_evaluator/src/dynamic.js +12 -4
  50. package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +2 -0
  51. package/src/ngtsc/partial_evaluator/src/interpreter.js +48 -1
  52. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  53. package/src/ngtsc/program.d.ts +1 -0
  54. package/src/ngtsc/program.js +26 -2
  55. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  56. package/src/ngtsc/program_driver/src/api.js +3 -2
  57. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  58. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  59. package/src/ngtsc/reflection/src/typescript.js +4 -1
  60. package/src/ngtsc/transform/src/api.d.ts +6 -0
  61. package/src/ngtsc/transform/src/api.js +1 -1
  62. package/src/ngtsc/transform/src/compilation.d.ts +3 -0
  63. package/src/ngtsc/transform/src/compilation.js +124 -53
  64. package/src/ngtsc/transform/src/transform.js +1 -1
  65. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  66. package/src/ngtsc/typecheck/src/context.js +11 -3
  67. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  68. package/src/ngtsc/typecheck/src/template_symbol_builder.js +36 -4
  69. package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
  70. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  71. package/src/ngtsc/typecheck/src/type_emitter.d.ts +2 -1
  72. package/src/ngtsc/typecheck/src/type_emitter.js +54 -48
  73. package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +2 -0
  74. package/src/ngtsc/typecheck/src/type_parameter_emitter.js +21 -7
  75. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  76. package/src/ngtsc/util/src/visitor.js +1 -8
  77. package/src/ngtsc/xi18n/index.d.ts +9 -0
  78. package/src/ngtsc/xi18n/index.js +22 -0
  79. package/src/ngtsc/xi18n/src/context.d.ts +26 -0
  80. package/src/ngtsc/xi18n/src/context.js +20 -0
  81. package/src/transformers/api.d.ts +0 -3
  82. package/src/transformers/api.js +1 -1
  83. package/src/transformers/i18n.d.ts +14 -0
  84. package/src/transformers/i18n.js +76 -0
  85. package/src/transformers/program.d.ts +0 -4
  86. package/src/transformers/program.js +5 -56
  87. package/src/version.js +1 -1
  88. package/compiler-cli.externs.js +0 -0
  89. package/index.mjs +0 -20
  90. package/linker/babel/babel.externs.js +0 -0
  91. package/linker/babel/index.mjs +0 -11
  92. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  93. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  94. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  95. package/linker/babel/src/babel_plugin.mjs +0 -23
  96. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  97. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  98. package/linker/index.mjs +0 -7
  99. package/linker/linker.externs.js +0 -0
  100. package/linker/src/ast/ast_host.mjs +0 -9
  101. package/linker/src/ast/ast_value.mjs +0 -256
  102. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  103. package/linker/src/ast/utils.mjs +0 -17
  104. package/linker/src/fatal_linker_error.mjs +0 -30
  105. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  106. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  107. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  108. package/linker/src/file_linker/file_linker.mjs +0 -70
  109. package/linker/src/file_linker/get_source_file.mjs +0 -28
  110. package/linker/src/file_linker/linker_environment.mjs +0 -23
  111. package/linker/src/file_linker/linker_options.mjs +0 -16
  112. package/linker/src/file_linker/needs_linking.mjs +0 -27
  113. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  114. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  115. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  116. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  117. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  118. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  119. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  120. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  121. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  122. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  123. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  124. package/linker/src/file_linker/translator.mjs +0 -23
  125. package/linker/src/linker_import_generator.mjs +0 -28
  126. package/ngcc/index.mjs +0 -16
  127. package/ngcc/main-ivy-ngcc.mjs +0 -12
  128. package/ngcc/main-ngcc.mjs +0 -32
  129. package/ngcc/ngcc.externs.js +0 -0
  130. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  131. package/ngcc/src/analysis/migration_host.mjs +0 -80
  132. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  133. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  134. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  135. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  136. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  137. package/ngcc/src/analysis/types.mjs +0 -2
  138. package/ngcc/src/analysis/util.mjs +0 -19
  139. package/ngcc/src/command_line_options.mjs +0 -142
  140. package/ngcc/src/constants.mjs +0 -10
  141. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  142. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  143. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  144. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  145. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  146. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  147. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  148. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  149. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  150. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  151. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  152. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  153. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  154. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  155. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  156. package/ngcc/src/execution/api.mjs +0 -2
  157. package/ngcc/src/execution/cluster/api.mjs +0 -9
  158. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  159. package/ngcc/src/execution/cluster/master.mjs +0 -261
  160. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  161. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  162. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  163. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  164. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  165. package/ngcc/src/execution/tasks/api.mjs +0 -22
  166. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  167. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  168. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  169. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  170. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  171. package/ngcc/src/host/commonjs_host.mjs +0 -220
  172. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  173. package/ngcc/src/host/delegating_host.mjs +0 -140
  174. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  175. package/ngcc/src/host/esm5_host.mjs +0 -721
  176. package/ngcc/src/host/ngcc_host.mjs +0 -15
  177. package/ngcc/src/host/umd_host.mjs +0 -486
  178. package/ngcc/src/host/utils.mjs +0 -12
  179. package/ngcc/src/locking/async_locker.mjs +0 -76
  180. package/ngcc/src/locking/lock_file.mjs +0 -4
  181. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  182. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  183. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  184. package/ngcc/src/locking/sync_locker.mjs +0 -52
  185. package/ngcc/src/main.mjs +0 -134
  186. package/ngcc/src/migrations/migration.mjs +0 -2
  187. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  188. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  189. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  190. package/ngcc/src/migrations/utils.mjs +0 -117
  191. package/ngcc/src/ngcc_options.mjs +0 -119
  192. package/ngcc/src/packages/build_marker.mjs +0 -84
  193. package/ngcc/src/packages/bundle_program.mjs +0 -52
  194. package/ngcc/src/packages/configuration.mjs +0 -250
  195. package/ngcc/src/packages/entry_point.mjs +0 -239
  196. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  197. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  198. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  199. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  200. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  201. package/ngcc/src/packages/transformer.mjs +0 -140
  202. package/ngcc/src/path_mappings.mjs +0 -13
  203. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  204. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  205. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  206. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  207. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  208. package/ngcc/src/rendering/renderer.mjs +0 -170
  209. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  210. package/ngcc/src/rendering/source_maps.mjs +0 -54
  211. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  212. package/ngcc/src/rendering/utils.mjs +0 -20
  213. package/ngcc/src/utils.mjs +0 -144
  214. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  215. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  216. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  217. package/ngcc/src/writing/file_writer.mjs +0 -2
  218. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  219. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  220. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  221. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  222. package/src/diagnostics/typescript_version.mjs +0 -79
  223. package/src/extract_i18n.mjs +0 -46
  224. package/src/language_services.mjs +0 -18
  225. package/src/main.mjs +0 -185
  226. package/src/metadata/bundle_index_host.mjs +0 -107
  227. package/src/metadata/bundler.mjs +0 -556
  228. package/src/metadata/collector.mjs +0 -701
  229. package/src/metadata/evaluator.mjs +0 -643
  230. package/src/metadata/index.mjs +0 -11
  231. package/src/metadata/index_writer.mjs +0 -44
  232. package/src/metadata/schema.mjs +0 -102
  233. package/src/metadata/symbols.mjs +0 -117
  234. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  235. package/src/ngtsc/annotations/index.mjs +0 -15
  236. package/src/ngtsc/annotations/src/api.mjs +0 -9
  237. package/src/ngtsc/annotations/src/component.mjs +0 -1064
  238. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  239. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  240. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  241. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  242. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  243. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  244. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  245. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  246. package/src/ngtsc/annotations/src/util.mjs +0 -495
  247. package/src/ngtsc/core/api/index.mjs +0 -12
  248. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  249. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  250. package/src/ngtsc/core/api/src/options.mjs +0 -9
  251. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  252. package/src/ngtsc/core/api.externs.js +0 -0
  253. package/src/ngtsc/core/core.externs.js +0 -0
  254. package/src/ngtsc/core/index.mjs +0 -10
  255. package/src/ngtsc/core/src/compiler.mjs +0 -908
  256. package/src/ngtsc/core/src/config.mjs +0 -15
  257. package/src/ngtsc/core/src/host.mjs +0 -229
  258. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  259. package/src/ngtsc/cycles/index.mjs +0 -10
  260. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  261. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  262. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  263. package/src/ngtsc/diagnostics/index.mjs +0 -11
  264. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  265. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  266. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  267. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  268. package/src/ngtsc/entry_point/index.mjs +0 -12
  269. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  270. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  271. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  272. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  273. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  274. package/src/ngtsc/file_system/index.mjs +0 -13
  275. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  276. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  277. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  278. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  279. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  280. package/src/ngtsc/file_system/src/types.mjs +0 -9
  281. package/src/ngtsc/file_system/src/util.mjs +0 -22
  282. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  283. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  284. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  285. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  286. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  287. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  288. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  289. package/src/ngtsc/imports/imports.externs.js +0 -0
  290. package/src/ngtsc/imports/index.mjs +0 -14
  291. package/src/ngtsc/imports/src/alias.mjs +0 -137
  292. package/src/ngtsc/imports/src/core.mjs +0 -78
  293. package/src/ngtsc/imports/src/default.mjs +0 -135
  294. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  295. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  296. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  297. package/src/ngtsc/imports/src/references.mjs +0 -137
  298. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  299. package/src/ngtsc/incremental/api.externs.js +0 -0
  300. package/src/ngtsc/incremental/api.mjs +0 -9
  301. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  302. package/src/ngtsc/incremental/index.mjs +0 -12
  303. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  304. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  305. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  306. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  307. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  308. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  309. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  310. package/src/ngtsc/incremental/src/incremental.mjs +0 -267
  311. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  312. package/src/ngtsc/incremental/src/state.mjs +0 -17
  313. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  314. package/src/ngtsc/indexer/index.mjs +0 -11
  315. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  316. package/src/ngtsc/indexer/src/api.mjs +0 -30
  317. package/src/ngtsc/indexer/src/context.mjs +0 -25
  318. package/src/ngtsc/indexer/src/template.mjs +0 -303
  319. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  320. package/src/ngtsc/logging/index.mjs +0 -10
  321. package/src/ngtsc/logging/logging.externs.js +0 -0
  322. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  323. package/src/ngtsc/logging/src/logger.mjs +0 -15
  324. package/src/ngtsc/logging/testing/index.mjs +0 -9
  325. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  326. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  327. package/src/ngtsc/metadata/index.mjs +0 -15
  328. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  329. package/src/ngtsc/metadata/src/api.mjs +0 -13
  330. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  331. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  332. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  333. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  334. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  335. package/src/ngtsc/metadata/src/util.mjs +0 -200
  336. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  337. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  338. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  339. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -171
  340. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -86
  341. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  342. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -683
  343. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  344. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  345. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  346. package/src/ngtsc/perf/index.mjs +0 -11
  347. package/src/ngtsc/perf/perf.externs.js +0 -0
  348. package/src/ngtsc/perf/src/api.mjs +0 -278
  349. package/src/ngtsc/perf/src/clock.mjs +0 -15
  350. package/src/ngtsc/perf/src/noop.mjs +0 -21
  351. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  352. package/src/ngtsc/program.mjs +0 -247
  353. package/src/ngtsc/program_driver/index.mjs +0 -10
  354. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  355. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  356. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  357. package/src/ngtsc/reflection/index.mjs +0 -12
  358. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  359. package/src/ngtsc/reflection/src/host.mjs +0 -73
  360. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  361. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  362. package/src/ngtsc/reflection/src/util.mjs +0 -21
  363. package/src/ngtsc/resource/index.mjs +0 -9
  364. package/src/ngtsc/resource/resource.externs.js +0 -0
  365. package/src/ngtsc/resource/src/loader.mjs +0 -242
  366. package/src/ngtsc/routing/index.mjs +0 -11
  367. package/src/ngtsc/routing/routing.externs.js +0 -0
  368. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  369. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  370. package/src/ngtsc/routing/src/route.mjs +0 -51
  371. package/src/ngtsc/scope/index.mjs +0 -12
  372. package/src/ngtsc/scope/scope.externs.js +0 -0
  373. package/src/ngtsc/scope/src/api.mjs +0 -9
  374. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  375. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  376. package/src/ngtsc/scope/src/local.mjs +0 -531
  377. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  378. package/src/ngtsc/shims/api.externs.js +0 -0
  379. package/src/ngtsc/shims/api.mjs +0 -2
  380. package/src/ngtsc/shims/index.mjs +0 -14
  381. package/src/ngtsc/shims/shims.externs.js +0 -0
  382. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  383. package/src/ngtsc/shims/src/expando.mjs +0 -102
  384. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  385. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  386. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  387. package/src/ngtsc/shims/src/util.mjs +0 -26
  388. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  389. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  390. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  391. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  392. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  393. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  394. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  395. package/src/ngtsc/switch/index.mjs +0 -9
  396. package/src/ngtsc/switch/src/switch.mjs +0 -115
  397. package/src/ngtsc/switch/switch.externs.js +0 -0
  398. package/src/ngtsc/transform/index.mjs +0 -14
  399. package/src/ngtsc/transform/src/alias.mjs +0 -30
  400. package/src/ngtsc/transform/src/api.mjs +0 -63
  401. package/src/ngtsc/transform/src/compilation.mjs +0 -485
  402. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  403. package/src/ngtsc/transform/src/trait.mjs +0 -95
  404. package/src/ngtsc/transform/src/transform.mjs +0 -298
  405. package/src/ngtsc/transform/src/utils.mjs +0 -57
  406. package/src/ngtsc/transform/transform.externs.js +0 -0
  407. package/src/ngtsc/translator/index.mjs +0 -14
  408. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  409. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  410. package/src/ngtsc/translator/src/context.mjs +0 -24
  411. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  412. package/src/ngtsc/translator/src/translator.mjs +0 -317
  413. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  414. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  415. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  416. package/src/ngtsc/translator/translator.externs.js +0 -0
  417. package/src/ngtsc/tsc_plugin.mjs +0 -98
  418. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  419. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  420. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  421. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  422. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  423. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  424. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  425. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  426. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  427. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  428. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  429. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  430. package/src/ngtsc/typecheck/index.mjs +0 -12
  431. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  432. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  433. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  434. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  435. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  436. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  437. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  438. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  439. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  440. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  441. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  442. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  443. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  444. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  445. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -472
  446. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  447. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  448. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  449. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  450. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -140
  451. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -80
  452. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  453. package/src/ngtsc/util/src/path.mjs +0 -18
  454. package/src/ngtsc/util/src/typescript.mjs +0 -143
  455. package/src/ngtsc/util/src/visitor.mjs +0 -107
  456. package/src/ngtsc/util/util.externs.js +0 -0
  457. package/src/perform_compile.mjs +0 -275
  458. package/src/perform_watch.mjs +0 -247
  459. package/src/tooling.mjs +0 -32
  460. package/src/transformers/api.mjs +0 -27
  461. package/src/transformers/compiler_host.mjs +0 -593
  462. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  463. package/src/transformers/entry_points.mjs +0 -10
  464. package/src/transformers/inline_resources.mjs +0 -269
  465. package/src/transformers/lower_expressions.mjs +0 -336
  466. package/src/transformers/metadata_cache.mjs +0 -53
  467. package/src/transformers/metadata_reader.mjs +0 -104
  468. package/src/transformers/node_emitter.mjs +0 -606
  469. package/src/transformers/node_emitter_transform.mjs +0 -78
  470. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  471. package/src/transformers/program.mjs +0 -935
  472. package/src/transformers/r3_metadata_transform.mjs +0 -46
  473. package/src/transformers/r3_transform.mjs +0 -29
  474. package/src/transformers/util.mjs +0 -89
  475. package/src/typescript_support.mjs +0 -57
  476. package/src/version.mjs +0 -15
@@ -1,78 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as ts from 'typescript';
9
- import { TypeScriptNodeEmitter } from './node_emitter';
10
- import { GENERATED_FILES, stripComment } from './util';
11
- function getPreamble(original) {
12
- return `*
13
- * @fileoverview This file was generated by the Angular template compiler. Do not edit.
14
- * ${original}
15
- * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
16
- * tslint:disable
17
- `;
18
- }
19
- /**
20
- * Returns a transformer that does two things for generated files (ngfactory etc):
21
- * - adds a fileoverview JSDoc comment containing Closure Compiler specific "suppress"ions in JSDoc.
22
- * The new comment will contain any fileoverview comment text from the original source file this
23
- * file was generated from.
24
- * - updates generated files that are not in the given map of generatedFiles to have an empty
25
- * list of statements as their body.
26
- */
27
- export function getAngularEmitterTransformFactory(generatedFiles, program, annotateForClosureCompiler) {
28
- return function () {
29
- const emitter = new TypeScriptNodeEmitter(annotateForClosureCompiler);
30
- return function (sourceFile) {
31
- const g = generatedFiles.get(sourceFile.fileName);
32
- const orig = g && program.getSourceFile(g.srcFileUrl);
33
- let originalComment = '';
34
- if (orig)
35
- originalComment = getFileoverviewComment(orig);
36
- const preamble = getPreamble(originalComment);
37
- if (g && g.stmts) {
38
- const [newSourceFile] = emitter.updateSourceFile(sourceFile, g.stmts, preamble);
39
- return newSourceFile;
40
- }
41
- else if (GENERATED_FILES.test(sourceFile.fileName)) {
42
- // The file should be empty, but emitter.updateSourceFile would still add imports
43
- // and various minutiae.
44
- // Clear out the source file entirely, only including the preamble comment, so that
45
- // ngc produces an empty .js file.
46
- const commentStmt = ts.createNotEmittedStatement(sourceFile);
47
- ts.addSyntheticLeadingComment(commentStmt, ts.SyntaxKind.MultiLineCommentTrivia, preamble,
48
- /* hasTrailingNewline */ true);
49
- return ts.updateSourceFileNode(sourceFile, [commentStmt]);
50
- }
51
- return sourceFile;
52
- };
53
- };
54
- }
55
- /**
56
- * Parses and returns the comment text (without start and end markers) of a \@fileoverview comment
57
- * in the given source file. Returns the empty string if no such comment can be found.
58
- */
59
- function getFileoverviewComment(sourceFile) {
60
- const trivia = sourceFile.getFullText().substring(0, sourceFile.getStart());
61
- const leadingComments = ts.getLeadingCommentRanges(trivia, 0);
62
- if (!leadingComments || leadingComments.length === 0)
63
- return '';
64
- const comment = leadingComments[0];
65
- if (comment.kind !== ts.SyntaxKind.MultiLineCommentTrivia)
66
- return '';
67
- // Only comments separated with a \n\n from the file contents are considered file-level comments
68
- // in TypeScript.
69
- if (sourceFile.getFullText().substring(comment.end, comment.end + 2) !== '\n\n')
70
- return '';
71
- const commentText = sourceFile.getFullText().substring(comment.pos, comment.end);
72
- // Closure Compiler ignores @suppress and similar if the comment contains @license.
73
- if (commentText.indexOf('@license') !== -1)
74
- return '';
75
- // Also remove any leading `* ` from the first line in case it was a JSDOC comment
76
- return stripComment(commentText).replace(/^\*\s+/, '');
77
- }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9lbWl0dGVyX3RyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdHJhbnNmb3JtZXJzL25vZGVfZW1pdHRlcl90cmFuc2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFckQsU0FBUyxXQUFXLENBQUMsUUFBZ0I7SUFDbkMsT0FBTzs7S0FFSixRQUFROzs7RUFHWCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQzdDLGNBQTBDLEVBQUUsT0FBbUIsRUFDL0QsMEJBQW1DO0lBQ3JDLE9BQU87UUFDTCxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFxQixDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdEUsT0FBTyxVQUFTLFVBQXlCO1lBQ3ZDLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN0RCxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJO2dCQUFFLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDaEIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDaEYsT0FBTyxhQUFhLENBQUM7YUFDdEI7aUJBQU0sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDcEQsaUZBQWlGO2dCQUNqRix3QkFBd0I7Z0JBQ3hCLG1GQUFtRjtnQkFDbkYsa0NBQWtDO2dCQUNsQyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdELEVBQUUsQ0FBQywwQkFBMEIsQ0FDekIsV0FBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsUUFBUTtnQkFDM0Qsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDM0Q7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxVQUF5QjtJQUN2RCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RSxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDaEUsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLHNCQUFzQjtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3JFLGdHQUFnRztJQUNoRyxpQkFBaUI7SUFDakIsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxNQUFNO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDM0YsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRixtRkFBbUY7SUFDbkYsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3RELGtGQUFrRjtJQUNsRixPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtHZW5lcmF0ZWRGaWxlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtUeXBlU2NyaXB0Tm9kZUVtaXR0ZXJ9IGZyb20gJy4vbm9kZV9lbWl0dGVyJztcbmltcG9ydCB7R0VORVJBVEVEX0ZJTEVTLCBzdHJpcENvbW1lbnR9IGZyb20gJy4vdXRpbCc7XG5cbmZ1bmN0aW9uIGdldFByZWFtYmxlKG9yaWdpbmFsOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGAqXG4gKiBAZmlsZW92ZXJ2aWV3IFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBBbmd1bGFyIHRlbXBsYXRlIGNvbXBpbGVyLiBEbyBub3QgZWRpdC5cbiAqICR7b3JpZ2luYWx9XG4gKiBAc3VwcHJlc3Mge3N1c3BpY2lvdXNDb2RlLHVzZWxlc3NDb2RlLG1pc3NpbmdQcm9wZXJ0aWVzLG1pc3NpbmdPdmVycmlkZSxjaGVja1R5cGVzLGV4dHJhUmVxdWlyZX1cbiAqIHRzbGludDpkaXNhYmxlXG4gYDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgdHJhbnNmb3JtZXIgdGhhdCBkb2VzIHR3byB0aGluZ3MgZm9yIGdlbmVyYXRlZCBmaWxlcyAobmdmYWN0b3J5IGV0Yyk6XG4gKiAtIGFkZHMgYSBmaWxlb3ZlcnZpZXcgSlNEb2MgY29tbWVudCBjb250YWluaW5nIENsb3N1cmUgQ29tcGlsZXIgc3BlY2lmaWMgXCJzdXBwcmVzc1wiaW9ucyBpbiBKU0RvYy5cbiAqICAgVGhlIG5ldyBjb21tZW50IHdpbGwgY29udGFpbiBhbnkgZmlsZW92ZXJ2aWV3IGNvbW1lbnQgdGV4dCBmcm9tIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSB0aGlzXG4gKiAgIGZpbGUgd2FzIGdlbmVyYXRlZCBmcm9tLlxuICogLSB1cGRhdGVzIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBub3QgaW4gdGhlIGdpdmVuIG1hcCBvZiBnZW5lcmF0ZWRGaWxlcyB0byBoYXZlIGFuIGVtcHR5XG4gKiAgIGxpc3Qgb2Ygc3RhdGVtZW50cyBhcyB0aGVpciBib2R5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5ndWxhckVtaXR0ZXJUcmFuc2Zvcm1GYWN0b3J5KFxuICAgIGdlbmVyYXRlZEZpbGVzOiBNYXA8c3RyaW5nLCBHZW5lcmF0ZWRGaWxlPiwgcHJvZ3JhbTogdHMuUHJvZ3JhbSxcbiAgICBhbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlcjogYm9vbGVhbik6ICgpID0+IChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSA9PiB0cy5Tb3VyY2VGaWxlIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgVHlwZVNjcmlwdE5vZGVFbWl0dGVyKGFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICAgICAgY29uc3QgZyA9IGdlbmVyYXRlZEZpbGVzLmdldChzb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgIGNvbnN0IG9yaWcgPSBnICYmIHByb2dyYW0uZ2V0U291cmNlRmlsZShnLnNyY0ZpbGVVcmwpO1xuICAgICAgbGV0IG9yaWdpbmFsQ29tbWVudCA9ICcnO1xuICAgICAgaWYgKG9yaWcpIG9yaWdpbmFsQ29tbWVudCA9IGdldEZpbGVvdmVydmlld0NvbW1lbnQob3JpZyk7XG4gICAgICBjb25zdCBwcmVhbWJsZSA9IGdldFByZWFtYmxlKG9yaWdpbmFsQ29tbWVudCk7XG4gICAgICBpZiAoZyAmJiBnLnN0bXRzKSB7XG4gICAgICAgIGNvbnN0IFtuZXdTb3VyY2VGaWxlXSA9IGVtaXR0ZXIudXBkYXRlU291cmNlRmlsZShzb3VyY2VGaWxlLCBnLnN0bXRzLCBwcmVhbWJsZSk7XG4gICAgICAgIHJldHVybiBuZXdTb3VyY2VGaWxlO1xuICAgICAgfSBlbHNlIGlmIChHRU5FUkFURURfRklMRVMudGVzdChzb3VyY2VGaWxlLmZpbGVOYW1lKSkge1xuICAgICAgICAvLyBUaGUgZmlsZSBzaG91bGQgYmUgZW1wdHksIGJ1dCBlbWl0dGVyLnVwZGF0ZVNvdXJjZUZpbGUgd291bGQgc3RpbGwgYWRkIGltcG9ydHNcbiAgICAgICAgLy8gYW5kIHZhcmlvdXMgbWludXRpYWUuXG4gICAgICAgIC8vIENsZWFyIG91dCB0aGUgc291cmNlIGZpbGUgZW50aXJlbHksIG9ubHkgaW5jbHVkaW5nIHRoZSBwcmVhbWJsZSBjb21tZW50LCBzbyB0aGF0XG4gICAgICAgIC8vIG5nYyBwcm9kdWNlcyBhbiBlbXB0eSAuanMgZmlsZS5cbiAgICAgICAgY29uc3QgY29tbWVudFN0bXQgPSB0cy5jcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50KHNvdXJjZUZpbGUpO1xuICAgICAgICB0cy5hZGRTeW50aGV0aWNMZWFkaW5nQ29tbWVudChcbiAgICAgICAgICAgIGNvbW1lbnRTdG10LCB0cy5TeW50YXhLaW5kLk11bHRpTGluZUNvbW1lbnRUcml2aWEsIHByZWFtYmxlLFxuICAgICAgICAgICAgLyogaGFzVHJhaWxpbmdOZXdsaW5lICovIHRydWUpO1xuICAgICAgICByZXR1cm4gdHMudXBkYXRlU291cmNlRmlsZU5vZGUoc291cmNlRmlsZSwgW2NvbW1lbnRTdG10XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc291cmNlRmlsZTtcbiAgICB9O1xuICB9O1xufVxuXG4vKipcbiAqIFBhcnNlcyBhbmQgcmV0dXJucyB0aGUgY29tbWVudCB0ZXh0ICh3aXRob3V0IHN0YXJ0IGFuZCBlbmQgbWFya2Vycykgb2YgYSBcXEBmaWxlb3ZlcnZpZXcgY29tbWVudFxuICogaW4gdGhlIGdpdmVuIHNvdXJjZSBmaWxlLiBSZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcgaWYgbm8gc3VjaCBjb21tZW50IGNhbiBiZSBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZW92ZXJ2aWV3Q29tbWVudChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogc3RyaW5nIHtcbiAgY29uc3QgdHJpdmlhID0gc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpLnN1YnN0cmluZygwLCBzb3VyY2VGaWxlLmdldFN0YXJ0KCkpO1xuICBjb25zdCBsZWFkaW5nQ29tbWVudHMgPSB0cy5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyh0cml2aWEsIDApO1xuICBpZiAoIWxlYWRpbmdDb21tZW50cyB8fCBsZWFkaW5nQ29tbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGNvbnN0IGNvbW1lbnQgPSBsZWFkaW5nQ29tbWVudHNbMF07XG4gIGlmIChjb21tZW50LmtpbmQgIT09IHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSkgcmV0dXJuICcnO1xuICAvLyBPbmx5IGNvbW1lbnRzIHNlcGFyYXRlZCB3aXRoIGEgXFxuXFxuIGZyb20gdGhlIGZpbGUgY29udGVudHMgYXJlIGNvbnNpZGVyZWQgZmlsZS1sZXZlbCBjb21tZW50c1xuICAvLyBpbiBUeXBlU2NyaXB0LlxuICBpZiAoc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpLnN1YnN0cmluZyhjb21tZW50LmVuZCwgY29tbWVudC5lbmQgKyAyKSAhPT0gJ1xcblxcbicpIHJldHVybiAnJztcbiAgY29uc3QgY29tbWVudFRleHQgPSBzb3VyY2VGaWxlLmdldEZ1bGxUZXh0KCkuc3Vic3RyaW5nKGNvbW1lbnQucG9zLCBjb21tZW50LmVuZCk7XG4gIC8vIENsb3N1cmUgQ29tcGlsZXIgaWdub3JlcyBAc3VwcHJlc3MgYW5kIHNpbWlsYXIgaWYgdGhlIGNvbW1lbnQgY29udGFpbnMgQGxpY2Vuc2UuXG4gIGlmIChjb21tZW50VGV4dC5pbmRleE9mKCdAbGljZW5zZScpICE9PSAtMSkgcmV0dXJuICcnO1xuICAvLyBBbHNvIHJlbW92ZSBhbnkgbGVhZGluZyBgKiBgIGZyb20gdGhlIGZpcnN0IGxpbmUgaW4gY2FzZSBpdCB3YXMgYSBKU0RPQyBjb21tZW50XG4gIHJldHVybiBzdHJpcENvbW1lbnQoY29tbWVudFRleHQpLnJlcGxhY2UoL15cXCpcXHMrLywgJycpO1xufVxuIl19
@@ -1,109 +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
- const patchedReferencedAliasesSymbol = Symbol('patchedReferencedAliases');
10
- /**
11
- * Patches the alias declaration reference resolution for a given transformation context
12
- * so that TypeScript knows about the specified alias declarations being referenced.
13
- *
14
- * This exists because TypeScript performs analysis of import usage before transformers
15
- * run and doesn't refresh its state after transformations. This means that imports
16
- * for symbols used as constructor types are elided due to their original type-only usage.
17
- *
18
- * In reality though, since we downlevel decorators and constructor parameters, we want
19
- * these symbols to be retained in the JavaScript output as they will be used as values
20
- * at runtime. We can instruct TypeScript to preserve imports for such identifiers by
21
- * creating a mutable clone of a given import specifier/clause or namespace, but that
22
- * has the downside of preserving the full import in the JS output. See:
23
- * https://github.com/microsoft/TypeScript/blob/3eaa7c65f6f076a08a5f7f1946fd0df7c7430259/src/compiler/transformers/ts.ts#L242-L250.
24
- *
25
- * This is a trick the CLI used in the past for constructor parameter downleveling in JIT:
26
- * https://github.com/angular/angular-cli/blob/b3f84cc5184337666ce61c07b7b9df418030106f/packages/ngtools/webpack/src/transformers/ctor-parameters.ts#L323-L325
27
- * The trick is not ideal though as it preserves the full import (as outlined before), and it
28
- * results in a slow-down due to the type checker being involved multiple times. The CLI worked
29
- * around this import preserving issue by having another complex post-process step that detects and
30
- * elides unused imports. Note that these unused imports could cause unused chunks being generated
31
- * by Webpack if the application or library is not marked as side-effect free.
32
- *
33
- * This is not ideal though, as we basically re-implement the complex import usage resolution
34
- * from TypeScript. We can do better by letting TypeScript do the import eliding, but providing
35
- * information about the alias declarations (e.g. import specifiers) that should not be elided
36
- * because they are actually referenced (as they will now appear in static properties).
37
- *
38
- * More information about these limitations with transformers can be found in:
39
- * 1. https://github.com/Microsoft/TypeScript/issues/17552.
40
- * 2. https://github.com/microsoft/TypeScript/issues/17516.
41
- * 3. https://github.com/angular/tsickle/issues/635.
42
- *
43
- * The patch we apply to tell TypeScript about actual referenced aliases (i.e. imported symbols),
44
- * matches conceptually with the logic that runs internally in TypeScript when the
45
- * `emitDecoratorMetadata` flag is enabled. TypeScript basically surfaces the same problem and
46
- * solves it conceptually the same way, but obviously doesn't need to access an `@internal` API.
47
- *
48
- * The set that is returned by this function is meant to be filled with import declaration nodes
49
- * that have been referenced in a value-position by the transform, such the installed patch can
50
- * ensure that those import declarations are not elided.
51
- *
52
- * See below. Note that this uses sourcegraph as the TypeScript checker file doesn't display on
53
- * Github.
54
- * https://sourcegraph.com/github.com/microsoft/TypeScript@3eaa7c65f6f076a08a5f7f1946fd0df7c7430259/-/blob/src/compiler/checker.ts#L31219-31257
55
- */
56
- export function loadIsReferencedAliasDeclarationPatch(context) {
57
- // If the `getEmitResolver` method is not available, TS most likely changed the
58
- // internal structure of the transformation context. We will abort gracefully.
59
- if (!isTransformationContextWithEmitResolver(context)) {
60
- throwIncompatibleTransformationContextError();
61
- }
62
- const emitResolver = context.getEmitResolver();
63
- // The emit resolver may have been patched already, in which case we return the set of referenced
64
- // aliases that was created when the patch was first applied.
65
- // See https://github.com/angular/angular/issues/40276.
66
- const existingReferencedAliases = emitResolver[patchedReferencedAliasesSymbol];
67
- if (existingReferencedAliases !== undefined) {
68
- return existingReferencedAliases;
69
- }
70
- const originalIsReferencedAliasDeclaration = emitResolver.isReferencedAliasDeclaration;
71
- // If the emit resolver does not have a function called `isReferencedAliasDeclaration`, then
72
- // we abort gracefully as most likely TS changed the internal structure of the emit resolver.
73
- if (originalIsReferencedAliasDeclaration === undefined) {
74
- throwIncompatibleTransformationContextError();
75
- }
76
- const referencedAliases = new Set();
77
- emitResolver.isReferencedAliasDeclaration = function (node, ...args) {
78
- if (isAliasImportDeclaration(node) && referencedAliases.has(node)) {
79
- return true;
80
- }
81
- return originalIsReferencedAliasDeclaration.call(emitResolver, node, ...args);
82
- };
83
- return emitResolver[patchedReferencedAliasesSymbol] = referencedAliases;
84
- }
85
- /**
86
- * Gets whether a given node corresponds to an import alias declaration. Alias
87
- * declarations can be import specifiers, namespace imports or import clauses
88
- * as these do not declare an actual symbol but just point to a target declaration.
89
- */
90
- export function isAliasImportDeclaration(node) {
91
- return ts.isImportSpecifier(node) || ts.isNamespaceImport(node) || ts.isImportClause(node);
92
- }
93
- /** Whether the transformation context exposes its emit resolver. */
94
- function isTransformationContextWithEmitResolver(context) {
95
- return context.getEmitResolver !== undefined;
96
- }
97
- /**
98
- * Throws an error about an incompatible TypeScript version for which the alias
99
- * declaration reference resolution could not be monkey-patched. The error will
100
- * also propose potential solutions that can be applied by developers.
101
- */
102
- function throwIncompatibleTransformationContextError() {
103
- throw Error('Unable to downlevel Angular decorators due to an incompatible TypeScript ' +
104
- 'version.\nIf you recently updated TypeScript and this issue surfaces now, consider ' +
105
- 'downgrading.\n\n' +
106
- 'Please report an issue on the Angular repositories when this issue ' +
107
- 'surfaces and you are using a supposedly compatible TypeScript version.');
108
- }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hfYWxpYXNfcmVmZXJlbmNlX3Jlc29sdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL3RyYW5zZm9ybWVycy9wYXRjaF9hbGlhc19yZWZlcmVuY2VfcmVzb2x1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQVdqQyxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBUTFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q0c7QUFDSCxNQUFNLFVBQVUscUNBQXFDLENBQUMsT0FBaUM7SUFFckYsK0VBQStFO0lBQy9FLDhFQUE4RTtJQUM5RSxJQUFJLENBQUMsdUNBQXVDLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDckQsMkNBQTJDLEVBQUUsQ0FBQztLQUMvQztJQUNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUUvQyxpR0FBaUc7SUFDakcsNkRBQTZEO0lBQzdELHVEQUF1RDtJQUN2RCxNQUFNLHlCQUF5QixHQUFHLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQy9FLElBQUkseUJBQXlCLEtBQUssU0FBUyxFQUFFO1FBQzNDLE9BQU8seUJBQXlCLENBQUM7S0FDbEM7SUFFRCxNQUFNLG9DQUFvQyxHQUFHLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQztJQUN2Riw0RkFBNEY7SUFDNUYsNkZBQTZGO0lBQzdGLElBQUksb0NBQW9DLEtBQUssU0FBUyxFQUFFO1FBQ3RELDJDQUEyQyxFQUFFLENBQUM7S0FDL0M7SUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3BELFlBQVksQ0FBQyw0QkFBNEIsR0FBRyxVQUFTLElBQUksRUFBRSxHQUFHLElBQUk7UUFDaEUsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sb0NBQW9DLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNoRixDQUFDLENBQUM7SUFDRixPQUFPLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0FBQzFFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLElBQWE7SUFFcEQsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0YsQ0FBQztBQUVELG9FQUFvRTtBQUNwRSxTQUFTLHVDQUF1QyxDQUFDLE9BQWlDO0lBRWhGLE9BQVEsT0FBc0QsQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDO0FBQy9GLENBQUM7QUFHRDs7OztHQUlHO0FBQ0gsU0FBUywyQ0FBMkM7SUFDbEQsTUFBTSxLQUFLLENBQ1AsMkVBQTJFO1FBQzNFLHFGQUFxRjtRQUNyRixrQkFBa0I7UUFDbEIscUVBQXFFO1FBQ3JFLHdFQUF3RSxDQUFDLENBQUM7QUFDaEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBEZXNjcmliZXMgYSBUeXBlU2NyaXB0IHRyYW5zZm9ybWF0aW9uIGNvbnRleHQgd2l0aCB0aGUgaW50ZXJuYWwgZW1pdFxuICogcmVzb2x2ZXIgZXhwb3NlZC4gVGhlcmUgYXJlIHJlcXVlc3RzIHVwc3RyZWFtIGluIFR5cGVTY3JpcHQgdG8gZXhwb3NlXG4gKiB0aGF0IGFzIHB1YmxpYyBBUEk6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMTc1MTYuLlxuICovXG5pbnRlcmZhY2UgVHJhbnNmb3JtYXRpb25Db250ZXh0V2l0aFJlc29sdmVyIGV4dGVuZHMgdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0IHtcbiAgZ2V0RW1pdFJlc29sdmVyOiAoKSA9PiBFbWl0UmVzb2x2ZXI7XG59XG5cbmNvbnN0IHBhdGNoZWRSZWZlcmVuY2VkQWxpYXNlc1N5bWJvbCA9IFN5bWJvbCgncGF0Y2hlZFJlZmVyZW5jZWRBbGlhc2VzJyk7XG5cbi8qKiBEZXNjcmliZXMgYSBzdWJzZXQgb2YgdGhlIFR5cGVTY3JpcHQgaW50ZXJuYWwgZW1pdCByZXNvbHZlci4gKi9cbmludGVyZmFjZSBFbWl0UmVzb2x2ZXIge1xuICBpc1JlZmVyZW5jZWRBbGlhc0RlY2xhcmF0aW9uPyhub2RlOiB0cy5Ob2RlLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkO1xuICBbcGF0Y2hlZFJlZmVyZW5jZWRBbGlhc2VzU3ltYm9sXT86IFNldDx0cy5EZWNsYXJhdGlvbj47XG59XG5cbi8qKlxuICogUGF0Y2hlcyB0aGUgYWxpYXMgZGVjbGFyYXRpb24gcmVmZXJlbmNlIHJlc29sdXRpb24gZm9yIGEgZ2l2ZW4gdHJhbnNmb3JtYXRpb24gY29udGV4dFxuICogc28gdGhhdCBUeXBlU2NyaXB0IGtub3dzIGFib3V0IHRoZSBzcGVjaWZpZWQgYWxpYXMgZGVjbGFyYXRpb25zIGJlaW5nIHJlZmVyZW5jZWQuXG4gKlxuICogVGhpcyBleGlzdHMgYmVjYXVzZSBUeXBlU2NyaXB0IHBlcmZvcm1zIGFuYWx5c2lzIG9mIGltcG9ydCB1c2FnZSBiZWZvcmUgdHJhbnNmb3JtZXJzXG4gKiBydW4gYW5kIGRvZXNuJ3QgcmVmcmVzaCBpdHMgc3RhdGUgYWZ0ZXIgdHJhbnNmb3JtYXRpb25zLiBUaGlzIG1lYW5zIHRoYXQgaW1wb3J0c1xuICogZm9yIHN5bWJvbHMgdXNlZCBhcyBjb25zdHJ1Y3RvciB0eXBlcyBhcmUgZWxpZGVkIGR1ZSB0byB0aGVpciBvcmlnaW5hbCB0eXBlLW9ubHkgdXNhZ2UuXG4gKlxuICogSW4gcmVhbGl0eSB0aG91Z2gsIHNpbmNlIHdlIGRvd25sZXZlbCBkZWNvcmF0b3JzIGFuZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCB3ZSB3YW50XG4gKiB0aGVzZSBzeW1ib2xzIHRvIGJlIHJldGFpbmVkIGluIHRoZSBKYXZhU2NyaXB0IG91dHB1dCBhcyB0aGV5IHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXNcbiAqIGF0IHJ1bnRpbWUuIFdlIGNhbiBpbnN0cnVjdCBUeXBlU2NyaXB0IHRvIHByZXNlcnZlIGltcG9ydHMgZm9yIHN1Y2ggaWRlbnRpZmllcnMgYnlcbiAqIGNyZWF0aW5nIGEgbXV0YWJsZSBjbG9uZSBvZiBhIGdpdmVuIGltcG9ydCBzcGVjaWZpZXIvY2xhdXNlIG9yIG5hbWVzcGFjZSwgYnV0IHRoYXRcbiAqIGhhcyB0aGUgZG93bnNpZGUgb2YgcHJlc2VydmluZyB0aGUgZnVsbCBpbXBvcnQgaW4gdGhlIEpTIG91dHB1dC4gU2VlOlxuICogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvM2VhYTdjNjVmNmYwNzZhMDhhNWY3ZjE5NDZmZDBkZjdjNzQzMDI1OS9zcmMvY29tcGlsZXIvdHJhbnNmb3JtZXJzL3RzLnRzI0wyNDItTDI1MC5cbiAqXG4gKiBUaGlzIGlzIGEgdHJpY2sgdGhlIENMSSB1c2VkIGluIHRoZSBwYXN0ICBmb3IgY29uc3RydWN0b3IgcGFyYW1ldGVyIGRvd25sZXZlbGluZyBpbiBKSVQ6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaS9ibG9iL2IzZjg0Y2M1MTg0MzM3NjY2Y2U2MWMwN2I3YjlkZjQxODAzMDEwNmYvcGFja2FnZXMvbmd0b29scy93ZWJwYWNrL3NyYy90cmFuc2Zvcm1lcnMvY3Rvci1wYXJhbWV0ZXJzLnRzI0wzMjMtTDMyNVxuICogVGhlIHRyaWNrIGlzIG5vdCBpZGVhbCB0aG91Z2ggYXMgaXQgcHJlc2VydmVzIHRoZSBmdWxsIGltcG9ydCAoYXMgb3V0bGluZWQgYmVmb3JlKSwgYW5kIGl0XG4gKiByZXN1bHRzIGluIGEgc2xvdy1kb3duIGR1ZSB0byB0aGUgdHlwZSBjaGVja2VyIGJlaW5nIGludm9sdmVkIG11bHRpcGxlIHRpbWVzLiBUaGUgQ0xJIHdvcmtlZFxuICogYXJvdW5kIHRoaXMgaW1wb3J0IHByZXNlcnZpbmcgaXNzdWUgYnkgaGF2aW5nIGFub3RoZXIgY29tcGxleCBwb3N0LXByb2Nlc3Mgc3RlcCB0aGF0IGRldGVjdHMgYW5kXG4gKiBlbGlkZXMgdW51c2VkIGltcG9ydHMuIE5vdGUgdGhhdCB0aGVzZSB1bnVzZWQgaW1wb3J0cyBjb3VsZCBjYXVzZSB1bnVzZWQgY2h1bmtzIGJlaW5nIGdlbmVyYXRlZFxuICogYnkgV2VicGFjayBpZiB0aGUgYXBwbGljYXRpb24gb3IgbGlicmFyeSBpcyBub3QgbWFya2VkIGFzIHNpZGUtZWZmZWN0IGZyZWUuXG4gKlxuICogVGhpcyBpcyBub3QgaWRlYWwgdGhvdWdoLCBhcyB3ZSBiYXNpY2FsbHkgcmUtaW1wbGVtZW50IHRoZSBjb21wbGV4IGltcG9ydCB1c2FnZSByZXNvbHV0aW9uXG4gKiBmcm9tIFR5cGVTY3JpcHQuIFdlIGNhbiBkbyBiZXR0ZXIgYnkgbGV0dGluZyBUeXBlU2NyaXB0IGRvIHRoZSBpbXBvcnQgZWxpZGluZywgYnV0IHByb3ZpZGluZ1xuICogaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFsaWFzIGRlY2xhcmF0aW9ucyAoZS5nLiBpbXBvcnQgc3BlY2lmaWVycykgdGhhdCBzaG91bGQgbm90IGJlIGVsaWRlZFxuICogYmVjYXVzZSB0aGV5IGFyZSBhY3R1YWxseSByZWZlcmVuY2VkIChhcyB0aGV5IHdpbGwgbm93IGFwcGVhciBpbiBzdGF0aWMgcHJvcGVydGllcykuXG4gKlxuICogTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBsaW1pdGF0aW9ucyB3aXRoIHRyYW5zZm9ybWVycyBjYW4gYmUgZm91bmQgaW46XG4gKiAgIDEuIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMTc1NTIuXG4gKiAgIDIuIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMTc1MTYuXG4gKiAgIDMuIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL3RzaWNrbGUvaXNzdWVzLzYzNS5cbiAqXG4gKiBUaGUgcGF0Y2ggd2UgYXBwbHkgdG8gdGVsbCBUeXBlU2NyaXB0IGFib3V0IGFjdHVhbCByZWZlcmVuY2VkIGFsaWFzZXMgKGkuZS4gaW1wb3J0ZWQgc3ltYm9scyksXG4gKiBtYXRjaGVzIGNvbmNlcHR1YWxseSB3aXRoIHRoZSBsb2dpYyB0aGF0IHJ1bnMgaW50ZXJuYWxseSBpbiBUeXBlU2NyaXB0IHdoZW4gdGhlXG4gKiBgZW1pdERlY29yYXRvck1ldGFkYXRhYCBmbGFnIGlzIGVuYWJsZWQuIFR5cGVTY3JpcHQgYmFzaWNhbGx5IHN1cmZhY2VzIHRoZSBzYW1lIHByb2JsZW0gYW5kXG4gKiBzb2x2ZXMgaXQgY29uY2VwdHVhbGx5IHRoZSBzYW1lIHdheSwgYnV0IG9idmlvdXNseSBkb2Vzbid0IG5lZWQgdG8gYWNjZXNzIGFuIGBAaW50ZXJuYWxgIEFQSS5cbiAqXG4gKiBUaGUgc2V0IHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBmaWxsZWQgd2l0aCBpbXBvcnQgZGVjbGFyYXRpb24gbm9kZXNcbiAqIHRoYXQgaGF2ZSBiZWVuIHJlZmVyZW5jZWQgaW4gYSB2YWx1ZS1wb3NpdGlvbiBieSB0aGUgdHJhbnNmb3JtLCBzdWNoIHRoZSBpbnN0YWxsZWQgcGF0Y2ggY2FuXG4gKiBlbnN1cmUgdGhhdCB0aG9zZSBpbXBvcnQgZGVjbGFyYXRpb25zIGFyZSBub3QgZWxpZGVkLlxuICpcbiAqIFNlZSBiZWxvdy4gTm90ZSB0aGF0IHRoaXMgdXNlcyBzb3VyY2VncmFwaCBhcyB0aGUgVHlwZVNjcmlwdCBjaGVja2VyIGZpbGUgZG9lc24ndCBkaXNwbGF5IG9uXG4gKiBHaXRodWIuXG4gKiBodHRwczovL3NvdXJjZWdyYXBoLmNvbS9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0QDNlYWE3YzY1ZjZmMDc2YTA4YTVmN2YxOTQ2ZmQwZGY3Yzc0MzAyNTkvLS9ibG9iL3NyYy9jb21waWxlci9jaGVja2VyLnRzI0wzMTIxOS0zMTI1N1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZElzUmVmZXJlbmNlZEFsaWFzRGVjbGFyYXRpb25QYXRjaChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpOlxuICAgIFNldDx0cy5EZWNsYXJhdGlvbj4ge1xuICAvLyBJZiB0aGUgYGdldEVtaXRSZXNvbHZlcmAgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUsIFRTIG1vc3QgbGlrZWx5IGNoYW5nZWQgdGhlXG4gIC8vIGludGVybmFsIHN0cnVjdHVyZSBvZiB0aGUgdHJhbnNmb3JtYXRpb24gY29udGV4dC4gV2Ugd2lsbCBhYm9ydCBncmFjZWZ1bGx5LlxuICBpZiAoIWlzVHJhbnNmb3JtYXRpb25Db250ZXh0V2l0aEVtaXRSZXNvbHZlcihjb250ZXh0KSkge1xuICAgIHRocm93SW5jb21wYXRpYmxlVHJhbnNmb3JtYXRpb25Db250ZXh0RXJyb3IoKTtcbiAgfVxuICBjb25zdCBlbWl0UmVzb2x2ZXIgPSBjb250ZXh0LmdldEVtaXRSZXNvbHZlcigpO1xuXG4gIC8vIFRoZSBlbWl0IHJlc29sdmVyIG1heSBoYXZlIGJlZW4gcGF0Y2hlZCBhbHJlYWR5LCBpbiB3aGljaCBjYXNlIHdlIHJldHVybiB0aGUgc2V0IG9mIHJlZmVyZW5jZWRcbiAgLy8gYWxpYXNlcyB0aGF0IHdhcyBjcmVhdGVkIHdoZW4gdGhlIHBhdGNoIHdhcyBmaXJzdCBhcHBsaWVkLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNDAyNzYuXG4gIGNvbnN0IGV4aXN0aW5nUmVmZXJlbmNlZEFsaWFzZXMgPSBlbWl0UmVzb2x2ZXJbcGF0Y2hlZFJlZmVyZW5jZWRBbGlhc2VzU3ltYm9sXTtcbiAgaWYgKGV4aXN0aW5nUmVmZXJlbmNlZEFsaWFzZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBleGlzdGluZ1JlZmVyZW5jZWRBbGlhc2VzO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxJc1JlZmVyZW5jZWRBbGlhc0RlY2xhcmF0aW9uID0gZW1pdFJlc29sdmVyLmlzUmVmZXJlbmNlZEFsaWFzRGVjbGFyYXRpb247XG4gIC8vIElmIHRoZSBlbWl0IHJlc29sdmVyIGRvZXMgbm90IGhhdmUgYSBmdW5jdGlvbiBjYWxsZWQgYGlzUmVmZXJlbmNlZEFsaWFzRGVjbGFyYXRpb25gLCB0aGVuXG4gIC8vIHdlIGFib3J0IGdyYWNlZnVsbHkgYXMgbW9zdCBsaWtlbHkgVFMgY2hhbmdlZCB0aGUgaW50ZXJuYWwgc3RydWN0dXJlIG9mIHRoZSBlbWl0IHJlc29sdmVyLlxuICBpZiAob3JpZ2luYWxJc1JlZmVyZW5jZWRBbGlhc0RlY2xhcmF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvd0luY29tcGF0aWJsZVRyYW5zZm9ybWF0aW9uQ29udGV4dEVycm9yKCk7XG4gIH1cblxuICBjb25zdCByZWZlcmVuY2VkQWxpYXNlcyA9IG5ldyBTZXQ8dHMuRGVjbGFyYXRpb24+KCk7XG4gIGVtaXRSZXNvbHZlci5pc1JlZmVyZW5jZWRBbGlhc0RlY2xhcmF0aW9uID0gZnVuY3Rpb24obm9kZSwgLi4uYXJncykge1xuICAgIGlmIChpc0FsaWFzSW1wb3J0RGVjbGFyYXRpb24obm9kZSkgJiYgcmVmZXJlbmNlZEFsaWFzZXMuaGFzKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsSXNSZWZlcmVuY2VkQWxpYXNEZWNsYXJhdGlvbi5jYWxsKGVtaXRSZXNvbHZlciwgbm9kZSwgLi4uYXJncyk7XG4gIH07XG4gIHJldHVybiBlbWl0UmVzb2x2ZXJbcGF0Y2hlZFJlZmVyZW5jZWRBbGlhc2VzU3ltYm9sXSA9IHJlZmVyZW5jZWRBbGlhc2VzO1xufVxuXG4vKipcbiAqIEdldHMgd2hldGhlciBhIGdpdmVuIG5vZGUgY29ycmVzcG9uZHMgdG8gYW4gaW1wb3J0IGFsaWFzIGRlY2xhcmF0aW9uLiBBbGlhc1xuICogZGVjbGFyYXRpb25zIGNhbiBiZSBpbXBvcnQgc3BlY2lmaWVycywgbmFtZXNwYWNlIGltcG9ydHMgb3IgaW1wb3J0IGNsYXVzZXNcbiAqIGFzIHRoZXNlIGRvIG5vdCBkZWNsYXJlIGFuIGFjdHVhbCBzeW1ib2wgYnV0IGp1c3QgcG9pbnQgdG8gYSB0YXJnZXQgZGVjbGFyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FsaWFzSW1wb3J0RGVjbGFyYXRpb24obm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgdHMuSW1wb3J0U3BlY2lmaWVyfFxuICAgIHRzLk5hbWVzcGFjZUltcG9ydHx0cy5JbXBvcnRDbGF1c2Uge1xuICByZXR1cm4gdHMuaXNJbXBvcnRTcGVjaWZpZXIobm9kZSkgfHwgdHMuaXNOYW1lc3BhY2VJbXBvcnQobm9kZSkgfHwgdHMuaXNJbXBvcnRDbGF1c2Uobm9kZSk7XG59XG5cbi8qKiBXaGV0aGVyIHRoZSB0cmFuc2Zvcm1hdGlvbiBjb250ZXh0IGV4cG9zZXMgaXRzIGVtaXQgcmVzb2x2ZXIuICovXG5mdW5jdGlvbiBpc1RyYW5zZm9ybWF0aW9uQ29udGV4dFdpdGhFbWl0UmVzb2x2ZXIoY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KTpcbiAgICBjb250ZXh0IGlzIFRyYW5zZm9ybWF0aW9uQ29udGV4dFdpdGhSZXNvbHZlciB7XG4gIHJldHVybiAoY29udGV4dCBhcyBQYXJ0aWFsPFRyYW5zZm9ybWF0aW9uQ29udGV4dFdpdGhSZXNvbHZlcj4pLmdldEVtaXRSZXNvbHZlciAhPT0gdW5kZWZpbmVkO1xufVxuXG5cbi8qKlxuICogVGhyb3dzIGFuIGVycm9yIGFib3V0IGFuIGluY29tcGF0aWJsZSBUeXBlU2NyaXB0IHZlcnNpb24gZm9yIHdoaWNoIHRoZSBhbGlhc1xuICogZGVjbGFyYXRpb24gcmVmZXJlbmNlIHJlc29sdXRpb24gY291bGQgbm90IGJlIG1vbmtleS1wYXRjaGVkLiBUaGUgZXJyb3Igd2lsbFxuICogYWxzbyBwcm9wb3NlIHBvdGVudGlhbCBzb2x1dGlvbnMgdGhhdCBjYW4gYmUgYXBwbGllZCBieSBkZXZlbG9wZXJzLlxuICovXG5mdW5jdGlvbiB0aHJvd0luY29tcGF0aWJsZVRyYW5zZm9ybWF0aW9uQ29udGV4dEVycm9yKCk6IG5ldmVyIHtcbiAgdGhyb3cgRXJyb3IoXG4gICAgICAnVW5hYmxlIHRvIGRvd25sZXZlbCBBbmd1bGFyIGRlY29yYXRvcnMgZHVlIHRvIGFuIGluY29tcGF0aWJsZSBUeXBlU2NyaXB0ICcgK1xuICAgICAgJ3ZlcnNpb24uXFxuSWYgeW91IHJlY2VudGx5IHVwZGF0ZWQgVHlwZVNjcmlwdCBhbmQgdGhpcyBpc3N1ZSBzdXJmYWNlcyBub3csIGNvbnNpZGVyICcgK1xuICAgICAgJ2Rvd25ncmFkaW5nLlxcblxcbicgK1xuICAgICAgJ1BsZWFzZSByZXBvcnQgYW4gaXNzdWUgb24gdGhlIEFuZ3VsYXIgcmVwb3NpdG9yaWVzIHdoZW4gdGhpcyBpc3N1ZSAnICtcbiAgICAgICdzdXJmYWNlcyBhbmQgeW91IGFyZSB1c2luZyBhIHN1cHBvc2VkbHkgY29tcGF0aWJsZSBUeXBlU2NyaXB0IHZlcnNpb24uJyk7XG59XG4iXX0=