@angular/compiler-cli 12.2.0-next.1 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
  2. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  3. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  4. package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
  5. package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
  6. package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
  7. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
  8. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
  9. package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
  10. package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
  11. package/ngcc/src/host/commonjs_host.js +1 -1
  12. package/ngcc/src/host/esm2015_host.js +1 -1
  13. package/ngcc/src/host/esm5_host.js +1 -1
  14. package/ngcc/src/host/umd_host.js +1 -1
  15. package/ngcc/src/packages/build_marker.d.ts +1 -1
  16. package/ngcc/src/packages/build_marker.js +1 -1
  17. package/ngcc/src/packages/entry_point_manifest.js +1 -1
  18. package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
  19. package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
  20. package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
  21. package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
  22. package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
  23. package/package.json +2 -2
  24. package/src/ngtsc/annotations/src/component.js +1 -1
  25. package/src/ngtsc/annotations/src/directive.js +1 -1
  26. package/src/ngtsc/annotations/src/ng_module.js +1 -1
  27. package/src/ngtsc/annotations/src/pipe.js +1 -1
  28. package/src/ngtsc/core/src/compiler.js +1 -1
  29. package/src/ngtsc/cycles/src/analyzer.d.ts +7 -0
  30. package/src/ngtsc/cycles/src/analyzer.js +89 -4
  31. package/src/ngtsc/cycles/src/imports.d.ts +1 -6
  32. package/src/ngtsc/cycles/src/imports.js +5 -23
  33. package/src/ngtsc/diagnostics/src/error_code.d.ts +5 -0
  34. package/src/ngtsc/diagnostics/src/error_code.js +6 -1
  35. package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
  36. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  37. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  38. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  39. package/src/ngtsc/incremental/src/incremental.js +30 -4
  40. package/src/ngtsc/indexer/src/template.js +1 -1
  41. package/src/ngtsc/metadata/src/dts.js +4 -5
  42. package/src/ngtsc/metadata/src/util.d.ts +2 -2
  43. package/src/ngtsc/metadata/src/util.js +9 -6
  44. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  45. package/src/ngtsc/partial_evaluator/src/interpreter.js +6 -5
  46. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  47. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  48. package/src/ngtsc/program_driver/src/api.js +3 -2
  49. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  50. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  51. package/src/ngtsc/reflection/src/typescript.js +4 -1
  52. package/src/ngtsc/transform/src/compilation.d.ts +5 -0
  53. package/src/ngtsc/transform/src/compilation.js +95 -72
  54. package/src/ngtsc/transform/src/transform.js +1 -1
  55. package/src/ngtsc/typecheck/api/checker.d.ts +18 -1
  56. package/src/ngtsc/typecheck/api/checker.js +1 -1
  57. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.d.ts +5 -3
  58. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.js +48 -21
  59. package/src/ngtsc/typecheck/src/checker.d.ts +11 -1
  60. package/src/ngtsc/typecheck/src/checker.js +20 -5
  61. package/src/ngtsc/typecheck/src/completion.d.ts +3 -1
  62. package/src/ngtsc/typecheck/src/completion.js +52 -2
  63. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  64. package/src/ngtsc/typecheck/src/context.js +11 -3
  65. package/src/ngtsc/typecheck/src/oob.d.ts +7 -1
  66. package/src/ngtsc/typecheck/src/oob.js +48 -10
  67. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  68. package/src/ngtsc/typecheck/src/template_symbol_builder.js +21 -1
  69. package/src/ngtsc/typecheck/src/type_check_block.js +35 -2
  70. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  71. package/src/ngtsc/typecheck/src/type_emitter.js +25 -6
  72. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  73. package/src/ngtsc/util/src/visitor.js +1 -8
  74. package/src/version.js +1 -1
  75. package/compiler-cli.externs.js +0 -0
  76. package/index.mjs +0 -20
  77. package/linker/babel/babel.externs.js +0 -0
  78. package/linker/babel/index.mjs +0 -11
  79. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  80. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  81. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  82. package/linker/babel/src/babel_plugin.mjs +0 -23
  83. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  84. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  85. package/linker/index.mjs +0 -7
  86. package/linker/linker.externs.js +0 -0
  87. package/linker/src/ast/ast_host.mjs +0 -9
  88. package/linker/src/ast/ast_value.mjs +0 -256
  89. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  90. package/linker/src/ast/utils.mjs +0 -17
  91. package/linker/src/fatal_linker_error.mjs +0 -30
  92. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  93. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  94. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  95. package/linker/src/file_linker/file_linker.mjs +0 -70
  96. package/linker/src/file_linker/get_source_file.mjs +0 -28
  97. package/linker/src/file_linker/linker_environment.mjs +0 -23
  98. package/linker/src/file_linker/linker_options.mjs +0 -16
  99. package/linker/src/file_linker/needs_linking.mjs +0 -27
  100. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  101. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  102. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  103. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  104. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  105. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  106. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  107. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  108. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  109. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  110. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  111. package/linker/src/file_linker/translator.mjs +0 -23
  112. package/linker/src/linker_import_generator.mjs +0 -28
  113. package/ngcc/index.mjs +0 -16
  114. package/ngcc/main-ivy-ngcc.mjs +0 -12
  115. package/ngcc/main-ngcc.mjs +0 -32
  116. package/ngcc/ngcc.externs.js +0 -0
  117. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  118. package/ngcc/src/analysis/migration_host.mjs +0 -80
  119. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  120. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  121. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  122. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  123. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  124. package/ngcc/src/analysis/types.mjs +0 -2
  125. package/ngcc/src/analysis/util.mjs +0 -19
  126. package/ngcc/src/command_line_options.mjs +0 -142
  127. package/ngcc/src/constants.mjs +0 -10
  128. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  129. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  130. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  131. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  132. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  133. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  134. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  135. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  136. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  137. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  138. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  139. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  140. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  141. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  142. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  143. package/ngcc/src/execution/api.mjs +0 -2
  144. package/ngcc/src/execution/cluster/api.mjs +0 -9
  145. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  146. package/ngcc/src/execution/cluster/master.mjs +0 -261
  147. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  148. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  149. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  150. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  151. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  152. package/ngcc/src/execution/tasks/api.mjs +0 -22
  153. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  154. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  155. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  156. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  157. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  158. package/ngcc/src/host/commonjs_host.mjs +0 -220
  159. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  160. package/ngcc/src/host/delegating_host.mjs +0 -140
  161. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  162. package/ngcc/src/host/esm5_host.mjs +0 -721
  163. package/ngcc/src/host/ngcc_host.mjs +0 -15
  164. package/ngcc/src/host/umd_host.mjs +0 -486
  165. package/ngcc/src/host/utils.mjs +0 -12
  166. package/ngcc/src/locking/async_locker.mjs +0 -76
  167. package/ngcc/src/locking/lock_file.mjs +0 -4
  168. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  169. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  170. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  171. package/ngcc/src/locking/sync_locker.mjs +0 -52
  172. package/ngcc/src/main.mjs +0 -134
  173. package/ngcc/src/migrations/migration.mjs +0 -2
  174. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  175. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  176. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  177. package/ngcc/src/migrations/utils.mjs +0 -117
  178. package/ngcc/src/ngcc_options.mjs +0 -119
  179. package/ngcc/src/packages/build_marker.mjs +0 -84
  180. package/ngcc/src/packages/bundle_program.mjs +0 -52
  181. package/ngcc/src/packages/configuration.mjs +0 -255
  182. package/ngcc/src/packages/entry_point.mjs +0 -239
  183. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  184. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  185. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  186. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  187. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  188. package/ngcc/src/packages/transformer.mjs +0 -140
  189. package/ngcc/src/path_mappings.mjs +0 -13
  190. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  191. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  192. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  193. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  194. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  195. package/ngcc/src/rendering/renderer.mjs +0 -170
  196. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  197. package/ngcc/src/rendering/source_maps.mjs +0 -54
  198. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  199. package/ngcc/src/rendering/utils.mjs +0 -20
  200. package/ngcc/src/utils.mjs +0 -144
  201. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  202. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  203. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  204. package/ngcc/src/writing/file_writer.mjs +0 -2
  205. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  206. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  207. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  208. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  209. package/src/diagnostics/typescript_version.mjs +0 -79
  210. package/src/extract_i18n.mjs +0 -46
  211. package/src/language_services.mjs +0 -18
  212. package/src/main.mjs +0 -185
  213. package/src/metadata/bundle_index_host.mjs +0 -107
  214. package/src/metadata/bundler.mjs +0 -556
  215. package/src/metadata/collector.mjs +0 -701
  216. package/src/metadata/evaluator.mjs +0 -643
  217. package/src/metadata/index.mjs +0 -11
  218. package/src/metadata/index_writer.mjs +0 -44
  219. package/src/metadata/schema.mjs +0 -102
  220. package/src/metadata/symbols.mjs +0 -117
  221. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  222. package/src/ngtsc/annotations/index.mjs +0 -15
  223. package/src/ngtsc/annotations/src/api.mjs +0 -9
  224. package/src/ngtsc/annotations/src/component.mjs +0 -1068
  225. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  226. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  227. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  228. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  229. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  230. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  231. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  232. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  233. package/src/ngtsc/annotations/src/util.mjs +0 -495
  234. package/src/ngtsc/core/api/index.mjs +0 -12
  235. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  236. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  237. package/src/ngtsc/core/api/src/options.mjs +0 -9
  238. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  239. package/src/ngtsc/core/api.externs.js +0 -0
  240. package/src/ngtsc/core/core.externs.js +0 -0
  241. package/src/ngtsc/core/index.mjs +0 -10
  242. package/src/ngtsc/core/src/compiler.mjs +0 -917
  243. package/src/ngtsc/core/src/config.mjs +0 -15
  244. package/src/ngtsc/core/src/host.mjs +0 -229
  245. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  246. package/src/ngtsc/cycles/index.mjs +0 -10
  247. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  248. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  249. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  250. package/src/ngtsc/diagnostics/index.mjs +0 -11
  251. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  252. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  253. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  254. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  255. package/src/ngtsc/entry_point/index.mjs +0 -12
  256. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  257. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  258. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  259. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  260. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  261. package/src/ngtsc/file_system/index.mjs +0 -13
  262. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  263. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  264. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  265. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  266. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  267. package/src/ngtsc/file_system/src/types.mjs +0 -9
  268. package/src/ngtsc/file_system/src/util.mjs +0 -22
  269. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  270. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  271. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  272. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  273. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  274. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  275. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  276. package/src/ngtsc/imports/imports.externs.js +0 -0
  277. package/src/ngtsc/imports/index.mjs +0 -14
  278. package/src/ngtsc/imports/src/alias.mjs +0 -137
  279. package/src/ngtsc/imports/src/core.mjs +0 -78
  280. package/src/ngtsc/imports/src/default.mjs +0 -135
  281. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  282. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  283. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  284. package/src/ngtsc/imports/src/references.mjs +0 -137
  285. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  286. package/src/ngtsc/incremental/api.externs.js +0 -0
  287. package/src/ngtsc/incremental/api.mjs +0 -9
  288. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  289. package/src/ngtsc/incremental/index.mjs +0 -12
  290. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  291. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  292. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  293. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  294. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  295. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  296. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  297. package/src/ngtsc/incremental/src/incremental.mjs +0 -271
  298. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  299. package/src/ngtsc/incremental/src/state.mjs +0 -17
  300. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  301. package/src/ngtsc/indexer/index.mjs +0 -11
  302. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  303. package/src/ngtsc/indexer/src/api.mjs +0 -30
  304. package/src/ngtsc/indexer/src/context.mjs +0 -25
  305. package/src/ngtsc/indexer/src/template.mjs +0 -303
  306. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  307. package/src/ngtsc/logging/index.mjs +0 -10
  308. package/src/ngtsc/logging/logging.externs.js +0 -0
  309. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  310. package/src/ngtsc/logging/src/logger.mjs +0 -15
  311. package/src/ngtsc/logging/testing/index.mjs +0 -9
  312. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  313. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  314. package/src/ngtsc/metadata/index.mjs +0 -15
  315. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  316. package/src/ngtsc/metadata/src/api.mjs +0 -13
  317. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  318. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  319. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  320. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  321. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  322. package/src/ngtsc/metadata/src/util.mjs +0 -200
  323. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  324. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  325. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  326. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -174
  327. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -94
  328. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  329. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -719
  330. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  331. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  332. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  333. package/src/ngtsc/perf/index.mjs +0 -11
  334. package/src/ngtsc/perf/perf.externs.js +0 -0
  335. package/src/ngtsc/perf/src/api.mjs +0 -278
  336. package/src/ngtsc/perf/src/clock.mjs +0 -15
  337. package/src/ngtsc/perf/src/noop.mjs +0 -21
  338. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  339. package/src/ngtsc/program.mjs +0 -271
  340. package/src/ngtsc/program_driver/index.mjs +0 -10
  341. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  342. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  343. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  344. package/src/ngtsc/reflection/index.mjs +0 -12
  345. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  346. package/src/ngtsc/reflection/src/host.mjs +0 -73
  347. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  348. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  349. package/src/ngtsc/reflection/src/util.mjs +0 -21
  350. package/src/ngtsc/resource/index.mjs +0 -9
  351. package/src/ngtsc/resource/resource.externs.js +0 -0
  352. package/src/ngtsc/resource/src/loader.mjs +0 -242
  353. package/src/ngtsc/routing/index.mjs +0 -11
  354. package/src/ngtsc/routing/routing.externs.js +0 -0
  355. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  356. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  357. package/src/ngtsc/routing/src/route.mjs +0 -51
  358. package/src/ngtsc/scope/index.mjs +0 -12
  359. package/src/ngtsc/scope/scope.externs.js +0 -0
  360. package/src/ngtsc/scope/src/api.mjs +0 -9
  361. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  362. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  363. package/src/ngtsc/scope/src/local.mjs +0 -531
  364. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  365. package/src/ngtsc/shims/api.externs.js +0 -0
  366. package/src/ngtsc/shims/api.mjs +0 -2
  367. package/src/ngtsc/shims/index.mjs +0 -14
  368. package/src/ngtsc/shims/shims.externs.js +0 -0
  369. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  370. package/src/ngtsc/shims/src/expando.mjs +0 -102
  371. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  372. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  373. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  374. package/src/ngtsc/shims/src/util.mjs +0 -26
  375. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  376. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  377. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  378. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  379. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  380. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  381. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  382. package/src/ngtsc/switch/index.mjs +0 -9
  383. package/src/ngtsc/switch/src/switch.mjs +0 -115
  384. package/src/ngtsc/switch/switch.externs.js +0 -0
  385. package/src/ngtsc/transform/index.mjs +0 -14
  386. package/src/ngtsc/transform/src/alias.mjs +0 -30
  387. package/src/ngtsc/transform/src/api.mjs +0 -63
  388. package/src/ngtsc/transform/src/compilation.mjs +0 -514
  389. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  390. package/src/ngtsc/transform/src/trait.mjs +0 -95
  391. package/src/ngtsc/transform/src/transform.mjs +0 -298
  392. package/src/ngtsc/transform/src/utils.mjs +0 -57
  393. package/src/ngtsc/transform/transform.externs.js +0 -0
  394. package/src/ngtsc/translator/index.mjs +0 -14
  395. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  396. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  397. package/src/ngtsc/translator/src/context.mjs +0 -24
  398. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  399. package/src/ngtsc/translator/src/translator.mjs +0 -317
  400. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  401. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  402. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  403. package/src/ngtsc/translator/translator.externs.js +0 -0
  404. package/src/ngtsc/tsc_plugin.mjs +0 -98
  405. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  406. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  407. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  408. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  409. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  410. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  411. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  412. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  413. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  414. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  415. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  416. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  417. package/src/ngtsc/typecheck/index.mjs +0 -12
  418. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  419. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  420. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  421. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  422. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  423. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  424. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  425. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  426. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  427. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  428. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  429. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  430. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  431. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  432. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -485
  433. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  434. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  435. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  436. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  437. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -127
  438. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -93
  439. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  440. package/src/ngtsc/util/src/path.mjs +0 -18
  441. package/src/ngtsc/util/src/typescript.mjs +0 -143
  442. package/src/ngtsc/util/src/visitor.mjs +0 -107
  443. package/src/ngtsc/util/util.externs.js +0 -0
  444. package/src/ngtsc/xi18n/index.mjs +0 -9
  445. package/src/ngtsc/xi18n/src/context.mjs +0 -9
  446. package/src/ngtsc/xi18n/xi18n.externs.js +0 -0
  447. package/src/perform_compile.mjs +0 -275
  448. package/src/perform_watch.mjs +0 -247
  449. package/src/tooling.mjs +0 -32
  450. package/src/transformers/api.mjs +0 -27
  451. package/src/transformers/compiler_host.mjs +0 -593
  452. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  453. package/src/transformers/entry_points.mjs +0 -10
  454. package/src/transformers/i18n.mjs +0 -59
  455. package/src/transformers/inline_resources.mjs +0 -269
  456. package/src/transformers/lower_expressions.mjs +0 -336
  457. package/src/transformers/metadata_cache.mjs +0 -53
  458. package/src/transformers/metadata_reader.mjs +0 -104
  459. package/src/transformers/node_emitter.mjs +0 -606
  460. package/src/transformers/node_emitter_transform.mjs +0 -78
  461. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  462. package/src/transformers/program.mjs +0 -887
  463. package/src/transformers/r3_metadata_transform.mjs +0 -46
  464. package/src/transformers/r3_transform.mjs +0 -29
  465. package/src/transformers/util.mjs +0 -89
  466. package/src/typescript_support.mjs +0 -57
  467. package/src/version.mjs +0 -15
@@ -1,265 +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 { absoluteFromSourceFile, basename } from '../../file_system';
10
- import { generatedModuleName } from './util';
11
- const TS_DTS_SUFFIX = /(\.d)?\.ts$/;
12
- const STRIP_NG_FACTORY = /(.*)NgFactory$/;
13
- /**
14
- * Generates ts.SourceFiles which contain variable declarations for NgFactories for every exported
15
- * class of an input ts.SourceFile.
16
- */
17
- export class FactoryGenerator {
18
- constructor() {
19
- this.sourceInfo = new Map();
20
- this.sourceToFactorySymbols = new Map();
21
- this.shouldEmit = true;
22
- this.extensionPrefix = 'ngfactory';
23
- }
24
- generateShimForFile(sf, genFilePath) {
25
- const absoluteSfPath = absoluteFromSourceFile(sf);
26
- const relativePathToSource = './' + basename(sf.fileName).replace(TS_DTS_SUFFIX, '');
27
- // Collect a list of classes that need to have factory types emitted for them. This list is
28
- // overly broad as at this point the ts.TypeChecker hasn't been created, and can't be used to
29
- // semantically understand which decorated types are actually decorated with Angular decorators.
30
- //
31
- // The exports generated here are pruned in the factory transform during emit.
32
- const symbolNames = sf.statements
33
- // Pick out top level class declarations...
34
- .filter(ts.isClassDeclaration)
35
- // which are named, exported, and have decorators.
36
- .filter(decl => isExported(decl) && decl.decorators !== undefined &&
37
- decl.name !== undefined)
38
- // Grab the symbol name.
39
- .map(decl => decl.name.text);
40
- let sourceText = '';
41
- // If there is a top-level comment in the original file, copy it over at the top of the
42
- // generated factory file. This is important for preserving any load-bearing jsdoc comments.
43
- const leadingComment = getFileoverviewComment(sf);
44
- if (leadingComment !== null) {
45
- // Leading comments must be separated from the rest of the contents by a blank line.
46
- sourceText = leadingComment + '\n\n';
47
- }
48
- if (symbolNames.length > 0) {
49
- // For each symbol name, generate a constant export of the corresponding NgFactory.
50
- // This will encompass a lot of symbols which don't need factories, but that's okay
51
- // because it won't miss any that do.
52
- const varLines = symbolNames.map(name => `export const ${name}NgFactory: i0.ɵNgModuleFactory<any> = new i0.ɵNgModuleFactory(${name});`);
53
- sourceText += [
54
- // This might be incorrect if the current package being compiled is Angular core, but it's
55
- // okay to leave in at type checking time. TypeScript can handle this reference via its path
56
- // mapping, but downstream bundlers can't. If the current package is core itself, this will
57
- // be replaced in the factory transformer before emit.
58
- `import * as i0 from '@angular/core';`,
59
- `import {${symbolNames.join(', ')}} from '${relativePathToSource}';`,
60
- ...varLines,
61
- ].join('\n');
62
- }
63
- // Add an extra export to ensure this module has at least one. It'll be removed later in the
64
- // factory transformer if it ends up not being needed.
65
- sourceText += '\nexport const ɵNonEmptyModule = true;';
66
- const genFile = ts.createSourceFile(genFilePath, sourceText, sf.languageVersion, true, ts.ScriptKind.TS);
67
- if (sf.moduleName !== undefined) {
68
- genFile.moduleName = generatedModuleName(sf.moduleName, sf.fileName, '.ngfactory');
69
- }
70
- const moduleSymbols = new Map();
71
- this.sourceToFactorySymbols.set(absoluteSfPath, moduleSymbols);
72
- this.sourceInfo.set(genFilePath, {
73
- sourceFilePath: absoluteSfPath,
74
- moduleSymbols,
75
- });
76
- return genFile;
77
- }
78
- track(sf, moduleInfo) {
79
- if (this.sourceToFactorySymbols.has(sf.fileName)) {
80
- this.sourceToFactorySymbols.get(sf.fileName).set(moduleInfo.name, moduleInfo);
81
- }
82
- }
83
- }
84
- function isExported(decl) {
85
- return decl.modifiers !== undefined &&
86
- decl.modifiers.some(mod => mod.kind == ts.SyntaxKind.ExportKeyword);
87
- }
88
- export function generatedFactoryTransform(factoryMap, importRewriter) {
89
- return (context) => {
90
- return (file) => {
91
- return transformFactorySourceFile(factoryMap, context, importRewriter, file);
92
- };
93
- };
94
- }
95
- function transformFactorySourceFile(factoryMap, context, importRewriter, file) {
96
- // If this is not a generated file, it won't have factory info associated with it.
97
- if (!factoryMap.has(file.fileName)) {
98
- // Don't transform non-generated code.
99
- return file;
100
- }
101
- const { moduleSymbols, sourceFilePath } = factoryMap.get(file.fileName);
102
- // Not every exported factory statement is valid. They were generated before the program was
103
- // analyzed, and before ngtsc knew which symbols were actually NgModules. factoryMap contains
104
- // that knowledge now, so this transform filters the statement list and removes exported factories
105
- // that aren't actually factories.
106
- //
107
- // This could leave the generated factory file empty. To prevent this (it causes issues with
108
- // closure compiler) a 'ɵNonEmptyModule' export was added when the factory shim was created.
109
- // Preserve that export if needed, and remove it otherwise.
110
- //
111
- // Additionally, an import to @angular/core is generated, but the current compilation unit could
112
- // actually be @angular/core, in which case such an import is invalid and should be replaced with
113
- // the proper path to access Ivy symbols in core.
114
- // The filtered set of statements.
115
- const transformedStatements = [];
116
- // The statement identified as the ɵNonEmptyModule export.
117
- let nonEmptyExport = null;
118
- // Extracted identifiers which refer to import statements from @angular/core.
119
- const coreImportIdentifiers = new Set();
120
- // Consider all the statements.
121
- for (const stmt of file.statements) {
122
- // Look for imports to @angular/core.
123
- if (ts.isImportDeclaration(stmt) && ts.isStringLiteral(stmt.moduleSpecifier) &&
124
- stmt.moduleSpecifier.text === '@angular/core') {
125
- // Update the import path to point to the correct file using the ImportRewriter.
126
- const rewrittenModuleSpecifier = importRewriter.rewriteSpecifier('@angular/core', sourceFilePath);
127
- if (rewrittenModuleSpecifier !== stmt.moduleSpecifier.text) {
128
- transformedStatements.push(ts.updateImportDeclaration(stmt, stmt.decorators, stmt.modifiers, stmt.importClause, ts.createStringLiteral(rewrittenModuleSpecifier)));
129
- // Record the identifier by which this imported module goes, so references to its symbols
130
- // can be discovered later.
131
- if (stmt.importClause !== undefined && stmt.importClause.namedBindings !== undefined &&
132
- ts.isNamespaceImport(stmt.importClause.namedBindings)) {
133
- coreImportIdentifiers.add(stmt.importClause.namedBindings.name.text);
134
- }
135
- }
136
- else {
137
- transformedStatements.push(stmt);
138
- }
139
- }
140
- else if (ts.isVariableStatement(stmt) && stmt.declarationList.declarations.length === 1) {
141
- const decl = stmt.declarationList.declarations[0];
142
- // If this is the ɵNonEmptyModule export, then save it for later.
143
- if (ts.isIdentifier(decl.name)) {
144
- if (decl.name.text === 'ɵNonEmptyModule') {
145
- nonEmptyExport = stmt;
146
- continue;
147
- }
148
- // Otherwise, check if this export is a factory for a known NgModule, and retain it if so.
149
- const match = STRIP_NG_FACTORY.exec(decl.name.text);
150
- const module = match ? moduleSymbols.get(match[1]) : null;
151
- if (module) {
152
- // If the module can be tree shaken, then the factory should be wrapped in a
153
- // `noSideEffects()` call which tells Closure to treat the expression as pure, allowing
154
- // it to be removed if the result is not used.
155
- //
156
- // `NgModule`s with an `id` property will be lazy loaded. Google-internal lazy loading
157
- // infra relies on a side effect from the `new NgModuleFactory()` call, which registers
158
- // the module globally. Because of this, we **cannot** tree shake any module which has
159
- // an `id` property. Doing so would cause lazy loaded modules to never be registered.
160
- const moduleIsTreeShakable = !module.hasId;
161
- const newStmt = !moduleIsTreeShakable ?
162
- stmt :
163
- updateInitializers(stmt, (init) => init ? wrapInNoSideEffects(init) : undefined);
164
- transformedStatements.push(newStmt);
165
- }
166
- }
167
- else {
168
- // Leave the statement alone, as it can't be understood.
169
- transformedStatements.push(stmt);
170
- }
171
- }
172
- else {
173
- // Include non-variable statements (imports, etc).
174
- transformedStatements.push(stmt);
175
- }
176
- }
177
- // Check whether the empty module export is still needed.
178
- if (!transformedStatements.some(ts.isVariableStatement) && nonEmptyExport !== null) {
179
- // If the resulting file has no factories, include an empty export to
180
- // satisfy closure compiler.
181
- transformedStatements.push(nonEmptyExport);
182
- }
183
- file = ts.updateSourceFileNode(file, transformedStatements);
184
- // If any imports to @angular/core were detected and rewritten (which happens when compiling
185
- // @angular/core), go through the SourceFile and rewrite references to symbols imported from core.
186
- if (coreImportIdentifiers.size > 0) {
187
- const visit = (node) => {
188
- node = ts.visitEachChild(node, child => visit(child), context);
189
- // Look for expressions of the form "i.s" where 'i' is a detected name for an @angular/core
190
- // import that was changed above. Rewrite 's' using the ImportResolver.
191
- if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.expression) &&
192
- coreImportIdentifiers.has(node.expression.text)) {
193
- // This is an import of a symbol from @angular/core. Transform it with the importRewriter.
194
- const rewrittenSymbol = importRewriter.rewriteSymbol(node.name.text, '@angular/core');
195
- if (rewrittenSymbol !== node.name.text) {
196
- const updated = ts.updatePropertyAccess(node, node.expression, ts.createIdentifier(rewrittenSymbol));
197
- node = updated;
198
- }
199
- }
200
- return node;
201
- };
202
- file = visit(file);
203
- }
204
- return file;
205
- }
206
- /**
207
- * Parses and returns the comment text of a \@fileoverview comment in the given source file.
208
- */
209
- function getFileoverviewComment(sourceFile) {
210
- const text = sourceFile.getFullText();
211
- const trivia = text.substring(0, sourceFile.getStart());
212
- const leadingComments = ts.getLeadingCommentRanges(trivia, 0);
213
- if (!leadingComments || leadingComments.length === 0) {
214
- return null;
215
- }
216
- const comment = leadingComments[0];
217
- if (comment.kind !== ts.SyntaxKind.MultiLineCommentTrivia) {
218
- return null;
219
- }
220
- // Only comments separated with a \n\n from the file contents are considered file-level comments
221
- // in TypeScript.
222
- if (text.substring(comment.end, comment.end + 2) !== '\n\n') {
223
- return null;
224
- }
225
- const commentText = text.substring(comment.pos, comment.end);
226
- // Closure Compiler ignores @suppress and similar if the comment contains @license.
227
- if (commentText.indexOf('@license') !== -1) {
228
- return null;
229
- }
230
- return commentText;
231
- }
232
- /**
233
- * Wraps the given expression in a call to `ɵnoSideEffects()`, which tells
234
- * Closure we don't care about the side effects of this expression and it should
235
- * be treated as "pure". Closure is free to tree shake this expression if its
236
- * result is not used.
237
- *
238
- * Example: Takes `1 + 2` and returns `i0.ɵnoSideEffects(() => 1 + 2)`.
239
- */
240
- function wrapInNoSideEffects(expr) {
241
- const noSideEffects = ts.createPropertyAccess(ts.createIdentifier('i0'), 'ɵnoSideEffects');
242
- return ts.createCall(noSideEffects,
243
- /* typeArguments */ [],
244
- /* arguments */
245
- [
246
- ts.createFunctionExpression(
247
- /* modifiers */ [],
248
- /* asteriskToken */ undefined,
249
- /* name */ undefined,
250
- /* typeParameters */ [],
251
- /* parameters */ [],
252
- /* type */ undefined,
253
- /* body */ ts.createBlock([
254
- ts.createReturn(expr),
255
- ])),
256
- ]);
257
- }
258
- /**
259
- * Clones and updates the initializers for a given statement to use the new
260
- * expression provided. Does not mutate the input statement.
261
- */
262
- function updateInitializers(stmt, update) {
263
- return ts.updateVariableStatement(stmt, stmt.modifiers, ts.updateVariableDeclarationList(stmt.declarationList, stmt.declarationList.declarations.map((decl) => ts.updateVariableDeclaration(decl, decl.name, decl.type, update(decl.initializer)))));
264
- }
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeV9nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NoaW1zL3NyYy9mYWN0b3J5X2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsc0JBQXNCLEVBQWtCLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSW5GLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUUzQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUM7QUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUUxQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBQ1csZUFBVSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQzdDLDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBRW5FLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxXQUFXLENBQUM7SUEyRXpDLENBQUM7SUF6RUMsbUJBQW1CLENBQUMsRUFBaUIsRUFBRSxXQUEyQjtRQUNoRSxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckYsMkZBQTJGO1FBQzNGLDZGQUE2RjtRQUM3RixnR0FBZ0c7UUFDaEcsRUFBRTtRQUNGLDhFQUE4RTtRQUM5RSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsVUFBVTtZQUNULDJDQUEyQzthQUMxQyxNQUFNLENBQUMsRUFBRSxD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QUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2Fic29sdXRlRnJvbVNvdXJjZUZpbGUsIEFic29sdXRlRnNQYXRoLCBiYXNlbmFtZX0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtJbXBvcnRSZXdyaXRlcn0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0ZhY3RvcnlJbmZvLCBGYWN0b3J5VHJhY2tlciwgTW9kdWxlSW5mbywgUGVyRmlsZVNoaW1HZW5lcmF0b3J9IGZyb20gJy4uL2FwaSc7XG5cbmltcG9ydCB7Z2VuZXJhdGVkTW9kdWxlTmFtZX0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgVFNfRFRTX1NVRkZJWCA9IC8oXFwuZCk/XFwudHMkLztcbmNvbnN0IFNUUklQX05HX0ZBQ1RPUlkgPSAvKC4qKU5nRmFjdG9yeSQvO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0cy5Tb3VyY2VGaWxlcyB3aGljaCBjb250YWluIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBmb3IgTmdGYWN0b3JpZXMgZm9yIGV2ZXJ5IGV4cG9ydGVkXG4gKiBjbGFzcyBvZiBhbiBpbnB1dCB0cy5Tb3VyY2VGaWxlLlxuICovXG5leHBvcnQgY2xhc3MgRmFjdG9yeUdlbmVyYXRvciBpbXBsZW1lbnRzIFBlckZpbGVTaGltR2VuZXJhdG9yLCBGYWN0b3J5VHJhY2tlciB7XG4gIHJlYWRvbmx5IHNvdXJjZUluZm8gPSBuZXcgTWFwPHN0cmluZywgRmFjdG9yeUluZm8+KCk7XG4gIHByaXZhdGUgc291cmNlVG9GYWN0b3J5U3ltYm9scyA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBNb2R1bGVJbmZvPj4oKTtcblxuICByZWFkb25seSBzaG91bGRFbWl0ID0gdHJ1ZTtcbiAgcmVhZG9ubHkgZXh0ZW5zaW9uUHJlZml4ID0gJ25nZmFjdG9yeSc7XG5cbiAgZ2VuZXJhdGVTaGltRm9yRmlsZShzZjogdHMuU291cmNlRmlsZSwgZ2VuRmlsZVBhdGg6IEFic29sdXRlRnNQYXRoKTogdHMuU291cmNlRmlsZSB7XG4gICAgY29uc3QgYWJzb2x1dGVTZlBhdGggPSBhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKHNmKTtcblxuICAgIGNvbnN0IHJlbGF0aXZlUGF0aFRvU291cmNlID0gJy4vJyArIGJhc2VuYW1lKHNmLmZpbGVOYW1lKS5yZXBsYWNlKFRTX0RUU19TVUZGSVgsICcnKTtcbiAgICAvLyBDb2xsZWN0IGEgbGlzdCBvZiBjbGFzc2VzIHRoYXQgbmVlZCB0byBoYXZlIGZhY3RvcnkgdHlwZXMgZW1pdHRlZCBmb3IgdGhlbS4gVGhpcyBsaXN0IGlzXG4gICAgLy8gb3Zlcmx5IGJyb2FkIGFzIGF0IHRoaXMgcG9pbnQgdGhlIHRzLlR5cGVDaGVja2VyIGhhc24ndCBiZWVuIGNyZWF0ZWQsIGFuZCBjYW4ndCBiZSB1c2VkIHRvXG4gICAgLy8gc2VtYW50aWNhbGx5IHVuZGVyc3RhbmQgd2hpY2ggZGVjb3JhdGVkIHR5cGVzIGFyZSBhY3R1YWxseSBkZWNvcmF0ZWQgd2l0aCBBbmd1bGFyIGRlY29yYXRvcnMuXG4gICAgLy9cbiAgICAvLyBUaGUgZXhwb3J0cyBnZW5lcmF0ZWQgaGVyZSBhcmUgcHJ1bmVkIGluIHRoZSBmYWN0b3J5IHRyYW5zZm9ybSBkdXJpbmcgZW1pdC5cbiAgICBjb25zdCBzeW1ib2xOYW1lcyA9IHNmLnN0YXRlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQaWNrIG91dCB0b3AgbGV2ZWwgY2xhc3MgZGVjbGFyYXRpb25zLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih0cy5pc0NsYXNzRGVjbGFyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggYXJlIG5hbWVkLCBleHBvcnRlZCwgYW5kIGhhdmUgZGVjb3JhdG9ycy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsID0+IGlzRXhwb3J0ZWQoZGVjbCkgJiYgZGVjbC5kZWNvcmF0b3JzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2wubmFtZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdyYWIgdGhlIHN5bWJvbCBuYW1lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZGVjbCA9PiBkZWNsLm5hbWUhLnRleHQpO1xuXG5cbiAgICBsZXQgc291cmNlVGV4dCA9ICcnO1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSB0b3AtbGV2ZWwgY29tbWVudCBpbiB0aGUgb3JpZ2luYWwgZmlsZSwgY29weSBpdCBvdmVyIGF0IHRoZSB0b3Agb2YgdGhlXG4gICAgLy8gZ2VuZXJhdGVkIGZhY3RvcnkgZmlsZS4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHByZXNlcnZpbmcgYW55IGxvYWQtYmVhcmluZyBqc2RvYyBjb21tZW50cy5cbiAgICBjb25zdCBsZWFkaW5nQ29tbWVudCA9IGdldEZpbGVvdmVydmlld0NvbW1lbnQoc2YpO1xuICAgIGlmIChsZWFkaW5nQ29tbWVudCAhPT0gbnVsbCkge1xuICAgICAgLy8gTGVhZGluZyBjb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSByZXN0IG9mIHRoZSBjb250ZW50cyBieSBhIGJsYW5rIGxpbmUuXG4gICAgICBzb3VyY2VUZXh0ID0gbGVhZGluZ0NvbW1lbnQgKyAnXFxuXFxuJztcbiAgICB9XG5cbiAgICBpZiAoc3ltYm9sTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gRm9yIGVhY2ggc3ltYm9sIG5hbWUsIGdlbmVyYXRlIGEgY29uc3RhbnQgZXhwb3J0IG9mIHRoZSBjb3JyZXNwb25kaW5nIE5nRmFjdG9yeS5cbiAgICAgIC8vIFRoaXMgd2lsbCBlbmNvbXBhc3MgYSBsb3Qgb2Ygc3ltYm9scyB3aGljaCBkb24ndCBuZWVkIGZhY3RvcmllcywgYnV0IHRoYXQncyBva2F5XG4gICAgICAvLyBiZWNhdXNlIGl0IHdvbid0IG1pc3MgYW55IHRoYXQgZG8uXG4gICAgICBjb25zdCB2YXJMaW5lcyA9IHN5bWJvbE5hbWVzLm1hcChcbiAgICAgICAgICBuYW1lID0+IGBleHBvcnQgY29uc3QgJHtcbiAgICAgICAgICAgICAgbmFtZX1OZ0ZhY3Rvcnk6IGkwLsm1TmdNb2R1bGVGYWN0b3J5PGFueT4gPSBuZXcgaTAuybVOZ01vZHVsZUZhY3RvcnkoJHtuYW1lfSk7YCk7XG4gICAgICBzb3VyY2VUZXh0ICs9IFtcbiAgICAgICAgLy8gVGhpcyBtaWdodCBiZSBpbmNvcnJlY3QgaWYgdGhlIGN1cnJlbnQgcGFja2FnZSBiZWluZyBjb21waWxlZCBpcyBBbmd1bGFyIGNvcmUsIGJ1dCBpdCdzXG4gICAgICAgIC8vIG9rYXkgdG8gbGVhdmUgaW4gYXQgdHlwZSBjaGVja2luZyB0aW1lLiBUeXBlU2NyaXB0IGNhbiBoYW5kbGUgdGhpcyByZWZlcmVuY2UgdmlhIGl0cyBwYXRoXG4gICAgICAgIC8vIG1hcHBpbmcsIGJ1dCBkb3duc3RyZWFtIGJ1bmRsZXJzIGNhbid0LiBJZiB0aGUgY3VycmVudCBwYWNrYWdlIGlzIGNvcmUgaXRzZWxmLCB0aGlzIHdpbGxcbiAgICAgICAgLy8gYmUgcmVwbGFjZWQgaW4gdGhlIGZhY3RvcnkgdHJhbnNmb3JtZXIgYmVmb3JlIGVtaXQuXG4gICAgICAgIGBpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztgLFxuICAgICAgICBgaW1wb3J0IHske3N5bWJvbE5hbWVzLmpvaW4oJywgJyl9fSBmcm9tICcke3JlbGF0aXZlUGF0aFRvU291cmNlfSc7YCxcbiAgICAgICAgLi4udmFyTGluZXMsXG4gICAgICBdLmpvaW4oJ1xcbicpO1xuICAgIH1cblxuICAgIC8vIEFkZCBhbiBleHRyYSBleHBvcnQgdG8gZW5zdXJlIHRoaXMgbW9kdWxlIGhhcyBhdCBsZWFzdCBvbmUuIEl0J2xsIGJlIHJlbW92ZWQgbGF0ZXIgaW4gdGhlXG4gICAgLy8gZmFjdG9yeSB0cmFuc2Zvcm1lciBpZiBpdCBlbmRzIHVwIG5vdCBiZWluZyBuZWVkZWQuXG4gICAgc291cmNlVGV4dCArPSAnXFxuZXhwb3J0IGNvbnN0IMm1Tm9uRW1wdHlNb2R1bGUgPSB0cnVlOyc7XG5cbiAgICBjb25zdCBnZW5GaWxlID1cbiAgICAgICAgdHMuY3JlYXRlU291cmNlRmlsZShnZW5GaWxlUGF0aCwgc291cmNlVGV4dCwgc2YubGFuZ3VhZ2VWZXJzaW9uLCB0cnVlLCB0cy5TY3JpcHRLaW5kLlRTKTtcbiAgICBpZiAoc2YubW9kdWxlTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBnZW5GaWxlLm1vZHVsZU5hbWUgPSBnZW5lcmF0ZWRNb2R1bGVOYW1lKHNmLm1vZHVsZU5hbWUsIHNmLmZpbGVOYW1lLCAnLm5nZmFjdG9yeScpO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZVN5bWJvbHMgPSBuZXcgTWFwPHN0cmluZywgTW9kdWxlSW5mbz4oKTtcbiAgICB0aGlzLnNvdXJjZVRvRmFjdG9yeVN5bWJvbHMuc2V0KGFic29sdXRlU2ZQYXRoLCBtb2R1bGVTeW1ib2xzKTtcbiAgICB0aGlzLnNvdXJjZUluZm8uc2V0KGdlbkZpbGVQYXRoLCB7XG4gICAgICBzb3VyY2VGaWxlUGF0aDogYWJzb2x1dGVTZlBhdGgsXG4gICAgICBtb2R1bGVTeW1ib2xzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdlbkZpbGU7XG4gIH1cblxuICB0cmFjayhzZjogdHMuU291cmNlRmlsZSwgbW9kdWxlSW5mbzogTW9kdWxlSW5mbyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNvdXJjZVRvRmFjdG9yeVN5bWJvbHMuaGFzKHNmLmZpbGVOYW1lKSkge1xuICAgICAgdGhpcy5zb3VyY2VUb0ZhY3RvcnlTeW1ib2xzLmdldChzZi5maWxlTmFtZSkhLnNldChtb2R1bGVJbmZvLm5hbWUsIG1vZHVsZUluZm8pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0V4cG9ydGVkKGRlY2w6IHRzLkRlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBkZWNsLm1vZGlmaWVycyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBkZWNsLm1vZGlmaWVycy5zb21lKG1vZCA9PiBtb2Qua2luZCA9PSB0cy5TeW50YXhLaW5kLkV4cG9ydEtleXdvcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVkRmFjdG9yeVRyYW5zZm9ybShcbiAgICBmYWN0b3J5TWFwOiBNYXA8c3RyaW5nLCBGYWN0b3J5SW5mbz4sXG4gICAgaW1wb3J0UmV3cml0ZXI6IEltcG9ydFJld3JpdGVyKTogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+IHtcbiAgcmV0dXJuIChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpOiB0cy5UcmFuc2Zvcm1lcjx0cy5Tb3VyY2VGaWxlPiA9PiB7XG4gICAgcmV0dXJuIChmaWxlOiB0cy5Tb3VyY2VGaWxlKTogdHMuU291cmNlRmlsZSA9PiB7XG4gICAgICByZXR1cm4gdHJhbnNmb3JtRmFjdG9yeVNvdXJjZUZpbGUoZmFjdG9yeU1hcCwgY29udGV4dCwgaW1wb3J0UmV3cml0ZXIsIGZpbGUpO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZhY3RvcnlTb3VyY2VGaWxlKFxuICAgIGZhY3RvcnlNYXA6IE1hcDxzdHJpbmcsIEZhY3RvcnlJbmZvPiwgY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0LFxuICAgIGltcG9ydFJld3JpdGVyOiBJbXBvcnRSZXdyaXRlciwgZmlsZTogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICAvLyBJZiB0aGlzIGlzIG5vdCBhIGdlbmVyYXRlZCBmaWxlLCBpdCB3b24ndCBoYXZlIGZhY3RvcnkgaW5mbyBhc3NvY2lhdGVkIHdpdGggaXQuXG4gIGlmICghZmFjdG9yeU1hcC5oYXMoZmlsZS5maWxlTmFtZSkpIHtcbiAgICAvLyBEb24ndCB0cmFuc2Zvcm0gbm9uLWdlbmVyYXRlZCBjb2RlLlxuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgY29uc3Qge21vZHVsZVN5bWJvbHMsIHNvdXJjZUZpbGVQYXRofSA9IGZhY3RvcnlNYXAuZ2V0KGZpbGUuZmlsZU5hbWUpITtcblxuICAvLyBOb3QgZXZlcnkgZXhwb3J0ZWQgZmFjdG9yeSBzdGF0ZW1lbnQgaXMgdmFsaWQuIFRoZXkgd2VyZSBnZW5lcmF0ZWQgYmVmb3JlIHRoZSBwcm9ncmFtIHdhc1xuICAvLyBhbmFseXplZCwgYW5kIGJlZm9yZSBuZ3RzYyBrbmV3IHdoaWNoIHN5bWJvbHMgd2VyZSBhY3R1YWxseSBOZ01vZHVsZXMuIGZhY3RvcnlNYXAgY29udGFpbnNcbiAgLy8gdGhhdCBrbm93bGVkZ2Ugbm93LCBzbyB0aGlzIHRyYW5zZm9ybSBmaWx0ZXJzIHRoZSBzdGF0ZW1lbnQgbGlzdCBhbmQgcmVtb3ZlcyBleHBvcnRlZCBmYWN0b3JpZXNcbiAgLy8gdGhhdCBhcmVuJ3QgYWN0dWFsbHkgZmFjdG9yaWVzLlxuICAvL1xuICAvLyBUaGlzIGNvdWxkIGxlYXZlIHRoZSBnZW5lcmF0ZWQgZmFjdG9yeSBmaWxlIGVtcHR5LiBUbyBwcmV2ZW50IHRoaXMgKGl0IGNhdXNlcyBpc3N1ZXMgd2l0aFxuICAvLyBjbG9zdXJlIGNvbXBpbGVyKSBhICfJtU5vbkVtcHR5TW9kdWxlJyBleHBvcnQgd2FzIGFkZGVkIHdoZW4gdGhlIGZhY3Rvcnkgc2hpbSB3YXMgY3JlYXRlZC5cbiAgLy8gUHJlc2VydmUgdGhhdCBleHBvcnQgaWYgbmVlZGVkLCBhbmQgcmVtb3ZlIGl0IG90aGVyd2lzZS5cbiAgLy9cbiAgLy8gQWRkaXRpb25hbGx5LCBhbiBpbXBvcnQgdG8gQGFuZ3VsYXIvY29yZSBpcyBnZW5lcmF0ZWQsIGJ1dCB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0IGNvdWxkXG4gIC8vIGFjdHVhbGx5IGJlIEBhbmd1bGFyL2NvcmUsIGluIHdoaWNoIGNhc2Ugc3VjaCBhbiBpbXBvcnQgaXMgaW52YWxpZCBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGhcbiAgLy8gdGhlIHByb3BlciBwYXRoIHRvIGFjY2VzcyBJdnkgc3ltYm9scyBpbiBjb3JlLlxuXG4gIC8vIFRoZSBmaWx0ZXJlZCBzZXQgb2Ygc3RhdGVtZW50cy5cbiAgY29uc3QgdHJhbnNmb3JtZWRTdGF0ZW1lbnRzOiB0cy5TdGF0ZW1lbnRbXSA9IFtdO1xuXG4gIC8vIFRoZSBzdGF0ZW1lbnQgaWRlbnRpZmllZCBhcyB0aGUgybVOb25FbXB0eU1vZHVsZSBleHBvcnQuXG4gIGxldCBub25FbXB0eUV4cG9ydDogdHMuU3RhdGVtZW50fG51bGwgPSBudWxsO1xuXG4gIC8vIEV4dHJhY3RlZCBpZGVudGlmaWVycyB3aGljaCByZWZlciB0byBpbXBvcnQgc3RhdGVtZW50cyBmcm9tIEBhbmd1bGFyL2NvcmUuXG4gIGNvbnN0IGNvcmVJbXBvcnRJZGVudGlmaWVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8vIENvbnNpZGVyIGFsbCB0aGUgc3RhdGVtZW50cy5cbiAgZm9yIChjb25zdCBzdG10IG9mIGZpbGUuc3RhdGVtZW50cykge1xuICAgIC8vIExvb2sgZm9yIGltcG9ydHMgdG8gQGFuZ3VsYXIvY29yZS5cbiAgICBpZiAodHMuaXNJbXBvcnREZWNsYXJhdGlvbihzdG10KSAmJiB0cy5pc1N0cmluZ0xpdGVyYWwoc3RtdC5tb2R1bGVTcGVjaWZpZXIpICYmXG4gICAgICAgIHN0bXQubW9kdWxlU3BlY2lmaWVyLnRleHQgPT09ICdAYW5ndWxhci9jb3JlJykge1xuICAgICAgLy8gVXBkYXRlIHRoZSBpbXBvcnQgcGF0aCB0byBwb2ludCB0byB0aGUgY29ycmVjdCBmaWxlIHVzaW5nIHRoZSBJbXBvcnRSZXdyaXRlci5cbiAgICAgIGNvbnN0IHJld3JpdHRlbk1vZHVsZVNwZWNpZmllciA9XG4gICAgICAgICAgaW1wb3J0UmV3cml0ZXIucmV3cml0ZVNwZWNpZmllcignQGFuZ3VsYXIvY29yZScsIHNvdXJjZUZpbGVQYXRoKTtcbiAgICAgIGlmIChyZXdyaXR0ZW5Nb2R1bGVTcGVjaWZpZXIgIT09IHN0bXQubW9kdWxlU3BlY2lmaWVyLnRleHQpIHtcbiAgICAgICAgdHJhbnNmb3JtZWRTdGF0ZW1lbnRzLnB1c2godHMudXBkYXRlSW1wb3J0RGVjbGFyYXRpb24oXG4gICAgICAgICAgICBzdG10LCBzdG10LmRlY29yYXRvcnMsIHN0bXQubW9kaWZpZXJzLCBzdG10LmltcG9ydENsYXVzZSxcbiAgICAgICAgICAgIHRzLmNyZWF0ZVN0cmluZ0xpdGVyYWwocmV3cml0dGVuTW9kdWxlU3BlY2lmaWVyKSkpO1xuXG4gICAgICAgIC8vIFJlY29yZCB0aGUgaWRlbnRpZmllciBieSB3aGljaCB0aGlzIGltcG9ydGVkIG1vZHVsZSBnb2VzLCBzbyByZWZlcmVuY2VzIHRvIGl0cyBzeW1ib2xzXG4gICAgICAgIC8vIGNhbiBiZSBkaXNjb3ZlcmVkIGxhdGVyLlxuICAgICAgICBpZiAoc3RtdC5pbXBvcnRDbGF1c2UgIT09IHVuZGVmaW5lZCAmJiBzdG10LmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHRzLmlzTmFtZXNwYWNlSW1wb3J0KHN0bXQuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpKSB7XG4gICAgICAgICAgY29yZUltcG9ydElkZW50aWZpZXJzLmFkZChzdG10LmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzLm5hbWUudGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybWVkU3RhdGVtZW50cy5wdXNoKHN0bXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHMuaXNWYXJpYWJsZVN0YXRlbWVudChzdG10KSAmJiBzdG10LmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBkZWNsID0gc3RtdC5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zWzBdO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIHRoZSDJtU5vbkVtcHR5TW9kdWxlIGV4cG9ydCwgdGhlbiBzYXZlIGl0IGZvciBsYXRlci5cbiAgICAgIGlmICh0cy5pc0lkZW50aWZpZXIoZGVjbC5uYW1lKSkge1xuICAgICAgICBpZiAoZGVjbC5uYW1lLnRleHQgPT09ICfJtU5vbkVtcHR5TW9kdWxlJykge1xuICAgICAgICAgIG5vbkVtcHR5RXhwb3J0ID0gc3RtdDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaWYgdGhpcyBleHBvcnQgaXMgYSBmYWN0b3J5IGZvciBhIGtub3duIE5nTW9kdWxlLCBhbmQgcmV0YWluIGl0IGlmIHNvLlxuICAgICAgICBjb25zdCBtYXRjaCA9IFNUUklQX05HX0ZBQ1RPUlkuZXhlYyhkZWNsLm5hbWUudGV4dCk7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IG1hdGNoID8gbW9kdWxlU3ltYm9scy5nZXQobWF0Y2hbMV0pIDogbnVsbDtcbiAgICAgICAgaWYgKG1vZHVsZSkge1xuICAgICAgICAgIC8vIElmIHRoZSBtb2R1bGUgY2FuIGJlIHRyZWUgc2hha2VuLCB0aGVuIHRoZSBmYWN0b3J5IHNob3VsZCBiZSB3cmFwcGVkIGluIGFcbiAgICAgICAgICAvLyBgbm9TaWRlRWZmZWN0cygpYCBjYWxsIHdoaWNoIHRlbGxzIENsb3N1cmUgdG8gdHJlYXQgdGhlIGV4cHJlc3Npb24gYXMgcHVyZSwgYWxsb3dpbmdcbiAgICAgICAgICAvLyBpdCB0byBiZSByZW1vdmVkIGlmIHRoZSByZXN1bHQgaXMgbm90IHVzZWQuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBgTmdNb2R1bGVgcyB3aXRoIGFuIGBpZGAgcHJvcGVydHkgd2lsbCBiZSBsYXp5IGxvYWRlZC4gR29vZ2xlLWludGVybmFsIGxhenkgbG9hZGluZ1xuICAgICAgICAgIC8vIGluZnJhIHJlbGllcyBvbiBhIHNpZGUgZWZmZWN0IGZyb20gdGhlIGBuZXcgTmdNb2R1bGVGYWN0b3J5KClgIGNhbGwsIHdoaWNoIHJlZ2lzdGVyc1xuICAgICAgICAgIC8vIHRoZSBtb2R1bGUgZ2xvYmFsbHkuIEJlY2F1c2Ugb2YgdGhpcywgd2UgKipjYW5ub3QqKiB0cmVlIHNoYWtlIGFueSBtb2R1bGUgd2hpY2ggaGFzXG4gICAgICAgICAgLy8gYW4gYGlkYCBwcm9wZXJ0eS4gRG9pbmcgc28gd291bGQgY2F1c2UgbGF6eSBsb2FkZWQgbW9kdWxlcyB0byBuZXZlciBiZSByZWdpc3RlcmVkLlxuICAgICAgICAgIGNvbnN0IG1vZHVsZUlzVHJlZVNoYWthYmxlID0gIW1vZHVsZS5oYXNJZDtcbiAgICAgICAgICBjb25zdCBuZXdTdG10ID0gIW1vZHVsZUlzVHJlZVNoYWthYmxlID9cbiAgICAgICAgICAgICAgc3RtdCA6XG4gICAgICAgICAgICAgIHVwZGF0ZUluaXRpYWxpemVycyhcbiAgICAgICAgICAgICAgICAgIHN0bXQsXG4gICAgICAgICAgICAgICAgICAoaW5pdCkgPT4gaW5pdCA/IHdyYXBJbk5vU2lkZUVmZmVjdHMoaW5pdCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgdHJhbnNmb3JtZWRTdGF0ZW1lbnRzLnB1c2gobmV3U3RtdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIExlYXZlIHRoZSBzdGF0ZW1lbnQgYWxvbmUsIGFzIGl0IGNhbid0IGJlIHVuZGVyc3Rvb2QuXG4gICAgICAgIHRyYW5zZm9ybWVkU3RhdGVtZW50cy5wdXNoKHN0bXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJbmNsdWRlIG5vbi12YXJpYWJsZSBzdGF0ZW1lbnRzIChpbXBvcnRzLCBldGMpLlxuICAgICAgdHJhbnNmb3JtZWRTdGF0ZW1lbnRzLnB1c2goc3RtdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgd2hldGhlciB0aGUgZW1wdHkgbW9kdWxlIGV4cG9ydCBpcyBzdGlsbCBuZWVkZWQuXG4gIGlmICghdHJhbnNmb3JtZWRTdGF0ZW1lbnRzLnNvbWUodHMuaXNWYXJpYWJsZVN0YXRlbWVudCkgJiYgbm9uRW1wdHlFeHBvcnQgIT09IG51bGwpIHtcbiAgICAvLyBJZiB0aGUgcmVzdWx0aW5nIGZpbGUgaGFzIG5vIGZhY3RvcmllcywgaW5jbHVkZSBhbiBlbXB0eSBleHBvcnQgdG9cbiAgICAvLyBzYXRpc2Z5IGNsb3N1cmUgY29tcGlsZXIuXG4gICAgdHJhbnNmb3JtZWRTdGF0ZW1lbnRzLnB1c2gobm9uRW1wdHlFeHBvcnQpO1xuICB9XG5cbiAgZmlsZSA9IHRzLnVwZGF0ZVNvdXJjZUZpbGVOb2RlKGZpbGUsIHRyYW5zZm9ybWVkU3RhdGVtZW50cyk7XG5cbiAgLy8gSWYgYW55IGltcG9ydHMgdG8gQGFuZ3VsYXIvY29yZSB3ZXJlIGRldGVjdGVkIGFuZCByZXdyaXR0ZW4gKHdoaWNoIGhhcHBlbnMgd2hlbiBjb21waWxpbmdcbiAgLy8gQGFuZ3VsYXIvY29yZSksIGdvIHRocm91Z2ggdGhlIFNvdXJjZUZpbGUgYW5kIHJld3JpdGUgcmVmZXJlbmNlcyB0byBzeW1ib2xzIGltcG9ydGVkIGZyb20gY29yZS5cbiAgaWYgKGNvcmVJbXBvcnRJZGVudGlmaWVycy5zaXplID4gMCkge1xuICAgIGNvbnN0IHZpc2l0ID0gPFQgZXh0ZW5kcyB0cy5Ob2RlPihub2RlOiBUKTogVCA9PiB7XG4gICAgICBub2RlID0gdHMudmlzaXRFYWNoQ2hpbGQobm9kZSwgY2hpbGQgPT4gdmlzaXQoY2hpbGQpLCBjb250ZXh0KTtcblxuICAgICAgLy8gTG9vayBmb3IgZXhwcmVzc2lvbnMgb2YgdGhlIGZvcm0gXCJpLnNcIiB3aGVyZSAnaScgaXMgYSBkZXRlY3RlZCBuYW1lIGZvciBhbiBAYW5ndWxhci9jb3JlXG4gICAgICAvLyBpbXBvcnQgdGhhdCB3YXMgY2hhbmdlZCBhYm92ZS4gUmV3cml0ZSAncycgdXNpbmcgdGhlIEltcG9ydFJlc29sdmVyLlxuICAgICAgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUpICYmIHRzLmlzSWRlbnRpZmllcihub2RlLmV4cHJlc3Npb24pICYmXG4gICAgICAgICAgY29yZUltcG9ydElkZW50aWZpZXJzLmhhcyhub2RlLmV4cHJlc3Npb24udGV4dCkpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhbiBpbXBvcnQgb2YgYSBzeW1ib2wgZnJvbSBAYW5ndWxhci9jb3JlLiBUcmFuc2Zvcm0gaXQgd2l0aCB0aGUgaW1wb3J0UmV3cml0ZXIuXG4gICAgICAgIGNvbnN0IHJld3JpdHRlblN5bWJvbCA9IGltcG9ydFJld3JpdGVyLnJld3JpdGVTeW1ib2wobm9kZS5uYW1lLnRleHQsICdAYW5ndWxhci9jb3JlJyk7XG4gICAgICAgIGlmIChyZXdyaXR0ZW5TeW1ib2wgIT09IG5vZGUubmFtZS50ZXh0KSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZCA9XG4gICAgICAgICAgICAgIHRzLnVwZGF0ZVByb3BlcnR5QWNjZXNzKG5vZGUsIG5vZGUuZXhwcmVzc2lvbiwgdHMuY3JlYXRlSWRlbnRpZmllcihyZXdyaXR0ZW5TeW1ib2wpKTtcbiAgICAgICAgICBub2RlID0gdXBkYXRlZCBhcyBUICYgdHMuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9O1xuXG4gICAgZmlsZSA9IHZpc2l0KGZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGU7XG59XG5cblxuLyoqXG4gKiBQYXJzZXMgYW5kIHJldHVybnMgdGhlIGNvbW1lbnQgdGV4dCBvZiBhIFxcQGZpbGVvdmVydmlldyBjb21tZW50IGluIHRoZSBnaXZlbiBzb3VyY2UgZmlsZS5cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZW92ZXJ2aWV3Q29tbWVudChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKTogc3RyaW5nfG51bGwge1xuICBjb25zdCB0ZXh0ID0gc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpO1xuICBjb25zdCB0cml2aWEgPSB0ZXh0LnN1YnN0cmluZygwLCBzb3VyY2VGaWxlLmdldFN0YXJ0KCkpO1xuXG4gIGNvbnN0IGxlYWRpbmdDb21tZW50cyA9IHRzLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKHRyaXZpYSwgMCk7XG4gIGlmICghbGVhZGluZ0NvbW1lbnRzIHx8IGxlYWRpbmdDb21tZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnQgPSBsZWFkaW5nQ29tbWVudHNbMF07XG4gIGlmIChjb21tZW50LmtpbmQgIT09IHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSBjb21tZW50cyBzZXBhcmF0ZWQgd2l0aCBhIFxcblxcbiBmcm9tIHRoZSBmaWxlIGNvbnRlbnRzIGFyZSBjb25zaWRlcmVkIGZpbGUtbGV2ZWwgY29tbWVudHNcbiAgLy8gaW4gVHlwZVNjcmlwdC5cbiAgaWYgKHRleHQuc3Vic3RyaW5nKGNvbW1lbnQuZW5kLCBjb21tZW50LmVuZCArIDIpICE9PSAnXFxuXFxuJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY29tbWVudFRleHQgPSB0ZXh0LnN1YnN0cmluZyhjb21tZW50LnBvcywgY29tbWVudC5lbmQpO1xuICAvLyBDbG9zdXJlIENvbXBpbGVyIGlnbm9yZXMgQHN1cHByZXNzIGFuZCBzaW1pbGFyIGlmIHRoZSBjb21tZW50IGNvbnRhaW5zIEBsaWNlbnNlLlxuICBpZiAoY29tbWVudFRleHQuaW5kZXhPZignQGxpY2Vuc2UnKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBjb21tZW50VGV4dDtcbn1cblxuLyoqXG4gKiBXcmFwcyB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBpbiBhIGNhbGwgdG8gYMm1bm9TaWRlRWZmZWN0cygpYCwgd2hpY2ggdGVsbHNcbiAqIENsb3N1cmUgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgc2lkZSBlZmZlY3RzIG9mIHRoaXMgZXhwcmVzc2lvbiBhbmQgaXQgc2hvdWxkXG4gKiBiZSB0cmVhdGVkIGFzIFwicHVyZVwiLiBDbG9zdXJlIGlzIGZyZWUgdG8gdHJlZSBzaGFrZSB0aGlzIGV4cHJlc3Npb24gaWYgaXRzXG4gKiByZXN1bHQgaXMgbm90IHVzZWQuXG4gKlxuICogRXhhbXBsZTogVGFrZXMgYDEgKyAyYCBhbmQgcmV0dXJucyBgaTAuybVub1NpZGVFZmZlY3RzKCgpID0+IDEgKyAyKWAuXG4gKi9cbmZ1bmN0aW9uIHdyYXBJbk5vU2lkZUVmZmVjdHMoZXhwcjogdHMuRXhwcmVzc2lvbik6IHRzLkV4cHJlc3Npb24ge1xuICBjb25zdCBub1NpZGVFZmZlY3RzID0gdHMuY3JlYXRlUHJvcGVydHlBY2Nlc3MoXG4gICAgICB0cy5jcmVhdGVJZGVudGlmaWVyKCdpMCcpLFxuICAgICAgJ8m1bm9TaWRlRWZmZWN0cycsXG4gICk7XG5cbiAgcmV0dXJuIHRzLmNyZWF0ZUNhbGwoXG4gICAgICBub1NpZGVFZmZlY3RzLFxuICAgICAgLyogdHlwZUFyZ3VtZW50cyAqL1tdLFxuICAgICAgLyogYXJndW1lbnRzICovXG4gICAgICBbXG4gICAgICAgIHRzLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICAgIC8qIG1vZGlmaWVycyAqL1tdLFxuICAgICAgICAgICAgLyogYXN0ZXJpc2tUb2tlbiAqLyB1bmRlZmluZWQsXG4gICAgICAgICAgICAvKiBuYW1lICovIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8qIHR5cGVQYXJhbWV0ZXJzICovW10sXG4gICAgICAgICAgICAvKiBwYXJhbWV0ZXJzICovW10sXG4gICAgICAgICAgICAvKiB0eXBlICovIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8qIGJvZHkgKi8gdHMuY3JlYXRlQmxvY2soW1xuICAgICAgICAgICAgICB0cy5jcmVhdGVSZXR1cm4oZXhwciksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICksXG4gICAgICBdLFxuICApO1xufVxuXG4vKipcbiAqIENsb25lcyBhbmQgdXBkYXRlcyB0aGUgaW5pdGlhbGl6ZXJzIGZvciBhIGdpdmVuIHN0YXRlbWVudCB0byB1c2UgdGhlIG5ld1xuICogZXhwcmVzc2lvbiBwcm92aWRlZC4gRG9lcyBub3QgbXV0YXRlIHRoZSBpbnB1dCBzdGF0ZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUluaXRpYWxpemVycyhcbiAgICBzdG10OiB0cy5WYXJpYWJsZVN0YXRlbWVudCxcbiAgICB1cGRhdGU6IChpbml0aWFsaXplcj86IHRzLkV4cHJlc3Npb24pID0+IHRzLkV4cHJlc3Npb24gfCB1bmRlZmluZWQsXG4gICAgKTogdHMuVmFyaWFibGVTdGF0ZW1lbnQge1xuICByZXR1cm4gdHMudXBkYXRlVmFyaWFibGVTdGF0ZW1lbnQoXG4gICAgICBzdG10LFxuICAgICAgc3RtdC5tb2RpZmllcnMsXG4gICAgICB0cy51cGRhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChcbiAgICAgICAgICBzdG10LmRlY2xhcmF0aW9uTGlzdCxcbiAgICAgICAgICBzdG10LmRlY2xhcmF0aW9uTGlzdC5kZWNsYXJhdGlvbnMubWFwKFxuICAgICAgICAgICAgICAoZGVjbCkgPT4gdHMudXBkYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcbiAgICAgICAgICAgICAgICAgIGRlY2wsXG4gICAgICAgICAgICAgICAgICBkZWNsLm5hbWUsXG4gICAgICAgICAgICAgICAgICBkZWNsLnR5cGUsXG4gICAgICAgICAgICAgICAgICB1cGRhdGUoZGVjbC5pbml0aWFsaXplciksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICk7XG59XG4iXX0=
@@ -1,67 +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 { absoluteFromSourceFile } from '../../file_system';
9
- import { isNonDeclarationTsPath } from '../../util/src/typescript';
10
- import { isShim, sfExtensionData } from './expando';
11
- import { makeShimFileName } from './util';
12
- /**
13
- * Manipulates the `referencedFiles` property of `ts.SourceFile`s to add references to shim files
14
- * for each original source file, causing the shims to be loaded into the program as well.
15
- *
16
- * `ShimReferenceTagger`s are intended to operate during program creation only.
17
- */
18
- export class ShimReferenceTagger {
19
- constructor(shimExtensions) {
20
- /**
21
- * Tracks which original files have been processed and had shims generated if necessary.
22
- *
23
- * This is used to avoid generating shims twice for the same file.
24
- */
25
- this.tagged = new Set();
26
- /**
27
- * Whether shim tagging is currently being performed.
28
- */
29
- this.enabled = true;
30
- this.suffixes = shimExtensions.map(extension => `.${extension}.ts`);
31
- }
32
- /**
33
- * Tag `sf` with any needed references if it's not a shim itself.
34
- */
35
- tag(sf) {
36
- if (!this.enabled || sf.isDeclarationFile || isShim(sf) || this.tagged.has(sf) ||
37
- !isNonDeclarationTsPath(sf.fileName)) {
38
- return;
39
- }
40
- const ext = sfExtensionData(sf);
41
- // If this file has never been tagged before, capture its `referencedFiles` in the extension
42
- // data.
43
- if (ext.originalReferencedFiles === null) {
44
- ext.originalReferencedFiles = sf.referencedFiles;
45
- }
46
- const referencedFiles = [...ext.originalReferencedFiles];
47
- const sfPath = absoluteFromSourceFile(sf);
48
- for (const suffix of this.suffixes) {
49
- referencedFiles.push({
50
- fileName: makeShimFileName(sfPath, suffix),
51
- pos: 0,
52
- end: 0,
53
- });
54
- }
55
- ext.taggedReferenceFiles = referencedFiles;
56
- sf.referencedFiles = referencedFiles;
57
- this.tagged.add(sf);
58
- }
59
- /**
60
- * Disable the `ShimReferenceTagger` and free memory associated with tracking tagged files.
61
- */
62
- finalize() {
63
- this.enabled = false;
64
- this.tagged.clear();
65
- }
66
- }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlX3RhZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL3JlZmVyZW5jZV90YWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBSUgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXhDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQWU5QixZQUFZLGNBQXdCO1FBWnBDOzs7O1dBSUc7UUFDSyxXQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7UUFFMUM7O1dBRUc7UUFDSyxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsRUFBaUI7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEMsT0FBTztTQUNSO1FBRUQsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLDRGQUE0RjtRQUM1RixRQUFRO1FBQ1IsSUFBSSxHQUFHLENBQUMsdUJBQXVCLEtBQUssSUFBSSxFQUFFO1lBQ3hDLEdBQUcsQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO1NBQ2xEO1FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBR3pELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUNuQixRQUFRLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztnQkFDMUMsR0FBRyxFQUFFLENBQUM7Z0JBQ04sR0FBRyxFQUFFLENBQUM7YUFDUCxDQUFDLENBQUM7U0FDSjtRQUVELEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxlQUFlLENBQUM7UUFDM0MsRUFBRSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2Fic29sdXRlRnJvbVNvdXJjZUZpbGV9IGZyb20gJy4uLy4uL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7aXNOb25EZWNsYXJhdGlvblRzUGF0aH0gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7aXNTaGltLCBzZkV4dGVuc2lvbkRhdGF9IGZyb20gJy4vZXhwYW5kbyc7XG5pbXBvcnQge21ha2VTaGltRmlsZU5hbWV9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogTWFuaXB1bGF0ZXMgdGhlIGByZWZlcmVuY2VkRmlsZXNgIHByb3BlcnR5IG9mIGB0cy5Tb3VyY2VGaWxlYHMgdG8gYWRkIHJlZmVyZW5jZXMgdG8gc2hpbSBmaWxlc1xuICogZm9yIGVhY2ggb3JpZ2luYWwgc291cmNlIGZpbGUsIGNhdXNpbmcgdGhlIHNoaW1zIHRvIGJlIGxvYWRlZCBpbnRvIHRoZSBwcm9ncmFtIGFzIHdlbGwuXG4gKlxuICogYFNoaW1SZWZlcmVuY2VUYWdnZXJgcyBhcmUgaW50ZW5kZWQgdG8gb3BlcmF0ZSBkdXJpbmcgcHJvZ3JhbSBjcmVhdGlvbiBvbmx5LlxuICovXG5leHBvcnQgY2xhc3MgU2hpbVJlZmVyZW5jZVRhZ2dlciB7XG4gIHByaXZhdGUgc3VmZml4ZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUcmFja3Mgd2hpY2ggb3JpZ2luYWwgZmlsZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBhbmQgaGFkIHNoaW1zIGdlbmVyYXRlZCBpZiBuZWNlc3NhcnkuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCB0byBhdm9pZCBnZW5lcmF0aW5nIHNoaW1zIHR3aWNlIGZvciB0aGUgc2FtZSBmaWxlLlxuICAgKi9cbiAgcHJpdmF0ZSB0YWdnZWQgPSBuZXcgU2V0PHRzLlNvdXJjZUZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc2hpbSB0YWdnaW5nIGlzIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuXG4gICAqL1xuICBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNoaW1FeHRlbnNpb25zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc3VmZml4ZXMgPSBzaGltRXh0ZW5zaW9ucy5tYXAoZXh0ZW5zaW9uID0+IGAuJHtleHRlbnNpb259LnRzYCk7XG4gIH1cblxuICAvKipcbiAgICogVGFnIGBzZmAgd2l0aCBhbnkgbmVlZGVkIHJlZmVyZW5jZXMgaWYgaXQncyBub3QgYSBzaGltIGl0c2VsZi5cbiAgICovXG4gIHRhZyhzZjogdHMuU291cmNlRmlsZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lbmFibGVkIHx8IHNmLmlzRGVjbGFyYXRpb25GaWxlIHx8IGlzU2hpbShzZikgfHwgdGhpcy50YWdnZWQuaGFzKHNmKSB8fFxuICAgICAgICAhaXNOb25EZWNsYXJhdGlvblRzUGF0aChzZi5maWxlTmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBleHQgPSBzZkV4dGVuc2lvbkRhdGEoc2YpO1xuXG4gICAgLy8gSWYgdGhpcyBmaWxlIGhhcyBuZXZlciBiZWVuIHRhZ2dlZCBiZWZvcmUsIGNhcHR1cmUgaXRzIGByZWZlcmVuY2VkRmlsZXNgIGluIHRoZSBleHRlbnNpb25cbiAgICAvLyBkYXRhLlxuICAgIGlmIChleHQub3JpZ2luYWxSZWZlcmVuY2VkRmlsZXMgPT09IG51bGwpIHtcbiAgICAgIGV4dC5vcmlnaW5hbFJlZmVyZW5jZWRGaWxlcyA9IHNmLnJlZmVyZW5jZWRGaWxlcztcbiAgICB9XG5cbiAgICBjb25zdCByZWZlcmVuY2VkRmlsZXMgPSBbLi4uZXh0Lm9yaWdpbmFsUmVmZXJlbmNlZEZpbGVzXTtcblxuXG4gICAgY29uc3Qgc2ZQYXRoID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShzZik7XG4gICAgZm9yIChjb25zdCBzdWZmaXggb2YgdGhpcy5zdWZmaXhlcykge1xuICAgICAgcmVmZXJlbmNlZEZpbGVzLnB1c2goe1xuICAgICAgICBmaWxlTmFtZTogbWFrZVNoaW1GaWxlTmFtZShzZlBhdGgsIHN1ZmZpeCksXG4gICAgICAgIHBvczogMCxcbiAgICAgICAgZW5kOiAwLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXh0LnRhZ2dlZFJlZmVyZW5jZUZpbGVzID0gcmVmZXJlbmNlZEZpbGVzO1xuICAgIHNmLnJlZmVyZW5jZWRGaWxlcyA9IHJlZmVyZW5jZWRGaWxlcztcbiAgICB0aGlzLnRhZ2dlZC5hZGQoc2YpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGBTaGltUmVmZXJlbmNlVGFnZ2VyYCBhbmQgZnJlZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRyYWNraW5nIHRhZ2dlZCBmaWxlcy5cbiAgICovXG4gIGZpbmFsaXplKCk6IHZvaWQge1xuICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMudGFnZ2VkLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,64 +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 { generatedModuleName } from './util';
10
- export class SummaryGenerator {
11
- constructor() {
12
- this.shouldEmit = true;
13
- this.extensionPrefix = 'ngsummary';
14
- }
15
- generateShimForFile(sf, genFilePath) {
16
- // Collect a list of classes that need to have factory types emitted for them. This list is
17
- // overly broad as at this point the ts.TypeChecker has not been created and so it can't be used
18
- // to semantically understand which decorators are Angular decorators. It's okay to output an
19
- // overly broad set of summary exports as the exports are no-ops anyway, and summaries are a
20
- // compatibility layer which will be removed after Ivy is enabled.
21
- const symbolNames = [];
22
- for (const stmt of sf.statements) {
23
- if (ts.isClassDeclaration(stmt)) {
24
- // If the class isn't exported, or if it's not decorated, then skip it.
25
- if (!isExported(stmt) || stmt.decorators === undefined || stmt.name === undefined) {
26
- continue;
27
- }
28
- symbolNames.push(stmt.name.text);
29
- }
30
- else if (ts.isExportDeclaration(stmt)) {
31
- // Look for an export statement of the form "export {...};". If it doesn't match that, then
32
- // skip it.
33
- if (stmt.exportClause === undefined || stmt.moduleSpecifier !== undefined ||
34
- !ts.isNamedExports(stmt.exportClause)) {
35
- continue;
36
- }
37
- for (const specifier of stmt.exportClause.elements) {
38
- // At this point, there is no guarantee that specifier here refers to a class declaration,
39
- // but that's okay.
40
- // Use specifier.name as that's guaranteed to be the exported name, regardless of whether
41
- // specifier.propertyName is set.
42
- symbolNames.push(specifier.name.text);
43
- }
44
- }
45
- }
46
- const varLines = symbolNames.map(name => `export const ${name}NgSummary: any = null;`);
47
- if (varLines.length === 0) {
48
- // In the event there are no other exports, add an empty export to ensure the generated
49
- // summary file is still an ES module.
50
- varLines.push(`export const ɵempty = null;`);
51
- }
52
- const sourceText = varLines.join('\n');
53
- const genFile = ts.createSourceFile(genFilePath, sourceText, sf.languageVersion, true, ts.ScriptKind.TS);
54
- if (sf.moduleName !== undefined) {
55
- genFile.moduleName = generatedModuleName(sf.moduleName, sf.fileName, '.ngsummary');
56
- }
57
- return genFile;
58
- }
59
- }
60
- function isExported(decl) {
61
- return decl.modifiers !== undefined &&
62
- decl.modifiers.some(mod => mod.kind == ts.SyntaxKind.ExportKeyword);
63
- }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeV9nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NoaW1zL3NyYy9zdW1tYXJ5X2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUtqQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNXLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxXQUFXLENBQUM7SUFrRHpDLENBQUM7SUFoREMsbUJBQW1CLENBQUMsRUFBaUIsRUFBRSxXQUEyQjtRQUNoRSwyRkFBMkY7UUFDM0YsZ0dBQWdHO1FBQ2hHLDZGQUE2RjtRQUM3Riw0RkFBNEY7UUFDNUYsa0VBQWtFO1FBQ2xFLE1BQU0sV0FBVyxHQUFhLEVBQUUsQ0FBQztRQUNqQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7WUFDaEMsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLHVFQUF1RTtnQkFDdkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDakYsU0FBUztpQkFDVjtnQkFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEM7aUJBQU0sSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZDLDJGQUEyRjtnQkFDM0YsV0FBVztnQkFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUztvQkFDckUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDekMsU0FBUztpQkFDVjtnQkFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO29CQUNsRCwwRkFBMEY7b0JBQzFGLG1CQUFtQjtvQkFFbkIseUZBQXlGO29CQUN6RixpQ0FBaUM7b0JBQ2pDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdkM7YUFDRjtTQUNGO1FBRUQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixJQUFJLHdCQUF3QixDQUFDLENBQUM7UUFFdkYsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6Qix1RkFBdUY7WUFDdkYsc0NBQXNDO1lBQ3RDLFFBQVEsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUM5QztRQUNELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQ1QsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RixJQUFJLEVBQUUsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3BGO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBb0I7SUFDdEMsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtQZXJGaWxlU2hpbUdlbmVyYXRvcn0gZnJvbSAnLi4vYXBpJztcblxuaW1wb3J0IHtnZW5lcmF0ZWRNb2R1bGVOYW1lfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgU3VtbWFyeUdlbmVyYXRvciBpbXBsZW1lbnRzIFBlckZpbGVTaGltR2VuZXJhdG9yIHtcbiAgcmVhZG9ubHkgc2hvdWxkRW1pdCA9IHRydWU7XG4gIHJlYWRvbmx5IGV4dGVuc2lvblByZWZpeCA9ICduZ3N1bW1hcnknO1xuXG4gIGdlbmVyYXRlU2hpbUZvckZpbGUoc2Y6IHRzLlNvdXJjZUZpbGUsIGdlbkZpbGVQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IHRzLlNvdXJjZUZpbGUge1xuICAgIC8vIENvbGxlY3QgYSBsaXN0IG9mIGNsYXNzZXMgdGhhdCBuZWVkIHRvIGhhdmUgZmFjdG9yeSB0eXBlcyBlbWl0dGVkIGZvciB0aGVtLiBUaGlzIGxpc3QgaXNcbiAgICAvLyBvdmVybHkgYnJvYWQgYXMgYXQgdGhpcyBwb2ludCB0aGUgdHMuVHlwZUNoZWNrZXIgaGFzIG5vdCBiZWVuIGNyZWF0ZWQgYW5kIHNvIGl0IGNhbid0IGJlIHVzZWRcbiAgICAvLyB0byBzZW1hbnRpY2FsbHkgdW5kZXJzdGFuZCB3aGljaCBkZWNvcmF0b3JzIGFyZSBBbmd1bGFyIGRlY29yYXRvcnMuIEl0J3Mgb2theSB0byBvdXRwdXQgYW5cbiAgICAvLyBvdmVybHkgYnJvYWQgc2V0IG9mIHN1bW1hcnkgZXhwb3J0cyBhcyB0aGUgZXhwb3J0cyBhcmUgbm8tb3BzIGFueXdheSwgYW5kIHN1bW1hcmllcyBhcmUgYVxuICAgIC8vIGNvbXBhdGliaWxpdHkgbGF5ZXIgd2hpY2ggd2lsbCBiZSByZW1vdmVkIGFmdGVyIEl2eSBpcyBlbmFibGVkLlxuICAgIGNvbnN0IHN5bWJvbE5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgc3RtdCBvZiBzZi5zdGF0ZW1lbnRzKSB7XG4gICAgICBpZiAodHMuaXNDbGFzc0RlY2xhcmF0aW9uKHN0bXQpKSB7XG4gICAgICAgIC8vIElmIHRoZSBjbGFzcyBpc24ndCBleHBvcnRlZCwgb3IgaWYgaXQncyBub3QgZGVjb3JhdGVkLCB0aGVuIHNraXAgaXQuXG4gICAgICAgIGlmICghaXNFeHBvcnRlZChzdG10KSB8fCBzdG10LmRlY29yYXRvcnMgPT09IHVuZGVmaW5lZCB8fCBzdG10Lm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHN5bWJvbE5hbWVzLnB1c2goc3RtdC5uYW1lLnRleHQpO1xuICAgICAgfSBlbHNlIGlmICh0cy5pc0V4cG9ydERlY2xhcmF0aW9uKHN0bXQpKSB7XG4gICAgICAgIC8vIExvb2sgZm9yIGFuIGV4cG9ydCBzdGF0ZW1lbnQgb2YgdGhlIGZvcm0gXCJleHBvcnQgey4uLn07XCIuIElmIGl0IGRvZXNuJ3QgbWF0Y2ggdGhhdCwgdGhlblxuICAgICAgICAvLyBza2lwIGl0LlxuICAgICAgICBpZiAoc3RtdC5leHBvcnRDbGF1c2UgPT09IHVuZGVmaW5lZCB8fCBzdG10Lm1vZHVsZVNwZWNpZmllciAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAhdHMuaXNOYW1lZEV4cG9ydHMoc3RtdC5leHBvcnRDbGF1c2UpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHNwZWNpZmllciBvZiBzdG10LmV4cG9ydENsYXVzZS5lbGVtZW50cykge1xuICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHNwZWNpZmllciBoZXJlIHJlZmVycyB0byBhIGNsYXNzIGRlY2xhcmF0aW9uLFxuICAgICAgICAgIC8vIGJ1dCB0aGF0J3Mgb2theS5cblxuICAgICAgICAgIC8vIFVzZSBzcGVjaWZpZXIubmFtZSBhcyB0aGF0J3MgZ3VhcmFudGVlZCB0byBiZSB0aGUgZXhwb3J0ZWQgbmFtZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyXG4gICAgICAgICAgLy8gc3BlY2lmaWVyLnByb3BlcnR5TmFtZSBpcyBzZXQuXG4gICAgICAgICAgc3ltYm9sTmFtZXMucHVzaChzcGVjaWZpZXIubmFtZS50ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZhckxpbmVzID0gc3ltYm9sTmFtZXMubWFwKG5hbWUgPT4gYGV4cG9ydCBjb25zdCAke25hbWV9TmdTdW1tYXJ5OiBhbnkgPSBudWxsO2ApO1xuXG4gICAgaWYgKHZhckxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gSW4gdGhlIGV2ZW50IHRoZXJlIGFyZSBubyBvdGhlciBleHBvcnRzLCBhZGQgYW4gZW1wdHkgZXhwb3J0IHRvIGVuc3VyZSB0aGUgZ2VuZXJhdGVkXG4gICAgICAvLyBzdW1tYXJ5IGZpbGUgaXMgc3RpbGwgYW4gRVMgbW9kdWxlLlxuICAgICAgdmFyTGluZXMucHVzaChgZXhwb3J0IGNvbnN0IMm1ZW1wdHkgPSBudWxsO2ApO1xuICAgIH1cbiAgICBjb25zdCBzb3VyY2VUZXh0ID0gdmFyTGluZXMuam9pbignXFxuJyk7XG4gICAgY29uc3QgZ2VuRmlsZSA9XG4gICAgICAgIHRzLmNyZWF0ZVNvdXJjZUZpbGUoZ2VuRmlsZVBhdGgsIHNvdXJjZVRleHQsIHNmLmxhbmd1YWdlVmVyc2lvbiwgdHJ1ZSwgdHMuU2NyaXB0S2luZC5UUyk7XG4gICAgaWYgKHNmLm1vZHVsZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZ2VuRmlsZS5tb2R1bGVOYW1lID0gZ2VuZXJhdGVkTW9kdWxlTmFtZShzZi5tb2R1bGVOYW1lLCBzZi5maWxlTmFtZSwgJy5uZ3N1bW1hcnknKTtcbiAgICB9XG4gICAgcmV0dXJuIGdlbkZpbGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNFeHBvcnRlZChkZWNsOiB0cy5EZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gZGVjbC5tb2RpZmllcnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgZGVjbC5tb2RpZmllcnMuc29tZShtb2QgPT4gbW9kLmtpbmQgPT0gdHMuU3ludGF4S2luZC5FeHBvcnRLZXl3b3JkKTtcbn1cbiJdfQ==
@@ -1,26 +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 { absoluteFrom } from '../../file_system';
9
- const TS_EXTENSIONS = /\.tsx?$/i;
10
- /**
11
- * Replace the .ts or .tsx extension of a file with the shim filename suffix.
12
- */
13
- export function makeShimFileName(fileName, suffix) {
14
- return absoluteFrom(fileName.replace(TS_EXTENSIONS, suffix));
15
- }
16
- export function generatedModuleName(originalModuleName, originalFileName, genSuffix) {
17
- let moduleName;
18
- if (originalFileName.endsWith('/index.ts')) {
19
- moduleName = originalModuleName + '/index' + genSuffix;
20
- }
21
- else {
22
- moduleName = originalModuleName + genSuffix;
23
- }
24
- return moduleName;
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2Mvc2hpbXMvc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBaUIsTUFBTSxtQkFBbUIsQ0FBQztBQUUvRCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBd0IsRUFBRSxNQUFjO0lBQ3ZFLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0Isa0JBQTBCLEVBQUUsZ0JBQXdCLEVBQUUsU0FBaUI7SUFDekUsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzFDLFVBQVUsR0FBRyxrQkFBa0IsR0FBRyxRQUFRLEdBQUcsU0FBUyxDQUFDO0tBQ3hEO1NBQU07UUFDTCxVQUFVLEdBQUcsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO0tBQzdDO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2Fic29sdXRlRnJvbSwgQWJzb2x1dGVGc1BhdGh9IGZyb20gJy4uLy4uL2ZpbGVfc3lzdGVtJztcblxuY29uc3QgVFNfRVhURU5TSU9OUyA9IC9cXC50c3g/JC9pO1xuXG4vKipcbiAqIFJlcGxhY2UgdGhlIC50cyBvciAudHN4IGV4dGVuc2lvbiBvZiBhIGZpbGUgd2l0aCB0aGUgc2hpbSBmaWxlbmFtZSBzdWZmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlU2hpbUZpbGVOYW1lKGZpbGVOYW1lOiBBYnNvbHV0ZUZzUGF0aCwgc3VmZml4OiBzdHJpbmcpOiBBYnNvbHV0ZUZzUGF0aCB7XG4gIHJldHVybiBhYnNvbHV0ZUZyb20oZmlsZU5hbWUucmVwbGFjZShUU19FWFRFTlNJT05TLCBzdWZmaXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlZE1vZHVsZU5hbWUoXG4gICAgb3JpZ2luYWxNb2R1bGVOYW1lOiBzdHJpbmcsIG9yaWdpbmFsRmlsZU5hbWU6IHN0cmluZywgZ2VuU3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgbW9kdWxlTmFtZTogc3RyaW5nO1xuICBpZiAob3JpZ2luYWxGaWxlTmFtZS5lbmRzV2l0aCgnL2luZGV4LnRzJykpIHtcbiAgICBtb2R1bGVOYW1lID0gb3JpZ2luYWxNb2R1bGVOYW1lICsgJy9pbmRleCcgKyBnZW5TdWZmaXg7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlTmFtZSA9IG9yaWdpbmFsTW9kdWxlTmFtZSArIGdlblN1ZmZpeDtcbiAgfVxuXG4gIHJldHVybiBtb2R1bGVOYW1lO1xufVxuIl19
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { ContentOrigin } from './src/content_origin';
9
- export { SourceFile } from './src/source_file';
10
- export { SourceFileLoader } from './src/source_file_loader';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NvdXJjZW1hcHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBVSxVQUFVLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuZXhwb3J0IHtDb250ZW50T3JpZ2lufSBmcm9tICcuL3NyYy9jb250ZW50X29yaWdpbic7XG5leHBvcnQge01hcEFuZFBhdGgsIFJhd1NvdXJjZU1hcH0gZnJvbSAnLi9zcmMvcmF3X3NvdXJjZV9tYXAnO1xuZXhwb3J0IHtNYXBwaW5nLCBTb3VyY2VGaWxlfSBmcm9tICcuL3NyYy9zb3VyY2VfZmlsZSc7XG5leHBvcnQge1NvdXJjZUZpbGVMb2FkZXJ9IGZyb20gJy4vc3JjL3NvdXJjZV9maWxlX2xvYWRlcic7XG4iXX0=
File without changes
@@ -1,35 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * From where the content for a source file or source-map came.
10
- *
11
- * - Source files can be linked to source-maps by:
12
- * - providing the content inline via a base64 encoded data comment,
13
- * - providing a URL to the file path in a comment,
14
- * - the loader inferring the source-map path from the source file path.
15
- * - Source-maps can link to source files by:
16
- * - providing the content inline in the `sourcesContent` property
17
- * - providing the path to the file in the `sources` property
18
- */
19
- export var ContentOrigin;
20
- (function (ContentOrigin) {
21
- /**
22
- * The contents were provided programmatically when calling `loadSourceFile()`.
23
- */
24
- ContentOrigin[ContentOrigin["Provided"] = 0] = "Provided";
25
- /**
26
- * The contents were extracted directly form the contents of the referring file.
27
- */
28
- ContentOrigin[ContentOrigin["Inline"] = 1] = "Inline";
29
- /**
30
- * The contents were loaded from the file-system, after being explicitly referenced or inferred
31
- * from the referring file.
32
- */
33
- ContentOrigin[ContentOrigin["FileSystem"] = 2] = "FileSystem";
34
- })(ContentOrigin || (ContentOrigin = {}));
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudF9vcmlnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NvdXJjZW1hcHMvc3JjL2NvbnRlbnRfb3JpZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQWNYO0FBZEQsV0FBWSxhQUFhO0lBQ3ZCOztPQUVHO0lBQ0gseURBQVEsQ0FBQTtJQUNSOztPQUVHO0lBQ0gscURBQU0sQ0FBQTtJQUNOOzs7T0FHRztJQUNILDZEQUFVLENBQUE7QUFDWixDQUFDLEVBZFcsYUFBYSxLQUFiLGFBQWEsUUFjeEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBGcm9tIHdoZXJlIHRoZSBjb250ZW50IGZvciBhIHNvdXJjZSBmaWxlIG9yIHNvdXJjZS1tYXAgY2FtZS5cbiAqXG4gKiAtIFNvdXJjZSBmaWxlcyBjYW4gYmUgbGlua2VkIHRvIHNvdXJjZS1tYXBzIGJ5OlxuICogICAtIHByb3ZpZGluZyB0aGUgY29udGVudCBpbmxpbmUgdmlhIGEgYmFzZTY0IGVuY29kZWQgZGF0YSBjb21tZW50LFxuICogICAtIHByb3ZpZGluZyBhIFVSTCB0byB0aGUgZmlsZSBwYXRoIGluIGEgY29tbWVudCxcbiAqICAgLSB0aGUgbG9hZGVyIGluZmVycmluZyB0aGUgc291cmNlLW1hcCBwYXRoIGZyb20gdGhlIHNvdXJjZSBmaWxlIHBhdGguXG4gKiAtIFNvdXJjZS1tYXBzIGNhbiBsaW5rIHRvIHNvdXJjZSBmaWxlcyBieTpcbiAqICAgLSBwcm92aWRpbmcgdGhlIGNvbnRlbnQgaW5saW5lIGluIHRoZSBgc291cmNlc0NvbnRlbnRgIHByb3BlcnR5XG4gKiAgIC0gcHJvdmlkaW5nIHRoZSBwYXRoIHRvIHRoZSBmaWxlIGluIHRoZSBgc291cmNlc2AgcHJvcGVydHlcbiAqL1xuZXhwb3J0IGVudW0gQ29udGVudE9yaWdpbiB7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudHMgd2VyZSBwcm92aWRlZCBwcm9ncmFtbWF0aWNhbGx5IHdoZW4gY2FsbGluZyBgbG9hZFNvdXJjZUZpbGUoKWAuXG4gICAqL1xuICBQcm92aWRlZCxcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50cyB3ZXJlIGV4dHJhY3RlZCBkaXJlY3RseSBmb3JtIHRoZSBjb250ZW50cyBvZiB0aGUgcmVmZXJyaW5nIGZpbGUuXG4gICAqL1xuICBJbmxpbmUsXG4gIC8qKlxuICAgKiBUaGUgY29udGVudHMgd2VyZSBsb2FkZWQgZnJvbSB0aGUgZmlsZS1zeXN0ZW0sIGFmdGVyIGJlaW5nIGV4cGxpY2l0bHkgcmVmZXJlbmNlZCBvciBpbmZlcnJlZFxuICAgKiBmcm9tIHRoZSByZWZlcnJpbmcgZmlsZS5cbiAgICovXG4gIEZpbGVTeXN0ZW0sXG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3X3NvdXJjZV9tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NvdXJjZW1hcHMvc3JjL3Jhd19zb3VyY2VfbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGh9IGZyb20gJy4uLy4uL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7Q29udGVudE9yaWdpbn0gZnJvbSAnLi9jb250ZW50X29yaWdpbic7XG5cbi8qKlxuICogVGhpcyBpbnRlcmZhY2UgaXMgdGhlIGJhc2ljIHN0cnVjdHVyZSBvZiB0aGUgSlNPTiBpbiBhIHJhdyBzb3VyY2UgbWFwIHRoYXQgb25lIG1pZ2h0IGxvYWQgZnJvbVxuICogZGlzay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXdTb3VyY2VNYXAge1xuICB2ZXJzaW9uOiBudW1iZXJ8c3RyaW5nO1xuICBmaWxlPzogc3RyaW5nO1xuICBzb3VyY2VSb290Pzogc3RyaW5nO1xuICBzb3VyY2VzOiBzdHJpbmdbXTtcbiAgbmFtZXM6IHN0cmluZ1tdO1xuICBzb3VyY2VzQ29udGVudD86IChzdHJpbmd8bnVsbClbXTtcbiAgbWFwcGluZ3M6IHN0cmluZztcbn1cblxuXG4vKipcbiAqIFRoZSBwYXRoIGFuZCBjb250ZW50IG9mIGEgc291cmNlLW1hcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXBBbmRQYXRoIHtcbiAgLyoqIFRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgbWFwIGlmIGl0IHdhcyBleHRlcm5hbCBvciBgbnVsbGAgaWYgaXQgd2FzIGlubGluZS4gKi9cbiAgbWFwUGF0aDogQWJzb2x1dGVGc1BhdGh8bnVsbDtcbiAgLyoqIFRoZSByYXcgc291cmNlIG1hcCBpdHNlbGYuICovXG4gIG1hcDogUmF3U291cmNlTWFwO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGEgbG9hZGVkIHNvdXJjZS1tYXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlTWFwSW5mbyBleHRlbmRzIE1hcEFuZFBhdGgge1xuICAvKiogRnJvbSB3aGVyZSB0aGUgY29udGVudCBmb3IgdGhpcyBzb3VyY2UtbWFwIGNhbWUuICovXG4gIG9yaWdpbjogQ29udGVudE9yaWdpbjtcbn1cbiJdfQ==
@@ -1,40 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * Compare two segment-markers, for use in a search or sorting algorithm.
10
- *
11
- * @returns a positive number if `a` is after `b`, a negative number if `b` is after `a`
12
- * and zero if they are at the same position.
13
- */
14
- export function compareSegments(a, b) {
15
- return a.position - b.position;
16
- }
17
- /**
18
- * Return a new segment-marker that is offset by the given number of characters.
19
- *
20
- * @param startOfLinePositions the position of the start of each line of content of the source file
21
- * whose segment-marker we are offsetting.
22
- * @param marker the segment to offset.
23
- * @param offset the number of character to offset by.
24
- */
25
- export function offsetSegment(startOfLinePositions, marker, offset) {
26
- if (offset === 0) {
27
- return marker;
28
- }
29
- let line = marker.line;
30
- const position = marker.position + offset;
31
- while (line < startOfLinePositions.length - 1 && startOfLinePositions[line + 1] <= position) {
32
- line++;
33
- }
34
- while (line > 0 && startOfLinePositions[line] > position) {
35
- line--;
36
- }
37
- const column = position - startOfLinePositions[line];
38
- return { line, column, position, next: undefined };
39
- }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudF9tYXJrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3NvdXJjZW1hcHMvc3JjL3NlZ21lbnRfbWFya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQWdCSDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQjtJQUNoRSxPQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQ3pCLG9CQUE4QixFQUFFLE1BQXFCLEVBQUUsTUFBYztJQUN2RSxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDaEIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDMUMsT0FBTyxJQUFJLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFO1FBQzNGLElBQUksRUFBRSxDQUFDO0tBQ1I7SUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFO1FBQ3hELElBQUksRUFBRSxDQUFDO0tBQ1I7SUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cblxuLyoqXG4gKiBBIG1hcmtlciB0aGF0IGluZGljYXRlcyB0aGUgc3RhcnQgb2YgYSBzZWdtZW50IGluIGEgbWFwcGluZy5cbiAqXG4gKiBUaGUgZW5kIG9mIGEgc2VnbWVudCBpcyBpbmRpY2F0ZWQgYnkgdGhlIGZpcnN0IHNlZ21lbnQtbWFya2VyIG9mIGFub3RoZXIgbWFwcGluZyB3aG9zZSBzdGFydFxuICogaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGlzIG9uZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWdtZW50TWFya2VyIHtcbiAgcmVhZG9ubHkgbGluZTogbnVtYmVyO1xuICByZWFkb25seSBjb2x1bW46IG51bWJlcjtcbiAgcmVhZG9ubHkgcG9zaXRpb246IG51bWJlcjtcbiAgbmV4dDogU2VnbWVudE1hcmtlcnx1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gc2VnbWVudC1tYXJrZXJzLCBmb3IgdXNlIGluIGEgc2VhcmNoIG9yIHNvcnRpbmcgYWxnb3JpdGhtLlxuICpcbiAqIEByZXR1cm5zIGEgcG9zaXRpdmUgbnVtYmVyIGlmIGBhYCBpcyBhZnRlciBgYmAsIGEgbmVnYXRpdmUgbnVtYmVyIGlmIGBiYCBpcyBhZnRlciBgYWBcbiAqIGFuZCB6ZXJvIGlmIHRoZXkgYXJlIGF0IHRoZSBzYW1lIHBvc2l0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZVNlZ21lbnRzKGE6IFNlZ21lbnRNYXJrZXIsIGI6IFNlZ21lbnRNYXJrZXIpOiBudW1iZXIge1xuICByZXR1cm4gYS5wb3NpdGlvbiAtIGIucG9zaXRpb247XG59XG5cbi8qKlxuICogUmV0dXJuIGEgbmV3IHNlZ21lbnQtbWFya2VyIHRoYXQgaXMgb2Zmc2V0IGJ5IHRoZSBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gc3RhcnRPZkxpbmVQb3NpdGlvbnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiBlYWNoIGxpbmUgb2YgY29udGVudCBvZiB0aGUgc291cmNlIGZpbGVcbiAqIHdob3NlIHNlZ21lbnQtbWFya2VyIHdlIGFyZSBvZmZzZXR0aW5nLlxuICogQHBhcmFtIG1hcmtlciB0aGUgc2VnbWVudCB0byBvZmZzZXQuXG4gKiBAcGFyYW0gb2Zmc2V0IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyIHRvIG9mZnNldCBieS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldFNlZ21lbnQoXG4gICAgc3RhcnRPZkxpbmVQb3NpdGlvbnM6IG51bWJlcltdLCBtYXJrZXI6IFNlZ21lbnRNYXJrZXIsIG9mZnNldDogbnVtYmVyKTogU2VnbWVudE1hcmtlciB7XG4gIGlmIChvZmZzZXQgPT09IDApIHtcbiAgICByZXR1cm4gbWFya2VyO1xuICB9XG5cbiAgbGV0IGxpbmUgPSBtYXJrZXIubGluZTtcbiAgY29uc3QgcG9zaXRpb24gPSBtYXJrZXIucG9zaXRpb24gKyBvZmZzZXQ7XG4gIHdoaWxlIChsaW5lIDwgc3RhcnRPZkxpbmVQb3NpdGlvbnMubGVuZ3RoIC0gMSAmJiBzdGFydE9mTGluZVBvc2l0aW9uc1tsaW5lICsgMV0gPD0gcG9zaXRpb24pIHtcbiAgICBsaW5lKys7XG4gIH1cbiAgd2hpbGUgKGxpbmUgPiAwICYmIHN0YXJ0T2ZMaW5lUG9zaXRpb25zW2xpbmVdID4gcG9zaXRpb24pIHtcbiAgICBsaW5lLS07XG4gIH1cbiAgY29uc3QgY29sdW1uID0gcG9zaXRpb24gLSBzdGFydE9mTGluZVBvc2l0aW9uc1tsaW5lXTtcbiAgcmV0dXJuIHtsaW5lLCBjb2x1bW4sIHBvc2l0aW9uLCBuZXh0OiB1bmRlZmluZWR9O1xufVxuIl19