@angular/compiler-cli 12.1.1 → 12.1.5

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 (455) 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/interpreter.js +6 -5
  44. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  45. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  46. package/src/ngtsc/program_driver/src/api.js +3 -2
  47. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  48. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  49. package/src/ngtsc/reflection/src/typescript.js +4 -1
  50. package/src/ngtsc/transform/src/compilation.d.ts +5 -0
  51. package/src/ngtsc/transform/src/compilation.js +95 -72
  52. package/src/ngtsc/transform/src/transform.js +1 -1
  53. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  54. package/src/ngtsc/typecheck/src/context.js +11 -3
  55. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  56. package/src/ngtsc/typecheck/src/template_symbol_builder.js +21 -1
  57. package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
  58. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  59. package/src/ngtsc/typecheck/src/type_emitter.js +25 -6
  60. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  61. package/src/ngtsc/util/src/visitor.js +1 -8
  62. package/src/version.js +1 -1
  63. package/compiler-cli.externs.js +0 -0
  64. package/index.mjs +0 -20
  65. package/linker/babel/babel.externs.js +0 -0
  66. package/linker/babel/index.mjs +0 -11
  67. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  68. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  69. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  70. package/linker/babel/src/babel_plugin.mjs +0 -23
  71. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  72. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  73. package/linker/index.mjs +0 -7
  74. package/linker/linker.externs.js +0 -0
  75. package/linker/src/ast/ast_host.mjs +0 -9
  76. package/linker/src/ast/ast_value.mjs +0 -256
  77. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  78. package/linker/src/ast/utils.mjs +0 -17
  79. package/linker/src/fatal_linker_error.mjs +0 -30
  80. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  81. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  82. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  83. package/linker/src/file_linker/file_linker.mjs +0 -70
  84. package/linker/src/file_linker/get_source_file.mjs +0 -28
  85. package/linker/src/file_linker/linker_environment.mjs +0 -23
  86. package/linker/src/file_linker/linker_options.mjs +0 -16
  87. package/linker/src/file_linker/needs_linking.mjs +0 -27
  88. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  89. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  90. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  91. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  92. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  93. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  94. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  95. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  96. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  97. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  98. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  99. package/linker/src/file_linker/translator.mjs +0 -23
  100. package/linker/src/linker_import_generator.mjs +0 -28
  101. package/ngcc/index.mjs +0 -16
  102. package/ngcc/main-ivy-ngcc.mjs +0 -12
  103. package/ngcc/main-ngcc.mjs +0 -32
  104. package/ngcc/ngcc.externs.js +0 -0
  105. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  106. package/ngcc/src/analysis/migration_host.mjs +0 -80
  107. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  108. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  109. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  110. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  111. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  112. package/ngcc/src/analysis/types.mjs +0 -2
  113. package/ngcc/src/analysis/util.mjs +0 -19
  114. package/ngcc/src/command_line_options.mjs +0 -142
  115. package/ngcc/src/constants.mjs +0 -10
  116. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  117. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  118. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  119. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  120. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  121. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  122. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  123. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  124. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  125. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  126. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  127. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  128. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  129. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  130. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  131. package/ngcc/src/execution/api.mjs +0 -2
  132. package/ngcc/src/execution/cluster/api.mjs +0 -9
  133. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  134. package/ngcc/src/execution/cluster/master.mjs +0 -261
  135. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  136. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  137. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  138. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  139. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  140. package/ngcc/src/execution/tasks/api.mjs +0 -22
  141. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  142. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  143. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  144. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  145. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  146. package/ngcc/src/host/commonjs_host.mjs +0 -220
  147. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  148. package/ngcc/src/host/delegating_host.mjs +0 -140
  149. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  150. package/ngcc/src/host/esm5_host.mjs +0 -721
  151. package/ngcc/src/host/ngcc_host.mjs +0 -15
  152. package/ngcc/src/host/umd_host.mjs +0 -486
  153. package/ngcc/src/host/utils.mjs +0 -12
  154. package/ngcc/src/locking/async_locker.mjs +0 -76
  155. package/ngcc/src/locking/lock_file.mjs +0 -4
  156. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  157. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  158. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  159. package/ngcc/src/locking/sync_locker.mjs +0 -52
  160. package/ngcc/src/main.mjs +0 -134
  161. package/ngcc/src/migrations/migration.mjs +0 -2
  162. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  163. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  164. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  165. package/ngcc/src/migrations/utils.mjs +0 -117
  166. package/ngcc/src/ngcc_options.mjs +0 -119
  167. package/ngcc/src/packages/build_marker.mjs +0 -84
  168. package/ngcc/src/packages/bundle_program.mjs +0 -52
  169. package/ngcc/src/packages/configuration.mjs +0 -255
  170. package/ngcc/src/packages/entry_point.mjs +0 -239
  171. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  172. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  173. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  174. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  175. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  176. package/ngcc/src/packages/transformer.mjs +0 -140
  177. package/ngcc/src/path_mappings.mjs +0 -13
  178. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  179. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  180. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  181. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  182. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  183. package/ngcc/src/rendering/renderer.mjs +0 -170
  184. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  185. package/ngcc/src/rendering/source_maps.mjs +0 -54
  186. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  187. package/ngcc/src/rendering/utils.mjs +0 -20
  188. package/ngcc/src/utils.mjs +0 -144
  189. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  190. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  191. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  192. package/ngcc/src/writing/file_writer.mjs +0 -2
  193. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  194. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  195. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  196. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  197. package/src/diagnostics/typescript_version.mjs +0 -79
  198. package/src/extract_i18n.mjs +0 -46
  199. package/src/language_services.mjs +0 -18
  200. package/src/main.mjs +0 -185
  201. package/src/metadata/bundle_index_host.mjs +0 -107
  202. package/src/metadata/bundler.mjs +0 -556
  203. package/src/metadata/collector.mjs +0 -701
  204. package/src/metadata/evaluator.mjs +0 -643
  205. package/src/metadata/index.mjs +0 -11
  206. package/src/metadata/index_writer.mjs +0 -44
  207. package/src/metadata/schema.mjs +0 -102
  208. package/src/metadata/symbols.mjs +0 -117
  209. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  210. package/src/ngtsc/annotations/index.mjs +0 -15
  211. package/src/ngtsc/annotations/src/api.mjs +0 -9
  212. package/src/ngtsc/annotations/src/component.mjs +0 -1068
  213. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  214. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  215. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  216. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  217. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  218. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  219. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  220. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  221. package/src/ngtsc/annotations/src/util.mjs +0 -495
  222. package/src/ngtsc/core/api/index.mjs +0 -12
  223. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  224. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  225. package/src/ngtsc/core/api/src/options.mjs +0 -9
  226. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  227. package/src/ngtsc/core/api.externs.js +0 -0
  228. package/src/ngtsc/core/core.externs.js +0 -0
  229. package/src/ngtsc/core/index.mjs +0 -10
  230. package/src/ngtsc/core/src/compiler.mjs +0 -917
  231. package/src/ngtsc/core/src/config.mjs +0 -15
  232. package/src/ngtsc/core/src/host.mjs +0 -229
  233. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  234. package/src/ngtsc/cycles/index.mjs +0 -10
  235. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  236. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  237. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  238. package/src/ngtsc/diagnostics/index.mjs +0 -11
  239. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  240. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  241. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  242. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  243. package/src/ngtsc/entry_point/index.mjs +0 -12
  244. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  245. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  246. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  247. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  248. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  249. package/src/ngtsc/file_system/index.mjs +0 -13
  250. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  251. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  252. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  253. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  254. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  255. package/src/ngtsc/file_system/src/types.mjs +0 -9
  256. package/src/ngtsc/file_system/src/util.mjs +0 -22
  257. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  258. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  259. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  260. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  261. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  262. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  263. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  264. package/src/ngtsc/imports/imports.externs.js +0 -0
  265. package/src/ngtsc/imports/index.mjs +0 -14
  266. package/src/ngtsc/imports/src/alias.mjs +0 -137
  267. package/src/ngtsc/imports/src/core.mjs +0 -78
  268. package/src/ngtsc/imports/src/default.mjs +0 -135
  269. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  270. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  271. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  272. package/src/ngtsc/imports/src/references.mjs +0 -137
  273. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  274. package/src/ngtsc/incremental/api.externs.js +0 -0
  275. package/src/ngtsc/incremental/api.mjs +0 -9
  276. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  277. package/src/ngtsc/incremental/index.mjs +0 -12
  278. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  279. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  280. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  281. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  282. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  283. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  284. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  285. package/src/ngtsc/incremental/src/incremental.mjs +0 -271
  286. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  287. package/src/ngtsc/incremental/src/state.mjs +0 -17
  288. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  289. package/src/ngtsc/indexer/index.mjs +0 -11
  290. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  291. package/src/ngtsc/indexer/src/api.mjs +0 -30
  292. package/src/ngtsc/indexer/src/context.mjs +0 -25
  293. package/src/ngtsc/indexer/src/template.mjs +0 -303
  294. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  295. package/src/ngtsc/logging/index.mjs +0 -10
  296. package/src/ngtsc/logging/logging.externs.js +0 -0
  297. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  298. package/src/ngtsc/logging/src/logger.mjs +0 -15
  299. package/src/ngtsc/logging/testing/index.mjs +0 -9
  300. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  301. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  302. package/src/ngtsc/metadata/index.mjs +0 -15
  303. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  304. package/src/ngtsc/metadata/src/api.mjs +0 -13
  305. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  306. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  307. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  308. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  309. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  310. package/src/ngtsc/metadata/src/util.mjs +0 -200
  311. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  312. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  313. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  314. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -174
  315. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -94
  316. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  317. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -719
  318. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  319. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  320. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  321. package/src/ngtsc/perf/index.mjs +0 -11
  322. package/src/ngtsc/perf/perf.externs.js +0 -0
  323. package/src/ngtsc/perf/src/api.mjs +0 -278
  324. package/src/ngtsc/perf/src/clock.mjs +0 -15
  325. package/src/ngtsc/perf/src/noop.mjs +0 -21
  326. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  327. package/src/ngtsc/program.mjs +0 -271
  328. package/src/ngtsc/program_driver/index.mjs +0 -10
  329. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  330. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  331. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  332. package/src/ngtsc/reflection/index.mjs +0 -12
  333. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  334. package/src/ngtsc/reflection/src/host.mjs +0 -73
  335. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  336. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  337. package/src/ngtsc/reflection/src/util.mjs +0 -21
  338. package/src/ngtsc/resource/index.mjs +0 -9
  339. package/src/ngtsc/resource/resource.externs.js +0 -0
  340. package/src/ngtsc/resource/src/loader.mjs +0 -242
  341. package/src/ngtsc/routing/index.mjs +0 -11
  342. package/src/ngtsc/routing/routing.externs.js +0 -0
  343. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  344. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  345. package/src/ngtsc/routing/src/route.mjs +0 -51
  346. package/src/ngtsc/scope/index.mjs +0 -12
  347. package/src/ngtsc/scope/scope.externs.js +0 -0
  348. package/src/ngtsc/scope/src/api.mjs +0 -9
  349. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  350. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  351. package/src/ngtsc/scope/src/local.mjs +0 -531
  352. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  353. package/src/ngtsc/shims/api.externs.js +0 -0
  354. package/src/ngtsc/shims/api.mjs +0 -2
  355. package/src/ngtsc/shims/index.mjs +0 -14
  356. package/src/ngtsc/shims/shims.externs.js +0 -0
  357. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  358. package/src/ngtsc/shims/src/expando.mjs +0 -102
  359. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  360. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  361. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  362. package/src/ngtsc/shims/src/util.mjs +0 -26
  363. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  364. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  365. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  366. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  367. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  368. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  369. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  370. package/src/ngtsc/switch/index.mjs +0 -9
  371. package/src/ngtsc/switch/src/switch.mjs +0 -115
  372. package/src/ngtsc/switch/switch.externs.js +0 -0
  373. package/src/ngtsc/transform/index.mjs +0 -14
  374. package/src/ngtsc/transform/src/alias.mjs +0 -30
  375. package/src/ngtsc/transform/src/api.mjs +0 -63
  376. package/src/ngtsc/transform/src/compilation.mjs +0 -514
  377. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  378. package/src/ngtsc/transform/src/trait.mjs +0 -95
  379. package/src/ngtsc/transform/src/transform.mjs +0 -298
  380. package/src/ngtsc/transform/src/utils.mjs +0 -57
  381. package/src/ngtsc/transform/transform.externs.js +0 -0
  382. package/src/ngtsc/translator/index.mjs +0 -14
  383. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  384. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  385. package/src/ngtsc/translator/src/context.mjs +0 -24
  386. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  387. package/src/ngtsc/translator/src/translator.mjs +0 -317
  388. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  389. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  390. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  391. package/src/ngtsc/translator/translator.externs.js +0 -0
  392. package/src/ngtsc/tsc_plugin.mjs +0 -98
  393. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  394. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  395. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  396. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  397. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  398. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  399. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  400. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  401. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  402. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  403. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  404. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  405. package/src/ngtsc/typecheck/index.mjs +0 -12
  406. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  407. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  408. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  409. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  410. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  411. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  412. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  413. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  414. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  415. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  416. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  417. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  418. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  419. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  420. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -485
  421. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  422. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  423. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  424. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  425. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -127
  426. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -93
  427. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  428. package/src/ngtsc/util/src/path.mjs +0 -18
  429. package/src/ngtsc/util/src/typescript.mjs +0 -143
  430. package/src/ngtsc/util/src/visitor.mjs +0 -107
  431. package/src/ngtsc/util/util.externs.js +0 -0
  432. package/src/ngtsc/xi18n/index.mjs +0 -9
  433. package/src/ngtsc/xi18n/src/context.mjs +0 -9
  434. package/src/ngtsc/xi18n/xi18n.externs.js +0 -0
  435. package/src/perform_compile.mjs +0 -275
  436. package/src/perform_watch.mjs +0 -247
  437. package/src/tooling.mjs +0 -32
  438. package/src/transformers/api.mjs +0 -27
  439. package/src/transformers/compiler_host.mjs +0 -593
  440. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  441. package/src/transformers/entry_points.mjs +0 -10
  442. package/src/transformers/i18n.mjs +0 -59
  443. package/src/transformers/inline_resources.mjs +0 -269
  444. package/src/transformers/lower_expressions.mjs +0 -336
  445. package/src/transformers/metadata_cache.mjs +0 -53
  446. package/src/transformers/metadata_reader.mjs +0 -104
  447. package/src/transformers/node_emitter.mjs +0 -606
  448. package/src/transformers/node_emitter_transform.mjs +0 -78
  449. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  450. package/src/transformers/program.mjs +0 -887
  451. package/src/transformers/r3_metadata_transform.mjs +0 -46
  452. package/src/transformers/r3_transform.mjs +0 -29
  453. package/src/transformers/util.mjs +0 -89
  454. package/src/typescript_support.mjs +0 -57
  455. package/src/version.mjs +0 -15
@@ -1,204 +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 o from '@angular/compiler';
9
- import * as ts from 'typescript';
10
- import { Context } from './context';
11
- export function translateType(type, imports) {
12
- return type.visitType(new TypeTranslatorVisitor(imports), new Context(false));
13
- }
14
- export class TypeTranslatorVisitor {
15
- constructor(imports) {
16
- this.imports = imports;
17
- }
18
- visitBuiltinType(type, context) {
19
- switch (type.name) {
20
- case o.BuiltinTypeName.Bool:
21
- return ts.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword);
22
- case o.BuiltinTypeName.Dynamic:
23
- return ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword);
24
- case o.BuiltinTypeName.Int:
25
- case o.BuiltinTypeName.Number:
26
- return ts.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
27
- case o.BuiltinTypeName.String:
28
- return ts.createKeywordTypeNode(ts.SyntaxKind.StringKeyword);
29
- case o.BuiltinTypeName.None:
30
- return ts.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword);
31
- default:
32
- throw new Error(`Unsupported builtin type: ${o.BuiltinTypeName[type.name]}`);
33
- }
34
- }
35
- visitExpressionType(type, context) {
36
- const typeNode = this.translateExpression(type.value, context);
37
- if (type.typeParams === null) {
38
- return typeNode;
39
- }
40
- if (!ts.isTypeReferenceNode(typeNode)) {
41
- throw new Error('An ExpressionType with type arguments must translate into a TypeReferenceNode');
42
- }
43
- else if (typeNode.typeArguments !== undefined) {
44
- throw new Error(`An ExpressionType with type arguments cannot have multiple levels of type arguments`);
45
- }
46
- const typeArgs = type.typeParams.map(param => this.translateType(param, context));
47
- return ts.createTypeReferenceNode(typeNode.typeName, typeArgs);
48
- }
49
- visitArrayType(type, context) {
50
- return ts.createArrayTypeNode(this.translateType(type.of, context));
51
- }
52
- visitMapType(type, context) {
53
- const parameter = ts.createParameter(undefined, undefined, undefined, 'key', undefined, ts.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));
54
- const typeArgs = type.valueType !== null ?
55
- this.translateType(type.valueType, context) :
56
- ts.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
57
- const indexSignature = ts.createIndexSignature(undefined, undefined, [parameter], typeArgs);
58
- return ts.createTypeLiteralNode([indexSignature]);
59
- }
60
- visitReadVarExpr(ast, context) {
61
- if (ast.name === null) {
62
- throw new Error(`ReadVarExpr with no variable name in type`);
63
- }
64
- return ts.createTypeQueryNode(ts.createIdentifier(ast.name));
65
- }
66
- visitWriteVarExpr(expr, context) {
67
- throw new Error('Method not implemented.');
68
- }
69
- visitWriteKeyExpr(expr, context) {
70
- throw new Error('Method not implemented.');
71
- }
72
- visitWritePropExpr(expr, context) {
73
- throw new Error('Method not implemented.');
74
- }
75
- visitInvokeMethodExpr(ast, context) {
76
- throw new Error('Method not implemented.');
77
- }
78
- visitInvokeFunctionExpr(ast, context) {
79
- throw new Error('Method not implemented.');
80
- }
81
- visitTaggedTemplateExpr(ast, context) {
82
- throw new Error('Method not implemented.');
83
- }
84
- visitInstantiateExpr(ast, context) {
85
- throw new Error('Method not implemented.');
86
- }
87
- visitLiteralExpr(ast, context) {
88
- if (ast.value === null) {
89
- return ts.createLiteralTypeNode(ts.createNull());
90
- }
91
- else if (ast.value === undefined) {
92
- return ts.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
93
- }
94
- else if (typeof ast.value === 'boolean') {
95
- return ts.createLiteralTypeNode(ts.createLiteral(ast.value));
96
- }
97
- else if (typeof ast.value === 'number') {
98
- return ts.createLiteralTypeNode(ts.createLiteral(ast.value));
99
- }
100
- else {
101
- return ts.createLiteralTypeNode(ts.createLiteral(ast.value));
102
- }
103
- }
104
- visitLocalizedString(ast, context) {
105
- throw new Error('Method not implemented.');
106
- }
107
- visitExternalExpr(ast, context) {
108
- if (ast.value.moduleName === null || ast.value.name === null) {
109
- throw new Error(`Import unknown module or symbol`);
110
- }
111
- const { moduleImport, symbol } = this.imports.generateNamedImport(ast.value.moduleName, ast.value.name);
112
- const symbolIdentifier = ts.createIdentifier(symbol);
113
- const typeName = moduleImport ? ts.createQualifiedName(moduleImport, symbolIdentifier) : symbolIdentifier;
114
- const typeArguments = ast.typeParams !== null ?
115
- ast.typeParams.map(type => this.translateType(type, context)) :
116
- undefined;
117
- return ts.createTypeReferenceNode(typeName, typeArguments);
118
- }
119
- visitConditionalExpr(ast, context) {
120
- throw new Error('Method not implemented.');
121
- }
122
- visitNotExpr(ast, context) {
123
- throw new Error('Method not implemented.');
124
- }
125
- visitAssertNotNullExpr(ast, context) {
126
- throw new Error('Method not implemented.');
127
- }
128
- visitCastExpr(ast, context) {
129
- throw new Error('Method not implemented.');
130
- }
131
- visitFunctionExpr(ast, context) {
132
- throw new Error('Method not implemented.');
133
- }
134
- visitUnaryOperatorExpr(ast, context) {
135
- throw new Error('Method not implemented.');
136
- }
137
- visitBinaryOperatorExpr(ast, context) {
138
- throw new Error('Method not implemented.');
139
- }
140
- visitReadPropExpr(ast, context) {
141
- throw new Error('Method not implemented.');
142
- }
143
- visitReadKeyExpr(ast, context) {
144
- throw new Error('Method not implemented.');
145
- }
146
- visitLiteralArrayExpr(ast, context) {
147
- const values = ast.entries.map(expr => this.translateExpression(expr, context));
148
- return ts.createTupleTypeNode(values);
149
- }
150
- visitLiteralMapExpr(ast, context) {
151
- const entries = ast.entries.map(entry => {
152
- const { key, quoted } = entry;
153
- const type = this.translateExpression(entry.value, context);
154
- return ts.createPropertySignature(
155
- /* modifiers */ undefined,
156
- /* name */ quoted ? ts.createStringLiteral(key) : key,
157
- /* questionToken */ undefined,
158
- /* type */ type,
159
- /* initializer */ undefined);
160
- });
161
- return ts.createTypeLiteralNode(entries);
162
- }
163
- visitCommaExpr(ast, context) {
164
- throw new Error('Method not implemented.');
165
- }
166
- visitWrappedNodeExpr(ast, context) {
167
- const node = ast.node;
168
- if (ts.isEntityName(node)) {
169
- return ts.createTypeReferenceNode(node, /* typeArguments */ undefined);
170
- }
171
- else if (ts.isTypeNode(node)) {
172
- return node;
173
- }
174
- else if (ts.isLiteralExpression(node)) {
175
- return ts.createLiteralTypeNode(node);
176
- }
177
- else {
178
- throw new Error(`Unsupported WrappedNodeExpr in TypeTranslatorVisitor: ${ts.SyntaxKind[node.kind]}`);
179
- }
180
- }
181
- visitTypeofExpr(ast, context) {
182
- const typeNode = this.translateExpression(ast.expr, context);
183
- if (!ts.isTypeReferenceNode(typeNode)) {
184
- throw new Error(`The target of a typeof expression must be a type reference, but it was
185
- ${ts.SyntaxKind[typeNode.kind]}`);
186
- }
187
- return ts.createTypeQueryNode(typeNode.typeName);
188
- }
189
- translateType(type, context) {
190
- const typeNode = type.visitType(this, context);
191
- if (!ts.isTypeNode(typeNode)) {
192
- throw new Error(`A Type must translate to a TypeNode, but was ${ts.SyntaxKind[typeNode.kind]}`);
193
- }
194
- return typeNode;
195
- }
196
- translateExpression(expr, context) {
197
- const typeNode = expr.visitExpression(this, context);
198
- if (!ts.isTypeNode(typeNode)) {
199
- throw new Error(`An Expression must translate to a TypeNode, but was ${ts.SyntaxKind[typeNode.kind]}`);
200
- }
201
- return typeNode;
202
- }
203
- }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV90cmFuc2xhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90cmFuc2xhdG9yL3NyYy90eXBlX3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLENBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBSWxDLE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBWSxFQUFFLE9BQXNCO0lBQ2hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBb0IsT0FBc0I7UUFBdEIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUFHLENBQUM7SUFFOUMsZ0JBQWdCLENBQUMsSUFBbUIsRUFBRSxPQUFnQjtRQUNwRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUk7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDaEUsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQzVCLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUQsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUMzQixLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTTtnQkFD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UUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFZLEVBQUUsT0FBZ0I7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FDWCxnREFBZ0QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3JGO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQWtCLEVBQUUsT0FBZ0I7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FDWCx1REFBdUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzVGO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7SW1wb3J0TWFuYWdlcn0gZnJvbSAnLi9pbXBvcnRfbWFuYWdlcic7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZVR5cGUodHlwZTogby5UeXBlLCBpbXBvcnRzOiBJbXBvcnRNYW5hZ2VyKTogdHMuVHlwZU5vZGUge1xuICByZXR1cm4gdHlwZS52aXNpdFR5cGUobmV3IFR5cGVUcmFuc2xhdG9yVmlzaXRvcihpbXBvcnRzKSwgbmV3IENvbnRleHQoZmFsc2UpKTtcbn1cblxuZXhwb3J0IGNsYXNzIFR5cGVUcmFuc2xhdG9yVmlzaXRvciBpbXBsZW1lbnRzIG8uRXhwcmVzc2lvblZpc2l0b3IsIG8uVHlwZVZpc2l0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGltcG9ydHM6IEltcG9ydE1hbmFnZXIpIHt9XG5cbiAgdmlzaXRCdWlsdGluVHlwZSh0eXBlOiBvLkJ1aWx0aW5UeXBlLCBjb250ZXh0OiBDb250ZXh0KTogdHMuS2V5d29yZFR5cGVOb2RlIHtcbiAgICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5Cb29sOlxuICAgICAgICByZXR1cm4gdHMuY3JlYXRlS2V5d29yZFR5cGVOb2RlKHRzLlN5bnRheEtpbmQuQm9vbGVhbktleXdvcmQpO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5EeW5hbWljOlxuICAgICAgICByZXR1cm4gdHMuY3JlYXRlS2V5d29yZFR5cGVOb2RlKHRzLlN5bnRheEtpbmQuQW55S2V5d29yZCk7XG4gICAgICBjYXNlIG8uQnVpbHRpblR5cGVOYW1lLkludDpcbiAgICAgIGNhc2Ugby5CdWlsdGluVHlwZU5hbWUuTnVtYmVyOlxuICAgICAgICByZXR1cm4gdHMuY3JlYXRlS2V5d29yZFR5cGVOb2RlKHRzLlN5bnRheEtpbmQuTnVtYmVyS2V5d29yZCk7XG4gICAgICBjYXNlIG8uQnVpbHRpblR5cGVOYW1lLlN0cmluZzpcbiAgICAgICAgcmV0dXJuIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLlN0cmluZ0tleXdvcmQpO1xuICAgICAgY2FzZSBvLkJ1aWx0aW5UeXBlTmFtZS5Ob25lOlxuICAgICAgICByZXR1cm4gdHMuY3JlYXRlS2V5d29yZFR5cGVOb2RlKHRzLlN5bnRheEtpbmQuTmV2ZXJLZXl3b3JkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYnVpbHRpbiB0eXBlOiAke28uQnVpbHRpblR5cGVOYW1lW3R5cGUubmFtZV19YCk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFeHByZXNzaW9uVHlwZSh0eXBlOiBvLkV4cHJlc3Npb25UeXBlLCBjb250ZXh0OiBDb250ZXh0KTogdHMuVHlwZU5vZGUge1xuICAgIGNvbnN0IHR5cGVOb2RlID0gdGhpcy50cmFuc2xhdGVFeHByZXNzaW9uKHR5cGUudmFsdWUsIGNvbnRleHQpO1xuICAgIGlmICh0eXBlLnR5cGVQYXJhbXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0eXBlTm9kZTtcbiAgICB9XG5cbiAgICBpZiAoIXRzLmlzVHlwZVJlZmVyZW5jZU5vZGUodHlwZU5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ0FuIEV4cHJlc3Npb25UeXBlIHdpdGggdHlwZSBhcmd1bWVudHMgbXVzdCB0cmFuc2xhdGUgaW50byBhIFR5cGVSZWZlcmVuY2VOb2RlJyk7XG4gICAgfSBlbHNlIGlmICh0eXBlTm9kZS50eXBlQXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQW4gRXhwcmVzc2lvblR5cGUgd2l0aCB0eXBlIGFyZ3VtZW50cyBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBsZXZlbHMgb2YgdHlwZSBhcmd1bWVudHNgKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXJncyA9IHR5cGUudHlwZVBhcmFtcy5tYXAocGFyYW0gPT4gdGhpcy50cmFuc2xhdGVUeXBlKHBhcmFtLCBjb250ZXh0KSk7XG4gICAgcmV0dXJuIHRzLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKHR5cGVOb2RlLnR5cGVOYW1lLCB0eXBlQXJncyk7XG4gIH1cblxuICB2aXNpdEFycmF5VHlwZSh0eXBlOiBvLkFycmF5VHlwZSwgY29udGV4dDogQ29udGV4dCk6IHRzLkFycmF5VHlwZU5vZGUge1xuICAgIHJldHVybiB0cy5jcmVhdGVBcnJheVR5cGVOb2RlKHRoaXMudHJhbnNsYXRlVHlwZSh0eXBlLm9mLCBjb250ZXh0KSk7XG4gIH1cblxuICB2aXNpdE1hcFR5cGUodHlwZTogby5NYXBUeXBlLCBjb250ZXh0OiBDb250ZXh0KTogdHMuVHlwZUxpdGVyYWxOb2RlIHtcbiAgICBjb25zdCBwYXJhbWV0ZXIgPSB0cy5jcmVhdGVQYXJhbWV0ZXIoXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdrZXknLCB1bmRlZmluZWQsXG4gICAgICAgIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLlN0cmluZ0tleXdvcmQpKTtcbiAgICBjb25zdCB0eXBlQXJncyA9IHR5cGUudmFsdWVUeXBlICE9PSBudWxsID9cbiAgICAgICAgdGhpcy50cmFuc2xhdGVUeXBlKHR5cGUudmFsdWVUeXBlLCBjb250ZXh0KSA6XG4gICAgICAgIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLlVua25vd25LZXl3b3JkKTtcbiAgICBjb25zdCBpbmRleFNpZ25hdHVyZSA9IHRzLmNyZWF0ZUluZGV4U2lnbmF0dXJlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbcGFyYW1ldGVyXSwgdHlwZUFyZ3MpO1xuICAgIHJldHVybiB0cy5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUoW2luZGV4U2lnbmF0dXJlXSk7XG4gIH1cblxuICB2aXNpdFJlYWRWYXJFeHByKGFzdDogby5SZWFkVmFyRXhwciwgY29udGV4dDogQ29udGV4dCk6IHRzLlR5cGVRdWVyeU5vZGUge1xuICAgIGlmIChhc3QubmFtZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWFkVmFyRXhwciB3aXRoIG5vIHZhcmlhYmxlIG5hbWUgaW4gdHlwZWApO1xuICAgIH1cbiAgICByZXR1cm4gdHMuY3JlYXRlVHlwZVF1ZXJ5Tm9kZSh0cy5jcmVhdGVJZGVudGlmaWVyKGFzdC5uYW1lKSk7XG4gIH1cblxuICB2aXNpdFdyaXRlVmFyRXhwcihleHByOiBvLldyaXRlVmFyRXhwciwgY29udGV4dDogQ29udGV4dCk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdFdyaXRlS2V5RXhwcihleHByOiBvLldyaXRlS2V5RXhwciwgY29udGV4dDogQ29udGV4dCk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdFdyaXRlUHJvcEV4cHIoZXhwcjogby5Xcml0ZVByb3BFeHByLCBjb250ZXh0OiBDb250ZXh0KTogbmV2ZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHZpc2l0SW52b2tlTWV0aG9kRXhwcihhc3Q6IG8uSW52b2tlTWV0aG9kRXhwciwgY29udGV4dDogQ29udGV4dCk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdEludm9rZUZ1bmN0aW9uRXhwcihhc3Q6IG8uSW52b2tlRnVuY3Rpb25FeHByLCBjb250ZXh0OiBDb250ZXh0KTogbmV2ZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHZpc2l0VGFnZ2VkVGVtcGxhdGVFeHByKGFzdDogby5UYWdnZWRUZW1wbGF0ZUV4cHIsIGNvbnRleHQ6IENvbnRleHQpOiBuZXZlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgdmlzaXRJbnN0YW50aWF0ZUV4cHIoYXN0OiBvLkluc3RhbnRpYXRlRXhwciwgY29udGV4dDogQ29udGV4dCk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdExpdGVyYWxFeHByKGFzdDogby5MaXRlcmFsRXhwciwgY29udGV4dDogQ29udGV4dCk6IHRzLlR5cGVOb2RlIHtcbiAgICBpZiAoYXN0LnZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHMuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKHRzLmNyZWF0ZU51bGwoKSk7XG4gICAgfSBlbHNlIGlmIChhc3QudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLlVuZGVmaW5lZEtleXdvcmQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFzdC52YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gdHMuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKHRzLmNyZWF0ZUxpdGVyYWwoYXN0LnZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXN0LnZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRzLmNyZWF0ZUxpdGVyYWxUeXBlTm9kZSh0cy5jcmVhdGVMaXRlcmFsKGFzdC52YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHMuY3JlYXRlTGl0ZXJhbFR5cGVOb2RlKHRzLmNyZWF0ZUxpdGVyYWwoYXN0LnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRMb2NhbGl6ZWRTdHJpbmcoYXN0OiBvLkxvY2FsaXplZFN0cmluZywgY29udGV4dDogQ29udGV4dCk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdEV4dGVybmFsRXhwcihhc3Q6IG8uRXh0ZXJuYWxFeHByLCBjb250ZXh0OiBDb250ZXh0KTogdHMuRW50aXR5TmFtZXx0cy5UeXBlUmVmZXJlbmNlTm9kZSB7XG4gICAgaWYgKGFzdC52YWx1ZS5tb2R1bGVOYW1lID09PSBudWxsIHx8IGFzdC52YWx1ZS5uYW1lID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEltcG9ydCB1bmtub3duIG1vZHVsZSBvciBzeW1ib2xgKTtcbiAgICB9XG4gICAgY29uc3Qge21vZHVsZUltcG9ydCwgc3ltYm9sfSA9XG4gICAgICAgIHRoaXMuaW1wb3J0cy5nZW5lcmF0ZU5hbWVkSW1wb3J0KGFzdC52YWx1ZS5tb2R1bGVOYW1lLCBhc3QudmFsdWUubmFtZSk7XG4gICAgY29uc3Qgc3ltYm9sSWRlbnRpZmllciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoc3ltYm9sKTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID1cbiAgICAgICAgbW9kdWxlSW1wb3J0ID8gdHMuY3JlYXRlUXVhbGlmaWVkTmFtZShtb2R1bGVJbXBvcnQsIHN5bWJvbElkZW50aWZpZXIpIDogc3ltYm9sSWRlbnRpZmllcjtcblxuICAgIGNvbnN0IHR5cGVBcmd1bWVudHMgPSBhc3QudHlwZVBhcmFtcyAhPT0gbnVsbCA/XG4gICAgICAgIGFzdC50eXBlUGFyYW1zLm1hcCh0eXBlID0+IHRoaXMudHJhbnNsYXRlVHlwZSh0eXBlLCBjb250ZXh0KSkgOlxuICAgICAgICB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRzLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKHR5cGVOYW1lLCB0eXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0Q29uZGl0aW9uYWxFeHByKGFzdDogby5Db25kaXRpb25hbEV4cHIsIGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdE5vdEV4cHIoYXN0OiBvLk5vdEV4cHIsIGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdEFzc2VydE5vdE51bGxFeHByKGFzdDogby5Bc3NlcnROb3ROdWxsLCBjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgdmlzaXRDYXN0RXhwcihhc3Q6IG8uQ2FzdEV4cHIsIGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRXhwcihhc3Q6IG8uRnVuY3Rpb25FeHByLCBjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgdmlzaXRVbmFyeU9wZXJhdG9yRXhwcihhc3Q6IG8uVW5hcnlPcGVyYXRvckV4cHIsIGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICB2aXNpdEJpbmFyeU9wZXJhdG9yRXhwcihhc3Q6IG8uQmluYXJ5T3BlcmF0b3JFeHByLCBjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgdmlzaXRSZWFkUHJvcEV4cHIoYXN0OiBvLlJlYWRQcm9wRXhwciwgY29udGV4dDogQ29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHZpc2l0UmVhZEtleUV4cHIoYXN0OiBvLlJlYWRLZXlFeHByLCBjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsQXJyYXlFeHByKGFzdDogby5MaXRlcmFsQXJyYXlFeHByLCBjb250ZXh0OiBDb250ZXh0KTogdHMuVHVwbGVUeXBlTm9kZSB7XG4gICAgY29uc3QgdmFsdWVzID0gYXN0LmVudHJpZXMubWFwKGV4cHIgPT4gdGhpcy50cmFuc2xhdGVFeHByZXNzaW9uKGV4cHIsIGNvbnRleHQpKTtcbiAgICByZXR1cm4gdHMuY3JlYXRlVHVwbGVUeXBlTm9kZSh2YWx1ZXMpO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsTWFwRXhwcihhc3Q6IG8uTGl0ZXJhbE1hcEV4cHIsIGNvbnRleHQ6IENvbnRleHQpOiB0cy5UeXBlTGl0ZXJhbE5vZGUge1xuICAgIGNvbnN0IGVudHJpZXMgPSBhc3QuZW50cmllcy5tYXAoZW50cnkgPT4ge1xuICAgICAgY29uc3Qge2tleSwgcXVvdGVkfSA9IGVudHJ5O1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMudHJhbnNsYXRlRXhwcmVzc2lvbihlbnRyeS52YWx1ZSwgY29udGV4dCk7XG4gICAgICByZXR1cm4gdHMuY3JlYXRlUHJvcGVydHlTaWduYXR1cmUoXG4gICAgICAgICAgLyogbW9kaWZpZXJzICovIHVuZGVmaW5lZCxcbiAgICAgICAgICAvKiBuYW1lICovIHF1b3RlZCA/IHRzLmNyZWF0ZVN0cmluZ0xpdGVyYWwoa2V5KSA6IGtleSxcbiAgICAgICAgICAvKiBxdWVzdGlvblRva2VuICovIHVuZGVmaW5lZCxcbiAgICAgICAgICAvKiB0eXBlICovIHR5cGUsXG4gICAgICAgICAgLyogaW5pdGlhbGl6ZXIgKi8gdW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHMuY3JlYXRlVHlwZUxpdGVyYWxOb2RlKGVudHJpZXMpO1xuICB9XG5cbiAgdmlzaXRDb21tYUV4cHIoYXN0OiBvLkNvbW1hRXhwciwgY29udGV4dDogQ29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHZpc2l0V3JhcHBlZE5vZGVFeHByKGFzdDogby5XcmFwcGVkTm9kZUV4cHI8YW55PiwgY29udGV4dDogQ29udGV4dCk6IHRzLlR5cGVOb2RlIHtcbiAgICBjb25zdCBub2RlOiB0cy5Ob2RlID0gYXN0Lm5vZGU7XG4gICAgaWYgKHRzLmlzRW50aXR5TmFtZShub2RlKSkge1xuICAgICAgcmV0dXJuIHRzLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKG5vZGUsIC8qIHR5cGVBcmd1bWVudHMgKi8gdW5kZWZpbmVkKTtcbiAgICB9IGVsc2UgaWYgKHRzLmlzVHlwZU5vZGUobm9kZSkpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH0gZWxzZSBpZiAodHMuaXNMaXRlcmFsRXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgcmV0dXJuIHRzLmNyZWF0ZUxpdGVyYWxUeXBlTm9kZShub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbnN1cHBvcnRlZCBXcmFwcGVkTm9kZUV4cHIgaW4gVHlwZVRyYW5zbGF0b3JWaXNpdG9yOiAke3RzLlN5bnRheEtpbmRbbm9kZS5raW5kXX1gKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFR5cGVvZkV4cHIoYXN0OiBvLlR5cGVvZkV4cHIsIGNvbnRleHQ6IENvbnRleHQpOiB0cy5UeXBlUXVlcnlOb2RlIHtcbiAgICBjb25zdCB0eXBlTm9kZSA9IHRoaXMudHJhbnNsYXRlRXhwcmVzc2lvbihhc3QuZXhwciwgY29udGV4dCk7XG4gICAgaWYgKCF0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKHR5cGVOb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdGFyZ2V0IG9mIGEgdHlwZW9mIGV4cHJlc3Npb24gbXVzdCBiZSBhIHR5cGUgcmVmZXJlbmNlLCBidXQgaXQgd2FzXG4gICAgICAgICAgJHt0cy5TeW50YXhLaW5kW3R5cGVOb2RlLmtpbmRdfWApO1xuICAgIH1cbiAgICByZXR1cm4gdHMuY3JlYXRlVHlwZVF1ZXJ5Tm9kZSh0eXBlTm9kZS50eXBlTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGF0ZVR5cGUodHlwZTogby5UeXBlLCBjb250ZXh0OiBDb250ZXh0KTogdHMuVHlwZU5vZGUge1xuICAgIGNvbnN0IHR5cGVOb2RlID0gdHlwZS52aXNpdFR5cGUodGhpcywgY29udGV4dCk7XG4gICAgaWYgKCF0cy5pc1R5cGVOb2RlKHR5cGVOb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBIFR5cGUgbXVzdCB0cmFuc2xhdGUgdG8gYSBUeXBlTm9kZSwgYnV0IHdhcyAke3RzLlN5bnRheEtpbmRbdHlwZU5vZGUua2luZF19YCk7XG4gICAgfVxuICAgIHJldHVybiB0eXBlTm9kZTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRlRXhwcmVzc2lvbihleHByOiBvLkV4cHJlc3Npb24sIGNvbnRleHQ6IENvbnRleHQpOiB0cy5UeXBlTm9kZSB7XG4gICAgY29uc3QgdHlwZU5vZGUgPSBleHByLnZpc2l0RXhwcmVzc2lvbih0aGlzLCBjb250ZXh0KTtcbiAgICBpZiAoIXRzLmlzVHlwZU5vZGUodHlwZU5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFuIEV4cHJlc3Npb24gbXVzdCB0cmFuc2xhdGUgdG8gYSBUeXBlTm9kZSwgYnV0IHdhcyAke3RzLlN5bnRheEtpbmRbdHlwZU5vZGUua2luZF19YCk7XG4gICAgfVxuICAgIHJldHVybiB0eXBlTm9kZTtcbiAgfVxufVxuIl19
@@ -1,211 +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
- /**
10
- * Different optimizers use different annotations on a function or method call to indicate its pure
11
- * status.
12
- */
13
- var PureAnnotation;
14
- (function (PureAnnotation) {
15
- /**
16
- * Closure's annotation for purity is `@pureOrBreakMyCode`, but this needs to be in a semantic
17
- * (jsdoc) enabled comment. Thus, the actual comment text for Closure must include the `*` that
18
- * turns a `/*` comment into a `/**` comment, as well as surrounding whitespace.
19
- */
20
- PureAnnotation["CLOSURE"] = "* @pureOrBreakMyCode ";
21
- PureAnnotation["TERSER"] = "@__PURE__";
22
- })(PureAnnotation || (PureAnnotation = {}));
23
- const UNARY_OPERATORS = {
24
- '+': ts.SyntaxKind.PlusToken,
25
- '-': ts.SyntaxKind.MinusToken,
26
- '!': ts.SyntaxKind.ExclamationToken,
27
- };
28
- const BINARY_OPERATORS = {
29
- '&&': ts.SyntaxKind.AmpersandAmpersandToken,
30
- '>': ts.SyntaxKind.GreaterThanToken,
31
- '>=': ts.SyntaxKind.GreaterThanEqualsToken,
32
- '&': ts.SyntaxKind.AmpersandToken,
33
- '/': ts.SyntaxKind.SlashToken,
34
- '==': ts.SyntaxKind.EqualsEqualsToken,
35
- '===': ts.SyntaxKind.EqualsEqualsEqualsToken,
36
- '<': ts.SyntaxKind.LessThanToken,
37
- '<=': ts.SyntaxKind.LessThanEqualsToken,
38
- '-': ts.SyntaxKind.MinusToken,
39
- '%': ts.SyntaxKind.PercentToken,
40
- '*': ts.SyntaxKind.AsteriskToken,
41
- '!=': ts.SyntaxKind.ExclamationEqualsToken,
42
- '!==': ts.SyntaxKind.ExclamationEqualsEqualsToken,
43
- '||': ts.SyntaxKind.BarBarToken,
44
- '+': ts.SyntaxKind.PlusToken,
45
- '??': ts.SyntaxKind.QuestionQuestionToken,
46
- };
47
- const VAR_TYPES = {
48
- 'const': ts.NodeFlags.Const,
49
- 'let': ts.NodeFlags.Let,
50
- 'var': ts.NodeFlags.None,
51
- };
52
- /**
53
- * A TypeScript flavoured implementation of the AstFactory.
54
- */
55
- export class TypeScriptAstFactory {
56
- constructor(annotateForClosureCompiler) {
57
- this.annotateForClosureCompiler = annotateForClosureCompiler;
58
- this.externalSourceFiles = new Map();
59
- this.attachComments = attachComments;
60
- this.createArrayLiteral = ts.createArrayLiteral;
61
- this.createConditional = ts.createConditional;
62
- this.createElementAccess = ts.createElementAccess;
63
- this.createExpressionStatement = ts.createExpressionStatement;
64
- this.createIdentifier = ts.createIdentifier;
65
- this.createParenthesizedExpression = ts.createParen;
66
- this.createPropertyAccess = ts.createPropertyAccess;
67
- this.createThrowStatement = ts.createThrow;
68
- this.createTypeOfExpression = ts.createTypeOf;
69
- }
70
- createAssignment(target, value) {
71
- return ts.createBinary(target, ts.SyntaxKind.EqualsToken, value);
72
- }
73
- createBinaryExpression(leftOperand, operator, rightOperand) {
74
- return ts.createBinary(leftOperand, BINARY_OPERATORS[operator], rightOperand);
75
- }
76
- createBlock(body) {
77
- return ts.createBlock(body);
78
- }
79
- createCallExpression(callee, args, pure) {
80
- const call = ts.createCall(callee, undefined, args);
81
- if (pure) {
82
- ts.addSyntheticLeadingComment(call, ts.SyntaxKind.MultiLineCommentTrivia, this.annotateForClosureCompiler ? PureAnnotation.CLOSURE : PureAnnotation.TERSER,
83
- /* trailing newline */ false);
84
- }
85
- return call;
86
- }
87
- createFunctionDeclaration(functionName, parameters, body) {
88
- if (!ts.isBlock(body)) {
89
- throw new Error(`Invalid syntax, expected a block, but got ${ts.SyntaxKind[body.kind]}.`);
90
- }
91
- return ts.createFunctionDeclaration(undefined, undefined, undefined, functionName, undefined, parameters.map(param => ts.createParameter(undefined, undefined, undefined, param)), undefined, body);
92
- }
93
- createFunctionExpression(functionName, parameters, body) {
94
- if (!ts.isBlock(body)) {
95
- throw new Error(`Invalid syntax, expected a block, but got ${ts.SyntaxKind[body.kind]}.`);
96
- }
97
- return ts.createFunctionExpression(undefined, undefined, functionName !== null && functionName !== void 0 ? functionName : undefined, undefined, parameters.map(param => ts.createParameter(undefined, undefined, undefined, param)), undefined, body);
98
- }
99
- createIfStatement(condition, thenStatement, elseStatement) {
100
- return ts.createIf(condition, thenStatement, elseStatement !== null && elseStatement !== void 0 ? elseStatement : undefined);
101
- }
102
- createLiteral(value) {
103
- if (value === undefined) {
104
- return ts.createIdentifier('undefined');
105
- }
106
- else if (value === null) {
107
- return ts.createNull();
108
- }
109
- else {
110
- return ts.createLiteral(value);
111
- }
112
- }
113
- createNewExpression(expression, args) {
114
- return ts.createNew(expression, undefined, args);
115
- }
116
- createObjectLiteral(properties) {
117
- return ts.createObjectLiteral(properties.map(prop => ts.createPropertyAssignment(prop.quoted ? ts.createLiteral(prop.propertyName) :
118
- ts.createIdentifier(prop.propertyName), prop.value)));
119
- }
120
- createReturnStatement(expression) {
121
- return ts.createReturn(expression !== null && expression !== void 0 ? expression : undefined);
122
- }
123
- createTaggedTemplate(tag, template) {
124
- let templateLiteral;
125
- const length = template.elements.length;
126
- const head = template.elements[0];
127
- if (length === 1) {
128
- templateLiteral = ts.createNoSubstitutionTemplateLiteral(head.cooked, head.raw);
129
- }
130
- else {
131
- const spans = [];
132
- // Create the middle parts
133
- for (let i = 1; i < length - 1; i++) {
134
- const { cooked, raw, range } = template.elements[i];
135
- const middle = createTemplateMiddle(cooked, raw);
136
- if (range !== null) {
137
- this.setSourceMapRange(middle, range);
138
- }
139
- spans.push(ts.createTemplateSpan(template.expressions[i - 1], middle));
140
- }
141
- // Create the tail part
142
- const resolvedExpression = template.expressions[length - 2];
143
- const templatePart = template.elements[length - 1];
144
- const templateTail = createTemplateTail(templatePart.cooked, templatePart.raw);
145
- if (templatePart.range !== null) {
146
- this.setSourceMapRange(templateTail, templatePart.range);
147
- }
148
- spans.push(ts.createTemplateSpan(resolvedExpression, templateTail));
149
- // Put it all together
150
- templateLiteral =
151
- ts.createTemplateExpression(ts.createTemplateHead(head.cooked, head.raw), spans);
152
- }
153
- if (head.range !== null) {
154
- this.setSourceMapRange(templateLiteral, head.range);
155
- }
156
- return ts.createTaggedTemplate(tag, templateLiteral);
157
- }
158
- createUnaryExpression(operator, operand) {
159
- return ts.createPrefix(UNARY_OPERATORS[operator], operand);
160
- }
161
- createVariableDeclaration(variableName, initializer, type) {
162
- return ts.createVariableStatement(undefined, ts.createVariableDeclarationList([ts.createVariableDeclaration(variableName, undefined, initializer !== null && initializer !== void 0 ? initializer : undefined)], VAR_TYPES[type]));
163
- }
164
- setSourceMapRange(node, sourceMapRange) {
165
- if (sourceMapRange === null) {
166
- return node;
167
- }
168
- const url = sourceMapRange.url;
169
- if (!this.externalSourceFiles.has(url)) {
170
- this.externalSourceFiles.set(url, ts.createSourceMapSource(url, sourceMapRange.content, pos => pos));
171
- }
172
- const source = this.externalSourceFiles.get(url);
173
- ts.setSourceMapRange(node, { pos: sourceMapRange.start.offset, end: sourceMapRange.end.offset, source });
174
- return node;
175
- }
176
- }
177
- // HACK: Use this in place of `ts.createTemplateMiddle()`.
178
- // Revert once https://github.com/microsoft/TypeScript/issues/35374 is fixed.
179
- export function createTemplateMiddle(cooked, raw) {
180
- const node = ts.createTemplateHead(cooked, raw);
181
- node.kind = ts.SyntaxKind.TemplateMiddle;
182
- return node;
183
- }
184
- // HACK: Use this in place of `ts.createTemplateTail()`.
185
- // Revert once https://github.com/microsoft/TypeScript/issues/35374 is fixed.
186
- export function createTemplateTail(cooked, raw) {
187
- const node = ts.createTemplateHead(cooked, raw);
188
- node.kind = ts.SyntaxKind.TemplateTail;
189
- return node;
190
- }
191
- /**
192
- * Attach the given `leadingComments` to the `statement` node.
193
- *
194
- * @param statement The statement that will have comments attached.
195
- * @param leadingComments The comments to attach to the statement.
196
- */
197
- export function attachComments(statement, leadingComments) {
198
- for (const comment of leadingComments) {
199
- const commentKind = comment.multiline ? ts.SyntaxKind.MultiLineCommentTrivia :
200
- ts.SyntaxKind.SingleLineCommentTrivia;
201
- if (comment.multiline) {
202
- ts.addSyntheticLeadingComment(statement, commentKind, comment.toString(), comment.trailingNewline);
203
- }
204
- else {
205
- for (const line of comment.toString().split('\n')) {
206
- ts.addSyntheticLeadingComment(statement, commentKind, line, comment.trailingNewline);
207
- }
208
- }
209
- }
210
- }
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF9hc3RfZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHJhbnNsYXRvci9zcmMvdHlwZXNjcmlwdF9hc3RfZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUlqQzs7O0dBR0c7QUFDSCxJQUFLLGNBU0o7QUFURCxXQUFLLGNBQWM7SUFDakI7Ozs7T0FJRztJQUNILG1EQUFpQyxDQUFBO0lBRWpDLHNDQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFUSSxjQUFjLEtBQWQsY0FBYyxRQVNsQjtBQUVELE1BQU0sZUFBZSxHQUFrRDtJQUNyRSxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTO0lBQzVCLEdBQUcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVU7SUFDN0IsR0FBRyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO0NBQ3BDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUE4QztJQUNsRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUI7SUFDM0MsR0FBRyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLHNCQUFzQjtJQUMxQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjO0lBQ2pDLEdBQUcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVU7SUFDN0IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCO0lBQ3JDLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QjtJQUM1QyxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhO0lB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QUUsR0FBVztJQUM1RCxNQUFNLElBQUksR0FBK0IsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRSxJQUFJLENBQUMsSUFBc0IsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztJQUMxRCxPQUFPLElBQXVCLENBQUM7QUFDakMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUF1QixFQUFFLGVBQWlDO0lBQ3ZGLEtBQUssTUFBTSxPQUFPLElBQUksZUFBZSxFQUFFO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUN0QyxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDO1FBQzlFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNyQixFQUFFLENBQUMsMEJBQTBCLENBQ3pCLFNBQVMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMxRTthQUFNO1lBQ0wsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqRCxFQUFFLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3RGO1NBQ0Y7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0FzdEZhY3RvcnksIEJpbmFyeU9wZXJhdG9yLCBMZWFkaW5nQ29tbWVudCwgT2JqZWN0TGl0ZXJhbFByb3BlcnR5LCBTb3VyY2VNYXBSYW5nZSwgVGVtcGxhdGVMaXRlcmFsLCBVbmFyeU9wZXJhdG9yLCBWYXJpYWJsZURlY2xhcmF0aW9uVHlwZX0gZnJvbSAnLi9hcGkvYXN0X2ZhY3RvcnknO1xuXG4vKipcbiAqIERpZmZlcmVudCBvcHRpbWl6ZXJzIHVzZSBkaWZmZXJlbnQgYW5ub3RhdGlvbnMgb24gYSBmdW5jdGlvbiBvciBtZXRob2QgY2FsbCB0byBpbmRpY2F0ZSBpdHMgcHVyZVxuICogc3RhdHVzLlxuICovXG5lbnVtIFB1cmVBbm5vdGF0aW9uIHtcbiAgLyoqXG4gICAqIENsb3N1cmUncyBhbm5vdGF0aW9uIGZvciBwdXJpdHkgaXMgYEBwdXJlT3JCcmVha015Q29kZWAsIGJ1dCB0aGlzIG5lZWRzIHRvIGJlIGluIGEgc2VtYW50aWNcbiAgICogKGpzZG9jKSBlbmFibGVkIGNvbW1lbnQuIFRodXMsIHRoZSBhY3R1YWwgY29tbWVudCB0ZXh0IGZvciBDbG9zdXJlIG11c3QgaW5jbHVkZSB0aGUgYCpgIHRoYXRcbiAgICogdHVybnMgYSBgLypgIGNvbW1lbnQgaW50byBhIGAvKipgIGNvbW1lbnQsIGFzIHdlbGwgYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZS5cbiAgICovXG4gIENMT1NVUkUgPSAnKiBAcHVyZU9yQnJlYWtNeUNvZGUgJyxcblxuICBURVJTRVIgPSAnQF9fUFVSRV9fJyxcbn1cblxuY29uc3QgVU5BUllfT1BFUkFUT1JTOiBSZWNvcmQ8VW5hcnlPcGVyYXRvciwgdHMuUHJlZml4VW5hcnlPcGVyYXRvcj4gPSB7XG4gICcrJzogdHMuU3ludGF4S2luZC5QbHVzVG9rZW4sXG4gICctJzogdHMuU3ludGF4S2luZC5NaW51c1Rva2VuLFxuICAnISc6IHRzLlN5bnRheEtpbmQuRXhjbGFtYXRpb25Ub2tlbixcbn07XG5cbmNvbnN0IEJJTkFSWV9PUEVSQVRPUlM6IFJlY29yZDxCaW5hcnlPcGVyYXRvciwgdHMuQmluYXJ5T3BlcmF0b3I+ID0ge1xuICAnJiYnOiB0cy5TeW50YXhLaW5kLkFtcGVyc2FuZEFtcGVyc2FuZFRva2VuLFxuICAnPic6IHRzLlN5bnRheEtpbmQuR3JlYXRlclRoYW5Ub2tlbixcbiAgJz49JzogdHMuU3ludGF4S2luZC5HcmVhdGVyVGhhbkVxdWFsc1Rva2VuLFxuICAnJic6IHRzLlN5bnRheEtpbmQuQW1wZXJzYW5kVG9rZW4sXG4gICcvJzogdHMuU3ludGF4S2luZC5TbGFzaFRva2VuLFxuICAnPT0nOiB0cy5TeW50YXhLaW5kLkVxdWFsc0VxdWFsc1Rva2VuLFxuICAnPT09JzogdHMuU3ludGF4S2luZC5FcXVhbHNFcXVhbHNFcXVhbHNUb2tlbixcbiAgJzwnOiB0cy5TeW50YXhLaW5kLkxlc3NUaGFuVG9rZW4sXG4gICc8PSc6IHRzLlN5bnRheEtpbmQuTGVzc1RoYW5FcXVhbHNUb2tlbixcbiAgJy0nOiB0cy5TeW50YXhLaW5kLk1pbnVzVG9rZW4sXG4gICclJzogdHMuU3ludGF4S2luZC5QZXJjZW50VG9rZW4sXG4gICcqJzogdHMuU3ludGF4S2luZC5Bc3Rlcmlza1Rva2VuLFxuICAnIT0nOiB0cy5TeW50YXhLaW5kLkV4Y2xhbWF0aW9uRXF1YWxzVG9rZW4sXG4gICchPT0nOiB0cy5TeW50YXhLaW5kLkV4Y2xhbWF0aW9uRXF1YWxzRXF1YWxzVG9rZW4sXG4gICd8fCc6IHRzLlN5bnRheEtpbmQuQmFyQmFyVG9rZW4sXG4gICcrJzogdHMuU3ludGF4S2luZC5QbHVzVG9rZW4sXG4gICc/Pyc6IHRzLlN5bnRheEtpbmQuUXVlc3Rpb25RdWVzdGlvblRva2VuLFxufTtcblxuY29uc3QgVkFSX1RZUEVTOiBSZWNvcmQ8VmFyaWFibGVEZWNsYXJhdGlvblR5cGUsIHRzLk5vZGVGbGFncz4gPSB7XG4gICdjb25zdCc6IHRzLk5vZGVGbGFncy5Db25zdCxcbiAgJ2xldCc6IHRzLk5vZGVGbGFncy5MZXQsXG4gICd2YXInOiB0cy5Ob2RlRmxhZ3MuTm9uZSxcbn07XG5cbi8qKlxuICogQSBUeXBlU2NyaXB0IGZsYXZvdXJlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQXN0RmFjdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRBc3RGYWN0b3J5IGltcGxlbWVudHMgQXN0RmFjdG9yeTx0cy5TdGF0ZW1lbnQsIHRzLkV4cHJlc3Npb24+IHtcbiAgcHJpdmF0ZSBleHRlcm5hbFNvdXJjZUZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIHRzLlNvdXJjZU1hcFNvdXJjZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyOiBib29sZWFuKSB7fVxuXG4gIGF0dGFjaENvbW1lbnRzID0gYXR0YWNoQ29tbWVudHM7XG5cbiAgY3JlYXRlQXJyYXlMaXRlcmFsID0gdHMuY3JlYXRlQXJyYXlMaXRlcmFsO1xuXG4gIGNyZWF0ZUFzc2lnbm1lbnQodGFyZ2V0OiB0cy5FeHByZXNzaW9uLCB2YWx1ZTogdHMuRXhwcmVzc2lvbik6IHRzLkV4cHJlc3Npb24ge1xuICAgIHJldHVybiB0cy5jcmVhdGVCaW5hcnkodGFyZ2V0LCB0cy5TeW50YXhLaW5kLkVxdWFsc1Rva2VuLCB2YWx1ZSk7XG4gIH1cblxuICBjcmVhdGVCaW5hcnlFeHByZXNzaW9uKFxuICAgICAgbGVmdE9wZXJhbmQ6IHRzLkV4cHJlc3Npb24sIG9wZXJhdG9yOiBCaW5hcnlPcGVyYXRvcixcbiAgICAgIHJpZ2h0T3BlcmFuZDogdHMuRXhwcmVzc2lvbik6IHRzLkV4cHJlc3Npb24ge1xuICAgIHJldHVybiB0cy5jcmVhdGVCaW5hcnkobGVmdE9wZXJhbmQsIEJJTkFSWV9PUEVSQVRPUlNbb3BlcmF0b3JdLCByaWdodE9wZXJhbmQpO1xuICB9XG5cbiAgY3JlYXRlQmxvY2soYm9keTogdHMuU3RhdGVtZW50W10pOiB0cy5TdGF0ZW1lbnQge1xuICAgIHJldHVybiB0cy5jcmVhdGVCbG9jayhib2R5KTtcbiAgfVxuXG4gIGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNhbGxlZTogdHMuRXhwcmVzc2lvbiwgYXJnczogdHMuRXhwcmVzc2lvbltdLCBwdXJlOiBib29sZWFuKTogdHMuRXhwcmVzc2lvbiB7XG4gICAgY29uc3QgY2FsbCA9IHRzLmNyZWF0ZUNhbGwoY2FsbGVlLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIGlmIChwdXJlKSB7XG4gICAgICB0cy5hZGRTeW50aGV0aWNMZWFkaW5nQ29tbWVudChcbiAgICAgICAgICBjYWxsLCB0cy5TeW50YXhLaW5kLk11bHRpTGluZUNvbW1lbnRUcml2aWEsXG4gICAgICAgICAgdGhpcy5hbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlciA/IFB1cmVBbm5vdGF0aW9uLkNMT1NVUkUgOiBQdXJlQW5ub3RhdGlvbi5URVJTRVIsXG4gICAgICAgICAgLyogdHJhaWxpbmcgbmV3bGluZSAqLyBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiBjYWxsO1xuICB9XG5cbiAgY3JlYXRlQ29uZGl0aW9uYWwgPSB0cy5jcmVhdGVDb25kaXRpb25hbDtcblxuICBjcmVhdGVFbGVtZW50QWNjZXNzID0gdHMuY3JlYXRlRWxlbWVudEFjY2VzcztcblxuICBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50ID0gdHMuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudDtcblxuICBjcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGZ1bmN0aW9uTmFtZTogc3RyaW5nLCBwYXJhbWV0ZXJzOiBzdHJpbmdbXSwgYm9keTogdHMuU3RhdGVtZW50KTpcbiAgICAgIHRzLlN0YXRlbWVudCB7XG4gICAgaWYgKCF0cy5pc0Jsb2NrKGJvZHkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3ludGF4LCBleHBlY3RlZCBhIGJsb2NrLCBidXQgZ290ICR7dHMuU3ludGF4S2luZFtib2R5LmtpbmRdfS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRzLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZ1bmN0aW9uTmFtZSwgdW5kZWZpbmVkLFxuICAgICAgICBwYXJhbWV0ZXJzLm1hcChwYXJhbSA9PiB0cy5jcmVhdGVQYXJhbWV0ZXIodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgcGFyYW0pKSxcbiAgICAgICAgdW5kZWZpbmVkLCBib2R5KTtcbiAgfVxuXG4gIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihmdW5jdGlvbk5hbWU6IHN0cmluZ3xudWxsLCBwYXJhbWV0ZXJzOiBzdHJpbmdbXSwgYm9keTogdHMuU3RhdGVtZW50KTpcbiAgICAgIHRzLkV4cHJlc3Npb24ge1xuICAgIGlmICghdHMuaXNCbG9jayhib2R5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHN5bnRheCwgZXhwZWN0ZWQgYSBibG9jaywgYnV0IGdvdCAke3RzLlN5bnRheEtpbmRbYm9keS5raW5kXX0uYCk7XG4gICAgfVxuICAgIHJldHVybiB0cy5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmdW5jdGlvbk5hbWUgPz8gdW5kZWZpbmVkLCB1bmRlZmluZWQsXG4gICAgICAgIHBhcmFtZXRlcnMubWFwKHBhcmFtID0+IHRzLmNyZWF0ZVBhcmFtZXRlcih1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwYXJhbSkpLFxuICAgICAgICB1bmRlZmluZWQsIGJvZHkpO1xuICB9XG5cbiAgY3JlYXRlSWRlbnRpZmllciA9IHRzLmNyZWF0ZUlkZW50aWZpZXI7XG5cbiAgY3JlYXRlSWZTdGF0ZW1lbnQoXG4gICAgICBjb25kaXRpb246IHRzLkV4cHJlc3Npb24sIHRoZW5TdGF0ZW1lbnQ6IHRzLlN0YXRlbWVudCxcbiAgICAgIGVsc2VTdGF0ZW1lbnQ6IHRzLlN0YXRlbWVudHxudWxsKTogdHMuU3RhdGVtZW50IHtcbiAgICByZXR1cm4gdHMuY3JlYXRlSWYoY29uZGl0aW9uLCB0aGVuU3RhdGVtZW50LCBlbHNlU3RhdGVtZW50ID8/IHVuZGVmaW5lZCk7XG4gIH1cblxuICBjcmVhdGVMaXRlcmFsKHZhbHVlOiBzdHJpbmd8bnVtYmVyfGJvb2xlYW58bnVsbHx1bmRlZmluZWQpOiB0cy5FeHByZXNzaW9uIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3VuZGVmaW5lZCcpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cy5jcmVhdGVOdWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cy5jcmVhdGVMaXRlcmFsKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVOZXdFeHByZXNzaW9uKGV4cHJlc3Npb246IHRzLkV4cHJlc3Npb24sIGFyZ3M6IHRzLkV4cHJlc3Npb25bXSk6IHRzLkV4cHJlc3Npb24ge1xuICAgIHJldHVybiB0cy5jcmVhdGVOZXcoZXhwcmVzc2lvbiwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIGNyZWF0ZU9iamVjdExpdGVyYWwocHJvcGVydGllczogT2JqZWN0TGl0ZXJhbFByb3BlcnR5PHRzLkV4cHJlc3Npb24+W10pOiB0cy5FeHByZXNzaW9uIHtcbiAgICByZXR1cm4gdHMuY3JlYXRlT2JqZWN0TGl0ZXJhbChwcm9wZXJ0aWVzLm1hcChcbiAgICAgICAgcHJvcCA9PiB0cy5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoXG4gICAgICAgICAgICBwcm9wLnF1b3RlZCA/IHRzLmNyZWF0ZUxpdGVyYWwocHJvcC5wcm9wZXJ0eU5hbWUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHMuY3JlYXRlSWRlbnRpZmllcihwcm9wLnByb3BlcnR5TmFtZSksXG4gICAgICAgICAgICBwcm9wLnZhbHVlKSkpO1xuICB9XG5cbiAgY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24gPSB0cy5jcmVhdGVQYXJlbjtcblxuICBjcmVhdGVQcm9wZXJ0eUFjY2VzcyA9IHRzLmNyZWF0ZVByb3BlcnR5QWNjZXNzO1xuXG4gIGNyZWF0ZVJldHVyblN0YXRlbWVudChleHByZXNzaW9uOiB0cy5FeHByZXNzaW9ufG51bGwpOiB0cy5TdGF0ZW1lbnQge1xuICAgIHJldHVybiB0cy5jcmVhdGVSZXR1cm4oZXhwcmVzc2lvbiA/PyB1bmRlZmluZWQpO1xuICB9XG5cbiAgY3JlYXRlVGFnZ2VkVGVtcGxhdGUodGFnOiB0cy5FeHByZXNzaW9uLCB0ZW1wbGF0ZTogVGVtcGxhdGVMaXRlcmFsPHRzLkV4cHJlc3Npb24+KTpcbiAgICAgIHRzLkV4cHJlc3Npb24ge1xuICAgIGxldCB0ZW1wbGF0ZUxpdGVyYWw6IHRzLlRlbXBsYXRlTGl0ZXJhbDtcbiAgICBjb25zdCBsZW5ndGggPSB0ZW1wbGF0ZS5lbGVtZW50cy5sZW5ndGg7XG4gICAgY29uc3QgaGVhZCA9IHRlbXBsYXRlLmVsZW1lbnRzWzBdO1xuICAgIGlmIChsZW5ndGggPT09IDEpIHtcbiAgICAgIHRlbXBsYXRlTGl0ZXJhbCA9IHRzLmNyZWF0ZU5vU3Vic3RpdHV0aW9uVGVtcGxhdGVMaXRlcmFsKGhlYWQuY29va2VkLCBoZWFkLnJhdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNwYW5zOiB0cy5UZW1wbGF0ZVNwYW5bXSA9IFtdO1xuICAgICAgLy8gQ3JlYXRlIHRoZSBtaWRkbGUgcGFydHNcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHtjb29rZWQsIHJhdywgcmFuZ2V9ID0gdGVtcGxhdGUuZWxlbWVudHNbaV07XG4gICAgICAgIGNvbnN0IG1pZGRsZSA9IGNyZWF0ZVRlbXBsYXRlTWlkZGxlKGNvb2tlZCwgcmF3KTtcbiAgICAgICAgaWYgKHJhbmdlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zZXRTb3VyY2VNYXBSYW5nZShtaWRkbGUsIHJhbmdlKTtcbiAgICAgICAgfVxuICAgICAgICBzcGFucy5wdXNoKHRzLmNyZWF0ZVRlbXBsYXRlU3Bhbih0ZW1wbGF0ZS5leHByZXNzaW9uc1tpIC0gMV0sIG1pZGRsZSkpO1xuICAgICAgfVxuICAgICAgLy8gQ3JlYXRlIHRoZSB0YWlsIHBhcnRcbiAgICAgIGNvbnN0IHJlc29sdmVkRXhwcmVzc2lvbiA9IHRlbXBsYXRlLmV4cHJlc3Npb25zW2xlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgdGVtcGxhdGVQYXJ0ID0gdGVtcGxhdGUuZWxlbWVudHNbbGVuZ3RoIC0gMV07XG4gICAgICBjb25zdCB0ZW1wbGF0ZVRhaWwgPSBjcmVhdGVUZW1wbGF0ZVRhaWwodGVtcGxhdGVQYXJ0LmNvb2tlZCwgdGVtcGxhdGVQYXJ0LnJhdyk7XG4gICAgICBpZiAodGVtcGxhdGVQYXJ0LnJhbmdlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuc2V0U291cmNlTWFwUmFuZ2UodGVtcGxhdGVUYWlsLCB0ZW1wbGF0ZVBhcnQucmFuZ2UpO1xuICAgICAgfVxuICAgICAgc3BhbnMucHVzaCh0cy5jcmVhdGVUZW1wbGF0ZVNwYW4ocmVzb2x2ZWRFeHByZXNzaW9uLCB0ZW1wbGF0ZVRhaWwpKTtcbiAgICAgIC8vIFB1dCBpdCBhbGwgdG9nZXRoZXJcbiAgICAgIHRlbXBsYXRlTGl0ZXJhbCA9XG4gICAgICAgICAgdHMuY3JlYXRlVGVtcGxhdGVFeHByZXNzaW9uKHRzLmNyZWF0ZVRlbXBsYXRlSGVhZChoZWFkLmNvb2tlZCwgaGVhZC5yYXcpLCBzcGFucyk7XG4gICAgfVxuICAgIGlmIChoZWFkLnJhbmdlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnNldFNvdXJjZU1hcFJhbmdlKHRlbXBsYXRlTGl0ZXJhbCwgaGVhZC5yYW5nZSk7XG4gICAgfVxuICAgIHJldHVybiB0cy5jcmVhdGVUYWdnZWRUZW1wbGF0ZSh0YWcsIHRlbXBsYXRlTGl0ZXJhbCk7XG4gIH1cblxuICBjcmVhdGVUaHJvd1N0YXRlbWVudCA9IHRzLmNyZWF0ZVRocm93O1xuXG4gIGNyZWF0ZVR5cGVPZkV4cHJlc3Npb24gPSB0cy5jcmVhdGVUeXBlT2Y7XG5cblxuICBjcmVhdGVVbmFyeUV4cHJlc3Npb24ob3BlcmF0b3I6IFVuYXJ5T3BlcmF0b3IsIG9wZXJhbmQ6IHRzLkV4cHJlc3Npb24pOiB0cy5FeHByZXNzaW9uIHtcbiAgICByZXR1cm4gdHMuY3JlYXRlUHJlZml4KFVOQVJZX09QRVJBVE9SU1tvcGVyYXRvcl0sIG9wZXJhbmQpO1xuICB9XG5cbiAgY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcbiAgICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nLCBpbml0aWFsaXplcjogdHMuRXhwcmVzc2lvbnxudWxsLFxuICAgICAgdHlwZTogVmFyaWFibGVEZWNsYXJhdGlvblR5cGUpOiB0cy5TdGF0ZW1lbnQge1xuICAgIHJldHVybiB0cy5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudChcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChcbiAgICAgICAgICAgIFt0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKHZhcmlhYmxlTmFtZSwgdW5kZWZpbmVkLCBpbml0aWFsaXplciA/PyB1bmRlZmluZWQpXSxcbiAgICAgICAgICAgIFZBUl9UWVBFU1t0eXBlXSksXG4gICAgKTtcbiAgfVxuXG4gIHNldFNvdXJjZU1hcFJhbmdlPFQgZXh0ZW5kcyB0cy5Ob2RlPihub2RlOiBULCBzb3VyY2VNYXBSYW5nZTogU291cmNlTWFwUmFuZ2V8bnVsbCk6IFQge1xuICAgIGlmIChzb3VyY2VNYXBSYW5nZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gc291cmNlTWFwUmFuZ2UudXJsO1xuICAgIGlmICghdGhpcy5leHRlcm5hbFNvdXJjZUZpbGVzLmhhcyh1cmwpKSB7XG4gICAgICB0aGlzLmV4dGVybmFsU291cmNlRmlsZXMuc2V0KFxuICAgICAgICAgIHVybCwgdHMuY3JlYXRlU291cmNlTWFwU291cmNlKHVybCwgc291cmNlTWFwUmFuZ2UuY29udGVudCwgcG9zID0+IHBvcykpO1xuICAgIH1cbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmV4dGVybmFsU291cmNlRmlsZXMuZ2V0KHVybCk7XG4gICAgdHMuc2V0U291cmNlTWFwUmFuZ2UoXG4gICAgICAgIG5vZGUsIHtwb3M6IHNvdXJjZU1hcFJhbmdlLnN0YXJ0Lm9mZnNldCwgZW5kOiBzb3VyY2VNYXBSYW5nZS5lbmQub2Zmc2V0LCBzb3VyY2V9KTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuXG4vLyBIQUNLOiBVc2UgdGhpcyBpbiBwbGFjZSBvZiBgdHMuY3JlYXRlVGVtcGxhdGVNaWRkbGUoKWAuXG4vLyBSZXZlcnQgb25jZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzM1Mzc0IGlzIGZpeGVkLlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlTWlkZGxlKGNvb2tlZDogc3RyaW5nLCByYXc6IHN0cmluZyk6IHRzLlRlbXBsYXRlTWlkZGxlIHtcbiAgY29uc3Qgbm9kZTogdHMuVGVtcGxhdGVMaXRlcmFsTGlrZU5vZGUgPSB0cy5jcmVhdGVUZW1wbGF0ZUhlYWQoY29va2VkLCByYXcpO1xuICAobm9kZS5raW5kIGFzIHRzLlN5bnRheEtpbmQpID0gdHMuU3ludGF4S2luZC5UZW1wbGF0ZU1pZGRsZTtcbiAgcmV0dXJuIG5vZGUgYXMgdHMuVGVtcGxhdGVNaWRkbGU7XG59XG5cbi8vIEhBQ0s6IFVzZSB0aGlzIGluIHBsYWNlIG9mIGB0cy5jcmVhdGVUZW1wbGF0ZVRhaWwoKWAuXG4vLyBSZXZlcnQgb25jZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzM1Mzc0IGlzIGZpeGVkLlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlVGFpbChjb29rZWQ6IHN0cmluZywgcmF3OiBzdHJpbmcpOiB0cy5UZW1wbGF0ZVRhaWwge1xuICBjb25zdCBub2RlOiB0cy5UZW1wbGF0ZUxpdGVyYWxMaWtlTm9kZSA9IHRzLmNyZWF0ZVRlbXBsYXRlSGVhZChjb29rZWQsIHJhdyk7XG4gIChub2RlLmtpbmQgYXMgdHMuU3ludGF4S2luZCkgPSB0cy5TeW50YXhLaW5kLlRlbXBsYXRlVGFpbDtcbiAgcmV0dXJuIG5vZGUgYXMgdHMuVGVtcGxhdGVUYWlsO1xufVxuXG4vKipcbiAqIEF0dGFjaCB0aGUgZ2l2ZW4gYGxlYWRpbmdDb21tZW50c2AgdG8gdGhlIGBzdGF0ZW1lbnRgIG5vZGUuXG4gKlxuICogQHBhcmFtIHN0YXRlbWVudCBUaGUgc3RhdGVtZW50IHRoYXQgd2lsbCBoYXZlIGNvbW1lbnRzIGF0dGFjaGVkLlxuICogQHBhcmFtIGxlYWRpbmdDb21tZW50cyBUaGUgY29tbWVudHMgdG8gYXR0YWNoIHRvIHRoZSBzdGF0ZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hDb21tZW50cyhzdGF0ZW1lbnQ6IHRzLlN0YXRlbWVudCwgbGVhZGluZ0NvbW1lbnRzOiBMZWFkaW5nQ29tbWVudFtdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgY29tbWVudCBvZiBsZWFkaW5nQ29tbWVudHMpIHtcbiAgICBjb25zdCBjb21tZW50S2luZCA9IGNvbW1lbnQubXVsdGlsaW5lID8gdHMuU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHMuU3ludGF4S2luZC5TaW5nbGVMaW5lQ29tbWVudFRyaXZpYTtcbiAgICBpZiAoY29tbWVudC5tdWx0aWxpbmUpIHtcbiAgICAgIHRzLmFkZFN5bnRoZXRpY0xlYWRpbmdDb21tZW50KFxuICAgICAgICAgIHN0YXRlbWVudCwgY29tbWVudEtpbmQsIGNvbW1lbnQudG9TdHJpbmcoKSwgY29tbWVudC50cmFpbGluZ05ld2xpbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgY29tbWVudC50b1N0cmluZygpLnNwbGl0KCdcXG4nKSkge1xuICAgICAgICB0cy5hZGRTeW50aGV0aWNMZWFkaW5nQ29tbWVudChzdGF0ZW1lbnQsIGNvbW1lbnRLaW5kLCBsaW5lLCBjb21tZW50LnRyYWlsaW5nTmV3bGluZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,17 +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 { Context } from './context';
9
- import { ExpressionTranslatorVisitor } from './translator';
10
- import { TypeScriptAstFactory } from './typescript_ast_factory';
11
- export function translateExpression(expression, imports, options = {}) {
12
- return expression.visitExpression(new ExpressionTranslatorVisitor(new TypeScriptAstFactory(options.annotateForClosureCompiler === true), imports, options), new Context(false));
13
- }
14
- export function translateStatement(statement, imports, options = {}) {
15
- return statement.visitStatement(new ExpressionTranslatorVisitor(new TypeScriptAstFactory(options.annotateForClosureCompiler === true), imports, options), new Context(true));
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF90cmFuc2xhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90cmFuc2xhdG9yL3NyYy90eXBlc2NyaXB0X3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBTUgsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUMsMkJBQTJCLEVBQW9CLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsVUFBd0IsRUFBRSxPQUF1QyxFQUNqRSxVQUE0QyxFQUFFO0lBQ2hELE9BQU8sVUFBVSxDQUFDLGVBQWUsQ0FDN0IsSUFBSSwyQkFBMkIsQ0FDM0IsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEtBQUssSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUM1RixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQzlCLFNBQXNCLEVBQUUsT0FBdUMsRUFDL0QsVUFBNEMsRUFBRTtJQUNoRCxPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQzNCLElBQUksMkJBQTJCLENBQzNCLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLDBCQUEwQixLQUFLLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFDNUYsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7SW1wb3J0R2VuZXJhdG9yfSBmcm9tICcuL2FwaS9pbXBvcnRfZ2VuZXJhdG9yJztcbmltcG9ydCB7Q29udGV4dH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7RXhwcmVzc2lvblRyYW5zbGF0b3JWaXNpdG9yLCBUcmFuc2xhdG9yT3B0aW9uc30gZnJvbSAnLi90cmFuc2xhdG9yJztcbmltcG9ydCB7VHlwZVNjcmlwdEFzdEZhY3Rvcnl9IGZyb20gJy4vdHlwZXNjcmlwdF9hc3RfZmFjdG9yeSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGVFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbiwgaW1wb3J0czogSW1wb3J0R2VuZXJhdG9yPHRzLkV4cHJlc3Npb24+LFxuICAgIG9wdGlvbnM6IFRyYW5zbGF0b3JPcHRpb25zPHRzLkV4cHJlc3Npb24+ID0ge30pOiB0cy5FeHByZXNzaW9uIHtcbiAgcmV0dXJuIGV4cHJlc3Npb24udmlzaXRFeHByZXNzaW9uKFxuICAgICAgbmV3IEV4cHJlc3Npb25UcmFuc2xhdG9yVmlzaXRvcjx0cy5TdGF0ZW1lbnQsIHRzLkV4cHJlc3Npb24+KFxuICAgICAgICAgIG5ldyBUeXBlU2NyaXB0QXN0RmFjdG9yeShvcHRpb25zLmFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyID09PSB0cnVlKSwgaW1wb3J0cywgb3B0aW9ucyksXG4gICAgICBuZXcgQ29udGV4dChmYWxzZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlU3RhdGVtZW50KFxuICAgIHN0YXRlbWVudDogby5TdGF0ZW1lbnQsIGltcG9ydHM6IEltcG9ydEdlbmVyYXRvcjx0cy5FeHByZXNzaW9uPixcbiAgICBvcHRpb25zOiBUcmFuc2xhdG9yT3B0aW9uczx0cy5FeHByZXNzaW9uPiA9IHt9KTogdHMuU3RhdGVtZW50IHtcbiAgcmV0dXJuIHN0YXRlbWVudC52aXNpdFN0YXRlbWVudChcbiAgICAgIG5ldyBFeHByZXNzaW9uVHJhbnNsYXRvclZpc2l0b3I8dHMuU3RhdGVtZW50LCB0cy5FeHByZXNzaW9uPihcbiAgICAgICAgICBuZXcgVHlwZVNjcmlwdEFzdEZhY3Rvcnkob3B0aW9ucy5hbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlciA9PT0gdHJ1ZSksIGltcG9ydHMsIG9wdGlvbnMpLFxuICAgICAgbmV3IENvbnRleHQodHJ1ZSkpO1xufVxuIl19
File without changes