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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. package/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
  2. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.js +2 -3
  3. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  4. package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
  5. package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
  6. package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
  7. package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
  8. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
  9. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
  10. package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
  11. package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
  12. package/ngcc/src/host/commonjs_host.js +1 -1
  13. package/ngcc/src/host/esm2015_host.js +1 -1
  14. package/ngcc/src/host/esm5_host.js +1 -1
  15. package/ngcc/src/host/umd_host.js +1 -1
  16. package/ngcc/src/packages/build_marker.d.ts +1 -1
  17. package/ngcc/src/packages/build_marker.js +1 -1
  18. package/ngcc/src/packages/configuration.d.ts +7 -0
  19. package/ngcc/src/packages/configuration.js +8 -3
  20. package/ngcc/src/packages/entry_point_manifest.js +2 -2
  21. package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
  22. package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
  23. package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
  24. package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
  25. package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
  26. package/package.json +2 -2
  27. package/src/ngtsc/annotations/src/component.d.ts +2 -0
  28. package/src/ngtsc/annotations/src/component.js +6 -2
  29. package/src/ngtsc/annotations/src/directive.js +1 -1
  30. package/src/ngtsc/annotations/src/ng_module.js +1 -1
  31. package/src/ngtsc/annotations/src/pipe.js +1 -1
  32. package/src/ngtsc/core/api/src/public_options.d.ts +12 -0
  33. package/src/ngtsc/core/api/src/public_options.js +1 -1
  34. package/src/ngtsc/core/src/compiler.d.ts +5 -0
  35. package/src/ngtsc/core/src/compiler.js +10 -1
  36. package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
  37. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
  38. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
  39. package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
  40. package/src/ngtsc/incremental/src/incremental.js +36 -6
  41. package/src/ngtsc/incremental/src/state.d.ts +5 -3
  42. package/src/ngtsc/incremental/src/state.js +1 -1
  43. package/src/ngtsc/indexer/src/template.js +1 -1
  44. package/src/ngtsc/metadata/src/dts.js +2 -3
  45. package/src/ngtsc/metadata/src/inheritance.js +2 -7
  46. package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
  47. package/src/ngtsc/partial_evaluator/src/diagnostics.js +4 -1
  48. package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +19 -1
  49. package/src/ngtsc/partial_evaluator/src/dynamic.js +12 -4
  50. package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +2 -0
  51. package/src/ngtsc/partial_evaluator/src/interpreter.js +48 -1
  52. package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
  53. package/src/ngtsc/program.d.ts +1 -0
  54. package/src/ngtsc/program.js +26 -2
  55. package/src/ngtsc/program_driver/src/api.d.ts +20 -1
  56. package/src/ngtsc/program_driver/src/api.js +3 -2
  57. package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
  58. package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
  59. package/src/ngtsc/reflection/src/typescript.js +4 -1
  60. package/src/ngtsc/transform/src/api.d.ts +6 -0
  61. package/src/ngtsc/transform/src/api.js +1 -1
  62. package/src/ngtsc/transform/src/compilation.d.ts +3 -0
  63. package/src/ngtsc/transform/src/compilation.js +124 -53
  64. package/src/ngtsc/transform/src/transform.js +1 -1
  65. package/src/ngtsc/typecheck/src/context.d.ts +2 -1
  66. package/src/ngtsc/typecheck/src/context.js +11 -3
  67. package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
  68. package/src/ngtsc/typecheck/src/template_symbol_builder.js +36 -4
  69. package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
  70. package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
  71. package/src/ngtsc/typecheck/src/type_emitter.d.ts +2 -1
  72. package/src/ngtsc/typecheck/src/type_emitter.js +54 -48
  73. package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +2 -0
  74. package/src/ngtsc/typecheck/src/type_parameter_emitter.js +21 -7
  75. package/src/ngtsc/util/src/visitor.d.ts +1 -1
  76. package/src/ngtsc/util/src/visitor.js +1 -8
  77. package/src/ngtsc/xi18n/index.d.ts +9 -0
  78. package/src/ngtsc/xi18n/index.js +22 -0
  79. package/src/ngtsc/xi18n/src/context.d.ts +26 -0
  80. package/src/ngtsc/xi18n/src/context.js +20 -0
  81. package/src/transformers/api.d.ts +0 -3
  82. package/src/transformers/api.js +1 -1
  83. package/src/transformers/i18n.d.ts +14 -0
  84. package/src/transformers/i18n.js +76 -0
  85. package/src/transformers/program.d.ts +0 -4
  86. package/src/transformers/program.js +5 -56
  87. package/src/version.js +1 -1
  88. package/compiler-cli.externs.js +0 -0
  89. package/index.mjs +0 -20
  90. package/linker/babel/babel.externs.js +0 -0
  91. package/linker/babel/index.mjs +0 -11
  92. package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
  93. package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
  94. package/linker/babel/src/babel_declaration_scope.mjs +0 -52
  95. package/linker/babel/src/babel_plugin.mjs +0 -23
  96. package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
  97. package/linker/babel/src/linker_plugin_options.mjs +0 -2
  98. package/linker/index.mjs +0 -7
  99. package/linker/linker.externs.js +0 -0
  100. package/linker/src/ast/ast_host.mjs +0 -9
  101. package/linker/src/ast/ast_value.mjs +0 -256
  102. package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
  103. package/linker/src/ast/utils.mjs +0 -17
  104. package/linker/src/fatal_linker_error.mjs +0 -30
  105. package/linker/src/file_linker/declaration_scope.mjs +0 -9
  106. package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
  107. package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
  108. package/linker/src/file_linker/file_linker.mjs +0 -70
  109. package/linker/src/file_linker/get_source_file.mjs +0 -28
  110. package/linker/src/file_linker/linker_environment.mjs +0 -23
  111. package/linker/src/file_linker/linker_options.mjs +0 -16
  112. package/linker/src/file_linker/needs_linking.mjs +0 -27
  113. package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
  114. package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
  115. package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
  116. package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
  117. package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
  118. package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
  119. package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
  120. package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
  121. package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
  122. package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
  123. package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
  124. package/linker/src/file_linker/translator.mjs +0 -23
  125. package/linker/src/linker_import_generator.mjs +0 -28
  126. package/ngcc/index.mjs +0 -16
  127. package/ngcc/main-ivy-ngcc.mjs +0 -12
  128. package/ngcc/main-ngcc.mjs +0 -32
  129. package/ngcc/ngcc.externs.js +0 -0
  130. package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
  131. package/ngcc/src/analysis/migration_host.mjs +0 -80
  132. package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
  133. package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
  134. package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
  135. package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
  136. package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
  137. package/ngcc/src/analysis/types.mjs +0 -2
  138. package/ngcc/src/analysis/util.mjs +0 -19
  139. package/ngcc/src/command_line_options.mjs +0 -142
  140. package/ngcc/src/constants.mjs +0 -10
  141. package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
  142. package/ngcc/src/dependencies/dependency_host.mjs +0 -102
  143. package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
  144. package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
  145. package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
  146. package/ngcc/src/dependencies/module_resolver.mjs +0 -233
  147. package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
  148. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
  149. package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
  150. package/ngcc/src/entry_point_finder/interface.mjs +0 -2
  151. package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
  152. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
  153. package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
  154. package/ngcc/src/entry_point_finder/utils.mjs +0 -176
  155. package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
  156. package/ngcc/src/execution/api.mjs +0 -2
  157. package/ngcc/src/execution/cluster/api.mjs +0 -9
  158. package/ngcc/src/execution/cluster/executor.mjs +0 -27
  159. package/ngcc/src/execution/cluster/master.mjs +0 -261
  160. package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
  161. package/ngcc/src/execution/cluster/utils.mjs +0 -59
  162. package/ngcc/src/execution/cluster/worker.mjs +0 -81
  163. package/ngcc/src/execution/create_compile_function.mjs +0 -62
  164. package/ngcc/src/execution/single_process_executor.mjs +0 -57
  165. package/ngcc/src/execution/tasks/api.mjs +0 -22
  166. package/ngcc/src/execution/tasks/completion.mjs +0 -61
  167. package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
  168. package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
  169. package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
  170. package/ngcc/src/execution/tasks/utils.mjs +0 -114
  171. package/ngcc/src/host/commonjs_host.mjs +0 -220
  172. package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
  173. package/ngcc/src/host/delegating_host.mjs +0 -140
  174. package/ngcc/src/host/esm2015_host.mjs +0 -2293
  175. package/ngcc/src/host/esm5_host.mjs +0 -721
  176. package/ngcc/src/host/ngcc_host.mjs +0 -15
  177. package/ngcc/src/host/umd_host.mjs +0 -486
  178. package/ngcc/src/host/utils.mjs +0 -12
  179. package/ngcc/src/locking/async_locker.mjs +0 -76
  180. package/ngcc/src/locking/lock_file.mjs +0 -4
  181. package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
  182. package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
  183. package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
  184. package/ngcc/src/locking/sync_locker.mjs +0 -52
  185. package/ngcc/src/main.mjs +0 -134
  186. package/ngcc/src/migrations/migration.mjs +0 -2
  187. package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
  188. package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
  189. package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
  190. package/ngcc/src/migrations/utils.mjs +0 -117
  191. package/ngcc/src/ngcc_options.mjs +0 -119
  192. package/ngcc/src/packages/build_marker.mjs +0 -84
  193. package/ngcc/src/packages/bundle_program.mjs +0 -52
  194. package/ngcc/src/packages/configuration.mjs +0 -250
  195. package/ngcc/src/packages/entry_point.mjs +0 -239
  196. package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
  197. package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
  198. package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
  199. package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
  200. package/ngcc/src/packages/source_file_cache.mjs +0 -187
  201. package/ngcc/src/packages/transformer.mjs +0 -140
  202. package/ngcc/src/path_mappings.mjs +0 -13
  203. package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
  204. package/ngcc/src/rendering/dts_renderer.mjs +0 -139
  205. package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
  206. package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
  207. package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
  208. package/ngcc/src/rendering/renderer.mjs +0 -170
  209. package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
  210. package/ngcc/src/rendering/source_maps.mjs +0 -54
  211. package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
  212. package/ngcc/src/rendering/utils.mjs +0 -20
  213. package/ngcc/src/utils.mjs +0 -144
  214. package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
  215. package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
  216. package/ngcc/src/writing/cleaning/utils.mjs +0 -16
  217. package/ngcc/src/writing/file_writer.mjs +0 -2
  218. package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
  219. package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
  220. package/ngcc/src/writing/package_json_updater.mjs +0 -144
  221. package/src/diagnostics/translate_diagnostics.mjs +0 -47
  222. package/src/diagnostics/typescript_version.mjs +0 -79
  223. package/src/extract_i18n.mjs +0 -46
  224. package/src/language_services.mjs +0 -18
  225. package/src/main.mjs +0 -185
  226. package/src/metadata/bundle_index_host.mjs +0 -107
  227. package/src/metadata/bundler.mjs +0 -556
  228. package/src/metadata/collector.mjs +0 -701
  229. package/src/metadata/evaluator.mjs +0 -643
  230. package/src/metadata/index.mjs +0 -11
  231. package/src/metadata/index_writer.mjs +0 -44
  232. package/src/metadata/schema.mjs +0 -102
  233. package/src/metadata/symbols.mjs +0 -117
  234. package/src/ngtsc/annotations/annotations.externs.js +0 -0
  235. package/src/ngtsc/annotations/index.mjs +0 -15
  236. package/src/ngtsc/annotations/src/api.mjs +0 -9
  237. package/src/ngtsc/annotations/src/component.mjs +0 -1064
  238. package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
  239. package/src/ngtsc/annotations/src/directive.mjs +0 -692
  240. package/src/ngtsc/annotations/src/factory.mjs +0 -17
  241. package/src/ngtsc/annotations/src/injectable.mjs +0 -260
  242. package/src/ngtsc/annotations/src/metadata.mjs +0 -145
  243. package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
  244. package/src/ngtsc/annotations/src/pipe.mjs +0 -151
  245. package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
  246. package/src/ngtsc/annotations/src/util.mjs +0 -495
  247. package/src/ngtsc/core/api/index.mjs +0 -12
  248. package/src/ngtsc/core/api/src/adapter.mjs +0 -9
  249. package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
  250. package/src/ngtsc/core/api/src/options.mjs +0 -9
  251. package/src/ngtsc/core/api/src/public_options.mjs +0 -9
  252. package/src/ngtsc/core/api.externs.js +0 -0
  253. package/src/ngtsc/core/core.externs.js +0 -0
  254. package/src/ngtsc/core/index.mjs +0 -10
  255. package/src/ngtsc/core/src/compiler.mjs +0 -908
  256. package/src/ngtsc/core/src/config.mjs +0 -15
  257. package/src/ngtsc/core/src/host.mjs +0 -229
  258. package/src/ngtsc/cycles/cycles.externs.js +0 -0
  259. package/src/ngtsc/cycles/index.mjs +0 -10
  260. package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
  261. package/src/ngtsc/cycles/src/imports.mjs +0 -152
  262. package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
  263. package/src/ngtsc/diagnostics/index.mjs +0 -11
  264. package/src/ngtsc/diagnostics/src/error.mjs +0 -51
  265. package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
  266. package/src/ngtsc/diagnostics/src/util.mjs +0 -21
  267. package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
  268. package/src/ngtsc/entry_point/index.mjs +0 -12
  269. package/src/ngtsc/entry_point/src/generator.mjs +0 -35
  270. package/src/ngtsc/entry_point/src/logic.mjs +0 -35
  271. package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
  272. package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
  273. package/src/ngtsc/file_system/file_system.externs.js +0 -0
  274. package/src/ngtsc/file_system/index.mjs +0 -13
  275. package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
  276. package/src/ngtsc/file_system/src/helpers.mjs +0 -99
  277. package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
  278. package/src/ngtsc/file_system/src/logical.mjs +0 -84
  279. package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
  280. package/src/ngtsc/file_system/src/types.mjs +0 -9
  281. package/src/ngtsc/file_system/src/util.mjs +0 -22
  282. package/src/ngtsc/file_system/testing/index.mjs +0 -13
  283. package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
  284. package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
  285. package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
  286. package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
  287. package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
  288. package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
  289. package/src/ngtsc/imports/imports.externs.js +0 -0
  290. package/src/ngtsc/imports/index.mjs +0 -14
  291. package/src/ngtsc/imports/src/alias.mjs +0 -137
  292. package/src/ngtsc/imports/src/core.mjs +0 -78
  293. package/src/ngtsc/imports/src/default.mjs +0 -135
  294. package/src/ngtsc/imports/src/emitter.mjs +0 -266
  295. package/src/ngtsc/imports/src/find_export.mjs +0 -56
  296. package/src/ngtsc/imports/src/reexport.mjs +0 -9
  297. package/src/ngtsc/imports/src/references.mjs +0 -137
  298. package/src/ngtsc/imports/src/resolver.mjs +0 -24
  299. package/src/ngtsc/incremental/api.externs.js +0 -0
  300. package/src/ngtsc/incremental/api.mjs +0 -9
  301. package/src/ngtsc/incremental/incremental.externs.js +0 -0
  302. package/src/ngtsc/incremental/index.mjs +0 -12
  303. package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
  304. package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
  305. package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
  306. package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
  307. package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
  308. package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
  309. package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
  310. package/src/ngtsc/incremental/src/incremental.mjs +0 -267
  311. package/src/ngtsc/incremental/src/noop.mjs +0 -13
  312. package/src/ngtsc/incremental/src/state.mjs +0 -17
  313. package/src/ngtsc/incremental/src/strategy.mjs +0 -76
  314. package/src/ngtsc/indexer/index.mjs +0 -11
  315. package/src/ngtsc/indexer/indexer.externs.js +0 -0
  316. package/src/ngtsc/indexer/src/api.mjs +0 -30
  317. package/src/ngtsc/indexer/src/context.mjs +0 -25
  318. package/src/ngtsc/indexer/src/template.mjs +0 -303
  319. package/src/ngtsc/indexer/src/transform.mjs +0 -51
  320. package/src/ngtsc/logging/index.mjs +0 -10
  321. package/src/ngtsc/logging/logging.externs.js +0 -0
  322. package/src/ngtsc/logging/src/console_logger.mjs +0 -43
  323. package/src/ngtsc/logging/src/logger.mjs +0 -15
  324. package/src/ngtsc/logging/testing/index.mjs +0 -9
  325. package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
  326. package/src/ngtsc/logging/testing/testing.externs.js +0 -0
  327. package/src/ngtsc/metadata/index.mjs +0 -15
  328. package/src/ngtsc/metadata/metadata.externs.js +0 -0
  329. package/src/ngtsc/metadata/src/api.mjs +0 -13
  330. package/src/ngtsc/metadata/src/dts.mjs +0 -143
  331. package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
  332. package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
  333. package/src/ngtsc/metadata/src/registry.mjs +0 -80
  334. package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
  335. package/src/ngtsc/metadata/src/util.mjs +0 -200
  336. package/src/ngtsc/partial_evaluator/index.mjs +0 -12
  337. package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
  338. package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
  339. package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -171
  340. package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -86
  341. package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
  342. package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -683
  343. package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
  344. package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
  345. package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
  346. package/src/ngtsc/perf/index.mjs +0 -11
  347. package/src/ngtsc/perf/perf.externs.js +0 -0
  348. package/src/ngtsc/perf/src/api.mjs +0 -278
  349. package/src/ngtsc/perf/src/clock.mjs +0 -15
  350. package/src/ngtsc/perf/src/noop.mjs +0 -21
  351. package/src/ngtsc/perf/src/recorder.mjs +0 -125
  352. package/src/ngtsc/program.mjs +0 -247
  353. package/src/ngtsc/program_driver/index.mjs +0 -10
  354. package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
  355. package/src/ngtsc/program_driver/src/api.mjs +0 -22
  356. package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
  357. package/src/ngtsc/reflection/index.mjs +0 -12
  358. package/src/ngtsc/reflection/reflection.externs.js +0 -0
  359. package/src/ngtsc/reflection/src/host.mjs +0 -73
  360. package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
  361. package/src/ngtsc/reflection/src/typescript.mjs +0 -608
  362. package/src/ngtsc/reflection/src/util.mjs +0 -21
  363. package/src/ngtsc/resource/index.mjs +0 -9
  364. package/src/ngtsc/resource/resource.externs.js +0 -0
  365. package/src/ngtsc/resource/src/loader.mjs +0 -242
  366. package/src/ngtsc/routing/index.mjs +0 -11
  367. package/src/ngtsc/routing/routing.externs.js +0 -0
  368. package/src/ngtsc/routing/src/analyzer.mjs +0 -69
  369. package/src/ngtsc/routing/src/lazy.mjs +0 -168
  370. package/src/ngtsc/routing/src/route.mjs +0 -51
  371. package/src/ngtsc/scope/index.mjs +0 -12
  372. package/src/ngtsc/scope/scope.externs.js +0 -0
  373. package/src/ngtsc/scope/src/api.mjs +0 -9
  374. package/src/ngtsc/scope/src/component_scope.mjs +0 -31
  375. package/src/ngtsc/scope/src/dependency.mjs +0 -134
  376. package/src/ngtsc/scope/src/local.mjs +0 -531
  377. package/src/ngtsc/scope/src/typecheck.mjs +0 -83
  378. package/src/ngtsc/shims/api.externs.js +0 -0
  379. package/src/ngtsc/shims/api.mjs +0 -2
  380. package/src/ngtsc/shims/index.mjs +0 -14
  381. package/src/ngtsc/shims/shims.externs.js +0 -0
  382. package/src/ngtsc/shims/src/adapter.mjs +0 -188
  383. package/src/ngtsc/shims/src/expando.mjs +0 -102
  384. package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
  385. package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
  386. package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
  387. package/src/ngtsc/shims/src/util.mjs +0 -26
  388. package/src/ngtsc/sourcemaps/index.mjs +0 -11
  389. package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
  390. package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
  391. package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
  392. package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
  393. package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
  394. package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
  395. package/src/ngtsc/switch/index.mjs +0 -9
  396. package/src/ngtsc/switch/src/switch.mjs +0 -115
  397. package/src/ngtsc/switch/switch.externs.js +0 -0
  398. package/src/ngtsc/transform/index.mjs +0 -14
  399. package/src/ngtsc/transform/src/alias.mjs +0 -30
  400. package/src/ngtsc/transform/src/api.mjs +0 -63
  401. package/src/ngtsc/transform/src/compilation.mjs +0 -485
  402. package/src/ngtsc/transform/src/declaration.mjs +0 -182
  403. package/src/ngtsc/transform/src/trait.mjs +0 -95
  404. package/src/ngtsc/transform/src/transform.mjs +0 -298
  405. package/src/ngtsc/transform/src/utils.mjs +0 -57
  406. package/src/ngtsc/transform/transform.externs.js +0 -0
  407. package/src/ngtsc/translator/index.mjs +0 -14
  408. package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
  409. package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
  410. package/src/ngtsc/translator/src/context.mjs +0 -24
  411. package/src/ngtsc/translator/src/import_manager.mjs +0 -48
  412. package/src/ngtsc/translator/src/translator.mjs +0 -317
  413. package/src/ngtsc/translator/src/type_translator.mjs +0 -204
  414. package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
  415. package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
  416. package/src/ngtsc/translator/translator.externs.js +0 -0
  417. package/src/ngtsc/tsc_plugin.mjs +0 -98
  418. package/src/ngtsc/typecheck/api/api.externs.js +0 -0
  419. package/src/ngtsc/typecheck/api/api.mjs +0 -9
  420. package/src/ngtsc/typecheck/api/checker.mjs +0 -31
  421. package/src/ngtsc/typecheck/api/completion.mjs +0 -16
  422. package/src/ngtsc/typecheck/api/context.mjs +0 -9
  423. package/src/ngtsc/typecheck/api/index.mjs +0 -14
  424. package/src/ngtsc/typecheck/api/scope.mjs +0 -9
  425. package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
  426. package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
  427. package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
  428. package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
  429. package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
  430. package/src/ngtsc/typecheck/index.mjs +0 -12
  431. package/src/ngtsc/typecheck/src/checker.mjs +0 -591
  432. package/src/ngtsc/typecheck/src/comments.mjs +0 -159
  433. package/src/ngtsc/typecheck/src/completion.mjs +0 -155
  434. package/src/ngtsc/typecheck/src/context.mjs +0 -350
  435. package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
  436. package/src/ngtsc/typecheck/src/dom.mjs +0 -68
  437. package/src/ngtsc/typecheck/src/environment.mjs +0 -146
  438. package/src/ngtsc/typecheck/src/expression.mjs +0 -412
  439. package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
  440. package/src/ngtsc/typecheck/src/oob.mjs +0 -112
  441. package/src/ngtsc/typecheck/src/shim.mjs +0 -37
  442. package/src/ngtsc/typecheck/src/source.mjs +0 -74
  443. package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
  444. package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
  445. package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -472
  446. package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
  447. package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
  448. package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
  449. package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
  450. package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -140
  451. package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -80
  452. package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
  453. package/src/ngtsc/util/src/path.mjs +0 -18
  454. package/src/ngtsc/util/src/typescript.mjs +0 -143
  455. package/src/ngtsc/util/src/visitor.mjs +0 -107
  456. package/src/ngtsc/util/util.externs.js +0 -0
  457. package/src/perform_compile.mjs +0 -275
  458. package/src/perform_watch.mjs +0 -247
  459. package/src/tooling.mjs +0 -32
  460. package/src/transformers/api.mjs +0 -27
  461. package/src/transformers/compiler_host.mjs +0 -593
  462. package/src/transformers/downlevel_decorators_transform.mjs +0 -507
  463. package/src/transformers/entry_points.mjs +0 -10
  464. package/src/transformers/inline_resources.mjs +0 -269
  465. package/src/transformers/lower_expressions.mjs +0 -336
  466. package/src/transformers/metadata_cache.mjs +0 -53
  467. package/src/transformers/metadata_reader.mjs +0 -104
  468. package/src/transformers/node_emitter.mjs +0 -606
  469. package/src/transformers/node_emitter_transform.mjs +0 -78
  470. package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
  471. package/src/transformers/program.mjs +0 -935
  472. package/src/transformers/r3_metadata_transform.mjs +0 -46
  473. package/src/transformers/r3_transform.mjs +0 -29
  474. package/src/transformers/util.mjs +0 -89
  475. package/src/typescript_support.mjs +0 -57
  476. package/src/version.mjs +0 -15
@@ -1,76 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { NGCC_TIMED_OUT_EXIT_CODE } from '../constants';
3
- class TimeoutError extends Error {
4
- constructor() {
5
- super(...arguments);
6
- this.code = NGCC_TIMED_OUT_EXIT_CODE;
7
- }
8
- }
9
- /**
10
- * AsyncLocker is used to prevent more than one instance of ngcc executing at the same time,
11
- * when being called in an asynchronous context.
12
- *
13
- * * When ngcc starts executing, it creates a file in the `compiler-cli/ngcc` folder.
14
- * * If it finds one is already there then it pauses and waits for the file to be removed by the
15
- * other process. If the file is not removed within a set timeout period given by
16
- * `retryDelay*retryAttempts` an error is thrown with a suitable error message.
17
- * * If the process locking the file changes, then we restart the timeout.
18
- * * When ngcc completes executing, it removes the file so that future ngcc executions can start.
19
- */
20
- export class AsyncLocker {
21
- constructor(lockFile, logger, retryDelay, retryAttempts) {
22
- this.lockFile = lockFile;
23
- this.logger = logger;
24
- this.retryDelay = retryDelay;
25
- this.retryAttempts = retryAttempts;
26
- }
27
- /**
28
- * Run a function guarded by the lock file.
29
- *
30
- * @param fn The function to run.
31
- */
32
- lock(fn) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- yield this.create();
35
- try {
36
- return yield fn();
37
- }
38
- finally {
39
- this.lockFile.remove();
40
- }
41
- });
42
- }
43
- create() {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- let pid = '';
46
- for (let attempts = 0; attempts < this.retryAttempts; attempts++) {
47
- try {
48
- return this.lockFile.write();
49
- }
50
- catch (e) {
51
- if (e.code !== 'EEXIST') {
52
- throw e;
53
- }
54
- const newPid = this.lockFile.read();
55
- if (newPid !== pid) {
56
- // The process locking the file has changed, so restart the timeout
57
- attempts = 0;
58
- pid = newPid;
59
- }
60
- if (attempts === 0) {
61
- this.logger.info(`Another process, with id ${pid}, is currently running ngcc.\n` +
62
- `Waiting up to ${this.retryDelay * this.retryAttempts / 1000}s for it to finish.\n` +
63
- `(If you are sure no ngcc process is running then you should delete the lock-file at ${this.lockFile.path}.)`);
64
- }
65
- // The file is still locked by another process so wait for a bit and retry
66
- yield new Promise(resolve => setTimeout(resolve, this.retryDelay));
67
- }
68
- }
69
- // If we fall out of the loop then we ran out of rety attempts
70
- throw new TimeoutError(`Timed out waiting ${this.retryAttempts * this.retryDelay /
71
- 1000}s for another ngcc process, with id ${pid}, to complete.\n` +
72
- `(If you are sure no ngcc process is running then you should delete the lock-file at ${this.lockFile.path}.)`);
73
- });
74
- }
75
- }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNfbG9ja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2xvY2tpbmcvYXN5bmNfbG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFRQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFJdEQsTUFBTSxZQUFhLFNBQVEsS0FBSztJQUFoQzs7UUFDRSxTQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFDbEMsQ0FBQztDQUFBO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ1ksUUFBa0IsRUFBWSxNQUFjLEVBQVUsVUFBa0IsRUFDeEUsYUFBcUI7UUFEckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFZLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3hFLGtCQUFhLEdBQWIsYUFBYSxDQUFRO0lBQUcsQ0FBQztJQUVyQzs7OztPQUlHO0lBQ0csSUFBSSxDQUFJLEVBQW9COztZQUNoQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixJQUFJO2dCQUNGLE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQzthQUNuQjtvQkFBUztnQkFDUixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQztLQUFBO0lBRWUsTUFBTTs7WUFDcEIsSUFBSSxHQUFHLEdBQVcsRUFBRSxDQUFDO1lBQ3JCLEtBQUssSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNoRSxJQUFJO29CQUNGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDOUI7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTt3QkFDdkIsTUFBTSxDQUFDLENBQUM7cUJBQ1Q7b0JBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFO3dCQUNsQixtRUFBbUU7d0JBQ25FLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2IsR0FBRyxHQUFHLE1BQU0sQ0FBQztxQkFDZDtvQkFDRCxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNaLDRCQUE0QixHQUFHLGdDQUFnQzs0QkFDL0QsaUJBQWlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHVCQUF1Qjs0QkFDbkYsdUZBQ0ksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO3FCQUNqQztvQkFDRCwwRUFBMEU7b0JBQzFFLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2lCQUNwRTthQUNGO1lBQ0QsOERBQThEO1lBQzlELE1BQU0sSUFBSSxZQUFZLENBQ2xCLHFCQUNJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVU7Z0JBQ3BDLElBQUksdUNBQXVDLEdBQUcsa0JBQWtCO2dCQUNwRSx1RkFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvbG9nZ2luZyc7XG5pbXBvcnQge05HQ0NfVElNRURfT1VUX0VYSVRfQ09ERX0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuaW1wb3J0IHtMb2NrRmlsZX0gZnJvbSAnLi9sb2NrX2ZpbGUnO1xuXG5jbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGUgPSBOR0NDX1RJTUVEX09VVF9FWElUX0NPREU7XG59XG5cbi8qKlxuICogQXN5bmNMb2NrZXIgaXMgdXNlZCB0byBwcmV2ZW50IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgbmdjYyBleGVjdXRpbmcgYXQgdGhlIHNhbWUgdGltZSxcbiAqIHdoZW4gYmVpbmcgY2FsbGVkIGluIGFuIGFzeW5jaHJvbm91cyBjb250ZXh0LlxuICpcbiAqICogV2hlbiBuZ2NjIHN0YXJ0cyBleGVjdXRpbmcsIGl0IGNyZWF0ZXMgYSBmaWxlIGluIHRoZSBgY29tcGlsZXItY2xpL25nY2NgIGZvbGRlci5cbiAqICogSWYgaXQgZmluZHMgb25lIGlzIGFscmVhZHkgdGhlcmUgdGhlbiBpdCBwYXVzZXMgYW5kIHdhaXRzIGZvciB0aGUgZmlsZSB0byBiZSByZW1vdmVkIGJ5IHRoZVxuICogICBvdGhlciBwcm9jZXNzLiBJZiB0aGUgZmlsZSBpcyBub3QgcmVtb3ZlZCB3aXRoaW4gYSBzZXQgdGltZW91dCBwZXJpb2QgZ2l2ZW4gYnlcbiAqICAgYHJldHJ5RGVsYXkqcmV0cnlBdHRlbXB0c2AgYW4gZXJyb3IgaXMgdGhyb3duIHdpdGggYSBzdWl0YWJsZSBlcnJvciBtZXNzYWdlLlxuICogKiBJZiB0aGUgcHJvY2VzcyBsb2NraW5nIHRoZSBmaWxlIGNoYW5nZXMsIHRoZW4gd2UgcmVzdGFydCB0aGUgdGltZW91dC5cbiAqICogV2hlbiBuZ2NjIGNvbXBsZXRlcyBleGVjdXRpbmcsIGl0IHJlbW92ZXMgdGhlIGZpbGUgc28gdGhhdCBmdXR1cmUgbmdjYyBleGVjdXRpb25zIGNhbiBzdGFydC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzeW5jTG9ja2VyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGxvY2tGaWxlOiBMb2NrRmlsZSwgcHJvdGVjdGVkIGxvZ2dlcjogTG9nZ2VyLCBwcml2YXRlIHJldHJ5RGVsYXk6IG51bWJlcixcbiAgICAgIHByaXZhdGUgcmV0cnlBdHRlbXB0czogbnVtYmVyKSB7fVxuXG4gIC8qKlxuICAgKiBSdW4gYSBmdW5jdGlvbiBndWFyZGVkIGJ5IHRoZSBsb2NrIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gcnVuLlxuICAgKi9cbiAgYXN5bmMgbG9jazxUPihmbjogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlKCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvY2tGaWxlLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGUoKSB7XG4gICAgbGV0IHBpZDogc3RyaW5nID0gJyc7XG4gICAgZm9yIChsZXQgYXR0ZW1wdHMgPSAwOyBhdHRlbXB0cyA8IHRoaXMucmV0cnlBdHRlbXB0czsgYXR0ZW1wdHMrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9ja0ZpbGUud3JpdGUoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUuY29kZSAhPT0gJ0VFWElTVCcpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1BpZCA9IHRoaXMubG9ja0ZpbGUucmVhZCgpO1xuICAgICAgICBpZiAobmV3UGlkICE9PSBwaWQpIHtcbiAgICAgICAgICAvLyBUaGUgcHJvY2VzcyBsb2NraW5nIHRoZSBmaWxlIGhhcyBjaGFuZ2VkLCBzbyByZXN0YXJ0IHRoZSB0aW1lb3V0XG4gICAgICAgICAgYXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHBpZCA9IG5ld1BpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXR0ZW1wdHMgPT09IDApIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICBgQW5vdGhlciBwcm9jZXNzLCB3aXRoIGlkICR7cGlkfSwgaXMgY3VycmVudGx5IHJ1bm5pbmcgbmdjYy5cXG5gICtcbiAgICAgICAgICAgICAgYFdhaXRpbmcgdXAgdG8gJHt0aGlzLnJldHJ5RGVsYXkgKiB0aGlzLnJldHJ5QXR0ZW1wdHMgLyAxMDAwfXMgZm9yIGl0IHRvIGZpbmlzaC5cXG5gICtcbiAgICAgICAgICAgICAgYChJZiB5b3UgYXJlIHN1cmUgbm8gbmdjYyBwcm9jZXNzIGlzIHJ1bm5pbmcgdGhlbiB5b3Ugc2hvdWxkIGRlbGV0ZSB0aGUgbG9jay1maWxlIGF0ICR7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvY2tGaWxlLnBhdGh9LilgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgZmlsZSBpcyBzdGlsbCBsb2NrZWQgYnkgYW5vdGhlciBwcm9jZXNzIHNvIHdhaXQgZm9yIGEgYml0IGFuZCByZXRyeVxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGhpcy5yZXRyeURlbGF5KSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIHdlIGZhbGwgb3V0IG9mIHRoZSBsb29wIHRoZW4gd2UgcmFuIG91dCBvZiByZXR5IGF0dGVtcHRzXG4gICAgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcihcbiAgICAgICAgYFRpbWVkIG91dCB3YWl0aW5nICR7XG4gICAgICAgICAgICB0aGlzLnJldHJ5QXR0ZW1wdHMgKiB0aGlzLnJldHJ5RGVsYXkgL1xuICAgICAgICAgICAgMTAwMH1zIGZvciBhbm90aGVyIG5nY2MgcHJvY2Vzcywgd2l0aCBpZCAke3BpZH0sIHRvIGNvbXBsZXRlLlxcbmAgK1xuICAgICAgICBgKElmIHlvdSBhcmUgc3VyZSBubyBuZ2NjIHByb2Nlc3MgaXMgcnVubmluZyB0aGVuIHlvdSBzaG91bGQgZGVsZXRlIHRoZSBsb2NrLWZpbGUgYXQgJHtcbiAgICAgICAgICAgIHRoaXMubG9ja0ZpbGUucGF0aH0uKWApO1xuICB9XG59XG4iXX0=
@@ -1,4 +0,0 @@
1
- export function getLockFilePath(fs) {
2
- return fs.resolve(require.resolve('@angular/compiler-cli/ngcc'), '../__ngcc_lock_file__');
3
- }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja19maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2xvY2tpbmcvbG9ja19maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sVUFBVSxlQUFlLENBQUMsRUFBb0I7SUFDbEQsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7QWJzb2x1dGVGc1BhdGgsIFBhdGhNYW5pcHVsYXRpb259IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NrRmlsZVBhdGgoZnM6IFBhdGhNYW5pcHVsYXRpb24pIHtcbiAgcmV0dXJuIGZzLnJlc29sdmUocmVxdWlyZS5yZXNvbHZlKCdAYW5ndWxhci9jb21waWxlci1jbGkvbmdjYycpLCAnLi4vX19uZ2NjX2xvY2tfZmlsZV9fJyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9ja0ZpbGUge1xuICBwYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbiAgLyoqXG4gICAqIFdyaXRlIGEgbG9jayBmaWxlIHRvIGRpc2sgY29udGFpbmluZyB0aGUgUElEIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuXG4gICAqL1xuICB3cml0ZSgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWFkIHRoZSBQSUQsIG9mIHRoZSBwcm9jZXNzIGhvbGRpbmcgdGhlIGxvY2ssIGZyb20gdGhlIGxvY2stZmlsZS5cbiAgICpcbiAgICogSXQgaXMgZmVhc2libGUgdGhhdCB0aGUgbG9jay1maWxlIHdhcyByZW1vdmVkIGJldHdlZW4gdGhlIGNhbGwgdG8gYHdyaXRlKClgIHRoYXQgZWZmZWN0aXZlbHlcbiAgICogY2hlY2tzIGZvciBleGlzdGVuY2UgYW5kIHRoaXMgYXR0ZW1wdCB0byByZWFkIHRoZSBmaWxlLiBJZiBzbyB0aGVuIHRoaXMgbWV0aG9kIHNob3VsZCBqdXN0XG4gICAqIGdyYWNlZnVsbHkgcmV0dXJuIGBcInt1bmtub3dufVwiYC5cbiAgICovXG4gIHJlYWQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGxvY2sgZmlsZSBmcm9tIGRpc2ssIHdoZXRoZXIgb3Igbm90IGl0IGV4aXN0cy5cbiAgICovXG4gIHJlbW92ZSgpOiB2b2lkO1xufVxuIl19
@@ -1,78 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { fork } from 'child_process';
9
- import { LogLevel } from '../../../../src/ngtsc/logging';
10
- import { getLockFilePath } from '../lock_file';
11
- import { removeLockFile } from './util';
12
- /// <reference types="node" />
13
- /**
14
- * This `LockFile` implementation uses a child-process to remove the lock file when the main process
15
- * exits (for whatever reason).
16
- *
17
- * There are a few milliseconds between the child-process being forked and it registering its
18
- * `disconnect` event, which is responsible for tidying up the lock-file in the event that the main
19
- * process exits unexpectedly.
20
- *
21
- * We eagerly create the unlocker child-process so that it maximizes the time before the lock-file
22
- * is actually written, which makes it very unlikely that the unlocker would not be ready in the
23
- * case that the developer hits Ctrl-C or closes the terminal within a fraction of a second of the
24
- * lock-file being created.
25
- *
26
- * The worst case scenario is that ngcc is killed too quickly and leaves behind an orphaned
27
- * lock-file. In which case the next ngcc run will display a helpful error message about deleting
28
- * the lock-file.
29
- */
30
- export class LockFileWithChildProcess {
31
- constructor(fs, logger) {
32
- this.fs = fs;
33
- this.logger = logger;
34
- this.path = getLockFilePath(fs);
35
- this.unlocker = this.createUnlocker(this.path);
36
- }
37
- write() {
38
- if (this.unlocker === null) {
39
- // In case we already disconnected the previous unlocker child-process, perhaps by calling
40
- // `remove()`. Normally the LockFile should only be used once per instance.
41
- this.unlocker = this.createUnlocker(this.path);
42
- }
43
- this.logger.debug(`Attemping to write lock-file at ${this.path} with PID ${process.pid}`);
44
- // To avoid race conditions, check for existence of the lock-file by trying to create it.
45
- // This will throw an error if the file already exists.
46
- this.fs.writeFile(this.path, process.pid.toString(), /* exclusive */ true);
47
- this.logger.debug(`Written lock-file at ${this.path} with PID ${process.pid}`);
48
- }
49
- read() {
50
- try {
51
- return this.fs.readFile(this.path);
52
- }
53
- catch (_a) {
54
- return '{unknown}';
55
- }
56
- }
57
- remove() {
58
- removeLockFile(this.fs, this.logger, this.path, process.pid.toString());
59
- if (this.unlocker !== null) {
60
- // If there is an unlocker child-process then disconnect from it so that it can exit itself.
61
- this.unlocker.disconnect();
62
- this.unlocker = null;
63
- }
64
- }
65
- createUnlocker(path) {
66
- var _a, _b;
67
- this.logger.debug('Forking unlocker child-process');
68
- const logLevel = this.logger.level !== undefined ? this.logger.level.toString() : LogLevel.info.toString();
69
- const isWindows = process.platform === 'win32';
70
- const unlocker = fork(__dirname + '/unlocker.js', [path, logLevel], { detached: true, stdio: isWindows ? 'pipe' : 'inherit' });
71
- if (isWindows) {
72
- (_a = unlocker.stdout) === null || _a === void 0 ? void 0 : _a.on('data', process.stdout.write.bind(process.stdout));
73
- (_b = unlocker.stderr) === null || _b === void 0 ? void 0 : _b.on('data', process.stderr.write.bind(process.stderr));
74
- }
75
- return unlocker;
76
- }
77
- }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvbG9ja2luZy9sb2NrX2ZpbGVfd2l0aF9jaGlsZF9wcm9jZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBZSxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFTLFFBQVEsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxlQUFlLEVBQVcsTUFBTSxjQUFjLENBQUM7QUFFdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUV0Qyw4QkFBOEI7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQXNCLEVBQWMsRUFBWSxNQUFjO1FBQXhDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQzVELElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUdELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzFCLDBGQUEwRjtZQUMxRiwyRUFBMkU7WUFDM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxJQUFJLENBQUMsSUFBSSxhQUFhLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLHlGQUF5RjtRQUN6Rix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLElBQUksYUFBYSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUk7WUFDRixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQztRQUFDLFdBQU07WUFDTixPQUFPLFdBQVcsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzFCLDRGQUE0RjtZQUM1RixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVTLGNBQWMsQ0FBQyxJQUFvQjs7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxNQUFNLFFBQVEsR0FDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FDakIsU0FBUyxHQUFHLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFDNUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQUEsUUFBUSxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDdkUsTUFBQSxRQUFRLENBQUMsTUFBTSwwQ0FBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN4RTtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtDaGlsZFByb2Nlc3MsIGZvcmt9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCBGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXIsIExvZ0xldmVsfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbmd0c2MvbG9nZ2luZyc7XG5pbXBvcnQge2dldExvY2tGaWxlUGF0aCwgTG9ja0ZpbGV9IGZyb20gJy4uL2xvY2tfZmlsZSc7XG5cbmltcG9ydCB7cmVtb3ZlTG9ja0ZpbGV9IGZyb20gJy4vdXRpbCc7XG5cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibm9kZVwiIC8+XG5cbi8qKlxuICogVGhpcyBgTG9ja0ZpbGVgIGltcGxlbWVudGF0aW9uIHVzZXMgYSBjaGlsZC1wcm9jZXNzIHRvIHJlbW92ZSB0aGUgbG9jayBmaWxlIHdoZW4gdGhlIG1haW4gcHJvY2Vzc1xuICogZXhpdHMgKGZvciB3aGF0ZXZlciByZWFzb24pLlxuICpcbiAqIFRoZXJlIGFyZSBhIGZldyBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgY2hpbGQtcHJvY2VzcyBiZWluZyBmb3JrZWQgYW5kIGl0IHJlZ2lzdGVyaW5nIGl0c1xuICogYGRpc2Nvbm5lY3RgIGV2ZW50LCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgdGlkeWluZyB1cCB0aGUgbG9jay1maWxlIGluIHRoZSBldmVudCB0aGF0IHRoZSBtYWluXG4gKiBwcm9jZXNzIGV4aXRzIHVuZXhwZWN0ZWRseS5cbiAqXG4gKiBXZSBlYWdlcmx5IGNyZWF0ZSB0aGUgdW5sb2NrZXIgY2hpbGQtcHJvY2VzcyBzbyB0aGF0IGl0IG1heGltaXplcyB0aGUgdGltZSBiZWZvcmUgdGhlIGxvY2stZmlsZVxuICogaXMgYWN0dWFsbHkgd3JpdHRlbiwgd2hpY2ggbWFrZXMgaXQgdmVyeSB1bmxpa2VseSB0aGF0IHRoZSB1bmxvY2tlciB3b3VsZCBub3QgYmUgcmVhZHkgaW4gdGhlXG4gKiBjYXNlIHRoYXQgdGhlIGRldmVsb3BlciBoaXRzIEN0cmwtQyBvciBjbG9zZXMgdGhlIHRlcm1pbmFsIHdpdGhpbiBhIGZyYWN0aW9uIG9mIGEgc2Vjb25kIG9mIHRoZVxuICogbG9jay1maWxlIGJlaW5nIGNyZWF0ZWQuXG4gKlxuICogVGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gaXMgdGhhdCBuZ2NjIGlzIGtpbGxlZCB0b28gcXVpY2tseSBhbmQgbGVhdmVzIGJlaGluZCBhbiBvcnBoYW5lZFxuICogbG9jay1maWxlLiBJbiB3aGljaCBjYXNlIHRoZSBuZXh0IG5nY2MgcnVuIHdpbGwgZGlzcGxheSBhIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSBhYm91dCBkZWxldGluZ1xuICogdGhlIGxvY2stZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIExvY2tGaWxlV2l0aENoaWxkUHJvY2VzcyBpbXBsZW1lbnRzIExvY2tGaWxlIHtcbiAgcGF0aDogQWJzb2x1dGVGc1BhdGg7XG4gIHByaXZhdGUgdW5sb2NrZXI6IENoaWxkUHJvY2Vzc3xudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBmczogRmlsZVN5c3RlbSwgcHJvdGVjdGVkIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgdGhpcy5wYXRoID0gZ2V0TG9ja0ZpbGVQYXRoKGZzKTtcbiAgICB0aGlzLnVubG9ja2VyID0gdGhpcy5jcmVhdGVVbmxvY2tlcih0aGlzLnBhdGgpO1xuICB9XG5cblxuICB3cml0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51bmxvY2tlciA9PT0gbnVsbCkge1xuICAgICAgLy8gSW4gY2FzZSB3ZSBhbHJlYWR5IGRpc2Nvbm5lY3RlZCB0aGUgcHJldmlvdXMgdW5sb2NrZXIgY2hpbGQtcHJvY2VzcywgcGVyaGFwcyBieSBjYWxsaW5nXG4gICAgICAvLyBgcmVtb3ZlKClgLiBOb3JtYWxseSB0aGUgTG9ja0ZpbGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbmNlIHBlciBpbnN0YW5jZS5cbiAgICAgIHRoaXMudW5sb2NrZXIgPSB0aGlzLmNyZWF0ZVVubG9ja2VyKHRoaXMucGF0aCk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBBdHRlbXBpbmcgdG8gd3JpdGUgbG9jay1maWxlIGF0ICR7dGhpcy5wYXRofSB3aXRoIFBJRCAke3Byb2Nlc3MucGlkfWApO1xuICAgIC8vIFRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucywgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiB0aGUgbG9jay1maWxlIGJ5IHRyeWluZyB0byBjcmVhdGUgaXQuXG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLlxuICAgIHRoaXMuZnMud3JpdGVGaWxlKHRoaXMucGF0aCwgcHJvY2Vzcy5waWQudG9TdHJpbmcoKSwgLyogZXhjbHVzaXZlICovIHRydWUpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXcml0dGVuIGxvY2stZmlsZSBhdCAke3RoaXMucGF0aH0gd2l0aCBQSUQgJHtwcm9jZXNzLnBpZH1gKTtcbiAgfVxuXG4gIHJlYWQoKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZnMucmVhZEZpbGUodGhpcy5wYXRoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAne3Vua25vd259JztcbiAgICB9XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgcmVtb3ZlTG9ja0ZpbGUodGhpcy5mcywgdGhpcy5sb2dnZXIsIHRoaXMucGF0aCwgcHJvY2Vzcy5waWQudG9TdHJpbmcoKSk7XG4gICAgaWYgKHRoaXMudW5sb2NrZXIgIT09IG51bGwpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGFuIHVubG9ja2VyIGNoaWxkLXByb2Nlc3MgdGhlbiBkaXNjb25uZWN0IGZyb20gaXQgc28gdGhhdCBpdCBjYW4gZXhpdCBpdHNlbGYuXG4gICAgICB0aGlzLnVubG9ja2VyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMudW5sb2NrZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVVbmxvY2tlcihwYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IENoaWxkUHJvY2VzcyB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0ZvcmtpbmcgdW5sb2NrZXIgY2hpbGQtcHJvY2VzcycpO1xuICAgIGNvbnN0IGxvZ0xldmVsID1cbiAgICAgICAgdGhpcy5sb2dnZXIubGV2ZWwgIT09IHVuZGVmaW5lZCA/IHRoaXMubG9nZ2VyLmxldmVsLnRvU3RyaW5nKCkgOiBMb2dMZXZlbC5pbmZvLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgaXNXaW5kb3dzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJztcbiAgICBjb25zdCB1bmxvY2tlciA9IGZvcmsoXG4gICAgICAgIF9fZGlybmFtZSArICcvdW5sb2NrZXIuanMnLCBbcGF0aCwgbG9nTGV2ZWxdLFxuICAgICAgICB7ZGV0YWNoZWQ6IHRydWUsIHN0ZGlvOiBpc1dpbmRvd3MgPyAncGlwZScgOiAnaW5oZXJpdCd9KTtcbiAgICBpZiAoaXNXaW5kb3dzKSB7XG4gICAgICB1bmxvY2tlci5zdGRvdXQ/Lm9uKCdkYXRhJywgcHJvY2Vzcy5zdGRvdXQud3JpdGUuYmluZChwcm9jZXNzLnN0ZG91dCkpO1xuICAgICAgdW5sb2NrZXIuc3RkZXJyPy5vbignZGF0YScsIHByb2Nlc3Muc3RkZXJyLndyaXRlLmJpbmQocHJvY2Vzcy5zdGRlcnIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHVubG9ja2VyO1xuICB9XG59XG4iXX0=
@@ -1,34 +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 { NodeJSFileSystem } from '../../../../src/ngtsc/file_system';
9
- import { ConsoleLogger } from '../../../../src/ngtsc/logging';
10
- import { removeLockFile } from './util';
11
- /// <reference types="node" />
12
- // This file is an entry-point for the child-process that is started by `LockFileWithChildProcess`
13
- // to ensure that the lock-file is removed when the primary process exits unexpectedly.
14
- // We have no choice but to use the node.js file-system here since we are in a separate process
15
- // from the main ngcc run, which may be running a mock file-system from within a test.
16
- const fs = new NodeJSFileSystem();
17
- // We create a logger that has the same logging level as the parent process, since it should have
18
- // been passed through as one of the args
19
- const logLevel = parseInt(process.argv.pop(), 10);
20
- const logger = new ConsoleLogger(logLevel);
21
- // We must store the parent PID now as it changes if the parent process is killed early
22
- const ppid = process.ppid.toString();
23
- // The path to the lock-file to remove should have been passed as one of the args
24
- const lockFilePath = fs.resolve(process.argv.pop());
25
- logger.debug(`Starting unlocker at process ${process.pid} on behalf of process ${ppid}`);
26
- logger.debug(`The lock-file path is ${lockFilePath}`);
27
- /**
28
- * When the parent process exits (for whatever reason) remove the loc-file if it exists and as long
29
- * as it was one that was created by the parent process.
30
- */
31
- process.on('disconnect', () => {
32
- removeLockFile(fs, logger, lockFilePath, ppid);
33
- });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5sb2NrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvbG9ja2luZy9sb2NrX2ZpbGVfd2l0aF9jaGlsZF9wcm9jZXNzL3VubG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXRDLDhCQUE4QjtBQUU5QixrR0FBa0c7QUFDbEcsdUZBQXVGO0FBRXZGLCtGQUErRjtBQUMvRixzRkFBc0Y7QUFDdEYsTUFBTSxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBRWxDLGlHQUFpRztBQUNqRyx5Q0FBeUM7QUFDekMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFM0MsdUZBQXVGO0FBQ3ZGLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFckMsaUZBQWlGO0FBQ2pGLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUcsQ0FBQyxDQUFDO0FBRXJELE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLE9BQU8sQ0FBQyxHQUFHLHlCQUF5QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLFlBQVksRUFBRSxDQUFDLENBQUM7QUFFdEQ7OztHQUdHO0FBQ0gsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO0lBQzVCLGNBQWMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtOb2RlSlNGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtDb25zb2xlTG9nZ2VyfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbmd0c2MvbG9nZ2luZyc7XG5pbXBvcnQge3JlbW92ZUxvY2tGaWxlfSBmcm9tICcuL3V0aWwnO1xuXG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5vZGVcIiAvPlxuXG4vLyBUaGlzIGZpbGUgaXMgYW4gZW50cnktcG9pbnQgZm9yIHRoZSBjaGlsZC1wcm9jZXNzIHRoYXQgaXMgc3RhcnRlZCBieSBgTG9ja0ZpbGVXaXRoQ2hpbGRQcm9jZXNzYFxuLy8gdG8gZW5zdXJlIHRoYXQgdGhlIGxvY2stZmlsZSBpcyByZW1vdmVkIHdoZW4gdGhlIHByaW1hcnkgcHJvY2VzcyBleGl0cyB1bmV4cGVjdGVkbHkuXG5cbi8vIFdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byB1c2UgdGhlIG5vZGUuanMgZmlsZS1zeXN0ZW0gaGVyZSBzaW5jZSB3ZSBhcmUgaW4gYSBzZXBhcmF0ZSBwcm9jZXNzXG4vLyBmcm9tIHRoZSBtYWluIG5nY2MgcnVuLCB3aGljaCBtYXkgYmUgcnVubmluZyBhIG1vY2sgZmlsZS1zeXN0ZW0gZnJvbSB3aXRoaW4gYSB0ZXN0LlxuY29uc3QgZnMgPSBuZXcgTm9kZUpTRmlsZVN5c3RlbSgpO1xuXG4vLyBXZSBjcmVhdGUgYSBsb2dnZXIgdGhhdCBoYXMgdGhlIHNhbWUgbG9nZ2luZyBsZXZlbCBhcyB0aGUgcGFyZW50IHByb2Nlc3MsIHNpbmNlIGl0IHNob3VsZCBoYXZlXG4vLyBiZWVuIHBhc3NlZCB0aHJvdWdoIGFzIG9uZSBvZiB0aGUgYXJnc1xuY29uc3QgbG9nTGV2ZWwgPSBwYXJzZUludChwcm9jZXNzLmFyZ3YucG9wKCkhLCAxMCk7XG5jb25zdCBsb2dnZXIgPSBuZXcgQ29uc29sZUxvZ2dlcihsb2dMZXZlbCk7XG5cbi8vIFdlIG11c3Qgc3RvcmUgdGhlIHBhcmVudCBQSUQgbm93IGFzIGl0IGNoYW5nZXMgaWYgdGhlIHBhcmVudCBwcm9jZXNzIGlzIGtpbGxlZCBlYXJseVxuY29uc3QgcHBpZCA9IHByb2Nlc3MucHBpZC50b1N0cmluZygpO1xuXG4vLyBUaGUgcGF0aCB0byB0aGUgbG9jay1maWxlIHRvIHJlbW92ZSBzaG91bGQgaGF2ZSBiZWVuIHBhc3NlZCBhcyBvbmUgb2YgdGhlIGFyZ3NcbmNvbnN0IGxvY2tGaWxlUGF0aCA9IGZzLnJlc29sdmUocHJvY2Vzcy5hcmd2LnBvcCgpISk7XG5cbmxvZ2dlci5kZWJ1ZyhgU3RhcnRpbmcgdW5sb2NrZXIgYXQgcHJvY2VzcyAke3Byb2Nlc3MucGlkfSBvbiBiZWhhbGYgb2YgcHJvY2VzcyAke3BwaWR9YCk7XG5sb2dnZXIuZGVidWcoYFRoZSBsb2NrLWZpbGUgcGF0aCBpcyAke2xvY2tGaWxlUGF0aH1gKTtcblxuLyoqXG4gKiBXaGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBleGl0cyAoZm9yIHdoYXRldmVyIHJlYXNvbikgcmVtb3ZlIHRoZSBsb2MtZmlsZSBpZiBpdCBleGlzdHMgYW5kIGFzIGxvbmdcbiAqIGFzIGl0IHdhcyBvbmUgdGhhdCB3YXMgY3JlYXRlZCBieSB0aGUgcGFyZW50IHByb2Nlc3MuXG4gKi9cbnByb2Nlc3Mub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gIHJlbW92ZUxvY2tGaWxlKGZzLCBsb2dnZXIsIGxvY2tGaWxlUGF0aCwgcHBpZCk7XG59KTtcbiJdfQ==
@@ -1,29 +0,0 @@
1
- /**
2
- * Remove the lock-file at the provided `lockFilePath` from the given file-system.
3
- *
4
- * It only removes the file if the pid stored in the file matches the provided `pid`.
5
- * The provided `pid` is of the process that is exiting and so no longer needs to hold the lock.
6
- */
7
- export function removeLockFile(fs, logger, lockFilePath, pid) {
8
- try {
9
- logger.debug(`Attempting to remove lock-file at ${lockFilePath}.`);
10
- const lockFilePid = fs.readFile(lockFilePath);
11
- if (lockFilePid === pid) {
12
- logger.debug(`PIDs match (${pid}), so removing ${lockFilePath}.`);
13
- fs.removeFile(lockFilePath);
14
- }
15
- else {
16
- logger.debug(`PIDs do not match (${pid} and ${lockFilePid}), so not removing ${lockFilePath}.`);
17
- }
18
- }
19
- catch (e) {
20
- if (e.code === 'ENOENT') {
21
- logger.debug(`The lock-file at ${lockFilePath} was already removed.`);
22
- // File already removed so quietly exit
23
- }
24
- else {
25
- throw e;
26
- }
27
- }
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9sb2NraW5nL2xvY2tfZmlsZV93aXRoX2NoaWxkX3Byb2Nlc3MvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzFCLEVBQWMsRUFBRSxNQUFjLEVBQUUsWUFBNEIsRUFBRSxHQUFXO0lBQzNFLElBQUk7UUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsSUFBSSxXQUFXLEtBQUssR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLGtCQUFrQixZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ2xFLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sQ0FBQyxLQUFLLENBQ1Isc0JBQXNCLEdBQUcsUUFBUSxXQUFXLHNCQUFzQixZQUFZLEdBQUcsQ0FBQyxDQUFDO1NBQ3hGO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsWUFBWSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3RFLHVDQUF1QztTQUN4QzthQUFNO1lBQ0wsTUFBTSxDQUFDLENBQUM7U0FDVDtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvbmd0c2MvbG9nZ2luZyc7XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBsb2NrLWZpbGUgYXQgdGhlIHByb3ZpZGVkIGBsb2NrRmlsZVBhdGhgIGZyb20gdGhlIGdpdmVuIGZpbGUtc3lzdGVtLlxuICpcbiAqIEl0IG9ubHkgcmVtb3ZlcyB0aGUgZmlsZSBpZiB0aGUgcGlkIHN0b3JlZCBpbiB0aGUgZmlsZSBtYXRjaGVzIHRoZSBwcm92aWRlZCBgcGlkYC5cbiAqIFRoZSBwcm92aWRlZCBgcGlkYCBpcyBvZiB0aGUgcHJvY2VzcyB0aGF0IGlzIGV4aXRpbmcgYW5kIHNvIG5vIGxvbmdlciBuZWVkcyB0byBob2xkIHRoZSBsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTG9ja0ZpbGUoXG4gICAgZnM6IEZpbGVTeXN0ZW0sIGxvZ2dlcjogTG9nZ2VyLCBsb2NrRmlsZVBhdGg6IEFic29sdXRlRnNQYXRoLCBwaWQ6IHN0cmluZykge1xuICB0cnkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQXR0ZW1wdGluZyB0byByZW1vdmUgbG9jay1maWxlIGF0ICR7bG9ja0ZpbGVQYXRofS5gKTtcbiAgICBjb25zdCBsb2NrRmlsZVBpZCA9IGZzLnJlYWRGaWxlKGxvY2tGaWxlUGF0aCk7XG4gICAgaWYgKGxvY2tGaWxlUGlkID09PSBwaWQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgUElEcyBtYXRjaCAoJHtwaWR9KSwgc28gcmVtb3ZpbmcgJHtsb2NrRmlsZVBhdGh9LmApO1xuICAgICAgZnMucmVtb3ZlRmlsZShsb2NrRmlsZVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgICAgYFBJRHMgZG8gbm90IG1hdGNoICgke3BpZH0gYW5kICR7bG9ja0ZpbGVQaWR9KSwgc28gbm90IHJlbW92aW5nICR7bG9ja0ZpbGVQYXRofS5gKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBUaGUgbG9jay1maWxlIGF0ICR7bG9ja0ZpbGVQYXRofSB3YXMgYWxyZWFkeSByZW1vdmVkLmApO1xuICAgICAgLy8gRmlsZSBhbHJlYWR5IHJlbW92ZWQgc28gcXVpZXRseSBleGl0XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,52 +0,0 @@
1
- /**
2
- * SyncLocker is used to prevent more than one instance of ngcc executing at the same time,
3
- * when being called in a synchronous context.
4
- *
5
- * * When ngcc starts executing, it creates a file in the `compiler-cli/ngcc` folder.
6
- * * If it finds one is already there then it fails with a suitable error message.
7
- * * When ngcc completes executing, it removes the file so that future ngcc executions can start.
8
- */
9
- export class SyncLocker {
10
- constructor(lockFile) {
11
- this.lockFile = lockFile;
12
- }
13
- /**
14
- * Run the given function guarded by the lock file.
15
- *
16
- * @param fn the function to run.
17
- * @returns the value returned from the `fn` call.
18
- */
19
- lock(fn) {
20
- this.create();
21
- try {
22
- return fn();
23
- }
24
- finally {
25
- this.lockFile.remove();
26
- }
27
- }
28
- /**
29
- * Write a lock file to disk, or error if there is already one there.
30
- */
31
- create() {
32
- try {
33
- this.lockFile.write();
34
- }
35
- catch (e) {
36
- if (e.code !== 'EEXIST') {
37
- throw e;
38
- }
39
- this.handleExistingLockFile();
40
- }
41
- }
42
- /**
43
- * The lock-file already exists so raise a helpful error.
44
- */
45
- handleExistingLockFile() {
46
- const pid = this.lockFile.read();
47
- throw new Error(`ngcc is already running at process with id ${pid}.\n` +
48
- `If you are running multiple builds in parallel then you might try pre-processing your node_modules via the command line ngcc tool before starting the builds.\n` +
49
- `(If you are sure no ngcc process is running then you should delete the lock-file at ${this.lockFile.path}.)`);
50
- }
51
- }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY19sb2NrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvbG9ja2luZy9zeW5jX2xvY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFMUM7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUksRUFBVztRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJO1lBQ0YsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNiO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLE1BQU07UUFDZCxJQUFJO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN2QjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDdkIsTUFBTSxDQUFDLENBQUM7YUFDVDtZQUNELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sc0JBQXNCO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FDWCw4Q0FBOEMsR0FBRyxLQUFLO1lBQ3RELGlLQUFpSztZQUNqSyx1RkFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0xvY2tGaWxlfSBmcm9tICcuL2xvY2tfZmlsZSc7XG5cbi8qKlxuICogU3luY0xvY2tlciBpcyB1c2VkIHRvIHByZXZlbnQgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBvZiBuZ2NjIGV4ZWN1dGluZyBhdCB0aGUgc2FtZSB0aW1lLFxuICogd2hlbiBiZWluZyBjYWxsZWQgaW4gYSBzeW5jaHJvbm91cyBjb250ZXh0LlxuICpcbiAqICogV2hlbiBuZ2NjIHN0YXJ0cyBleGVjdXRpbmcsIGl0IGNyZWF0ZXMgYSBmaWxlIGluIHRoZSBgY29tcGlsZXItY2xpL25nY2NgIGZvbGRlci5cbiAqICogSWYgaXQgZmluZHMgb25lIGlzIGFscmVhZHkgdGhlcmUgdGhlbiBpdCBmYWlscyB3aXRoIGEgc3VpdGFibGUgZXJyb3IgbWVzc2FnZS5cbiAqICogV2hlbiBuZ2NjIGNvbXBsZXRlcyBleGVjdXRpbmcsIGl0IHJlbW92ZXMgdGhlIGZpbGUgc28gdGhhdCBmdXR1cmUgbmdjYyBleGVjdXRpb25zIGNhbiBzdGFydC5cbiAqL1xuZXhwb3J0IGNsYXNzIFN5bmNMb2NrZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2tGaWxlOiBMb2NrRmlsZSkge31cblxuICAvKipcbiAgICogUnVuIHRoZSBnaXZlbiBmdW5jdGlvbiBndWFyZGVkIGJ5IHRoZSBsb2NrIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gcnVuLlxuICAgKiBAcmV0dXJucyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGUgYGZuYCBjYWxsLlxuICAgKi9cbiAgbG9jazxUPihmbjogKCkgPT4gVCk6IFQge1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvY2tGaWxlLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhIGxvY2sgZmlsZSB0byBkaXNrLCBvciBlcnJvciBpZiB0aGVyZSBpcyBhbHJlYWR5IG9uZSB0aGVyZS5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGUoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9ja0ZpbGUud3JpdGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5jb2RlICE9PSAnRUVYSVNUJykge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVFeGlzdGluZ0xvY2tGaWxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NrLWZpbGUgYWxyZWFkeSBleGlzdHMgc28gcmFpc2UgYSBoZWxwZnVsIGVycm9yLlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUV4aXN0aW5nTG9ja0ZpbGUoKTogdm9pZCB7XG4gICAgY29uc3QgcGlkID0gdGhpcy5sb2NrRmlsZS5yZWFkKCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbmdjYyBpcyBhbHJlYWR5IHJ1bm5pbmcgYXQgcHJvY2VzcyB3aXRoIGlkICR7cGlkfS5cXG5gICtcbiAgICAgICAgYElmIHlvdSBhcmUgcnVubmluZyBtdWx0aXBsZSBidWlsZHMgaW4gcGFyYWxsZWwgdGhlbiB5b3UgbWlnaHQgdHJ5IHByZS1wcm9jZXNzaW5nIHlvdXIgbm9kZV9tb2R1bGVzIHZpYSB0aGUgY29tbWFuZCBsaW5lIG5nY2MgdG9vbCBiZWZvcmUgc3RhcnRpbmcgdGhlIGJ1aWxkcy5cXG5gICtcbiAgICAgICAgYChJZiB5b3UgYXJlIHN1cmUgbm8gbmdjYyBwcm9jZXNzIGlzIHJ1bm5pbmcgdGhlbiB5b3Ugc2hvdWxkIGRlbGV0ZSB0aGUgbG9jay1maWxlIGF0ICR7XG4gICAgICAgICAgICB0aGlzLmxvY2tGaWxlLnBhdGh9LilgKTtcbiAgfVxufVxuIl19
package/ngcc/src/main.mjs DELETED
@@ -1,134 +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 { CommonJsDependencyHost } from './dependencies/commonjs_dependency_host';
9
- import { DependencyResolver } from './dependencies/dependency_resolver';
10
- import { DtsDependencyHost } from './dependencies/dts_dependency_host';
11
- import { EsmDependencyHost } from './dependencies/esm_dependency_host';
12
- import { ModuleResolver } from './dependencies/module_resolver';
13
- import { UmdDependencyHost } from './dependencies/umd_dependency_host';
14
- import { DirectoryWalkerEntryPointFinder } from './entry_point_finder/directory_walker_entry_point_finder';
15
- import { EntryPointCollector } from './entry_point_finder/entry_point_collector';
16
- import { ProgramBasedEntryPointFinder } from './entry_point_finder/program_based_entry_point_finder';
17
- import { TargetedEntryPointFinder } from './entry_point_finder/targeted_entry_point_finder';
18
- import { getAnalyzeEntryPointsFn } from './execution/analyze_entry_points';
19
- import { ClusterExecutor } from './execution/cluster/executor';
20
- import { getCreateCompileFn } from './execution/create_compile_function';
21
- import { SingleProcessExecutorAsync, SingleProcessExecutorSync } from './execution/single_process_executor';
22
- import { composeTaskCompletedCallbacks, createLogErrorHandler, createMarkAsProcessedHandler, createThrowErrorHandler } from './execution/tasks/completion';
23
- import { AsyncLocker } from './locking/async_locker';
24
- import { LockFileWithChildProcess } from './locking/lock_file_with_child_process';
25
- import { SyncLocker } from './locking/sync_locker';
26
- import { getMaxNumberOfWorkers, getSharedSetup } from './ngcc_options';
27
- import { NgccConfiguration } from './packages/configuration';
28
- import { SUPPORTED_FORMAT_PROPERTIES } from './packages/entry_point';
29
- import { EntryPointManifest, InvalidatingEntryPointManifest } from './packages/entry_point_manifest';
30
- import { DirectPackageJsonUpdater } from './writing/package_json_updater';
31
- export function mainNgcc(options) {
32
- const { basePath, targetEntryPointPath, propertiesToConsider, typingsOnly, compileAllFormats, logger, pathMappings, async, errorOnFailedEntryPoint, enableI18nLegacyMessageIdFormat, invalidateEntryPointManifest, fileSystem, absBasePath, projectPath, tsConfig, getFileWriter, } = getSharedSetup(options);
33
- const config = new NgccConfiguration(fileSystem, projectPath);
34
- const dependencyResolver = getDependencyResolver(fileSystem, logger, config, pathMappings);
35
- const entryPointManifest = invalidateEntryPointManifest ?
36
- new InvalidatingEntryPointManifest(fileSystem, config, logger) :
37
- new EntryPointManifest(fileSystem, config, logger);
38
- // Bail out early if the work is already done.
39
- const supportedPropertiesToConsider = ensureSupportedProperties(propertiesToConsider);
40
- const absoluteTargetEntryPointPath = targetEntryPointPath !== undefined ?
41
- fileSystem.resolve(basePath, targetEntryPointPath) :
42
- null;
43
- const finder = getEntryPointFinder(fileSystem, logger, dependencyResolver, config, entryPointManifest, absBasePath, absoluteTargetEntryPointPath, pathMappings, options.findEntryPointsFromTsConfigProgram ? tsConfig : null, projectPath);
44
- if (finder instanceof TargetedEntryPointFinder &&
45
- !finder.targetNeedsProcessingOrCleaning(supportedPropertiesToConsider, compileAllFormats)) {
46
- logger.debug('The target entry-point has already been processed');
47
- return;
48
- }
49
- // Determine the number of workers to use and whether ngcc should run in parallel.
50
- const workerCount = async ? getMaxNumberOfWorkers() : 1;
51
- const inParallel = workerCount > 1;
52
- const analyzeEntryPoints = getAnalyzeEntryPointsFn(logger, finder, fileSystem, supportedPropertiesToConsider, typingsOnly, compileAllFormats, propertiesToConsider, inParallel);
53
- // Create an updater that will actually write to disk.
54
- const pkgJsonUpdater = new DirectPackageJsonUpdater(fileSystem);
55
- const fileWriter = getFileWriter(pkgJsonUpdater);
56
- // The function for creating the `compile()` function.
57
- const createCompileFn = getCreateCompileFn(fileSystem, logger, fileWriter, enableI18nLegacyMessageIdFormat, tsConfig, pathMappings);
58
- // The executor for actually planning and getting the work done.
59
- const createTaskCompletedCallback = getCreateTaskCompletedCallback(pkgJsonUpdater, errorOnFailedEntryPoint, logger, fileSystem);
60
- const executor = getExecutor(async, workerCount, logger, fileWriter, pkgJsonUpdater, fileSystem, config, createTaskCompletedCallback);
61
- return executor.execute(analyzeEntryPoints, createCompileFn);
62
- }
63
- function ensureSupportedProperties(properties) {
64
- // Short-circuit the case where `properties` has fallen back to the default value:
65
- // `SUPPORTED_FORMAT_PROPERTIES`
66
- if (properties === SUPPORTED_FORMAT_PROPERTIES)
67
- return SUPPORTED_FORMAT_PROPERTIES;
68
- const supportedProperties = [];
69
- for (const prop of properties) {
70
- if (SUPPORTED_FORMAT_PROPERTIES.indexOf(prop) !== -1) {
71
- supportedProperties.push(prop);
72
- }
73
- }
74
- if (supportedProperties.length === 0) {
75
- throw new Error(`No supported format property to consider among [${properties.join(', ')}]. ` +
76
- `Supported properties: ${SUPPORTED_FORMAT_PROPERTIES.join(', ')}`);
77
- }
78
- return supportedProperties;
79
- }
80
- function getCreateTaskCompletedCallback(pkgJsonUpdater, errorOnFailedEntryPoint, logger, fileSystem) {
81
- return taskQueue => composeTaskCompletedCallbacks({
82
- [0 /* Processed */]: createMarkAsProcessedHandler(fileSystem, pkgJsonUpdater),
83
- [1 /* Failed */]: errorOnFailedEntryPoint ? createThrowErrorHandler(fileSystem) :
84
- createLogErrorHandler(logger, fileSystem, taskQueue),
85
- });
86
- }
87
- function getExecutor(async, workerCount, logger, fileWriter, pkgJsonUpdater, fileSystem, config, createTaskCompletedCallback) {
88
- const lockFile = new LockFileWithChildProcess(fileSystem, logger);
89
- if (async) {
90
- // Execute asynchronously (either serially or in parallel)
91
- const { retryAttempts, retryDelay } = config.getLockingConfig();
92
- const locker = new AsyncLocker(lockFile, logger, retryDelay, retryAttempts);
93
- if (workerCount > 1) {
94
- // Execute in parallel.
95
- return new ClusterExecutor(workerCount, fileSystem, logger, fileWriter, pkgJsonUpdater, locker, createTaskCompletedCallback);
96
- }
97
- else {
98
- // Execute serially, on a single thread (async).
99
- return new SingleProcessExecutorAsync(logger, locker, createTaskCompletedCallback);
100
- }
101
- }
102
- else {
103
- // Execute serially, on a single thread (sync).
104
- return new SingleProcessExecutorSync(logger, new SyncLocker(lockFile), createTaskCompletedCallback);
105
- }
106
- }
107
- function getDependencyResolver(fileSystem, logger, config, pathMappings) {
108
- const moduleResolver = new ModuleResolver(fileSystem, pathMappings);
109
- const esmDependencyHost = new EsmDependencyHost(fileSystem, moduleResolver);
110
- const umdDependencyHost = new UmdDependencyHost(fileSystem, moduleResolver);
111
- const commonJsDependencyHost = new CommonJsDependencyHost(fileSystem, moduleResolver);
112
- const dtsDependencyHost = new DtsDependencyHost(fileSystem, pathMappings);
113
- return new DependencyResolver(fileSystem, logger, config, {
114
- esm5: esmDependencyHost,
115
- esm2015: esmDependencyHost,
116
- umd: umdDependencyHost,
117
- commonjs: commonJsDependencyHost
118
- }, dtsDependencyHost);
119
- }
120
- function getEntryPointFinder(fs, logger, resolver, config, entryPointManifest, basePath, absoluteTargetEntryPointPath, pathMappings, tsConfig, projectPath) {
121
- if (absoluteTargetEntryPointPath !== null) {
122
- return new TargetedEntryPointFinder(fs, config, logger, resolver, basePath, pathMappings, absoluteTargetEntryPointPath);
123
- }
124
- else {
125
- const entryPointCollector = new EntryPointCollector(fs, config, logger, resolver);
126
- if (tsConfig !== null) {
127
- return new ProgramBasedEntryPointFinder(fs, config, logger, resolver, entryPointCollector, entryPointManifest, basePath, tsConfig, projectPath);
128
- }
129
- else {
130
- return new DirectoryWalkerEntryPointFinder(logger, resolver, entryPointCollector, entryPointManifest, basePath, pathMappings);
131
- }
132
- }
133
- }
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQVFILE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUUvRSxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNuRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUV6RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFMUcsT0FBTyxFQUFDLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLDRCQUE0QixFQUFFLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDekosT0FBTyxFQUFDLFdBQVcsRUFB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d0JBQXdCLENBQy9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixDQUFDLENBQUM7S0FDekY7U0FBTTtRQUNMLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDckIsT0FBTyxJQUFJLDRCQUE0QixDQUNuQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFDekYsV0FBVyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNMLE9BQU8sSUFBSSwrQkFBK0IsQ0FDdEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDeEY7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJub2RlXCIgLz5cblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aCwgRmlsZVN5c3RlbSwgUmVhZG9ubHlGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7UGFyc2VkQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vLi4vc3JjL3BlcmZvcm1fY29tcGlsZSc7XG5cbmltcG9ydCB7Q29tbW9uSnNEZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvY29tbW9uanNfZGVwZW5kZW5jeV9ob3N0JztcbmltcG9ydCB7RGVwZW5kZW5jeVJlc29sdmVyfSBmcm9tICcuL2RlcGVuZGVuY2llcy9kZXBlbmRlbmN5X3Jlc29sdmVyJztcbmltcG9ydCB7RHRzRGVwZW5kZW5jeUhvc3R9IGZyb20gJy4vZGVwZW5kZW5jaWVzL2R0c19kZXBlbmRlbmN5X2hvc3QnO1xuaW1wb3J0IHtFc21EZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvZXNtX2RlcGVuZGVuY3lfaG9zdCc7XG5pbXBvcnQge01vZHVsZVJlc29sdmVyfSBmcm9tICcuL2RlcGVuZGVuY2llcy9tb2R1bGVfcmVzb2x2ZXInO1xuaW1wb3J0IHtVbWREZXBlbmRlbmN5SG9zdH0gZnJvbSAnLi9kZXBlbmRlbmNpZXMvdW1kX2RlcGVuZGVuY3lfaG9zdCc7XG5pbXBvcnQge0RpcmVjdG9yeVdhbGtlckVudHJ5UG9pbnRGaW5kZXJ9IGZyb20gJy4vZW50cnlfcG9pbnRfZmluZGVyL2RpcmVjdG9yeV93YWxrZXJfZW50cnlfcG9pbnRfZmluZGVyJztcbmltcG9ydCB7RW50cnlQb2ludENvbGxlY3Rvcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvZW50cnlfcG9pbnRfY29sbGVjdG9yJztcbmltcG9ydCB7RW50cnlQb2ludEZpbmRlcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvaW50ZXJmYWNlJztcbmltcG9ydCB7UHJvZ3JhbUJhc2VkRW50cnlQb2ludEZpbmRlcn0gZnJvbSAnLi9lbnRyeV9wb2ludF9maW5kZXIvcHJvZ3JhbV9iYXNlZF9lbnRyeV9wb2ludF9maW5kZXInO1xuaW1wb3J0IHtUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXJ9IGZyb20gJy4vZW50cnlfcG9pbnRfZmluZGVyL3RhcmdldGVkX2VudHJ5X3BvaW50X2ZpbmRlcic7XG5pbXBvcnQge2dldEFuYWx5emVFbnRyeVBvaW50c0ZufSBmcm9tICcuL2V4ZWN1dGlvbi9hbmFseXplX2VudHJ5X3BvaW50cyc7XG5pbXBvcnQge0V4ZWN1dG9yfSBmcm9tICcuL2V4ZWN1dGlvbi9hcGknO1xuaW1wb3J0IHtDbHVzdGVyRXhlY3V0b3J9IGZyb20gJy4vZXhlY3V0aW9uL2NsdXN0ZXIvZXhlY3V0b3InO1xuaW1wb3J0IHtnZXRDcmVhdGVDb21waWxlRm59IGZyb20gJy4vZXhlY3V0aW9uL2NyZWF0ZV9jb21waWxlX2Z1bmN0aW9uJztcbmltcG9ydCB7U2luZ2xlUHJvY2Vzc0V4ZWN1dG9yQXN5bmMsIFNpbmdsZVByb2Nlc3NFeGVjdXRvclN5bmN9IGZyb20gJy4vZXhlY3V0aW9uL3NpbmdsZV9wcm9jZXNzX2V4ZWN1dG9yJztcbmltcG9ydCB7Q3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrLCBUYXNrUHJvY2Vzc2luZ091dGNvbWV9IGZyb20gJy4vZXhlY3V0aW9uL3Rhc2tzL2FwaSc7XG5pbXBvcnQge2NvbXBvc2VUYXNrQ29tcGxldGVkQ2FsbGJhY2tzLCBjcmVhdGVMb2dFcnJvckhhbmRsZXIsIGNyZWF0ZU1hcmtBc1Byb2Nlc3NlZEhhbmRsZXIsIGNyZWF0ZVRocm93RXJyb3JIYW5kbGVyfSBmcm9tICcuL2V4ZWN1dGlvbi90YXNrcy9jb21wbGV0aW9uJztcbmltcG9ydCB7QXN5bmNMb2NrZXJ9IGZyb20gJy4vbG9ja2luZy9hc3luY19sb2NrZXInO1xuaW1wb3J0IHtMb2NrRmlsZVdpdGhDaGlsZFByb2Nlc3N9IGZyb20gJy4vbG9ja2luZy9sb2NrX2ZpbGVfd2l0aF9jaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7U3luY0xvY2tlcn0gZnJvbSAnLi9sb2NraW5nL3N5bmNfbG9ja2VyJztcbmltcG9ydCB7QXN5bmNOZ2NjT3B0aW9ucywgZ2V0TWF4TnVtYmVyT2ZXb3JrZXJzLCBnZXRTaGFyZWRTZXR1cCwgU3luY05nY2NPcHRpb25zfSBmcm9tICcuL25nY2Nfb3B0aW9ucyc7XG5pbXBvcnQge05nY2NDb25maWd1cmF0aW9ufSBmcm9tICcuL3BhY2thZ2VzL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtFbnRyeVBvaW50SnNvblByb3BlcnR5LCBTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVN9IGZyb20gJy4vcGFja2FnZXMvZW50cnlfcG9pbnQnO1xuaW1wb3J0IHtFbnRyeVBvaW50TWFuaWZlc3QsIEludmFsaWRhdGluZ0VudHJ5UG9pbnRNYW5pZmVzdH0gZnJvbSAnLi9wYWNrYWdlcy9lbnRyeV9wb2ludF9tYW5pZmVzdCc7XG5pbXBvcnQge1BhdGhNYXBwaW5nc30gZnJvbSAnLi9wYXRoX21hcHBpbmdzJztcbmltcG9ydCB7RmlsZVdyaXRlcn0gZnJvbSAnLi93cml0aW5nL2ZpbGVfd3JpdGVyJztcbmltcG9ydCB7RGlyZWN0UGFja2FnZUpzb25VcGRhdGVyLCBQYWNrYWdlSnNvblVwZGF0ZXJ9IGZyb20gJy4vd3JpdGluZy9wYWNrYWdlX2pzb25fdXBkYXRlcic7XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeS1wb2ludCBpbnRvIG5nY2MgKGFOR3VsYXIgQ29tcGF0aWJpbGl0eSBDb21waWxlcikuXG4gKlxuICogWW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcHJvY2VzcyBvbmUgb3IgbW9yZSBucG0gcGFja2FnZXMsIHRvIGVuc3VyZVxuICogdGhhdCB0aGV5IGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIGl2eSBjb21waWxlciAobmd0c2MpLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRlbGxpbmcgbmdjYyB3aGF0IHRvIGNvbXBpbGUgYW5kIGhvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haW5OZ2NjPFQgZXh0ZW5kcyBBc3luY05nY2NPcHRpb25zfFN5bmNOZ2NjT3B0aW9ucz4ob3B0aW9uczogVCk6XG4gICAgVCBleHRlbmRzIEFzeW5jTmdjY09wdGlvbnMgPyBQcm9taXNlPHZvaWQ+OiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIG1haW5OZ2NjKG9wdGlvbnM6IEFzeW5jTmdjY09wdGlvbnN8U3luY05nY2NPcHRpb25zKTogdm9pZHxQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGJhc2VQYXRoLFxuICAgIHRhcmdldEVudHJ5UG9pbnRQYXRoLFxuICAgIHByb3BlcnRpZXNUb0NvbnNpZGVyLFxuICAgIHR5cGluZ3NPbmx5LFxuICAgIGNvbXBpbGVBbGxGb3JtYXRzLFxuICAgIGxvZ2dlcixcbiAgICBwYXRoTWFwcGluZ3MsXG4gICAgYXN5bmMsXG4gICAgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQsXG4gICAgZW5hYmxlSTE4bkxlZ2FjeU1lc3NhZ2VJZEZvcm1hdCxcbiAgICBpbnZhbGlkYXRlRW50cnlQb2ludE1hbmlmZXN0LFxuICAgIGZpbGVTeXN0ZW0sXG4gICAgYWJzQmFzZVBhdGgsXG4gICAgcHJvamVjdFBhdGgsXG4gICAgdHNDb25maWcsXG4gICAgZ2V0RmlsZVdyaXRlcixcbiAgfSA9IGdldFNoYXJlZFNldHVwKG9wdGlvbnMpO1xuXG4gIGNvbnN0IGNvbmZpZyA9IG5ldyBOZ2NjQ29uZmlndXJhdGlvbihmaWxlU3lzdGVtLCBwcm9qZWN0UGF0aCk7XG4gIGNvbnN0IGRlcGVuZGVuY3lSZXNvbHZlciA9IGdldERlcGVuZGVuY3lSZXNvbHZlcihmaWxlU3lzdGVtLCBsb2dnZXIsIGNvbmZpZywgcGF0aE1hcHBpbmdzKTtcbiAgY29uc3QgZW50cnlQb2ludE1hbmlmZXN0ID0gaW52YWxpZGF0ZUVudHJ5UG9pbnRNYW5pZmVzdCA/XG4gICAgICBuZXcgSW52YWxpZGF0aW5nRW50cnlQb2ludE1hbmlmZXN0KGZpbGVTeXN0ZW0sIGNvbmZpZywgbG9nZ2VyKSA6XG4gICAgICBuZXcgRW50cnlQb2ludE1hbmlmZXN0KGZpbGVTeXN0ZW0sIGNvbmZpZywgbG9nZ2VyKTtcblxuICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGUgd29yayBpcyBhbHJlYWR5IGRvbmUuXG4gIGNvbnN0IHN1cHBvcnRlZFByb3BlcnRpZXNUb0NvbnNpZGVyID0gZW5zdXJlU3VwcG9ydGVkUHJvcGVydGllcyhwcm9wZXJ0aWVzVG9Db25zaWRlcik7XG4gIGNvbnN0IGFic29sdXRlVGFyZ2V0RW50cnlQb2ludFBhdGggPSB0YXJnZXRFbnRyeVBvaW50UGF0aCAhPT0gdW5kZWZpbmVkID9cbiAgICAgIGZpbGVTeXN0ZW0ucmVzb2x2ZShiYXNlUGF0aCwgdGFyZ2V0RW50cnlQb2ludFBhdGgpIDpcbiAgICAgIG51bGw7XG4gIGNvbnN0IGZpbmRlciA9IGdldEVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICBmaWxlU3lzdGVtLCBsb2dnZXIsIGRlcGVuZGVuY3lSZXNvbHZlciwgY29uZmlnLCBlbnRyeVBvaW50TWFuaWZlc3QsIGFic0Jhc2VQYXRoLFxuICAgICAgYWJzb2x1dGVUYXJnZXRFbnRyeVBvaW50UGF0aCwgcGF0aE1hcHBpbmdzLFxuICAgICAgb3B0aW9ucy5maW5kRW50cnlQb2ludHNGcm9tVHNDb25maWdQcm9ncmFtID8gdHNDb25maWcgOiBudWxsLCBwcm9qZWN0UGF0aCk7XG4gIGlmIChmaW5kZXIgaW5zdGFuY2VvZiBUYXJnZXRlZEVudHJ5UG9pbnRGaW5kZXIgJiZcbiAgICAgICFmaW5kZXIudGFyZ2V0TmVlZHNQcm9jZXNzaW5nT3JDbGVhbmluZyhzdXBwb3J0ZWRQcm9wZXJ0aWVzVG9Db25zaWRlciwgY29tcGlsZUFsbEZvcm1hdHMpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdUaGUgdGFyZ2V0IGVudHJ5LXBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2Ygd29ya2VycyB0byB1c2UgYW5kIHdoZXRoZXIgbmdjYyBzaG91bGQgcnVuIGluIHBhcmFsbGVsLlxuICBjb25zdCB3b3JrZXJDb3VudCA9IGFzeW5jID8gZ2V0TWF4TnVtYmVyT2ZXb3JrZXJzKCkgOiAxO1xuICBjb25zdCBpblBhcmFsbGVsID0gd29ya2VyQ291bnQgPiAxO1xuXG4gIGNvbnN0IGFuYWx5emVFbnRyeVBvaW50cyA9IGdldEFuYWx5emVFbnRyeVBvaW50c0ZuKFxuICAgICAgbG9nZ2VyLCBmaW5kZXIsIGZpbGVTeXN0ZW0sIHN1cHBvcnRlZFByb3BlcnRpZXNUb0NvbnNpZGVyLCB0eXBpbmdzT25seSwgY29tcGlsZUFsbEZvcm1hdHMsXG4gICAgICBwcm9wZXJ0aWVzVG9Db25zaWRlciwgaW5QYXJhbGxlbCk7XG5cbiAgLy8gQ3JlYXRlIGFuIHVwZGF0ZXIgdGhhdCB3aWxsIGFjdHVhbGx5IHdyaXRlIHRvIGRpc2suXG4gIGNvbnN0IHBrZ0pzb25VcGRhdGVyID0gbmV3IERpcmVjdFBhY2thZ2VKc29uVXBkYXRlcihmaWxlU3lzdGVtKTtcbiAgY29uc3QgZmlsZVdyaXRlciA9IGdldEZpbGVXcml0ZXIocGtnSnNvblVwZGF0ZXIpO1xuXG4gIC8vIFRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgdGhlIGBjb21waWxlKClgIGZ1bmN0aW9uLlxuICBjb25zdCBjcmVhdGVDb21waWxlRm4gPSBnZXRDcmVhdGVDb21waWxlRm4oXG4gICAgICBmaWxlU3lzdGVtLCBsb2dnZXIsIGZpbGVXcml0ZXIsIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQsIHRzQ29uZmlnLCBwYXRoTWFwcGluZ3MpO1xuXG4gIC8vIFRoZSBleGVjdXRvciBmb3IgYWN0dWFsbHkgcGxhbm5pbmcgYW5kIGdldHRpbmcgdGhlIHdvcmsgZG9uZS5cbiAgY29uc3QgY3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrID1cbiAgICAgIGdldENyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayhwa2dKc29uVXBkYXRlciwgZXJyb3JPbkZhaWxlZEVudHJ5UG9pbnQsIGxvZ2dlciwgZmlsZVN5c3RlbSk7XG4gIGNvbnN0IGV4ZWN1dG9yID0gZ2V0RXhlY3V0b3IoXG4gICAgICBhc3luYywgd29ya2VyQ291bnQsIGxvZ2dlciwgZmlsZVdyaXRlciwgcGtnSnNvblVwZGF0ZXIsIGZpbGVTeXN0ZW0sIGNvbmZpZyxcbiAgICAgIGNyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayk7XG5cbiAgcmV0dXJuIGV4ZWN1dG9yLmV4ZWN1dGUoYW5hbHl6ZUVudHJ5UG9pbnRzLCBjcmVhdGVDb21waWxlRm4pO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVTdXBwb3J0ZWRQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IHN0cmluZ1tdKTogRW50cnlQb2ludEpzb25Qcm9wZXJ0eVtdIHtcbiAgLy8gU2hvcnQtY2lyY3VpdCB0aGUgY2FzZSB3aGVyZSBgcHJvcGVydGllc2AgaGFzIGZhbGxlbiBiYWNrIHRvIHRoZSBkZWZhdWx0IHZhbHVlOlxuICAvLyBgU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTYFxuICBpZiAocHJvcGVydGllcyA9PT0gU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTKSByZXR1cm4gU1VQUE9SVEVEX0ZPUk1BVF9QUk9QRVJUSUVTO1xuXG4gIGNvbnN0IHN1cHBvcnRlZFByb3BlcnRpZXM6IEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzIGFzIEVudHJ5UG9pbnRKc29uUHJvcGVydHlbXSkge1xuICAgIGlmIChTVVBQT1JURURfRk9STUFUX1BST1BFUlRJRVMuaW5kZXhPZihwcm9wKSAhPT0gLTEpIHtcbiAgICAgIHN1cHBvcnRlZFByb3BlcnRpZXMucHVzaChwcm9wKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydGVkUHJvcGVydGllcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBObyBzdXBwb3J0ZWQgZm9ybWF0IHByb3BlcnR5IHRvIGNvbnNpZGVyIGFtb25nIFske3Byb3BlcnRpZXMuam9pbignLCAnKX1dLiBgICtcbiAgICAgICAgYFN1cHBvcnRlZCBwcm9wZXJ0aWVzOiAke1NVUFBPUlRFRF9GT1JNQVRfUFJPUEVSVElFUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgcmV0dXJuIHN1cHBvcnRlZFByb3BlcnRpZXM7XG59XG5cbmZ1bmN0aW9uIGdldENyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayhcbiAgICBwa2dKc29uVXBkYXRlcjogUGFja2FnZUpzb25VcGRhdGVyLCBlcnJvck9uRmFpbGVkRW50cnlQb2ludDogYm9vbGVhbiwgbG9nZ2VyOiBMb2dnZXIsXG4gICAgZmlsZVN5c3RlbTogUmVhZG9ubHlGaWxlU3lzdGVtKTogQ3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrIHtcbiAgcmV0dXJuIHRhc2tRdWV1ZSA9PiBjb21wb3NlVGFza0NvbXBsZXRlZENhbGxiYWNrcyh7XG4gICAgICAgICAgIFtUYXNrUHJvY2Vzc2luZ091dGNvbWUuUHJvY2Vzc2VkXTpcbiAgICAgICAgICAgICAgIGNyZWF0ZU1hcmtBc1Byb2Nlc3NlZEhhbmRsZXIoZmlsZVN5c3RlbSwgcGtnSnNvblVwZGF0ZXIpLFxuICAgICAgICAgICBbVGFza1Byb2Nlc3NpbmdPdXRjb21lLkZhaWxlZF06XG4gICAgICAgICAgICAgICBlcnJvck9uRmFpbGVkRW50cnlQb2ludCA/IGNyZWF0ZVRocm93RXJyb3JIYW5kbGVyKGZpbGVTeXN0ZW0pIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTG9nRXJyb3JIYW5kbGVyKGxvZ2dlciwgZmlsZVN5c3RlbSwgdGFza1F1ZXVlKSxcbiAgICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRFeGVjdXRvcihcbiAgICBhc3luYzogYm9vbGVhbiwgd29ya2VyQ291bnQ6IG51bWJlciwgbG9nZ2VyOiBMb2dnZXIsIGZpbGVXcml0ZXI6IEZpbGVXcml0ZXIsXG4gICAgcGtnSnNvblVwZGF0ZXI6IFBhY2thZ2VKc29uVXBkYXRlciwgZmlsZVN5c3RlbTogRmlsZVN5c3RlbSwgY29uZmlnOiBOZ2NjQ29uZmlndXJhdGlvbixcbiAgICBjcmVhdGVUYXNrQ29tcGxldGVkQ2FsbGJhY2s6IENyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayk6IEV4ZWN1dG9yIHtcbiAgY29uc3QgbG9ja0ZpbGUgPSBuZXcgTG9ja0ZpbGVXaXRoQ2hpbGRQcm9jZXNzKGZpbGVTeXN0ZW0sIGxvZ2dlcik7XG4gIGlmIChhc3luYykge1xuICAgIC8vIEV4ZWN1dGUgYXN5bmNocm9ub3VzbHkgKGVpdGhlciBzZXJpYWxseSBvciBpbiBwYXJhbGxlbClcbiAgICBjb25zdCB7cmV0cnlBdHRlbXB0cywgcmV0cnlEZWxheX0gPSBjb25maWcuZ2V0TG9ja2luZ0NvbmZpZygpO1xuICAgIGNvbnN0IGxvY2tlciA9IG5ldyBBc3luY0xvY2tlcihsb2NrRmlsZSwgbG9nZ2VyLCByZXRyeURlbGF5LCByZXRyeUF0dGVtcHRzKTtcbiAgICBpZiAod29ya2VyQ291bnQgPiAxKSB7XG4gICAgICAvLyBFeGVjdXRlIGluIHBhcmFsbGVsLlxuICAgICAgcmV0dXJuIG5ldyBDbHVzdGVyRXhlY3V0b3IoXG4gICAgICAgICAgd29ya2VyQ291bnQsIGZpbGVTeXN0ZW0sIGxvZ2dlciwgZmlsZVdyaXRlciwgcGtnSnNvblVwZGF0ZXIsIGxvY2tlcixcbiAgICAgICAgICBjcmVhdGVUYXNrQ29tcGxldGVkQ2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFeGVjdXRlIHNlcmlhbGx5LCBvbiBhIHNpbmdsZSB0aHJlYWQgKGFzeW5jKS5cbiAgICAgIHJldHVybiBuZXcgU2luZ2xlUHJvY2Vzc0V4ZWN1dG9yQXN5bmMobG9nZ2VyLCBsb2NrZXIsIGNyZWF0ZVRhc2tDb21wbGV0ZWRDYWxsYmFjayk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEV4ZWN1dGUgc2VyaWFsbHksIG9uIGEgc2luZ2xlIHRocmVhZCAoc3luYykuXG4gICAgcmV0dXJuIG5ldyBTaW5nbGVQcm9jZXNzRXhlY3V0b3JTeW5jKFxuICAgICAgICBsb2dnZXIsIG5ldyBTeW5jTG9ja2VyKGxvY2tGaWxlKSwgY3JlYXRlVGFza0NvbXBsZXRlZENhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZXBlbmRlbmN5UmVzb2x2ZXIoXG4gICAgZmlsZVN5c3RlbTogUmVhZG9ubHlGaWxlU3lzdGVtLCBsb2dnZXI6IExvZ2dlciwgY29uZmlnOiBOZ2NjQ29uZmlndXJhdGlvbixcbiAgICBwYXRoTWFwcGluZ3M6IFBhdGhNYXBwaW5nc3x1bmRlZmluZWQpOiBEZXBlbmRlbmN5UmVzb2x2ZXIge1xuICBjb25zdCBtb2R1bGVSZXNvbHZlciA9IG5ldyBNb2R1bGVSZXNvbHZlcihmaWxlU3lzdGVtLCBwYXRoTWFwcGluZ3MpO1xuICBjb25zdCBlc21EZXBlbmRlbmN5SG9zdCA9IG5ldyBFc21EZXBlbmRlbmN5SG9zdChmaWxlU3lzdGVtLCBtb2R1bGVSZXNvbHZlcik7XG4gIGNvbnN0IHVtZERlcGVuZGVuY3lIb3N0ID0gbmV3IFVtZERlcGVuZGVuY3lIb3N0KGZpbGVTeXN0ZW0sIG1vZHVsZVJlc29sdmVyKTtcbiAgY29uc3QgY29tbW9uSnNEZXBlbmRlbmN5SG9zdCA9IG5ldyBDb21tb25Kc0RlcGVuZGVuY3lIb3N0KGZpbGVTeXN0ZW0sIG1vZHVsZVJlc29sdmVyKTtcbiAgY29uc3QgZHRzRGVwZW5kZW5jeUhvc3QgPSBuZXcgRHRzRGVwZW5kZW5jeUhvc3QoZmlsZVN5c3RlbSwgcGF0aE1hcHBpbmdzKTtcbiAgcmV0dXJuIG5ldyBEZXBlbmRlbmN5UmVzb2x2ZXIoXG4gICAgICBmaWxlU3lzdGVtLCBsb2dnZXIsIGNvbmZpZywge1xuICAgICAgICBlc201OiBlc21EZXBlbmRlbmN5SG9zdCxcbiAgICAgICAgZXNtMjAxNTogZXNtRGVwZW5kZW5jeUhvc3QsXG4gICAgICAgIHVtZDogdW1kRGVwZW5kZW5jeUhvc3QsXG4gICAgICAgIGNvbW1vbmpzOiBjb21tb25Kc0RlcGVuZGVuY3lIb3N0XG4gICAgICB9LFxuICAgICAgZHRzRGVwZW5kZW5jeUhvc3QpO1xufVxuXG5mdW5jdGlvbiBnZXRFbnRyeVBvaW50RmluZGVyKFxuICAgIGZzOiBSZWFkb25seUZpbGVTeXN0ZW0sIGxvZ2dlcjogTG9nZ2VyLCByZXNvbHZlcjogRGVwZW5kZW5jeVJlc29sdmVyLCBjb25maWc6IE5nY2NDb25maWd1cmF0aW9uLFxuICAgIGVudHJ5UG9pbnRNYW5pZmVzdDogRW50cnlQb2ludE1hbmlmZXN0LCBiYXNlUGF0aDogQWJzb2x1dGVGc1BhdGgsXG4gICAgYWJzb2x1dGVUYXJnZXRFbnRyeVBvaW50UGF0aDogQWJzb2x1dGVGc1BhdGh8bnVsbCwgcGF0aE1hcHBpbmdzOiBQYXRoTWFwcGluZ3N8dW5kZWZpbmVkLFxuICAgIHRzQ29uZmlnOiBQYXJzZWRDb25maWd1cmF0aW9ufG51bGwsIHByb2plY3RQYXRoOiBBYnNvbHV0ZUZzUGF0aCk6IEVudHJ5UG9pbnRGaW5kZXIge1xuICBpZiAoYWJzb2x1dGVUYXJnZXRFbnRyeVBvaW50UGF0aCAhPT0gbnVsbCkge1xuICAgIHJldHVybiBuZXcgVGFyZ2V0ZWRFbnRyeVBvaW50RmluZGVyKFxuICAgICAgICBmcywgY29uZmlnLCBsb2dnZXIsIHJlc29sdmVyLCBiYXNlUGF0aCwgcGF0aE1hcHBpbmdzLCBhYnNvbHV0ZVRhcmdldEVudHJ5UG9pbnRQYXRoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBlbnRyeVBvaW50Q29sbGVjdG9yID0gbmV3IEVudHJ5UG9pbnRDb2xsZWN0b3IoZnMsIGNvbmZpZywgbG9nZ2VyLCByZXNvbHZlcik7XG4gICAgaWYgKHRzQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbmV3IFByb2dyYW1CYXNlZEVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICAgICAgZnMsIGNvbmZpZywgbG9nZ2VyLCByZXNvbHZlciwgZW50cnlQb2ludENvbGxlY3RvciwgZW50cnlQb2ludE1hbmlmZXN0LCBiYXNlUGF0aCwgdHNDb25maWcsXG4gICAgICAgICAgcHJvamVjdFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERpcmVjdG9yeVdhbGtlckVudHJ5UG9pbnRGaW5kZXIoXG4gICAgICAgICAgbG9nZ2VyLCByZXNvbHZlciwgZW50cnlQb2ludENvbGxlY3RvciwgZW50cnlQb2ludE1hbmlmZXN0LCBiYXNlUGF0aCwgcGF0aE1hcHBpbmdzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL21pZ3JhdGlvbnMvbWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge01ldGFkYXRhUmVhZGVyfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvbWV0YWRhdGEnO1xuaW1wb3J0IHtQYXJ0aWFsRXZhbHVhdG9yfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvcGFydGlhbF9ldmFsdWF0b3InO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBEZWNvcmF0b3J9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCB7SGFuZGxlckZsYWdzfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdHJhbnNmb3JtJztcbmltcG9ydCB7TmdjY1JlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi9ob3N0L25nY2NfaG9zdCc7XG5cblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgYW5kIGFkZCBpdCB0byB0aGUgYERlY29yYXRpb25BbmFseXplci5taWdyYXRpb25zYCBjb2xsZWN0aW9uIHRvIGdldCBuZ2NjXG4gKiB0byBtb2RpZnkgdGhlIGFuYWx5c2lzIG9mIHRoZSBkZWNvcmF0b3JzIGluIHRoZSBwcm9ncmFtIGluIG9yZGVyIHRvIG1pZ3JhdGUgb2xkZXIgY29kZSB0byB3b3JrXG4gKiB3aXRoIEl2eS5cbiAqXG4gKiBgTWlncmF0aW9uLmFwcGx5KClgIGlzIGNhbGxlZCBmb3IgZXZlcnkgY2xhc3MgaW4gdGhlIHByb2dyYW0gYmVpbmcgY29tcGlsZWQgYnkgbmdjYy5cbiAqXG4gKiBOb3RlIHRoYXQgdGhlIHVuZGVybHlpbmcgcHJvZ3JhbSBjb3VsZCBiZSBpbiBhIHZhcmlldHkgb2YgZGlmZmVyZW50IGZvcm1hdHMsIGUuZy4gRVMyMDE1LCBFUzUsXG4gKiBVTUQsIENvbW1vbkpTIGV0Yy4gVGhpcyBtZWFucyB0aGF0IGFuIGF1dGhvciBvZiBhIGBNaWdyYXRpb25gIHNob3VsZCBub3QgYXR0ZW1wdCB0byBuYXZpZ2F0ZSBhbmRcbiAqIG1hbmlwdWxhdGUgdGhlIEFTVCBub2RlcyBkaXJlY3RseS4gSW5zdGVhZCwgdGhlIGBNaWdyYXRpb25Ib3N0YCBpbnRlcmZhY2UsIHBhc3NlZCB0byB0aGVcbiAqIGBNaWdyYXRpb25gLCBwcm92aWRlcyBhY2Nlc3MgdG8gYSBgTWV0YWRhdGFSZWFkZXJgLCBgUmVmbGVjdGlvbkhvc3RgIGFuZCBgUGFydGlhbEV2YWx1YXRvcmBcbiAqIGludGVyZmFjZXMsIHdoaWNoIHNob3VsZCBiZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGlvbiB7XG4gIGFwcGx5KGNsYXp6OiBDbGFzc0RlY2xhcmF0aW9uLCBob3N0OiBNaWdyYXRpb25Ib3N0KTogdHMuRGlhZ25vc3RpY3xudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGlvbkhvc3Qge1xuICAvKiogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBkZWNvcmF0b3IgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGNsYXNzZXMuICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBNZXRhZGF0YVJlYWRlcjtcbiAgLyoqIFByb3ZpZGVzIGFjY2VzcyB0byBuYXZpZ2F0ZSB0aGUgQVNUIGluIGEgZm9ybWF0LWFnbm9zdGljIG1hbm5lci4gKi9cbiAgcmVhZG9ubHkgcmVmbGVjdGlvbkhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdDtcbiAgLyoqIEVuYWJsZXMgZXhwcmVzc2lvbnMgdG8gYmUgc3RhdGljYWxseSBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0uICovXG4gIHJlYWRvbmx5IGV2YWx1YXRvcjogUGFydGlhbEV2YWx1YXRvcjtcbiAgLyoqXG4gICAqIEFzc29jaWF0ZSBhIG5ldyBzeW50aGVzaXplZCBkZWNvcmF0b3IsIHdoaWNoIGRpZCBub3QgYXBwZWFyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIHdpdGggYVxuICAgKiBnaXZlbiBjbGFzcy5cbiAgICogQHBhcmFtIGNsYXp6IHRoZSBjbGFzcyB0byByZWNlaXZlIHRoZSBuZXcgZGVjb3JhdG9yLlxuICAgKiBAcGFyYW0gZGVjb3JhdG9yIHRoZSBkZWNvcmF0b3IgdG8gaW5qZWN0LlxuICAgKiBAcGFyYW0gZmxhZ3Mgb3B0aW9uYWwgYml0d2lzZSBmbGFnIHRvIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24gb2YgdGhlIGRlY29yYXRvci5cbiAgICovXG4gIGluamVjdFN5bnRoZXRpY0RlY29yYXRvcihjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbiwgZGVjb3JhdG9yOiBEZWNvcmF0b3IsIGZsYWdzPzogSGFuZGxlckZsYWdzKTpcbiAgICAgIHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbGwgZGVjb3JhdG9ycyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNsYXNzLCBpbmNsdWRpbmcgc3ludGhldGljIGRlY29yYXRvcnNcbiAgICogdGhhdCBoYXZlIGJlZW4gaW5qZWN0ZWQgYmVmb3JlLlxuICAgKiBAcGFyYW0gY2xhenogdGhlIGNsYXNzIGZvciB3aGljaCBhbGwgZGVjb3JhdG9ycyBhcmUgcmV0cmlldmVkLlxuICAgKiBAcmV0dXJucyB0aGUgbGlzdCBvZiB0aGUgZGVjb3JhdG9ycywgb3IgbnVsbCBpZiB0aGUgY2xhc3Mgd2FzIG5vdCBkZWNvcmF0ZWQuXG4gICAqL1xuICBnZXRBbGxEZWNvcmF0b3JzKGNsYXp6OiBDbGFzc0RlY2xhcmF0aW9uKTogRGVjb3JhdG9yW118bnVsbDtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBjbGFzcyBpbiB3aXRoaW4gc2NvcGUgb2YgdGhlIGVudHJ5LXBvaW50IHRoYXQgaXMgY3VycmVudGx5XG4gICAqIGJlaW5nIGNvbXBpbGVkLlxuICAgKiBAcGFyYW0gY2xhenogdGhlIGNsYXNzIGZvciB3aGljaCB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyB3aXRoaW4gdGhlIGN1cnJlbnQgZW50cnktcG9pbnQuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUgaXMgcGFydCBvZiB0aGUgY29tcGlsZWQgZW50cnktcG9pbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzSW5TY29wZShjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbik6IGJvb2xlYW47XG59XG4iXX0=