@angular/compiler-cli 12.1.1 → 12.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
  2. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  3. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  4. package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
  5. package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
  6. package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
  7. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
  8. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
  9. package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
  10. package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
  11. package/ngcc/src/host/commonjs_host.js +1 -1
  12. package/ngcc/src/host/esm2015_host.js +1 -1
  13. package/ngcc/src/host/esm5_host.js +1 -1
  14. package/ngcc/src/host/umd_host.js +1 -1
  15. package/ngcc/src/packages/build_marker.d.ts +1 -1
  16. package/ngcc/src/packages/build_marker.js +1 -1
  17. package/ngcc/src/packages/entry_point_manifest.js +1 -1
  18. package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
  19. package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
  20. package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
  21. package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
  22. package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
  23. package/package.json +2 -2
  24. package/src/ngtsc/annotations/src/component.js +1 -1
  25. package/src/ngtsc/annotations/src/directive.js +1 -1
  26. package/src/ngtsc/annotations/src/ng_module.js +1 -1
  27. package/src/ngtsc/annotations/src/pipe.js +1 -1
  28. package/src/ngtsc/core/src/compiler.js +1 -1
  29. package/src/ngtsc/cycles/src/analyzer.d.ts +7 -0
  30. package/src/ngtsc/cycles/src/analyzer.js +89 -4
  31. package/src/ngtsc/cycles/src/imports.d.ts +1 -6
  32. package/src/ngtsc/cycles/src/imports.js +5 -23
  33. package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
  34. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  35. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  36. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  37. package/src/ngtsc/incremental/src/incremental.js +30 -4
  38. package/src/ngtsc/indexer/src/template.js +1 -1
  39. package/src/ngtsc/metadata/src/dts.js +4 -5
  40. package/src/ngtsc/metadata/src/util.d.ts +2 -2
  41. package/src/ngtsc/metadata/src/util.js +9 -6
  42. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  43. package/src/ngtsc/partial_evaluator/src/interpreter.js +6 -5
  44. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  45. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  46. package/src/ngtsc/program_driver/src/api.js +3 -2
  47. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  48. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  49. package/src/ngtsc/reflection/src/typescript.js +4 -1
  50. package/src/ngtsc/transform/src/compilation.d.ts +5 -0
  51. package/src/ngtsc/transform/src/compilation.js +95 -72
  52. package/src/ngtsc/transform/src/transform.js +1 -1
  53. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  54. package/src/ngtsc/typecheck/src/context.js +11 -3
  55. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  56. package/src/ngtsc/typecheck/src/template_symbol_builder.js +21 -1
  57. package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
  58. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  59. package/src/ngtsc/typecheck/src/type_emitter.js +25 -6
  60. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  61. package/src/ngtsc/util/src/visitor.js +1 -8
  62. package/src/version.js +1 -1
  63. package/compiler-cli.externs.js +0 -0
  64. package/index.mjs +0 -20
  65. package/linker/babel/babel.externs.js +0 -0
  66. package/linker/babel/index.mjs +0 -11
  67. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  68. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  69. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  70. package/linker/babel/src/babel_plugin.mjs +0 -23
  71. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  72. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  73. package/linker/index.mjs +0 -7
  74. package/linker/linker.externs.js +0 -0
  75. package/linker/src/ast/ast_host.mjs +0 -9
  76. package/linker/src/ast/ast_value.mjs +0 -256
  77. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  78. package/linker/src/ast/utils.mjs +0 -17
  79. package/linker/src/fatal_linker_error.mjs +0 -30
  80. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  81. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  82. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  83. package/linker/src/file_linker/file_linker.mjs +0 -70
  84. package/linker/src/file_linker/get_source_file.mjs +0 -28
  85. package/linker/src/file_linker/linker_environment.mjs +0 -23
  86. package/linker/src/file_linker/linker_options.mjs +0 -16
  87. package/linker/src/file_linker/needs_linking.mjs +0 -27
  88. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  89. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  90. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  91. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  92. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  93. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  94. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  95. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  96. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  97. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  98. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  99. package/linker/src/file_linker/translator.mjs +0 -23
  100. package/linker/src/linker_import_generator.mjs +0 -28
  101. package/ngcc/index.mjs +0 -16
  102. package/ngcc/main-ivy-ngcc.mjs +0 -12
  103. package/ngcc/main-ngcc.mjs +0 -32
  104. package/ngcc/ngcc.externs.js +0 -0
  105. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  106. package/ngcc/src/analysis/migration_host.mjs +0 -80
  107. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  108. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  109. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  110. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  111. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  112. package/ngcc/src/analysis/types.mjs +0 -2
  113. package/ngcc/src/analysis/util.mjs +0 -19
  114. package/ngcc/src/command_line_options.mjs +0 -142
  115. package/ngcc/src/constants.mjs +0 -10
  116. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  117. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  118. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  119. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  120. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  121. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  122. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  123. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  124. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  125. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  126. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  127. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  128. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  129. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  130. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  131. package/ngcc/src/execution/api.mjs +0 -2
  132. package/ngcc/src/execution/cluster/api.mjs +0 -9
  133. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  134. package/ngcc/src/execution/cluster/master.mjs +0 -261
  135. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  136. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  137. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  138. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  139. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  140. package/ngcc/src/execution/tasks/api.mjs +0 -22
  141. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  142. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  143. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  144. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  145. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  146. package/ngcc/src/host/commonjs_host.mjs +0 -220
  147. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  148. package/ngcc/src/host/delegating_host.mjs +0 -140
  149. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  150. package/ngcc/src/host/esm5_host.mjs +0 -721
  151. package/ngcc/src/host/ngcc_host.mjs +0 -15
  152. package/ngcc/src/host/umd_host.mjs +0 -486
  153. package/ngcc/src/host/utils.mjs +0 -12
  154. package/ngcc/src/locking/async_locker.mjs +0 -76
  155. package/ngcc/src/locking/lock_file.mjs +0 -4
  156. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  157. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  158. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  159. package/ngcc/src/locking/sync_locker.mjs +0 -52
  160. package/ngcc/src/main.mjs +0 -134
  161. package/ngcc/src/migrations/migration.mjs +0 -2
  162. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  163. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  164. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  165. package/ngcc/src/migrations/utils.mjs +0 -117
  166. package/ngcc/src/ngcc_options.mjs +0 -119
  167. package/ngcc/src/packages/build_marker.mjs +0 -84
  168. package/ngcc/src/packages/bundle_program.mjs +0 -52
  169. package/ngcc/src/packages/configuration.mjs +0 -255
  170. package/ngcc/src/packages/entry_point.mjs +0 -239
  171. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  172. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  173. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  174. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  175. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  176. package/ngcc/src/packages/transformer.mjs +0 -140
  177. package/ngcc/src/path_mappings.mjs +0 -13
  178. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  179. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  180. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  181. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  182. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  183. package/ngcc/src/rendering/renderer.mjs +0 -170
  184. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  185. package/ngcc/src/rendering/source_maps.mjs +0 -54
  186. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  187. package/ngcc/src/rendering/utils.mjs +0 -20
  188. package/ngcc/src/utils.mjs +0 -144
  189. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  190. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  191. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  192. package/ngcc/src/writing/file_writer.mjs +0 -2
  193. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  194. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  195. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  196. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  197. package/src/diagnostics/typescript_version.mjs +0 -79
  198. package/src/extract_i18n.mjs +0 -46
  199. package/src/language_services.mjs +0 -18
  200. package/src/main.mjs +0 -185
  201. package/src/metadata/bundle_index_host.mjs +0 -107
  202. package/src/metadata/bundler.mjs +0 -556
  203. package/src/metadata/collector.mjs +0 -701
  204. package/src/metadata/evaluator.mjs +0 -643
  205. package/src/metadata/index.mjs +0 -11
  206. package/src/metadata/index_writer.mjs +0 -44
  207. package/src/metadata/schema.mjs +0 -102
  208. package/src/metadata/symbols.mjs +0 -117
  209. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  210. package/src/ngtsc/annotations/index.mjs +0 -15
  211. package/src/ngtsc/annotations/src/api.mjs +0 -9
  212. package/src/ngtsc/annotations/src/component.mjs +0 -1068
  213. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  214. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  215. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  216. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  217. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  218. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  219. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  220. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  221. package/src/ngtsc/annotations/src/util.mjs +0 -495
  222. package/src/ngtsc/core/api/index.mjs +0 -12
  223. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  224. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  225. package/src/ngtsc/core/api/src/options.mjs +0 -9
  226. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  227. package/src/ngtsc/core/api.externs.js +0 -0
  228. package/src/ngtsc/core/core.externs.js +0 -0
  229. package/src/ngtsc/core/index.mjs +0 -10
  230. package/src/ngtsc/core/src/compiler.mjs +0 -917
  231. package/src/ngtsc/core/src/config.mjs +0 -15
  232. package/src/ngtsc/core/src/host.mjs +0 -229
  233. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  234. package/src/ngtsc/cycles/index.mjs +0 -10
  235. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  236. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  237. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  238. package/src/ngtsc/diagnostics/index.mjs +0 -11
  239. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  240. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  241. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  242. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  243. package/src/ngtsc/entry_point/index.mjs +0 -12
  244. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  245. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  246. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  247. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  248. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  249. package/src/ngtsc/file_system/index.mjs +0 -13
  250. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  251. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  252. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  253. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  254. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  255. package/src/ngtsc/file_system/src/types.mjs +0 -9
  256. package/src/ngtsc/file_system/src/util.mjs +0 -22
  257. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  258. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  259. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  260. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  261. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  262. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  263. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  264. package/src/ngtsc/imports/imports.externs.js +0 -0
  265. package/src/ngtsc/imports/index.mjs +0 -14
  266. package/src/ngtsc/imports/src/alias.mjs +0 -137
  267. package/src/ngtsc/imports/src/core.mjs +0 -78
  268. package/src/ngtsc/imports/src/default.mjs +0 -135
  269. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  270. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  271. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  272. package/src/ngtsc/imports/src/references.mjs +0 -137
  273. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  274. package/src/ngtsc/incremental/api.externs.js +0 -0
  275. package/src/ngtsc/incremental/api.mjs +0 -9
  276. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  277. package/src/ngtsc/incremental/index.mjs +0 -12
  278. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  279. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  280. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  281. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  282. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  283. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  284. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  285. package/src/ngtsc/incremental/src/incremental.mjs +0 -271
  286. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  287. package/src/ngtsc/incremental/src/state.mjs +0 -17
  288. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  289. package/src/ngtsc/indexer/index.mjs +0 -11
  290. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  291. package/src/ngtsc/indexer/src/api.mjs +0 -30
  292. package/src/ngtsc/indexer/src/context.mjs +0 -25
  293. package/src/ngtsc/indexer/src/template.mjs +0 -303
  294. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  295. package/src/ngtsc/logging/index.mjs +0 -10
  296. package/src/ngtsc/logging/logging.externs.js +0 -0
  297. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  298. package/src/ngtsc/logging/src/logger.mjs +0 -15
  299. package/src/ngtsc/logging/testing/index.mjs +0 -9
  300. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  301. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  302. package/src/ngtsc/metadata/index.mjs +0 -15
  303. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  304. package/src/ngtsc/metadata/src/api.mjs +0 -13
  305. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  306. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  307. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  308. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  309. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  310. package/src/ngtsc/metadata/src/util.mjs +0 -200
  311. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  312. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  313. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  314. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -174
  315. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -94
  316. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  317. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -719
  318. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  319. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  320. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  321. package/src/ngtsc/perf/index.mjs +0 -11
  322. package/src/ngtsc/perf/perf.externs.js +0 -0
  323. package/src/ngtsc/perf/src/api.mjs +0 -278
  324. package/src/ngtsc/perf/src/clock.mjs +0 -15
  325. package/src/ngtsc/perf/src/noop.mjs +0 -21
  326. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  327. package/src/ngtsc/program.mjs +0 -271
  328. package/src/ngtsc/program_driver/index.mjs +0 -10
  329. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  330. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  331. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  332. package/src/ngtsc/reflection/index.mjs +0 -12
  333. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  334. package/src/ngtsc/reflection/src/host.mjs +0 -73
  335. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  336. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  337. package/src/ngtsc/reflection/src/util.mjs +0 -21
  338. package/src/ngtsc/resource/index.mjs +0 -9
  339. package/src/ngtsc/resource/resource.externs.js +0 -0
  340. package/src/ngtsc/resource/src/loader.mjs +0 -242
  341. package/src/ngtsc/routing/index.mjs +0 -11
  342. package/src/ngtsc/routing/routing.externs.js +0 -0
  343. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  344. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  345. package/src/ngtsc/routing/src/route.mjs +0 -51
  346. package/src/ngtsc/scope/index.mjs +0 -12
  347. package/src/ngtsc/scope/scope.externs.js +0 -0
  348. package/src/ngtsc/scope/src/api.mjs +0 -9
  349. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  350. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  351. package/src/ngtsc/scope/src/local.mjs +0 -531
  352. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  353. package/src/ngtsc/shims/api.externs.js +0 -0
  354. package/src/ngtsc/shims/api.mjs +0 -2
  355. package/src/ngtsc/shims/index.mjs +0 -14
  356. package/src/ngtsc/shims/shims.externs.js +0 -0
  357. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  358. package/src/ngtsc/shims/src/expando.mjs +0 -102
  359. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  360. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  361. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  362. package/src/ngtsc/shims/src/util.mjs +0 -26
  363. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  364. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  365. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  366. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  367. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  368. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  369. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  370. package/src/ngtsc/switch/index.mjs +0 -9
  371. package/src/ngtsc/switch/src/switch.mjs +0 -115
  372. package/src/ngtsc/switch/switch.externs.js +0 -0
  373. package/src/ngtsc/transform/index.mjs +0 -14
  374. package/src/ngtsc/transform/src/alias.mjs +0 -30
  375. package/src/ngtsc/transform/src/api.mjs +0 -63
  376. package/src/ngtsc/transform/src/compilation.mjs +0 -514
  377. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  378. package/src/ngtsc/transform/src/trait.mjs +0 -95
  379. package/src/ngtsc/transform/src/transform.mjs +0 -298
  380. package/src/ngtsc/transform/src/utils.mjs +0 -57
  381. package/src/ngtsc/transform/transform.externs.js +0 -0
  382. package/src/ngtsc/translator/index.mjs +0 -14
  383. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  384. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  385. package/src/ngtsc/translator/src/context.mjs +0 -24
  386. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  387. package/src/ngtsc/translator/src/translator.mjs +0 -317
  388. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  389. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  390. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  391. package/src/ngtsc/translator/translator.externs.js +0 -0
  392. package/src/ngtsc/tsc_plugin.mjs +0 -98
  393. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  394. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  395. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  396. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  397. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  398. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  399. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  400. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  401. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  402. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  403. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  404. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  405. package/src/ngtsc/typecheck/index.mjs +0 -12
  406. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  407. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  408. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  409. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  410. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  411. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  412. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  413. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  414. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  415. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  416. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  417. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  418. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  419. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  420. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -485
  421. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  422. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  423. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  424. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  425. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -127
  426. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -93
  427. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  428. package/src/ngtsc/util/src/path.mjs +0 -18
  429. package/src/ngtsc/util/src/typescript.mjs +0 -143
  430. package/src/ngtsc/util/src/visitor.mjs +0 -107
  431. package/src/ngtsc/util/util.externs.js +0 -0
  432. package/src/ngtsc/xi18n/index.mjs +0 -9
  433. package/src/ngtsc/xi18n/src/context.mjs +0 -9
  434. package/src/ngtsc/xi18n/xi18n.externs.js +0 -0
  435. package/src/perform_compile.mjs +0 -275
  436. package/src/perform_watch.mjs +0 -247
  437. package/src/tooling.mjs +0 -32
  438. package/src/transformers/api.mjs +0 -27
  439. package/src/transformers/compiler_host.mjs +0 -593
  440. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  441. package/src/transformers/entry_points.mjs +0 -10
  442. package/src/transformers/i18n.mjs +0 -59
  443. package/src/transformers/inline_resources.mjs +0 -269
  444. package/src/transformers/lower_expressions.mjs +0 -336
  445. package/src/transformers/metadata_cache.mjs +0 -53
  446. package/src/transformers/metadata_reader.mjs +0 -104
  447. package/src/transformers/node_emitter.mjs +0 -606
  448. package/src/transformers/node_emitter_transform.mjs +0 -78
  449. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  450. package/src/transformers/program.mjs +0 -887
  451. package/src/transformers/r3_metadata_transform.mjs +0 -46
  452. package/src/transformers/r3_transform.mjs +0 -29
  453. package/src/transformers/util.mjs +0 -89
  454. package/src/typescript_support.mjs +0 -57
  455. package/src/version.mjs +0 -15
@@ -1,200 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as ts from 'typescript';
9
- import { Reference } from '../../imports';
10
- import { ClassMemberKind, isNamedClassDeclaration, reflectTypeEntityToDeclaration } from '../../reflection';
11
- import { nodeDebugInfo } from '../../util/src/typescript';
12
- export function extractReferencesFromType(checker, def, ngModuleImportedFrom, resolutionContext) {
13
- if (!ts.isTupleTypeNode(def)) {
14
- return [];
15
- }
16
- return def.elements.map(element => {
17
- if (!ts.isTypeQueryNode(element)) {
18
- throw new Error(`Expected TypeQueryNode: ${nodeDebugInfo(element)}`);
19
- }
20
- const type = element.exprName;
21
- const { node, from } = reflectTypeEntityToDeclaration(type, checker);
22
- if (!isNamedClassDeclaration(node)) {
23
- throw new Error(`Expected named ClassDeclaration: ${nodeDebugInfo(node)}`);
24
- }
25
- const specifier = (from !== null && !from.startsWith('.') ? from : ngModuleImportedFrom);
26
- if (specifier !== null) {
27
- return new Reference(node, { specifier, resolutionContext });
28
- }
29
- else {
30
- return new Reference(node);
31
- }
32
- });
33
- }
34
- export function readStringType(type) {
35
- if (!ts.isLiteralTypeNode(type) || !ts.isStringLiteral(type.literal)) {
36
- return null;
37
- }
38
- return type.literal.text;
39
- }
40
- export function readStringMapType(type) {
41
- if (!ts.isTypeLiteralNode(type)) {
42
- return {};
43
- }
44
- const obj = {};
45
- type.members.forEach(member => {
46
- if (!ts.isPropertySignature(member) || member.type === undefined || member.name === undefined ||
47
- !ts.isStringLiteral(member.name)) {
48
- return;
49
- }
50
- const value = readStringType(member.type);
51
- if (value === null) {
52
- return null;
53
- }
54
- obj[member.name.text] = value;
55
- });
56
- return obj;
57
- }
58
- export function readStringArrayType(type) {
59
- if (!ts.isTupleTypeNode(type)) {
60
- return [];
61
- }
62
- const res = [];
63
- type.elements.forEach(el => {
64
- if (!ts.isLiteralTypeNode(el) || !ts.isStringLiteral(el.literal)) {
65
- return;
66
- }
67
- res.push(el.literal.text);
68
- });
69
- return res;
70
- }
71
- /**
72
- * Inspects the class' members and extracts the metadata that is used when type-checking templates
73
- * that use the directive. This metadata does not contain information from a base class, if any,
74
- * making this metadata invariant to changes of inherited classes.
75
- */
76
- export function extractDirectiveTypeCheckMeta(node, inputs, reflector) {
77
- const members = reflector.getMembersOfClass(node);
78
- const staticMembers = members.filter(member => member.isStatic);
79
- const ngTemplateGuards = staticMembers.map(extractTemplateGuard)
80
- .filter((guard) => guard !== null);
81
- const hasNgTemplateContextGuard = staticMembers.some(member => member.kind === ClassMemberKind.Method && member.name === 'ngTemplateContextGuard');
82
- const coercedInputFields = new Set(staticMembers.map(extractCoercedInput)
83
- .filter((inputName) => inputName !== null));
84
- const restrictedInputFields = new Set();
85
- const stringLiteralInputFields = new Set();
86
- const undeclaredInputFields = new Set();
87
- for (const classPropertyName of inputs.classPropertyNames) {
88
- const field = members.find(member => member.name === classPropertyName);
89
- if (field === undefined || field.node === null) {
90
- undeclaredInputFields.add(classPropertyName);
91
- continue;
92
- }
93
- if (isRestricted(field.node)) {
94
- restrictedInputFields.add(classPropertyName);
95
- }
96
- if (field.nameNode !== null && ts.isStringLiteral(field.nameNode)) {
97
- stringLiteralInputFields.add(classPropertyName);
98
- }
99
- }
100
- const arity = reflector.getGenericArityOfClass(node);
101
- return {
102
- hasNgTemplateContextGuard,
103
- ngTemplateGuards,
104
- coercedInputFields,
105
- restrictedInputFields,
106
- stringLiteralInputFields,
107
- undeclaredInputFields,
108
- isGeneric: arity !== null && arity > 0,
109
- };
110
- }
111
- function isRestricted(node) {
112
- if (node.modifiers === undefined) {
113
- return false;
114
- }
115
- return node.modifiers.some(modifier => modifier.kind === ts.SyntaxKind.PrivateKeyword ||
116
- modifier.kind === ts.SyntaxKind.ProtectedKeyword ||
117
- modifier.kind === ts.SyntaxKind.ReadonlyKeyword);
118
- }
119
- function extractTemplateGuard(member) {
120
- if (!member.name.startsWith('ngTemplateGuard_')) {
121
- return null;
122
- }
123
- const inputName = afterUnderscore(member.name);
124
- if (member.kind === ClassMemberKind.Property) {
125
- let type = null;
126
- if (member.type !== null && ts.isLiteralTypeNode(member.type) &&
127
- ts.isStringLiteral(member.type.literal)) {
128
- type = member.type.literal.text;
129
- }
130
- // Only property members with string literal type 'binding' are considered as template guard.
131
- if (type !== 'binding') {
132
- return null;
133
- }
134
- return { inputName, type };
135
- }
136
- else if (member.kind === ClassMemberKind.Method) {
137
- return { inputName, type: 'invocation' };
138
- }
139
- else {
140
- return null;
141
- }
142
- }
143
- function extractCoercedInput(member) {
144
- if (member.kind !== ClassMemberKind.Property || !member.name.startsWith('ngAcceptInputType_')) {
145
- return null;
146
- }
147
- return afterUnderscore(member.name);
148
- }
149
- /**
150
- * A `MetadataReader` that reads from an ordered set of child readers until it obtains the requested
151
- * metadata.
152
- *
153
- * This is used to combine `MetadataReader`s that read from different sources (e.g. from a registry
154
- * and from .d.ts files).
155
- */
156
- export class CompoundMetadataReader {
157
- constructor(readers) {
158
- this.readers = readers;
159
- }
160
- getDirectiveMetadata(node) {
161
- for (const reader of this.readers) {
162
- const meta = reader.getDirectiveMetadata(node);
163
- if (meta !== null) {
164
- return meta;
165
- }
166
- }
167
- return null;
168
- }
169
- getNgModuleMetadata(node) {
170
- for (const reader of this.readers) {
171
- const meta = reader.getNgModuleMetadata(node);
172
- if (meta !== null) {
173
- return meta;
174
- }
175
- }
176
- return null;
177
- }
178
- getPipeMetadata(node) {
179
- for (const reader of this.readers) {
180
- const meta = reader.getPipeMetadata(node);
181
- if (meta !== null) {
182
- return meta;
183
- }
184
- }
185
- return null;
186
- }
187
- }
188
- function afterUnderscore(str) {
189
- const pos = str.indexOf('_');
190
- if (pos === -1) {
191
- throw new Error(`Expected '${str}' to contain '_'`);
192
- }
193
- return str.substr(pos + 1);
194
- }
195
- /** Returns whether a class declaration has the necessary class fields to make it injectable. */
196
- export function hasInjectableFields(clazz, host) {
197
- const members = host.getMembersOfClass(clazz);
198
- return members.some(({ isStatic, name }) => isStatic && (name === 'ɵprov' || name === 'ɵfac'));
199
- }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvbWV0YWRhdGEvc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQWdDLGVBQWUsRUFBRSx1QkFBdUIsRUFBa0IsOEJBQThCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6SixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFLeEQsTUFBTSxVQUFVLHlCQUF5QixDQUNyQyxPQUF1QixFQUFFLEdBQWdCLEVBQUUsb0JBQWlDLEVBQzVFLGlCQUF5QjtJQUMzQixJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM1QixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNoQyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUM5QixNQUFNLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxHQUFHLDhCQUE4QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM1RTtRQUNELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RixJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxPQUFPLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFpQjtJQUM5QyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDcEUsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFpQjtJQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQy9CLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxNQUFNLEdBQUcsR0FBNEIsRUFBRSxDQUFDO0lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzVCLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ3pGLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsT0FBTztTQUNSO1FBQ0QsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFpQjtJQUNuRCxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM3QixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoRSxPQUFPO1NBQ1I7UUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUN6QyxJQUFzQixFQUFFLE1BQTRCLEVBQ3BELFNBQXlCO0lBQzNCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztTQUNsQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQThCLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDNUYsTUFBTSx5QkFBeUIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUNoRCxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLENBQUM7SUFFbEcsTUFBTSxrQkFBa0IsR0FDcEIsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztTQUNqQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQWtDLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUU1RixNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO0lBQzNELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFDOUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUUzRCxLQUFLLE1BQU0saUJBQWlCLElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFO1FBQ3pELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLENBQUM7UUFDeEUsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQzlDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdDLFNBQVM7U0FDVjtRQUNELElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixxQkFBcUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDakUsd0JBQXdCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDakQ7S0FDRjtJQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVyRCxPQUFPO1FBQ0wseUJBQXlCO1FBQ3pCLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIscUJBQXFCO1FBQ3JCLHdCQUF3QjtRQUN4QixxQkFBcUI7UUFDckIsU0FBUyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUM7S0FDdkMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFhO0lBQ2pDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7UUFDaEMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3RCLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWM7UUFDdEQsUUFBUSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtRQUNoRCxRQUFRLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsTUFBbUI7SUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7UUFDL0MsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxRQUFRLEVBQUU7UUFDNUMsSUFBSSxJQUFJLEdBQWdCLElBQUksQ0FBQztRQUM3QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3pELEVBQUUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ2pDO1FBRUQsNkZBQTZGO1FBQzdGLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztLQUMxQjtTQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsTUFBTSxFQUFFO1FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBQyxDQUFDO0tBQ3hDO1NBQU07UUFDTCxPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsTUFBbUI7SUFDOUMsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1FBQzdGLE9BQU8sSUFBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0IsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBRyxDQUFDO0lBRWpELG9CQUFvQixDQUFDLElBQWlEO1FBQ3BFLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0MsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFpRDtRQUNuRSxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQWlEO1FBQy9ELEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLGVBQWUsQ0FBQyxHQUFXO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsZ0dBQWdHO0FBQ2hHLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUF1QixFQUFFLElBQW9CO0lBQy9FLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIENsYXNzTWVtYmVyLCBDbGFzc01lbWJlcktpbmQsIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdCwgcmVmbGVjdFR5cGVFbnRpdHlUb0RlY2xhcmF0aW9ufSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcbmltcG9ydCB7bm9kZURlYnVnSW5mb30gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7RGlyZWN0aXZlTWV0YSwgRGlyZWN0aXZlVHlwZUNoZWNrTWV0YSwgTWV0YWRhdGFSZWFkZXIsIE5nTW9kdWxlTWV0YSwgUGlwZU1ldGEsIFRlbXBsYXRlR3VhcmRNZXRhfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge0NsYXNzUHJvcGVydHlNYXBwaW5nLCBDbGFzc1Byb3BlcnR5TmFtZX0gZnJvbSAnLi9wcm9wZXJ0eV9tYXBwaW5nJztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSZWZlcmVuY2VzRnJvbVR5cGUoXG4gICAgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIGRlZjogdHMuVHlwZU5vZGUsIG5nTW9kdWxlSW1wb3J0ZWRGcm9tOiBzdHJpbmd8bnVsbCxcbiAgICByZXNvbHV0aW9uQ29udGV4dDogc3RyaW5nKTogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+W10ge1xuICBpZiAoIXRzLmlzVHVwbGVUeXBlTm9kZShkZWYpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIGRlZi5lbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgaWYgKCF0cy5pc1R5cGVRdWVyeU5vZGUoZWxlbWVudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgVHlwZVF1ZXJ5Tm9kZTogJHtub2RlRGVidWdJbmZvKGVsZW1lbnQpfWApO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gZWxlbWVudC5leHByTmFtZTtcbiAgICBjb25zdCB7bm9kZSwgZnJvbX0gPSByZWZsZWN0VHlwZUVudGl0eVRvRGVjbGFyYXRpb24odHlwZSwgY2hlY2tlcik7XG4gICAgaWYgKCFpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBuYW1lZCBDbGFzc0RlY2xhcmF0aW9uOiAke25vZGVEZWJ1Z0luZm8obm9kZSl9YCk7XG4gICAgfVxuICAgIGNvbnN0IHNwZWNpZmllciA9IChmcm9tICE9PSBudWxsICYmICFmcm9tLnN0YXJ0c1dpdGgoJy4nKSA/IGZyb20gOiBuZ01vZHVsZUltcG9ydGVkRnJvbSk7XG4gICAgaWYgKHNwZWNpZmllciAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5ldyBSZWZlcmVuY2Uobm9kZSwge3NwZWNpZmllciwgcmVzb2x1dGlvbkNvbnRleHR9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTdHJpbmdUeXBlKHR5cGU6IHRzLlR5cGVOb2RlKTogc3RyaW5nfG51bGwge1xuICBpZiAoIXRzLmlzTGl0ZXJhbFR5cGVOb2RlKHR5cGUpIHx8ICF0cy5pc1N0cmluZ0xpdGVyYWwodHlwZS5saXRlcmFsKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiB0eXBlLmxpdGVyYWwudGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTdHJpbmdNYXBUeXBlKHR5cGU6IHRzLlR5cGVOb2RlKToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICBpZiAoIXRzLmlzVHlwZUxpdGVyYWxOb2RlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0IG9iajoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgdHlwZS5tZW1iZXJzLmZvckVhY2gobWVtYmVyID0+IHtcbiAgICBpZiAoIXRzLmlzUHJvcGVydHlTaWduYXR1cmUobWVtYmVyKSB8fCBtZW1iZXIudHlwZSA9PT0gdW5kZWZpbmVkIHx8IG1lbWJlci5uYW1lID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgIXRzLmlzU3RyaW5nTGl0ZXJhbChtZW1iZXIubmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSByZWFkU3RyaW5nVHlwZShtZW1iZXIudHlwZSk7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgb2JqW21lbWJlci5uYW1lLnRleHRdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0cmluZ0FycmF5VHlwZSh0eXBlOiB0cy5UeXBlTm9kZSk6IHN0cmluZ1tdIHtcbiAgaWYgKCF0cy5pc1R1cGxlVHlwZU5vZGUodHlwZSkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgcmVzOiBzdHJpbmdbXSA9IFtdO1xuICB0eXBlLmVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgIGlmICghdHMuaXNMaXRlcmFsVHlwZU5vZGUoZWwpIHx8ICF0cy5pc1N0cmluZ0xpdGVyYWwoZWwubGl0ZXJhbCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVzLnB1c2goZWwubGl0ZXJhbC50ZXh0KTtcbiAgfSk7XG4gIHJldHVybiByZXM7XG59XG5cbi8qKlxuICogSW5zcGVjdHMgdGhlIGNsYXNzJyBtZW1iZXJzIGFuZCBleHRyYWN0cyB0aGUgbWV0YWRhdGEgdGhhdCBpcyB1c2VkIHdoZW4gdHlwZS1jaGVja2luZyB0ZW1wbGF0ZXNcbiAqIHRoYXQgdXNlIHRoZSBkaXJlY3RpdmUuIFRoaXMgbWV0YWRhdGEgZG9lcyBub3QgY29udGFpbiBpbmZvcm1hdGlvbiBmcm9tIGEgYmFzZSBjbGFzcywgaWYgYW55LFxuICogbWFraW5nIHRoaXMgbWV0YWRhdGEgaW52YXJpYW50IHRvIGNoYW5nZXMgb2YgaW5oZXJpdGVkIGNsYXNzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGlyZWN0aXZlVHlwZUNoZWNrTWV0YShcbiAgICBub2RlOiBDbGFzc0RlY2xhcmF0aW9uLCBpbnB1dHM6IENsYXNzUHJvcGVydHlNYXBwaW5nLFxuICAgIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpOiBEaXJlY3RpdmVUeXBlQ2hlY2tNZXRhIHtcbiAgY29uc3QgbWVtYmVycyA9IHJlZmxlY3Rvci5nZXRNZW1iZXJzT2ZDbGFzcyhub2RlKTtcbiAgY29uc3Qgc3RhdGljTWVtYmVycyA9IG1lbWJlcnMuZmlsdGVyKG1lbWJlciA9PiBtZW1iZXIuaXNTdGF0aWMpO1xuICBjb25zdCBuZ1RlbXBsYXRlR3VhcmRzID0gc3RhdGljTWVtYmVycy5tYXAoZXh0cmFjdFRlbXBsYXRlR3VhcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZ3VhcmQpOiBndWFyZCBpcyBUZW1wbGF0ZUd1YXJkTWV0YSA9PiBndWFyZCAhPT0gbnVsbCk7XG4gIGNvbnN0IGhhc05nVGVtcGxhdGVDb250ZXh0R3VhcmQgPSBzdGF0aWNNZW1iZXJzLnNvbWUoXG4gICAgICBtZW1iZXIgPT4gbWVtYmVyLmtpbmQgPT09IENsYXNzTWVtYmVyS2luZC5NZXRob2QgJiYgbWVtYmVyLm5hbWUgPT09ICduZ1RlbXBsYXRlQ29udGV4dEd1YXJkJyk7XG5cbiAgY29uc3QgY29lcmNlZElucHV0RmllbGRzID1cbiAgICAgIG5ldyBTZXQoc3RhdGljTWVtYmVycy5tYXAoZXh0cmFjdENvZXJjZWRJbnB1dClcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGlucHV0TmFtZSk6IGlucHV0TmFtZSBpcyBDbGFzc1Byb3BlcnR5TmFtZSA9PiBpbnB1dE5hbWUgIT09IG51bGwpKTtcblxuICBjb25zdCByZXN0cmljdGVkSW5wdXRGaWVsZHMgPSBuZXcgU2V0PENsYXNzUHJvcGVydHlOYW1lPigpO1xuICBjb25zdCBzdHJpbmdMaXRlcmFsSW5wdXRGaWVsZHMgPSBuZXcgU2V0PENsYXNzUHJvcGVydHlOYW1lPigpO1xuICBjb25zdCB1bmRlY2xhcmVkSW5wdXRGaWVsZHMgPSBuZXcgU2V0PENsYXNzUHJvcGVydHlOYW1lPigpO1xuXG4gIGZvciAoY29uc3QgY2xhc3NQcm9wZXJ0eU5hbWUgb2YgaW5wdXRzLmNsYXNzUHJvcGVydHlOYW1lcykge1xuICAgIGNvbnN0IGZpZWxkID0gbWVtYmVycy5maW5kKG1lbWJlciA9PiBtZW1iZXIubmFtZSA9PT0gY2xhc3NQcm9wZXJ0eU5hbWUpO1xuICAgIGlmIChmaWVsZCA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkLm5vZGUgPT09IG51bGwpIHtcbiAgICAgIHVuZGVjbGFyZWRJbnB1dEZpZWxkcy5hZGQoY2xhc3NQcm9wZXJ0eU5hbWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChpc1Jlc3RyaWN0ZWQoZmllbGQubm9kZSkpIHtcbiAgICAgIHJlc3RyaWN0ZWRJbnB1dEZpZWxkcy5hZGQoY2xhc3NQcm9wZXJ0eU5hbWUpO1xuICAgIH1cbiAgICBpZiAoZmllbGQubmFtZU5vZGUgIT09IG51bGwgJiYgdHMuaXNTdHJpbmdMaXRlcmFsKGZpZWxkLm5hbWVOb2RlKSkge1xuICAgICAgc3RyaW5nTGl0ZXJhbElucHV0RmllbGRzLmFkZChjbGFzc1Byb3BlcnR5TmFtZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXJpdHkgPSByZWZsZWN0b3IuZ2V0R2VuZXJpY0FyaXR5T2ZDbGFzcyhub2RlKTtcblxuICByZXR1cm4ge1xuICAgIGhhc05nVGVtcGxhdGVDb250ZXh0R3VhcmQsXG4gICAgbmdUZW1wbGF0ZUd1YXJkcyxcbiAgICBjb2VyY2VkSW5wdXRGaWVsZHMsXG4gICAgcmVzdHJpY3RlZElucHV0RmllbGRzLFxuICAgIHN0cmluZ0xpdGVyYWxJbnB1dEZpZWxkcyxcbiAgICB1bmRlY2xhcmVkSW5wdXRGaWVsZHMsXG4gICAgaXNHZW5lcmljOiBhcml0eSAhPT0gbnVsbCAmJiBhcml0eSA+IDAsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzUmVzdHJpY3RlZChub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gIGlmIChub2RlLm1vZGlmaWVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIG5vZGUubW9kaWZpZXJzLnNvbWUoXG4gICAgICBtb2RpZmllciA9PiBtb2RpZmllci5raW5kID09PSB0cy5TeW50YXhLaW5kLlByaXZhdGVLZXl3b3JkIHx8XG4gICAgICAgICAgbW9kaWZpZXIua2luZCA9PT0gdHMuU3ludGF4S2luZC5Qcm90ZWN0ZWRLZXl3b3JkIHx8XG4gICAgICAgICAgbW9kaWZpZXIua2luZCA9PT0gdHMuU3ludGF4S2luZC5SZWFkb25seUtleXdvcmQpO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VGVtcGxhdGVHdWFyZChtZW1iZXI6IENsYXNzTWVtYmVyKTogVGVtcGxhdGVHdWFyZE1ldGF8bnVsbCB7XG4gIGlmICghbWVtYmVyLm5hbWUuc3RhcnRzV2l0aCgnbmdUZW1wbGF0ZUd1YXJkXycpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaW5wdXROYW1lID0gYWZ0ZXJVbmRlcnNjb3JlKG1lbWJlci5uYW1lKTtcbiAgaWYgKG1lbWJlci5raW5kID09PSBDbGFzc01lbWJlcktpbmQuUHJvcGVydHkpIHtcbiAgICBsZXQgdHlwZTogc3RyaW5nfG51bGwgPSBudWxsO1xuICAgIGlmIChtZW1iZXIudHlwZSAhPT0gbnVsbCAmJiB0cy5pc0xpdGVyYWxUeXBlTm9kZShtZW1iZXIudHlwZSkgJiZcbiAgICAgICAgdHMuaXNTdHJpbmdMaXRlcmFsKG1lbWJlci50eXBlLmxpdGVyYWwpKSB7XG4gICAgICB0eXBlID0gbWVtYmVyLnR5cGUubGl0ZXJhbC50ZXh0O1xuICAgIH1cblxuICAgIC8vIE9ubHkgcHJvcGVydHkgbWVtYmVycyB3aXRoIHN0cmluZyBsaXRlcmFsIHR5cGUgJ2JpbmRpbmcnIGFyZSBjb25zaWRlcmVkIGFzIHRlbXBsYXRlIGd1YXJkLlxuICAgIGlmICh0eXBlICE9PSAnYmluZGluZycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4ge2lucHV0TmFtZSwgdHlwZX07XG4gIH0gZWxzZSBpZiAobWVtYmVyLmtpbmQgPT09IENsYXNzTWVtYmVyS2luZC5NZXRob2QpIHtcbiAgICByZXR1cm4ge2lucHV0TmFtZSwgdHlwZTogJ2ludm9jYXRpb24nfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0Q29lcmNlZElucHV0KG1lbWJlcjogQ2xhc3NNZW1iZXIpOiBzdHJpbmd8bnVsbCB7XG4gIGlmIChtZW1iZXIua2luZCAhPT0gQ2xhc3NNZW1iZXJLaW5kLlByb3BlcnR5IHx8ICFtZW1iZXIubmFtZS5zdGFydHNXaXRoKCduZ0FjY2VwdElucHV0VHlwZV8nKSkge1xuICAgIHJldHVybiBudWxsITtcbiAgfVxuICByZXR1cm4gYWZ0ZXJVbmRlcnNjb3JlKG1lbWJlci5uYW1lKTtcbn1cblxuLyoqXG4gKiBBIGBNZXRhZGF0YVJlYWRlcmAgdGhhdCByZWFkcyBmcm9tIGFuIG9yZGVyZWQgc2V0IG9mIGNoaWxkIHJlYWRlcnMgdW50aWwgaXQgb2J0YWlucyB0aGUgcmVxdWVzdGVkXG4gKiBtZXRhZGF0YS5cbiAqXG4gKiBUaGlzIGlzIHVzZWQgdG8gY29tYmluZSBgTWV0YWRhdGFSZWFkZXJgcyB0aGF0IHJlYWQgZnJvbSBkaWZmZXJlbnQgc291cmNlcyAoZS5nLiBmcm9tIGEgcmVnaXN0cnlcbiAqIGFuZCBmcm9tIC5kLnRzIGZpbGVzKS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvdW5kTWV0YWRhdGFSZWFkZXIgaW1wbGVtZW50cyBNZXRhZGF0YVJlYWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZGVyczogTWV0YWRhdGFSZWFkZXJbXSkge31cblxuICBnZXREaXJlY3RpdmVNZXRhZGF0YShub2RlOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbjx0cy5EZWNsYXJhdGlvbj4+KTogRGlyZWN0aXZlTWV0YXxudWxsIHtcbiAgICBmb3IgKGNvbnN0IHJlYWRlciBvZiB0aGlzLnJlYWRlcnMpIHtcbiAgICAgIGNvbnN0IG1ldGEgPSByZWFkZXIuZ2V0RGlyZWN0aXZlTWV0YWRhdGEobm9kZSk7XG4gICAgICBpZiAobWV0YSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbWV0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXROZ01vZHVsZU1ldGFkYXRhKG5vZGU6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPHRzLkRlY2xhcmF0aW9uPj4pOiBOZ01vZHVsZU1ldGF8bnVsbCB7XG4gICAgZm9yIChjb25zdCByZWFkZXIgb2YgdGhpcy5yZWFkZXJzKSB7XG4gICAgICBjb25zdCBtZXRhID0gcmVhZGVyLmdldE5nTW9kdWxlTWV0YWRhdGEobm9kZSk7XG4gICAgICBpZiAobWV0YSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbWV0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZ2V0UGlwZU1ldGFkYXRhKG5vZGU6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPHRzLkRlY2xhcmF0aW9uPj4pOiBQaXBlTWV0YXxudWxsIHtcbiAgICBmb3IgKGNvbnN0IHJlYWRlciBvZiB0aGlzLnJlYWRlcnMpIHtcbiAgICAgIGNvbnN0IG1ldGEgPSByZWFkZXIuZ2V0UGlwZU1ldGFkYXRhKG5vZGUpO1xuICAgICAgaWYgKG1ldGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG1ldGE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFmdGVyVW5kZXJzY29yZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBvcyA9IHN0ci5pbmRleE9mKCdfJyk7XG4gIGlmIChwb3MgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAnJHtzdHJ9JyB0byBjb250YWluICdfJ2ApO1xuICB9XG4gIHJldHVybiBzdHIuc3Vic3RyKHBvcyArIDEpO1xufVxuXG4vKiogUmV0dXJucyB3aGV0aGVyIGEgY2xhc3MgZGVjbGFyYXRpb24gaGFzIHRoZSBuZWNlc3NhcnkgY2xhc3MgZmllbGRzIHRvIG1ha2UgaXQgaW5qZWN0YWJsZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbmplY3RhYmxlRmllbGRzKGNsYXp6OiBDbGFzc0RlY2xhcmF0aW9uLCBob3N0OiBSZWZsZWN0aW9uSG9zdCk6IGJvb2xlYW4ge1xuICBjb25zdCBtZW1iZXJzID0gaG9zdC5nZXRNZW1iZXJzT2ZDbGFzcyhjbGF6eik7XG4gIHJldHVybiBtZW1iZXJzLnNvbWUoKHtpc1N0YXRpYywgbmFtZX0pID0+IGlzU3RhdGljICYmIChuYW1lID09PSAnybVwcm92JyB8fCBuYW1lID09PSAnybVmYWMnKSk7XG59XG4iXX0=
@@ -1,12 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { describeResolvedType, traceDynamicValue } from './src/diagnostics';
9
- export { DynamicValue } from './src/dynamic';
10
- export { PartialEvaluator } from './src/interface';
11
- export { EnumValue, KnownFn } from './src/result';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3BhcnRpYWxfZXZhbHVhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUEwQixnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFzRCxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQge2Rlc2NyaWJlUmVzb2x2ZWRUeXBlLCB0cmFjZUR5bmFtaWNWYWx1ZX0gZnJvbSAnLi9zcmMvZGlhZ25vc3RpY3MnO1xuZXhwb3J0IHtEeW5hbWljVmFsdWV9IGZyb20gJy4vc3JjL2R5bmFtaWMnO1xuZXhwb3J0IHtGb3JlaWduRnVuY3Rpb25SZXNvbHZlciwgUGFydGlhbEV2YWx1YXRvcn0gZnJvbSAnLi9zcmMvaW50ZXJmYWNlJztcbmV4cG9ydCB7RW51bVZhbHVlLCBLbm93bkZuLCBSZXNvbHZlZFZhbHVlLCBSZXNvbHZlZFZhbHVlQXJyYXksIFJlc29sdmVkVmFsdWVNYXB9IGZyb20gJy4vc3JjL3Jlc3VsdCc7XG4iXX0=
@@ -1,65 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { DynamicValue } from './dynamic';
9
- import { KnownFn } from './result';
10
- export class ArraySliceBuiltinFn extends KnownFn {
11
- constructor(lhs) {
12
- super();
13
- this.lhs = lhs;
14
- }
15
- evaluate(node, args) {
16
- if (args.length === 0) {
17
- return this.lhs;
18
- }
19
- else {
20
- return DynamicValue.fromUnknown(node);
21
- }
22
- }
23
- }
24
- export class ArrayConcatBuiltinFn extends KnownFn {
25
- constructor(lhs) {
26
- super();
27
- this.lhs = lhs;
28
- }
29
- evaluate(node, args) {
30
- const result = [...this.lhs];
31
- for (const arg of args) {
32
- if (arg instanceof DynamicValue) {
33
- result.push(DynamicValue.fromDynamicInput(node, arg));
34
- }
35
- else if (Array.isArray(arg)) {
36
- result.push(...arg);
37
- }
38
- else {
39
- result.push(arg);
40
- }
41
- }
42
- return result;
43
- }
44
- }
45
- export class ObjectAssignBuiltinFn extends KnownFn {
46
- evaluate(node, args) {
47
- if (args.length === 0) {
48
- return DynamicValue.fromUnsupportedSyntax(node);
49
- }
50
- for (const arg of args) {
51
- if (arg instanceof DynamicValue) {
52
- return DynamicValue.fromDynamicInput(node, arg);
53
- }
54
- else if (!(arg instanceof Map)) {
55
- return DynamicValue.fromUnsupportedSyntax(node);
56
- }
57
- }
58
- const [target, ...sources] = args;
59
- for (const source of sources) {
60
- source.forEach((value, key) => target.set(key, value));
61
- }
62
- return target;
63
- }
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcGFydGlhbF9ldmFsdWF0b3Ivc3JjL2J1aWx0aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBSUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUMsT0FBTyxFQUFvQyxNQUFNLFVBQVUsQ0FBQztBQUVwRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsT0FBTztJQUM5QyxZQUFvQixHQUF1QjtRQUN6QyxLQUFLLEVBQUUsQ0FBQztRQURVLFFBQUcsR0FBSCxHQUFHLENBQW9CO0lBRTNDLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBdUIsRUFBRSxJQUF3QjtRQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNqQjthQUFNO1lBQ0wsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLE9BQU87SUFDL0MsWUFBb0IsR0FBdUI7UUFDekMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFvQjtJQUUzQyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQXVCLEVBQUUsSUFBd0I7UUFDeEQsTUFBTSxNQUFNLEdBQXVCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxHQUFHLFlBQVksWUFBWSxFQUFFO2dCQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN2RDtpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNyQjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsT0FBTztJQUNoRCxRQUFRLENBQUMsSUFBdUIsRUFBRSxJQUF3QjtRQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sWUFBWSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxHQUFHLFlBQVksWUFBWSxFQUFFO2dCQUMvQixPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDakQ7aUJBQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqRDtTQUNGO1FBQ0QsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQW9DLENBQUM7UUFDbEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7WUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7RHluYW1pY1ZhbHVlfSBmcm9tICcuL2R5bmFtaWMnO1xuaW1wb3J0IHtLbm93bkZuLCBSZXNvbHZlZFZhbHVlLCBSZXNvbHZlZFZhbHVlQXJyYXl9IGZyb20gJy4vcmVzdWx0JztcblxuZXhwb3J0IGNsYXNzIEFycmF5U2xpY2VCdWlsdGluRm4gZXh0ZW5kcyBLbm93bkZuIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsaHM6IFJlc29sdmVkVmFsdWVBcnJheSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBldmFsdWF0ZShub2RlOiB0cy5DYWxsRXhwcmVzc2lvbiwgYXJnczogUmVzb2x2ZWRWYWx1ZUFycmF5KTogUmVzb2x2ZWRWYWx1ZSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5saHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBEeW5hbWljVmFsdWUuZnJvbVVua25vd24obm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheUNvbmNhdEJ1aWx0aW5GbiBleHRlbmRzIEtub3duRm4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxoczogUmVzb2x2ZWRWYWx1ZUFycmF5KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uLCBhcmdzOiBSZXNvbHZlZFZhbHVlQXJyYXkpOiBSZXNvbHZlZFZhbHVlIHtcbiAgICBjb25zdCByZXN1bHQ6IFJlc29sdmVkVmFsdWVBcnJheSA9IFsuLi50aGlzLmxoc107XG4gICAgZm9yIChjb25zdCBhcmcgb2YgYXJncykge1xuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIER5bmFtaWNWYWx1ZSkge1xuICAgICAgICByZXN1bHQucHVzaChEeW5hbWljVmFsdWUuZnJvbUR5bmFtaWNJbnB1dChub2RlLCBhcmcpKTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQucHVzaChhcmcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPYmplY3RBc3NpZ25CdWlsdGluRm4gZXh0ZW5kcyBLbm93bkZuIHtcbiAgZXZhbHVhdGUobm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sIGFyZ3M6IFJlc29sdmVkVmFsdWVBcnJheSk6IFJlc29sdmVkVmFsdWUge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIER5bmFtaWNWYWx1ZS5mcm9tVW5zdXBwb3J0ZWRTeW50YXgobm9kZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBEeW5hbWljVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIER5bmFtaWNWYWx1ZS5mcm9tRHluYW1pY0lucHV0KG5vZGUsIGFyZyk7XG4gICAgICB9IGVsc2UgaWYgKCEoYXJnIGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgICByZXR1cm4gRHluYW1pY1ZhbHVlLmZyb21VbnN1cHBvcnRlZFN5bnRheChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgW3RhcmdldCwgLi4uc291cmNlc10gPSBhcmdzIGFzIE1hcDxzdHJpbmcsIFJlc29sdmVkVmFsdWU+W107XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgc291cmNlLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHRhcmdldC5zZXQoa2V5LCB2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG59XG4iXX0=
@@ -1,174 +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 { makeRelatedInformation } from '../../diagnostics';
10
- import { Reference } from '../../imports';
11
- import { DynamicValue } from './dynamic';
12
- import { EnumValue, KnownFn, ResolvedModule } from './result';
13
- /**
14
- * Derives a type representation from a resolved value to be reported in a diagnostic.
15
- *
16
- * @param value The resolved value for which a type representation should be derived.
17
- * @param maxDepth The maximum nesting depth of objects and arrays, defaults to 1 level.
18
- */
19
- export function describeResolvedType(value, maxDepth = 1) {
20
- var _a, _b;
21
- if (value === null) {
22
- return 'null';
23
- }
24
- else if (value === undefined) {
25
- return 'undefined';
26
- }
27
- else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'string') {
28
- return typeof value;
29
- }
30
- else if (value instanceof Map) {
31
- if (maxDepth === 0) {
32
- return 'object';
33
- }
34
- const entries = Array.from(value.entries()).map(([key, v]) => {
35
- return `${quoteKey(key)}: ${describeResolvedType(v, maxDepth - 1)}`;
36
- });
37
- return entries.length > 0 ? `{ ${entries.join('; ')} }` : '{}';
38
- }
39
- else if (value instanceof ResolvedModule) {
40
- return '(module)';
41
- }
42
- else if (value instanceof EnumValue) {
43
- return (_a = value.enumRef.debugName) !== null && _a !== void 0 ? _a : '(anonymous)';
44
- }
45
- else if (value instanceof Reference) {
46
- return (_b = value.debugName) !== null && _b !== void 0 ? _b : '(anonymous)';
47
- }
48
- else if (Array.isArray(value)) {
49
- if (maxDepth === 0) {
50
- return 'Array';
51
- }
52
- return `[${value.map(v => describeResolvedType(v, maxDepth - 1)).join(', ')}]`;
53
- }
54
- else if (value instanceof DynamicValue) {
55
- return '(not statically analyzable)';
56
- }
57
- else if (value instanceof KnownFn) {
58
- return 'Function';
59
- }
60
- else {
61
- return 'unknown';
62
- }
63
- }
64
- function quoteKey(key) {
65
- if (/^[a-z0-9_]+$/i.test(key)) {
66
- return key;
67
- }
68
- else {
69
- return `'${key.replace(/'/g, '\\\'')}'`;
70
- }
71
- }
72
- /**
73
- * Creates an array of related information diagnostics for a `DynamicValue` that describe the trace
74
- * of why an expression was evaluated as dynamic.
75
- *
76
- * @param node The node for which a `ts.Diagnostic` is to be created with the trace.
77
- * @param value The dynamic value for which a trace should be created.
78
- */
79
- export function traceDynamicValue(node, value) {
80
- return value.accept(new TraceDynamicValueVisitor(node));
81
- }
82
- class TraceDynamicValueVisitor {
83
- constructor(node) {
84
- this.node = node;
85
- this.currentContainerNode = null;
86
- }
87
- visitDynamicInput(value) {
88
- const trace = value.reason.accept(this);
89
- if (this.shouldTrace(value.node)) {
90
- const info = makeRelatedInformation(value.node, 'Unable to evaluate this expression statically.');
91
- trace.unshift(info);
92
- }
93
- return trace;
94
- }
95
- visitDynamicString(value) {
96
- return [makeRelatedInformation(value.node, 'A string value could not be determined statically.')];
97
- }
98
- visitExternalReference(value) {
99
- const name = value.reason.debugName;
100
- const description = name !== null ? `'${name}'` : 'an anonymous declaration';
101
- return [makeRelatedInformation(value.node, `A value for ${description} cannot be determined statically, as it is an external declaration.`)];
102
- }
103
- visitComplexFunctionCall(value) {
104
- return [
105
- makeRelatedInformation(value.node, 'Unable to evaluate function call of complex function. A function must have exactly one return statement.'),
106
- makeRelatedInformation(value.reason.node, 'Function is declared here.')
107
- ];
108
- }
109
- visitInvalidExpressionType(value) {
110
- return [makeRelatedInformation(value.node, 'Unable to evaluate an invalid expression.')];
111
- }
112
- visitUnknown(value) {
113
- return [makeRelatedInformation(value.node, 'Unable to evaluate statically.')];
114
- }
115
- visitUnknownIdentifier(value) {
116
- return [makeRelatedInformation(value.node, 'Unknown reference.')];
117
- }
118
- visitDynamicType(value) {
119
- return [makeRelatedInformation(value.node, 'Dynamic type.')];
120
- }
121
- visitUnsupportedSyntax(value) {
122
- return [makeRelatedInformation(value.node, 'This syntax is not supported.')];
123
- }
124
- /**
125
- * Determines whether the dynamic value reported for the node should be traced, i.e. if it is not
126
- * part of the container for which the most recent trace was created.
127
- */
128
- shouldTrace(node) {
129
- if (node === this.node) {
130
- // Do not include a dynamic value for the origin node, as the main diagnostic is already
131
- // reported on that node.
132
- return false;
133
- }
134
- const container = getContainerNode(node);
135
- if (container === this.currentContainerNode) {
136
- // The node is part of the same container as the previous trace entry, so this dynamic value
137
- // should not become part of the trace.
138
- return false;
139
- }
140
- this.currentContainerNode = container;
141
- return true;
142
- }
143
- }
144
- /**
145
- * Determines the closest parent node that is to be considered as container, which is used to reduce
146
- * the granularity of tracing the dynamic values to a single entry per container. Currently, full
147
- * statements and destructuring patterns are considered as container.
148
- */
149
- function getContainerNode(node) {
150
- let currentNode = node;
151
- while (currentNode !== undefined) {
152
- switch (currentNode.kind) {
153
- case ts.SyntaxKind.ExpressionStatement:
154
- case ts.SyntaxKind.VariableStatement:
155
- case ts.SyntaxKind.ReturnStatement:
156
- case ts.SyntaxKind.IfStatement:
157
- case ts.SyntaxKind.SwitchStatement:
158
- case ts.SyntaxKind.DoStatement:
159
- case ts.SyntaxKind.WhileStatement:
160
- case ts.SyntaxKind.ForStatement:
161
- case ts.SyntaxKind.ForInStatement:
162
- case ts.SyntaxKind.ForOfStatement:
163
- case ts.SyntaxKind.ContinueStatement:
164
- case ts.SyntaxKind.BreakStatement:
165
- case ts.SyntaxKind.ThrowStatement:
166
- case ts.SyntaxKind.ObjectBindingPattern:
167
- case ts.SyntaxKind.ArrayBindingPattern:
168
- return currentNode;
169
- }
170
- currentNode = currentNode.parent;
171
- }
172
- return node.getSourceFile();
173
- }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3BhcnRpYWxfZXZhbHVhdG9yL3NyYy9kaWFnbm9zdGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhDLE9BQU8sRUFBQyxZQUFZLEVBQXNCLE1BQU0sV0FBVyxDQUFDO0FBQzVELE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBZ0IsTUFBTSxVQUFVLENBQUM7QUFFM0U7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBb0IsRUFBRSxXQUFtQixDQUFDOztJQUM3RSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsT0FBTyxNQUFNLENBQUM7S0FDZjtTQUFNLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUM5QixPQUFPLFdBQVcsQ0FBQztLQUNwQjtTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDL0YsT0FBTyxPQUFPLEtBQUssQ0FBQztLQUNyQjtTQUFNLElBQUksS0FBSyxZQUFZLEdBQUcsRUFBRTtRQUMvQixJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7WUFDbEIsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMs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RUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7WUFDbEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztZQUNsQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7WUFDeEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQjtnQkFDcEMsT0FBTyxXQUFXLENBQUM7U0FDdEI7UUFFRCxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztLQUNsQztJQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7bWFrZVJlbGF0ZWRJbmZvcm1hdGlvbn0gZnJvbSAnLi4vLi4vZGlhZ25vc3RpY3MnO1xuaW1wb3J0IHtSZWZlcmVuY2V9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtGdW5jdGlvbkRlZmluaXRpb259IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtEeW5hbWljVmFsdWUsIER5bmFtaWNWYWx1ZVZpc2l0b3J9IGZyb20gJy4vZHluYW1pYyc7XG5pbXBvcnQge0VudW1WYWx1ZSwgS25vd25GbiwgUmVzb2x2ZWRNb2R1bGUsIFJlc29sdmVkVmFsdWV9IGZyb20gJy4vcmVzdWx0JztcblxuLyoqXG4gKiBEZXJpdmVzIGEgdHlwZSByZXByZXNlbnRhdGlvbiBmcm9tIGEgcmVzb2x2ZWQgdmFsdWUgdG8gYmUgcmVwb3J0ZWQgaW4gYSBkaWFnbm9zdGljLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgcmVzb2x2ZWQgdmFsdWUgZm9yIHdoaWNoIGEgdHlwZSByZXByZXNlbnRhdGlvbiBzaG91bGQgYmUgZGVyaXZlZC5cbiAqIEBwYXJhbSBtYXhEZXB0aCBUaGUgbWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIG9iamVjdHMgYW5kIGFycmF5cywgZGVmYXVsdHMgdG8gMSBsZXZlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlUmVzb2x2ZWRUeXBlKHZhbHVlOiBSZXNvbHZlZFZhbHVlLCBtYXhEZXB0aDogbnVtYmVyID0gMSk6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnbnVsbCc7XG4gIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlO1xuICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgaWYgKG1heERlcHRoID09PSAwKSB7XG4gICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKHZhbHVlLmVudHJpZXMoKSkubWFwKChba2V5LCB2XSkgPT4ge1xuICAgICAgcmV0dXJuIGAke3F1b3RlS2V5KGtleSl9OiAke2Rlc2NyaWJlUmVzb2x2ZWRUeXBlKHYsIG1heERlcHRoIC0gMSl9YDtcbiAgICB9KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gYHsgJHtlbnRyaWVzLmpvaW4oJzsgJyl9IH1gIDogJ3t9JztcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlc29sdmVkTW9kdWxlKSB7XG4gICAgcmV0dXJuICcobW9kdWxlKSc7XG4gIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBFbnVtVmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuZW51bVJlZi5kZWJ1Z05hbWUgPz8gJyhhbm9ueW1vdXMpJztcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZmVyZW5jZSkge1xuICAgIHJldHVybiB2YWx1ZS5kZWJ1Z05hbWUgPz8gJyhhbm9ueW1vdXMpJztcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmIChtYXhEZXB0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICdBcnJheSc7XG4gICAgfVxuICAgIHJldHVybiBgWyR7dmFsdWUubWFwKHYgPT4gZGVzY3JpYmVSZXNvbHZlZFR5cGUodiwgbWF4RGVwdGggLSAxKSkuam9pbignLCAnKX1dYDtcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIER5bmFtaWNWYWx1ZSkge1xuICAgIHJldHVybiAnKG5vdCBzdGF0aWNhbGx5IGFuYWx5emFibGUpJztcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEtub3duRm4pIHtcbiAgICByZXR1cm4gJ0Z1bmN0aW9uJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1b3RlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKC9eW2EtejAtOV9dKyQvaS50ZXN0KGtleSkpIHtcbiAgICByZXR1cm4ga2V5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBgJyR7a2V5LnJlcGxhY2UoLycvZywgJ1xcXFxcXCcnKX0nYDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgcmVsYXRlZCBpbmZvcm1hdGlvbiBkaWFnbm9zdGljcyBmb3IgYSBgRHluYW1pY1ZhbHVlYCB0aGF0IGRlc2NyaWJlIHRoZSB0cmFjZVxuICogb2Ygd2h5IGFuIGV4cHJlc3Npb24gd2FzIGV2YWx1YXRlZCBhcyBkeW5hbWljLlxuICpcbiAqIEBwYXJhbSBub2RlIFRoZSBub2RlIGZvciB3aGljaCBhIGB0cy5EaWFnbm9zdGljYCBpcyB0byBiZSBjcmVhdGVkIHdpdGggdGhlIHRyYWNlLlxuICogQHBhcmFtIHZhbHVlIFRoZSBkeW5hbWljIHZhbHVlIGZvciB3aGljaCBhIHRyYWNlIHNob3VsZCBiZSBjcmVhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VEeW5hbWljVmFsdWUoXG4gICAgbm9kZTogdHMuTm9kZSwgdmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gIHJldHVybiB2YWx1ZS5hY2NlcHQobmV3IFRyYWNlRHluYW1pY1ZhbHVlVmlzaXRvcihub2RlKSk7XG59XG5cbmNsYXNzIFRyYWNlRHluYW1pY1ZhbHVlVmlzaXRvciBpbXBsZW1lbnRzIER5bmFtaWNWYWx1ZVZpc2l0b3I8dHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdPiB7XG4gIHByaXZhdGUgY3VycmVudENvbnRhaW5lck5vZGU6IHRzLk5vZGV8bnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlOiB0cy5Ob2RlKSB7fVxuXG4gIHZpc2l0RHluYW1pY0lucHV0KHZhbHVlOiBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPik6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgY29uc3QgdHJhY2UgPSB2YWx1ZS5yZWFzb24uYWNjZXB0KHRoaXMpO1xuICAgIGlmICh0aGlzLnNob3VsZFRyYWNlKHZhbHVlLm5vZGUpKSB7XG4gICAgICBjb25zdCBpbmZvID1cbiAgICAgICAgICBtYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLm5vZGUsICdVbmFibGUgdG8gZXZhbHVhdGUgdGhpcyBleHByZXNzaW9uIHN0YXRpY2FsbHkuJyk7XG4gICAgICB0cmFjZS51bnNoaWZ0KGluZm8pO1xuICAgIH1cbiAgICByZXR1cm4gdHJhY2U7XG4gIH1cblxuICB2aXNpdER5bmFtaWNTdHJpbmcodmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgcmV0dXJuIFttYWtlUmVsYXRlZEluZm9ybWF0aW9uKFxuICAgICAgICB2YWx1ZS5ub2RlLCAnQSBzdHJpbmcgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseS4nKV07XG4gIH1cblxuICB2aXNpdEV4dGVybmFsUmVmZXJlbmNlKHZhbHVlOiBEeW5hbWljVmFsdWU8UmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPj4pOlxuICAgICAgdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICBjb25zdCBuYW1lID0gdmFsdWUucmVhc29uLmRlYnVnTmFtZTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IG5hbWUgIT09IG51bGwgPyBgJyR7bmFtZX0nYCA6ICdhbiBhbm9ueW1vdXMgZGVjbGFyYXRpb24nO1xuICAgIHJldHVybiBbbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbihcbiAgICAgICAgdmFsdWUubm9kZSxcbiAgICAgICAgYEEgdmFsdWUgZm9yICR7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbn0gY2Fubm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseSwgYXMgaXQgaXMgYW4gZXh0ZXJuYWwgZGVjbGFyYXRpb24uYCldO1xuICB9XG5cbiAgdmlzaXRDb21wbGV4RnVuY3Rpb25DYWxsKHZhbHVlOiBEeW5hbWljVmFsdWU8RnVuY3Rpb25EZWZpbml0aW9uPik6XG4gICAgICB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICAgIHJldHVybiBbXG4gICAgICBtYWtlUmVsYXRlZEluZm9ybWF0aW9uKFxuICAgICAgICAgIHZhbHVlLm5vZGUsXG4gICAgICAgICAgJ1VuYWJsZSB0byBldmFsdWF0ZSBmdW5jdGlvbiBjYWxsIG9mIGNvbXBsZXggZnVuY3Rpb24uIEEgZnVuY3Rpb24gbXVzdCBoYXZlIGV4YWN0bHkgb25lIHJldHVybiBzdGF0ZW1lbnQuJyksXG4gICAgICBtYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLnJlYXNvbi5ub2RlLCAnRnVuY3Rpb24gaXMgZGVjbGFyZWQgaGVyZS4nKVxuICAgIF07XG4gIH1cblxuICB2aXNpdEludmFsaWRFeHByZXNzaW9uVHlwZSh2YWx1ZTogRHluYW1pY1ZhbHVlKTogdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICByZXR1cm4gW21ha2VSZWxhdGVkSW5mb3JtYXRpb24odmFsdWUubm9kZSwgJ1VuYWJsZSB0byBldmFsdWF0ZSBhbiBpbnZhbGlkIGV4cHJlc3Npb24uJyldO1xuICB9XG5cbiAgdmlzaXRVbmtub3duKHZhbHVlOiBEeW5hbWljVmFsdWUpOiB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uW10ge1xuICAgIHJldHVybiBbbWFrZVJlbGF0ZWRJbmZvcm1hdGlvbih2YWx1ZS5ub2RlLCAnVW5hYmxlIHRvIGV2YWx1YXRlIHN0YXRpY2FsbHkuJyldO1xuICB9XG5cbiAgdmlzaXRVbmtub3duSWRlbnRpZmllcih2YWx1ZTogRHluYW1pY1ZhbHVlKTogdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICByZXR1cm4gW21ha2VSZWxhdGVkSW5mb3JtYXRpb24odmFsdWUubm9kZSwgJ1Vua25vd24gcmVmZXJlbmNlLicpXTtcbiAgfVxuXG4gIHZpc2l0RHluYW1pY1R5cGUodmFsdWU6IER5bmFtaWNWYWx1ZSk6IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSB7XG4gICAgcmV0dXJuIFttYWtlUmVsYXRlZEluZm9ybWF0aW9uKHZhbHVlLm5vZGUsICdEeW5hbWljIHR5cGUuJyldO1xuICB9XG5cbiAgdmlzaXRVbnN1cHBvcnRlZFN5bnRheCh2YWx1ZTogRHluYW1pY1ZhbHVlKTogdHMuRGlhZ25vc3RpY1JlbGF0ZWRJbmZvcm1hdGlvbltdIHtcbiAgICByZXR1cm4gW21ha2VSZWxhdGVkSW5mb3JtYXRpb24odmFsdWUubm9kZSwgJ1RoaXMgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuJyldO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZHluYW1pYyB2YWx1ZSByZXBvcnRlZCBmb3IgdGhlIG5vZGUgc2hvdWxkIGJlIHRyYWNlZCwgaS5lLiBpZiBpdCBpcyBub3RcbiAgICogcGFydCBvZiB0aGUgY29udGFpbmVyIGZvciB3aGljaCB0aGUgbW9zdCByZWNlbnQgdHJhY2Ugd2FzIGNyZWF0ZWQuXG4gICAqL1xuICBwcml2YXRlIHNob3VsZFRyYWNlKG5vZGU6IHRzLk5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAobm9kZSA9PT0gdGhpcy5ub2RlKSB7XG4gICAgICAvLyBEbyBub3QgaW5jbHVkZSBhIGR5bmFtaWMgdmFsdWUgZm9yIHRoZSBvcmlnaW4gbm9kZSwgYXMgdGhlIG1haW4gZGlhZ25vc3RpYyBpcyBhbHJlYWR5XG4gICAgICAvLyByZXBvcnRlZCBvbiB0aGF0IG5vZGUuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyTm9kZShub2RlKTtcbiAgICBpZiAoY29udGFpbmVyID09PSB0aGlzLmN1cnJlbnRDb250YWluZXJOb2RlKSB7XG4gICAgICAvLyBUaGUgbm9kZSBpcyBwYXJ0IG9mIHRoZSBzYW1lIGNvbnRhaW5lciBhcyB0aGUgcHJldmlvdXMgdHJhY2UgZW50cnksIHNvIHRoaXMgZHluYW1pYyB2YWx1ZVxuICAgICAgLy8gc2hvdWxkIG5vdCBiZWNvbWUgcGFydCBvZiB0aGUgdHJhY2UuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50Q29udGFpbmVyTm9kZSA9IGNvbnRhaW5lcjtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIGNsb3Nlc3QgcGFyZW50IG5vZGUgdGhhdCBpcyB0byBiZSBjb25zaWRlcmVkIGFzIGNvbnRhaW5lciwgd2hpY2ggaXMgdXNlZCB0byByZWR1Y2VcbiAqIHRoZSBncmFudWxhcml0eSBvZiB0cmFjaW5nIHRoZSBkeW5hbWljIHZhbHVlcyB0byBhIHNpbmdsZSBlbnRyeSBwZXIgY29udGFpbmVyLiBDdXJyZW50bHksIGZ1bGxcbiAqIHN0YXRlbWVudHMgYW5kIGRlc3RydWN0dXJpbmcgcGF0dGVybnMgYXJlIGNvbnNpZGVyZWQgYXMgY29udGFpbmVyLlxuICovXG5mdW5jdGlvbiBnZXRDb250YWluZXJOb2RlKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHtcbiAgbGV0IGN1cnJlbnROb2RlOiB0cy5Ob2RlfHVuZGVmaW5lZCA9IG5vZGU7XG4gIHdoaWxlIChjdXJyZW50Tm9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc3dpdGNoIChjdXJyZW50Tm9kZS5raW5kKSB7XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRXhwcmVzc2lvblN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5WYXJpYWJsZVN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5SZXR1cm5TdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuSWZTdGF0ZW1lbnQ6XG4gICAgICBjYXNlIHRzLlN5bnRheEtpbmQuU3dpdGNoU3RhdGVtZW50OlxuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkRvU3RhdGVtZW50OlxuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLldoaWxlU3RhdGVtZW50OlxuICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkZvclN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Gb3JJblN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Gb3JPZlN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Db250aW51ZVN0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5CcmVha1N0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5UaHJvd1N0YXRlbWVudDpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5PYmplY3RCaW5kaW5nUGF0dGVybjpcbiAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5BcnJheUJpbmRpbmdQYXR0ZXJuOlxuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfVxuXG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIG5vZGUuZ2V0U291cmNlRmlsZSgpO1xufVxuIl19
@@ -1,94 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * Represents a value which cannot be determined statically.
10
- */
11
- export class DynamicValue {
12
- constructor(node, reason, code) {
13
- this.node = node;
14
- this.reason = reason;
15
- this.code = code;
16
- }
17
- static fromDynamicInput(node, input) {
18
- return new DynamicValue(node, input, 0 /* DYNAMIC_INPUT */);
19
- }
20
- static fromDynamicString(node) {
21
- return new DynamicValue(node, undefined, 1 /* DYNAMIC_STRING */);
22
- }
23
- static fromExternalReference(node, ref) {
24
- return new DynamicValue(node, ref, 2 /* EXTERNAL_REFERENCE */);
25
- }
26
- static fromUnsupportedSyntax(node) {
27
- return new DynamicValue(node, undefined, 3 /* UNSUPPORTED_SYNTAX */);
28
- }
29
- static fromUnknownIdentifier(node) {
30
- return new DynamicValue(node, undefined, 4 /* UNKNOWN_IDENTIFIER */);
31
- }
32
- static fromInvalidExpressionType(node, value) {
33
- return new DynamicValue(node, value, 5 /* INVALID_EXPRESSION_TYPE */);
34
- }
35
- static fromComplexFunctionCall(node, fn) {
36
- return new DynamicValue(node, fn, 6 /* COMPLEX_FUNCTION_CALL */);
37
- }
38
- static fromDynamicType(node) {
39
- return new DynamicValue(node, undefined, 7 /* DYNAMIC_TYPE */);
40
- }
41
- static fromUnknown(node) {
42
- return new DynamicValue(node, undefined, 8 /* UNKNOWN */);
43
- }
44
- isFromDynamicInput() {
45
- return this.code === 0 /* DYNAMIC_INPUT */;
46
- }
47
- isFromDynamicString() {
48
- return this.code === 1 /* DYNAMIC_STRING */;
49
- }
50
- isFromExternalReference() {
51
- return this.code === 2 /* EXTERNAL_REFERENCE */;
52
- }
53
- isFromUnsupportedSyntax() {
54
- return this.code === 3 /* UNSUPPORTED_SYNTAX */;
55
- }
56
- isFromUnknownIdentifier() {
57
- return this.code === 4 /* UNKNOWN_IDENTIFIER */;
58
- }
59
- isFromInvalidExpressionType() {
60
- return this.code === 5 /* INVALID_EXPRESSION_TYPE */;
61
- }
62
- isFromComplexFunctionCall() {
63
- return this.code === 6 /* COMPLEX_FUNCTION_CALL */;
64
- }
65
- isFromDynamicType() {
66
- return this.code === 7 /* DYNAMIC_TYPE */;
67
- }
68
- isFromUnknown() {
69
- return this.code === 8 /* UNKNOWN */;
70
- }
71
- accept(visitor) {
72
- switch (this.code) {
73
- case 0 /* DYNAMIC_INPUT */:
74
- return visitor.visitDynamicInput(this);
75
- case 1 /* DYNAMIC_STRING */:
76
- return visitor.visitDynamicString(this);
77
- case 2 /* EXTERNAL_REFERENCE */:
78
- return visitor.visitExternalReference(this);
79
- case 3 /* UNSUPPORTED_SYNTAX */:
80
- return visitor.visitUnsupportedSyntax(this);
81
- case 4 /* UNKNOWN_IDENTIFIER */:
82
- return visitor.visitUnknownIdentifier(this);
83
- case 5 /* INVALID_EXPRESSION_TYPE */:
84
- return visitor.visitInvalidExpressionType(this);
85
- case 6 /* COMPLEX_FUNCTION_CALL */:
86
- return visitor.visitComplexFunctionCall(this);
87
- case 7 /* DYNAMIC_TYPE */:
88
- return visitor.visitDynamicType(this);
89
- case 8 /* UNKNOWN */:
90
- return visitor.visitUnknown(this);
91
- }
92
- }
93
- }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvcGFydGlhbF9ldmFsdWF0b3Ivc3JjL2R5bmFtaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBK0VIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDYSxJQUFhLEVBQVcsTUFBUyxFQUFVLElBQXdCO1FBQW5FLFNBQUksR0FBSixJQUFJLENBQVM7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFHO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBb0I7SUFBRyxDQUFDO0lBRXBGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFhLEVBQUUsS0FBbUI7UUFDeEQsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyx3QkFBbUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQWE7UUFDcEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyx5QkFBb0MsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQWEsRUFBRSxHQUE4QjtRQUV4RSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLDZCQUF3QyxDQUFDO0lBQzVFLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBYTtRQUN4QyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLDZCQUF3QyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBbUI7UUFDOUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyw2QkFBd0MsQ0FBQztJQUNsRixDQUFDO0lBRUQsTUFBTSxDQUFDLHlCQUF5QixDQUFDLElBQWEsRUFBRSxLQUFjO1FBQzVELE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssa0NBQTZDLENBQUM7SUFDbkYsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFhLEVBQUUsRUFBc0I7UUFFbEUsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxnQ0FBMkMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFpQjtRQUN0QyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLHVCQUFrQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQWE7UUFDOUIsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxrQkFBNkIsQ0FBQztJQUN2RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksMEJBQXFDLENBQUM7SUFDeEQsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLDJCQUFzQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSwrQkFBMEMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksK0JBQTBDLENBQUM7SUFDN0QsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLCtCQUEwQyxDQUFDO0lBQzdELENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxvQ0FBK0MsQ0FBQztJQUNsRSxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksa0NBQTZDLENBQUM7SUFDaEUsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUkseUJBQW9DLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLG9CQUErQixDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUksT0FBK0I7UUFDdkMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCO2dCQUNFLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQTZDLENBQUMsQ0FBQztZQUNsRjtnQkFDRSxPQUFPLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQztnQkFDRSxPQUFPLE9BQU8sQ0FBQyxzQkFBc0IsQ0FDakMsSUFBMEQsQ0FBQyxDQUFDO1lBQ2xFO2dCQUNFLE9BQU8sT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDO2dCQUNFLE9BQU8sT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDO2dCQUNFLE9BQU8sT0FBTyxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xEO2dCQUNFLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUNuQyxJQUFtRCxDQUFDLENBQUM7WUFDM0Q7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEM7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0Z1bmN0aW9uRGVmaW5pdGlvbn0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbi8qKlxuICogVGhlIHJlYXNvbiB3aHkgYSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LlxuICovXG5leHBvcnQgY29uc3QgZW51bSBEeW5hbWljVmFsdWVSZWFzb24ge1xuICAvKipcbiAgICogQSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LCBiZWNhdXNlIGl0IGNvbnRhaW5zIGEgdGVybSB0aGF0IGNvdWxkIG5vdCBiZVxuICAgKiBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuXG4gICAqIChFLmcuIGEgcHJvcGVydHkgYXNzaWdubWVudCBvciBjYWxsIGV4cHJlc3Npb24gd2hlcmUgdGhlIGxocyBpcyBhIGBEeW5hbWljVmFsdWVgLCBhIHRlbXBsYXRlXG4gICAqIGxpdGVyYWwgd2l0aCBhIGR5bmFtaWMgZXhwcmVzc2lvbiwgYW4gb2JqZWN0IGxpdGVyYWwgd2l0aCBhIHNwcmVhZCBhc3NpZ25tZW50IHdoaWNoIGNvdWxkIG5vdFxuICAgKiBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHksIGV0Yy4pXG4gICAqL1xuICBEWU5BTUlDX0lOUFVULFxuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBjb3VsZCBub3QgYmUgc3RhdGljYWxseSBldmFsdWF0ZWQuXG4gICAqIChFLmcuIGEgZHluYW1pY2FsbHkgY29uc3RydWN0ZWQgb2JqZWN0IHByb3BlcnR5IG5hbWUgb3IgYSB0ZW1wbGF0ZSBsaXRlcmFsIGV4cHJlc3Npb24gdGhhdFxuICAgKiBjb3VsZCBub3QgYmUgc3RhdGljYWxseSByZXNvbHZlZCB0byBhIHByaW1pdGl2ZSB2YWx1ZS4pXG4gICAqL1xuICBEWU5BTUlDX1NUUklORyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWwgcmVmZXJlbmNlIGNvdWxkIG5vdCBiZSByZXNvbHZlZCB0byBhIHZhbHVlIHdoaWNoIGNhbiBiZSBldmFsdWF0ZWQuXG4gICAqIEZvciBleGFtcGxlIGEgY2FsbCBleHByZXNzaW9uIGZvciBhIGZ1bmN0aW9uIGRlY2xhcmVkIGluIGAuZC50c2AsIG9yIGFjY2Vzc2luZyBuYXRpdmUgZ2xvYmFsc1xuICAgKiBzdWNoIGFzIGB3aW5kb3dgLlxuICAgKi9cbiAgRVhURVJOQUxfUkVGRVJFTkNFLFxuXG4gIC8qKlxuICAgKiBTeW50YXggdGhhdCBgU3RhdGljSW50ZXJwcmV0ZXJgIGRvZXNuJ3Qga25vdyBob3cgdG8gZXZhbHVhdGUsIGZvciBleGFtcGxlIGEgdHlwZSBvZlxuICAgKiBgdHMuRXhwcmVzc2lvbmAgdGhhdCBpcyBub3Qgc3VwcG9ydGVkLlxuICAgKi9cbiAgVU5TVVBQT1JURURfU1lOVEFYLFxuXG4gIC8qKlxuICAgKiBBIGRlY2xhcmF0aW9uIG9mIGEgYHRzLklkZW50aWZpZXJgIGNvdWxkIG5vdCBiZSBmb3VuZC5cbiAgICovXG4gIFVOS05PV05fSURFTlRJRklFUixcblxuICAvKipcbiAgICogQSB2YWx1ZSBjb3VsZCBiZSByZXNvbHZlZCwgYnV0IGlzIG5vdCBhbiBhY2NlcHRhYmxlIHR5cGUgZm9yIHRoZSBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYXR0ZW1wdGluZyB0byBjYWxsIGEgbm9uLWNhbGxhYmxlIGV4cHJlc3Npb24uXG4gICAqL1xuICBJTlZBTElEX0VYUFJFU1NJT05fVFlQRSxcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiBjYWxsIGNvdWxkIG5vdCBiZSBldmFsdWF0ZWQgYXMgdGhlIGZ1bmN0aW9uJ3MgYm9keSBpcyBub3QgYSBzaW5nbGUgcmV0dXJuIHN0YXRlbWVudC5cbiAgICovXG4gIENPTVBMRVhfRlVOQ1RJT05fQ0FMTCxcblxuICAvKipcbiAgICogQSB2YWx1ZSB0aGF0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGJlY2F1c2UgaXQgY29udGFpbnMgdHlwZSBpbmZvcm1hdGlvbiB0aGF0IGNhbm5vdCBiZVxuICAgKiBzdGF0aWNhbGx5IGV2YWx1YXRlZC4gVGhpcyBoYXBwZW5zIHdoZW4gcHJvZHVjaW5nIGEgdmFsdWUgZnJvbSB0eXBlIGluZm9ybWF0aW9uLCBidXQgdGhlIHZhbHVlXG4gICAqIG9mIHRoZSBnaXZlbiB0eXBlIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuXG4gICAqXG4gICAqIEUuZy4gZXZhbHVhdGluZyBhIHR1cGxlLlxuICAgKlxuICAgKiAgIGBkZWNsYXJlIGNvbnN0IGZvbzogW3N0cmluZ107YFxuICAgKlxuICAgKiAgRXZhbHVhdGluZyBgZm9vYCBnaXZlcyBhIER5bmFtaWNWYWx1ZSB3cmFwcGVkIGluIGFuIGFycmF5IHdpdGggYSByZWFzb24gb2YgRFlOQU1JQ19UWVBFLiBUaGlzXG4gICAqIGlzIGJlY2F1c2UgdGhlIHN0YXRpYyBldmFsdWF0b3IgaGFzIGEgYHN0cmluZ2AgdHlwZSBmb3IgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhpcyB0dXBsZSwgYW5kXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGF0IHN0cmluZyBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LiBUaGUgdHlwZSBgc3RyaW5nYCBwZXJtaXRzIGl0IHRvIGJlXG4gICAqICdmb28nLCAnYmFyJyBvciBhbnkgYXJiaXRyYXJ5IHN0cmluZywgc28gd2UgZXZhbHVhdGUgaXQgdG8gYSBEeW5hbWljVmFsdWUuXG4gICAqL1xuICBEWU5BTUlDX1RZUEUsXG5cbiAgLyoqXG4gICAqIEEgdmFsdWUgY291bGQgbm90IGJlIGRldGVybWluZWQgc3RhdGljYWxseSBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGUgYWJvdmUuXG4gICAqL1xuICBVTktOT1dOLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB2YWx1ZSB3aGljaCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LlxuICovXG5leHBvcnQgY2xhc3MgRHluYW1pY1ZhbHVlPFIgPSB1bmtub3duPiB7XG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSBub2RlOiB0cy5Ob2RlLCByZWFkb25seSByZWFzb246IFIsIHByaXZhdGUgY29kZTogRHluYW1pY1ZhbHVlUmVhc29uKSB7fVxuXG4gIHN0YXRpYyBmcm9tRHluYW1pY0lucHV0KG5vZGU6IHRzLk5vZGUsIGlucHV0OiBEeW5hbWljVmFsdWUpOiBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgaW5wdXQsIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX0lOUFVUKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRHluYW1pY1N0cmluZyhub2RlOiB0cy5Ob2RlKTogRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYWx1ZShub2RlLCB1bmRlZmluZWQsIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1NUUklORyk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUV4dGVybmFsUmVmZXJlbmNlKG5vZGU6IHRzLk5vZGUsIHJlZjogUmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPik6XG4gICAgICBEeW5hbWljVmFsdWU8UmVmZXJlbmNlPHRzLkRlY2xhcmF0aW9uPj4ge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHJlZiwgRHluYW1pY1ZhbHVlUmVhc29uLkVYVEVSTkFMX1JFRkVSRU5DRSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVVuc3VwcG9ydGVkU3ludGF4KG5vZGU6IHRzLk5vZGUpOiBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHVuZGVmaW5lZCwgRHluYW1pY1ZhbHVlUmVhc29uLlVOU1VQUE9SVEVEX1NZTlRBWCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVVua25vd25JZGVudGlmaWVyKG5vZGU6IHRzLklkZW50aWZpZXIpOiBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhbHVlKG5vZGUsIHVuZGVmaW5lZCwgRHluYW1pY1ZhbHVlUmVhc29uLlVOS05PV05fSURFTlRJRklFUik7XG4gIH1cblxuICBzdGF0aWMgZnJvbUludmFsaWRFeHByZXNzaW9uVHlwZShub2RlOiB0cy5Ob2RlLCB2YWx1ZTogdW5rbm93bik6IER5bmFtaWNWYWx1ZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgdmFsdWUsIER5bmFtaWNWYWx1ZVJlYXNvbi5JTlZBTElEX0VYUFJFU1NJT05fVFlQRSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbXBsZXhGdW5jdGlvbkNhbGwobm9kZTogdHMuTm9kZSwgZm46IEZ1bmN0aW9uRGVmaW5pdGlvbik6XG4gICAgICBEeW5hbWljVmFsdWU8RnVuY3Rpb25EZWZpbml0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgZm4sIER5bmFtaWNWYWx1ZVJlYXNvbi5DT01QTEVYX0ZVTkNUSU9OX0NBTEwpO1xuICB9XG5cbiAgc3RhdGljIGZyb21EeW5hbWljVHlwZShub2RlOiB0cy5UeXBlTm9kZSk6IER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFsdWUobm9kZSwgdW5kZWZpbmVkLCBEeW5hbWljVmFsdWVSZWFzb24uRFlOQU1JQ19UWVBFKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVW5rbm93bihub2RlOiB0cy5Ob2RlKTogRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYWx1ZShub2RlLCB1bmRlZmluZWQsIER5bmFtaWNWYWx1ZVJlYXNvbi5VTktOT1dOKTtcbiAgfVxuXG4gIGlzRnJvbUR5bmFtaWNJbnB1dCh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZTxEeW5hbWljVmFsdWU+IHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uRFlOQU1JQ19JTlBVVDtcbiAgfVxuXG4gIGlzRnJvbUR5bmFtaWNTdHJpbmcodGhpczogRHluYW1pY1ZhbHVlPFI+KTogdGhpcyBpcyBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1NUUklORztcbiAgfVxuXG4gIGlzRnJvbUV4dGVybmFsUmVmZXJlbmNlKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlPFJlZmVyZW5jZTx0cy5EZWNsYXJhdGlvbj4+IHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uRVhURVJOQUxfUkVGRVJFTkNFO1xuICB9XG5cbiAgaXNGcm9tVW5zdXBwb3J0ZWRTeW50YXgodGhpczogRHluYW1pY1ZhbHVlPFI+KTogdGhpcyBpcyBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5VTlNVUFBPUlRFRF9TWU5UQVg7XG4gIH1cblxuICBpc0Zyb21Vbmtub3duSWRlbnRpZmllcih0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSA9PT0gRHluYW1pY1ZhbHVlUmVhc29uLlVOS05PV05fSURFTlRJRklFUjtcbiAgfVxuXG4gIGlzRnJvbUludmFsaWRFeHByZXNzaW9uVHlwZSh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuY29kZSA9PT0gRHluYW1pY1ZhbHVlUmVhc29uLklOVkFMSURfRVhQUkVTU0lPTl9UWVBFO1xuICB9XG5cbiAgaXNGcm9tQ29tcGxleEZ1bmN0aW9uQ2FsbCh0aGlzOiBEeW5hbWljVmFsdWU8Uj4pOiB0aGlzIGlzIER5bmFtaWNWYWx1ZTxGdW5jdGlvbkRlZmluaXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uQ09NUExFWF9GVU5DVElPTl9DQUxMO1xuICB9XG5cbiAgaXNGcm9tRHluYW1pY1R5cGUodGhpczogRHluYW1pY1ZhbHVlPFI+KTogdGhpcyBpcyBEeW5hbWljVmFsdWUge1xuICAgIHJldHVybiB0aGlzLmNvZGUgPT09IER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1RZUEU7XG4gIH1cblxuICBpc0Zyb21Vbmtub3duKHRoaXM6IER5bmFtaWNWYWx1ZTxSPik6IHRoaXMgaXMgRHluYW1pY1ZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlID09PSBEeW5hbWljVmFsdWVSZWFzb24uVU5LTk9XTjtcbiAgfVxuXG4gIGFjY2VwdDxSPih2aXNpdG9yOiBEeW5hbWljVmFsdWVWaXNpdG9yPFI+KTogUiB7XG4gICAgc3dpdGNoICh0aGlzLmNvZGUpIHtcbiAgICAgIGNhc2UgRHluYW1pY1ZhbHVlUmVhc29uLkRZTkFNSUNfSU5QVVQ6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RHluYW1pY0lucHV0KHRoaXMgYXMgdW5rbm93biBhcyBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPik7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1NUUklORzpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREeW5hbWljU3RyaW5nKHRoaXMpO1xuICAgICAgY2FzZSBEeW5hbWljVmFsdWVSZWFzb24uRVhURVJOQUxfUkVGRVJFTkNFOlxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEV4dGVybmFsUmVmZXJlbmNlKFxuICAgICAgICAgICAgdGhpcyBhcyB1bmtub3duIGFzIER5bmFtaWNWYWx1ZTxSZWZlcmVuY2U8dHMuRGVjbGFyYXRpb24+Pik7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5VTlNVUFBPUlRFRF9TWU5UQVg6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VW5zdXBwb3J0ZWRTeW50YXgodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5VTktOT1dOX0lERU5USUZJRVI6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VW5rbm93bklkZW50aWZpZXIodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5JTlZBTElEX0VYUFJFU1NJT05fVFlQRTpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRJbnZhbGlkRXhwcmVzc2lvblR5cGUodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5DT01QTEVYX0ZVTkNUSU9OX0NBTEw6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29tcGxleEZ1bmN0aW9uQ2FsbChcbiAgICAgICAgICAgIHRoaXMgYXMgdW5rbm93biBhcyBEeW5hbWljVmFsdWU8RnVuY3Rpb25EZWZpbml0aW9uPik7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5EWU5BTUlDX1RZUEU6XG4gICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RHluYW1pY1R5cGUodGhpcyk7XG4gICAgICBjYXNlIER5bmFtaWNWYWx1ZVJlYXNvbi5VTktOT1dOOlxuICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFVua25vd24odGhpcyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY1ZhbHVlVmlzaXRvcjxSPiB7XG4gIHZpc2l0RHluYW1pY0lucHV0KHZhbHVlOiBEeW5hbWljVmFsdWU8RHluYW1pY1ZhbHVlPik6IFI7XG4gIHZpc2l0RHluYW1pY1N0cmluZyh2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbiAgdmlzaXRFeHRlcm5hbFJlZmVyZW5jZSh2YWx1ZTogRHluYW1pY1ZhbHVlPFJlZmVyZW5jZTx0cy5EZWNsYXJhdGlvbj4+KTogUjtcbiAgdmlzaXRVbnN1cHBvcnRlZFN5bnRheCh2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbiAgdmlzaXRVbmtub3duSWRlbnRpZmllcih2YWx1ZTogRHluYW1pY1ZhbHVlKTogUjtcbiAgdmlzaXRJbnZhbGlkRXhwcmVzc2lvblR5cGUodmFsdWU6IER5bmFtaWNWYWx1ZSk6IFI7XG4gIHZpc2l0Q29tcGxleEZ1bmN0aW9uQ2FsbCh2YWx1ZTogRHluYW1pY1ZhbHVlPEZ1bmN0aW9uRGVmaW5pdGlvbj4pOiBSO1xuICB2aXNpdER5bmFtaWNUeXBlKHZhbHVlOiBEeW5hbWljVmFsdWUpOiBSO1xuICB2aXNpdFVua25vd24odmFsdWU6IER5bmFtaWNWYWx1ZSk6IFI7XG59XG4iXX0=