@angular/core 13.0.0-next.9 → 13.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/core.d.ts +791 -1180
  2. package/esm2020/core.mjs +5 -0
  3. package/esm2020/index.mjs +14 -0
  4. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  5. package/esm2020/src/application_init.mjs +140 -0
  6. package/esm2020/src/application_module.mjs +130 -0
  7. package/esm2020/src/application_ref.mjs +738 -0
  8. package/{esm2015/src/application_tokens.js → esm2020/src/application_tokens.mjs} +0 -0
  9. package/esm2020/src/change_detection/change_detection.mjs +31 -0
  10. package/esm2020/src/change_detection/change_detection_util.mjs +64 -0
  11. package/esm2020/src/change_detection/change_detector_ref.mjs +89 -0
  12. package/{esm2015/src/change_detection/constants.js → esm2020/src/change_detection/constants.mjs} +0 -0
  13. package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +666 -0
  14. package/{esm2015/src/change_detection/differs/default_keyvalue_differ.js → esm2020/src/change_detection/differs/default_keyvalue_differ.mjs} +0 -0
  15. package/{esm2015/src/change_detection/differs/iterable_differs.js → esm2020/src/change_detection/differs/iterable_differs.mjs} +0 -0
  16. package/{esm2015/src/change_detection/differs/keyvalue_differs.js → esm2020/src/change_detection/differs/keyvalue_differs.mjs} +0 -0
  17. package/{esm2015/src/change_detection/pipe_transform.js → esm2020/src/change_detection/pipe_transform.mjs} +0 -0
  18. package/esm2020/src/change_detection.mjs +14 -0
  19. package/esm2020/src/codegen_private_exports.mjs +11 -0
  20. package/{esm2015/src/compiler/compiler_facade.js → esm2020/src/compiler/compiler_facade.mjs} +0 -0
  21. package/{esm2015/src/compiler/compiler_facade_interface.js → esm2020/src/compiler/compiler_facade_interface.mjs} +1 -1
  22. package/esm2020/src/console.mjs +26 -0
  23. package/esm2020/src/core.mjs +52 -0
  24. package/esm2020/src/core_private_export.mjs +34 -0
  25. package/esm2020/src/core_render3_private_export.mjs +47 -0
  26. package/esm2020/src/debug/debug_node.mjs +625 -0
  27. package/{esm2015/src/debug/proxy.js → esm2020/src/debug/proxy.mjs} +0 -0
  28. package/{esm2015/src/di/forward_ref.js → esm2020/src/di/forward_ref.mjs} +0 -0
  29. package/{esm2015/src/di/index.js → esm2020/src/di/index.mjs} +0 -0
  30. package/{esm2015/src/di/inject_switch.js → esm2020/src/di/inject_switch.mjs} +0 -0
  31. package/esm2020/src/di/injectable.mjs +27 -0
  32. package/esm2020/src/di/injection_token.mjs +82 -0
  33. package/esm2020/src/di/injector.mjs +323 -0
  34. package/esm2020/src/di/injector_compatibility.mjs +185 -0
  35. package/{esm2015/src/di/injector_marker.js → esm2020/src/di/injector_marker.mjs} +0 -0
  36. package/{esm2015/src/di/injector_token.js → esm2020/src/di/injector_token.mjs} +0 -0
  37. package/{esm2015/src/di/interface/defs.js → esm2020/src/di/interface/defs.mjs} +0 -0
  38. package/{esm2015/src/di/interface/injector.js → esm2020/src/di/interface/injector.mjs} +0 -0
  39. package/{esm2015/src/di/interface/provider.js → esm2020/src/di/interface/provider.mjs} +0 -0
  40. package/{esm2015/src/di/jit/environment.js → esm2020/src/di/jit/environment.mjs} +0 -0
  41. package/esm2020/src/di/jit/injectable.mjs +94 -0
  42. package/{esm2015/src/di/jit/util.js → esm2020/src/di/jit/util.mjs} +0 -0
  43. package/esm2020/src/di/metadata.mjs +60 -0
  44. package/esm2020/src/di/metadata_attr.mjs +24 -0
  45. package/{esm2015/src/di/null_injector.js → esm2020/src/di/null_injector.mjs} +0 -0
  46. package/{esm2015/src/di/provider_token.js → esm2020/src/di/provider_token.mjs} +0 -0
  47. package/{esm2015/src/di/r3_injector.js → esm2020/src/di/r3_injector.mjs} +0 -0
  48. package/{esm2015/src/di/reflective_errors.js → esm2020/src/di/reflective_errors.mjs} +0 -0
  49. package/{esm2015/src/di/reflective_injector.js → esm2020/src/di/reflective_injector.mjs} +0 -0
  50. package/{esm2015/src/di/reflective_key.js → esm2020/src/di/reflective_key.mjs} +0 -0
  51. package/{esm2015/src/di/reflective_provider.js → esm2020/src/di/reflective_provider.mjs} +0 -0
  52. package/{esm2015/src/di/scope.js → esm2020/src/di/scope.mjs} +0 -0
  53. package/esm2020/src/di/util.mjs +51 -0
  54. package/{esm2015/src/di.js → esm2020/src/di.mjs} +0 -0
  55. package/{esm2015/src/error_handler.js → esm2020/src/error_handler.mjs} +0 -0
  56. package/{esm2015/src/errors.js → esm2020/src/errors.mjs} +0 -0
  57. package/esm2020/src/event_emitter.mjs +53 -0
  58. package/{esm2015/src/i18n/locale_data_api.js → esm2020/src/i18n/locale_data_api.mjs} +0 -0
  59. package/esm2020/src/i18n/locale_en.mjs +17 -0
  60. package/{esm2015/src/i18n/localization.js → esm2020/src/i18n/localization.mjs} +0 -0
  61. package/{esm2015/src/i18n/tokens.js → esm2020/src/i18n/tokens.mjs} +0 -0
  62. package/{esm2015/src/interface/lifecycle_hooks.js → esm2020/src/interface/lifecycle_hooks.mjs} +0 -0
  63. package/{esm2015/src/interface/simple_change.js → esm2020/src/interface/simple_change.mjs} +0 -0
  64. package/{esm2015/src/interface/type.js → esm2020/src/interface/type.mjs} +0 -0
  65. package/{esm2015/src/ivy_switch.js → esm2020/src/ivy_switch.mjs} +2 -2
  66. package/esm2020/src/linker/compiler.mjs +136 -0
  67. package/{esm2015/src/linker/component_factory.js → esm2020/src/linker/component_factory.mjs} +0 -0
  68. package/{esm2015/src/linker/component_factory_resolver.js → esm2020/src/linker/component_factory_resolver.mjs} +5 -5
  69. package/esm2020/src/linker/element_ref.mjs +59 -0
  70. package/esm2020/src/linker/ng_module_factory.mjs +29 -0
  71. package/esm2020/src/linker/ng_module_factory_loader.mjs +42 -0
  72. package/esm2020/src/linker/ng_module_factory_loader_impl.mjs +10 -0
  73. package/{esm2015/src/linker/ng_module_factory_registration.js → esm2020/src/linker/ng_module_factory_registration.mjs} +2 -2
  74. package/{esm2015/src/linker/query_list.js → esm2020/src/linker/query_list.mjs} +0 -0
  75. package/{esm2015/src/linker/template_ref.js → esm2020/src/linker/template_ref.mjs} +2 -2
  76. package/esm2020/src/linker/view_container_ref.mjs +283 -0
  77. package/{esm2015/src/linker/view_ref.js → esm2020/src/linker/view_ref.mjs} +0 -0
  78. package/esm2020/src/linker.mjs +19 -0
  79. package/esm2020/src/metadata/di.mjs +108 -0
  80. package/esm2020/src/metadata/directives.mjs +112 -0
  81. package/{esm2015/src/metadata/do_boostrap.js → esm2020/src/metadata/do_boostrap.mjs} +0 -0
  82. package/esm2020/src/metadata/ng_module.mjs +42 -0
  83. package/{esm2015/src/metadata/ng_module_def.js → esm2020/src/metadata/ng_module_def.mjs} +0 -0
  84. package/{esm2015/src/metadata/resource_loading.js → esm2020/src/metadata/resource_loading.mjs} +0 -0
  85. package/{esm2015/src/metadata/schema.js → esm2020/src/metadata/schema.mjs} +0 -0
  86. package/{esm2015/src/metadata/view.js → esm2020/src/metadata/view.mjs} +0 -0
  87. package/{esm2015/src/metadata.js → esm2020/src/metadata.mjs} +0 -0
  88. package/{esm2015/src/platform_core_providers.js → esm2020/src/platform_core_providers.mjs} +0 -0
  89. package/{esm2015/src/r3_symbols.js → esm2020/src/r3_symbols.mjs} +0 -0
  90. package/{esm2015/src/reflection/platform_reflection_capabilities.js → esm2020/src/reflection/platform_reflection_capabilities.mjs} +0 -0
  91. package/{esm2015/src/reflection/reflection.js → esm2020/src/reflection/reflection.mjs} +0 -0
  92. package/{esm2015/src/reflection/reflection_capabilities.js → esm2020/src/reflection/reflection_capabilities.mjs} +0 -0
  93. package/{esm2015/src/reflection/reflector.js → esm2020/src/reflection/reflector.mjs} +0 -0
  94. package/{esm2015/src/reflection/types.js → esm2020/src/reflection/types.mjs} +0 -0
  95. package/{esm2015/src/render/api.js → esm2020/src/render/api.mjs} +2 -2
  96. package/{esm2015/src/render/api_flags.js → esm2020/src/render/api_flags.mjs} +0 -0
  97. package/{esm2015/src/render.js → esm2020/src/render.mjs} +0 -0
  98. package/{esm2015/src/render3/assert.js → esm2020/src/render3/assert.mjs} +0 -0
  99. package/{esm2015/src/render3/bindings.js → esm2020/src/render3/bindings.mjs} +0 -0
  100. package/{esm2015/src/render3/collect_native_nodes.js → esm2020/src/render3/collect_native_nodes.mjs} +0 -0
  101. package/esm2020/src/render3/component.mjs +204 -0
  102. package/{esm2015/src/render3/component_ref.js → esm2020/src/render3/component_ref.mjs} +0 -0
  103. package/{esm2015/src/render3/context_discovery.js → esm2020/src/render3/context_discovery.mjs} +0 -0
  104. package/esm2020/src/render3/definition.mjs +296 -0
  105. package/{esm2015/src/render3/definition_factory.js → esm2020/src/render3/definition_factory.mjs} +0 -0
  106. package/{esm2015/src/render3/di.js → esm2020/src/render3/di.mjs} +3 -3
  107. package/{esm2015/src/render3/di_setup.js → esm2020/src/render3/di_setup.mjs} +0 -0
  108. package/esm2020/src/render3/error_code.mjs +42 -0
  109. package/esm2020/src/render3/error_details_base_url.mjs +16 -0
  110. package/{esm2015/src/render3/errors.js → esm2020/src/render3/errors.mjs} +0 -0
  111. package/{esm2015/src/render3/errors_di.js → esm2020/src/render3/errors_di.mjs} +0 -0
  112. package/{esm2015/src/render3/features/copy_definition_feature.js → esm2020/src/render3/features/copy_definition_feature.mjs} +0 -0
  113. package/{esm2015/src/render3/features/inherit_definition_feature.js → esm2020/src/render3/features/inherit_definition_feature.mjs} +0 -0
  114. package/esm2020/src/render3/features/ng_onchanges_feature.mjs +92 -0
  115. package/{esm2015/src/render3/features/providers_feature.js → esm2020/src/render3/features/providers_feature.mjs} +0 -0
  116. package/esm2020/src/render3/fields.mjs +21 -0
  117. package/{esm2015/src/render3/global_utils_api.js → esm2020/src/render3/global_utils_api.mjs} +0 -0
  118. package/{esm2015/src/render3/hooks.js → esm2020/src/render3/hooks.mjs} +0 -0
  119. package/{esm2015/src/render3/i18n/i18n_apply.js → esm2020/src/render3/i18n/i18n_apply.mjs} +0 -0
  120. package/{esm2015/src/render3/i18n/i18n_debug.js → esm2020/src/render3/i18n/i18n_debug.mjs} +0 -0
  121. package/{esm2015/src/render3/i18n/i18n_insert_before_index.js → esm2020/src/render3/i18n/i18n_insert_before_index.mjs} +0 -0
  122. package/{esm2015/src/render3/i18n/i18n_locale_id.js → esm2020/src/render3/i18n/i18n_locale_id.mjs} +0 -0
  123. package/{esm2015/src/render3/i18n/i18n_parse.js → esm2020/src/render3/i18n/i18n_parse.mjs} +0 -0
  124. package/{esm2015/src/render3/i18n/i18n_postprocess.js → esm2020/src/render3/i18n/i18n_postprocess.mjs} +0 -0
  125. package/{esm2015/src/render3/i18n/i18n_tree_shaking.js → esm2020/src/render3/i18n/i18n_tree_shaking.mjs} +0 -0
  126. package/{esm2015/src/render3/i18n/i18n_util.js → esm2020/src/render3/i18n/i18n_util.mjs} +0 -0
  127. package/{esm2015/src/render3/index.js → esm2020/src/render3/index.mjs} +0 -0
  128. package/{esm2015/src/render3/instructions/advance.js → esm2020/src/render3/instructions/advance.mjs} +0 -0
  129. package/{esm2015/src/render3/instructions/all.js → esm2020/src/render3/instructions/all.mjs} +0 -0
  130. package/{esm2015/src/render3/instructions/attribute.js → esm2020/src/render3/instructions/attribute.mjs} +0 -0
  131. package/{esm2015/src/render3/instructions/attribute_interpolation.js → esm2020/src/render3/instructions/attribute_interpolation.mjs} +0 -0
  132. package/{esm2015/src/render3/instructions/change_detection.js → esm2020/src/render3/instructions/change_detection.mjs} +0 -0
  133. package/{esm2015/src/render3/instructions/class_map_interpolation.js → esm2020/src/render3/instructions/class_map_interpolation.mjs} +0 -0
  134. package/{esm2015/src/render3/instructions/di.js → esm2020/src/render3/instructions/di.mjs} +0 -0
  135. package/{esm2015/src/render3/instructions/di_attr.js → esm2020/src/render3/instructions/di_attr.mjs} +0 -0
  136. package/{esm2015/src/render3/instructions/element.js → esm2020/src/render3/instructions/element.mjs} +0 -0
  137. package/{esm2015/src/render3/instructions/element_container.js → esm2020/src/render3/instructions/element_container.mjs} +0 -0
  138. package/{esm2015/src/render3/instructions/get_current_view.js → esm2020/src/render3/instructions/get_current_view.mjs} +0 -0
  139. package/{esm2015/src/render3/instructions/host_property.js → esm2020/src/render3/instructions/host_property.mjs} +0 -0
  140. package/{esm2015/src/render3/instructions/i18n.js → esm2020/src/render3/instructions/i18n.mjs} +0 -0
  141. package/{esm2015/src/render3/instructions/i18n_icu_container_visitor.js → esm2020/src/render3/instructions/i18n_icu_container_visitor.mjs} +0 -0
  142. package/{esm2015/src/render3/instructions/interpolation.js → esm2020/src/render3/instructions/interpolation.mjs} +0 -0
  143. package/{esm2015/src/render3/instructions/listener.js → esm2020/src/render3/instructions/listener.mjs} +0 -0
  144. package/{esm2015/src/render3/instructions/lview_debug.js → esm2020/src/render3/instructions/lview_debug.mjs} +0 -0
  145. package/{esm2015/src/render3/instructions/namespace.js → esm2020/src/render3/instructions/namespace.mjs} +0 -0
  146. package/{esm2015/src/render3/instructions/next_context.js → esm2020/src/render3/instructions/next_context.mjs} +0 -0
  147. package/{esm2015/src/render3/instructions/projection.js → esm2020/src/render3/instructions/projection.mjs} +0 -0
  148. package/{esm2015/src/render3/instructions/property.js → esm2020/src/render3/instructions/property.mjs} +0 -0
  149. package/{esm2015/src/render3/instructions/property_interpolation.js → esm2020/src/render3/instructions/property_interpolation.mjs} +0 -0
  150. package/esm2020/src/render3/instructions/shared.mjs +1811 -0
  151. package/{esm2015/src/render3/instructions/storage.js → esm2020/src/render3/instructions/storage.mjs} +0 -0
  152. package/{esm2015/src/render3/instructions/style_map_interpolation.js → esm2020/src/render3/instructions/style_map_interpolation.mjs} +0 -0
  153. package/{esm2015/src/render3/instructions/style_prop_interpolation.js → esm2020/src/render3/instructions/style_prop_interpolation.mjs} +0 -0
  154. package/{esm2015/src/render3/instructions/styling.js → esm2020/src/render3/instructions/styling.mjs} +0 -0
  155. package/{esm2015/src/render3/instructions/template.js → esm2020/src/render3/instructions/template.mjs} +0 -0
  156. package/{esm2015/src/render3/instructions/text.js → esm2020/src/render3/instructions/text.mjs} +0 -0
  157. package/{esm2015/src/render3/instructions/text_interpolation.js → esm2020/src/render3/instructions/text_interpolation.mjs} +0 -0
  158. package/{esm2015/src/render3/interfaces/container.js → esm2020/src/render3/interfaces/container.mjs} +0 -0
  159. package/{esm2015/src/render3/interfaces/context.js → esm2020/src/render3/interfaces/context.mjs} +0 -0
  160. package/{esm2015/src/render3/interfaces/definition.js → esm2020/src/render3/interfaces/definition.mjs} +0 -0
  161. package/{esm2015/src/render3/interfaces/document.js → esm2020/src/render3/interfaces/document.mjs} +0 -0
  162. package/{esm2015/src/render3/interfaces/i18n.js → esm2020/src/render3/interfaces/i18n.mjs} +0 -0
  163. package/{esm2015/src/render3/interfaces/injector.js → esm2020/src/render3/interfaces/injector.mjs} +0 -0
  164. package/{esm2015/src/render3/interfaces/node.js → esm2020/src/render3/interfaces/node.mjs} +0 -0
  165. package/{esm2015/src/render3/interfaces/player.js → esm2020/src/render3/interfaces/player.mjs} +0 -0
  166. package/{esm2015/src/render3/interfaces/projection.js → esm2020/src/render3/interfaces/projection.mjs} +0 -0
  167. package/{esm2015/src/render3/interfaces/public_definitions.js → esm2020/src/render3/interfaces/public_definitions.mjs} +0 -0
  168. package/{esm2015/src/render3/interfaces/query.js → esm2020/src/render3/interfaces/query.mjs} +0 -0
  169. package/esm2020/src/render3/interfaces/renderer.mjs +27 -0
  170. package/{esm2015/src/render3/interfaces/renderer_dom.js → esm2020/src/render3/interfaces/renderer_dom.mjs} +0 -0
  171. package/{esm2015/src/render3/interfaces/sanitization.js → esm2020/src/render3/interfaces/sanitization.mjs} +0 -0
  172. package/{esm2015/src/render3/interfaces/styling.js → esm2020/src/render3/interfaces/styling.mjs} +0 -0
  173. package/{esm2015/src/render3/interfaces/type_checks.js → esm2020/src/render3/interfaces/type_checks.mjs} +0 -0
  174. package/{esm2015/src/render3/interfaces/view.js → esm2020/src/render3/interfaces/view.mjs} +0 -0
  175. package/esm2020/src/render3/jit/directive.mjs +325 -0
  176. package/esm2020/src/render3/jit/environment.mjs +165 -0
  177. package/{esm2015/src/render3/jit/jit_options.js → esm2020/src/render3/jit/jit_options.mjs} +0 -0
  178. package/{esm2015/src/render3/jit/module.js → esm2020/src/render3/jit/module.mjs} +0 -0
  179. package/esm2020/src/render3/jit/partial.mjs +104 -0
  180. package/{esm2015/src/render3/jit/pipe.js → esm2020/src/render3/jit/pipe.mjs} +0 -0
  181. package/esm2020/src/render3/metadata.mjs +49 -0
  182. package/{esm2015/src/render3/namespaces.js → esm2020/src/render3/namespaces.mjs} +0 -0
  183. package/esm2020/src/render3/ng_module_ref.mjs +119 -0
  184. package/{esm2015/src/render3/node_assert.js → esm2020/src/render3/node_assert.mjs} +0 -0
  185. package/{esm2015/src/render3/node_manipulation.js → esm2020/src/render3/node_manipulation.mjs} +0 -0
  186. package/{esm2015/src/render3/node_manipulation_i18n.js → esm2020/src/render3/node_manipulation_i18n.mjs} +0 -0
  187. package/{esm2015/src/render3/node_selector_matcher.js → esm2020/src/render3/node_selector_matcher.mjs} +0 -0
  188. package/esm2020/src/render3/pipe.mjs +184 -0
  189. package/{esm2015/src/render3/profiler.js → esm2020/src/render3/profiler.mjs} +0 -0
  190. package/{esm2015/src/render3/pure_function.js → esm2020/src/render3/pure_function.mjs} +0 -0
  191. package/{esm2015/src/render3/query.js → esm2020/src/render3/query.mjs} +0 -0
  192. package/{esm2015/src/render3/state.js → esm2020/src/render3/state.mjs} +0 -0
  193. package/{esm2015/src/render3/styling/class_differ.js → esm2020/src/render3/styling/class_differ.mjs} +0 -0
  194. package/{esm2015/src/render3/styling/static_styling.js → esm2020/src/render3/styling/static_styling.mjs} +0 -0
  195. package/{esm2015/src/render3/styling/style_binding_list.js → esm2020/src/render3/styling/style_binding_list.mjs} +0 -0
  196. package/{esm2015/src/render3/styling/styling_parser.js → esm2020/src/render3/styling/styling_parser.mjs} +0 -0
  197. package/{esm2015/src/render3/tokens.js → esm2020/src/render3/tokens.mjs} +0 -0
  198. package/{esm2015/src/render3/util/attrs_utils.js → esm2020/src/render3/util/attrs_utils.mjs} +0 -0
  199. package/{esm2015/src/render3/util/change_detection_utils.js → esm2020/src/render3/util/change_detection_utils.mjs} +0 -0
  200. package/{esm2015/src/render3/util/debug_utils.js → esm2020/src/render3/util/debug_utils.mjs} +0 -0
  201. package/esm2020/src/render3/util/discovery_utils.mjs +411 -0
  202. package/esm2020/src/render3/util/global_utils.mjs +77 -0
  203. package/{esm2015/src/render3/util/injector_utils.js → esm2020/src/render3/util/injector_utils.mjs} +0 -0
  204. package/esm2020/src/render3/util/misc_utils.mjs +61 -0
  205. package/{esm2015/src/render3/util/stringify_utils.js → esm2020/src/render3/util/stringify_utils.mjs} +0 -0
  206. package/{esm2015/src/render3/util/view_traversal_utils.js → esm2020/src/render3/util/view_traversal_utils.mjs} +0 -0
  207. package/{esm2015/src/render3/util/view_utils.js → esm2020/src/render3/util/view_utils.mjs} +0 -0
  208. package/{esm2015/src/render3/view_engine_compatibility_prebound.js → esm2020/src/render3/view_engine_compatibility_prebound.mjs} +0 -0
  209. package/{esm2015/src/render3/view_ref.js → esm2020/src/render3/view_ref.mjs} +0 -0
  210. package/{esm2015/src/sanitization/bypass.js → esm2020/src/sanitization/bypass.mjs} +0 -0
  211. package/{esm2015/src/sanitization/html_sanitizer.js → esm2020/src/sanitization/html_sanitizer.mjs} +0 -0
  212. package/{esm2015/src/sanitization/inert_body.js → esm2020/src/sanitization/inert_body.mjs} +3 -3
  213. package/{esm2015/src/sanitization/sanitization.js → esm2020/src/sanitization/sanitization.mjs} +0 -0
  214. package/{esm2015/src/sanitization/sanitizer.js → esm2020/src/sanitization/sanitizer.mjs} +0 -0
  215. package/{esm2015/src/sanitization/security.js → esm2020/src/sanitization/security.mjs} +0 -0
  216. package/{esm2015/src/sanitization/url_sanitizer.js → esm2020/src/sanitization/url_sanitizer.mjs} +0 -0
  217. package/esm2020/src/testability/testability.mjs +258 -0
  218. package/{esm2015/src/util/array_utils.js → esm2020/src/util/array_utils.mjs} +0 -0
  219. package/{esm2015/src/util/assert.js → esm2020/src/util/assert.mjs} +0 -0
  220. package/{esm2015/src/util/char_code.js → esm2020/src/util/char_code.mjs} +0 -0
  221. package/{esm2015/src/util/closure.js → esm2020/src/util/closure.mjs} +0 -0
  222. package/{esm2015/src/util/comparison.js → esm2020/src/util/comparison.mjs} +0 -0
  223. package/{esm2015/src/util/decorators.js → esm2020/src/util/decorators.mjs} +0 -0
  224. package/{esm2015/src/util/dom.js → esm2020/src/util/dom.mjs} +0 -0
  225. package/{esm2015/src/util/empty.js → esm2020/src/util/empty.mjs} +0 -0
  226. package/{esm2015/src/util/errors.js → esm2020/src/util/errors.mjs} +0 -0
  227. package/{esm2015/src/util/global.js → esm2020/src/util/global.mjs} +0 -0
  228. package/{esm2015/src/util/is_dev_mode.js → esm2020/src/util/is_dev_mode.mjs} +0 -0
  229. package/{esm2015/src/util/iterable.js → esm2020/src/util/iterable.mjs} +0 -0
  230. package/{esm2015/src/util/lang.js → esm2020/src/util/lang.mjs} +0 -0
  231. package/{esm2015/src/util/microtask.js → esm2020/src/util/microtask.mjs} +0 -0
  232. package/{esm2015/src/util/named_array_type.js → esm2020/src/util/named_array_type.mjs} +0 -0
  233. package/{esm2015/src/util/ng_dev_mode.js → esm2020/src/util/ng_dev_mode.mjs} +0 -0
  234. package/{esm2015/src/util/ng_i18n_closure_mode.js → esm2020/src/util/ng_i18n_closure_mode.mjs} +0 -0
  235. package/{esm2015/src/util/ng_jit_mode.js → esm2020/src/util/ng_jit_mode.mjs} +0 -0
  236. package/{esm2015/src/util/ng_reflect.js → esm2020/src/util/ng_reflect.mjs} +0 -0
  237. package/{esm2015/src/util/noop.js → esm2020/src/util/noop.mjs} +0 -0
  238. package/{esm2015/src/util/property.js → esm2020/src/util/property.mjs} +0 -0
  239. package/{esm2015/src/util/raf.js → esm2020/src/util/raf.mjs} +0 -0
  240. package/{esm2015/src/util/security/trusted_type_defs.js → esm2020/src/util/security/trusted_type_defs.mjs} +0 -0
  241. package/esm2020/src/util/security/trusted_types.mjs +130 -0
  242. package/esm2020/src/util/security/trusted_types_bypass.mjs +83 -0
  243. package/{esm2015/src/util/stringify.js → esm2020/src/util/stringify.mjs} +0 -0
  244. package/{esm2015/src/util/symbol.js → esm2020/src/util/symbol.mjs} +0 -0
  245. package/{esm2015/src/version.js → esm2020/src/version.mjs} +1 -1
  246. package/{esm2015/src/view/element.js → esm2020/src/view/element.mjs} +0 -0
  247. package/{esm2015/src/view/entrypoint.js → esm2020/src/view/entrypoint.mjs} +0 -0
  248. package/{esm2015/src/view/errors.js → esm2020/src/view/errors.mjs} +0 -0
  249. package/{esm2015/src/view/index.js → esm2020/src/view/index.mjs} +2 -2
  250. package/{esm2015/src/view/ng_content.js → esm2020/src/view/ng_content.mjs} +0 -0
  251. package/{esm2015/src/view/ng_module.js → esm2020/src/view/ng_module.mjs} +0 -0
  252. package/esm2020/src/view/provider.mjs +490 -0
  253. package/{esm2015/src/view/provider_flags.js → esm2020/src/view/provider_flags.mjs} +0 -0
  254. package/{esm2015/src/view/pure_expression.js → esm2020/src/view/pure_expression.mjs} +0 -0
  255. package/{esm2015/src/view/query.js → esm2020/src/view/query.mjs} +0 -0
  256. package/{esm2015/src/view/refs.js → esm2020/src/view/refs.mjs} +0 -0
  257. package/{esm2015/src/view/services.js → esm2020/src/view/services.mjs} +0 -0
  258. package/{esm2015/src/view/text.js → esm2020/src/view/text.mjs} +0 -0
  259. package/{esm2015/src/view/types.js → esm2020/src/view/types.mjs} +0 -0
  260. package/esm2020/src/view/util.mjs +369 -0
  261. package/{esm2015/src/view/view.js → esm2020/src/view/view.mjs} +0 -0
  262. package/{esm2015/src/view/view_attach.js → esm2020/src/view/view_attach.mjs} +0 -0
  263. package/{esm2015/src/zone/ng_zone.js → esm2020/src/zone/ng_zone.mjs} +0 -0
  264. package/{esm2015/src/zone.js → esm2020/src/zone.mjs} +0 -0
  265. package/{esm2015/testing/index.js → esm2020/testing/index.mjs} +0 -0
  266. package/{esm2015/testing/public_api.js → esm2020/testing/public_api.mjs} +0 -0
  267. package/{esm2015/testing/src/async.js → esm2020/testing/src/async.mjs} +0 -0
  268. package/{esm2015/testing/src/component_fixture.js → esm2020/testing/src/component_fixture.mjs} +0 -0
  269. package/{esm2015/testing/src/fake_async.js → esm2020/testing/src/fake_async.mjs} +0 -0
  270. package/{esm2015/testing/src/lang_utils.js → esm2020/testing/src/lang_utils.mjs} +0 -0
  271. package/esm2020/testing/src/logger.mjs +34 -0
  272. package/{esm2015/testing/src/metadata_override.js → esm2020/testing/src/metadata_override.mjs} +0 -0
  273. package/{esm2015/testing/src/metadata_overrider.js → esm2020/testing/src/metadata_overrider.mjs} +0 -0
  274. package/esm2020/testing/src/ng_zone_mock.mjs +33 -0
  275. package/{esm2015/testing/src/private_export_testing.js → esm2020/testing/src/private_export_testing.mjs} +0 -0
  276. package/esm2020/testing/src/r3_test_bed.mjs +397 -0
  277. package/esm2020/testing/src/r3_test_bed_compiler.mjs +735 -0
  278. package/{esm2015/testing/src/resolvers.js → esm2020/testing/src/resolvers.mjs} +0 -0
  279. package/{esm2015/testing/src/styling.js → esm2020/testing/src/styling.mjs} +0 -0
  280. package/esm2020/testing/src/test_bed.mjs +614 -0
  281. package/esm2020/testing/src/test_bed_common.mjs +28 -0
  282. package/esm2020/testing/src/test_compiler.mjs +69 -0
  283. package/{esm2015/testing/src/test_hooks.js → esm2020/testing/src/test_hooks.mjs} +0 -0
  284. package/{esm2015/testing/src/testing.js → esm2020/testing/src/testing.mjs} +0 -0
  285. package/{esm2015/testing/src/testing_internal.js → esm2020/testing/src/testing_internal.mjs} +0 -0
  286. package/esm2020/testing/testing.mjs +5 -0
  287. package/fesm2015/{core.js → core.mjs} +496 -546
  288. package/fesm2015/core.mjs.map +1 -0
  289. package/fesm2015/{testing.js → testing.mjs} +50 -61
  290. package/fesm2015/testing.mjs.map +1 -0
  291. package/fesm2020/core.mjs +33109 -0
  292. package/fesm2020/core.mjs.map +1 -0
  293. package/fesm2020/testing.mjs +2635 -0
  294. package/fesm2020/testing.mjs.map +1 -0
  295. package/package.json +33 -8
  296. package/schematics/migrations/{move-document → testbed-teardown}/index.d.ts +2 -2
  297. package/schematics/migrations/testbed-teardown/index.js +92 -0
  298. package/schematics/migrations/testbed-teardown/util.d.ts +35 -0
  299. package/schematics/migrations/testbed-teardown/util.js +188 -0
  300. package/schematics/migrations.json +6 -101
  301. package/schematics/package.json +3 -0
  302. package/schematics/utils/import_manager.d.ts +1 -1
  303. package/schematics/utils/import_manager.js +22 -19
  304. package/schematics/utils/load_esm.d.ts +8 -0
  305. package/schematics/utils/load_esm.js +24 -2
  306. package/schematics/utils/ng_component_template.d.ts +1 -1
  307. package/schematics/utils/ng_component_template.js +12 -9
  308. package/schematics/utils/ng_decorators.d.ts +1 -1
  309. package/schematics/utils/ng_decorators.js +1 -1
  310. package/schematics/utils/typescript/class_declaration.d.ts +1 -1
  311. package/schematics/utils/typescript/class_declaration.js +10 -7
  312. package/schematics/utils/typescript/compiler_host.d.ts +1 -1
  313. package/schematics/utils/typescript/compiler_host.js +7 -4
  314. package/schematics/utils/typescript/decorators.d.ts +1 -1
  315. package/schematics/utils/typescript/decorators.js +7 -4
  316. package/schematics/utils/typescript/find_base_classes.d.ts +1 -1
  317. package/schematics/utils/typescript/find_base_classes.js +6 -3
  318. package/schematics/utils/typescript/functions.d.ts +1 -1
  319. package/schematics/utils/typescript/functions.js +9 -6
  320. package/schematics/utils/typescript/imports.d.ts +1 -1
  321. package/schematics/utils/typescript/imports.js +12 -9
  322. package/schematics/utils/typescript/nodes.d.ts +1 -1
  323. package/schematics/utils/typescript/nodes.js +11 -8
  324. package/schematics/utils/typescript/parse_tsconfig.d.ts +1 -1
  325. package/schematics/utils/typescript/parse_tsconfig.js +31 -9
  326. package/schematics/utils/typescript/property_name.d.ts +1 -1
  327. package/schematics/utils/typescript/property_name.js +7 -4
  328. package/schematics/utils/typescript/symbol.d.ts +1 -1
  329. package/schematics/utils/typescript/symbol.js +15 -12
  330. package/testing/package.json +5 -5
  331. package/testing/testing.d.ts +4 -333
  332. package/bundles/core-testing.umd.js +0 -3179
  333. package/bundles/core-testing.umd.js.map +0 -1
  334. package/bundles/core.umd.js +0 -34454
  335. package/bundles/core.umd.js.map +0 -1
  336. package/core.metadata.json +0 -1
  337. package/esm2015/core.externs.js +0 -6
  338. package/esm2015/core.js +0 -38
  339. package/esm2015/index.js +0 -13
  340. package/esm2015/src/application_init.js +0 -142
  341. package/esm2015/src/application_module.js +0 -134
  342. package/esm2015/src/application_ref.js +0 -738
  343. package/esm2015/src/change_detection/change_detection.js +0 -31
  344. package/esm2015/src/change_detection/change_detection_util.js +0 -105
  345. package/esm2015/src/change_detection/change_detector_ref.js +0 -96
  346. package/esm2015/src/change_detection/differs/default_iterable_differ.js +0 -668
  347. package/esm2015/src/change_detection.js +0 -14
  348. package/esm2015/src/codegen_private_exports.js +0 -11
  349. package/esm2015/src/compiler/compiler.externs.js +0 -0
  350. package/esm2015/src/console.js +0 -23
  351. package/esm2015/src/core.js +0 -50
  352. package/esm2015/src/core_private_export.js +0 -35
  353. package/esm2015/src/core_render3_private_export.js +0 -45
  354. package/esm2015/src/debug/debug_node.js +0 -632
  355. package/esm2015/src/di/injectable.js +0 -36
  356. package/esm2015/src/di/injection_token.js +0 -75
  357. package/esm2015/src/di/injector.js +0 -326
  358. package/esm2015/src/di/injector_compatibility.js +0 -187
  359. package/esm2015/src/di/interface/interface.externs.js +0 -0
  360. package/esm2015/src/di/jit/injectable.js +0 -96
  361. package/esm2015/src/di/metadata.js +0 -62
  362. package/esm2015/src/di/metadata_attr.js +0 -24
  363. package/esm2015/src/di/util.js +0 -53
  364. package/esm2015/src/event_emitter.js +0 -54
  365. package/esm2015/src/i18n/locale_en.js +0 -17
  366. package/esm2015/src/interface/interface.externs.js +0 -0
  367. package/esm2015/src/linker/compiler.js +0 -118
  368. package/esm2015/src/linker/element_ref.js +0 -66
  369. package/esm2015/src/linker/ng_module_factory.js +0 -21
  370. package/esm2015/src/linker/ng_module_factory_loader.js +0 -32
  371. package/esm2015/src/linker/view_container_ref.js +0 -290
  372. package/esm2015/src/linker.js +0 -19
  373. package/esm2015/src/metadata/di.js +0 -99
  374. package/esm2015/src/metadata/directives.js +0 -120
  375. package/esm2015/src/metadata/ng_module.js +0 -44
  376. package/esm2015/src/reflection/reflection.externs.js +0 -0
  377. package/esm2015/src/render3/component.js +0 -206
  378. package/esm2015/src/render3/definition.js +0 -299
  379. package/esm2015/src/render3/error_code.js +0 -45
  380. package/esm2015/src/render3/features/ng_onchanges_feature.js +0 -92
  381. package/esm2015/src/render3/fields.js +0 -22
  382. package/esm2015/src/render3/instructions/shared.js +0 -1813
  383. package/esm2015/src/render3/interfaces/renderer.js +0 -29
  384. package/esm2015/src/render3/jit/directive.js +0 -312
  385. package/esm2015/src/render3/jit/environment.js +0 -167
  386. package/esm2015/src/render3/jit/partial.js +0 -105
  387. package/esm2015/src/render3/metadata.js +0 -49
  388. package/esm2015/src/render3/ng_module_ref.js +0 -108
  389. package/esm2015/src/render3/pipe.js +0 -202
  390. package/esm2015/src/render3/util/discovery_utils.js +0 -411
  391. package/esm2015/src/render3/util/global_utils.js +0 -78
  392. package/esm2015/src/render3/util/misc_utils.js +0 -63
  393. package/esm2015/src/testability/testability.js +0 -256
  394. package/esm2015/src/util/security/trusted_types.js +0 -133
  395. package/esm2015/src/util/security/trusted_types_bypass.js +0 -86
  396. package/esm2015/src/util/util.externs.js +0 -0
  397. package/esm2015/src/view/provider.js +0 -490
  398. package/esm2015/src/view/util.js +0 -378
  399. package/esm2015/testing/src/logger.js +0 -32
  400. package/esm2015/testing/src/ng_zone_mock.js +0 -31
  401. package/esm2015/testing/src/r3_test_bed.js +0 -397
  402. package/esm2015/testing/src/r3_test_bed_compiler.js +0 -744
  403. package/esm2015/testing/src/test_bed.js +0 -608
  404. package/esm2015/testing/src/test_bed_common.js +0 -31
  405. package/esm2015/testing/src/test_compiler.js +0 -66
  406. package/esm2015/testing/testing.externs.js +0 -6
  407. package/esm2015/testing/testing.js +0 -7
  408. package/fesm2015/core.js.map +0 -1
  409. package/fesm2015/testing.js.map +0 -1
  410. package/schematics/migrations/abstract-control-parent/index.d.ts +0 -11
  411. package/schematics/migrations/abstract-control-parent/index.js +0 -69
  412. package/schematics/migrations/abstract-control-parent/util.d.ts +0 -14
  413. package/schematics/migrations/abstract-control-parent/util.js +0 -64
  414. package/schematics/migrations/activated-route-snapshot-fragment/index.d.ts +0 -13
  415. package/schematics/migrations/activated-route-snapshot-fragment/index.js +0 -70
  416. package/schematics/migrations/activated-route-snapshot-fragment/util.d.ts +0 -16
  417. package/schematics/migrations/activated-route-snapshot-fragment/util.js +0 -48
  418. package/schematics/migrations/can-activate-with-redirect-to/index.d.ts +0 -11
  419. package/schematics/migrations/can-activate-with-redirect-to/index.js +0 -66
  420. package/schematics/migrations/can-activate-with-redirect-to/util.d.ts +0 -11
  421. package/schematics/migrations/can-activate-with-redirect-to/util.js +0 -70
  422. package/schematics/migrations/deep-shadow-piercing-selector/index.d.ts +0 -10
  423. package/schematics/migrations/deep-shadow-piercing-selector/index.js +0 -49
  424. package/schematics/migrations/dynamic-queries/index.d.ts +0 -13
  425. package/schematics/migrations/dynamic-queries/index.js +0 -73
  426. package/schematics/migrations/dynamic-queries/util.d.ts +0 -25
  427. package/schematics/migrations/dynamic-queries/util.js +0 -81
  428. package/schematics/migrations/initial-navigation/collector.d.ts +0 -22
  429. package/schematics/migrations/initial-navigation/collector.js +0 -119
  430. package/schematics/migrations/initial-navigation/index.d.ts +0 -11
  431. package/schematics/migrations/initial-navigation/index.js +0 -83
  432. package/schematics/migrations/initial-navigation/transform.d.ts +0 -20
  433. package/schematics/migrations/initial-navigation/transform.js +0 -68
  434. package/schematics/migrations/initial-navigation/update_recorder.d.ts +0 -18
  435. package/schematics/migrations/initial-navigation/update_recorder.js +0 -20
  436. package/schematics/migrations/initial-navigation/util.d.ts +0 -12
  437. package/schematics/migrations/initial-navigation/util.js +0 -43
  438. package/schematics/migrations/missing-injectable/definition_collector.d.ts +0 -37
  439. package/schematics/migrations/missing-injectable/definition_collector.js +0 -89
  440. package/schematics/migrations/missing-injectable/index.d.ts +0 -11
  441. package/schematics/migrations/missing-injectable/index.js +0 -122
  442. package/schematics/migrations/missing-injectable/providers_evaluator.d.ts +0 -36
  443. package/schematics/migrations/missing-injectable/providers_evaluator.js +0 -64
  444. package/schematics/migrations/missing-injectable/transform.d.ts +0 -69
  445. package/schematics/migrations/missing-injectable/transform.js +0 -201
  446. package/schematics/migrations/missing-injectable/update_recorder.d.ts +0 -21
  447. package/schematics/migrations/missing-injectable/update_recorder.js +0 -20
  448. package/schematics/migrations/module-with-providers/collector.d.ts +0 -34
  449. package/schematics/migrations/module-with-providers/collector.js +0 -73
  450. package/schematics/migrations/module-with-providers/index.d.ts +0 -13
  451. package/schematics/migrations/module-with-providers/index.js +0 -93
  452. package/schematics/migrations/module-with-providers/transform.d.ts +0 -49
  453. package/schematics/migrations/module-with-providers/transform.js +0 -148
  454. package/schematics/migrations/module-with-providers/util.d.ts +0 -13
  455. package/schematics/migrations/module-with-providers/util.js +0 -40
  456. package/schematics/migrations/move-document/document_import_visitor.d.ts +0 -27
  457. package/schematics/migrations/move-document/document_import_visitor.js +0 -74
  458. package/schematics/migrations/move-document/index.js +0 -93
  459. package/schematics/migrations/move-document/move-import.d.ts +0 -12
  460. package/schematics/migrations/move-document/move-import.js +0 -61
  461. package/schematics/migrations/native-view-encapsulation/index.d.ts +0 -11
  462. package/schematics/migrations/native-view-encapsulation/index.js +0 -63
  463. package/schematics/migrations/native-view-encapsulation/util.d.ts +0 -11
  464. package/schematics/migrations/native-view-encapsulation/util.js +0 -48
  465. package/schematics/migrations/navigation-extras-omissions/index.d.ts +0 -11
  466. package/schematics/migrations/navigation-extras-omissions/index.js +0 -69
  467. package/schematics/migrations/navigation-extras-omissions/util.d.ts +0 -11
  468. package/schematics/migrations/navigation-extras-omissions/util.js +0 -126
  469. package/schematics/migrations/relative-link-resolution/collector.d.ts +0 -22
  470. package/schematics/migrations/relative-link-resolution/collector.js +0 -95
  471. package/schematics/migrations/relative-link-resolution/index.d.ts +0 -11
  472. package/schematics/migrations/relative-link-resolution/index.js +0 -84
  473. package/schematics/migrations/relative-link-resolution/transform.d.ts +0 -22
  474. package/schematics/migrations/relative-link-resolution/transform.js +0 -65
  475. package/schematics/migrations/relative-link-resolution/update_recorder.d.ts +0 -18
  476. package/schematics/migrations/relative-link-resolution/update_recorder.js +0 -20
  477. package/schematics/migrations/relative-link-resolution/util.d.ts +0 -12
  478. package/schematics/migrations/relative-link-resolution/util.js +0 -43
  479. package/schematics/migrations/renderer-to-renderer2/helpers.d.ts +0 -25
  480. package/schematics/migrations/renderer-to-renderer2/helpers.js +0 -238
  481. package/schematics/migrations/renderer-to-renderer2/index.d.ts +0 -14
  482. package/schematics/migrations/renderer-to-renderer2/index.js +0 -135
  483. package/schematics/migrations/renderer-to-renderer2/migration.d.ts +0 -18
  484. package/schematics/migrations/renderer-to-renderer2/migration.js +0 -225
  485. package/schematics/migrations/renderer-to-renderer2/util.d.ts +0 -18
  486. package/schematics/migrations/renderer-to-renderer2/util.js +0 -83
  487. package/schematics/migrations/router-preserve-query-params/index.d.ts +0 -14
  488. package/schematics/migrations/router-preserve-query-params/index.js +0 -72
  489. package/schematics/migrations/router-preserve-query-params/util.d.ts +0 -11
  490. package/schematics/migrations/router-preserve-query-params/util.js +0 -103
  491. package/schematics/migrations/static-queries/angular/directive_inputs.d.ts +0 -11
  492. package/schematics/migrations/static-queries/angular/directive_inputs.js +0 -84
  493. package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +0 -45
  494. package/schematics/migrations/static-queries/angular/ng_query_visitor.js +0 -127
  495. package/schematics/migrations/static-queries/angular/query-definition.d.ts +0 -37
  496. package/schematics/migrations/static-queries/angular/query-definition.js +0 -33
  497. package/schematics/migrations/static-queries/angular/super_class.d.ts +0 -15
  498. package/schematics/migrations/static-queries/angular/super_class.js +0 -35
  499. package/schematics/migrations/static-queries/index.d.ts +0 -11
  500. package/schematics/migrations/static-queries/index.js +0 -230
  501. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +0 -41
  502. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +0 -214
  503. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.d.ts +0 -24
  504. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.js +0 -38
  505. package/schematics/migrations/static-queries/strategies/timing-strategy.d.ts +0 -19
  506. package/schematics/migrations/static-queries/strategies/timing-strategy.js +0 -20
  507. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +0 -82
  508. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +0 -369
  509. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.d.ts +0 -18
  510. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.js +0 -52
  511. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.d.ts +0 -27
  512. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +0 -93
  513. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +0 -34
  514. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +0 -169
  515. package/schematics/migrations/static-queries/transform.d.ts +0 -21
  516. package/schematics/migrations/static-queries/transform.js +0 -102
  517. package/schematics/migrations/template-var-assignment/analyze_template.d.ts +0 -20
  518. package/schematics/migrations/template-var-assignment/analyze_template.js +0 -38
  519. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.d.ts +0 -28
  520. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +0 -80
  521. package/schematics/migrations/template-var-assignment/index.d.ts +0 -11
  522. package/schematics/migrations/template-var-assignment/index.js +0 -101
  523. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.d.ts +0 -14
  524. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.js +0 -114
  525. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.d.ts +0 -63
  526. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.js +0 -300
  527. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts +0 -19
  528. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.js +0 -20
  529. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.d.ts +0 -18
  530. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.js +0 -57
  531. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.d.ts +0 -18
  532. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.js +0 -96
  533. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.d.ts +0 -39
  534. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.js +0 -116
  535. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.d.ts +0 -37
  536. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.js +0 -126
  537. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.d.ts +0 -10
  538. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.js +0 -31
  539. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.d.ts +0 -16
  540. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.js +0 -65
  541. package/schematics/migrations/undecorated-classes-with-di/index.d.ts +0 -11
  542. package/schematics/migrations/undecorated-classes-with-di/index.js +0 -195
  543. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.d.ts +0 -38
  544. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.js +0 -142
  545. package/schematics/migrations/undecorated-classes-with-di/transform.d.ts +0 -98
  546. package/schematics/migrations/undecorated-classes-with-di/transform.js +0 -371
  547. package/schematics/migrations/undecorated-classes-with-di/update_recorder.d.ts +0 -20
  548. package/schematics/migrations/undecorated-classes-with-di/update_recorder.js +0 -20
  549. package/schematics/migrations/wait-for-async/index.d.ts +0 -11
  550. package/schematics/migrations/wait-for-async/index.js +0 -98
  551. package/schematics/migrations/wait-for-async/util.d.ts +0 -11
  552. package/schematics/migrations/wait-for-async/util.js +0 -37
  553. package/schematics/migrations/xhr-factory/index.d.ts +0 -10
  554. package/schematics/migrations/xhr-factory/index.js +0 -104
  555. package/src/r3_symbols.d.ts +0 -1025
  556. package/testing/testing.metadata.json +0 -1
  557. package/testing.d.ts +0 -7
  558. package/testing.metadata.json +0 -1
@@ -1,238 +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
- (function (factory) {
9
- if (typeof module === "object" && typeof module.exports === "object") {
10
- var v = factory(require, exports);
11
- if (v !== undefined) module.exports = v;
12
- }
13
- else if (typeof define === "function" && define.amd) {
14
- define("@angular/core/schematics/migrations/renderer-to-renderer2/helpers", ["require", "exports", "typescript"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.getHelper = void 0;
20
- const ts = require("typescript");
21
- /** Gets the string representation of a helper function. */
22
- function getHelper(name, sourceFile, printer) {
23
- const helperDeclaration = getHelperDeclaration(name);
24
- return '\n' + printer.printNode(ts.EmitHint.Unspecified, helperDeclaration, sourceFile) + '\n';
25
- }
26
- exports.getHelper = getHelper;
27
- /** Creates a function declaration for the specified helper name. */
28
- function getHelperDeclaration(name) {
29
- switch (name) {
30
- case "AnyDuringRendererMigration" /* any */:
31
- return createAnyTypeHelper();
32
- case "__ngRendererCreateElementHelper" /* createElement */:
33
- return getCreateElementHelper();
34
- case "__ngRendererCreateTextHelper" /* createText */:
35
- return getCreateTextHelper();
36
- case "__ngRendererCreateTemplateAnchorHelper" /* createTemplateAnchor */:
37
- return getCreateTemplateAnchorHelper();
38
- case "__ngRendererProjectNodesHelper" /* projectNodes */:
39
- return getProjectNodesHelper();
40
- case "__ngRendererAnimateHelper" /* animate */:
41
- return getAnimateHelper();
42
- case "__ngRendererDestroyViewHelper" /* destroyView */:
43
- return getDestroyViewHelper();
44
- case "__ngRendererDetachViewHelper" /* detachView */:
45
- return getDetachViewHelper();
46
- case "__ngRendererAttachViewAfterHelper" /* attachViewAfter */:
47
- return getAttachViewAfterHelper();
48
- case "__ngRendererSetElementAttributeHelper" /* setElementAttribute */:
49
- return getSetElementAttributeHelper();
50
- case "__ngRendererSplitNamespaceHelper" /* splitNamespace */:
51
- return getSplitNamespaceHelper();
52
- }
53
- }
54
- /** Creates a helper for a custom `any` type during the migration. */
55
- function createAnyTypeHelper() {
56
- // type AnyDuringRendererMigration = any;
57
- return ts.createTypeAliasDeclaration([], [], "AnyDuringRendererMigration" /* any */, [], ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword));
58
- }
59
- /** Creates a function parameter that is typed as `any`. */
60
- function getAnyTypedParameter(parameterName, isRequired = true) {
61
- // Declare the parameter as `any` so we don't have to add extra logic to ensure that the
62
- // generated code will pass type checking. Use our custom `any` type so people have an incentive
63
- // to clean it up afterwards and to avoid potentially introducing lint warnings in G3.
64
- const type = ts.createTypeReferenceNode("AnyDuringRendererMigration" /* any */, []);
65
- return ts.createParameter([], [], undefined, parameterName, isRequired ? undefined : ts.createToken(ts.SyntaxKind.QuestionToken), type);
66
- }
67
- /** Creates a helper for `createElement`. */
68
- function getCreateElementHelper() {
69
- const renderer = ts.createIdentifier('renderer');
70
- const parent = ts.createIdentifier('parent');
71
- const namespaceAndName = ts.createIdentifier('namespaceAndName');
72
- const name = ts.createIdentifier('name');
73
- const namespace = ts.createIdentifier('namespace');
74
- // [namespace, name] = splitNamespace(namespaceAndName);
75
- const namespaceAndNameVariable = ts.createVariableDeclaration(ts.createArrayBindingPattern([namespace, name].map(id => ts.createBindingElement(undefined, undefined, id))), undefined, ts.createCall(ts.createIdentifier("__ngRendererSplitNamespaceHelper" /* splitNamespace */), [], [namespaceAndName]));
76
- // `renderer.createElement(name, namespace)`.
77
- const creationCall = ts.createCall(ts.createPropertyAccess(renderer, 'createElement'), [], [name, namespace]);
78
- return getCreationHelper("__ngRendererCreateElementHelper" /* createElement */, creationCall, renderer, parent, [namespaceAndName], [ts.createVariableStatement(undefined, ts.createVariableDeclarationList([namespaceAndNameVariable], ts.NodeFlags.Const))]);
79
- }
80
- /** Creates a helper for `createText`. */
81
- function getCreateTextHelper() {
82
- const renderer = ts.createIdentifier('renderer');
83
- const parent = ts.createIdentifier('parent');
84
- const value = ts.createIdentifier('value');
85
- // `renderer.createText(value)`.
86
- const creationCall = ts.createCall(ts.createPropertyAccess(renderer, 'createText'), [], [value]);
87
- return getCreationHelper("__ngRendererCreateTextHelper" /* createText */, creationCall, renderer, parent, [value]);
88
- }
89
- /** Creates a helper for `createTemplateAnchor`. */
90
- function getCreateTemplateAnchorHelper() {
91
- const renderer = ts.createIdentifier('renderer');
92
- const parent = ts.createIdentifier('parent');
93
- // `renderer.createComment('')`.
94
- const creationCall = ts.createCall(ts.createPropertyAccess(renderer, 'createComment'), [], [ts.createStringLiteral('')]);
95
- return getCreationHelper("__ngRendererCreateTemplateAnchorHelper" /* createTemplateAnchor */, creationCall, renderer, parent);
96
- }
97
- /**
98
- * Gets the function declaration for a creation helper. This is reused between `createElement`,
99
- * `createText` and `createTemplateAnchor` which follow a very similar pattern.
100
- * @param functionName Function that the helper should have.
101
- * @param creationCall Expression that is used to create a node inside the function.
102
- * @param rendererParameter Parameter for the `renderer`.
103
- * @param parentParameter Parameter for the `parent` inside the function.
104
- * @param extraParameters Extra parameters to be added to the end.
105
- * @param precedingVariables Extra variables to be added before the one that creates the `node`.
106
- */
107
- function getCreationHelper(functionName, creationCall, renderer, parent, extraParameters = [], precedingVariables = []) {
108
- const node = ts.createIdentifier('node');
109
- // `const node = {{creationCall}}`.
110
- const nodeVariableStatement = ts.createVariableStatement(undefined, ts.createVariableDeclarationList([ts.createVariableDeclaration(node, undefined, creationCall)], ts.NodeFlags.Const));
111
- // `if (parent) { renderer.appendChild(parent, node) }`.
112
- const guardedAppendChildCall = ts.createIf(parent, ts.createBlock([ts.createExpressionStatement(ts.createCall(ts.createPropertyAccess(renderer, 'appendChild'), [], [parent, node]))], true));
113
- return ts.createFunctionDeclaration([], [], undefined, functionName, [], [renderer, parent, ...extraParameters].map(name => getAnyTypedParameter(name)), undefined, ts.createBlock([
114
- ...precedingVariables, nodeVariableStatement, guardedAppendChildCall,
115
- ts.createReturn(node)
116
- ], true));
117
- }
118
- /** Creates a helper for `projectNodes`. */
119
- function getProjectNodesHelper() {
120
- const renderer = ts.createIdentifier('renderer');
121
- const parent = ts.createIdentifier('parent');
122
- const nodes = ts.createIdentifier('nodes');
123
- const incrementor = ts.createIdentifier('i');
124
- // for (let i = 0; i < nodes.length; i++) {
125
- // renderer.appendChild(parent, nodes[i]);
126
- // }
127
- const loopInitializer = ts.createVariableDeclarationList([ts.createVariableDeclaration(incrementor, undefined, ts.createNumericLiteral('0'))], ts.NodeFlags.Let);
128
- const loopCondition = ts.createBinary(incrementor, ts.SyntaxKind.LessThanToken, ts.createPropertyAccess(nodes, ts.createIdentifier('length')));
129
- const appendStatement = ts.createExpressionStatement(ts.createCall(ts.createPropertyAccess(renderer, 'appendChild'), [], [parent, ts.createElementAccess(nodes, incrementor)]));
130
- const loop = ts.createFor(loopInitializer, loopCondition, ts.createPostfix(incrementor, ts.SyntaxKind.PlusPlusToken), ts.createBlock([appendStatement]));
131
- return ts.createFunctionDeclaration([], [], undefined, "__ngRendererProjectNodesHelper" /* projectNodes */, [], [renderer, parent, nodes].map(name => getAnyTypedParameter(name)), undefined, ts.createBlock([loop], true));
132
- }
133
- /** Creates a helper for `animate`. */
134
- function getAnimateHelper() {
135
- // throw new Error('...');
136
- const throwStatement = ts.createThrow(ts.createNew(ts.createIdentifier('Error'), [], [ts.createStringLiteral('Renderer.animate is no longer supported!')]));
137
- return ts.createFunctionDeclaration([], [], undefined, "__ngRendererAnimateHelper" /* animate */, [], [], undefined, ts.createBlock([throwStatement], true));
138
- }
139
- /** Creates a helper for `destroyView`. */
140
- function getDestroyViewHelper() {
141
- const renderer = ts.createIdentifier('renderer');
142
- const allNodes = ts.createIdentifier('allNodes');
143
- const incrementor = ts.createIdentifier('i');
144
- // for (let i = 0; i < allNodes.length; i++) {
145
- // renderer.destroyNode(allNodes[i]);
146
- // }
147
- const loopInitializer = ts.createVariableDeclarationList([ts.createVariableDeclaration(incrementor, undefined, ts.createNumericLiteral('0'))], ts.NodeFlags.Let);
148
- const loopCondition = ts.createBinary(incrementor, ts.SyntaxKind.LessThanToken, ts.createPropertyAccess(allNodes, ts.createIdentifier('length')));
149
- const destroyStatement = ts.createExpressionStatement(ts.createCall(ts.createPropertyAccess(renderer, 'destroyNode'), [], [ts.createElementAccess(allNodes, incrementor)]));
150
- const loop = ts.createFor(loopInitializer, loopCondition, ts.createPostfix(incrementor, ts.SyntaxKind.PlusPlusToken), ts.createBlock([destroyStatement]));
151
- return ts.createFunctionDeclaration([], [], undefined, "__ngRendererDestroyViewHelper" /* destroyView */, [], [renderer, allNodes].map(name => getAnyTypedParameter(name)), undefined, ts.createBlock([loop], true));
152
- }
153
- /** Creates a helper for `detachView`. */
154
- function getDetachViewHelper() {
155
- const renderer = ts.createIdentifier('renderer');
156
- const rootNodes = ts.createIdentifier('rootNodes');
157
- const incrementor = ts.createIdentifier('i');
158
- const node = ts.createIdentifier('node');
159
- // for (let i = 0; i < rootNodes.length; i++) {
160
- // const node = rootNodes[i];
161
- // renderer.removeChild(renderer.parentNode(node), node);
162
- // }
163
- const loopInitializer = ts.createVariableDeclarationList([ts.createVariableDeclaration(incrementor, undefined, ts.createNumericLiteral('0'))], ts.NodeFlags.Let);
164
- const loopCondition = ts.createBinary(incrementor, ts.SyntaxKind.LessThanToken, ts.createPropertyAccess(rootNodes, ts.createIdentifier('length')));
165
- // const node = rootNodes[i];
166
- const nodeVariableStatement = ts.createVariableStatement(undefined, ts.createVariableDeclarationList([ts.createVariableDeclaration(node, undefined, ts.createElementAccess(rootNodes, incrementor))], ts.NodeFlags.Const));
167
- // renderer.removeChild(renderer.parentNode(node), node);
168
- const removeCall = ts.createCall(ts.createPropertyAccess(renderer, 'removeChild'), [], [ts.createCall(ts.createPropertyAccess(renderer, 'parentNode'), [], [node]), node]);
169
- const loop = ts.createFor(loopInitializer, loopCondition, ts.createPostfix(incrementor, ts.SyntaxKind.PlusPlusToken), ts.createBlock([nodeVariableStatement, ts.createExpressionStatement(removeCall)]));
170
- return ts.createFunctionDeclaration([], [], undefined, "__ngRendererDetachViewHelper" /* detachView */, [], [renderer, rootNodes].map(name => getAnyTypedParameter(name)), undefined, ts.createBlock([loop], true));
171
- }
172
- /** Creates a helper for `attachViewAfter` */
173
- function getAttachViewAfterHelper() {
174
- const renderer = ts.createIdentifier('renderer');
175
- const node = ts.createIdentifier('node');
176
- const rootNodes = ts.createIdentifier('rootNodes');
177
- const parent = ts.createIdentifier('parent');
178
- const nextSibling = ts.createIdentifier('nextSibling');
179
- const incrementor = ts.createIdentifier('i');
180
- const createConstWithMethodCallInitializer = (constName, methodToCall) => {
181
- return ts.createVariableStatement(undefined, ts.createVariableDeclarationList([ts.createVariableDeclaration(constName, undefined, ts.createCall(ts.createPropertyAccess(renderer, methodToCall), [], [node]))], ts.NodeFlags.Const));
182
- };
183
- // const parent = renderer.parentNode(node);
184
- const parentVariableStatement = createConstWithMethodCallInitializer(parent, 'parentNode');
185
- // const nextSibling = renderer.nextSibling(node);
186
- const nextSiblingVariableStatement = createConstWithMethodCallInitializer(nextSibling, 'nextSibling');
187
- // for (let i = 0; i < rootNodes.length; i++) {
188
- // renderer.insertBefore(parentElement, rootNodes[i], nextSibling);
189
- // }
190
- const loopInitializer = ts.createVariableDeclarationList([ts.createVariableDeclaration(incrementor, undefined, ts.createNumericLiteral('0'))], ts.NodeFlags.Let);
191
- const loopCondition = ts.createBinary(incrementor, ts.SyntaxKind.LessThanToken, ts.createPropertyAccess(rootNodes, ts.createIdentifier('length')));
192
- const insertBeforeCall = ts.createCall(ts.createPropertyAccess(renderer, 'insertBefore'), [], [parent, ts.createElementAccess(rootNodes, incrementor), nextSibling]);
193
- const loop = ts.createFor(loopInitializer, loopCondition, ts.createPostfix(incrementor, ts.SyntaxKind.PlusPlusToken), ts.createBlock([ts.createExpressionStatement(insertBeforeCall)]));
194
- return ts.createFunctionDeclaration([], [], undefined, "__ngRendererAttachViewAfterHelper" /* attachViewAfter */, [], [renderer, node, rootNodes].map(name => getAnyTypedParameter(name)), undefined, ts.createBlock([parentVariableStatement, nextSiblingVariableStatement, loop], true));
195
- }
196
- /** Creates a helper for `setElementAttribute` */
197
- function getSetElementAttributeHelper() {
198
- const renderer = ts.createIdentifier('renderer');
199
- const element = ts.createIdentifier('element');
200
- const namespaceAndName = ts.createIdentifier('namespaceAndName');
201
- const value = ts.createIdentifier('value');
202
- const name = ts.createIdentifier('name');
203
- const namespace = ts.createIdentifier('namespace');
204
- // [namespace, name] = splitNamespace(namespaceAndName);
205
- const namespaceAndNameVariable = ts.createVariableDeclaration(ts.createArrayBindingPattern([namespace, name].map(id => ts.createBindingElement(undefined, undefined, id))), undefined, ts.createCall(ts.createIdentifier("__ngRendererSplitNamespaceHelper" /* splitNamespace */), [], [namespaceAndName]));
206
- // renderer.setAttribute(element, name, value, namespace);
207
- const setCall = ts.createCall(ts.createPropertyAccess(renderer, 'setAttribute'), [], [element, name, value, namespace]);
208
- // renderer.removeAttribute(element, name, namespace);
209
- const removeCall = ts.createCall(ts.createPropertyAccess(renderer, 'removeAttribute'), [], [element, name, namespace]);
210
- // if (value != null) { setCall() } else { removeCall }
211
- const ifStatement = ts.createIf(ts.createBinary(value, ts.SyntaxKind.ExclamationEqualsToken, ts.createNull()), ts.createBlock([ts.createExpressionStatement(setCall)], true), ts.createBlock([ts.createExpressionStatement(removeCall)], true));
212
- const functionBody = ts.createBlock([
213
- ts.createVariableStatement(undefined, ts.createVariableDeclarationList([namespaceAndNameVariable], ts.NodeFlags.Const)),
214
- ifStatement
215
- ], true);
216
- return ts.createFunctionDeclaration([], [], undefined, "__ngRendererSetElementAttributeHelper" /* setElementAttribute */, [], [
217
- getAnyTypedParameter(renderer), getAnyTypedParameter(element),
218
- getAnyTypedParameter(namespaceAndName), getAnyTypedParameter(value, false)
219
- ], undefined, functionBody);
220
- }
221
- /** Creates a helper for splitting a name that might contain a namespace. */
222
- function getSplitNamespaceHelper() {
223
- const name = ts.createIdentifier('name');
224
- const match = ts.createIdentifier('match');
225
- const regex = ts.createRegularExpressionLiteral('/^:([^:]+):(.+)$/');
226
- const matchCall = ts.createCall(ts.createPropertyAccess(name, 'match'), [], [regex]);
227
- // const match = name.split(regex);
228
- const matchVariable = ts.createVariableDeclarationList([ts.createVariableDeclaration(match, undefined, matchCall)], ts.NodeFlags.Const);
229
- // return [match[1], match[2]];
230
- const matchReturn = ts.createReturn(ts.createArrayLiteral([ts.createElementAccess(match, 1), ts.createElementAccess(match, 2)]));
231
- // if (name[0] === ':') { const match = ...; return ...; }
232
- const ifStatement = ts.createIf(ts.createBinary(ts.createElementAccess(name, 0), ts.SyntaxKind.EqualsEqualsEqualsToken, ts.createStringLiteral(':')), ts.createBlock([ts.createVariableStatement([], matchVariable), matchReturn], true));
233
- // return ['', name];
234
- const elseReturn = ts.createReturn(ts.createArrayLiteral([ts.createStringLiteral(''), name]));
235
- return ts.createFunctionDeclaration([], [], undefined, "__ngRendererSplitNamespaceHelper" /* splitNamespace */, [], [getAnyTypedParameter(name)], undefined, ts.createBlock([ifStatement, elseReturn], true));
236
- }
237
- });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JlbmRlcmVyLXRvLXJlbmRlcmVyMi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILGlDQUFpQztJQWlCakMsMkRBQTJEO0lBQzNELFNBQWdCLFNBQVMsQ0FDckIsSUFBb0IsRUFBRSxVQUF5QixFQUFFLE9BQW1CO1FBQ3RFLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDakcsQ0FBQztJQUpELDhCQUlDO0lBRUQsb0VBQW9FO0lBQ3BFLFNBQVMsb0JBQW9CLENBQUMsSUFBb0I7UUFDaEQsUUFBUSxJQUFJLEVBQUU7WUFDWjtnQkFDRSxPQUFPLG1CQUFtQixFQUFFLENBQUM7WUFDL0I7Z0JBQ0UsT0FBTyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2xDO2dCQUNFLE9BQU8sbUJBQW1CLEVBQUUsQ0FBQztZQUMvQjtnQkFDRSxPQUFPLDZCQUE2QixFQUFFLENBQUM7WUFDekM7Z0JBQ0UsT0FBTyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pDO2dCQUNFLE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QjtnQkFDRSxPQUFPLG9CQUFvQixFQUFFLENBQUM7WUFDaEM7Z0JBQ0UsT0FBTyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9CO2dCQUNFLE9BQU8sd0JBQXdCLEVBQUUsQ0FBQztZQUNwQztnQkFDRSxPQUFPLDRCQUE0QixFQUFFLENBQUM7WUFDeEM7Z0JBQ0UsT0FBTyx1QkFBdUIsRUFBRSxDQUFDO1NB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T0FBTyxFQUFFLENBQUMseUJBQXlCLENBQy9CLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUywyREFBaUMsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQzdGLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKiogTmFtZXMgb2YgdGhlIGhlbHBlciBmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIGZvciB0aGlzIG1pZ3JhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEhlbHBlckZ1bmN0aW9uIHtcbiAgYW55ID0gJ0FueUR1cmluZ1JlbmRlcmVyTWlncmF0aW9uJyxcbiAgY3JlYXRlRWxlbWVudCA9ICdfX25nUmVuZGVyZXJDcmVhdGVFbGVtZW50SGVscGVyJyxcbiAgY3JlYXRlVGV4dCA9ICdfX25nUmVuZGVyZXJDcmVhdGVUZXh0SGVscGVyJyxcbiAgY3JlYXRlVGVtcGxhdGVBbmNob3IgPSAnX19uZ1JlbmRlcmVyQ3JlYXRlVGVtcGxhdGVBbmNob3JIZWxwZXInLFxuICBwcm9qZWN0Tm9kZXMgPSAnX19uZ1JlbmRlcmVyUHJvamVjdE5vZGVzSGVscGVyJyxcbiAgYW5pbWF0ZSA9ICdfX25nUmVuZGVyZXJBbmltYXRlSGVscGVyJyxcbiAgZGVzdHJveVZpZXcgPSAnX19uZ1JlbmRlcmVyRGVzdHJveVZpZXdIZWxwZXInLFxuICBkZXRhY2hWaWV3ID0gJ19fbmdSZW5kZXJlckRldGFjaFZpZXdIZWxwZXInLFxuICBhdHRhY2hWaWV3QWZ0ZXIgPSAnX19uZ1JlbmRlcmVyQXR0YWNoVmlld0FmdGVySGVscGVyJyxcbiAgc3BsaXROYW1lc3BhY2UgPSAnX19uZ1JlbmRlcmVyU3BsaXROYW1lc3BhY2VIZWxwZXInLFxuICBzZXRFbGVtZW50QXR0cmlidXRlID0gJ19fbmdSZW5kZXJlclNldEVsZW1lbnRBdHRyaWJ1dGVIZWxwZXInXG59XG5cbi8qKiBHZXRzIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBoZWxwZXIgZnVuY3Rpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVscGVyKFxuICAgIG5hbWU6IEhlbHBlckZ1bmN0aW9uLCBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBwcmludGVyOiB0cy5QcmludGVyKTogc3RyaW5nIHtcbiAgY29uc3QgaGVscGVyRGVjbGFyYXRpb24gPSBnZXRIZWxwZXJEZWNsYXJhdGlvbihuYW1lKTtcbiAgcmV0dXJuICdcXG4nICsgcHJpbnRlci5wcmludE5vZGUodHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIGhlbHBlckRlY2xhcmF0aW9uLCBzb3VyY2VGaWxlKSArICdcXG4nO1xufVxuXG4vKiogQ3JlYXRlcyBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGhlbHBlciBuYW1lLiAqL1xuZnVuY3Rpb24gZ2V0SGVscGVyRGVjbGFyYXRpb24obmFtZTogSGVscGVyRnVuY3Rpb24pOiB0cy5Ob2RlIHtcbiAgc3dpdGNoIChuYW1lKSB7XG4gICAgY2FzZSBIZWxwZXJGdW5jdGlvbi5hbnk6XG4gICAgICByZXR1cm4gY3JlYXRlQW55VHlwZUhlbHBlcigpO1xuICAgIGNhc2UgSGVscGVyRnVuY3Rpb24uY3JlYXRlRWxlbWVudDpcbiAgICAgIHJldHVybiBnZXRDcmVhdGVFbGVtZW50SGVscGVyKCk7XG4gICAgY2FzZSBIZWxwZXJGdW5jdGlvbi5jcmVhdGVUZXh0OlxuICAgICAgcmV0dXJuIGdldENyZWF0ZVRleHRIZWxwZXIoKTtcbiAgICBjYXNlIEhlbHBlckZ1bmN0aW9uLmNyZWF0ZVRlbXBsYXRlQW5jaG9yOlxuICAgICAgcmV0dXJuIGdldENyZWF0ZVRlbXBsYXRlQW5jaG9ySGVscGVyKCk7XG4gICAgY2FzZSBIZWxwZXJGdW5jdGlvbi5wcm9qZWN0Tm9kZXM6XG4gICAgICByZXR1cm4gZ2V0UHJvamVjdE5vZGVzSGVscGVyKCk7XG4gICAgY2FzZSBIZWxwZXJGdW5jdGlvbi5hbmltYXRlOlxuICAgICAgcmV0dXJuIGdldEFuaW1hdGVIZWxwZXIoKTtcbiAgICBjYXNlIEhlbHBlckZ1bmN0aW9uLmRlc3Ryb3lWaWV3OlxuICAgICAgcmV0dXJuIGdldERlc3Ryb3lWaWV3SGVscGVyKCk7XG4gICAgY2FzZSBIZWxwZXJGdW5jdGlvbi5kZXRhY2hWaWV3OlxuICAgICAgcmV0dXJuIGdldERldGFjaFZpZXdIZWxwZXIoKTtcbiAgICBjYXNlIEhlbHBlckZ1bmN0aW9uLmF0dGFjaFZpZXdBZnRlcjpcbiAgICAgIHJldHVybiBnZXRBdHRhY2hWaWV3QWZ0ZXJIZWxwZXIoKTtcbiAgICBjYXNlIEhlbHBlckZ1bmN0aW9uLnNldEVsZW1lbnRBdHRyaWJ1dGU6XG4gICAgICByZXR1cm4gZ2V0U2V0RWxlbWVudEF0dHJpYnV0ZUhlbHBlcigpO1xuICAgIGNhc2UgSGVscGVyRnVuY3Rpb24uc3BsaXROYW1lc3BhY2U6XG4gICAgICByZXR1cm4gZ2V0U3BsaXROYW1lc3BhY2VIZWxwZXIoKTtcbiAgfVxufVxuXG4vKiogQ3JlYXRlcyBhIGhlbHBlciBmb3IgYSBjdXN0b20gYGFueWAgdHlwZSBkdXJpbmcgdGhlIG1pZ3JhdGlvbi4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVIZWxwZXIoKTogdHMuVHlwZUFsaWFzRGVjbGFyYXRpb24ge1xuICAvLyB0eXBlIEFueUR1cmluZ1JlbmRlcmVyTWlncmF0aW9uID0gYW55O1xuICByZXR1cm4gdHMuY3JlYXRlVHlwZUFsaWFzRGVjbGFyYXRpb24oXG4gICAgICBbXSwgW10sIEhlbHBlckZ1bmN0aW9uLmFueSwgW10sIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLkFueUtleXdvcmQpKTtcbn1cblxuLyoqIENyZWF0ZXMgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgdGhhdCBpcyB0eXBlZCBhcyBgYW55YC4gKi9cbmZ1bmN0aW9uIGdldEFueVR5cGVkUGFyYW1ldGVyKFxuICAgIHBhcmFtZXRlck5hbWU6IHN0cmluZ3x0cy5JZGVudGlmaWVyLCBpc1JlcXVpcmVkID0gdHJ1ZSk6IHRzLlBhcmFtZXRlckRlY2xhcmF0aW9uIHtcbiAgLy8gRGVjbGFyZSB0aGUgcGFyYW1ldGVyIGFzIGBhbnlgIHNvIHdlIGRvbid0IGhhdmUgdG8gYWRkIGV4dHJhIGxvZ2ljIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAvLyBnZW5lcmF0ZWQgY29kZSB3aWxsIHBhc3MgdHlwZSBjaGVja2luZy4gVXNlIG91ciBjdXN0b20gYGFueWAgdHlwZSBzbyBwZW9wbGUgaGF2ZSBhbiBpbmNlbnRpdmVcbiAgLy8gdG8gY2xlYW4gaXQgdXAgYWZ0ZXJ3YXJkcyBhbmQgdG8gYXZvaWQgcG90ZW50aWFsbHkgaW50cm9kdWNpbmcgbGludCB3YXJuaW5ncyBpbiBHMy5cbiAgY29uc3QgdHlwZSA9IHRzLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKEhlbHBlckZ1bmN0aW9uLmFueSwgW10pO1xuICByZXR1cm4gdHMuY3JlYXRlUGFyYW1ldGVyKFxuICAgICAgW10sIFtdLCB1bmRlZmluZWQsIHBhcmFtZXRlck5hbWUsXG4gICAgICBpc1JlcXVpcmVkID8gdW5kZWZpbmVkIDogdHMuY3JlYXRlVG9rZW4odHMuU3ludGF4S2luZC5RdWVzdGlvblRva2VuKSwgdHlwZSk7XG59XG5cbi8qKiBDcmVhdGVzIGEgaGVscGVyIGZvciBgY3JlYXRlRWxlbWVudGAuICovXG5mdW5jdGlvbiBnZXRDcmVhdGVFbGVtZW50SGVscGVyKCk6IHRzLkZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICBjb25zdCByZW5kZXJlciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3JlbmRlcmVyJyk7XG4gIGNvbnN0IHBhcmVudCA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3BhcmVudCcpO1xuICBjb25zdCBuYW1lc3BhY2VBbmROYW1lID0gdHMuY3JlYXRlSWRlbnRpZmllcignbmFtZXNwYWNlQW5kTmFtZScpO1xuICBjb25zdCBuYW1lID0gdHMuY3JlYXRlSWRlbnRpZmllcignbmFtZScpO1xuICBjb25zdCBuYW1lc3BhY2UgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCduYW1lc3BhY2UnKTtcblxuICAvLyBbbmFtZXNwYWNlLCBuYW1lXSA9IHNwbGl0TmFtZXNwYWNlKG5hbWVzcGFjZUFuZE5hbWUpO1xuICBjb25zdCBuYW1lc3BhY2VBbmROYW1lVmFyaWFibGUgPSB0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKFxuICAgICAgdHMuY3JlYXRlQXJyYXlCaW5kaW5nUGF0dGVybihcbiAgICAgICAgICBbbmFtZXNwYWNlLCBuYW1lXS5tYXAoaWQgPT4gdHMuY3JlYXRlQmluZGluZ0VsZW1lbnQodW5kZWZpbmVkLCB1bmRlZmluZWQsIGlkKSkpLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdHMuY3JlYXRlQ2FsbCh0cy5jcmVhdGVJZGVudGlmaWVyKEhlbHBlckZ1bmN0aW9uLnNwbGl0TmFtZXNwYWNlKSwgW10sIFtuYW1lc3BhY2VBbmROYW1lXSkpO1xuXG4gIC8vIGByZW5kZXJlci5jcmVhdGVFbGVtZW50KG5hbWUsIG5hbWVzcGFjZSlgLlxuICBjb25zdCBjcmVhdGlvbkNhbGwgPVxuICAgICAgdHMuY3JlYXRlQ2FsbCh0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgJ2NyZWF0ZUVsZW1lbnQnKSwgW10sIFtuYW1lLCBuYW1lc3BhY2VdKTtcblxuICByZXR1cm4gZ2V0Q3JlYXRpb25IZWxwZXIoXG4gICAgICBIZWxwZXJGdW5jdGlvbi5jcmVhdGVFbGVtZW50LCBjcmVhdGlvbkNhbGwsIHJlbmRlcmVyLCBwYXJlbnQsIFtuYW1lc3BhY2VBbmROYW1lXSxcbiAgICAgIFt0cy5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudChcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW25hbWVzcGFjZUFuZE5hbWVWYXJpYWJsZV0sIHRzLk5vZGVGbGFncy5Db25zdCkpXSk7XG59XG5cbi8qKiBDcmVhdGVzIGEgaGVscGVyIGZvciBgY3JlYXRlVGV4dGAuICovXG5mdW5jdGlvbiBnZXRDcmVhdGVUZXh0SGVscGVyKCk6IHRzLkZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICBjb25zdCByZW5kZXJlciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3JlbmRlcmVyJyk7XG4gIGNvbnN0IHBhcmVudCA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3BhcmVudCcpO1xuICBjb25zdCB2YWx1ZSA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3ZhbHVlJyk7XG5cbiAgLy8gYHJlbmRlcmVyLmNyZWF0ZVRleHQodmFsdWUpYC5cbiAgY29uc3QgY3JlYXRpb25DYWxsID0gdHMuY3JlYXRlQ2FsbCh0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgJ2NyZWF0ZVRleHQnKSwgW10sIFt2YWx1ZV0pO1xuXG4gIHJldHVybiBnZXRDcmVhdGlvbkhlbHBlcihIZWxwZXJGdW5jdGlvbi5jcmVhdGVUZXh0LCBjcmVhdGlvbkNhbGwsIHJlbmRlcmVyLCBwYXJlbnQsIFt2YWx1ZV0pO1xufVxuXG4vKiogQ3JlYXRlcyBhIGhlbHBlciBmb3IgYGNyZWF0ZVRlbXBsYXRlQW5jaG9yYC4gKi9cbmZ1bmN0aW9uIGdldENyZWF0ZVRlbXBsYXRlQW5jaG9ySGVscGVyKCk6IHRzLkZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICBjb25zdCByZW5kZXJlciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3JlbmRlcmVyJyk7XG4gIGNvbnN0IHBhcmVudCA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3BhcmVudCcpO1xuXG4gIC8vIGByZW5kZXJlci5jcmVhdGVDb21tZW50KCcnKWAuXG4gIGNvbnN0IGNyZWF0aW9uQ2FsbCA9IHRzLmNyZWF0ZUNhbGwoXG4gICAgICB0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgJ2NyZWF0ZUNvbW1lbnQnKSwgW10sIFt0cy5jcmVhdGVTdHJpbmdMaXRlcmFsKCcnKV0pO1xuXG4gIHJldHVybiBnZXRDcmVhdGlvbkhlbHBlcihIZWxwZXJGdW5jdGlvbi5jcmVhdGVUZW1wbGF0ZUFuY2hvciwgY3JlYXRpb25DYWxsLCByZW5kZXJlciwgcGFyZW50KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmb3IgYSBjcmVhdGlvbiBoZWxwZXIuIFRoaXMgaXMgcmV1c2VkIGJldHdlZW4gYGNyZWF0ZUVsZW1lbnRgLFxuICogYGNyZWF0ZVRleHRgIGFuZCBgY3JlYXRlVGVtcGxhdGVBbmNob3JgIHdoaWNoIGZvbGxvdyBhIHZlcnkgc2ltaWxhciBwYXR0ZXJuLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSBGdW5jdGlvbiB0aGF0IHRoZSBoZWxwZXIgc2hvdWxkIGhhdmUuXG4gKiBAcGFyYW0gY3JlYXRpb25DYWxsIEV4cHJlc3Npb24gdGhhdCBpcyB1c2VkIHRvIGNyZWF0ZSBhIG5vZGUgaW5zaWRlIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSByZW5kZXJlclBhcmFtZXRlciBQYXJhbWV0ZXIgZm9yIHRoZSBgcmVuZGVyZXJgLlxuICogQHBhcmFtIHBhcmVudFBhcmFtZXRlciBQYXJhbWV0ZXIgZm9yIHRoZSBgcGFyZW50YCBpbnNpZGUgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGV4dHJhUGFyYW1ldGVycyBFeHRyYSBwYXJhbWV0ZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSBlbmQuXG4gKiBAcGFyYW0gcHJlY2VkaW5nVmFyaWFibGVzIEV4dHJhIHZhcmlhYmxlcyB0byBiZSBhZGRlZCBiZWZvcmUgdGhlIG9uZSB0aGF0IGNyZWF0ZXMgdGhlIGBub2RlYC5cbiAqL1xuZnVuY3Rpb24gZ2V0Q3JlYXRpb25IZWxwZXIoXG4gICAgZnVuY3Rpb25OYW1lOiBIZWxwZXJGdW5jdGlvbiwgY3JlYXRpb25DYWxsOiB0cy5DYWxsRXhwcmVzc2lvbiwgcmVuZGVyZXI6IHRzLklkZW50aWZpZXIsXG4gICAgcGFyZW50OiB0cy5JZGVudGlmaWVyLCBleHRyYVBhcmFtZXRlcnM6IHRzLklkZW50aWZpZXJbXSA9IFtdLFxuICAgIHByZWNlZGluZ1ZhcmlhYmxlczogdHMuVmFyaWFibGVTdGF0ZW1lbnRbXSA9IFtdKTogdHMuRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGNvbnN0IG5vZGUgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCdub2RlJyk7XG5cbiAgLy8gYGNvbnN0IG5vZGUgPSB7e2NyZWF0aW9uQ2FsbH19YC5cbiAgY29uc3Qgbm9kZVZhcmlhYmxlU3RhdGVtZW50ID0gdHMuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQoXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChcbiAgICAgICAgICBbdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihub2RlLCB1bmRlZmluZWQsIGNyZWF0aW9uQ2FsbCldLCB0cy5Ob2RlRmxhZ3MuQ29uc3QpKTtcblxuICAvLyBgaWYgKHBhcmVudCkgeyByZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIG5vZGUpIH1gLlxuICBjb25zdCBndWFyZGVkQXBwZW5kQ2hpbGRDYWxsID0gdHMuY3JlYXRlSWYoXG4gICAgICBwYXJlbnQsXG4gICAgICB0cy5jcmVhdGVCbG9jayhcbiAgICAgICAgICBbdHMuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChcbiAgICAgICAgICAgICAgdHMuY3JlYXRlQ2FsbCh0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgJ2FwcGVuZENoaWxkJyksIFtdLCBbcGFyZW50LCBub2RlXSkpXSxcbiAgICAgICAgICB0cnVlKSk7XG5cbiAgcmV0dXJuIHRzLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICBbXSwgW10sIHVuZGVmaW5lZCwgZnVuY3Rpb25OYW1lLCBbXSxcbiAgICAgIFtyZW5kZXJlciwgcGFyZW50LCAuLi5leHRyYVBhcmFtZXRlcnNdLm1hcChuYW1lID0+IGdldEFueVR5cGVkUGFyYW1ldGVyKG5hbWUpKSwgdW5kZWZpbmVkLFxuICAgICAgdHMuY3JlYXRlQmxvY2soXG4gICAgICAgICAgW1xuICAgICAgICAgICAgLi4ucHJlY2VkaW5nVmFyaWFibGVzLCBub2RlVmFyaWFibGVTdGF0ZW1lbnQsIGd1YXJkZWRBcHBlbmRDaGlsZENhbGwsXG4gICAgICAgICAgICB0cy5jcmVhdGVSZXR1cm4obm9kZSlcbiAgICAgICAgICBdLFxuICAgICAgICAgIHRydWUpKTtcbn1cblxuLyoqIENyZWF0ZXMgYSBoZWxwZXIgZm9yIGBwcm9qZWN0Tm9kZXNgLiAqL1xuZnVuY3Rpb24gZ2V0UHJvamVjdE5vZGVzSGVscGVyKCk6IHRzLkZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICBjb25zdCByZW5kZXJlciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3JlbmRlcmVyJyk7XG4gIGNvbnN0IHBhcmVudCA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3BhcmVudCcpO1xuICBjb25zdCBub2RlcyA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ25vZGVzJyk7XG4gIGNvbnN0IGluY3JlbWVudG9yID0gdHMuY3JlYXRlSWRlbnRpZmllcignaScpO1xuXG4gIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICByZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIG5vZGVzW2ldKTtcbiAgLy8gfVxuICBjb25zdCBsb29wSW5pdGlhbGl6ZXIgPSB0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChcbiAgICAgIFt0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGluY3JlbWVudG9yLCB1bmRlZmluZWQsIHRzLmNyZWF0ZU51bWVyaWNMaXRlcmFsKCcwJykpXSxcbiAgICAgIHRzLk5vZGVGbGFncy5MZXQpO1xuICBjb25zdCBsb29wQ29uZGl0aW9uID0gdHMuY3JlYXRlQmluYXJ5KFxuICAgICAgaW5jcmVtZW50b3IsIHRzLlN5bnRheEtpbmQuTGVzc1RoYW5Ub2tlbixcbiAgICAgIHRzLmNyZWF0ZVByb3BlcnR5QWNjZXNzKG5vZGVzLCB0cy5jcmVhdGVJZGVudGlmaWVyKCdsZW5ndGgnKSkpO1xuICBjb25zdCBhcHBlbmRTdGF0ZW1lbnQgPSB0cy5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHRzLmNyZWF0ZUNhbGwoXG4gICAgICB0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgJ2FwcGVuZENoaWxkJyksIFtdLFxuICAgICAgW3BhcmVudCwgdHMuY3JlYXRlRWxlbWVudEFjY2Vzcyhub2RlcywgaW5jcmVtZW50b3IpXSkpO1xuICBjb25zdCBsb29wID0gdHMuY3JlYXRlRm9yKFxuICAgICAgbG9vcEluaXRpYWxpemVyLCBsb29wQ29uZGl0aW9uLCB0cy5jcmVhdGVQb3N0Zml4KGluY3JlbWVudG9yLCB0cy5TeW50YXhLaW5kLlBsdXNQbHVzVG9rZW4pLFxuICAgICAgdHMuY3JlYXRlQmxvY2soW2FwcGVuZFN0YXRlbWVudF0pKTtcblxuICByZXR1cm4gdHMuY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbihcbiAgICAgIFtdLCBbXSwgdW5kZWZpbmVkLCBIZWxwZXJGdW5jdGlvbi5wcm9qZWN0Tm9kZXMsIFtdLFxuICAgICAgW3JlbmRlcmVyLCBwYXJlbnQsIG5vZGVzXS5tYXAobmFtZSA9PiBnZXRBbnlUeXBlZFBhcmFtZXRlcihuYW1lKSksIHVuZGVmaW5lZCxcbiAgICAgIHRzLmNyZWF0ZUJsb2NrKFtsb29wXSwgdHJ1ZSkpO1xufVxuXG4vKiogQ3JlYXRlcyBhIGhlbHBlciBmb3IgYGFuaW1hdGVgLiAqL1xuZnVuY3Rpb24gZ2V0QW5pbWF0ZUhlbHBlcigpOiB0cy5GdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgLy8gdGhyb3cgbmV3IEVycm9yKCcuLi4nKTtcbiAgY29uc3QgdGhyb3dTdGF0ZW1lbnQgPSB0cy5jcmVhdGVUaHJvdyh0cy5jcmVhdGVOZXcoXG4gICAgICB0cy5jcmVhdGVJZGVudGlmaWVyKCdFcnJvcicpLCBbXSxcbiAgICAgIFt0cy5jcmVhdGVTdHJpbmdMaXRlcmFsKCdSZW5kZXJlci5hbmltYXRlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQhJyldKSk7XG5cbiAgcmV0dXJuIHRzLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICBbXSwgW10sIHVuZGVmaW5lZCwgSGVscGVyRnVuY3Rpb24uYW5pbWF0ZSwgW10sIFtdLCB1bmRlZmluZWQsXG4gICAgICB0cy5jcmVhdGVCbG9jayhbdGhyb3dTdGF0ZW1lbnRdLCB0cnVlKSk7XG59XG5cbi8qKiBDcmVhdGVzIGEgaGVscGVyIGZvciBgZGVzdHJveVZpZXdgLiAqL1xuZnVuY3Rpb24gZ2V0RGVzdHJveVZpZXdIZWxwZXIoKTogdHMuRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGNvbnN0IHJlbmRlcmVyID0gdHMuY3JlYXRlSWRlbnRpZmllcigncmVuZGVyZXInKTtcbiAgY29uc3QgYWxsTm9kZXMgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCdhbGxOb2RlcycpO1xuICBjb25zdCBpbmNyZW1lbnRvciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ2knKTtcblxuICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgcmVuZGVyZXIuZGVzdHJveU5vZGUoYWxsTm9kZXNbaV0pO1xuICAvLyB9XG4gIGNvbnN0IGxvb3BJbml0aWFsaXplciA9IHRzLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFxuICAgICAgW3RzLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oaW5jcmVtZW50b3IsIHVuZGVmaW5lZCwgdHMuY3JlYXRlTnVtZXJpY0xpdGVyYWwoJzAnKSldLFxuICAgICAgdHMuTm9kZUZsYWdzLkxldCk7XG4gIGNvbnN0IGxvb3BDb25kaXRpb24gPSB0cy5jcmVhdGVCaW5hcnkoXG4gICAgICBpbmNyZW1lbnRvciwgdHMuU3ludGF4S2luZC5MZXNzVGhhblRva2VuLFxuICAgICAgdHMuY3JlYXRlUHJvcGVydHlBY2Nlc3MoYWxsTm9kZXMsIHRzLmNyZWF0ZUlkZW50aWZpZXIoJ2xlbmd0aCcpKSk7XG4gIGNvbnN0IGRlc3Ryb3lTdGF0ZW1lbnQgPSB0cy5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KHRzLmNyZWF0ZUNhbGwoXG4gICAgICB0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgJ2Rlc3Ryb3lOb2RlJyksIFtdLFxuICAgICAgW3RzLmNyZWF0ZUVsZW1lbnRBY2Nlc3MoYWxsTm9kZXMsIGluY3JlbWVudG9yKV0pKTtcbiAgY29uc3QgbG9vcCA9IHRzLmNyZWF0ZUZvcihcbiAgICAgIGxvb3BJbml0aWFsaXplciwgbG9vcENvbmRpdGlvbiwgdHMuY3JlYXRlUG9zdGZpeChpbmNyZW1lbnRvciwgdHMuU3ludGF4S2luZC5QbHVzUGx1c1Rva2VuKSxcbiAgICAgIHRzLmNyZWF0ZUJsb2NrKFtkZXN0cm95U3RhdGVtZW50XSkpO1xuXG4gIHJldHVybiB0cy5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgICAgW10sIFtdLCB1bmRlZmluZWQsIEhlbHBlckZ1bmN0aW9uLmRlc3Ryb3lWaWV3LCBbXSxcbiAgICAgIFtyZW5kZXJlciwgYWxsTm9kZXNdLm1hcChuYW1lID0+IGdldEFueVR5cGVkUGFyYW1ldGVyKG5hbWUpKSwgdW5kZWZpbmVkLFxuICAgICAgdHMuY3JlYXRlQmxvY2soW2xvb3BdLCB0cnVlKSk7XG59XG5cbi8qKiBDcmVhdGVzIGEgaGVscGVyIGZvciBgZGV0YWNoVmlld2AuICovXG5mdW5jdGlvbiBnZXREZXRhY2hWaWV3SGVscGVyKCk6IHRzLkZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICBjb25zdCByZW5kZXJlciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3JlbmRlcmVyJyk7XG4gIGNvbnN0IHJvb3ROb2RlcyA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3Jvb3ROb2RlcycpO1xuICBjb25zdCBpbmNyZW1lbnRvciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ2knKTtcbiAgY29uc3Qgbm9kZSA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ25vZGUnKTtcblxuICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHJvb3ROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAvLyAgIGNvbnN0IG5vZGUgPSByb290Tm9kZXNbaV07XG4gIC8vICAgcmVuZGVyZXIucmVtb3ZlQ2hpbGQocmVuZGVyZXIucGFyZW50Tm9kZShub2RlKSwgbm9kZSk7XG4gIC8vIH1cbiAgY29uc3QgbG9vcEluaXRpYWxpemVyID0gdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoXG4gICAgICBbdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihpbmNyZW1lbnRvciwgdW5kZWZpbmVkLCB0cy5jcmVhdGVOdW1lcmljTGl0ZXJhbCgnMCcpKV0sXG4gICAgICB0cy5Ob2RlRmxhZ3MuTGV0KTtcbiAgY29uc3QgbG9vcENvbmRpdGlvbiA9IHRzLmNyZWF0ZUJpbmFyeShcbiAgICAgIGluY3JlbWVudG9yLCB0cy5TeW50YXhLaW5kLkxlc3NUaGFuVG9rZW4sXG4gICAgICB0cy5jcmVhdGVQcm9wZXJ0eUFjY2Vzcyhyb290Tm9kZXMsIHRzLmNyZWF0ZUlkZW50aWZpZXIoJ2xlbmd0aCcpKSk7XG5cbiAgLy8gY29uc3Qgbm9kZSA9IHJvb3ROb2Rlc1tpXTtcbiAgY29uc3Qgbm9kZVZhcmlhYmxlU3RhdGVtZW50ID0gdHMuY3JlYXRlVmFyaWFibGVTdGF0ZW1lbnQoXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0cy5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChcbiAgICAgICAgICBbdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihcbiAgICAgICAgICAgICAgbm9kZSwgdW5kZWZpbmVkLCB0cy5jcmVhdGVFbGVtZW50QWNjZXNzKHJvb3ROb2RlcywgaW5jcmVtZW50b3IpKV0sXG4gICAgICAgICAgdHMuTm9kZUZsYWdzLkNvbnN0KSk7XG4gIC8vIHJlbmRlcmVyLnJlbW92ZUNoaWxkKHJlbmRlcmVyLnBhcmVudE5vZGUobm9kZSksIG5vZGUpO1xuICBjb25zdCByZW1vdmVDYWxsID0gdHMuY3JlYXRlQ2FsbChcbiAgICAgIHRzLmNyZWF0ZVByb3BlcnR5QWNjZXNzKHJlbmRlcmVyLCAncmVtb3ZlQ2hpbGQnKSwgW10sXG4gICAgICBbdHMuY3JlYXRlQ2FsbCh0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgJ3BhcmVudE5vZGUnKSwgW10sIFtub2RlXSksIG5vZGVdKTtcblxuICBjb25zdCBsb29wID0gdHMuY3JlYXRlRm9yKFxuICAgICAgbG9vcEluaXRpYWxpemVyLCBsb29wQ29uZGl0aW9uLCB0cy5jcmVhdGVQb3N0Zml4KGluY3JlbWVudG9yLCB0cy5TeW50YXhLaW5kLlBsdXNQbHVzVG9rZW4pLFxuICAgICAgdHMuY3JlYXRlQmxvY2soW25vZGVWYXJpYWJsZVN0YXRlbWVudCwgdHMuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChyZW1vdmVDYWxsKV0pKTtcblxuICByZXR1cm4gdHMuY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbihcbiAgICAgIFtdLCBbXSwgdW5kZWZpbmVkLCBIZWxwZXJGdW5jdGlvbi5kZXRhY2hWaWV3LCBbXSxcbiAgICAgIFtyZW5kZXJlciwgcm9vdE5vZGVzXS5tYXAobmFtZSA9PiBnZXRBbnlUeXBlZFBhcmFtZXRlcihuYW1lKSksIHVuZGVmaW5lZCxcbiAgICAgIHRzLmNyZWF0ZUJsb2NrKFtsb29wXSwgdHJ1ZSkpO1xufVxuXG4vKiogQ3JlYXRlcyBhIGhlbHBlciBmb3IgYGF0dGFjaFZpZXdBZnRlcmAgKi9cbmZ1bmN0aW9uIGdldEF0dGFjaFZpZXdBZnRlckhlbHBlcigpOiB0cy5GdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgY29uc3QgcmVuZGVyZXIgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCdyZW5kZXJlcicpO1xuICBjb25zdCBub2RlID0gdHMuY3JlYXRlSWRlbnRpZmllcignbm9kZScpO1xuICBjb25zdCByb290Tm9kZXMgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCdyb290Tm9kZXMnKTtcbiAgY29uc3QgcGFyZW50ID0gdHMuY3JlYXRlSWRlbnRpZmllcigncGFyZW50Jyk7XG4gIGNvbnN0IG5leHRTaWJsaW5nID0gdHMuY3JlYXRlSWRlbnRpZmllcignbmV4dFNpYmxpbmcnKTtcbiAgY29uc3QgaW5jcmVtZW50b3IgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCdpJyk7XG4gIGNvbnN0IGNyZWF0ZUNvbnN0V2l0aE1ldGhvZENhbGxJbml0aWFsaXplciA9IChjb25zdE5hbWU6IHRzLklkZW50aWZpZXIsIG1ldGhvZFRvQ2FsbDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHRzLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHRzLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFxuICAgICAgICAgICAgW3RzLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgICAgICAgICAgICAgY29uc3ROYW1lLCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdHMuY3JlYXRlQ2FsbCh0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhyZW5kZXJlciwgbWV0aG9kVG9DYWxsKSwgW10sIFtub2RlXSkpXSxcbiAgICAgICAgICAgIHRzLk5vZGVGbGFncy5Db25zdCkpO1xuICB9O1xuXG4gIC8vIGNvbnN0IHBhcmVudCA9IHJlbmRlcmVyLnBhcmVudE5vZGUobm9kZSk7XG4gIGNvbnN0IHBhcmVudFZhcmlhYmxlU3RhdGVtZW50ID0gY3JlYXRlQ29uc3RXaXRoTWV0aG9kQ2FsbEluaXRpYWxpemVyKHBhcmVudCwgJ3BhcmVudE5vZGUnKTtcblxuICAvLyBjb25zdCBuZXh0U2libGluZyA9IHJlbmRlcmVyLm5leHRTaWJsaW5nKG5vZGUpO1xuICBjb25zdCBuZXh0U2libGluZ1ZhcmlhYmxlU3RhdGVtZW50ID1cbiAgICAgIGNyZWF0ZUNvbnN0V2l0aE1ldGhvZENhbGxJbml0aWFsaXplcihuZXh0U2libGluZywgJ25leHRTaWJsaW5nJyk7XG5cbiAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCByb290Tm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICByZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50RWxlbWVudCwgcm9vdE5vZGVzW2ldLCBuZXh0U2libGluZyk7XG4gIC8vIH1cbiAgY29uc3QgbG9vcEluaXRpYWxpemVyID0gdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoXG4gICAgICBbdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihpbmNyZW1lbnRvciwgdW5kZWZpbmVkLCB0cy5jcmVhdGVOdW1lcmljTGl0ZXJhbCgnMCcpKV0sXG4gICAgICB0cy5Ob2RlRmxhZ3MuTGV0KTtcbiAgY29uc3QgbG9vcENvbmRpdGlvbiA9IHRzLmNyZWF0ZUJpbmFyeShcbiAgICAgIGluY3JlbWVudG9yLCB0cy5TeW50YXhLaW5kLkxlc3NUaGFuVG9rZW4sXG4gICAgICB0cy5jcmVhdGVQcm9wZXJ0eUFjY2Vzcyhyb290Tm9kZXMsIHRzLmNyZWF0ZUlkZW50aWZpZXIoJ2xlbmd0aCcpKSk7XG4gIGNvbnN0IGluc2VydEJlZm9yZUNhbGwgPSB0cy5jcmVhdGVDYWxsKFxuICAgICAgdHMuY3JlYXRlUHJvcGVydHlBY2Nlc3MocmVuZGVyZXIsICdpbnNlcnRCZWZvcmUnKSwgW10sXG4gICAgICBbcGFyZW50LCB0cy5jcmVhdGVFbGVtZW50QWNjZXNzKHJvb3ROb2RlcywgaW5jcmVtZW50b3IpLCBuZXh0U2libGluZ10pO1xuICBjb25zdCBsb29wID0gdHMuY3JlYXRlRm9yKFxuICAgICAgbG9vcEluaXRpYWxpemVyLCBsb29wQ29uZGl0aW9uLCB0cy5jcmVhdGVQb3N0Zml4KGluY3JlbWVudG9yLCB0cy5TeW50YXhLaW5kLlBsdXNQbHVzVG9rZW4pLFxuICAgICAgdHMuY3JlYXRlQmxvY2soW3RzLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoaW5zZXJ0QmVmb3JlQ2FsbCldKSk7XG5cbiAgcmV0dXJuIHRzLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICBbXSwgW10sIHVuZGVmaW5lZCwgSGVscGVyRnVuY3Rpb24uYXR0YWNoVmlld0FmdGVyLCBbXSxcbiAgICAgIFtyZW5kZXJlciwgbm9kZSwgcm9vdE5vZGVzXS5tYXAobmFtZSA9PiBnZXRBbnlUeXBlZFBhcmFtZXRlcihuYW1lKSksIHVuZGVmaW5lZCxcbiAgICAgIHRzLmNyZWF0ZUJsb2NrKFtwYXJlbnRWYXJpYWJsZVN0YXRlbWVudCwgbmV4dFNpYmxpbmdWYXJpYWJsZVN0YXRlbWVudCwgbG9vcF0sIHRydWUpKTtcbn1cblxuLyoqIENyZWF0ZXMgYSBoZWxwZXIgZm9yIGBzZXRFbGVtZW50QXR0cmlidXRlYCAqL1xuZnVuY3Rpb24gZ2V0U2V0RWxlbWVudEF0dHJpYnV0ZUhlbHBlcigpOiB0cy5GdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgY29uc3QgcmVuZGVyZXIgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCdyZW5kZXJlcicpO1xuICBjb25zdCBlbGVtZW50ID0gdHMuY3JlYXRlSWRlbnRpZmllcignZWxlbWVudCcpO1xuICBjb25zdCBuYW1lc3BhY2VBbmROYW1lID0gdHMuY3JlYXRlSWRlbnRpZmllcignbmFtZXNwYWNlQW5kTmFtZScpO1xuICBjb25zdCB2YWx1ZSA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ3ZhbHVlJyk7XG4gIGNvbnN0IG5hbWUgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCduYW1lJyk7XG4gIGNvbnN0IG5hbWVzcGFjZSA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoJ25hbWVzcGFjZScpO1xuXG4gIC8vIFtuYW1lc3BhY2UsIG5hbWVdID0gc3BsaXROYW1lc3BhY2UobmFtZXNwYWNlQW5kTmFtZSk7XG4gIGNvbnN0IG5hbWVzcGFjZUFuZE5hbWVWYXJpYWJsZSA9IHRzLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgICB0cy5jcmVhdGVBcnJheUJpbmRpbmdQYXR0ZXJuKFxuICAgICAgICAgIFtuYW1lc3BhY2UsIG5hbWVdLm1hcChpZCA9PiB0cy5jcmVhdGVCaW5kaW5nRWxlbWVudCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgaWQpKSksXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0cy5jcmVhdGVDYWxsKHRzLmNyZWF0ZUlkZW50aWZpZXIoSGVscGVyRnVuY3Rpb24uc3BsaXROYW1lc3BhY2UpLCBbXSwgW25hbWVzcGFjZUFuZE5hbWVdKSk7XG5cbiAgLy8gcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICBjb25zdCBzZXRDYWxsID0gdHMuY3JlYXRlQ2FsbChcbiAgICAgIHRzLmNyZWF0ZVByb3BlcnR5QWNjZXNzKHJlbmRlcmVyLCAnc2V0QXR0cmlidXRlJyksIFtdLCBbZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuXG4gIC8vIHJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCBuYW1lc3BhY2UpO1xuICBjb25zdCByZW1vdmVDYWxsID0gdHMuY3JlYXRlQ2FsbChcbiAgICAgIHRzLmNyZWF0ZVByb3BlcnR5QWNjZXNzKHJlbmRlcmVyLCAncmVtb3ZlQXR0cmlidXRlJyksIFtdLCBbZWxlbWVudCwgbmFtZSwgbmFtZXNwYWNlXSk7XG5cbiAgLy8gaWYgKHZhbHVlICE9IG51bGwpIHsgc2V0Q2FsbCgpIH0gZWxzZSB7IHJlbW92ZUNhbGwgfVxuICBjb25zdCBpZlN0YXRlbWVudCA9IHRzLmNyZWF0ZUlmKFxuICAgICAgdHMuY3JlYXRlQmluYXJ5KHZhbHVlLCB0cy5TeW50YXhLaW5kLkV4Y2xhbWF0aW9uRXF1YWxzVG9rZW4sIHRzLmNyZWF0ZU51bGwoKSksXG4gICAgICB0cy5jcmVhdGVCbG9jayhbdHMuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChzZXRDYWxsKV0sIHRydWUpLFxuICAgICAgdHMuY3JlYXRlQmxvY2soW3RzLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQocmVtb3ZlQ2FsbCldLCB0cnVlKSk7XG5cbiAgY29uc3QgZnVuY3Rpb25Cb2R5ID0gdHMuY3JlYXRlQmxvY2soXG4gICAgICBbXG4gICAgICAgIHRzLmNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoW25hbWVzcGFjZUFuZE5hbWVWYXJpYWJsZV0sIHRzLk5vZGVGbGFncy5Db25zdCkpLFxuICAgICAgICBpZlN0YXRlbWVudFxuICAgICAgXSxcbiAgICAgIHRydWUpO1xuXG4gIHJldHVybiB0cy5jcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgICAgW10sIFtdLCB1bmRlZmluZWQsIEhlbHBlckZ1bmN0aW9uLnNldEVsZW1lbnRBdHRyaWJ1dGUsIFtdLFxuICAgICAgW1xuICAgICAgICBnZXRBbnlUeXBlZFBhcmFtZXRlcihyZW5kZXJlciksIGdldEFueVR5cGVkUGFyYW1ldGVyKGVsZW1lbnQpLFxuICAgICAgICBnZXRBbnlUeXBlZFBhcmFtZXRlcihuYW1lc3BhY2VBbmROYW1lKSwgZ2V0QW55VHlwZWRQYXJhbWV0ZXIodmFsdWUsIGZhbHNlKVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCwgZnVuY3Rpb25Cb2R5KTtcbn1cblxuLyoqIENyZWF0ZXMgYSBoZWxwZXIgZm9yIHNwbGl0dGluZyBhIG5hbWUgdGhhdCBtaWdodCBjb250YWluIGEgbmFtZXNwYWNlLiAqL1xuZnVuY3Rpb24gZ2V0U3BsaXROYW1lc3BhY2VIZWxwZXIoKTogdHMuRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGNvbnN0IG5hbWUgPSB0cy5jcmVhdGVJZGVudGlmaWVyKCduYW1lJyk7XG4gIGNvbnN0IG1hdGNoID0gdHMuY3JlYXRlSWRlbnRpZmllcignbWF0Y2gnKTtcbiAgY29uc3QgcmVnZXggPSB0cy5jcmVhdGVSZWd1bGFyRXhwcmVzc2lvbkxpdGVyYWwoJy9eOihbXjpdKyk6KC4rKSQvJyk7XG4gIGNvbnN0IG1hdGNoQ2FsbCA9IHRzLmNyZWF0ZUNhbGwodHMuY3JlYXRlUHJvcGVydHlBY2Nlc3MobmFtZSwgJ21hdGNoJyksIFtdLCBbcmVnZXhdKTtcblxuICAvLyBjb25zdCBtYXRjaCA9IG5hbWUuc3BsaXQocmVnZXgpO1xuICBjb25zdCBtYXRjaFZhcmlhYmxlID0gdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoXG4gICAgICBbdHMuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihtYXRjaCwgdW5kZWZpbmVkLCBtYXRjaENhbGwpXSwgdHMuTm9kZUZsYWdzLkNvbnN0KTtcblxuICAvLyByZXR1cm4gW21hdGNoWzFdLCBtYXRjaFsyXV07XG4gIGNvbnN0IG1hdGNoUmV0dXJuID0gdHMuY3JlYXRlUmV0dXJuKFxuICAgICAgdHMuY3JlYXRlQXJyYXlMaXRlcmFsKFt0cy5jcmVhdGVFbGVtZW50QWNjZXNzKG1hdGNoLCAxKSwgdHMuY3JlYXRlRWxlbWVudEFjY2VzcyhtYXRjaCwgMildKSk7XG5cbiAgLy8gaWYgKG5hbWVbMF0gPT09ICc6JykgeyBjb25zdCBtYXRjaCA9IC4uLjsgcmV0dXJuIC4uLjsgfVxuICBjb25zdCBpZlN0YXRlbWVudCA9IHRzLmNyZWF0ZUlmKFxuICAgICAgdHMuY3JlYXRlQmluYXJ5KFxuICAgICAgICAgIHRzLmNyZWF0ZUVsZW1lbnRBY2Nlc3MobmFtZSwgMCksIHRzLlN5bnRheEtpbmQuRXF1YWxzRXF1YWxzRXF1YWxzVG9rZW4sXG4gICAgICAgICAgdHMuY3JlYXRlU3RyaW5nTGl0ZXJhbCgnOicpKSxcbiAgICAgIHRzLmNyZWF0ZUJsb2NrKFt0cy5jcmVhdGVWYXJpYWJsZVN0YXRlbWVudChbXSwgbWF0Y2hWYXJpYWJsZSksIG1hdGNoUmV0dXJuXSwgdHJ1ZSkpO1xuXG4gIC8vIHJldHVybiBbJycsIG5hbWVdO1xuICBjb25zdCBlbHNlUmV0dXJuID0gdHMuY3JlYXRlUmV0dXJuKHRzLmNyZWF0ZUFycmF5TGl0ZXJhbChbdHMuY3JlYXRlU3RyaW5nTGl0ZXJhbCgnJyksIG5hbWVdKSk7XG5cbiAgcmV0dXJuIHRzLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICBbXSwgW10sIHVuZGVmaW5lZCwgSGVscGVyRnVuY3Rpb24uc3BsaXROYW1lc3BhY2UsIFtdLCBbZ2V0QW55VHlwZWRQYXJhbWV0ZXIobmFtZSldLCB1bmRlZmluZWQsXG4gICAgICB0cy5jcmVhdGVCbG9jayhbaWZTdGF0ZW1lbnQsIGVsc2VSZXR1cm5dLCB0cnVlKSk7XG59XG4iXX0=
@@ -1,14 +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
- /// <amd-module name="@angular/core/schematics/migrations/renderer-to-renderer2" />
9
- import { Rule } from '@angular-devkit/schematics';
10
- /**
11
- * Migration that switches from `Renderer` to `Renderer2`. More information on how it works:
12
- * https://hackmd.angular.io/UTzUZTnPRA-cSa_4mHyfYw
13
- */
14
- export default function (): Rule;
@@ -1,135 +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
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
- (function (factory) {
18
- if (typeof module === "object" && typeof module.exports === "object") {
19
- var v = factory(require, exports);
20
- if (v !== undefined) module.exports = v;
21
- }
22
- else if (typeof define === "function" && define.amd) {
23
- define("@angular/core/schematics/migrations/renderer-to-renderer2", ["require", "exports", "@angular-devkit/schematics", "path", "typescript", "@angular/core/schematics/utils/project_tsconfig_paths", "@angular/core/schematics/utils/typescript/compiler_host", "@angular/core/schematics/utils/typescript/imports", "@angular/core/schematics/utils/typescript/nodes", "@angular/core/schematics/migrations/renderer-to-renderer2/helpers", "@angular/core/schematics/migrations/renderer-to-renderer2/migration", "@angular/core/schematics/migrations/renderer-to-renderer2/util"], factory);
24
- }
25
- })(function (require, exports) {
26
- "use strict";
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- const schematics_1 = require("@angular-devkit/schematics");
29
- const path_1 = require("path");
30
- const ts = require("typescript");
31
- const project_tsconfig_paths_1 = require("@angular/core/schematics/utils/project_tsconfig_paths");
32
- const compiler_host_1 = require("@angular/core/schematics/utils/typescript/compiler_host");
33
- const imports_1 = require("@angular/core/schematics/utils/typescript/imports");
34
- const nodes_1 = require("@angular/core/schematics/utils/typescript/nodes");
35
- const helpers_1 = require("@angular/core/schematics/migrations/renderer-to-renderer2/helpers");
36
- const migration_1 = require("@angular/core/schematics/migrations/renderer-to-renderer2/migration");
37
- const util_1 = require("@angular/core/schematics/migrations/renderer-to-renderer2/util");
38
- const MODULE_AUGMENTATION_FILENAME = 'ɵɵRENDERER_MIGRATION_CORE_AUGMENTATION.d.ts';
39
- /**
40
- * Migration that switches from `Renderer` to `Renderer2`. More information on how it works:
41
- * https://hackmd.angular.io/UTzUZTnPRA-cSa_4mHyfYw
42
- */
43
- function default_1() {
44
- return (tree) => __awaiter(this, void 0, void 0, function* () {
45
- const { buildPaths, testPaths } = yield (0, project_tsconfig_paths_1.getProjectTsConfigPaths)(tree);
46
- const basePath = process.cwd();
47
- const allPaths = [...buildPaths, ...testPaths];
48
- if (!allPaths.length) {
49
- throw new schematics_1.SchematicsException('Could not find any tsconfig file. Cannot migrate Renderer usages to Renderer2.');
50
- }
51
- for (const tsconfigPath of allPaths) {
52
- runRendererToRenderer2Migration(tree, tsconfigPath, basePath);
53
- }
54
- });
55
- }
56
- exports.default = default_1;
57
- function runRendererToRenderer2Migration(tree, tsconfigPath, basePath) {
58
- // Technically we can get away with using `MODULE_AUGMENTATION_FILENAME` as the path, but as of
59
- // TS 4.2, the module resolution caching seems to be more aggressive which causes the file to be
60
- // retained between test runs. We can avoid it by using the full path.
61
- const augmentedFilePath = (0, path_1.join)(basePath, MODULE_AUGMENTATION_FILENAME);
62
- const { program } = (0, compiler_host_1.createMigrationProgram)(tree, tsconfigPath, basePath, fileName => {
63
- // In case the module augmentation file has been requested, we return a source file that
64
- // augments "@angular/core" to include a named export called "Renderer". This ensures that
65
- // we can rely on the type checker for this migration in v9 where "Renderer" has been removed.
66
- if ((0, path_1.basename)(fileName) === MODULE_AUGMENTATION_FILENAME) {
67
- return `
68
- import '@angular/core';
69
- declare module "@angular/core" {
70
- class Renderer {}
71
- }
72
- `;
73
- }
74
- return undefined;
75
- }, [augmentedFilePath]);
76
- const typeChecker = program.getTypeChecker();
77
- const printer = ts.createPrinter();
78
- const sourceFiles = program.getSourceFiles().filter(sourceFile => (0, compiler_host_1.canMigrateFile)(basePath, sourceFile, program));
79
- sourceFiles.forEach(sourceFile => {
80
- const rendererImportSpecifier = (0, imports_1.getImportSpecifier)(sourceFile, '@angular/core', 'Renderer');
81
- const rendererImport = rendererImportSpecifier ?
82
- (0, nodes_1.closestNode)(rendererImportSpecifier, ts.SyntaxKind.NamedImports) :
83
- null;
84
- // If there are no imports for the `Renderer`, we can exit early.
85
- if (!rendererImportSpecifier || !rendererImport) {
86
- return;
87
- }
88
- const { typedNodes, methodCalls, forwardRefs } = (0, util_1.findRendererReferences)(sourceFile, typeChecker, rendererImportSpecifier);
89
- const update = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
90
- const helpersToAdd = new Set();
91
- // Change the `Renderer` import to `Renderer2`.
92
- update.remove(rendererImport.getStart(), rendererImport.getWidth());
93
- update.insertRight(rendererImport.getStart(), printer.printNode(ts.EmitHint.Unspecified, (0, imports_1.replaceImport)(rendererImport, 'Renderer', 'Renderer2'), sourceFile));
94
- // Change the method parameter and property types to `Renderer2`.
95
- typedNodes.forEach(node => {
96
- const type = node.type;
97
- if (type) {
98
- update.remove(type.getStart(), type.getWidth());
99
- update.insertRight(type.getStart(), 'Renderer2');
100
- }
101
- });
102
- // Change all identifiers inside `forwardRef` referring to the `Renderer`.
103
- forwardRefs.forEach(identifier => {
104
- update.remove(identifier.getStart(), identifier.getWidth());
105
- update.insertRight(identifier.getStart(), 'Renderer2');
106
- });
107
- // Migrate all of the method calls.
108
- methodCalls.forEach(call => {
109
- const { node, requiredHelpers } = (0, migration_1.migrateExpression)(call, typeChecker);
110
- if (node) {
111
- // If we migrated the node to a new expression, replace only the call expression.
112
- update.remove(call.getStart(), call.getWidth());
113
- update.insertRight(call.getStart(), printer.printNode(ts.EmitHint.Unspecified, node, sourceFile));
114
- }
115
- else if (call.parent && ts.isExpressionStatement(call.parent)) {
116
- // Otherwise if the call is inside an expression statement, drop the entire statement.
117
- // This takes care of any trailing semicolons. We only need to drop nodes for cases like
118
- // `setBindingDebugInfo` which have been noop for a while so they can be removed safely.
119
- update.remove(call.parent.getStart(), call.parent.getWidth());
120
- }
121
- if (requiredHelpers) {
122
- requiredHelpers.forEach(helperName => helpersToAdd.add(helperName));
123
- }
124
- });
125
- // Some of the methods can't be mapped directly to `Renderer2` and need extra logic around them.
126
- // The safest way to do so is to declare helper functions similar to the ones emitted by TS
127
- // which encapsulate the extra "glue" logic. We should only emit these functions once per file.
128
- helpersToAdd.forEach(helperName => {
129
- update.insertLeft(sourceFile.endOfFileToken.getStart(), (0, helpers_1.getHelper)(helperName, sourceFile, printer));
130
- });
131
- tree.commitUpdate(update);
132
- });
133
- }
134
- });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9yZW5kZXJlci10by1yZW5kZXJlcjIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCwyREFBMkU7SUFDM0UsK0JBQThDO0lBQzlDLGlDQUFpQztJQUVqQyxrR0FBMkU7SUFDM0UsMkZBQTRGO0lBQzVGLCtFQUFpRjtJQUNqRiwyRUFBeUQ7SUFFekQsK0ZBQW9EO0lBQ3BELG1HQUE4QztJQUM5Qyx5RkFBOEM7SUFFOUMsTUFBTSw0QkFBNEIsR0FBRyw2Q0FBNkMsQ0FBQztJQUVuRjs7O09BR0c7SUFDSDtRQUNFLE9BQU8sQ0FBTyxJQUFVLEVBQUUsRUFBRTtZQUMxQixNQUFNLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxHQUFHLE1BQU0sSUFBQSxnREFBdUIsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBRS9DLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNwQixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLGdGQUFnRixDQUFDLENBQUM7YUFDdkY7WUFFRCxLQUFLLE1BQU0sWUFBWSxJQUFJLFFBQVEsRUFBRTtnQkFDbkMsK0JBQStCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQzthQUMvRDtRQUNILENBQUMsQ0FBQSxDQUFDO0lBQ0osQ0FBQztJQWZELDRCQWVDO0lBRUQsU0FBUywrQkFBK0IsQ0FBQyxJQUFVLEVBQUUsWUFBb0IsRUFBRSxRQUFnQjtRQUN6RiwrRkFBK0Y7UUFDL0Ys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Z0c7WUFDaEcsMkZBQTJGO1lBQzNGLCtGQUErRjtZQUMvRixZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLENBQUMsVUFBVSxDQUNiLFVBQVUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4RixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZSwgU2NoZW1hdGljc0V4Y2VwdGlvbiwgVHJlZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtiYXNlbmFtZSwgam9pbiwgcmVsYXRpdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0UHJvamVjdFRzQ29uZmlnUGF0aHN9IGZyb20gJy4uLy4uL3V0aWxzL3Byb2plY3RfdHNjb25maWdfcGF0aHMnO1xuaW1wb3J0IHtjYW5NaWdyYXRlRmlsZSwgY3JlYXRlTWlncmF0aW9uUHJvZ3JhbX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9jb21waWxlcl9ob3N0JztcbmltcG9ydCB7Z2V0SW1wb3J0U3BlY2lmaWVyLCByZXBsYWNlSW1wb3J0fSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2ltcG9ydHMnO1xuaW1wb3J0IHtjbG9zZXN0Tm9kZX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9ub2Rlcyc7XG5cbmltcG9ydCB7Z2V0SGVscGVyLCBIZWxwZXJGdW5jdGlvbn0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7bWlncmF0ZUV4cHJlc3Npb259IGZyb20gJy4vbWlncmF0aW9uJztcbmltcG9ydCB7ZmluZFJlbmRlcmVyUmVmZXJlbmNlc30gZnJvbSAnLi91dGlsJztcblxuY29uc3QgTU9EVUxFX0FVR01FTlRBVElPTl9GSUxFTkFNRSA9ICfJtcm1UkVOREVSRVJfTUlHUkFUSU9OX0NPUkVfQVVHTUVOVEFUSU9OLmQudHMnO1xuXG4vKipcbiAqIE1pZ3JhdGlvbiB0aGF0IHN3aXRjaGVzIGZyb20gYFJlbmRlcmVyYCB0byBgUmVuZGVyZXIyYC4gTW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgaXQgd29ya3M6XG4gKiBodHRwczovL2hhY2ttZC5hbmd1bGFyLmlvL1VUelVaVG5QUkEtY1NhXzRtSHlmWXdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKTogUnVsZSB7XG4gIHJldHVybiBhc3luYyAodHJlZTogVHJlZSkgPT4ge1xuICAgIGNvbnN0IHtidWlsZFBhdGhzLCB0ZXN0UGF0aHN9ID0gYXdhaXQgZ2V0UHJvamVjdFRzQ29uZmlnUGF0aHModHJlZSk7XG4gICAgY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IGFsbFBhdGhzID0gWy4uLmJ1aWxkUGF0aHMsIC4uLnRlc3RQYXRoc107XG5cbiAgICBpZiAoIWFsbFBhdGhzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oXG4gICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGFueSB0c2NvbmZpZyBmaWxlLiBDYW5ub3QgbWlncmF0ZSBSZW5kZXJlciB1c2FnZXMgdG8gUmVuZGVyZXIyLicpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHNjb25maWdQYXRoIG9mIGFsbFBhdGhzKSB7XG4gICAgICBydW5SZW5kZXJlclRvUmVuZGVyZXIyTWlncmF0aW9uKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcnVuUmVuZGVyZXJUb1JlbmRlcmVyMk1pZ3JhdGlvbih0cmVlOiBUcmVlLCB0c2NvbmZpZ1BhdGg6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZykge1xuICAvLyBUZWNobmljYWxseSB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCB1c2luZyBgTU9EVUxFX0FVR01FTlRBVElPTl9GSUxFTkFNRWAgYXMgdGhlIHBhdGgsIGJ1dCBhcyBvZlxuICAvLyBUUyA0LjIsIHRoZSBtb2R1bGUgcmVzb2x1dGlvbiBjYWNoaW5nIHNlZW1zIHRvIGJlIG1vcmUgYWdncmVzc2l2ZSB3aGljaCBjYXVzZXMgdGhlIGZpbGUgdG8gYmVcbiAgLy8gcmV0YWluZWQgYmV0d2VlbiB0ZXN0IHJ1bnMuIFdlIGNhbiBhdm9pZCBpdCBieSB1c2luZyB0aGUgZnVsbCBwYXRoLlxuICBjb25zdCBhdWdtZW50ZWRGaWxlUGF0aCA9IGpvaW4oYmFzZVBhdGgsIE1PRFVMRV9BVUdNRU5UQVRJT05fRklMRU5BTUUpO1xuICBjb25zdCB7cHJvZ3JhbX0gPSBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgsIGZpbGVOYW1lID0+IHtcbiAgICAvLyBJbiBjYXNlIHRoZSBtb2R1bGUgYXVnbWVudGF0aW9uIGZpbGUgaGFzIGJlZW4gcmVxdWVzdGVkLCB3ZSByZXR1cm4gYSBzb3VyY2UgZmlsZSB0aGF0XG4gICAgLy8gYXVnbWVudHMgXCJAYW5ndWxhci9jb3JlXCIgdG8gaW5jbHVkZSBhIG5hbWVkIGV4cG9ydCBjYWxsZWQgXCJSZW5kZXJlclwiLiBUaGlzIGVuc3VyZXMgdGhhdFxuICAgIC8vIHdlIGNhbiByZWx5IG9uIHRoZSB0eXBlIGNoZWNrZXIgZm9yIHRoaXMgbWlncmF0aW9uIGluIHY5IHdoZXJlIFwiUmVuZGVyZXJcIiBoYXMgYmVlbiByZW1vdmVkLlxuICAgIGlmIChiYXNlbmFtZShmaWxlTmFtZSkgPT09IE1PRFVMRV9BVUdNRU5UQVRJT05fRklMRU5BTUUpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICAgIGltcG9ydCAnQGFuZ3VsYXIvY29yZSc7XG4gICAgICAgIGRlY2xhcmUgbW9kdWxlIFwiQGFuZ3VsYXIvY29yZVwiIHtcbiAgICAgICAgICBjbGFzcyBSZW5kZXJlciB7fVxuICAgICAgICB9XG4gICAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbYXVnbWVudGVkRmlsZVBhdGhdKTtcbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzID1cbiAgICAgIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKS5maWx0ZXIoc291cmNlRmlsZSA9PiBjYW5NaWdyYXRlRmlsZShiYXNlUGF0aCwgc291cmNlRmlsZSwgcHJvZ3JhbSkpO1xuXG4gIHNvdXJjZUZpbGVzLmZvckVhY2goc291cmNlRmlsZSA9PiB7XG4gICAgY29uc3QgcmVuZGVyZXJJbXBvcnRTcGVjaWZpZXIgPSBnZXRJbXBvcnRTcGVjaWZpZXIoc291cmNlRmlsZSwgJ0Bhbmd1bGFyL2NvcmUnLCAnUmVuZGVyZXInKTtcbiAgICBjb25zdCByZW5kZXJlckltcG9ydCA9IHJlbmRlcmVySW1wb3J0U3BlY2lmaWVyID9cbiAgICAgICAgY2xvc2VzdE5vZGU8dHMuTmFtZWRJbXBvcnRzPihyZW5kZXJlckltcG9ydFNwZWNpZmllciwgdHMuU3ludGF4S2luZC5OYW1lZEltcG9ydHMpIDpcbiAgICAgICAgbnVsbDtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyBpbXBvcnRzIGZvciB0aGUgYFJlbmRlcmVyYCwgd2UgY2FuIGV4aXQgZWFybHkuXG4gICAgaWYgKCFyZW5kZXJlckltcG9ydFNwZWNpZmllciB8fCAhcmVuZGVyZXJJbXBvcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7dHlwZWROb2RlcywgbWV0aG9kQ2FsbHMsIGZvcndhcmRSZWZzfSA9XG4gICAgICAgIGZpbmRSZW5kZXJlclJlZmVyZW5jZXMoc291cmNlRmlsZSwgdHlwZUNoZWNrZXIsIHJlbmRlcmVySW1wb3J0U3BlY2lmaWVyKTtcbiAgICBjb25zdCB1cGRhdGUgPSB0cmVlLmJlZ2luVXBkYXRlKHJlbGF0aXZlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLmZpbGVOYW1lKSk7XG4gICAgY29uc3QgaGVscGVyc1RvQWRkID0gbmV3IFNldDxIZWxwZXJGdW5jdGlvbj4oKTtcblxuICAgIC8vIENoYW5nZSB0aGUgYFJlbmRlcmVyYCBpbXBvcnQgdG8gYFJlbmRlcmVyMmAuXG4gICAgdXBkYXRlLnJlbW92ZShyZW5kZXJlckltcG9ydC5nZXRTdGFydCgpLCByZW5kZXJlckltcG9ydC5nZXRXaWR0aCgpKTtcbiAgICB1cGRhdGUuaW5zZXJ0UmlnaHQoXG4gICAgICAgIHJlbmRlcmVySW1wb3J0LmdldFN0YXJ0KCksXG4gICAgICAgIHByaW50ZXIucHJpbnROb2RlKFxuICAgICAgICAgICAgdHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIHJlcGxhY2VJbXBvcnQocmVuZGVyZXJJbXBvcnQsICdSZW5kZXJlcicsICdSZW5kZXJlcjInKSxcbiAgICAgICAgICAgIHNvdXJjZUZpbGUpKTtcblxuICAgIC8vIENoYW5nZSB0aGUgbWV0aG9kIHBhcmFtZXRlciBhbmQgcHJvcGVydHkgdHlwZXMgdG8gYFJlbmRlcmVyMmAuXG4gICAgdHlwZWROb2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IG5vZGUudHlwZTtcblxuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgdXBkYXRlLnJlbW92ZSh0eXBlLmdldFN0YXJ0KCksIHR5cGUuZ2V0V2lkdGgoKSk7XG4gICAgICAgIHVwZGF0ZS5pbnNlcnRSaWdodCh0eXBlLmdldFN0YXJ0KCksICdSZW5kZXJlcjInKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIENoYW5nZSBhbGwgaWRlbnRpZmllcnMgaW5zaWRlIGBmb3J3YXJkUmVmYCByZWZlcnJpbmcgdG8gdGhlIGBSZW5kZXJlcmAuXG4gICAgZm9yd2FyZFJlZnMuZm9yRWFjaChpZGVudGlmaWVyID0+IHtcbiAgICAgIHVwZGF0ZS5yZW1vdmUoaWRlbnRpZmllci5nZXRTdGFydCgpLCBpZGVudGlmaWVyLmdldFdpZHRoKCkpO1xuICAgICAgdXBkYXRlLmluc2VydFJpZ2h0KGlkZW50aWZpZXIuZ2V0U3RhcnQoKSwgJ1JlbmRlcmVyMicpO1xuICAgIH0pO1xuXG4gICAgLy8gTWlncmF0ZSBhbGwgb2YgdGhlIG1ldGhvZCBjYWxscy5cbiAgICBtZXRob2RDYWxscy5mb3JFYWNoKGNhbGwgPT4ge1xuICAgICAgY29uc3Qge25vZGUsIHJlcXVpcmVkSGVscGVyc30gPSBtaWdyYXRlRXhwcmVzc2lvbihjYWxsLCB0eXBlQ2hlY2tlcik7XG5cbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIC8vIElmIHdlIG1pZ3JhdGVkIHRoZSBub2RlIHRvIGEgbmV3IGV4cHJlc3Npb24sIHJlcGxhY2Ugb25seSB0aGUgY2FsbCBleHByZXNzaW9uLlxuICAgICAgICB1cGRhdGUucmVtb3ZlKGNhbGwuZ2V0U3RhcnQoKSwgY2FsbC5nZXRXaWR0aCgpKTtcbiAgICAgICAgdXBkYXRlLmluc2VydFJpZ2h0KFxuICAgICAgICAgICAgY2FsbC5nZXRTdGFydCgpLCBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgbm9kZSwgc291cmNlRmlsZSkpO1xuICAgICAgfSBlbHNlIGlmIChjYWxsLnBhcmVudCAmJiB0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoY2FsbC5wYXJlbnQpKSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSBpZiB0aGUgY2FsbCBpcyBpbnNpZGUgYW4gZXhwcmVzc2lvbiBzdGF0ZW1lbnQsIGRyb3AgdGhlIGVudGlyZSBzdGF0ZW1lbnQuXG4gICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBhbnkgdHJhaWxpbmcgc2VtaWNvbG9ucy4gV2Ugb25seSBuZWVkIHRvIGRyb3Agbm9kZXMgZm9yIGNhc2VzIGxpa2VcbiAgICAgICAgLy8gYHNldEJpbmRpbmdEZWJ1Z0luZm9gIHdoaWNoIGhhdmUgYmVlbiBub29wIGZvciBhIHdoaWxlIHNvIHRoZXkgY2FuIGJlIHJlbW92ZWQgc2FmZWx5LlxuICAgICAgICB1cGRhdGUucmVtb3ZlKGNhbGwucGFyZW50LmdldFN0YXJ0KCksIGNhbGwucGFyZW50LmdldFdpZHRoKCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVxdWlyZWRIZWxwZXJzKSB7XG4gICAgICAgIHJlcXVpcmVkSGVscGVycy5mb3JFYWNoKGhlbHBlck5hbWUgPT4gaGVscGVyc1RvQWRkLmFkZChoZWxwZXJOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTb21lIG9mIHRoZSBtZXRob2RzIGNhbid0IGJlIG1hcHBlZCBkaXJlY3RseSB0byBgUmVuZGVyZXIyYCBhbmQgbmVlZCBleHRyYSBsb2dpYyBhcm91bmQgdGhlbS5cbiAgICAvLyBUaGUgc2FmZXN0IHdheSB0byBkbyBzbyBpcyB0byBkZWNsYXJlIGhlbHBlciBmdW5jdGlvbnMgc2ltaWxhciB0byB0aGUgb25lcyBlbWl0dGVkIGJ5IFRTXG4gICAgLy8gd2hpY2ggZW5jYXBzdWxhdGUgdGhlIGV4dHJhIFwiZ2x1ZVwiIGxvZ2ljLiBXZSBzaG91bGQgb25seSBlbWl0IHRoZXNlIGZ1bmN0aW9ucyBvbmNlIHBlciBmaWxlLlxuICAgIGhlbHBlcnNUb0FkZC5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgICAgdXBkYXRlLmluc2VydExlZnQoXG4gICAgICAgICAgc291cmNlRmlsZS5lbmRPZkZpbGVUb2tlbi5nZXRTdGFydCgpLCBnZXRIZWxwZXIoaGVscGVyTmFtZSwgc291cmNlRmlsZSwgcHJpbnRlcikpO1xuICAgIH0pO1xuXG4gICAgdHJlZS5jb21taXRVcGRhdGUodXBkYXRlKTtcbiAgfSk7XG59XG4iXX0=
@@ -1,18 +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
- /// <amd-module name="@angular/core/schematics/migrations/renderer-to-renderer2/migration" />
9
- import * as ts from 'typescript';
10
- import { HelperFunction } from './helpers';
11
- /**
12
- * Migrates a function call expression from `Renderer` to `Renderer2`.
13
- * Returns null if the expression should be dropped.
14
- */
15
- export declare function migrateExpression(node: ts.CallExpression, typeChecker: ts.TypeChecker): {
16
- node: ts.Node | null;
17
- requiredHelpers?: HelperFunction[];
18
- };