@angular/compiler-cli 12.1.0-next.6 → 12.1.3

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 (478) hide show
  1. package/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
  2. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.js +2 -3
  3. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  4. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  5. package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
  6. package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
  7. package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
  8. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
  9. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
  10. package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
  11. package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
  12. package/ngcc/src/host/commonjs_host.js +1 -1
  13. package/ngcc/src/host/esm2015_host.js +1 -1
  14. package/ngcc/src/host/esm5_host.js +1 -1
  15. package/ngcc/src/host/umd_host.js +1 -1
  16. package/ngcc/src/packages/build_marker.d.ts +1 -1
  17. package/ngcc/src/packages/build_marker.js +1 -1
  18. package/ngcc/src/packages/configuration.d.ts +7 -0
  19. package/ngcc/src/packages/configuration.js +8 -3
  20. package/ngcc/src/packages/entry_point_manifest.js +2 -2
  21. package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
  22. package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
  23. package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
  24. package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
  25. package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
  26. package/package.json +2 -2
  27. package/src/ngtsc/annotations/src/component.d.ts +2 -0
  28. package/src/ngtsc/annotations/src/component.js +6 -2
  29. package/src/ngtsc/annotations/src/directive.js +1 -1
  30. package/src/ngtsc/annotations/src/ng_module.js +1 -1
  31. package/src/ngtsc/annotations/src/pipe.js +1 -1
  32. package/src/ngtsc/core/api/src/public_options.d.ts +12 -0
  33. package/src/ngtsc/core/api/src/public_options.js +1 -1
  34. package/src/ngtsc/core/src/compiler.d.ts +5 -0
  35. package/src/ngtsc/core/src/compiler.js +10 -1
  36. package/src/ngtsc/cycles/src/analyzer.d.ts +7 -0
  37. package/src/ngtsc/cycles/src/analyzer.js +89 -4
  38. package/src/ngtsc/cycles/src/imports.d.ts +1 -6
  39. package/src/ngtsc/cycles/src/imports.js +5 -23
  40. package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
  41. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  42. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  43. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  44. package/src/ngtsc/incremental/src/incremental.js +30 -4
  45. package/src/ngtsc/indexer/src/template.js +1 -1
  46. package/src/ngtsc/metadata/src/dts.js +2 -3
  47. package/src/ngtsc/metadata/src/inheritance.js +2 -7
  48. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  49. package/src/ngtsc/partial_evaluator/src/diagnostics.js +4 -1
  50. package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +19 -1
  51. package/src/ngtsc/partial_evaluator/src/dynamic.js +12 -4
  52. package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +2 -0
  53. package/src/ngtsc/partial_evaluator/src/interpreter.js +53 -5
  54. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  55. package/src/ngtsc/program.d.ts +1 -0
  56. package/src/ngtsc/program.js +26 -2
  57. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  58. package/src/ngtsc/program_driver/src/api.js +3 -2
  59. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  60. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  61. package/src/ngtsc/reflection/src/typescript.js +4 -1
  62. package/src/ngtsc/transform/src/api.d.ts +6 -0
  63. package/src/ngtsc/transform/src/api.js +1 -1
  64. package/src/ngtsc/transform/src/compilation.d.ts +2 -0
  65. package/src/ngtsc/transform/src/compilation.js +59 -20
  66. package/src/ngtsc/transform/src/transform.js +1 -1
  67. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  68. package/src/ngtsc/typecheck/src/context.js +11 -3
  69. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  70. package/src/ngtsc/typecheck/src/template_symbol_builder.js +36 -4
  71. package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
  72. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  73. package/src/ngtsc/typecheck/src/type_emitter.d.ts +2 -1
  74. package/src/ngtsc/typecheck/src/type_emitter.js +54 -48
  75. package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +2 -0
  76. package/src/ngtsc/typecheck/src/type_parameter_emitter.js +21 -7
  77. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  78. package/src/ngtsc/util/src/visitor.js +1 -8
  79. package/src/ngtsc/xi18n/index.d.ts +9 -0
  80. package/src/ngtsc/xi18n/index.js +22 -0
  81. package/src/ngtsc/xi18n/src/context.d.ts +26 -0
  82. package/src/ngtsc/xi18n/src/context.js +20 -0
  83. package/src/transformers/api.d.ts +0 -3
  84. package/src/transformers/api.js +1 -1
  85. package/src/transformers/i18n.d.ts +14 -0
  86. package/src/transformers/i18n.js +76 -0
  87. package/src/transformers/program.d.ts +0 -4
  88. package/src/transformers/program.js +5 -56
  89. package/src/version.js +1 -1
  90. package/compiler-cli.externs.js +0 -0
  91. package/index.mjs +0 -20
  92. package/linker/babel/babel.externs.js +0 -0
  93. package/linker/babel/index.mjs +0 -11
  94. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  95. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  96. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  97. package/linker/babel/src/babel_plugin.mjs +0 -23
  98. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  99. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  100. package/linker/index.mjs +0 -7
  101. package/linker/linker.externs.js +0 -0
  102. package/linker/src/ast/ast_host.mjs +0 -9
  103. package/linker/src/ast/ast_value.mjs +0 -256
  104. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  105. package/linker/src/ast/utils.mjs +0 -17
  106. package/linker/src/fatal_linker_error.mjs +0 -30
  107. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  108. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  109. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  110. package/linker/src/file_linker/file_linker.mjs +0 -70
  111. package/linker/src/file_linker/get_source_file.mjs +0 -28
  112. package/linker/src/file_linker/linker_environment.mjs +0 -23
  113. package/linker/src/file_linker/linker_options.mjs +0 -16
  114. package/linker/src/file_linker/needs_linking.mjs +0 -27
  115. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  116. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  117. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  118. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  119. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  120. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  121. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  122. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  123. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  124. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  125. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  126. package/linker/src/file_linker/translator.mjs +0 -23
  127. package/linker/src/linker_import_generator.mjs +0 -28
  128. package/ngcc/index.mjs +0 -16
  129. package/ngcc/main-ivy-ngcc.mjs +0 -12
  130. package/ngcc/main-ngcc.mjs +0 -32
  131. package/ngcc/ngcc.externs.js +0 -0
  132. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  133. package/ngcc/src/analysis/migration_host.mjs +0 -80
  134. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  135. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  136. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  137. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  138. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  139. package/ngcc/src/analysis/types.mjs +0 -2
  140. package/ngcc/src/analysis/util.mjs +0 -19
  141. package/ngcc/src/command_line_options.mjs +0 -142
  142. package/ngcc/src/constants.mjs +0 -10
  143. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  144. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  145. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  146. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  147. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  148. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  149. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  150. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  151. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  152. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  153. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  154. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  155. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  156. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  157. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  158. package/ngcc/src/execution/api.mjs +0 -2
  159. package/ngcc/src/execution/cluster/api.mjs +0 -9
  160. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  161. package/ngcc/src/execution/cluster/master.mjs +0 -261
  162. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  163. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  164. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  165. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  166. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  167. package/ngcc/src/execution/tasks/api.mjs +0 -22
  168. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  169. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  170. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  171. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  172. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  173. package/ngcc/src/host/commonjs_host.mjs +0 -220
  174. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  175. package/ngcc/src/host/delegating_host.mjs +0 -140
  176. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  177. package/ngcc/src/host/esm5_host.mjs +0 -721
  178. package/ngcc/src/host/ngcc_host.mjs +0 -15
  179. package/ngcc/src/host/umd_host.mjs +0 -486
  180. package/ngcc/src/host/utils.mjs +0 -12
  181. package/ngcc/src/locking/async_locker.mjs +0 -76
  182. package/ngcc/src/locking/lock_file.mjs +0 -4
  183. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  184. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  185. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  186. package/ngcc/src/locking/sync_locker.mjs +0 -52
  187. package/ngcc/src/main.mjs +0 -134
  188. package/ngcc/src/migrations/migration.mjs +0 -2
  189. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  190. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  191. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  192. package/ngcc/src/migrations/utils.mjs +0 -117
  193. package/ngcc/src/ngcc_options.mjs +0 -119
  194. package/ngcc/src/packages/build_marker.mjs +0 -84
  195. package/ngcc/src/packages/bundle_program.mjs +0 -52
  196. package/ngcc/src/packages/configuration.mjs +0 -250
  197. package/ngcc/src/packages/entry_point.mjs +0 -239
  198. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  199. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  200. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  201. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  202. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  203. package/ngcc/src/packages/transformer.mjs +0 -140
  204. package/ngcc/src/path_mappings.mjs +0 -13
  205. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  206. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  207. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  208. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  209. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  210. package/ngcc/src/rendering/renderer.mjs +0 -170
  211. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  212. package/ngcc/src/rendering/source_maps.mjs +0 -54
  213. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  214. package/ngcc/src/rendering/utils.mjs +0 -20
  215. package/ngcc/src/utils.mjs +0 -144
  216. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  217. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  218. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  219. package/ngcc/src/writing/file_writer.mjs +0 -2
  220. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  221. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  222. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  223. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  224. package/src/diagnostics/typescript_version.mjs +0 -79
  225. package/src/extract_i18n.mjs +0 -46
  226. package/src/language_services.mjs +0 -18
  227. package/src/main.mjs +0 -185
  228. package/src/metadata/bundle_index_host.mjs +0 -107
  229. package/src/metadata/bundler.mjs +0 -556
  230. package/src/metadata/collector.mjs +0 -701
  231. package/src/metadata/evaluator.mjs +0 -643
  232. package/src/metadata/index.mjs +0 -11
  233. package/src/metadata/index_writer.mjs +0 -44
  234. package/src/metadata/schema.mjs +0 -102
  235. package/src/metadata/symbols.mjs +0 -117
  236. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  237. package/src/ngtsc/annotations/index.mjs +0 -15
  238. package/src/ngtsc/annotations/src/api.mjs +0 -9
  239. package/src/ngtsc/annotations/src/component.mjs +0 -1064
  240. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  241. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  242. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  243. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  244. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  245. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  246. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  247. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  248. package/src/ngtsc/annotations/src/util.mjs +0 -495
  249. package/src/ngtsc/core/api/index.mjs +0 -12
  250. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  251. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  252. package/src/ngtsc/core/api/src/options.mjs +0 -9
  253. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  254. package/src/ngtsc/core/api.externs.js +0 -0
  255. package/src/ngtsc/core/core.externs.js +0 -0
  256. package/src/ngtsc/core/index.mjs +0 -10
  257. package/src/ngtsc/core/src/compiler.mjs +0 -908
  258. package/src/ngtsc/core/src/config.mjs +0 -15
  259. package/src/ngtsc/core/src/host.mjs +0 -229
  260. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  261. package/src/ngtsc/cycles/index.mjs +0 -10
  262. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  263. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  264. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  265. package/src/ngtsc/diagnostics/index.mjs +0 -11
  266. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  267. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  268. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  269. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  270. package/src/ngtsc/entry_point/index.mjs +0 -12
  271. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  272. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  273. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  274. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  275. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  276. package/src/ngtsc/file_system/index.mjs +0 -13
  277. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  278. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  279. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  280. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  281. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  282. package/src/ngtsc/file_system/src/types.mjs +0 -9
  283. package/src/ngtsc/file_system/src/util.mjs +0 -22
  284. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  285. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  286. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  287. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  288. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  289. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  290. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  291. package/src/ngtsc/imports/imports.externs.js +0 -0
  292. package/src/ngtsc/imports/index.mjs +0 -14
  293. package/src/ngtsc/imports/src/alias.mjs +0 -137
  294. package/src/ngtsc/imports/src/core.mjs +0 -78
  295. package/src/ngtsc/imports/src/default.mjs +0 -135
  296. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  297. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  298. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  299. package/src/ngtsc/imports/src/references.mjs +0 -137
  300. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  301. package/src/ngtsc/incremental/api.externs.js +0 -0
  302. package/src/ngtsc/incremental/api.mjs +0 -9
  303. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  304. package/src/ngtsc/incremental/index.mjs +0 -12
  305. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  306. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  307. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  308. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  309. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  310. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  311. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  312. package/src/ngtsc/incremental/src/incremental.mjs +0 -271
  313. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  314. package/src/ngtsc/incremental/src/state.mjs +0 -17
  315. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  316. package/src/ngtsc/indexer/index.mjs +0 -11
  317. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  318. package/src/ngtsc/indexer/src/api.mjs +0 -30
  319. package/src/ngtsc/indexer/src/context.mjs +0 -25
  320. package/src/ngtsc/indexer/src/template.mjs +0 -303
  321. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  322. package/src/ngtsc/logging/index.mjs +0 -10
  323. package/src/ngtsc/logging/logging.externs.js +0 -0
  324. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  325. package/src/ngtsc/logging/src/logger.mjs +0 -15
  326. package/src/ngtsc/logging/testing/index.mjs +0 -9
  327. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  328. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  329. package/src/ngtsc/metadata/index.mjs +0 -15
  330. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  331. package/src/ngtsc/metadata/src/api.mjs +0 -13
  332. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  333. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  334. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  335. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  336. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  337. package/src/ngtsc/metadata/src/util.mjs +0 -200
  338. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  339. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  340. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  341. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -171
  342. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -86
  343. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  344. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -683
  345. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  346. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  347. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  348. package/src/ngtsc/perf/index.mjs +0 -11
  349. package/src/ngtsc/perf/perf.externs.js +0 -0
  350. package/src/ngtsc/perf/src/api.mjs +0 -278
  351. package/src/ngtsc/perf/src/clock.mjs +0 -15
  352. package/src/ngtsc/perf/src/noop.mjs +0 -21
  353. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  354. package/src/ngtsc/program.mjs +0 -247
  355. package/src/ngtsc/program_driver/index.mjs +0 -10
  356. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  357. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  358. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  359. package/src/ngtsc/reflection/index.mjs +0 -12
  360. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  361. package/src/ngtsc/reflection/src/host.mjs +0 -73
  362. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  363. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  364. package/src/ngtsc/reflection/src/util.mjs +0 -21
  365. package/src/ngtsc/resource/index.mjs +0 -9
  366. package/src/ngtsc/resource/resource.externs.js +0 -0
  367. package/src/ngtsc/resource/src/loader.mjs +0 -242
  368. package/src/ngtsc/routing/index.mjs +0 -11
  369. package/src/ngtsc/routing/routing.externs.js +0 -0
  370. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  371. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  372. package/src/ngtsc/routing/src/route.mjs +0 -51
  373. package/src/ngtsc/scope/index.mjs +0 -12
  374. package/src/ngtsc/scope/scope.externs.js +0 -0
  375. package/src/ngtsc/scope/src/api.mjs +0 -9
  376. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  377. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  378. package/src/ngtsc/scope/src/local.mjs +0 -531
  379. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  380. package/src/ngtsc/shims/api.externs.js +0 -0
  381. package/src/ngtsc/shims/api.mjs +0 -2
  382. package/src/ngtsc/shims/index.mjs +0 -14
  383. package/src/ngtsc/shims/shims.externs.js +0 -0
  384. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  385. package/src/ngtsc/shims/src/expando.mjs +0 -102
  386. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  387. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  388. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  389. package/src/ngtsc/shims/src/util.mjs +0 -26
  390. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  391. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  392. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  393. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  394. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  395. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  396. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  397. package/src/ngtsc/switch/index.mjs +0 -9
  398. package/src/ngtsc/switch/src/switch.mjs +0 -115
  399. package/src/ngtsc/switch/switch.externs.js +0 -0
  400. package/src/ngtsc/transform/index.mjs +0 -14
  401. package/src/ngtsc/transform/src/alias.mjs +0 -30
  402. package/src/ngtsc/transform/src/api.mjs +0 -63
  403. package/src/ngtsc/transform/src/compilation.mjs +0 -496
  404. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  405. package/src/ngtsc/transform/src/trait.mjs +0 -95
  406. package/src/ngtsc/transform/src/transform.mjs +0 -298
  407. package/src/ngtsc/transform/src/utils.mjs +0 -57
  408. package/src/ngtsc/transform/transform.externs.js +0 -0
  409. package/src/ngtsc/translator/index.mjs +0 -14
  410. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  411. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  412. package/src/ngtsc/translator/src/context.mjs +0 -24
  413. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  414. package/src/ngtsc/translator/src/translator.mjs +0 -317
  415. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  416. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  417. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  418. package/src/ngtsc/translator/translator.externs.js +0 -0
  419. package/src/ngtsc/tsc_plugin.mjs +0 -98
  420. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  421. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  422. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  423. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  424. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  425. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  426. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  427. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  428. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  429. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  430. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  431. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  432. package/src/ngtsc/typecheck/index.mjs +0 -12
  433. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  434. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  435. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  436. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  437. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  438. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  439. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  440. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  441. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  442. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  443. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  444. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  445. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  446. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  447. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -472
  448. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  449. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  450. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  451. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  452. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -140
  453. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -80
  454. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  455. package/src/ngtsc/util/src/path.mjs +0 -18
  456. package/src/ngtsc/util/src/typescript.mjs +0 -143
  457. package/src/ngtsc/util/src/visitor.mjs +0 -107
  458. package/src/ngtsc/util/util.externs.js +0 -0
  459. package/src/perform_compile.mjs +0 -275
  460. package/src/perform_watch.mjs +0 -247
  461. package/src/tooling.mjs +0 -32
  462. package/src/transformers/api.mjs +0 -27
  463. package/src/transformers/compiler_host.mjs +0 -593
  464. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  465. package/src/transformers/entry_points.mjs +0 -10
  466. package/src/transformers/inline_resources.mjs +0 -269
  467. package/src/transformers/lower_expressions.mjs +0 -336
  468. package/src/transformers/metadata_cache.mjs +0 -53
  469. package/src/transformers/metadata_reader.mjs +0 -104
  470. package/src/transformers/node_emitter.mjs +0 -606
  471. package/src/transformers/node_emitter_transform.mjs +0 -78
  472. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  473. package/src/transformers/program.mjs +0 -935
  474. package/src/transformers/r3_metadata_transform.mjs +0 -46
  475. package/src/transformers/r3_transform.mjs +0 -29
  476. package/src/transformers/util.mjs +0 -89
  477. package/src/typescript_support.mjs +0 -57
  478. package/src/version.mjs +0 -15
@@ -1,36 +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 } from '../../../file_system';
10
- /**
11
- * Represents a symbol that is recognizable across incremental rebuilds, which enables the captured
12
- * metadata to be compared to the prior compilation. This allows for semantic understanding of
13
- * the changes that have been made in a rebuild, which potentially enables more reuse of work
14
- * from the prior compilation.
15
- */
16
- export class SemanticSymbol {
17
- constructor(
18
- /**
19
- * The declaration for this symbol.
20
- */
21
- decl) {
22
- this.decl = decl;
23
- this.path = absoluteFromSourceFile(decl.getSourceFile());
24
- this.identifier = getSymbolIdentifier(decl);
25
- }
26
- }
27
- function getSymbolIdentifier(decl) {
28
- if (!ts.isSourceFile(decl.parent)) {
29
- return null;
30
- }
31
- // If this is a top-level class declaration, the class name is used as unique identifier.
32
- // Other scenarios are currently not supported and causes the symbol not to be identified
33
- // across rebuilds, unless the declaration node has not changed.
34
- return decl.name.text;
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmNyZW1lbnRhbC9zZW1hbnRpY19ncmFwaC9zcmMvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBQyxzQkFBc0IsRUFBaUIsTUFBTSxzQkFBc0IsQ0FBQztBQUc1RTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBZ0IsY0FBYztJQWlCbEM7SUFDSTs7T0FFRztJQUNhLElBQXNCO1FBQXRCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBRXhDLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBdURGO0FBbUJELFNBQVMsbUJBQW1CLENBQUMsSUFBc0I7SUFDakQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCx5RkFBeUY7SUFDekYseUZBQXlGO0lBQ3pGLGdFQUFnRTtJQUNoRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2Fic29sdXRlRnJvbVNvdXJjZUZpbGUsIEFic29sdXRlRnNQYXRofSBmcm9tICcuLi8uLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb259IGZyb20gJy4uLy4uLy4uL3JlZmxlY3Rpb24nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzeW1ib2wgdGhhdCBpcyByZWNvZ25pemFibGUgYWNyb3NzIGluY3JlbWVudGFsIHJlYnVpbGRzLCB3aGljaCBlbmFibGVzIHRoZSBjYXB0dXJlZFxuICogbWV0YWRhdGEgdG8gYmUgY29tcGFyZWQgdG8gdGhlIHByaW9yIGNvbXBpbGF0aW9uLiBUaGlzIGFsbG93cyBmb3Igc2VtYW50aWMgdW5kZXJzdGFuZGluZyBvZlxuICogdGhlIGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gbWFkZSBpbiBhIHJlYnVpbGQsIHdoaWNoIHBvdGVudGlhbGx5IGVuYWJsZXMgbW9yZSByZXVzZSBvZiB3b3JrXG4gKiBmcm9tIHRoZSBwcmlvciBjb21waWxhdGlvbi5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlbWFudGljU3ltYm9sIHtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRoYXQgZGVjbGFyZXMgdGhpcyBzeW1ib2wuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0aDogQWJzb2x1dGVGc1BhdGg7XG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoaXMgc3ltYm9sLCBvciBudWxsIGlmIG5vIGlkZW50aWZpZXIgY291bGQgYmUgZGV0ZXJtaW5lZC4gSXQgc2hvdWxkXG4gICAqIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBzeW1ib2wgcmVsYXRpdmUgdG8gYGZpbGVgLiBUaGlzIGlzIHR5cGljYWxseSBqdXN0IHRoZSBuYW1lIG9mIGFcbiAgICogdG9wLWxldmVsIGNsYXNzIGRlY2xhcmF0aW9uLCBhcyB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNsYXNzIHdpdGhpbiB0aGUgZmlsZS5cbiAgICpcbiAgICogSWYgdGhlIGlkZW50aWZpZXIgaXMgbnVsbCwgdGhlbiB0aGlzIHN5bWJvbCBjYW5ub3QgYmUgcmVjb2duaXplZCBhY3Jvc3MgcmVidWlsZHMuIEluIHRoYXRcbiAgICogY2FzZSwgdGhlIHN5bWJvbCBpcyBhbHdheXMgYXNzdW1lZCB0byBoYXZlIHNlbWFudGljYWxseSBjaGFuZ2VkIHRvIGd1YXJhbnRlZSBhIHByb3BlclxuICAgKiByZWJ1aWxkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkZW50aWZpZXI6IHN0cmluZ3xudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZGVjbGFyYXRpb24gZm9yIHRoaXMgc3ltYm9sLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGVjbDogQ2xhc3NEZWNsYXJhdGlvbixcbiAgKSB7XG4gICAgdGhpcy5wYXRoID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShkZWNsLmdldFNvdXJjZUZpbGUoKSk7XG4gICAgdGhpcy5pZGVudGlmaWVyID0gZ2V0U3ltYm9sSWRlbnRpZmllcihkZWNsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHN5bWJvbCB0byBiZSBjb21wYXJlZCB0byB0aGUgZXF1aXZhbGVudCBzeW1ib2wgaW4gdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uLiBUaGVcbiAgICogcmV0dXJuIHZhbHVlIGluZGljYXRlcyB3aGV0aGVyIHRoZSBzeW1ib2wgaGFzIGJlZW4gY2hhbmdlZCBpbiBhIHdheSBzdWNoIHRoYXQgaXRzIHB1YmxpYyBBUElcbiAgICogaXMgYWZmZWN0ZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGRldGVybWluZXMgd2hldGhlciBhIGNoYW5nZSB0byBfdGhpc18gc3ltYm9sIHJlcXVpcmUgdGhlIHN5bWJvbHMgdGhhdFxuICAgKiB1c2UgdG8gdGhpcyBzeW1ib2wgdG8gYmUgcmUtZW1pdHRlZC5cbiAgICpcbiAgICogTm90ZTogYHByZXZpb3VzU3ltYm9sYCBpcyBvYnRhaW5lZCBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IHN1Y2NlZWRlZCBjb21waWxhdGlvbi4gU3ltYm9scyBvZlxuICAgKiBmYWlsZWQgY29tcGlsYXRpb25zIGFyZSBuZXZlciBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHByZXZpb3VzU3ltYm9sIFRoZSBzeW1ib2wgZnJvbSBhIHByaW9yIGNvbXBpbGF0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgaXNQdWJsaWNBcGlBZmZlY3RlZChwcmV2aW91c1N5bWJvbDogU2VtYW50aWNTeW1ib2wpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHN5bWJvbCB0byBkZXRlcm1pbmUgd2hldGhlciBpdHMgZW1pdCBpcyBhZmZlY3RlZC4gVGhlIGVxdWl2YWxlbnQgc3ltYm9sIGZyb20gYSBwcmlvclxuICAgKiBidWlsZCBpcyBnaXZlbiwgaW4gYWRkaXRpb24gdG8gdGhlIHNldCBvZiBzeW1ib2xzIG9mIHdoaWNoIHRoZSBwdWJsaWMgQVBJIGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjaGFuZ2UgdG8gX290aGVyXyBzeW1ib2xzLCBpLmUuIHRob3NlIHByZXNlbnQgaW5cbiAgICogYHB1YmxpY0FwaUFmZmVjdGVkYCwgc2hvdWxkIGNhdXNlIF90aGlzXyBzeW1ib2wgdG8gYmUgcmUtZW1pdHRlZC5cbiAgICpcbiAgICogQHBhcmFtIHByZXZpb3VzU3ltYm9sIFRoZSBlcXVpdmFsZW50IHN5bWJvbCBmcm9tIGEgcHJpb3IgY29tcGlsYXRpb24uIE5vdGUgdGhhdCBpdCBtYXkgYmUgYVxuICAgKiBkaWZmZXJlbnQgdHlwZSBvZiBzeW1ib2wsIGlmIGUuZy4gYSBDb21wb25lbnQgd2FzIGNoYW5nZWQgaW50byBhIERpcmVjdGl2ZSB3aXRoIHRoZSBzYW1lIG5hbWUuXG4gICAqIEBwYXJhbSBwdWJsaWNBcGlBZmZlY3RlZCBUaGUgc2V0IG9mIHN5bWJvbHMgb2Ygd2hpY2ggdGhlIHB1YmxpYyBBUEkgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBpc0VtaXRBZmZlY3RlZD8ocHJldmlvdXNTeW1ib2w6IFNlbWFudGljU3ltYm9sLCBwdWJsaWNBcGlBZmZlY3RlZDogU2V0PFNlbWFudGljU3ltYm9sPik6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gYGlzUHVibGljQXBpQWZmZWN0ZWRgLCBidXQgaGVyZSBlcXVpdmFsZW50IHN5bWJvbCBmcm9tIGEgcHJpb3IgY29tcGlsYXRpb24gbmVlZHNcbiAgICogdG8gYmUgY29tcGFyZWQgdG8gc2VlIGlmIHRoZSB0eXBlLWNoZWNrIGJsb2NrIG9mIGNvbXBvbmVudHMgdGhhdCB1c2UgdGhpcyBzeW1ib2wgaXMgYWZmZWN0ZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGRldGVybWluZXMgd2hldGhlciBhIGNoYW5nZSB0byBfdGhpc18gc3ltYm9sIHJlcXVpcmUgdGhlIHN5bWJvbHMgdGhhdFxuICAgKiB1c2UgdG8gdGhpcyBzeW1ib2wgdG8gaGF2ZSB0aGVpciB0eXBlLWNoZWNrIGJsb2NrIHJlZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBOb3RlOiBgcHJldmlvdXNTeW1ib2xgIGlzIG9idGFpbmVkIGZyb20gdGhlIG1vc3QgcmVjZW50bHkgc3VjY2VlZGVkIGNvbXBpbGF0aW9uLiBTeW1ib2xzIG9mXG4gICAqIGZhaWxlZCBjb21waWxhdGlvbnMgYXJlIG5ldmVyIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJldmlvdXNTeW1ib2wgVGhlIHN5bWJvbCBmcm9tIGEgcHJpb3IgY29tcGlsYXRpb24uXG4gICAqL1xuICBhYnN0cmFjdCBpc1R5cGVDaGVja0FwaUFmZmVjdGVkKHByZXZpb3VzU3ltYm9sOiBTZW1hbnRpY1N5bWJvbCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gYGlzRW1pdEFmZmVjdGVkYCwgYnV0IGZvY3VzZWQgb24gdGhlIHR5cGUtY2hlY2sgYmxvY2sgb2YgdGhpcyBzeW1ib2wuIFRoaXMgbWV0aG9kXG4gICAqIGRldGVybWluZXMgd2hldGhlciBhIGNoYW5nZSB0byBfb3RoZXJfIHN5bWJvbHMsIGkuZS4gdGhvc2UgcHJlc2VudCBpbiBgdHlwZUNoZWNrQXBpQWZmZWN0ZWRgLFxuICAgKiBzaG91bGQgY2F1c2UgX3RoaXNfIHN5bWJvbCdzIHR5cGUtY2hlY2sgYmxvY2sgdG8gYmUgcmVnZW5lcmF0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwcmV2aW91c1N5bWJvbCBUaGUgZXF1aXZhbGVudCBzeW1ib2wgZnJvbSBhIHByaW9yIGNvbXBpbGF0aW9uLiBOb3RlIHRoYXQgaXQgbWF5IGJlIGFcbiAgICogZGlmZmVyZW50IHR5cGUgb2Ygc3ltYm9sLCBpZiBlLmcuIGEgQ29tcG9uZW50IHdhcyBjaGFuZ2VkIGludG8gYSBEaXJlY3RpdmUgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgKiBAcGFyYW0gdHlwZUNoZWNrQXBpQWZmZWN0ZWQgVGhlIHNldCBvZiBzeW1ib2xzIG9mIHdoaWNoIHRoZSB0eXBlLWNoZWNrIEFQSSBoYXMgY2hhbmdlZC5cbiAgICovXG4gIGlzVHlwZUNoZWNrQmxvY2tBZmZlY3RlZD9cbiAgICAgIChwcmV2aW91c1N5bWJvbDogU2VtYW50aWNTeW1ib2wsIHR5cGVDaGVja0FwaUFmZmVjdGVkOiBTZXQ8U2VtYW50aWNTeW1ib2w+KTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcmVmZXJlbmNlIHRvIGEgc2VtYW50aWMgc3ltYm9sIHRoYXQgaGFzIGJlZW4gZW1pdHRlZCBpbnRvIGEgc291cmNlIGZpbGUuIFRoZVxuICogcmVmZXJlbmNlIG1heSByZWZlciB0byB0aGUgc3ltYm9sIHVzaW5nIGEgZGlmZmVyZW50IG5hbWUgdGhhbiB0aGUgc2VtYW50aWMgc3ltYm9sJ3MgZGVjbGFyZWRcbiAqIG5hbWUsIGUuZy4gaW4gY2FzZSBhIHJlLWV4cG9ydCB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHdhcyBjaG9zZW4gYnkgYSByZWZlcmVuY2UgZW1pdHRlci5cbiAqIENvbnNlcXVlbnRseSwgdG8ga25vdyB0aGF0IGFuIGVtaXR0ZWQgcmVmZXJlbmNlIGlzIHN0aWxsIHZhbGlkIG5vdCBvbmx5IHJlcXVpcmVzIHRoYXQgdGhlXG4gKiBzZW1hbnRpYyBzeW1ib2wgaXMgc3RpbGwgdmFsaWQsIGJ1dCBhbHNvIHRoYXQgdGhlIHBhdGggYnkgd2hpY2ggdGhlIHN5bWJvbCBpcyBpbXBvcnRlZCBoYXMgbm90XG4gKiBjaGFuZ2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljUmVmZXJlbmNlIHtcbiAgc3ltYm9sOiBTZW1hbnRpY1N5bWJvbDtcblxuICAvKipcbiAgICogVGhlIHBhdGggYnkgd2hpY2ggdGhlIHN5bWJvbCBoYXMgYmVlbiByZWZlcmVuY2VkLlxuICAgKi9cbiAgaW1wb3J0UGF0aDogc3RyaW5nfG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldFN5bWJvbElkZW50aWZpZXIoZGVjbDogQ2xhc3NEZWNsYXJhdGlvbik6IHN0cmluZ3xudWxsIHtcbiAgaWYgKCF0cy5pc1NvdXJjZUZpbGUoZGVjbC5wYXJlbnQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJZiB0aGlzIGlzIGEgdG9wLWxldmVsIGNsYXNzIGRlY2xhcmF0aW9uLCB0aGUgY2xhc3MgbmFtZSBpcyB1c2VkIGFzIHVuaXF1ZSBpZGVudGlmaWVyLlxuICAvLyBPdGhlciBzY2VuYXJpb3MgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGFuZCBjYXVzZXMgdGhlIHN5bWJvbCBub3QgdG8gYmUgaWRlbnRpZmllZFxuICAvLyBhY3Jvc3MgcmVidWlsZHMsIHVubGVzcyB0aGUgZGVjbGFyYXRpb24gbm9kZSBoYXMgbm90IGNoYW5nZWQuXG4gIHJldHVybiBkZWNsLm5hbWUudGV4dDtcbn1cbiJdfQ==
@@ -1,237 +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 { ExternalExpr } from '@angular/compiler';
9
- import { SemanticSymbol } from './api';
10
- /**
11
- * Represents a declaration for which no semantic symbol has been registered. For example,
12
- * declarations from external dependencies have not been explicitly registered and are represented
13
- * by this symbol. This allows the unresolved symbol to still be compared to a symbol from a prior
14
- * compilation.
15
- */
16
- class OpaqueSymbol extends SemanticSymbol {
17
- isPublicApiAffected() {
18
- return false;
19
- }
20
- isTypeCheckApiAffected() {
21
- return false;
22
- }
23
- }
24
- /**
25
- * The semantic dependency graph of a single compilation.
26
- */
27
- export class SemanticDepGraph {
28
- constructor() {
29
- this.files = new Map();
30
- this.symbolByDecl = new Map();
31
- }
32
- /**
33
- * Registers a symbol in the graph. The symbol is given a unique identifier if possible, such that
34
- * its equivalent symbol can be obtained from a prior graph even if its declaration node has
35
- * changed across rebuilds. Symbols without an identifier are only able to find themselves in a
36
- * prior graph if their declaration node is identical.
37
- */
38
- registerSymbol(symbol) {
39
- this.symbolByDecl.set(symbol.decl, symbol);
40
- if (symbol.identifier !== null) {
41
- // If the symbol has a unique identifier, record it in the file that declares it. This enables
42
- // the symbol to be requested by its unique name.
43
- if (!this.files.has(symbol.path)) {
44
- this.files.set(symbol.path, new Map());
45
- }
46
- this.files.get(symbol.path).set(symbol.identifier, symbol);
47
- }
48
- }
49
- /**
50
- * Attempts to resolve a symbol in this graph that represents the given symbol from another graph.
51
- * If no matching symbol could be found, null is returned.
52
- *
53
- * @param symbol The symbol from another graph for which its equivalent in this graph should be
54
- * found.
55
- */
56
- getEquivalentSymbol(symbol) {
57
- // First lookup the symbol by its declaration. It is typical for the declaration to not have
58
- // changed across rebuilds, so this is likely to find the symbol. Using the declaration also
59
- // allows to diff symbols for which no unique identifier could be determined.
60
- let previousSymbol = this.getSymbolByDecl(symbol.decl);
61
- if (previousSymbol === null && symbol.identifier !== null) {
62
- // The declaration could not be resolved to a symbol in a prior compilation, which may
63
- // happen because the file containing the declaration has changed. In that case we want to
64
- // lookup the symbol based on its unique identifier, as that allows us to still compare the
65
- // changed declaration to the prior compilation.
66
- previousSymbol = this.getSymbolByName(symbol.path, symbol.identifier);
67
- }
68
- return previousSymbol;
69
- }
70
- /**
71
- * Attempts to find the symbol by its identifier.
72
- */
73
- getSymbolByName(path, identifier) {
74
- if (!this.files.has(path)) {
75
- return null;
76
- }
77
- const file = this.files.get(path);
78
- if (!file.has(identifier)) {
79
- return null;
80
- }
81
- return file.get(identifier);
82
- }
83
- /**
84
- * Attempts to resolve the declaration to its semantic symbol.
85
- */
86
- getSymbolByDecl(decl) {
87
- if (!this.symbolByDecl.has(decl)) {
88
- return null;
89
- }
90
- return this.symbolByDecl.get(decl);
91
- }
92
- }
93
- /**
94
- * Implements the logic to go from a previous dependency graph to a new one, along with information
95
- * on which files have been affected.
96
- */
97
- export class SemanticDepGraphUpdater {
98
- constructor(
99
- /**
100
- * The semantic dependency graph of the most recently succeeded compilation, or null if this
101
- * is the initial build.
102
- */
103
- priorGraph) {
104
- this.priorGraph = priorGraph;
105
- this.newGraph = new SemanticDepGraph();
106
- /**
107
- * Contains opaque symbols that were created for declarations for which there was no symbol
108
- * registered, which happens for e.g. external declarations.
109
- */
110
- this.opaqueSymbols = new Map();
111
- }
112
- /**
113
- * Registers the symbol in the new graph that is being created.
114
- */
115
- registerSymbol(symbol) {
116
- this.newGraph.registerSymbol(symbol);
117
- }
118
- /**
119
- * Takes all facts that have been gathered to create a new semantic dependency graph. In this
120
- * process, the semantic impact of the changes is determined which results in a set of files that
121
- * need to be emitted and/or type-checked.
122
- */
123
- finalize() {
124
- if (this.priorGraph === null) {
125
- // If no prior dependency graph is available then this was the initial build, in which case
126
- // we don't need to determine the semantic impact as everything is already considered
127
- // logically changed.
128
- return {
129
- needsEmit: new Set(),
130
- needsTypeCheckEmit: new Set(),
131
- newGraph: this.newGraph,
132
- };
133
- }
134
- const needsEmit = this.determineInvalidatedFiles(this.priorGraph);
135
- const needsTypeCheckEmit = this.determineInvalidatedTypeCheckFiles(this.priorGraph);
136
- return {
137
- needsEmit,
138
- needsTypeCheckEmit,
139
- newGraph: this.newGraph,
140
- };
141
- }
142
- determineInvalidatedFiles(priorGraph) {
143
- const isPublicApiAffected = new Set();
144
- // The first phase is to collect all symbols which have their public API affected. Any symbols
145
- // that cannot be matched up with a symbol from the prior graph are considered affected.
146
- for (const symbol of this.newGraph.symbolByDecl.values()) {
147
- const previousSymbol = priorGraph.getEquivalentSymbol(symbol);
148
- if (previousSymbol === null || symbol.isPublicApiAffected(previousSymbol)) {
149
- isPublicApiAffected.add(symbol);
150
- }
151
- }
152
- // The second phase is to find all symbols for which the emit result is affected, either because
153
- // their used declarations have changed or any of those used declarations has had its public API
154
- // affected as determined in the first phase.
155
- const needsEmit = new Set();
156
- for (const symbol of this.newGraph.symbolByDecl.values()) {
157
- if (symbol.isEmitAffected === undefined) {
158
- continue;
159
- }
160
- const previousSymbol = priorGraph.getEquivalentSymbol(symbol);
161
- if (previousSymbol === null || symbol.isEmitAffected(previousSymbol, isPublicApiAffected)) {
162
- needsEmit.add(symbol.path);
163
- }
164
- }
165
- return needsEmit;
166
- }
167
- determineInvalidatedTypeCheckFiles(priorGraph) {
168
- const isTypeCheckApiAffected = new Set();
169
- // The first phase is to collect all symbols which have their public API affected. Any symbols
170
- // that cannot be matched up with a symbol from the prior graph are considered affected.
171
- for (const symbol of this.newGraph.symbolByDecl.values()) {
172
- const previousSymbol = priorGraph.getEquivalentSymbol(symbol);
173
- if (previousSymbol === null || symbol.isTypeCheckApiAffected(previousSymbol)) {
174
- isTypeCheckApiAffected.add(symbol);
175
- }
176
- }
177
- // The second phase is to find all symbols for which the emit result is affected, either because
178
- // their used declarations have changed or any of those used declarations has had its public API
179
- // affected as determined in the first phase.
180
- const needsTypeCheckEmit = new Set();
181
- for (const symbol of this.newGraph.symbolByDecl.values()) {
182
- if (symbol.isTypeCheckBlockAffected === undefined) {
183
- continue;
184
- }
185
- const previousSymbol = priorGraph.getEquivalentSymbol(symbol);
186
- if (previousSymbol === null ||
187
- symbol.isTypeCheckBlockAffected(previousSymbol, isTypeCheckApiAffected)) {
188
- needsTypeCheckEmit.add(symbol.path);
189
- }
190
- }
191
- return needsTypeCheckEmit;
192
- }
193
- /**
194
- * Creates a `SemanticReference` for the reference to `decl` using the expression `expr`. See
195
- * the documentation of `SemanticReference` for details.
196
- */
197
- getSemanticReference(decl, expr) {
198
- return {
199
- symbol: this.getSymbol(decl),
200
- importPath: getImportPath(expr),
201
- };
202
- }
203
- /**
204
- * Gets the `SemanticSymbol` that was registered for `decl` during the current compilation, or
205
- * returns an opaque symbol that represents `decl`.
206
- */
207
- getSymbol(decl) {
208
- const symbol = this.newGraph.getSymbolByDecl(decl);
209
- if (symbol === null) {
210
- // No symbol has been recorded for the provided declaration, which would be the case if the
211
- // declaration is external. Return an opaque symbol in that case, to allow the external
212
- // declaration to be compared to a prior compilation.
213
- return this.getOpaqueSymbol(decl);
214
- }
215
- return symbol;
216
- }
217
- /**
218
- * Gets or creates an `OpaqueSymbol` for the provided class declaration.
219
- */
220
- getOpaqueSymbol(decl) {
221
- if (this.opaqueSymbols.has(decl)) {
222
- return this.opaqueSymbols.get(decl);
223
- }
224
- const symbol = new OpaqueSymbol(decl);
225
- this.opaqueSymbols.set(decl, symbol);
226
- return symbol;
227
- }
228
- }
229
- function getImportPath(expr) {
230
- if (expr instanceof ExternalExpr) {
231
- return `${expr.value.moduleName}\$${expr.value.name}`;
232
- }
233
- else {
234
- return null;
235
- }
236
- }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2luY3JlbWVudGFsL3NlbWFudGljX2dyYXBoL3NyYy9ncmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWEsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHM0QsT0FBTyxFQUFvQixjQUFjLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFtQnhEOzs7OztHQUtHO0FBQ0gsTUFBTSxZQUFhLFNBQVEsY0FBYztJQUN2QyxtQkFBbUI7UUFDakIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBQ1csVUFBSyxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBQy9ELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQW9DLENBQUM7SUFtRXRFLENBQUM7SUFqRUM7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsTUFBc0I7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQzlCLDhGQUE4RjtZQUM5RixpREFBaUQ7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBMEIsQ0FBQyxDQUFDO2FBQ2hFO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FB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QTJGO1lBQzNGLHVGQUF1RjtZQUN2RixxREFBcUQ7WUFDckQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZSxDQUFDLElBQXNCO1FBQzVDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztTQUN0QztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxTQUFTLGFBQWEsQ0FBQyxJQUFnQjtJQUNyQyxJQUFJLElBQUksWUFBWSxZQUFZLEVBQUU7UUFDaEMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDdkQ7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RXhwcmVzc2lvbiwgRXh0ZXJuYWxFeHByfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRofSBmcm9tICcuLi8uLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb259IGZyb20gJy4uLy4uLy4uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtTZW1hbnRpY1JlZmVyZW5jZSwgU2VtYW50aWNTeW1ib2x9IGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0RlcGVuZGVuY3lSZXN1bHQge1xuICAvKipcbiAgICogVGhlIGZpbGVzIHRoYXQgbmVlZCB0byBiZSByZS1lbWl0dGVkLlxuICAgKi9cbiAgbmVlZHNFbWl0OiBTZXQ8QWJzb2x1dGVGc1BhdGg+O1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZXMgZm9yIHdoaWNoIHRoZSB0eXBlLWNoZWNrIGJsb2NrIHNob3VsZCBiZSByZWdlbmVyYXRlZC5cbiAgICovXG4gIG5lZWRzVHlwZUNoZWNrRW1pdDogU2V0PEFic29sdXRlRnNQYXRoPjtcblxuICAvKipcbiAgICogVGhlIG5ld2x5IGJ1aWx0IGdyYXBoIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBjb21waWxhdGlvbi5cbiAgICovXG4gIG5ld0dyYXBoOiBTZW1hbnRpY0RlcEdyYXBoO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBkZWNsYXJhdGlvbiBmb3Igd2hpY2ggbm8gc2VtYW50aWMgc3ltYm9sIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIEZvciBleGFtcGxlLFxuICogZGVjbGFyYXRpb25zIGZyb20gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGhhdmUgbm90IGJlZW4gZXhwbGljaXRseSByZWdpc3RlcmVkIGFuZCBhcmUgcmVwcmVzZW50ZWRcbiAqIGJ5IHRoaXMgc3ltYm9sLiBUaGlzIGFsbG93cyB0aGUgdW5yZXNvbHZlZCBzeW1ib2wgdG8gc3RpbGwgYmUgY29tcGFyZWQgdG8gYSBzeW1ib2wgZnJvbSBhIHByaW9yXG4gKiBjb21waWxhdGlvbi5cbiAqL1xuY2xhc3MgT3BhcXVlU3ltYm9sIGV4dGVuZHMgU2VtYW50aWNTeW1ib2wge1xuICBpc1B1YmxpY0FwaUFmZmVjdGVkKCk6IGZhbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc1R5cGVDaGVja0FwaUFmZmVjdGVkKCk6IGZhbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgc2VtYW50aWMgZGVwZW5kZW5jeSBncmFwaCBvZiBhIHNpbmdsZSBjb21waWxhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlbWFudGljRGVwR3JhcGgge1xuICByZWFkb25seSBmaWxlcyA9IG5ldyBNYXA8QWJzb2x1dGVGc1BhdGgsIE1hcDxzdHJpbmcsIFNlbWFudGljU3ltYm9sPj4oKTtcbiAgcmVhZG9ubHkgc3ltYm9sQnlEZWNsID0gbmV3IE1hcDxDbGFzc0RlY2xhcmF0aW9uLCBTZW1hbnRpY1N5bWJvbD4oKTtcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgc3ltYm9sIGluIHRoZSBncmFwaC4gVGhlIHN5bWJvbCBpcyBnaXZlbiBhIHVuaXF1ZSBpZGVudGlmaWVyIGlmIHBvc3NpYmxlLCBzdWNoIHRoYXRcbiAgICogaXRzIGVxdWl2YWxlbnQgc3ltYm9sIGNhbiBiZSBvYnRhaW5lZCBmcm9tIGEgcHJpb3IgZ3JhcGggZXZlbiBpZiBpdHMgZGVjbGFyYXRpb24gbm9kZSBoYXNcbiAgICogY2hhbmdlZCBhY3Jvc3MgcmVidWlsZHMuIFN5bWJvbHMgd2l0aG91dCBhbiBpZGVudGlmaWVyIGFyZSBvbmx5IGFibGUgdG8gZmluZCB0aGVtc2VsdmVzIGluIGFcbiAgICogcHJpb3IgZ3JhcGggaWYgdGhlaXIgZGVjbGFyYXRpb24gbm9kZSBpcyBpZGVudGljYWwuXG4gICAqL1xuICByZWdpc3RlclN5bWJvbChzeW1ib2w6IFNlbWFudGljU3ltYm9sKTogdm9pZCB7XG4gICAgdGhpcy5zeW1ib2xCeURlY2wuc2V0KHN5bWJvbC5kZWNsLCBzeW1ib2wpO1xuXG4gICAgaWYgKHN5bWJvbC5pZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICAvLyBJZiB0aGUgc3ltYm9sIGhhcyBhIHVuaXF1ZSBpZGVudGlmaWVyLCByZWNvcmQgaXQgaW4gdGhlIGZpbGUgdGhhdCBkZWNsYXJlcyBpdC4gVGhpcyBlbmFibGVzXG4gICAgICAvLyB0aGUgc3ltYm9sIHRvIGJlIHJlcXVlc3RlZCBieSBpdHMgdW5pcXVlIG5hbWUuXG4gICAgICBpZiAoIXRoaXMuZmlsZXMuaGFzKHN5bWJvbC5wYXRoKSkge1xuICAgICAgICB0aGlzLmZpbGVzLnNldChzeW1ib2wucGF0aCwgbmV3IE1hcDxzdHJpbmcsIFNlbWFudGljU3ltYm9sPigpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsZXMuZ2V0KHN5bWJvbC5wYXRoKSEuc2V0KHN5bWJvbC5pZGVudGlmaWVyLCBzeW1ib2wpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byByZXNvbHZlIGEgc3ltYm9sIGluIHRoaXMgZ3JhcGggdGhhdCByZXByZXNlbnRzIHRoZSBnaXZlbiBzeW1ib2wgZnJvbSBhbm90aGVyIGdyYXBoLlxuICAgKiBJZiBubyBtYXRjaGluZyBzeW1ib2wgY291bGQgYmUgZm91bmQsIG51bGwgaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqIEBwYXJhbSBzeW1ib2wgVGhlIHN5bWJvbCBmcm9tIGFub3RoZXIgZ3JhcGggZm9yIHdoaWNoIGl0cyBlcXVpdmFsZW50IGluIHRoaXMgZ3JhcGggc2hvdWxkIGJlXG4gICAqIGZvdW5kLlxuICAgKi9cbiAgZ2V0RXF1aXZhbGVudFN5bWJvbChzeW1ib2w6IFNlbWFudGljU3ltYm9sKTogU2VtYW50aWNTeW1ib2x8bnVsbCB7XG4gICAgLy8gRmlyc3QgbG9va3VwIHRoZSBzeW1ib2wgYnkgaXRzIGRlY2xhcmF0aW9uLiBJdCBpcyB0eXBpY2FsIGZvciB0aGUgZGVjbGFyYXRpb24gdG8gbm90IGhhdmVcbiAgICAvLyBjaGFuZ2VkIGFjcm9zcyByZWJ1aWxkcywgc28gdGhpcyBpcyBsaWtlbHkgdG8gZmluZCB0aGUgc3ltYm9sLiBVc2luZyB0aGUgZGVjbGFyYXRpb24gYWxzb1xuICAgIC8vIGFsbG93cyB0byBkaWZmIHN5bWJvbHMgZm9yIHdoaWNoIG5vIHVuaXF1ZSBpZGVudGlmaWVyIGNvdWxkIGJlIGRldGVybWluZWQuXG4gICAgbGV0IHByZXZpb3VzU3ltYm9sID0gdGhpcy5nZXRTeW1ib2xCeURlY2woc3ltYm9sLmRlY2wpO1xuICAgIGlmIChwcmV2aW91c1N5bWJvbCA9PT0gbnVsbCAmJiBzeW1ib2wuaWRlbnRpZmllciAhPT0gbnVsbCkge1xuICAgICAgLy8gVGhlIGRlY2xhcmF0aW9uIGNvdWxkIG5vdCBiZSByZXNvbHZlZCB0byBhIHN5bWJvbCBpbiBhIHByaW9yIGNvbXBpbGF0aW9uLCB3aGljaCBtYXlcbiAgICAgIC8vIGhhcHBlbiBiZWNhdXNlIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGRlY2xhcmF0aW9uIGhhcyBjaGFuZ2VkLiBJbiB0aGF0IGNhc2Ugd2Ugd2FudCB0b1xuICAgICAgLy8gbG9va3VwIHRoZSBzeW1ib2wgYmFzZWQgb24gaXRzIHVuaXF1ZSBpZGVudGlmaWVyLCBhcyB0aGF0IGFsbG93cyB1cyB0byBzdGlsbCBjb21wYXJlIHRoZVxuICAgICAgLy8gY2hhbmdlZCBkZWNsYXJhdGlvbiB0byB0aGUgcHJpb3IgY29tcGlsYXRpb24uXG4gICAgICBwcmV2aW91c1N5bWJvbCA9IHRoaXMuZ2V0U3ltYm9sQnlOYW1lKHN5bWJvbC5wYXRoLCBzeW1ib2wuaWRlbnRpZmllcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXZpb3VzU3ltYm9sO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIGZpbmQgdGhlIHN5bWJvbCBieSBpdHMgaWRlbnRpZmllci5cbiAgICovXG4gIHByaXZhdGUgZ2V0U3ltYm9sQnlOYW1lKHBhdGg6IEFic29sdXRlRnNQYXRoLCBpZGVudGlmaWVyOiBzdHJpbmcpOiBTZW1hbnRpY1N5bWJvbHxudWxsIHtcbiAgICBpZiAoIXRoaXMuZmlsZXMuaGFzKHBhdGgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZmlsZSA9IHRoaXMuZmlsZXMuZ2V0KHBhdGgpITtcbiAgICBpZiAoIWZpbGUuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGUuZ2V0KGlkZW50aWZpZXIpITtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byByZXNvbHZlIHRoZSBkZWNsYXJhdGlvbiB0byBpdHMgc2VtYW50aWMgc3ltYm9sLlxuICAgKi9cbiAgZ2V0U3ltYm9sQnlEZWNsKGRlY2w6IENsYXNzRGVjbGFyYXRpb24pOiBTZW1hbnRpY1N5bWJvbHxudWxsIHtcbiAgICBpZiAoIXRoaXMuc3ltYm9sQnlEZWNsLmhhcyhkZWNsKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN5bWJvbEJ5RGVjbC5nZXQoZGVjbCkhO1xuICB9XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgbG9naWMgdG8gZ28gZnJvbSBhIHByZXZpb3VzIGRlcGVuZGVuY3kgZ3JhcGggdG8gYSBuZXcgb25lLCBhbG9uZyB3aXRoIGluZm9ybWF0aW9uXG4gKiBvbiB3aGljaCBmaWxlcyBoYXZlIGJlZW4gYWZmZWN0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZW1hbnRpY0RlcEdyYXBoVXBkYXRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV3R3JhcGggPSBuZXcgU2VtYW50aWNEZXBHcmFwaCgpO1xuXG4gIC8qKlxuICAgKiBDb250YWlucyBvcGFxdWUgc3ltYm9scyB0aGF0IHdlcmUgY3JlYXRlZCBmb3IgZGVjbGFyYXRpb25zIGZvciB3aGljaCB0aGVyZSB3YXMgbm8gc3ltYm9sXG4gICAqIHJlZ2lzdGVyZWQsIHdoaWNoIGhhcHBlbnMgZm9yIGUuZy4gZXh0ZXJuYWwgZGVjbGFyYXRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvcGFxdWVTeW1ib2xzID0gbmV3IE1hcDxDbGFzc0RlY2xhcmF0aW9uLCBPcGFxdWVTeW1ib2w+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBzZW1hbnRpYyBkZXBlbmRlbmN5IGdyYXBoIG9mIHRoZSBtb3N0IHJlY2VudGx5IHN1Y2NlZWRlZCBjb21waWxhdGlvbiwgb3IgbnVsbCBpZiB0aGlzXG4gICAgICAgKiBpcyB0aGUgaW5pdGlhbCBidWlsZC5cbiAgICAgICAqL1xuICAgICAgcHJpdmF0ZSBwcmlvckdyYXBoOiBTZW1hbnRpY0RlcEdyYXBofG51bGwpIHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgc3ltYm9sIGluIHRoZSBuZXcgZ3JhcGggdGhhdCBpcyBiZWluZyBjcmVhdGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJTeW1ib2woc3ltYm9sOiBTZW1hbnRpY1N5bWJvbCk6IHZvaWQge1xuICAgIHRoaXMubmV3R3JhcGgucmVnaXN0ZXJTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhbGwgZmFjdHMgdGhhdCBoYXZlIGJlZW4gZ2F0aGVyZWQgdG8gY3JlYXRlIGEgbmV3IHNlbWFudGljIGRlcGVuZGVuY3kgZ3JhcGguIEluIHRoaXNcbiAgICogcHJvY2VzcywgdGhlIHNlbWFudGljIGltcGFjdCBvZiB0aGUgY2hhbmdlcyBpcyBkZXRlcm1pbmVkIHdoaWNoIHJlc3VsdHMgaW4gYSBzZXQgb2YgZmlsZXMgdGhhdFxuICAgKiBuZWVkIHRvIGJlIGVtaXR0ZWQgYW5kL29yIHR5cGUtY2hlY2tlZC5cbiAgICovXG4gIGZpbmFsaXplKCk6IFNlbWFudGljRGVwZW5kZW5jeVJlc3VsdCB7XG4gICAgaWYgKHRoaXMucHJpb3JHcmFwaCA9PT0gbnVsbCkge1xuICAgICAgLy8gSWYgbm8gcHJpb3IgZGVwZW5kZW5jeSBncmFwaCBpcyBhdmFpbGFibGUgdGhlbiB0aGlzIHdhcyB0aGUgaW5pdGlhbCBidWlsZCwgaW4gd2hpY2ggY2FzZVxuICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBkZXRlcm1pbmUgdGhlIHNlbWFudGljIGltcGFjdCBhcyBldmVyeXRoaW5nIGlzIGFscmVhZHkgY29uc2lkZXJlZFxuICAgICAgLy8gbG9naWNhbGx5IGNoYW5nZWQuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZWVkc0VtaXQ6IG5ldyBTZXQ8QWJzb2x1dGVGc1BhdGg+KCksXG4gICAgICAgIG5lZWRzVHlwZUNoZWNrRW1pdDogbmV3IFNldDxBYnNvbHV0ZUZzUGF0aD4oKSxcbiAgICAgICAgbmV3R3JhcGg6IHRoaXMubmV3R3JhcGgsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IG5lZWRzRW1pdCA9IHRoaXMuZGV0ZXJtaW5lSW52YWxpZGF0ZWRGaWxlcyh0aGlzLnByaW9yR3JhcGgpO1xuICAgIGNvbnN0IG5lZWRzVHlwZUNoZWNrRW1pdCA9IHRoaXMuZGV0ZXJtaW5lSW52YWxpZGF0ZWRUeXBlQ2hlY2tGaWxlcyh0aGlzLnByaW9yR3JhcGgpO1xuICAgIHJldHVybiB7XG4gICAgICBuZWVkc0VtaXQsXG4gICAgICBuZWVkc1R5cGVDaGVja0VtaXQsXG4gICAgICBuZXdHcmFwaDogdGhpcy5uZXdHcmFwaCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlcm1pbmVJbnZhbGlkYXRlZEZpbGVzKHByaW9yR3JhcGg6IFNlbWFudGljRGVwR3JhcGgpOiBTZXQ8QWJzb2x1dGVGc1BhdGg+IHtcbiAgICBjb25zdCBpc1B1YmxpY0FwaUFmZmVjdGVkID0gbmV3IFNldDxTZW1hbnRpY1N5bWJvbD4oKTtcblxuICAgIC8vIFRoZSBmaXJzdCBwaGFzZSBpcyB0byBjb2xsZWN0IGFsbCBzeW1ib2xzIHdoaWNoIGhhdmUgdGhlaXIgcHVibGljIEFQSSBhZmZlY3RlZC4gQW55IHN5bWJvbHNcbiAgICAvLyB0aGF0IGNhbm5vdCBiZSBtYXRjaGVkIHVwIHdpdGggYSBzeW1ib2wgZnJvbSB0aGUgcHJpb3IgZ3JhcGggYXJlIGNvbnNpZGVyZWQgYWZmZWN0ZWQuXG4gICAgZm9yIChjb25zdCBzeW1ib2wgb2YgdGhpcy5uZXdHcmFwaC5zeW1ib2xCeURlY2wudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3ltYm9sID0gcHJpb3JHcmFwaC5nZXRFcXVpdmFsZW50U3ltYm9sKHN5bWJvbCk7XG4gICAgICBpZiAocHJldmlvdXNTeW1ib2wgPT09IG51bGwgfHwgc3ltYm9sLmlzUHVibGljQXBpQWZmZWN0ZWQocHJldmlvdXNTeW1ib2wpKSB7XG4gICAgICAgIGlzUHVibGljQXBpQWZmZWN0ZWQuYWRkKHN5bWJvbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIHNlY29uZCBwaGFzZSBpcyB0byBmaW5kIGFsbCBzeW1ib2xzIGZvciB3aGljaCB0aGUgZW1pdCByZXN1bHQgaXMgYWZmZWN0ZWQsIGVpdGhlciBiZWNhdXNlXG4gICAgLy8gdGhlaXIgdXNlZCBkZWNsYXJhdGlvbnMgaGF2ZSBjaGFuZ2VkIG9yIGFueSBvZiB0aG9zZSB1c2VkIGRlY2xhcmF0aW9ucyBoYXMgaGFkIGl0cyBwdWJsaWMgQVBJXG4gICAgLy8gYWZmZWN0ZWQgYXMgZGV0ZXJtaW5lZCBpbiB0aGUgZmlyc3QgcGhhc2UuXG4gICAgY29uc3QgbmVlZHNFbWl0ID0gbmV3IFNldDxBYnNvbHV0ZUZzUGF0aD4oKTtcbiAgICBmb3IgKGNvbnN0IHN5bWJvbCBvZiB0aGlzLm5ld0dyYXBoLnN5bWJvbEJ5RGVjbC52YWx1ZXMoKSkge1xuICAgICAgaWYgKHN5bWJvbC5pc0VtaXRBZmZlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmV2aW91c1N5bWJvbCA9IHByaW9yR3JhcGguZ2V0RXF1aXZhbGVudFN5bWJvbChzeW1ib2wpO1xuICAgICAgaWYgKHByZXZpb3VzU3ltYm9sID09PSBudWxsIHx8IHN5bWJvbC5pc0VtaXRBZmZlY3RlZChwcmV2aW91c1N5bWJvbCwgaXNQdWJsaWNBcGlBZmZlY3RlZCkpIHtcbiAgICAgICAgbmVlZHNFbWl0LmFkZChzeW1ib2wucGF0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5lZWRzRW1pdDtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lSW52YWxpZGF0ZWRUeXBlQ2hlY2tGaWxlcyhwcmlvckdyYXBoOiBTZW1hbnRpY0RlcEdyYXBoKTogU2V0PEFic29sdXRlRnNQYXRoPiB7XG4gICAgY29uc3QgaXNUeXBlQ2hlY2tBcGlBZmZlY3RlZCA9IG5ldyBTZXQ8U2VtYW50aWNTeW1ib2w+KCk7XG5cbiAgICAvLyBUaGUgZmlyc3QgcGhhc2UgaXMgdG8gY29sbGVjdCBhbGwgc3ltYm9scyB3aGljaCBoYXZlIHRoZWlyIHB1YmxpYyBBUEkgYWZmZWN0ZWQuIEFueSBzeW1ib2xzXG4gICAgLy8gdGhhdCBjYW5ub3QgYmUgbWF0Y2hlZCB1cCB3aXRoIGEgc3ltYm9sIGZyb20gdGhlIHByaW9yIGdyYXBoIGFyZSBjb25zaWRlcmVkIGFmZmVjdGVkLlxuICAgIGZvciAoY29uc3Qgc3ltYm9sIG9mIHRoaXMubmV3R3JhcGguc3ltYm9sQnlEZWNsLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCBwcmV2aW91c1N5bWJvbCA9IHByaW9yR3JhcGguZ2V0RXF1aXZhbGVudFN5bWJvbChzeW1ib2wpO1xuICAgICAgaWYgKHByZXZpb3VzU3ltYm9sID09PSBudWxsIHx8IHN5bWJvbC5pc1R5cGVDaGVja0FwaUFmZmVjdGVkKHByZXZpb3VzU3ltYm9sKSkge1xuICAgICAgICBpc1R5cGVDaGVja0FwaUFmZmVjdGVkLmFkZChzeW1ib2wpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBzZWNvbmQgcGhhc2UgaXMgdG8gZmluZCBhbGwgc3ltYm9scyBmb3Igd2hpY2ggdGhlIGVtaXQgcmVzdWx0IGlzIGFmZmVjdGVkLCBlaXRoZXIgYmVjYXVzZVxuICAgIC8vIHRoZWlyIHVzZWQgZGVjbGFyYXRpb25zIGhhdmUgY2hhbmdlZCBvciBhbnkgb2YgdGhvc2UgdXNlZCBkZWNsYXJhdGlvbnMgaGFzIGhhZCBpdHMgcHVibGljIEFQSVxuICAgIC8vIGFmZmVjdGVkIGFzIGRldGVybWluZWQgaW4gdGhlIGZpcnN0IHBoYXNlLlxuICAgIGNvbnN0IG5lZWRzVHlwZUNoZWNrRW1pdCA9IG5ldyBTZXQ8QWJzb2x1dGVGc1BhdGg+KCk7XG4gICAgZm9yIChjb25zdCBzeW1ib2wgb2YgdGhpcy5uZXdHcmFwaC5zeW1ib2xCeURlY2wudmFsdWVzKCkpIHtcbiAgICAgIGlmIChzeW1ib2wuaXNUeXBlQ2hlY2tCbG9ja0FmZmVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZXZpb3VzU3ltYm9sID0gcHJpb3JHcmFwaC5nZXRFcXVpdmFsZW50U3ltYm9sKHN5bWJvbCk7XG4gICAgICBpZiAocHJldmlvdXNTeW1ib2wgPT09IG51bGwgfHxcbiAgICAgICAgICBzeW1ib2wuaXNUeXBlQ2hlY2tCbG9ja0FmZmVjdGVkKHByZXZpb3VzU3ltYm9sLCBpc1R5cGVDaGVja0FwaUFmZmVjdGVkKSkge1xuICAgICAgICBuZWVkc1R5cGVDaGVja0VtaXQuYWRkKHN5bWJvbC5wYXRoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmVlZHNUeXBlQ2hlY2tFbWl0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBgU2VtYW50aWNSZWZlcmVuY2VgIGZvciB0aGUgcmVmZXJlbmNlIHRvIGBkZWNsYCB1c2luZyB0aGUgZXhwcmVzc2lvbiBgZXhwcmAuIFNlZVxuICAgKiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBgU2VtYW50aWNSZWZlcmVuY2VgIGZvciBkZXRhaWxzLlxuICAgKi9cbiAgZ2V0U2VtYW50aWNSZWZlcmVuY2UoZGVjbDogQ2xhc3NEZWNsYXJhdGlvbiwgZXhwcjogRXhwcmVzc2lvbik6IFNlbWFudGljUmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3ltYm9sOiB0aGlzLmdldFN5bWJvbChkZWNsKSxcbiAgICAgIGltcG9ydFBhdGg6IGdldEltcG9ydFBhdGgoZXhwciksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBgU2VtYW50aWNTeW1ib2xgIHRoYXQgd2FzIHJlZ2lzdGVyZWQgZm9yIGBkZWNsYCBkdXJpbmcgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24sIG9yXG4gICAqIHJldHVybnMgYW4gb3BhcXVlIHN5bWJvbCB0aGF0IHJlcHJlc2VudHMgYGRlY2xgLlxuICAgKi9cbiAgZ2V0U3ltYm9sKGRlY2w6IENsYXNzRGVjbGFyYXRpb24pOiBTZW1hbnRpY1N5bWJvbCB7XG4gICAgY29uc3Qgc3ltYm9sID0gdGhpcy5uZXdHcmFwaC5nZXRTeW1ib2xCeURlY2woZGVjbCk7XG4gICAgaWYgKHN5bWJvbCA9PT0gbnVsbCkge1xuICAgICAgLy8gTm8gc3ltYm9sIGhhcyBiZWVuIHJlY29yZGVkIGZvciB0aGUgcHJvdmlkZWQgZGVjbGFyYXRpb24sIHdoaWNoIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZVxuICAgICAgLy8gZGVjbGFyYXRpb24gaXMgZXh0ZXJuYWwuIFJldHVybiBhbiBvcGFxdWUgc3ltYm9sIGluIHRoYXQgY2FzZSwgdG8gYWxsb3cgdGhlIGV4dGVybmFsXG4gICAgICAvLyBkZWNsYXJhdGlvbiB0byBiZSBjb21wYXJlZCB0byBhIHByaW9yIGNvbXBpbGF0aW9uLlxuICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BhcXVlU3ltYm9sKGRlY2wpO1xuICAgIH1cbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgb3IgY3JlYXRlcyBhbiBgT3BhcXVlU3ltYm9sYCBmb3IgdGhlIHByb3ZpZGVkIGNsYXNzIGRlY2xhcmF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRPcGFxdWVTeW1ib2woZGVjbDogQ2xhc3NEZWNsYXJhdGlvbik6IE9wYXF1ZVN5bWJvbCB7XG4gICAgaWYgKHRoaXMub3BhcXVlU3ltYm9scy5oYXMoZGVjbCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wYXF1ZVN5bWJvbHMuZ2V0KGRlY2wpITtcbiAgICB9XG5cbiAgICBjb25zdCBzeW1ib2wgPSBuZXcgT3BhcXVlU3ltYm9sKGRlY2wpO1xuICAgIHRoaXMub3BhcXVlU3ltYm9scy5zZXQoZGVjbCwgc3ltYm9sKTtcbiAgICByZXR1cm4gc3ltYm9sO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydFBhdGgoZXhwcjogRXhwcmVzc2lvbik6IHN0cmluZ3xudWxsIHtcbiAgaWYgKGV4cHIgaW5zdGFuY2VvZiBFeHRlcm5hbEV4cHIpIHtcbiAgICByZXR1cm4gYCR7ZXhwci52YWx1ZS5tb2R1bGVOYW1lfVxcJCR7ZXhwci52YWx1ZS5uYW1lfWA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -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
- import * as ts from 'typescript';
9
- import { isArrayEqual } from './util';
10
- /**
11
- * Converts the type parameters of the given class into their semantic representation. If the class
12
- * does not have any type parameters, then `null` is returned.
13
- */
14
- export function extractSemanticTypeParameters(node) {
15
- if (!ts.isClassDeclaration(node) || node.typeParameters === undefined) {
16
- return null;
17
- }
18
- return node.typeParameters.map(typeParam => ({ hasGenericTypeBound: typeParam.constraint !== undefined }));
19
- }
20
- /**
21
- * Compares the list of type parameters to determine if they can be considered equal.
22
- */
23
- export function areTypeParametersEqual(current, previous) {
24
- // First compare all type parameters one-to-one; any differences mean that the list of type
25
- // parameters has changed.
26
- if (!isArrayEqual(current, previous, isTypeParameterEqual)) {
27
- return false;
28
- }
29
- // If there is a current list of type parameters and if any of them has a generic type constraint,
30
- // then the meaning of that type parameter may have changed without us being aware; as such we
31
- // have to assume that the type parameters have in fact changed.
32
- if (current !== null && current.some(typeParam => typeParam.hasGenericTypeBound)) {
33
- return false;
34
- }
35
- return true;
36
- }
37
- function isTypeParameterEqual(a, b) {
38
- return a.hasGenericTypeBound === b.hasGenericTypeBound;
39
- }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9wYXJhbWV0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9pbmNyZW1lbnRhbC9zZW1hbnRpY19ncmFwaC9zcmMvdHlwZV9wYXJhbWV0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR2pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFzQnBDOzs7R0FHRztBQUNILE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxJQUFzQjtJQUVsRSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1FBQ3JFLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUMxQixTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLE9BQXFDLEVBQUUsUUFBc0M7SUFDL0UsMkZBQTJGO0lBQzNGLDBCQUEwQjtJQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtRQUMxRCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsa0dBQWtHO0lBQ2xHLDhGQUE4RjtJQUM5RixnRUFBZ0U7SUFDaEUsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRTtRQUNoRixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxDQUF3QixFQUFFLENBQXdCO0lBQzlFLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9ufSBmcm9tICcuLi8uLi8uLi9yZWZsZWN0aW9uJztcbmltcG9ydCB7aXNBcnJheUVxdWFsfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIERlc2NyaWJlcyBhIGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXIgb2YgYSBzZW1hbnRpYyBzeW1ib2wuIEEgY2xhc3MgZGVjbGFyYXRpb24gd2l0aCB0eXBlIHBhcmFtZXRlcnNcbiAqIG5lZWRzIHNwZWNpYWwgY29uc2lkZXJhdGlvbiBpbiBjZXJ0YWluIGNvbnRleHRzLiBGb3IgZXhhbXBsZSwgdGVtcGxhdGUgdHlwZS1jaGVjayBibG9ja3MgbWF5XG4gKiBjb250YWluIHR5cGUgY29uc3RydWN0b3JzIG9mIHVzZWQgZGlyZWN0aXZlcyB3aGljaCBpbmNsdWRlIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGRpcmVjdGl2ZS5cbiAqIEFzIGEgY29uc2VxdWVuY2UsIGlmIGEgY2hhbmdlIGlzIG1hZGUgdGhhdCBhZmZlY3RzIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2Ygc2FpZCBkaXJlY3RpdmUsIGFueVxuICogdGVtcGxhdGUgdHlwZS1jaGVjayBibG9ja3MgdGhhdCB1c2UgdGhlIGRpcmVjdGl2ZSBuZWVkIHRvIGJlIHJlZ2VuZXJhdGVkLlxuICpcbiAqIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgc2luZ2xlIGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXIuIEl0IGN1cnJlbnRseSBvbmx5IHRyYWNrcyB3aGV0aGVyIHRoZVxuICogdHlwZSBwYXJhbWV0ZXIgaGFzIGEgY29uc3RyYWludCwgaS5lLiBoYXMgYW4gYGV4dGVuZHNgIGNsYXVzZS4gV2hlbiBhIGNvbnN0cmFpbnQgaXMgcHJlc2VudCwgd2VcbiAqIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgaXMgYWZmZWN0ZWQgaW4gZWFjaCBpbmNyZW1lbnRhbCByZWJ1aWxkOyBwcm92aW5nIHRoYXRcbiAqIGEgdHlwZSBwYXJhbWV0ZXIgd2l0aCBjb25zdHJhaW50IGlzIG5vdCBhZmZlY3RlZCBpcyBub24tdHJpdmlhbCBhcyBpdCByZXF1aXJlcyBmdWxsIHNlbWFudGljXG4gKiB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0eXBlIGNvbnN0cmFpbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNUeXBlUGFyYW1ldGVyIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgYSB0eXBlIGNvbnN0cmFpbnQsIGkuZS4gYW4gYGV4dGVuZHNgIGNsYXVzZSBpcyBwcmVzZW50IG9uIHRoZSB0eXBlIHBhcmFtZXRlci5cbiAgICovXG4gIGhhc0dlbmVyaWNUeXBlQm91bmQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZ2l2ZW4gY2xhc3MgaW50byB0aGVpciBzZW1hbnRpYyByZXByZXNlbnRhdGlvbi4gSWYgdGhlIGNsYXNzXG4gKiBkb2VzIG5vdCBoYXZlIGFueSB0eXBlIHBhcmFtZXRlcnMsIHRoZW4gYG51bGxgIGlzIHJldHVybmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFNlbWFudGljVHlwZVBhcmFtZXRlcnMobm9kZTogQ2xhc3NEZWNsYXJhdGlvbik6IFNlbWFudGljVHlwZVBhcmFtZXRlcltdfFxuICAgIG51bGwge1xuICBpZiAoIXRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSB8fCBub2RlLnR5cGVQYXJhbWV0ZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBub2RlLnR5cGVQYXJhbWV0ZXJzLm1hcChcbiAgICAgIHR5cGVQYXJhbSA9PiAoe2hhc0dlbmVyaWNUeXBlQm91bmQ6IHR5cGVQYXJhbS5jb25zdHJhaW50ICE9PSB1bmRlZmluZWR9KSk7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgdGhlIGxpc3Qgb2YgdHlwZSBwYXJhbWV0ZXJzIHRvIGRldGVybWluZSBpZiB0aGV5IGNhbiBiZSBjb25zaWRlcmVkIGVxdWFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJlVHlwZVBhcmFtZXRlcnNFcXVhbChcbiAgICBjdXJyZW50OiBTZW1hbnRpY1R5cGVQYXJhbWV0ZXJbXXxudWxsLCBwcmV2aW91czogU2VtYW50aWNUeXBlUGFyYW1ldGVyW118bnVsbCk6IGJvb2xlYW4ge1xuICAvLyBGaXJzdCBjb21wYXJlIGFsbCB0eXBlIHBhcmFtZXRlcnMgb25lLXRvLW9uZTsgYW55IGRpZmZlcmVuY2VzIG1lYW4gdGhhdCB0aGUgbGlzdCBvZiB0eXBlXG4gIC8vIHBhcmFtZXRlcnMgaGFzIGNoYW5nZWQuXG4gIGlmICghaXNBcnJheUVxdWFsKGN1cnJlbnQsIHByZXZpb3VzLCBpc1R5cGVQYXJhbWV0ZXJFcXVhbCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBJZiB0aGVyZSBpcyBhIGN1cnJlbnQgbGlzdCBvZiB0eXBlIHBhcmFtZXRlcnMgYW5kIGlmIGFueSBvZiB0aGVtIGhhcyBhIGdlbmVyaWMgdHlwZSBjb25zdHJhaW50LFxuICAvLyB0aGVuIHRoZSBtZWFuaW5nIG9mIHRoYXQgdHlwZSBwYXJhbWV0ZXIgbWF5IGhhdmUgY2hhbmdlZCB3aXRob3V0IHVzIGJlaW5nIGF3YXJlOyBhcyBzdWNoIHdlXG4gIC8vIGhhdmUgdG8gYXNzdW1lIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVycyBoYXZlIGluIGZhY3QgY2hhbmdlZC5cbiAgaWYgKGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudC5zb21lKHR5cGVQYXJhbSA9PiB0eXBlUGFyYW0uaGFzR2VuZXJpY1R5cGVCb3VuZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNUeXBlUGFyYW1ldGVyRXF1YWwoYTogU2VtYW50aWNUeXBlUGFyYW1ldGVyLCBiOiBTZW1hbnRpY1R5cGVQYXJhbWV0ZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuaGFzR2VuZXJpY1R5cGVCb3VuZCA9PT0gYi5oYXNHZW5lcmljVHlwZUJvdW5kO1xufVxuIl19
@@ -1,69 +0,0 @@
1
- /**
2
- * Determines whether the provided symbols represent the same declaration.
3
- */
4
- export function isSymbolEqual(a, b) {
5
- if (a.decl === b.decl) {
6
- // If the declaration is identical then it must represent the same symbol.
7
- return true;
8
- }
9
- if (a.identifier === null || b.identifier === null) {
10
- // Unidentifiable symbols are assumed to be different.
11
- return false;
12
- }
13
- return a.path === b.path && a.identifier === b.identifier;
14
- }
15
- /**
16
- * Determines whether the provided references to a semantic symbol are still equal, i.e. represent
17
- * the same symbol and are imported by the same path.
18
- */
19
- export function isReferenceEqual(a, b) {
20
- if (!isSymbolEqual(a.symbol, b.symbol)) {
21
- // If the reference's target symbols are different, the reference itself is different.
22
- return false;
23
- }
24
- // The reference still corresponds with the same symbol, now check that the path by which it is
25
- // imported has not changed.
26
- return a.importPath === b.importPath;
27
- }
28
- export function referenceEquality(a, b) {
29
- return a === b;
30
- }
31
- /**
32
- * Determines if the provided arrays are equal to each other, using the provided equality tester
33
- * that is called for all entries in the array.
34
- */
35
- export function isArrayEqual(a, b, equalityTester = referenceEquality) {
36
- if (a === null || b === null) {
37
- return a === b;
38
- }
39
- if (a.length !== b.length) {
40
- return false;
41
- }
42
- return !a.some((item, index) => !equalityTester(item, b[index]));
43
- }
44
- /**
45
- * Determines if the provided sets are equal to each other, using the provided equality tester.
46
- * Sets that only differ in ordering are considered equal.
47
- */
48
- export function isSetEqual(a, b, equalityTester = referenceEquality) {
49
- if (a === null || b === null) {
50
- return a === b;
51
- }
52
- if (a.size !== b.size) {
53
- return false;
54
- }
55
- for (const itemA of a) {
56
- let found = false;
57
- for (const itemB of b) {
58
- if (equalityTester(itemA, itemB)) {
59
- found = true;
60
- break;
61
- }
62
- }
63
- if (!found) {
64
- return false;
65
- }
66
- }
67
- return true;
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW5jcmVtZW50YWwvc2VtYW50aWNfZ3JhcGgvc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0E7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQWlCLEVBQUUsQ0FBaUI7SUFDaEUsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFDckIsMEVBQTBFO1FBQzFFLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO1FBQ2xELHNEQUFzRDtRQUN0RCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQzVELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsQ0FBb0IsRUFBRSxDQUFvQjtJQUN6RSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3RDLHNGQUFzRjtRQUN0RixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsK0ZBQStGO0lBQy9GLDRCQUE0QjtJQUM1QixPQUFPLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFJLENBQUksRUFBRSxDQUFJO0lBQzdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDeEIsQ0FBb0IsRUFBRSxDQUFvQixFQUMxQyxpQkFBMEMsaUJBQWlCO0lBQzdELElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQjtJQUVELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN0QixDQUFzQixFQUFFLENBQXNCLEVBQzlDLGlCQUEwQyxpQkFBaUI7SUFDN0QsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2hCO0lBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFDckIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ3JCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNyQixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2IsTUFBTTthQUNQO1NBQ0Y7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1NlbWFudGljUmVmZXJlbmNlLCBTZW1hbnRpY1N5bWJvbH0gZnJvbSAnLi9hcGknO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3ltYm9scyByZXByZXNlbnQgdGhlIHNhbWUgZGVjbGFyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N5bWJvbEVxdWFsKGE6IFNlbWFudGljU3ltYm9sLCBiOiBTZW1hbnRpY1N5bWJvbCk6IGJvb2xlYW4ge1xuICBpZiAoYS5kZWNsID09PSBiLmRlY2wpIHtcbiAgICAvLyBJZiB0aGUgZGVjbGFyYXRpb24gaXMgaWRlbnRpY2FsIHRoZW4gaXQgbXVzdCByZXByZXNlbnQgdGhlIHNhbWUgc3ltYm9sLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGEuaWRlbnRpZmllciA9PT0gbnVsbCB8fCBiLmlkZW50aWZpZXIgPT09IG51bGwpIHtcbiAgICAvLyBVbmlkZW50aWZpYWJsZSBzeW1ib2xzIGFyZSBhc3N1bWVkIHRvIGJlIGRpZmZlcmVudC5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYS5wYXRoID09PSBiLnBhdGggJiYgYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXI7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm92aWRlZCByZWZlcmVuY2VzIHRvIGEgc2VtYW50aWMgc3ltYm9sIGFyZSBzdGlsbCBlcXVhbCwgaS5lLiByZXByZXNlbnRcbiAqIHRoZSBzYW1lIHN5bWJvbCBhbmQgYXJlIGltcG9ydGVkIGJ5IHRoZSBzYW1lIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZUVxdWFsKGE6IFNlbWFudGljUmVmZXJlbmNlLCBiOiBTZW1hbnRpY1JlZmVyZW5jZSk6IGJvb2xlYW4ge1xuICBpZiAoIWlzU3ltYm9sRXF1YWwoYS5zeW1ib2wsIGIuc3ltYm9sKSkge1xuICAgIC8vIElmIHRoZSByZWZlcmVuY2UncyB0YXJnZXQgc3ltYm9scyBhcmUgZGlmZmVyZW50LCB0aGUgcmVmZXJlbmNlIGl0c2VsZiBpcyBkaWZmZXJlbnQuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gVGhlIHJlZmVyZW5jZSBzdGlsbCBjb3JyZXNwb25kcyB3aXRoIHRoZSBzYW1lIHN5bWJvbCwgbm93IGNoZWNrIHRoYXQgdGhlIHBhdGggYnkgd2hpY2ggaXQgaXNcbiAgLy8gaW1wb3J0ZWQgaGFzIG5vdCBjaGFuZ2VkLlxuICByZXR1cm4gYS5pbXBvcnRQYXRoID09PSBiLmltcG9ydFBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VFcXVhbGl0eTxUPihhOiBULCBiOiBUKTogYm9vbGVhbiB7XG4gIHJldHVybiBhID09PSBiO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIHByb3ZpZGVkIGFycmF5cyBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlciwgdXNpbmcgdGhlIHByb3ZpZGVkIGVxdWFsaXR5IHRlc3RlclxuICogdGhhdCBpcyBjYWxsZWQgZm9yIGFsbCBlbnRyaWVzIGluIHRoZSBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXlFcXVhbDxUPihcbiAgICBhOiByZWFkb25seSBUW118bnVsbCwgYjogcmVhZG9ubHkgVFtdfG51bGwsXG4gICAgZXF1YWxpdHlUZXN0ZXI6IChhOiBULCBiOiBUKSA9PiBib29sZWFuID0gcmVmZXJlbmNlRXF1YWxpdHkpOiBib29sZWFuIHtcbiAgaWYgKGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBhID09PSBiO1xuICB9XG5cbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhYS5zb21lKChpdGVtLCBpbmRleCkgPT4gIWVxdWFsaXR5VGVzdGVyKGl0ZW0sIGJbaW5kZXhdKSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgcHJvdmlkZWQgc2V0cyBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlciwgdXNpbmcgdGhlIHByb3ZpZGVkIGVxdWFsaXR5IHRlc3Rlci5cbiAqIFNldHMgdGhhdCBvbmx5IGRpZmZlciBpbiBvcmRlcmluZyBhcmUgY29uc2lkZXJlZCBlcXVhbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2V0RXF1YWw8VD4oXG4gICAgYTogUmVhZG9ubHlTZXQ8VD58bnVsbCwgYjogUmVhZG9ubHlTZXQ8VD58bnVsbCxcbiAgICBlcXVhbGl0eVRlc3RlcjogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW4gPSByZWZlcmVuY2VFcXVhbGl0eSk6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGEgPT09IGI7XG4gIH1cblxuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IGl0ZW1BIG9mIGEpIHtcbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGl0ZW1CIG9mIGIpIHtcbiAgICAgIGlmIChlcXVhbGl0eVRlc3RlcihpdGVtQSwgaXRlbUIpKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
@@ -1,117 +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
- /**
10
- * An implementation of the `DependencyTracker` dependency graph API.
11
- *
12
- * The `FileDependencyGraph`'s primary job is to determine whether a given file has "logically"
13
- * changed, given the set of physical changes (direct changes to files on disk).
14
- *
15
- * A file is logically changed if at least one of three conditions is met:
16
- *
17
- * 1. The file itself has physically changed.
18
- * 2. One of its dependencies has physically changed.
19
- * 3. One of its resource dependencies has physically changed.
20
- */
21
- export class FileDependencyGraph {
22
- constructor() {
23
- this.nodes = new Map();
24
- }
25
- addDependency(from, on) {
26
- this.nodeFor(from).dependsOn.add(absoluteFromSourceFile(on));
27
- }
28
- addResourceDependency(from, resource) {
29
- this.nodeFor(from).usesResources.add(resource);
30
- }
31
- recordDependencyAnalysisFailure(file) {
32
- this.nodeFor(file).failedAnalysis = true;
33
- }
34
- getResourceDependencies(from) {
35
- const node = this.nodes.get(from);
36
- return node ? [...node.usesResources] : [];
37
- }
38
- /**
39
- * Update the current dependency graph from a previous one, incorporating a set of physical
40
- * changes.
41
- *
42
- * This method performs two tasks:
43
- *
44
- * 1. For files which have not logically changed, their dependencies from `previous` are added to
45
- * `this` graph.
46
- * 2. For files which have logically changed, they're added to a set of logically changed files
47
- * which is eventually returned.
48
- *
49
- * In essence, for build `n`, this method performs:
50
- *
51
- * G(n) + L(n) = G(n - 1) + P(n)
52
- *
53
- * where:
54
- *
55
- * G(n) = the dependency graph of build `n`
56
- * L(n) = the logically changed files from build n - 1 to build n.
57
- * P(n) = the physically changed files from build n - 1 to build n.
58
- */
59
- updateWithPhysicalChanges(previous, changedTsPaths, deletedTsPaths, changedResources) {
60
- const logicallyChanged = new Set();
61
- for (const sf of previous.nodes.keys()) {
62
- const sfPath = absoluteFromSourceFile(sf);
63
- const node = previous.nodeFor(sf);
64
- if (isLogicallyChanged(sf, node, changedTsPaths, deletedTsPaths, changedResources)) {
65
- logicallyChanged.add(sfPath);
66
- }
67
- else if (!deletedTsPaths.has(sfPath)) {
68
- this.nodes.set(sf, {
69
- dependsOn: new Set(node.dependsOn),
70
- usesResources: new Set(node.usesResources),
71
- failedAnalysis: false,
72
- });
73
- }
74
- }
75
- return logicallyChanged;
76
- }
77
- nodeFor(sf) {
78
- if (!this.nodes.has(sf)) {
79
- this.nodes.set(sf, {
80
- dependsOn: new Set(),
81
- usesResources: new Set(),
82
- failedAnalysis: false,
83
- });
84
- }
85
- return this.nodes.get(sf);
86
- }
87
- }
88
- /**
89
- * Determine whether `sf` has logically changed, given its dependencies and the set of physically
90
- * changed files and resources.
91
- */
92
- function isLogicallyChanged(sf, node, changedTsPaths, deletedTsPaths, changedResources) {
93
- // A file is assumed to have logically changed if its dependencies could not be determined
94
- // accurately.
95
- if (node.failedAnalysis) {
96
- return true;
97
- }
98
- const sfPath = absoluteFromSourceFile(sf);
99
- // A file is logically changed if it has physically changed itself (including being deleted).
100
- if (changedTsPaths.has(sfPath) || deletedTsPaths.has(sfPath)) {
101
- return true;
102
- }
103
- // A file is logically changed if one of its dependencies has physically changed.
104
- for (const dep of node.dependsOn) {
105
- if (changedTsPaths.has(dep) || deletedTsPaths.has(dep)) {
106
- return true;
107
- }
108
- }
109
- // A file is logically changed if one of its resources has physically changed.
110
- for (const dep of node.usesResources) {
111
- if (changedResources.has(dep)) {
112
- return true;
113
- }
114
- }
115
- return false;
116
- }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeV90cmFja2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvaW5jcmVtZW50YWwvc3JjL2RlcGVuZGVuY3lfdHJhY2tpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBSUgsT0FBTyxFQUFDLHNCQUFzQixFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBR3pFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUFoQztRQUVVLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0lBMEV6QyxDQUFDO0lBeEVDLGFBQWEsQ0FBQyxJQUFPLEVBQUUsRUFBSztRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBTyxFQUFFLFFBQXdCO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsK0JBQStCLENBQUMsSUFBTztRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQU87UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JHO0lBQ0gseUJBQXlCLENBQ3JCLFFBQWdDLEVBQUUsY0FBbUMsRUFDckUsY0FBbUMsRUFDbkMsZ0JBQXFDO1FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFFbkQsS0FBSyxNQUFNLEVBQUUsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtnQkFDbEYsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzlCO2lCQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7b0JBQ2pCLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNsQyxhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztvQkFDMUMsY0FBYyxFQUFFLEtBQUs7aUJBQ3RCLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFFRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxPQUFPLENBQUMsRUFBSztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO2dCQUNqQixTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQWtCO2dCQUNwQyxhQUFhLEVBQUUsSUFBSSxHQUFHLEVBQWtCO2dCQUN4QyxjQUFjLEVBQUUsS0FBSzthQUN0QixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FDdkIsRUFBSyxFQUFFLElBQWMsRUFBRSxjQUEyQyxFQUNsRSxjQUEyQyxFQUMzQyxnQkFBNkM7SUFDL0MsMEZBQTBGO0lBQzFGLGNBQWM7SUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDdkIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLDZGQUE2RjtJQUM3RixJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUM1RCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsaUZBQWlGO0lBQ2pGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNoQyxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFFRCw4RUFBOEU7SUFDOUUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ3BDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7S0FDRjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHthYnNvbHV0ZUZyb21Tb3VyY2VGaWxlLCBBYnNvbHV0ZUZzUGF0aH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtEZXBlbmRlbmN5VHJhY2tlcn0gZnJvbSAnLi4vYXBpJztcblxuLyoqXG4gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYERlcGVuZGVuY3lUcmFja2VyYCBkZXBlbmRlbmN5IGdyYXBoIEFQSS5cbiAqXG4gKiBUaGUgYEZpbGVEZXBlbmRlbmN5R3JhcGhgJ3MgcHJpbWFyeSBqb2IgaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBmaWxlIGhhcyBcImxvZ2ljYWxseVwiXG4gKiBjaGFuZ2VkLCBnaXZlbiB0aGUgc2V0IG9mIHBoeXNpY2FsIGNoYW5nZXMgKGRpcmVjdCBjaGFuZ2VzIHRvIGZpbGVzIG9uIGRpc2spLlxuICpcbiAqIEEgZmlsZSBpcyBsb2dpY2FsbHkgY2hhbmdlZCBpZiBhdCBsZWFzdCBvbmUgb2YgdGhyZWUgY29uZGl0aW9ucyBpcyBtZXQ6XG4gKlxuICogMS4gVGhlIGZpbGUgaXRzZWxmIGhhcyBwaHlzaWNhbGx5IGNoYW5nZWQuXG4gKiAyLiBPbmUgb2YgaXRzIGRlcGVuZGVuY2llcyBoYXMgcGh5c2ljYWxseSBjaGFuZ2VkLlxuICogMy4gT25lIG9mIGl0cyByZXNvdXJjZSBkZXBlbmRlbmNpZXMgaGFzIHBoeXNpY2FsbHkgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVEZXBlbmRlbmN5R3JhcGg8VCBleHRlbmRzIHtmaWxlTmFtZTogc3RyaW5nfSA9IHRzLlNvdXJjZUZpbGU+IGltcGxlbWVudHNcbiAgICBEZXBlbmRlbmN5VHJhY2tlcjxUPiB7XG4gIHByaXZhdGUgbm9kZXMgPSBuZXcgTWFwPFQsIEZpbGVOb2RlPigpO1xuXG4gIGFkZERlcGVuZGVuY3koZnJvbTogVCwgb246IFQpOiB2b2lkIHtcbiAgICB0aGlzLm5vZGVGb3IoZnJvbSkuZGVwZW5kc09uLmFkZChhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKG9uKSk7XG4gIH1cblxuICBhZGRSZXNvdXJjZURlcGVuZGVuY3koZnJvbTogVCwgcmVzb3VyY2U6IEFic29sdXRlRnNQYXRoKTogdm9pZCB7XG4gICAgdGhpcy5ub2RlRm9yKGZyb20pLnVzZXNSZXNvdXJjZXMuYWRkKHJlc291cmNlKTtcbiAgfVxuXG4gIHJlY29yZERlcGVuZGVuY3lBbmFseXNpc0ZhaWx1cmUoZmlsZTogVCk6IHZvaWQge1xuICAgIHRoaXMubm9kZUZvcihmaWxlKS5mYWlsZWRBbmFseXNpcyA9IHRydWU7XG4gIH1cblxuICBnZXRSZXNvdXJjZURlcGVuZGVuY2llcyhmcm9tOiBUKTogQWJzb2x1dGVGc1BhdGhbXSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZXMuZ2V0KGZyb20pO1xuXG4gICAgcmV0dXJuIG5vZGUgPyBbLi4ubm9kZS51c2VzUmVzb3VyY2VzXSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgY3VycmVudCBkZXBlbmRlbmN5IGdyYXBoIGZyb20gYSBwcmV2aW91cyBvbmUsIGluY29ycG9yYXRpbmcgYSBzZXQgb2YgcGh5c2ljYWxcbiAgICogY2hhbmdlcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcGVyZm9ybXMgdHdvIHRhc2tzOlxuICAgKlxuICAgKiAxLiBGb3IgZmlsZXMgd2hpY2ggaGF2ZSBub3QgbG9naWNhbGx5IGNoYW5nZWQsIHRoZWlyIGRlcGVuZGVuY2llcyBmcm9tIGBwcmV2aW91c2AgYXJlIGFkZGVkIHRvXG4gICAqICAgIGB0aGlzYCBncmFwaC5cbiAgICogMi4gRm9yIGZpbGVzIHdoaWNoIGhhdmUgbG9naWNhbGx5IGNoYW5nZWQsIHRoZXkncmUgYWRkZWQgdG8gYSBzZXQgb2YgbG9naWNhbGx5IGNoYW5nZWQgZmlsZXNcbiAgICogICAgd2hpY2ggaXMgZXZlbnR1YWxseSByZXR1cm5lZC5cbiAgICpcbiAgICogSW4gZXNzZW5jZSwgZm9yIGJ1aWxkIGBuYCwgdGhpcyBtZXRob2QgcGVyZm9ybXM6XG4gICAqXG4gICAqIEcobikgKyBMKG4pID0gRyhuIC0gMSkgKyBQKG4pXG4gICAqXG4gICAqIHdoZXJlOlxuICAgKlxuICAgKiBHKG4pID0gdGhlIGRlcGVuZGVuY3kgZ3JhcGggb2YgYnVpbGQgYG5gXG4gICAqIEwobikgPSB0aGUgbG9naWNhbGx5IGNoYW5nZWQgZmlsZXMgZnJvbSBidWlsZCBuIC0gMSB0byBidWlsZCBuLlxuICAgKiBQKG4pID0gdGhlIHBoeXNpY2FsbHkgY2hhbmdlZCBmaWxlcyBmcm9tIGJ1aWxkIG4gLSAxIHRvIGJ1aWxkIG4uXG4gICAqL1xuICB1cGRhdGVXaXRoUGh5c2ljYWxDaGFuZ2VzKFxuICAgICAgcHJldmlvdXM6IEZpbGVEZXBlbmRlbmN5R3JhcGg8VD4sIGNoYW5nZWRUc1BhdGhzOiBTZXQ8QWJzb2x1dGVGc1BhdGg+LFxuICAgICAgZGVsZXRlZFRzUGF0aHM6IFNldDxBYnNvbHV0ZUZzUGF0aD4sXG4gICAgICBjaGFuZ2VkUmVzb3VyY2VzOiBTZXQ8QWJzb2x1dGVGc1BhdGg+KTogU2V0PEFic29sdXRlRnNQYXRoPiB7XG4gICAgY29uc3QgbG9naWNhbGx5Q2hhbmdlZCA9IG5ldyBTZXQ8QWJzb2x1dGVGc1BhdGg+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHNmIG9mIHByZXZpb3VzLm5vZGVzLmtleXMoKSkge1xuICAgICAgY29uc3Qgc2ZQYXRoID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShzZik7XG4gICAgICBjb25zdCBub2RlID0gcHJldmlvdXMubm9kZUZvcihzZik7XG4gICAgICBpZiAoaXNMb2dpY2FsbHlDaGFuZ2VkKHNmLCBub2RlLCBjaGFuZ2VkVHNQYXRocywgZGVsZXRlZFRzUGF0aHMsIGNoYW5nZWRSZXNvdXJjZXMpKSB7XG4gICAgICAgIGxvZ2ljYWxseUNoYW5nZWQuYWRkKHNmUGF0aCk7XG4gICAgICB9IGVsc2UgaWYgKCFkZWxldGVkVHNQYXRocy5oYXMoc2ZQYXRoKSkge1xuICAgICAgICB0aGlzLm5vZGVzLnNldChzZiwge1xuICAgICAgICAgIGRlcGVuZHNPbjogbmV3IFNldChub2RlLmRlcGVuZHNPbiksXG4gICAgICAgICAgdXNlc1Jlc291cmNlczogbmV3IFNldChub2RlLnVzZXNSZXNvdXJjZXMpLFxuICAgICAgICAgIGZhaWxlZEFuYWx5c2lzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvZ2ljYWxseUNoYW5nZWQ7XG4gIH1cblxuICBwcml2YXRlIG5vZGVGb3Ioc2Y6IFQpOiBGaWxlTm9kZSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzLmhhcyhzZikpIHtcbiAgICAgIHRoaXMubm9kZXMuc2V0KHNmLCB7XG4gICAgICAgIGRlcGVuZHNPbjogbmV3IFNldDxBYnNvbHV0ZUZzUGF0aD4oKSxcbiAgICAgICAgdXNlc1Jlc291cmNlczogbmV3IFNldDxBYnNvbHV0ZUZzUGF0aD4oKSxcbiAgICAgICAgZmFpbGVkQW5hbHlzaXM6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5vZGVzLmdldChzZikhO1xuICB9XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgYHNmYCBoYXMgbG9naWNhbGx5IGNoYW5nZWQsIGdpdmVuIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHRoZSBzZXQgb2YgcGh5c2ljYWxseVxuICogY2hhbmdlZCBmaWxlcyBhbmQgcmVzb3VyY2VzLlxuICovXG5mdW5jdGlvbiBpc0xvZ2ljYWxseUNoYW5nZWQ8VCBleHRlbmRzIHtmaWxlTmFtZTogc3RyaW5nfT4oXG4gICAgc2Y6IFQsIG5vZGU6IEZpbGVOb2RlLCBjaGFuZ2VkVHNQYXRoczogUmVhZG9ubHlTZXQ8QWJzb2x1dGVGc1BhdGg+LFxuICAgIGRlbGV0ZWRUc1BhdGhzOiBSZWFkb25seVNldDxBYnNvbHV0ZUZzUGF0aD4sXG4gICAgY2hhbmdlZFJlc291cmNlczogUmVhZG9ubHlTZXQ8QWJzb2x1dGVGc1BhdGg+KTogYm9vbGVhbiB7XG4gIC8vIEEgZmlsZSBpcyBhc3N1bWVkIHRvIGhhdmUgbG9naWNhbGx5IGNoYW5nZWQgaWYgaXRzIGRlcGVuZGVuY2llcyBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZFxuICAvLyBhY2N1cmF0ZWx5LlxuICBpZiAobm9kZS5mYWlsZWRBbmFseXNpcykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3Qgc2ZQYXRoID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShzZik7XG5cbiAgLy8gQSBmaWxlIGlzIGxvZ2ljYWxseSBjaGFuZ2VkIGlmIGl0IGhhcyBwaHlzaWNhbGx5IGNoYW5nZWQgaXRzZWxmIChpbmNsdWRpbmcgYmVpbmcgZGVsZXRlZCkuXG4gIGlmIChjaGFuZ2VkVHNQYXRocy5oYXMoc2ZQYXRoKSB8fCBkZWxldGVkVHNQYXRocy5oYXMoc2ZQYXRoKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gQSBmaWxlIGlzIGxvZ2ljYWxseSBjaGFuZ2VkIGlmIG9uZSBvZiBpdHMgZGVwZW5kZW5jaWVzIGhhcyBwaHlzaWNhbGx5IGNoYW5nZWQuXG4gIGZvciAoY29uc3QgZGVwIG9mIG5vZGUuZGVwZW5kc09uKSB7XG4gICAgaWYgKGNoYW5nZWRUc1BhdGhzLmhhcyhkZXApIHx8IGRlbGV0ZWRUc1BhdGhzLmhhcyhkZXApKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBBIGZpbGUgaXMgbG9naWNhbGx5IGNoYW5nZWQgaWYgb25lIG9mIGl0cyByZXNvdXJjZXMgaGFzIHBoeXNpY2FsbHkgY2hhbmdlZC5cbiAgZm9yIChjb25zdCBkZXAgb2Ygbm9kZS51c2VzUmVzb3VyY2VzKSB7XG4gICAgaWYgKGNoYW5nZWRSZXNvdXJjZXMuaGFzKGRlcCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmludGVyZmFjZSBGaWxlTm9kZSB7XG4gIGRlcGVuZHNPbjogU2V0PEFic29sdXRlRnNQYXRoPjtcbiAgdXNlc1Jlc291cmNlczogU2V0PEFic29sdXRlRnNQYXRoPjtcbiAgZmFpbGVkQW5hbHlzaXM6IGJvb2xlYW47XG59XG4iXX0=