@angular/core 13.0.0-next.8 → 13.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/core.d.ts +590 -955
  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 +135 -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 +46 -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} +0 -0
  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} +2 -2
  103. package/{esm2015/src/render3/context_discovery.js → esm2020/src/render3/context_discovery.mjs} +0 -0
  104. package/{esm2015/src/render3/definition.js → esm2020/src/render3/definition.mjs} +0 -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} +0 -0
  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/{esm2015/src/render3/fields.js → esm2020/src/render3/fields.mjs} +0 -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 +122 -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} +1 -1
  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/esm2020/src/view/provider_flags.mjs +26 -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/esm2020/src/view/refs.mjs +369 -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} +8641 -8712
  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 +33119 -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/router-link-empty-expression/analyze_template.d.ts +2 -2
  297. package/schematics/migrations/router-link-empty-expression/analyze_template.js +6 -7
  298. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.d.ts +7 -6
  299. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.js +10 -11
  300. package/schematics/migrations/router-link-empty-expression/index.js +22 -11
  301. package/schematics/migrations/{move-document → testbed-teardown}/index.d.ts +2 -2
  302. package/schematics/migrations/testbed-teardown/index.js +92 -0
  303. package/schematics/migrations/testbed-teardown/util.d.ts +35 -0
  304. package/schematics/migrations/testbed-teardown/util.js +188 -0
  305. package/schematics/migrations.json +6 -101
  306. package/schematics/package.json +3 -0
  307. package/schematics/utils/import_manager.d.ts +1 -1
  308. package/schematics/utils/import_manager.js +22 -19
  309. package/schematics/utils/load_esm.d.ts +32 -0
  310. package/schematics/utils/load_esm.js +79 -0
  311. package/schematics/utils/ng_component_template.d.ts +1 -1
  312. package/schematics/utils/ng_component_template.js +12 -9
  313. package/schematics/utils/ng_decorators.d.ts +1 -1
  314. package/schematics/utils/ng_decorators.js +1 -1
  315. package/schematics/utils/parse_html.d.ts +2 -2
  316. package/schematics/utils/parse_html.js +4 -5
  317. package/schematics/utils/template_ast_visitor.d.ts +55 -0
  318. package/schematics/utils/template_ast_visitor.js +73 -0
  319. package/schematics/utils/typescript/class_declaration.d.ts +1 -1
  320. package/schematics/utils/typescript/class_declaration.js +10 -7
  321. package/schematics/utils/typescript/compiler_host.d.ts +1 -1
  322. package/schematics/utils/typescript/compiler_host.js +7 -4
  323. package/schematics/utils/typescript/decorators.d.ts +1 -1
  324. package/schematics/utils/typescript/decorators.js +7 -4
  325. package/schematics/utils/typescript/find_base_classes.d.ts +1 -1
  326. package/schematics/utils/typescript/find_base_classes.js +6 -3
  327. package/schematics/utils/typescript/functions.d.ts +1 -1
  328. package/schematics/utils/typescript/functions.js +9 -6
  329. package/schematics/utils/typescript/imports.d.ts +1 -1
  330. package/schematics/utils/typescript/imports.js +12 -9
  331. package/schematics/utils/typescript/nodes.d.ts +1 -1
  332. package/schematics/utils/typescript/nodes.js +11 -8
  333. package/schematics/utils/typescript/parse_tsconfig.d.ts +1 -1
  334. package/schematics/utils/typescript/parse_tsconfig.js +31 -9
  335. package/schematics/utils/typescript/property_name.d.ts +1 -1
  336. package/schematics/utils/typescript/property_name.js +7 -4
  337. package/schematics/utils/typescript/symbol.d.ts +1 -1
  338. package/schematics/utils/typescript/symbol.js +15 -12
  339. package/testing/package.json +5 -5
  340. package/testing/testing.d.ts +57 -339
  341. package/bundles/core-testing.umd.js +0 -3179
  342. package/bundles/core-testing.umd.js.map +0 -1
  343. package/bundles/core.umd.js +0 -34489
  344. package/bundles/core.umd.js.map +0 -1
  345. package/core.metadata.json +0 -1
  346. package/esm2015/core.externs.js +0 -6
  347. package/esm2015/core.js +0 -38
  348. package/esm2015/index.js +0 -13
  349. package/esm2015/src/application_init.js +0 -142
  350. package/esm2015/src/application_module.js +0 -134
  351. package/esm2015/src/application_ref.js +0 -735
  352. package/esm2015/src/change_detection/change_detection.js +0 -31
  353. package/esm2015/src/change_detection/change_detection_util.js +0 -105
  354. package/esm2015/src/change_detection/change_detector_ref.js +0 -96
  355. package/esm2015/src/change_detection/differs/default_iterable_differ.js +0 -668
  356. package/esm2015/src/change_detection.js +0 -14
  357. package/esm2015/src/codegen_private_exports.js +0 -11
  358. package/esm2015/src/compiler/compiler.externs.js +0 -0
  359. package/esm2015/src/console.js +0 -23
  360. package/esm2015/src/core.js +0 -50
  361. package/esm2015/src/core_private_export.js +0 -35
  362. package/esm2015/src/core_render3_private_export.js +0 -45
  363. package/esm2015/src/debug/debug_node.js +0 -632
  364. package/esm2015/src/di/injectable.js +0 -36
  365. package/esm2015/src/di/injection_token.js +0 -75
  366. package/esm2015/src/di/injector.js +0 -326
  367. package/esm2015/src/di/injector_compatibility.js +0 -187
  368. package/esm2015/src/di/interface/interface.externs.js +0 -0
  369. package/esm2015/src/di/jit/injectable.js +0 -96
  370. package/esm2015/src/di/metadata.js +0 -62
  371. package/esm2015/src/di/metadata_attr.js +0 -24
  372. package/esm2015/src/di/util.js +0 -53
  373. package/esm2015/src/event_emitter.js +0 -54
  374. package/esm2015/src/i18n/locale_en.js +0 -17
  375. package/esm2015/src/interface/interface.externs.js +0 -0
  376. package/esm2015/src/linker/compiler.js +0 -118
  377. package/esm2015/src/linker/element_ref.js +0 -66
  378. package/esm2015/src/linker/ng_module_factory.js +0 -21
  379. package/esm2015/src/linker/ng_module_factory_loader.js +0 -41
  380. package/esm2015/src/linker/system_js_ng_module_factory_loader.js +0 -77
  381. package/esm2015/src/linker/view_container_ref.js +0 -252
  382. package/esm2015/src/linker.js +0 -20
  383. package/esm2015/src/metadata/di.js +0 -99
  384. package/esm2015/src/metadata/directives.js +0 -120
  385. package/esm2015/src/metadata/ng_module.js +0 -44
  386. package/esm2015/src/reflection/reflection.externs.js +0 -0
  387. package/esm2015/src/render3/component.js +0 -206
  388. package/esm2015/src/render3/error_code.js +0 -45
  389. package/esm2015/src/render3/features/ng_onchanges_feature.js +0 -92
  390. package/esm2015/src/render3/instructions/shared.js +0 -1813
  391. package/esm2015/src/render3/interfaces/renderer.js +0 -29
  392. package/esm2015/src/render3/jit/directive.js +0 -312
  393. package/esm2015/src/render3/jit/environment.js +0 -167
  394. package/esm2015/src/render3/jit/partial.js +0 -105
  395. package/esm2015/src/render3/metadata.js +0 -49
  396. package/esm2015/src/render3/ng_module_ref.js +0 -108
  397. package/esm2015/src/render3/pipe.js +0 -202
  398. package/esm2015/src/render3/util/discovery_utils.js +0 -411
  399. package/esm2015/src/render3/util/global_utils.js +0 -78
  400. package/esm2015/src/render3/util/misc_utils.js +0 -63
  401. package/esm2015/src/testability/testability.js +0 -256
  402. package/esm2015/src/util/security/trusted_types.js +0 -133
  403. package/esm2015/src/util/security/trusted_types_bypass.js +0 -86
  404. package/esm2015/src/util/util.externs.js +0 -0
  405. package/esm2015/src/view/provider.js +0 -507
  406. package/esm2015/src/view/refs.js +0 -362
  407. package/esm2015/src/view/util.js +0 -378
  408. package/esm2015/testing/src/logger.js +0 -32
  409. package/esm2015/testing/src/ng_zone_mock.js +0 -31
  410. package/esm2015/testing/src/r3_test_bed.js +0 -397
  411. package/esm2015/testing/src/r3_test_bed_compiler.js +0 -744
  412. package/esm2015/testing/src/test_bed.js +0 -608
  413. package/esm2015/testing/src/test_bed_common.js +0 -31
  414. package/esm2015/testing/src/test_compiler.js +0 -66
  415. package/esm2015/testing/testing.externs.js +0 -6
  416. package/esm2015/testing/testing.js +0 -7
  417. package/fesm2015/core.js.map +0 -1
  418. package/fesm2015/testing.js.map +0 -1
  419. package/schematics/migrations/abstract-control-parent/index.d.ts +0 -11
  420. package/schematics/migrations/abstract-control-parent/index.js +0 -69
  421. package/schematics/migrations/abstract-control-parent/util.d.ts +0 -14
  422. package/schematics/migrations/abstract-control-parent/util.js +0 -64
  423. package/schematics/migrations/activated-route-snapshot-fragment/index.d.ts +0 -13
  424. package/schematics/migrations/activated-route-snapshot-fragment/index.js +0 -70
  425. package/schematics/migrations/activated-route-snapshot-fragment/util.d.ts +0 -16
  426. package/schematics/migrations/activated-route-snapshot-fragment/util.js +0 -48
  427. package/schematics/migrations/can-activate-with-redirect-to/index.d.ts +0 -11
  428. package/schematics/migrations/can-activate-with-redirect-to/index.js +0 -66
  429. package/schematics/migrations/can-activate-with-redirect-to/util.d.ts +0 -11
  430. package/schematics/migrations/can-activate-with-redirect-to/util.js +0 -70
  431. package/schematics/migrations/deep-shadow-piercing-selector/index.d.ts +0 -10
  432. package/schematics/migrations/deep-shadow-piercing-selector/index.js +0 -49
  433. package/schematics/migrations/dynamic-queries/index.d.ts +0 -13
  434. package/schematics/migrations/dynamic-queries/index.js +0 -73
  435. package/schematics/migrations/dynamic-queries/util.d.ts +0 -25
  436. package/schematics/migrations/dynamic-queries/util.js +0 -81
  437. package/schematics/migrations/initial-navigation/collector.d.ts +0 -22
  438. package/schematics/migrations/initial-navigation/collector.js +0 -119
  439. package/schematics/migrations/initial-navigation/index.d.ts +0 -11
  440. package/schematics/migrations/initial-navigation/index.js +0 -83
  441. package/schematics/migrations/initial-navigation/transform.d.ts +0 -20
  442. package/schematics/migrations/initial-navigation/transform.js +0 -68
  443. package/schematics/migrations/initial-navigation/update_recorder.d.ts +0 -18
  444. package/schematics/migrations/initial-navigation/update_recorder.js +0 -20
  445. package/schematics/migrations/initial-navigation/util.d.ts +0 -12
  446. package/schematics/migrations/initial-navigation/util.js +0 -43
  447. package/schematics/migrations/missing-injectable/definition_collector.d.ts +0 -37
  448. package/schematics/migrations/missing-injectable/definition_collector.js +0 -89
  449. package/schematics/migrations/missing-injectable/index.d.ts +0 -11
  450. package/schematics/migrations/missing-injectable/index.js +0 -122
  451. package/schematics/migrations/missing-injectable/providers_evaluator.d.ts +0 -36
  452. package/schematics/migrations/missing-injectable/providers_evaluator.js +0 -64
  453. package/schematics/migrations/missing-injectable/transform.d.ts +0 -69
  454. package/schematics/migrations/missing-injectable/transform.js +0 -201
  455. package/schematics/migrations/missing-injectable/update_recorder.d.ts +0 -21
  456. package/schematics/migrations/missing-injectable/update_recorder.js +0 -20
  457. package/schematics/migrations/module-with-providers/collector.d.ts +0 -34
  458. package/schematics/migrations/module-with-providers/collector.js +0 -73
  459. package/schematics/migrations/module-with-providers/index.d.ts +0 -13
  460. package/schematics/migrations/module-with-providers/index.js +0 -93
  461. package/schematics/migrations/module-with-providers/transform.d.ts +0 -49
  462. package/schematics/migrations/module-with-providers/transform.js +0 -148
  463. package/schematics/migrations/module-with-providers/util.d.ts +0 -13
  464. package/schematics/migrations/module-with-providers/util.js +0 -40
  465. package/schematics/migrations/move-document/document_import_visitor.d.ts +0 -27
  466. package/schematics/migrations/move-document/document_import_visitor.js +0 -74
  467. package/schematics/migrations/move-document/index.js +0 -93
  468. package/schematics/migrations/move-document/move-import.d.ts +0 -12
  469. package/schematics/migrations/move-document/move-import.js +0 -61
  470. package/schematics/migrations/native-view-encapsulation/index.d.ts +0 -11
  471. package/schematics/migrations/native-view-encapsulation/index.js +0 -63
  472. package/schematics/migrations/native-view-encapsulation/util.d.ts +0 -11
  473. package/schematics/migrations/native-view-encapsulation/util.js +0 -48
  474. package/schematics/migrations/navigation-extras-omissions/index.d.ts +0 -11
  475. package/schematics/migrations/navigation-extras-omissions/index.js +0 -69
  476. package/schematics/migrations/navigation-extras-omissions/util.d.ts +0 -11
  477. package/schematics/migrations/navigation-extras-omissions/util.js +0 -126
  478. package/schematics/migrations/relative-link-resolution/collector.d.ts +0 -22
  479. package/schematics/migrations/relative-link-resolution/collector.js +0 -95
  480. package/schematics/migrations/relative-link-resolution/index.d.ts +0 -11
  481. package/schematics/migrations/relative-link-resolution/index.js +0 -84
  482. package/schematics/migrations/relative-link-resolution/transform.d.ts +0 -22
  483. package/schematics/migrations/relative-link-resolution/transform.js +0 -65
  484. package/schematics/migrations/relative-link-resolution/update_recorder.d.ts +0 -18
  485. package/schematics/migrations/relative-link-resolution/update_recorder.js +0 -20
  486. package/schematics/migrations/relative-link-resolution/util.d.ts +0 -12
  487. package/schematics/migrations/relative-link-resolution/util.js +0 -43
  488. package/schematics/migrations/renderer-to-renderer2/helpers.d.ts +0 -25
  489. package/schematics/migrations/renderer-to-renderer2/helpers.js +0 -238
  490. package/schematics/migrations/renderer-to-renderer2/index.d.ts +0 -14
  491. package/schematics/migrations/renderer-to-renderer2/index.js +0 -135
  492. package/schematics/migrations/renderer-to-renderer2/migration.d.ts +0 -18
  493. package/schematics/migrations/renderer-to-renderer2/migration.js +0 -225
  494. package/schematics/migrations/renderer-to-renderer2/util.d.ts +0 -18
  495. package/schematics/migrations/renderer-to-renderer2/util.js +0 -83
  496. package/schematics/migrations/router-preserve-query-params/index.d.ts +0 -14
  497. package/schematics/migrations/router-preserve-query-params/index.js +0 -72
  498. package/schematics/migrations/router-preserve-query-params/util.d.ts +0 -11
  499. package/schematics/migrations/router-preserve-query-params/util.js +0 -103
  500. package/schematics/migrations/static-queries/angular/directive_inputs.d.ts +0 -11
  501. package/schematics/migrations/static-queries/angular/directive_inputs.js +0 -84
  502. package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +0 -45
  503. package/schematics/migrations/static-queries/angular/ng_query_visitor.js +0 -127
  504. package/schematics/migrations/static-queries/angular/query-definition.d.ts +0 -37
  505. package/schematics/migrations/static-queries/angular/query-definition.js +0 -33
  506. package/schematics/migrations/static-queries/angular/super_class.d.ts +0 -15
  507. package/schematics/migrations/static-queries/angular/super_class.js +0 -35
  508. package/schematics/migrations/static-queries/index.d.ts +0 -11
  509. package/schematics/migrations/static-queries/index.js +0 -219
  510. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +0 -38
  511. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +0 -214
  512. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.d.ts +0 -24
  513. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.js +0 -38
  514. package/schematics/migrations/static-queries/strategies/timing-strategy.d.ts +0 -19
  515. package/schematics/migrations/static-queries/strategies/timing-strategy.js +0 -20
  516. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +0 -82
  517. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +0 -369
  518. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.d.ts +0 -18
  519. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.js +0 -52
  520. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.d.ts +0 -26
  521. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +0 -94
  522. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +0 -33
  523. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +0 -168
  524. package/schematics/migrations/static-queries/transform.d.ts +0 -21
  525. package/schematics/migrations/static-queries/transform.js +0 -102
  526. package/schematics/migrations/template-var-assignment/analyze_template.d.ts +0 -20
  527. package/schematics/migrations/template-var-assignment/analyze_template.js +0 -39
  528. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.d.ts +0 -27
  529. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +0 -79
  530. package/schematics/migrations/template-var-assignment/index.d.ts +0 -11
  531. package/schematics/migrations/template-var-assignment/index.js +0 -90
  532. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.d.ts +0 -14
  533. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.js +0 -114
  534. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.d.ts +0 -63
  535. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.js +0 -300
  536. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts +0 -19
  537. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.js +0 -20
  538. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.d.ts +0 -18
  539. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.js +0 -57
  540. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.d.ts +0 -18
  541. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.js +0 -97
  542. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.d.ts +0 -39
  543. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.js +0 -116
  544. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.d.ts +0 -37
  545. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.js +0 -126
  546. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.d.ts +0 -10
  547. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.js +0 -31
  548. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.d.ts +0 -16
  549. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.js +0 -65
  550. package/schematics/migrations/undecorated-classes-with-di/index.d.ts +0 -11
  551. package/schematics/migrations/undecorated-classes-with-di/index.js +0 -184
  552. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.d.ts +0 -38
  553. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.js +0 -142
  554. package/schematics/migrations/undecorated-classes-with-di/transform.d.ts +0 -97
  555. package/schematics/migrations/undecorated-classes-with-di/transform.js +0 -370
  556. package/schematics/migrations/undecorated-classes-with-di/update_recorder.d.ts +0 -20
  557. package/schematics/migrations/undecorated-classes-with-di/update_recorder.js +0 -20
  558. package/schematics/migrations/wait-for-async/index.d.ts +0 -11
  559. package/schematics/migrations/wait-for-async/index.js +0 -98
  560. package/schematics/migrations/wait-for-async/util.d.ts +0 -11
  561. package/schematics/migrations/wait-for-async/util.js +0 -37
  562. package/schematics/migrations/xhr-factory/index.d.ts +0 -10
  563. package/schematics/migrations/xhr-factory/index.js +0 -104
  564. package/src/r3_symbols.d.ts +0 -1025
  565. package/testing/testing.metadata.json +0 -1
  566. package/testing.d.ts +0 -7
  567. package/testing.metadata.json +0 -1
@@ -1,225 +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/migration", ["require", "exports", "typescript"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.migrateExpression = void 0;
20
- const ts = require("typescript");
21
- /**
22
- * Migrates a function call expression from `Renderer` to `Renderer2`.
23
- * Returns null if the expression should be dropped.
24
- */
25
- function migrateExpression(node, typeChecker) {
26
- if (isPropertyAccessCallExpression(node)) {
27
- switch (node.expression.name.getText()) {
28
- case 'setElementProperty':
29
- return { node: renameMethodCall(node, 'setProperty') };
30
- case 'setText':
31
- return { node: renameMethodCall(node, 'setValue') };
32
- case 'listenGlobal':
33
- return { node: renameMethodCall(node, 'listen') };
34
- case 'selectRootElement':
35
- return { node: migrateSelectRootElement(node) };
36
- case 'setElementClass':
37
- return { node: migrateSetElementClass(node) };
38
- case 'setElementStyle':
39
- return { node: migrateSetElementStyle(node, typeChecker) };
40
- case 'invokeElementMethod':
41
- return { node: migrateInvokeElementMethod(node) };
42
- case 'setBindingDebugInfo':
43
- return { node: null };
44
- case 'createViewRoot':
45
- return { node: migrateCreateViewRoot(node) };
46
- case 'setElementAttribute':
47
- return {
48
- node: switchToHelperCall(node, "__ngRendererSetElementAttributeHelper" /* setElementAttribute */, node.arguments),
49
- requiredHelpers: [
50
- "AnyDuringRendererMigration" /* any */, "__ngRendererSplitNamespaceHelper" /* splitNamespace */, "__ngRendererSetElementAttributeHelper" /* setElementAttribute */
51
- ]
52
- };
53
- case 'createElement':
54
- return {
55
- node: switchToHelperCall(node, "__ngRendererCreateElementHelper" /* createElement */, node.arguments.slice(0, 2)),
56
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererSplitNamespaceHelper" /* splitNamespace */, "__ngRendererCreateElementHelper" /* createElement */]
57
- };
58
- case 'createText':
59
- return {
60
- node: switchToHelperCall(node, "__ngRendererCreateTextHelper" /* createText */, node.arguments.slice(0, 2)),
61
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererCreateTextHelper" /* createText */]
62
- };
63
- case 'createTemplateAnchor':
64
- return {
65
- node: switchToHelperCall(node, "__ngRendererCreateTemplateAnchorHelper" /* createTemplateAnchor */, node.arguments.slice(0, 1)),
66
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererCreateTemplateAnchorHelper" /* createTemplateAnchor */]
67
- };
68
- case 'projectNodes':
69
- return {
70
- node: switchToHelperCall(node, "__ngRendererProjectNodesHelper" /* projectNodes */, node.arguments),
71
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererProjectNodesHelper" /* projectNodes */]
72
- };
73
- case 'animate':
74
- return {
75
- node: migrateAnimateCall(),
76
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererAnimateHelper" /* animate */]
77
- };
78
- case 'destroyView':
79
- return {
80
- node: switchToHelperCall(node, "__ngRendererDestroyViewHelper" /* destroyView */, [node.arguments[1]]),
81
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererDestroyViewHelper" /* destroyView */]
82
- };
83
- case 'detachView':
84
- return {
85
- node: switchToHelperCall(node, "__ngRendererDetachViewHelper" /* detachView */, [node.arguments[0]]),
86
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererDetachViewHelper" /* detachView */]
87
- };
88
- case 'attachViewAfter':
89
- return {
90
- node: switchToHelperCall(node, "__ngRendererAttachViewAfterHelper" /* attachViewAfter */, node.arguments),
91
- requiredHelpers: ["AnyDuringRendererMigration" /* any */, "__ngRendererAttachViewAfterHelper" /* attachViewAfter */]
92
- };
93
- }
94
- }
95
- return { node };
96
- }
97
- exports.migrateExpression = migrateExpression;
98
- /** Checks whether a node is a PropertyAccessExpression. */
99
- function isPropertyAccessCallExpression(node) {
100
- return ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression);
101
- }
102
- /** Renames a method call while keeping all of the parameters in place. */
103
- function renameMethodCall(node, newName) {
104
- const newExpression = ts.updatePropertyAccess(node.expression, node.expression.expression, ts.createIdentifier(newName));
105
- return ts.updateCall(node, newExpression, node.typeArguments, node.arguments);
106
- }
107
- /**
108
- * Migrates a `selectRootElement` call by removing the last argument which is no longer supported.
109
- */
110
- function migrateSelectRootElement(node) {
111
- // The only thing we need to do is to drop the last argument
112
- // (`debugInfo`), if the consumer was passing it in.
113
- if (node.arguments.length > 1) {
114
- return ts.updateCall(node, node.expression, node.typeArguments, [node.arguments[0]]);
115
- }
116
- return node;
117
- }
118
- /**
119
- * Migrates a call to `setElementClass` either to a call to `addClass` or `removeClass`, or
120
- * to an expression like `isAdd ? addClass(el, className) : removeClass(el, className)`.
121
- */
122
- function migrateSetElementClass(node) {
123
- // Clone so we don't mutate by accident. Note that we assume that
124
- // the user's code is providing all three required arguments.
125
- const outputMethodArgs = node.arguments.slice();
126
- const isAddArgument = outputMethodArgs.pop();
127
- const createRendererCall = (isAdd) => {
128
- const innerExpression = node.expression.expression;
129
- const topExpression = ts.createPropertyAccess(innerExpression, isAdd ? 'addClass' : 'removeClass');
130
- return ts.createCall(topExpression, [], node.arguments.slice(0, 2));
131
- };
132
- // If the call has the `isAdd` argument as a literal boolean, we can map it directly to
133
- // `addClass` or `removeClass`. Note that we can't use the type checker here, because it
134
- // won't tell us whether the value resolves to true or false.
135
- if (isAddArgument.kind === ts.SyntaxKind.TrueKeyword ||
136
- isAddArgument.kind === ts.SyntaxKind.FalseKeyword) {
137
- return createRendererCall(isAddArgument.kind === ts.SyntaxKind.TrueKeyword);
138
- }
139
- // Otherwise create a ternary on the variable.
140
- return ts.createConditional(isAddArgument, createRendererCall(true), createRendererCall(false));
141
- }
142
- /**
143
- * Migrates a call to `setElementStyle` call either to a call to
144
- * `setStyle` or `removeStyle`. or to an expression like
145
- * `value == null ? removeStyle(el, key) : setStyle(el, key, value)`.
146
- */
147
- function migrateSetElementStyle(node, typeChecker) {
148
- const args = node.arguments;
149
- const addMethodName = 'setStyle';
150
- const removeMethodName = 'removeStyle';
151
- const lastArgType = args[2] ?
152
- typeChecker.typeToString(typeChecker.getTypeAtLocation(args[2]), node, ts.TypeFormatFlags.AddUndefined) :
153
- null;
154
- // Note that for a literal null, TS considers it a `NullKeyword`,
155
- // whereas a literal `undefined` is just an Identifier.
156
- if (args.length === 2 || lastArgType === 'null' || lastArgType === 'undefined') {
157
- // If we've got a call with two arguments, or one with three arguments where the last one is
158
- // `undefined` or `null`, we can safely switch to a `removeStyle` call.
159
- const innerExpression = node.expression.expression;
160
- const topExpression = ts.createPropertyAccess(innerExpression, removeMethodName);
161
- return ts.createCall(topExpression, [], args.slice(0, 2));
162
- }
163
- else if (args.length === 3) {
164
- // We need the checks for string literals, because the type of something
165
- // like `"blue"` is the literal `blue`, not `string`.
166
- if (lastArgType === 'string' || lastArgType === 'number' || ts.isStringLiteral(args[2]) ||
167
- ts.isNoSubstitutionTemplateLiteral(args[2]) || ts.isNumericLiteral(args[2])) {
168
- // If we've got three arguments and the last one is a string literal or a number, we
169
- // can safely rename to `setStyle`.
170
- return renameMethodCall(node, addMethodName);
171
- }
172
- else {
173
- // Otherwise migrate to a ternary that looks like:
174
- // `value == null ? removeStyle(el, key) : setStyle(el, key, value)`
175
- const condition = ts.createBinary(args[2], ts.SyntaxKind.EqualsEqualsToken, ts.createNull());
176
- const whenNullCall = renameMethodCall(ts.createCall(node.expression, [], args.slice(0, 2)), removeMethodName);
177
- return ts.createConditional(condition, whenNullCall, renameMethodCall(node, addMethodName));
178
- }
179
- }
180
- return node;
181
- }
182
- /**
183
- * Migrates a call to `invokeElementMethod(target, method, [arg1, arg2])` either to
184
- * `target.method(arg1, arg2)` or `(target as any)[method].apply(target, [arg1, arg2])`.
185
- */
186
- function migrateInvokeElementMethod(node) {
187
- const [target, name, args] = node.arguments;
188
- const isNameStatic = ts.isStringLiteral(name) || ts.isNoSubstitutionTemplateLiteral(name);
189
- const isArgsStatic = !args || ts.isArrayLiteralExpression(args);
190
- if (isNameStatic && isArgsStatic) {
191
- // If the name is a static string and the arguments are an array literal,
192
- // we can safely convert the node into a call expression.
193
- const expression = ts.createPropertyAccess(target, name.text);
194
- const callArguments = args ? args.elements : [];
195
- return ts.createCall(expression, [], callArguments);
196
- }
197
- else {
198
- // Otherwise create an expression in the form of `(target as any)[name].apply(target, args)`.
199
- const asExpression = ts.createParen(ts.createAsExpression(target, ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)));
200
- const elementAccess = ts.createElementAccess(asExpression, name);
201
- const applyExpression = ts.createPropertyAccess(elementAccess, 'apply');
202
- return ts.createCall(applyExpression, [], args ? [target, args] : [target]);
203
- }
204
- }
205
- /** Migrates a call to `createViewRoot` to whatever node was passed in as the first argument. */
206
- function migrateCreateViewRoot(node) {
207
- return node.arguments[0];
208
- }
209
- /** Migrates a call to `migrate` a direct call to the helper. */
210
- function migrateAnimateCall() {
211
- return ts.createCall(ts.createIdentifier("__ngRendererAnimateHelper" /* animate */), [], []);
212
- }
213
- /**
214
- * Switches out a call to the `Renderer` to a call to one of our helper functions.
215
- * Most of the helpers accept an instance of `Renderer2` as the first argument and all
216
- * subsequent arguments differ.
217
- * @param node Node of the original method call.
218
- * @param helper Name of the helper with which to replace the original call.
219
- * @param args Arguments that should be passed into the helper after the renderer argument.
220
- */
221
- function switchToHelperCall(node, helper, args) {
222
- return ts.createCall(ts.createIdentifier(helper), [], [node.expression.expression, ...args]);
223
- }
224
- });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvcmVuZGVyZXItdG8tcmVuZGVyZXIyL21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSCxpQ0FBaUM7SUFPakM7OztPQUdHO0lBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBdUIsRUFBRSxXQUEyQjtRQUVwRixJQUFJLDhCQUE4QixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3RDLEtBQUssb0JBQW9CO29CQUN2QixPQUFPLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFBQyxDQUFDO2dCQUN2RCxLQUFLLFNBQVM7b0JBQ1osT0FBTyxFQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUMsQ0FBQztnQkFDcEQsS0FBSyxjQUFjO29CQUNqQixPQUFPLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNsRCxLQUFLLG1CQUFtQjtvQkFDdEIsT0FBTyxFQUFDLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO2dCQUNoRCxLQUFLLGlCQUFpQjtvQkFDcEIsT0FBTyxFQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO2dCQUM5QyxLQUFLLGlCQUFpQjtvQkFDcEIsT0FBTyxFQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUMsQ0FBQztnQkFDM0QsS0FBSyxxQkFBcUI7b0JBQ3hCLE9B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akUsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RSxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBRUQsZ0dBQWdHO0lBQ2hHLFNBQVMscUJBQXFCLENBQUMsSUFBdUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsU0FBUyxrQkFBa0I7UUFDekIsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsMkNBQXdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxrQkFBa0IsQ0FDdkIsSUFBa0MsRUFBRSxNQUFzQixFQUMxRCxJQUFpRDtRQUNuRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0hlbHBlckZ1bmN0aW9ufSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vKiogQSBjYWxsIGV4cHJlc3Npb24gdGhhdCBpcyBiYXNlZCBvbiBhIHByb3BlcnR5IGFjY2Vzcy4gKi9cbnR5cGUgUHJvcGVydHlBY2Nlc3NDYWxsRXhwcmVzc2lvbiA9IHRzLkNhbGxFeHByZXNzaW9uJntleHByZXNzaW9uOiB0cy5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb259O1xuXG4vKipcbiAqIE1pZ3JhdGVzIGEgZnVuY3Rpb24gY2FsbCBleHByZXNzaW9uIGZyb20gYFJlbmRlcmVyYCB0byBgUmVuZGVyZXIyYC5cbiAqIFJldHVybnMgbnVsbCBpZiB0aGUgZXhwcmVzc2lvbiBzaG91bGQgYmUgZHJvcHBlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVFeHByZXNzaW9uKG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOlxuICAgIHtub2RlOiB0cy5Ob2RlfG51bGwsIHJlcXVpcmVkSGVscGVycz86IEhlbHBlckZ1bmN0aW9uW119IHtcbiAgaWYgKGlzUHJvcGVydHlBY2Nlc3NDYWxsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHN3aXRjaCAobm9kZS5leHByZXNzaW9uLm5hbWUuZ2V0VGV4dCgpKSB7XG4gICAgICBjYXNlICdzZXRFbGVtZW50UHJvcGVydHknOlxuICAgICAgICByZXR1cm4ge25vZGU6IHJlbmFtZU1ldGhvZENhbGwobm9kZSwgJ3NldFByb3BlcnR5Jyl9O1xuICAgICAgY2FzZSAnc2V0VGV4dCc6XG4gICAgICAgIHJldHVybiB7bm9kZTogcmVuYW1lTWV0aG9kQ2FsbChub2RlLCAnc2V0VmFsdWUnKX07XG4gICAgICBjYXNlICdsaXN0ZW5HbG9iYWwnOlxuICAgICAgICByZXR1cm4ge25vZGU6IHJlbmFtZU1ldGhvZENhbGwobm9kZSwgJ2xpc3RlbicpfTtcbiAgICAgIGNhc2UgJ3NlbGVjdFJvb3RFbGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHtub2RlOiBtaWdyYXRlU2VsZWN0Um9vdEVsZW1lbnQobm9kZSl9O1xuICAgICAgY2FzZSAnc2V0RWxlbWVudENsYXNzJzpcbiAgICAgICAgcmV0dXJuIHtub2RlOiBtaWdyYXRlU2V0RWxlbWVudENsYXNzKG5vZGUpfTtcbiAgICAgIGNhc2UgJ3NldEVsZW1lbnRTdHlsZSc6XG4gICAgICAgIHJldHVybiB7bm9kZTogbWlncmF0ZVNldEVsZW1lbnRTdHlsZShub2RlLCB0eXBlQ2hlY2tlcil9O1xuICAgICAgY2FzZSAnaW52b2tlRWxlbWVudE1ldGhvZCc6XG4gICAgICAgIHJldHVybiB7bm9kZTogbWlncmF0ZUludm9rZUVsZW1lbnRNZXRob2Qobm9kZSl9O1xuICAgICAgY2FzZSAnc2V0QmluZGluZ0RlYnVnSW5mbyc6XG4gICAgICAgIHJldHVybiB7bm9kZTogbnVsbH07XG4gICAgICBjYXNlICdjcmVhdGVWaWV3Um9vdCc6XG4gICAgICAgIHJldHVybiB7bm9kZTogbWlncmF0ZUNyZWF0ZVZpZXdSb290KG5vZGUpfTtcbiAgICAgIGNhc2UgJ3NldEVsZW1lbnRBdHRyaWJ1dGUnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IHN3aXRjaFRvSGVscGVyQ2FsbChub2RlLCBIZWxwZXJGdW5jdGlvbi5zZXRFbGVtZW50QXR0cmlidXRlLCBub2RlLmFyZ3VtZW50cyksXG4gICAgICAgICAgcmVxdWlyZWRIZWxwZXJzOiBbXG4gICAgICAgICAgICBIZWxwZXJGdW5jdGlvbi5hbnksIEhlbHBlckZ1bmN0aW9uLnNwbGl0TmFtZXNwYWNlLCBIZWxwZXJGdW5jdGlvbi5zZXRFbGVtZW50QXR0cmlidXRlXG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgY2FzZSAnY3JlYXRlRWxlbWVudCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogc3dpdGNoVG9IZWxwZXJDYWxsKG5vZGUsIEhlbHBlckZ1bmN0aW9uLmNyZWF0ZUVsZW1lbnQsIG5vZGUuYXJndW1lbnRzLnNsaWNlKDAsIDIpKSxcbiAgICAgICAgICByZXF1aXJlZEhlbHBlcnM6XG4gICAgICAgICAgICAgIFtIZWxwZXJGdW5jdGlvbi5hbnksIEhlbHBlckZ1bmN0aW9uLnNwbGl0TmFtZXNwYWNlLCBIZWxwZXJGdW5jdGlvbi5jcmVhdGVFbGVtZW50XVxuICAgICAgICB9O1xuICAgICAgY2FzZSAnY3JlYXRlVGV4dCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogc3dpdGNoVG9IZWxwZXJDYWxsKG5vZGUsIEhlbHBlckZ1bmN0aW9uLmNyZWF0ZVRleHQsIG5vZGUuYXJndW1lbnRzLnNsaWNlKDAsIDIpKSxcbiAgICAgICAgICByZXF1aXJlZEhlbHBlcnM6IFtIZWxwZXJGdW5jdGlvbi5hbnksIEhlbHBlckZ1bmN0aW9uLmNyZWF0ZVRleHRdXG4gICAgICAgIH07XG4gICAgICBjYXNlICdjcmVhdGVUZW1wbGF0ZUFuY2hvcic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogc3dpdGNoVG9IZWxwZXJDYWxsKFxuICAgICAgICAgICAgICBub2RlLCBIZWxwZXJGdW5jdGlvbi5jcmVhdGVUZW1wbGF0ZUFuY2hvciwgbm9kZS5hcmd1bWVudHMuc2xpY2UoMCwgMSkpLFxuICAgICAgICAgIHJlcXVpcmVkSGVscGVyczogW0hlbHBlckZ1bmN0aW9uLmFueSwgSGVscGVyRnVuY3Rpb24uY3JlYXRlVGVtcGxhdGVBbmNob3JdXG4gICAgICAgIH07XG4gICAgICBjYXNlICdwcm9qZWN0Tm9kZXMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IHN3aXRjaFRvSGVscGVyQ2FsbChub2RlLCBIZWxwZXJGdW5jdGlvbi5wcm9qZWN0Tm9kZXMsIG5vZGUuYXJndW1lbnRzKSxcbiAgICAgICAgICByZXF1aXJlZEhlbHBlcnM6IFtIZWxwZXJGdW5jdGlvbi5hbnksIEhlbHBlckZ1bmN0aW9uLnByb2plY3ROb2Rlc11cbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2FuaW1hdGUnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG1pZ3JhdGVBbmltYXRlQ2FsbCgpLFxuICAgICAgICAgIHJlcXVpcmVkSGVscGVyczogW0hlbHBlckZ1bmN0aW9uLmFueSwgSGVscGVyRnVuY3Rpb24uYW5pbWF0ZV1cbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2Rlc3Ryb3lWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBub2RlOiBzd2l0Y2hUb0hlbHBlckNhbGwobm9kZSwgSGVscGVyRnVuY3Rpb24uZGVzdHJveVZpZXcsIFtub2RlLmFyZ3VtZW50c1sxXV0pLFxuICAgICAgICAgIHJlcXVpcmVkSGVscGVyczogW0hlbHBlckZ1bmN0aW9uLmFueSwgSGVscGVyRnVuY3Rpb24uZGVzdHJveVZpZXddXG4gICAgICAgIH07XG4gICAgICBjYXNlICdkZXRhY2hWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBub2RlOiBzd2l0Y2hUb0hlbHBlckNhbGwobm9kZSwgSGVscGVyRnVuY3Rpb24uZGV0YWNoVmlldywgW25vZGUuYXJndW1lbnRzWzBdXSksXG4gICAgICAgICAgcmVxdWlyZWRIZWxwZXJzOiBbSGVscGVyRnVuY3Rpb24uYW55LCBIZWxwZXJGdW5jdGlvbi5kZXRhY2hWaWV3XVxuICAgICAgICB9O1xuICAgICAgY2FzZSAnYXR0YWNoVmlld0FmdGVyJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBub2RlOiBzd2l0Y2hUb0hlbHBlckNhbGwobm9kZSwgSGVscGVyRnVuY3Rpb24uYXR0YWNoVmlld0FmdGVyLCBub2RlLmFyZ3VtZW50cyksXG4gICAgICAgICAgcmVxdWlyZWRIZWxwZXJzOiBbSGVscGVyRnVuY3Rpb24uYW55LCBIZWxwZXJGdW5jdGlvbi5hdHRhY2hWaWV3QWZ0ZXJdXG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtub2RlfTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIGEgbm9kZSBpcyBhIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi4gKi9cbmZ1bmN0aW9uIGlzUHJvcGVydHlBY2Nlc3NDYWxsRXhwcmVzc2lvbihub2RlOiB0cy5Ob2RlKTogbm9kZSBpcyBQcm9wZXJ0eUFjY2Vzc0NhbGxFeHByZXNzaW9uIHtcbiAgcmV0dXJuIHRzLmlzQ2FsbEV4cHJlc3Npb24obm9kZSkgJiYgdHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obm9kZS5leHByZXNzaW9uKTtcbn1cblxuLyoqIFJlbmFtZXMgYSBtZXRob2QgY2FsbCB3aGlsZSBrZWVwaW5nIGFsbCBvZiB0aGUgcGFyYW1ldGVycyBpbiBwbGFjZS4gKi9cbmZ1bmN0aW9uIHJlbmFtZU1ldGhvZENhbGwobm9kZTogUHJvcGVydHlBY2Nlc3NDYWxsRXhwcmVzc2lvbiwgbmV3TmFtZTogc3RyaW5nKTogdHMuQ2FsbEV4cHJlc3Npb24ge1xuICBjb25zdCBuZXdFeHByZXNzaW9uID0gdHMudXBkYXRlUHJvcGVydHlBY2Nlc3MoXG4gICAgICBub2RlLmV4cHJlc3Npb24sIG5vZGUuZXhwcmVzc2lvbi5leHByZXNzaW9uLCB0cy5jcmVhdGVJZGVudGlmaWVyKG5ld05hbWUpKTtcblxuICByZXR1cm4gdHMudXBkYXRlQ2FsbChub2RlLCBuZXdFeHByZXNzaW9uLCBub2RlLnR5cGVBcmd1bWVudHMsIG5vZGUuYXJndW1lbnRzKTtcbn1cblxuLyoqXG4gKiBNaWdyYXRlcyBhIGBzZWxlY3RSb290RWxlbWVudGAgY2FsbCBieSByZW1vdmluZyB0aGUgbGFzdCBhcmd1bWVudCB3aGljaCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLlxuICovXG5mdW5jdGlvbiBtaWdyYXRlU2VsZWN0Um9vdEVsZW1lbnQobm9kZTogdHMuQ2FsbEV4cHJlc3Npb24pOiB0cy5Ob2RlIHtcbiAgLy8gVGhlIG9ubHkgdGhpbmcgd2UgbmVlZCB0byBkbyBpcyB0byBkcm9wIHRoZSBsYXN0IGFyZ3VtZW50XG4gIC8vIChgZGVidWdJbmZvYCksIGlmIHRoZSBjb25zdW1lciB3YXMgcGFzc2luZyBpdCBpbi5cbiAgaWYgKG5vZGUuYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICByZXR1cm4gdHMudXBkYXRlQ2FsbChub2RlLCBub2RlLmV4cHJlc3Npb24sIG5vZGUudHlwZUFyZ3VtZW50cywgW25vZGUuYXJndW1lbnRzWzBdXSk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBNaWdyYXRlcyBhIGNhbGwgdG8gYHNldEVsZW1lbnRDbGFzc2AgZWl0aGVyIHRvIGEgY2FsbCB0byBgYWRkQ2xhc3NgIG9yIGByZW1vdmVDbGFzc2AsIG9yXG4gKiB0byBhbiBleHByZXNzaW9uIGxpa2UgYGlzQWRkID8gYWRkQ2xhc3MoZWwsIGNsYXNzTmFtZSkgOiByZW1vdmVDbGFzcyhlbCwgY2xhc3NOYW1lKWAuXG4gKi9cbmZ1bmN0aW9uIG1pZ3JhdGVTZXRFbGVtZW50Q2xhc3Mobm9kZTogUHJvcGVydHlBY2Nlc3NDYWxsRXhwcmVzc2lvbik6IHRzLk5vZGUge1xuICAvLyBDbG9uZSBzbyB3ZSBkb24ndCBtdXRhdGUgYnkgYWNjaWRlbnQuIE5vdGUgdGhhdCB3ZSBhc3N1bWUgdGhhdFxuICAvLyB0aGUgdXNlcidzIGNvZGUgaXMgcHJvdmlkaW5nIGFsbCB0aHJlZSByZXF1aXJlZCBhcmd1bWVudHMuXG4gIGNvbnN0IG91dHB1dE1ldGhvZEFyZ3MgPSBub2RlLmFyZ3VtZW50cy5zbGljZSgpO1xuICBjb25zdCBpc0FkZEFyZ3VtZW50ID0gb3V0cHV0TWV0aG9kQXJncy5wb3AoKSE7XG4gIGNvbnN0IGNyZWF0ZVJlbmRlcmVyQ2FsbCA9IChpc0FkZDogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGlubmVyRXhwcmVzc2lvbiA9IG5vZGUuZXhwcmVzc2lvbi5leHByZXNzaW9uO1xuICAgIGNvbnN0IHRvcEV4cHJlc3Npb24gPVxuICAgICAgICB0cy5jcmVhdGVQcm9wZXJ0eUFjY2Vzcyhpbm5lckV4cHJlc3Npb24sIGlzQWRkID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcycpO1xuICAgIHJldHVybiB0cy5jcmVhdGVDYWxsKHRvcEV4cHJlc3Npb24sIFtdLCBub2RlLmFyZ3VtZW50cy5zbGljZSgwLCAyKSk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNhbGwgaGFzIHRoZSBgaXNBZGRgIGFyZ3VtZW50IGFzIGEgbGl0ZXJhbCBib29sZWFuLCB3ZSBjYW4gbWFwIGl0IGRpcmVjdGx5IHRvXG4gIC8vIGBhZGRDbGFzc2Agb3IgYHJlbW92ZUNsYXNzYC4gTm90ZSB0aGF0IHdlIGNhbid0IHVzZSB0aGUgdHlwZSBjaGVja2VyIGhlcmUsIGJlY2F1c2UgaXRcbiAgLy8gd29uJ3QgdGVsbCB1cyB3aGV0aGVyIHRoZSB2YWx1ZSByZXNvbHZlcyB0byB0cnVlIG9yIGZhbHNlLlxuICBpZiAoaXNBZGRBcmd1bWVudC5raW5kID09PSB0cy5TeW50YXhLaW5kLlRydWVLZXl3b3JkIHx8XG4gICAgICBpc0FkZEFyZ3VtZW50LmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyQ2FsbChpc0FkZEFyZ3VtZW50LmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQpO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlIGNyZWF0ZSBhIHRlcm5hcnkgb24gdGhlIHZhcmlhYmxlLlxuICByZXR1cm4gdHMuY3JlYXRlQ29uZGl0aW9uYWwoaXNBZGRBcmd1bWVudCwgY3JlYXRlUmVuZGVyZXJDYWxsKHRydWUpLCBjcmVhdGVSZW5kZXJlckNhbGwoZmFsc2UpKTtcbn1cblxuLyoqXG4gKiBNaWdyYXRlcyBhIGNhbGwgdG8gYHNldEVsZW1lbnRTdHlsZWAgY2FsbCBlaXRoZXIgdG8gYSBjYWxsIHRvXG4gKiBgc2V0U3R5bGVgIG9yIGByZW1vdmVTdHlsZWAuIG9yIHRvIGFuIGV4cHJlc3Npb24gbGlrZVxuICogYHZhbHVlID09IG51bGwgPyByZW1vdmVTdHlsZShlbCwga2V5KSA6IHNldFN0eWxlKGVsLCBrZXksIHZhbHVlKWAuXG4gKi9cbmZ1bmN0aW9uIG1pZ3JhdGVTZXRFbGVtZW50U3R5bGUoXG4gICAgbm9kZTogUHJvcGVydHlBY2Nlc3NDYWxsRXhwcmVzc2lvbiwgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyKTogdHMuTm9kZSB7XG4gIGNvbnN0IGFyZ3MgPSBub2RlLmFyZ3VtZW50cztcbiAgY29uc3QgYWRkTWV0aG9kTmFtZSA9ICdzZXRTdHlsZSc7XG4gIGNvbnN0IHJlbW92ZU1ldGhvZE5hbWUgPSAncmVtb3ZlU3R5bGUnO1xuICBjb25zdCBsYXN0QXJnVHlwZSA9IGFyZ3NbMl0gP1xuICAgICAgdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgICAgICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGFyZ3NbMl0pLCBub2RlLCB0cy5UeXBlRm9ybWF0RmxhZ3MuQWRkVW5kZWZpbmVkKSA6XG4gICAgICBudWxsO1xuXG4gIC8vIE5vdGUgdGhhdCBmb3IgYSBsaXRlcmFsIG51bGwsIFRTIGNvbnNpZGVycyBpdCBhIGBOdWxsS2V5d29yZGAsXG4gIC8vIHdoZXJlYXMgYSBsaXRlcmFsIGB1bmRlZmluZWRgIGlzIGp1c3QgYW4gSWRlbnRpZmllci5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAyIHx8IGxhc3RBcmdUeXBlID09PSAnbnVsbCcgfHwgbGFzdEFyZ1R5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgY2FsbCB3aXRoIHR3byBhcmd1bWVudHMsIG9yIG9uZSB3aXRoIHRocmVlIGFyZ3VtZW50cyB3aGVyZSB0aGUgbGFzdCBvbmUgaXNcbiAgICAvLyBgdW5kZWZpbmVkYCBvciBgbnVsbGAsIHdlIGNhbiBzYWZlbHkgc3dpdGNoIHRvIGEgYHJlbW92ZVN0eWxlYCBjYWxsLlxuICAgIGNvbnN0IGlubmVyRXhwcmVzc2lvbiA9IG5vZGUuZXhwcmVzc2lvbi5leHByZXNzaW9uO1xuICAgIGNvbnN0IHRvcEV4cHJlc3Npb24gPSB0cy5jcmVhdGVQcm9wZXJ0eUFjY2Vzcyhpbm5lckV4cHJlc3Npb24sIHJlbW92ZU1ldGhvZE5hbWUpO1xuICAgIHJldHVybiB0cy5jcmVhdGVDYWxsKHRvcEV4cHJlc3Npb24sIFtdLCBhcmdzLnNsaWNlKDAsIDIpKTtcbiAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMykge1xuICAgIC8vIFdlIG5lZWQgdGhlIGNoZWNrcyBmb3Igc3RyaW5nIGxpdGVyYWxzLCBiZWNhdXNlIHRoZSB0eXBlIG9mIHNvbWV0aGluZ1xuICAgIC8vIGxpa2UgYFwiYmx1ZVwiYCBpcyB0aGUgbGl0ZXJhbCBgYmx1ZWAsIG5vdCBgc3RyaW5nYC5cbiAgICBpZiAobGFzdEFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGxhc3RBcmdUeXBlID09PSAnbnVtYmVyJyB8fCB0cy5pc1N0cmluZ0xpdGVyYWwoYXJnc1syXSkgfHxcbiAgICAgICAgdHMuaXNOb1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbChhcmdzWzJdKSB8fCB0cy5pc051bWVyaWNMaXRlcmFsKGFyZ3NbMl0pKSB7XG4gICAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgYXJndW1lbnRzIGFuZCB0aGUgbGFzdCBvbmUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBvciBhIG51bWJlciwgd2VcbiAgICAgIC8vIGNhbiBzYWZlbHkgcmVuYW1lIHRvIGBzZXRTdHlsZWAuXG4gICAgICByZXR1cm4gcmVuYW1lTWV0aG9kQ2FsbChub2RlLCBhZGRNZXRob2ROYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3RoZXJ3aXNlIG1pZ3JhdGUgdG8gYSB0ZXJuYXJ5IHRoYXQgbG9va3MgbGlrZTpcbiAgICAgIC8vIGB2YWx1ZSA9PSBudWxsID8gcmVtb3ZlU3R5bGUoZWwsIGtleSkgOiBzZXRTdHlsZShlbCwga2V5LCB2YWx1ZSlgXG4gICAgICBjb25zdCBjb25kaXRpb24gPSB0cy5jcmVhdGVCaW5hcnkoYXJnc1syXSwgdHMuU3ludGF4S2luZC5FcXVhbHNFcXVhbHNUb2tlbiwgdHMuY3JlYXRlTnVsbCgpKTtcbiAgICAgIGNvbnN0IHdoZW5OdWxsQ2FsbCA9IHJlbmFtZU1ldGhvZENhbGwoXG4gICAgICAgICAgdHMuY3JlYXRlQ2FsbChub2RlLmV4cHJlc3Npb24sIFtdLCBhcmdzLnNsaWNlKDAsIDIpKSBhcyBQcm9wZXJ0eUFjY2Vzc0NhbGxFeHByZXNzaW9uLFxuICAgICAgICAgIHJlbW92ZU1ldGhvZE5hbWUpO1xuICAgICAgcmV0dXJuIHRzLmNyZWF0ZUNvbmRpdGlvbmFsKGNvbmRpdGlvbiwgd2hlbk51bGxDYWxsLCByZW5hbWVNZXRob2RDYWxsKG5vZGUsIGFkZE1ldGhvZE5hbWUpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBNaWdyYXRlcyBhIGNhbGwgdG8gYGludm9rZUVsZW1lbnRNZXRob2QodGFyZ2V0LCBtZXRob2QsIFthcmcxLCBhcmcyXSlgIGVpdGhlciB0b1xuICogYHRhcmdldC5tZXRob2QoYXJnMSwgYXJnMilgIG9yIGAodGFyZ2V0IGFzIGFueSlbbWV0aG9kXS5hcHBseSh0YXJnZXQsIFthcmcxLCBhcmcyXSlgLlxuICovXG5mdW5jdGlvbiBtaWdyYXRlSW52b2tlRWxlbWVudE1ldGhvZChub2RlOiB0cy5DYWxsRXhwcmVzc2lvbik6IHRzLk5vZGUge1xuICBjb25zdCBbdGFyZ2V0LCBuYW1lLCBhcmdzXSA9IG5vZGUuYXJndW1lbnRzO1xuICBjb25zdCBpc05hbWVTdGF0aWMgPSB0cy5pc1N0cmluZ0xpdGVyYWwobmFtZSkgfHwgdHMuaXNOb1N1YnN0aXR1dGlvblRlbXBsYXRlTGl0ZXJhbChuYW1lKTtcbiAgY29uc3QgaXNBcmdzU3RhdGljID0gIWFyZ3MgfHwgdHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKGFyZ3MpO1xuXG4gIGlmIChpc05hbWVTdGF0aWMgJiYgaXNBcmdzU3RhdGljKSB7XG4gICAgLy8gSWYgdGhlIG5hbWUgaXMgYSBzdGF0aWMgc3RyaW5nIGFuZCB0aGUgYXJndW1lbnRzIGFyZSBhbiBhcnJheSBsaXRlcmFsLFxuICAgIC8vIHdlIGNhbiBzYWZlbHkgY29udmVydCB0aGUgbm9kZSBpbnRvIGEgY2FsbCBleHByZXNzaW9uLlxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhcbiAgICAgICAgdGFyZ2V0LCAobmFtZSBhcyB0cy5TdHJpbmdMaXRlcmFsIHwgdHMuTm9TdWJzdGl0dXRpb25UZW1wbGF0ZUxpdGVyYWwpLnRleHQpO1xuICAgIGNvbnN0IGNhbGxBcmd1bWVudHMgPSBhcmdzID8gKGFyZ3MgYXMgdHMuQXJyYXlMaXRlcmFsRXhwcmVzc2lvbikuZWxlbWVudHMgOiBbXTtcbiAgICByZXR1cm4gdHMuY3JlYXRlQ2FsbChleHByZXNzaW9uLCBbXSwgY2FsbEFyZ3VtZW50cyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlIGNyZWF0ZSBhbiBleHByZXNzaW9uIGluIHRoZSBmb3JtIG9mIGAodGFyZ2V0IGFzIGFueSlbbmFtZV0uYXBwbHkodGFyZ2V0LCBhcmdzKWAuXG4gICAgY29uc3QgYXNFeHByZXNzaW9uID0gdHMuY3JlYXRlUGFyZW4oXG4gICAgICAgIHRzLmNyZWF0ZUFzRXhwcmVzc2lvbih0YXJnZXQsIHRzLmNyZWF0ZUtleXdvcmRUeXBlTm9kZSh0cy5TeW50YXhLaW5kLkFueUtleXdvcmQpKSk7XG4gICAgY29uc3QgZWxlbWVudEFjY2VzcyA9IHRzLmNyZWF0ZUVsZW1lbnRBY2Nlc3MoYXNFeHByZXNzaW9uLCBuYW1lKTtcbiAgICBjb25zdCBhcHBseUV4cHJlc3Npb24gPSB0cy5jcmVhdGVQcm9wZXJ0eUFjY2VzcyhlbGVtZW50QWNjZXNzLCAnYXBwbHknKTtcbiAgICByZXR1cm4gdHMuY3JlYXRlQ2FsbChhcHBseUV4cHJlc3Npb24sIFtdLCBhcmdzID8gW3RhcmdldCwgYXJnc10gOiBbdGFyZ2V0XSk7XG4gIH1cbn1cblxuLyoqIE1pZ3JhdGVzIGEgY2FsbCB0byBgY3JlYXRlVmlld1Jvb3RgIHRvIHdoYXRldmVyIG5vZGUgd2FzIHBhc3NlZCBpbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuICovXG5mdW5jdGlvbiBtaWdyYXRlQ3JlYXRlVmlld1Jvb3Qobm9kZTogdHMuQ2FsbEV4cHJlc3Npb24pOiB0cy5Ob2RlIHtcbiAgcmV0dXJuIG5vZGUuYXJndW1lbnRzWzBdO1xufVxuXG4vKiogTWlncmF0ZXMgYSBjYWxsIHRvIGBtaWdyYXRlYCBhIGRpcmVjdCBjYWxsIHRvIHRoZSBoZWxwZXIuICovXG5mdW5jdGlvbiBtaWdyYXRlQW5pbWF0ZUNhbGwoKSB7XG4gIHJldHVybiB0cy5jcmVhdGVDYWxsKHRzLmNyZWF0ZUlkZW50aWZpZXIoSGVscGVyRnVuY3Rpb24uYW5pbWF0ZSksIFtdLCBbXSk7XG59XG5cbi8qKlxuICogU3dpdGNoZXMgb3V0IGEgY2FsbCB0byB0aGUgYFJlbmRlcmVyYCB0byBhIGNhbGwgdG8gb25lIG9mIG91ciBoZWxwZXIgZnVuY3Rpb25zLlxuICogTW9zdCBvZiB0aGUgaGVscGVycyBhY2NlcHQgYW4gaW5zdGFuY2Ugb2YgYFJlbmRlcmVyMmAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBhbGxcbiAqIHN1YnNlcXVlbnQgYXJndW1lbnRzIGRpZmZlci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgb2YgdGhlIG9yaWdpbmFsIG1ldGhvZCBjYWxsLlxuICogQHBhcmFtIGhlbHBlciBOYW1lIG9mIHRoZSBoZWxwZXIgd2l0aCB3aGljaCB0byByZXBsYWNlIHRoZSBvcmlnaW5hbCBjYWxsLlxuICogQHBhcmFtIGFyZ3MgQXJndW1lbnRzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCBpbnRvIHRoZSBoZWxwZXIgYWZ0ZXIgdGhlIHJlbmRlcmVyIGFyZ3VtZW50LlxuICovXG5mdW5jdGlvbiBzd2l0Y2hUb0hlbHBlckNhbGwoXG4gICAgbm9kZTogUHJvcGVydHlBY2Nlc3NDYWxsRXhwcmVzc2lvbiwgaGVscGVyOiBIZWxwZXJGdW5jdGlvbixcbiAgICBhcmdzOiB0cy5FeHByZXNzaW9uW118dHMuTm9kZUFycmF5PHRzLkV4cHJlc3Npb24+KTogdHMuTm9kZSB7XG4gIHJldHVybiB0cy5jcmVhdGVDYWxsKHRzLmNyZWF0ZUlkZW50aWZpZXIoaGVscGVyKSwgW10sIFtub2RlLmV4cHJlc3Npb24uZXhwcmVzc2lvbiwgLi4uYXJnc10pO1xufVxuIl19
@@ -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/util" />
9
- import * as ts from 'typescript';
10
- /**
11
- * Finds typed nodes (e.g. function parameters or class properties) that are referencing the old
12
- * `Renderer`, as well as calls to the `Renderer` methods.
13
- */
14
- export declare function findRendererReferences(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker, rendererImportSpecifier: ts.ImportSpecifier): {
15
- typedNodes: Set<ts.ParameterDeclaration | ts.AsExpression | ts.PropertyDeclaration>;
16
- methodCalls: Set<ts.CallExpression>;
17
- forwardRefs: Set<ts.Identifier>;
18
- };
@@ -1,83 +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/util", ["require", "exports", "typescript", "@angular/core/schematics/utils/typescript/imports", "@angular/core/schematics/utils/typescript/symbol"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.findRendererReferences = void 0;
20
- const ts = require("typescript");
21
- const imports_1 = require("@angular/core/schematics/utils/typescript/imports");
22
- const symbol_1 = require("@angular/core/schematics/utils/typescript/symbol");
23
- /**
24
- * Finds typed nodes (e.g. function parameters or class properties) that are referencing the old
25
- * `Renderer`, as well as calls to the `Renderer` methods.
26
- */
27
- function findRendererReferences(sourceFile, typeChecker, rendererImportSpecifier) {
28
- const typedNodes = new Set();
29
- const methodCalls = new Set();
30
- const forwardRefs = new Set();
31
- const forwardRefSpecifier = (0, imports_1.getImportSpecifier)(sourceFile, '@angular/core', 'forwardRef');
32
- ts.forEachChild(sourceFile, function visitNode(node) {
33
- if ((ts.isParameter(node) || ts.isPropertyDeclaration(node)) &&
34
- (0, symbol_1.isReferenceToImport)(typeChecker, node.name, rendererImportSpecifier)) {
35
- typedNodes.add(node);
36
- }
37
- else if (ts.isAsExpression(node) &&
38
- (0, symbol_1.isReferenceToImport)(typeChecker, node.type, rendererImportSpecifier)) {
39
- typedNodes.add(node);
40
- }
41
- else if (ts.isCallExpression(node)) {
42
- if (ts.isPropertyAccessExpression(node.expression) &&
43
- (0, symbol_1.isReferenceToImport)(typeChecker, node.expression.expression, rendererImportSpecifier)) {
44
- methodCalls.add(node);
45
- }
46
- else if (
47
- // If we're dealing with a forwardRef that's returning a Renderer.
48
- forwardRefSpecifier && ts.isIdentifier(node.expression) &&
49
- (0, symbol_1.isReferenceToImport)(typeChecker, node.expression, forwardRefSpecifier) &&
50
- node.arguments.length) {
51
- const rendererIdentifier = findRendererIdentifierInForwardRef(typeChecker, node, rendererImportSpecifier);
52
- if (rendererIdentifier) {
53
- forwardRefs.add(rendererIdentifier);
54
- }
55
- }
56
- }
57
- ts.forEachChild(node, visitNode);
58
- });
59
- return { typedNodes, methodCalls, forwardRefs };
60
- }
61
- exports.findRendererReferences = findRendererReferences;
62
- /** Finds the identifier referring to the `Renderer` inside a `forwardRef` call expression. */
63
- function findRendererIdentifierInForwardRef(typeChecker, node, rendererImport) {
64
- const firstArg = node.arguments[0];
65
- if (ts.isArrowFunction(firstArg) && rendererImport) {
66
- // Check if the function is `forwardRef(() => Renderer)`.
67
- if (ts.isIdentifier(firstArg.body) &&
68
- (0, symbol_1.isReferenceToImport)(typeChecker, firstArg.body, rendererImport)) {
69
- return firstArg.body;
70
- }
71
- else if (ts.isBlock(firstArg.body) && ts.isReturnStatement(firstArg.body.statements[0])) {
72
- // Otherwise check if the expression is `forwardRef(() => { return Renderer })`.
73
- const returnStatement = firstArg.body.statements[0];
74
- if (returnStatement.expression && ts.isIdentifier(returnStatement.expression) &&
75
- (0, symbol_1.isReferenceToImport)(typeChecker, returnStatement.expression, rendererImport)) {
76
- return returnStatement.expression;
77
- }
78
- }
79
- }
80
- return null;
81
- }
82
- });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JlbmRlcmVyLXRvLXJlbmRlcmVyMi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILGlDQUFpQztJQUVqQywrRUFBa0U7SUFDbEUsNkVBQWtFO0lBRWxFOzs7T0FHRztJQUNILFNBQWdCLHNCQUFzQixDQUNsQyxVQUF5QixFQUFFLFdBQTJCLEVBQ3RELHVCQUEyQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBa0UsQ0FBQztRQUM3RixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUM3QyxNQUFNLG1CQUFtQixHQUFHLElBQUEsNEJBQWtCLEVBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUxRixFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxTQUFTLFNBQVMsQ0FBQyxJQUFhO1lBQzFELElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEQsSUFBQSw0QkFBbUIsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxFQUFFO2dCQUN4RSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RCO2lCQUFNLElBQ0gsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUEsNEJBQW1CLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsRUFBRTtnQkFDeEUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QjtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxFQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDOUMsSUFBQSw0QkFBbUIsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsdUJBQXVCLENBQUMsRUFBRTtvQkFDekYsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdkI7cUJBQU07Z0JBQ0gsa0VBQWtFO2dCQUNsRSxtQkFBbUIsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQ3ZELElBQUEsNEJBQW1CLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO29CQUN6QixNQUFNLGtCQUFrQixHQUNwQixrQ0FBa0MsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixDQUFDLENBQUM7b0JBQ25GLElBQUksa0JBQWtCLEVBQUU7d0JBQ3RCLFdBQVcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztxQkFDckM7aUJBQ0Y7YUFDRjtZQUVELEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDLENBQUM7SUFDaEQsQ0FBQztJQXJDRCx3REFxQ0M7SUFFRCw4RkFBOEY7SUFDOUYsU0FBUyxrQ0FBa0MsQ0FDdkMsV0FBMkIsRUFBRSxJQUF1QixFQUNwRCxjQUF1QztRQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5DLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLEVBQUU7WUFDbEQseURBQXlEO1lBQ3pELElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUM5QixJQUFBLDRCQUFtQixFQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDdEI7aUJBQU0sSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDekYsZ0ZBQWdGO2dCQUNoRixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQXVCLENBQUM7Z0JBRTFFLElBQUksZUFBZSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7b0JBQ3pFLElBQUEsNEJBQW1CLEVBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEVBQUU7b0JBQ2hGLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQztpQkFDbkM7YUFDRjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldEltcG9ydFNwZWNpZmllcn0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9pbXBvcnRzJztcbmltcG9ydCB7aXNSZWZlcmVuY2VUb0ltcG9ydH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9zeW1ib2wnO1xuXG4vKipcbiAqIEZpbmRzIHR5cGVkIG5vZGVzIChlLmcuIGZ1bmN0aW9uIHBhcmFtZXRlcnMgb3IgY2xhc3MgcHJvcGVydGllcykgdGhhdCBhcmUgcmVmZXJlbmNpbmcgdGhlIG9sZFxuICogYFJlbmRlcmVyYCwgYXMgd2VsbCBhcyBjYWxscyB0byB0aGUgYFJlbmRlcmVyYCBtZXRob2RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJlbmRlcmVyUmVmZXJlbmNlcyhcbiAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgcmVuZGVyZXJJbXBvcnRTcGVjaWZpZXI6IHRzLkltcG9ydFNwZWNpZmllcikge1xuICBjb25zdCB0eXBlZE5vZGVzID0gbmV3IFNldDx0cy5QYXJhbWV0ZXJEZWNsYXJhdGlvbnx0cy5Qcm9wZXJ0eURlY2xhcmF0aW9ufHRzLkFzRXhwcmVzc2lvbj4oKTtcbiAgY29uc3QgbWV0aG9kQ2FsbHMgPSBuZXcgU2V0PHRzLkNhbGxFeHByZXNzaW9uPigpO1xuICBjb25zdCBmb3J3YXJkUmVmcyA9IG5ldyBTZXQ8dHMuSWRlbnRpZmllcj4oKTtcbiAgY29uc3QgZm9yd2FyZFJlZlNwZWNpZmllciA9IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCAnQGFuZ3VsYXIvY29yZScsICdmb3J3YXJkUmVmJyk7XG5cbiAgdHMuZm9yRWFjaENoaWxkKHNvdXJjZUZpbGUsIGZ1bmN0aW9uIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKSB7XG4gICAgaWYgKCh0cy5pc1BhcmFtZXRlcihub2RlKSB8fCB0cy5pc1Byb3BlcnR5RGVjbGFyYXRpb24obm9kZSkpICYmXG4gICAgICAgIGlzUmVmZXJlbmNlVG9JbXBvcnQodHlwZUNoZWNrZXIsIG5vZGUubmFtZSwgcmVuZGVyZXJJbXBvcnRTcGVjaWZpZXIpKSB7XG4gICAgICB0eXBlZE5vZGVzLmFkZChub2RlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0cy5pc0FzRXhwcmVzc2lvbihub2RlKSAmJlxuICAgICAgICBpc1JlZmVyZW5jZVRvSW1wb3J0KHR5cGVDaGVja2VyLCBub2RlLnR5cGUsIHJlbmRlcmVySW1wb3J0U3BlY2lmaWVyKSkge1xuICAgICAgdHlwZWROb2Rlcy5hZGQobm9kZSk7XG4gICAgfSBlbHNlIGlmICh0cy5pc0NhbGxFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICBpZiAodHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obm9kZS5leHByZXNzaW9uKSAmJlxuICAgICAgICAgIGlzUmVmZXJlbmNlVG9JbXBvcnQodHlwZUNoZWNrZXIsIG5vZGUuZXhwcmVzc2lvbi5leHByZXNzaW9uLCByZW5kZXJlckltcG9ydFNwZWNpZmllcikpIHtcbiAgICAgICAgbWV0aG9kQ2FsbHMuYWRkKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAvLyBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmb3J3YXJkUmVmIHRoYXQncyByZXR1cm5pbmcgYSBSZW5kZXJlci5cbiAgICAgICAgICBmb3J3YXJkUmVmU3BlY2lmaWVyICYmIHRzLmlzSWRlbnRpZmllcihub2RlLmV4cHJlc3Npb24pICYmXG4gICAgICAgICAgaXNSZWZlcmVuY2VUb0ltcG9ydCh0eXBlQ2hlY2tlciwgbm9kZS5leHByZXNzaW9uLCBmb3J3YXJkUmVmU3BlY2lmaWVyKSAmJlxuICAgICAgICAgIG5vZGUuYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByZW5kZXJlcklkZW50aWZpZXIgPVxuICAgICAgICAgICAgZmluZFJlbmRlcmVySWRlbnRpZmllckluRm9yd2FyZFJlZih0eXBlQ2hlY2tlciwgbm9kZSwgcmVuZGVyZXJJbXBvcnRTcGVjaWZpZXIpO1xuICAgICAgICBpZiAocmVuZGVyZXJJZGVudGlmaWVyKSB7XG4gICAgICAgICAgZm9yd2FyZFJlZnMuYWRkKHJlbmRlcmVySWRlbnRpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgdmlzaXROb2RlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHt0eXBlZE5vZGVzLCBtZXRob2RDYWxscywgZm9yd2FyZFJlZnN9O1xufVxuXG4vKiogRmluZHMgdGhlIGlkZW50aWZpZXIgcmVmZXJyaW5nIHRvIHRoZSBgUmVuZGVyZXJgIGluc2lkZSBhIGBmb3J3YXJkUmVmYCBjYWxsIGV4cHJlc3Npb24uICovXG5mdW5jdGlvbiBmaW5kUmVuZGVyZXJJZGVudGlmaWVySW5Gb3J3YXJkUmVmKFxuICAgIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlciwgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24sXG4gICAgcmVuZGVyZXJJbXBvcnQ6IHRzLkltcG9ydFNwZWNpZmllcnxudWxsKTogdHMuSWRlbnRpZmllcnxudWxsIHtcbiAgY29uc3QgZmlyc3RBcmcgPSBub2RlLmFyZ3VtZW50c1swXTtcblxuICBpZiAodHMuaXNBcnJvd0Z1bmN0aW9uKGZpcnN0QXJnKSAmJiByZW5kZXJlckltcG9ydCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBmdW5jdGlvbiBpcyBgZm9yd2FyZFJlZigoKSA9PiBSZW5kZXJlcilgLlxuICAgIGlmICh0cy5pc0lkZW50aWZpZXIoZmlyc3RBcmcuYm9keSkgJiZcbiAgICAgICAgaXNSZWZlcmVuY2VUb0ltcG9ydCh0eXBlQ2hlY2tlciwgZmlyc3RBcmcuYm9keSwgcmVuZGVyZXJJbXBvcnQpKSB7XG4gICAgICByZXR1cm4gZmlyc3RBcmcuYm9keTtcbiAgICB9IGVsc2UgaWYgKHRzLmlzQmxvY2soZmlyc3RBcmcuYm9keSkgJiYgdHMuaXNSZXR1cm5TdGF0ZW1lbnQoZmlyc3RBcmcuYm9keS5zdGF0ZW1lbnRzWzBdKSkge1xuICAgICAgLy8gT3RoZXJ3aXNlIGNoZWNrIGlmIHRoZSBleHByZXNzaW9uIGlzIGBmb3J3YXJkUmVmKCgpID0+IHsgcmV0dXJuIFJlbmRlcmVyIH0pYC5cbiAgICAgIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IGZpcnN0QXJnLmJvZHkuc3RhdGVtZW50c1swXSBhcyB0cy5SZXR1cm5TdGF0ZW1lbnQ7XG5cbiAgICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQuZXhwcmVzc2lvbiAmJiB0cy5pc0lkZW50aWZpZXIocmV0dXJuU3RhdGVtZW50LmV4cHJlc3Npb24pICYmXG4gICAgICAgICAgaXNSZWZlcmVuY2VUb0ltcG9ydCh0eXBlQ2hlY2tlciwgcmV0dXJuU3RhdGVtZW50LmV4cHJlc3Npb24sIHJlbmRlcmVySW1wb3J0KSkge1xuICAgICAgICByZXR1cm4gcmV0dXJuU3RhdGVtZW50LmV4cHJlc3Npb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
@@ -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/router-preserve-query-params" />
9
- import { Rule } from '@angular-devkit/schematics';
10
- /**
11
- * Migration that switches `NavigationExtras.preserveQueryParams` to set the coresponding value via
12
- * `NavigationExtras`'s `queryParamsHandling` attribute.
13
- */
14
- export default function (): Rule;
@@ -1,72 +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/router-preserve-query-params", ["require", "exports", "@angular-devkit/schematics", "path", "typescript", "@angular/core/schematics/utils/project_tsconfig_paths", "@angular/core/schematics/utils/typescript/compiler_host", "@angular/core/schematics/migrations/router-preserve-query-params/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 util_1 = require("@angular/core/schematics/migrations/router-preserve-query-params/util");
34
- /**
35
- * Migration that switches `NavigationExtras.preserveQueryParams` to set the coresponding value via
36
- * `NavigationExtras`'s `queryParamsHandling` attribute.
37
- */
38
- function default_1() {
39
- return (tree) => __awaiter(this, void 0, void 0, function* () {
40
- const { buildPaths, testPaths } = yield (0, project_tsconfig_paths_1.getProjectTsConfigPaths)(tree);
41
- const basePath = process.cwd();
42
- const allPaths = [...buildPaths, ...testPaths];
43
- if (!allPaths.length) {
44
- throw new schematics_1.SchematicsException('Could not find any tsconfig file. Cannot migrate ' +
45
- 'NavigationExtras.preserveQueryParams usages.');
46
- }
47
- for (const tsconfigPath of allPaths) {
48
- runPreserveQueryParamsMigration(tree, tsconfigPath, basePath);
49
- }
50
- });
51
- }
52
- exports.default = default_1;
53
- function runPreserveQueryParamsMigration(tree, tsconfigPath, basePath) {
54
- const { program } = (0, compiler_host_1.createMigrationProgram)(tree, tsconfigPath, basePath);
55
- const typeChecker = program.getTypeChecker();
56
- const printer = ts.createPrinter();
57
- const sourceFiles = program.getSourceFiles().filter(sourceFile => (0, compiler_host_1.canMigrateFile)(basePath, sourceFile, program));
58
- sourceFiles.forEach(sourceFile => {
59
- const literalsToMigrate = (0, util_1.findLiteralsToMigrate)(sourceFile, typeChecker);
60
- const update = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
61
- literalsToMigrate.forEach((instances, methodName) => instances.forEach(instance => {
62
- const migratedNode = (0, util_1.migrateLiteral)(methodName, instance);
63
- if (migratedNode !== instance) {
64
- update.remove(instance.getStart(), instance.getWidth());
65
- update.insertRight(instance.getStart(), printer.printNode(ts.EmitHint.Unspecified, migratedNode, sourceFile));
66
- }
67
- }));
68
- tree.commitUpdate(update);
69
- });
70
- }
71
- });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9yb3V0ZXItcHJlc2VydmUtcXVlcnktcGFyYW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsMkRBQTJFO0lBQzNFLCtCQUE4QjtJQUM5QixpQ0FBaUM7SUFFakMsa0dBQTJFO0lBQzNFLDJGQUE0RjtJQUM1RixnR0FBNkQ7SUFHN0Q7OztPQUdHO0lBQ0g7UUFDRSxPQUFPLENBQU8sSUFBVSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsR0FBRyxNQUFNLElBQUEsZ0RBQXVCLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUUvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsTUFBTSxJQUFJLGdDQUFtQixDQUN6QixtREFBbUQ7b0JBQ25ELDhDQUE4QyxDQUFDLENBQUM7YUFDckQ7WUFFRCxLQUFLLE1BQU0sWUFBWSxJQUFJLFFBQVEsRUFBRTtnQkFDbkMsK0JBQStCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQzthQUMvRDtRQUNILENBQUMsQ0FBQSxDQUFDO0lBQ0osQ0FBQztJQWhCRCw0QkFnQkM7SUFFRCxTQUFTLCtCQUErQixDQUFDLElBQVUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ3pGLE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxJQUFBLHNDQUFzQixFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FDYixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBQSw4QkFBYyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVqRyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQy9CLE1BQU0saUJBQWlCLEdBQUcsSUFBQSw0QkFBcUIsRUFBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDekUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGVBQVEsRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFekUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDaEYsTUFBTSxZQUFZLEdBQUcsSUFBQSxxQkFBYyxFQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFFMUQsSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFO29CQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDeEQsTUFBTSxDQUFDLFdBQVcsQ0FDZCxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7aUJBQzNFO1lBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVKLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZSwgU2NoZW1hdGljc0V4Y2VwdGlvbiwgVHJlZX0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtnZXRQcm9qZWN0VHNDb25maWdQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvcHJvamVjdF90c2NvbmZpZ19wYXRocyc7XG5pbXBvcnQge2Nhbk1pZ3JhdGVGaWxlLCBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2NvbXBpbGVyX2hvc3QnO1xuaW1wb3J0IHtmaW5kTGl0ZXJhbHNUb01pZ3JhdGUsIG1pZ3JhdGVMaXRlcmFsfSBmcm9tICcuL3V0aWwnO1xuXG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgc3dpdGNoZXMgYE5hdmlnYXRpb25FeHRyYXMucHJlc2VydmVRdWVyeVBhcmFtc2AgdG8gc2V0IHRoZSBjb3Jlc3BvbmRpbmcgdmFsdWUgdmlhXG4gKiBgTmF2aWdhdGlvbkV4dHJhc2AncyBgcXVlcnlQYXJhbXNIYW5kbGluZ2AgYXR0cmlidXRlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpOiBSdWxlIHtcbiAgcmV0dXJuIGFzeW5jICh0cmVlOiBUcmVlKSA9PiB7XG4gICAgY29uc3Qge2J1aWxkUGF0aHMsIHRlc3RQYXRoc30gPSBhd2FpdCBnZXRQcm9qZWN0VHNDb25maWdQYXRocyh0cmVlKTtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgYWxsUGF0aHMgPSBbLi4uYnVpbGRQYXRocywgLi4udGVzdFBhdGhzXTtcblxuICAgIGlmICghYWxsUGF0aHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYW55IHRzY29uZmlnIGZpbGUuIENhbm5vdCBtaWdyYXRlICcgK1xuICAgICAgICAgICdOYXZpZ2F0aW9uRXh0cmFzLnByZXNlcnZlUXVlcnlQYXJhbXMgdXNhZ2VzLicpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHNjb25maWdQYXRoIG9mIGFsbFBhdGhzKSB7XG4gICAgICBydW5QcmVzZXJ2ZVF1ZXJ5UGFyYW1zTWlncmF0aW9uKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcnVuUHJlc2VydmVRdWVyeVBhcmFtc01pZ3JhdGlvbih0cmVlOiBUcmVlLCB0c2NvbmZpZ1BhdGg6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZykge1xuICBjb25zdCB7cHJvZ3JhbX0gPSBjcmVhdGVNaWdyYXRpb25Qcm9ncmFtKHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgpO1xuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoKTtcbiAgY29uc3Qgc291cmNlRmlsZXMgPVxuICAgICAgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpLmZpbHRlcihzb3VyY2VGaWxlID0+IGNhbk1pZ3JhdGVGaWxlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLCBwcm9ncmFtKSk7XG5cbiAgc291cmNlRmlsZXMuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICBjb25zdCBsaXRlcmFsc1RvTWlncmF0ZSA9IGZpbmRMaXRlcmFsc1RvTWlncmF0ZShzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlcik7XG4gICAgY29uc3QgdXBkYXRlID0gdHJlZS5iZWdpblVwZGF0ZShyZWxhdGl2ZShiYXNlUGF0aCwgc291cmNlRmlsZS5maWxlTmFtZSkpO1xuXG4gICAgbGl0ZXJhbHNUb01pZ3JhdGUuZm9yRWFjaCgoaW5zdGFuY2VzLCBtZXRob2ROYW1lKSA9PiBpbnN0YW5jZXMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICBjb25zdCBtaWdyYXRlZE5vZGUgPSBtaWdyYXRlTGl0ZXJhbChtZXRob2ROYW1lLCBpbnN0YW5jZSk7XG5cbiAgICAgIGlmIChtaWdyYXRlZE5vZGUgIT09IGluc3RhbmNlKSB7XG4gICAgICAgIHVwZGF0ZS5yZW1vdmUoaW5zdGFuY2UuZ2V0U3RhcnQoKSwgaW5zdGFuY2UuZ2V0V2lkdGgoKSk7XG4gICAgICAgIHVwZGF0ZS5pbnNlcnRSaWdodChcbiAgICAgICAgICAgIGluc3RhbmNlLmdldFN0YXJ0KCksXG4gICAgICAgICAgICBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgbWlncmF0ZWROb2RlLCBzb3VyY2VGaWxlKSk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdHJlZS5jb21taXRVcGRhdGUodXBkYXRlKTtcbiAgfSk7XG59XG4iXX0=
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /// <amd-module name="@angular/core/schematics/migrations/router-preserve-query-params/util" />
9
- import * as ts from 'typescript';
10
- export declare function migrateLiteral(methodName: string, node: ts.ObjectLiteralExpression): ts.ObjectLiteralExpression;
11
- export declare function findLiteralsToMigrate(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker): Map<string, Set<ts.ObjectLiteralExpression>>;
@@ -1,103 +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/router-preserve-query-params/util", ["require", "exports", "typescript", "@angular/core/schematics/utils/typescript/imports", "@angular/core/schematics/utils/typescript/symbol"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.findLiteralsToMigrate = exports.migrateLiteral = void 0;
20
- const ts = require("typescript");
21
- const imports_1 = require("@angular/core/schematics/utils/typescript/imports");
22
- const symbol_1 = require("@angular/core/schematics/utils/typescript/symbol");
23
- /**
24
- * Configures the methods that the migration should be looking for
25
- * and the properties from `NavigationExtras` that should be preserved.
26
- */
27
- const methodConfig = new Set(['navigate', 'createUrlTree']);
28
- const preserveQueryParamsKey = 'preserveQueryParams';
29
- function migrateLiteral(methodName, node) {
30
- var _a;
31
- const isMigratableMethod = methodConfig.has(methodName);
32
- if (!isMigratableMethod) {
33
- throw Error(`Attempting to migrate unconfigured method called ${methodName}.`);
34
- }
35
- const propertiesToKeep = [];
36
- let propertyToMigrate = undefined;
37
- for (const property of node.properties) {
38
- // Only look for regular and shorthand property assignments since resolving things
39
- // like spread operators becomes too complicated for this migration.
40
- if ((ts.isPropertyAssignment(property) || ts.isShorthandPropertyAssignment(property)) &&
41
- (ts.isStringLiteralLike(property.name) || ts.isNumericLiteral(property.name) ||
42
- ts.isIdentifier(property.name)) &&
43
- (property.name.text === preserveQueryParamsKey)) {
44
- propertyToMigrate = property;
45
- continue;
46
- }
47
- propertiesToKeep.push(property);
48
- }
49
- // Don't modify the node if there's nothing to migrate.
50
- if (propertyToMigrate === undefined) {
51
- return node;
52
- }
53
- if ((ts.isShorthandPropertyAssignment(propertyToMigrate) &&
54
- ((_a = propertyToMigrate.objectAssignmentInitializer) === null || _a === void 0 ? void 0 : _a.kind) === ts.SyntaxKind.TrueKeyword) ||
55
- (ts.isPropertyAssignment(propertyToMigrate) &&
56
- propertyToMigrate.initializer.kind === ts.SyntaxKind.TrueKeyword)) {
57
- return ts.updateObjectLiteral(node, propertiesToKeep.concat(ts.createPropertyAssignment('queryParamsHandling', ts.createIdentifier(`'preserve'`))));
58
- }
59
- return ts.updateObjectLiteral(node, propertiesToKeep);
60
- }
61
- exports.migrateLiteral = migrateLiteral;
62
- function findLiteralsToMigrate(sourceFile, typeChecker) {
63
- const results = new Map(Array.from(methodConfig.keys(), key => [key, new Set()]));
64
- const routerImport = (0, imports_1.getImportSpecifier)(sourceFile, '@angular/router', 'Router');
65
- const seenLiterals = new Map();
66
- if (routerImport) {
67
- sourceFile.forEachChild(function visitNode(node) {
68
- var _a;
69
- // Look for calls that look like `foo.<method to migrate>` with more than one parameter.
70
- if (ts.isCallExpression(node) && node.arguments.length > 1 &&
71
- ts.isPropertyAccessExpression(node.expression) && ts.isIdentifier(node.expression.name) &&
72
- methodConfig.has(node.expression.name.text)) {
73
- // Check whether the type of the object on which the
74
- // function is called refers to the Router import.
75
- if ((0, symbol_1.isReferenceToImport)(typeChecker, node.expression.expression, routerImport)) {
76
- const methodName = node.expression.name.text;
77
- const parameterDeclaration = (_a = typeChecker.getTypeAtLocation(node.arguments[1]).getSymbol()) === null || _a === void 0 ? void 0 : _a.valueDeclaration;
78
- // Find the source of the object literal.
79
- if (parameterDeclaration && ts.isObjectLiteralExpression(parameterDeclaration)) {
80
- if (!seenLiterals.has(parameterDeclaration)) {
81
- results.get(methodName).add(parameterDeclaration);
82
- seenLiterals.set(parameterDeclaration, methodName);
83
- // If the same literal has been passed into multiple different methods, we can't
84
- // migrate it, because the supported properties are different. When we detect such
85
- // a case, we drop it from the results so that it gets ignored. If it's used multiple
86
- // times for the same method, it can still be migrated.
87
- }
88
- else if (seenLiterals.get(parameterDeclaration) !== methodName) {
89
- results.forEach(literals => literals.delete(parameterDeclaration));
90
- }
91
- }
92
- }
93
- }
94
- else {
95
- node.forEachChild(visitNode);
96
- }
97
- });
98
- }
99
- return results;
100
- }
101
- exports.findLiteralsToMigrate = findLiteralsToMigrate;
102
- });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JvdXRlci1wcmVzZXJ2ZS1xdWVyeS1wYXJhbXMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSCxpQ0FBaUM7SUFFakMsK0VBQWtFO0lBQ2xFLDZFQUFrRTtJQUVsRTs7O09BR0c7SUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRXBFLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUM7SUFFckQsU0FBZ0IsY0FBYyxDQUMxQixVQUFrQixFQUFFLElBQWdDOztRQUN0RCxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZCLE1BQU0sS0FBSyxDQUFDLG9EQUFvRCxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ2hGO1FBR0QsTUFBTSxnQkFBZ0IsR0FBa0MsRUFBRSxDQUFDO1FBQzNELElBQUksaUJBQWlCLEdBQW1FLFNBQVMsQ0FBQztRQUVsRyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsa0ZBQWtGO1lBQ2xGLG9FQUFvRTtZQUNwRSxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakYsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUMzRSxFQUFFLENBQUMsWUFBWSxDQUFD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b0JBQW9CLENBQUMsRUFBRTtnQ0FDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUUsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQ0FDbkQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsQ0FBQztnQ0FDbkQsZ0ZBQWdGO2dDQUNoRixrRkFBa0Y7Z0NBQ2xGLHFGQUFxRjtnQ0FDckYsdURBQXVEOzZCQUN4RDtpQ0FBTSxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0NBQ2hFLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQzs2QkFDcEU7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDOUI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQXhDRCxzREF3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0SW1wb3J0U3BlY2lmaWVyfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2ltcG9ydHMnO1xuaW1wb3J0IHtpc1JlZmVyZW5jZVRvSW1wb3J0fSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L3N5bWJvbCc7XG5cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgbWV0aG9kcyB0aGF0IHRoZSBtaWdyYXRpb24gc2hvdWxkIGJlIGxvb2tpbmcgZm9yXG4gKiBhbmQgdGhlIHByb3BlcnRpZXMgZnJvbSBgTmF2aWdhdGlvbkV4dHJhc2AgdGhhdCBzaG91bGQgYmUgcHJlc2VydmVkLlxuICovXG5jb25zdCBtZXRob2RDb25maWcgPSBuZXcgU2V0PHN0cmluZz4oWyduYXZpZ2F0ZScsICdjcmVhdGVVcmxUcmVlJ10pO1xuXG5jb25zdCBwcmVzZXJ2ZVF1ZXJ5UGFyYW1zS2V5ID0gJ3ByZXNlcnZlUXVlcnlQYXJhbXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWlncmF0ZUxpdGVyYWwoXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLCBub2RlOiB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbik6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uIHtcbiAgY29uc3QgaXNNaWdyYXRhYmxlTWV0aG9kID0gbWV0aG9kQ29uZmlnLmhhcyhtZXRob2ROYW1lKTtcblxuICBpZiAoIWlzTWlncmF0YWJsZU1ldGhvZCkge1xuICAgIHRocm93IEVycm9yKGBBdHRlbXB0aW5nIHRvIG1pZ3JhdGUgdW5jb25maWd1cmVkIG1ldGhvZCBjYWxsZWQgJHttZXRob2ROYW1lfS5gKTtcbiAgfVxuXG5cbiAgY29uc3QgcHJvcGVydGllc1RvS2VlcDogdHMuT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlW10gPSBbXTtcbiAgbGV0IHByb3BlcnR5VG9NaWdyYXRlOiB0cy5Qcm9wZXJ0eUFzc2lnbm1lbnR8dHMuU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50fHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG5vZGUucHJvcGVydGllcykge1xuICAgIC8vIE9ubHkgbG9vayBmb3IgcmVndWxhciBhbmQgc2hvcnRoYW5kIHByb3BlcnR5IGFzc2lnbm1lbnRzIHNpbmNlIHJlc29sdmluZyB0aGluZ3NcbiAgICAvLyBsaWtlIHNwcmVhZCBvcGVyYXRvcnMgYmVjb21lcyB0b28gY29tcGxpY2F0ZWQgZm9yIHRoaXMgbWlncmF0aW9uLlxuICAgIGlmICgodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocHJvcGVydHkpIHx8IHRzLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KHByb3BlcnR5KSkgJiZcbiAgICAgICAgKHRzLmlzU3RyaW5nTGl0ZXJhbExpa2UocHJvcGVydHkubmFtZSkgfHwgdHMuaXNOdW1lcmljTGl0ZXJhbChwcm9wZXJ0eS5uYW1lKSB8fFxuICAgICAgICAgdHMuaXNJZGVudGlmaWVyKHByb3BlcnR5Lm5hbWUpKSAmJlxuICAgICAgICAocHJvcGVydHkubmFtZS50ZXh0ID09PSBwcmVzZXJ2ZVF1ZXJ5UGFyYW1zS2V5KSkge1xuICAgICAgcHJvcGVydHlUb01pZ3JhdGUgPSBwcm9wZXJ0eTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBwcm9wZXJ0aWVzVG9LZWVwLnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgLy8gRG9uJ3QgbW9kaWZ5IHRoZSBub2RlIGlmIHRoZXJlJ3Mgbm90aGluZyB0byBtaWdyYXRlLlxuICBpZiAocHJvcGVydHlUb01pZ3JhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgaWYgKCh0cy5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChwcm9wZXJ0eVRvTWlncmF0ZSkgJiZcbiAgICAgICBwcm9wZXJ0eVRvTWlncmF0ZS5vYmplY3RBc3NpZ25tZW50SW5pdGlhbGl6ZXI/LmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQpIHx8XG4gICAgICAodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocHJvcGVydHlUb01pZ3JhdGUpICYmXG4gICAgICAgcHJvcGVydHlUb01pZ3JhdGUuaW5pdGlhbGl6ZXIua2luZCA9PT0gdHMuU3ludGF4S2luZC5UcnVlS2V5d29yZCkpIHtcbiAgICByZXR1cm4gdHMudXBkYXRlT2JqZWN0TGl0ZXJhbChcbiAgICAgICAgbm9kZSxcbiAgICAgICAgcHJvcGVydGllc1RvS2VlcC5jb25jYXQoXG4gICAgICAgICAgICB0cy5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoJ3F1ZXJ5UGFyYW1zSGFuZGxpbmcnLCB0cy5jcmVhdGVJZGVudGlmaWVyKGAncHJlc2VydmUnYCkpKSk7XG4gIH1cblxuICByZXR1cm4gdHMudXBkYXRlT2JqZWN0TGl0ZXJhbChub2RlLCBwcm9wZXJ0aWVzVG9LZWVwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRMaXRlcmFsc1RvTWlncmF0ZShzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpIHtcbiAgY29uc3QgcmVzdWx0cyA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8dHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24+PihcbiAgICAgIEFycmF5LmZyb20obWV0aG9kQ29uZmlnLmtleXMoKSwga2V5ID0+IFtrZXksIG5ldyBTZXQoKV0pKTtcbiAgY29uc3Qgcm91dGVySW1wb3J0ID0gZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsICdAYW5ndWxhci9yb3V0ZXInLCAnUm91dGVyJyk7XG4gIGNvbnN0IHNlZW5MaXRlcmFscyA9IG5ldyBNYXA8dHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sIHN0cmluZz4oKTtcblxuICBpZiAocm91dGVySW1wb3J0KSB7XG4gICAgc291cmNlRmlsZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gdmlzaXROb2RlKG5vZGU6IHRzLk5vZGUpIHtcbiAgICAgIC8vIExvb2sgZm9yIGNhbGxzIHRoYXQgbG9vayBsaWtlIGBmb28uPG1ldGhvZCB0byBtaWdyYXRlPmAgd2l0aCBtb3JlIHRoYW4gb25lIHBhcmFtZXRlci5cbiAgICAgIGlmICh0cy5pc0NhbGxFeHByZXNzaW9uKG5vZGUpICYmIG5vZGUuYXJndW1lbnRzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICB0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24pICYmIHRzLmlzSWRlbnRpZmllcihub2RlLmV4cHJlc3Npb24ubmFtZSkgJiZcbiAgICAgICAgICBtZXRob2RDb25maWcuaGFzKG5vZGUuZXhwcmVzc2lvbi5uYW1lLnRleHQpKSB7XG4gICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHR5cGUgb2YgdGhlIG9iamVjdCBvbiB3aGljaCB0aGVcbiAgICAgICAgLy8gZnVuY3Rpb24gaXMgY2FsbGVkIHJlZmVycyB0byB0aGUgUm91dGVyIGltcG9ydC5cbiAgICAgICAgaWYgKGlzUmVmZXJlbmNlVG9JbXBvcnQodHlwZUNoZWNrZXIsIG5vZGUuZXhwcmVzc2lvbi5leHByZXNzaW9uLCByb3V0ZXJJbXBvcnQpKSB7XG4gICAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IG5vZGUuZXhwcmVzc2lvbi5uYW1lLnRleHQ7XG4gICAgICAgICAgY29uc3QgcGFyYW1ldGVyRGVjbGFyYXRpb24gPVxuICAgICAgICAgICAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihub2RlLmFyZ3VtZW50c1sxXSkuZ2V0U3ltYm9sKCk/LnZhbHVlRGVjbGFyYXRpb247XG5cbiAgICAgICAgICAvLyBGaW5kIHRoZSBzb3VyY2Ugb2YgdGhlIG9iamVjdCBsaXRlcmFsLlxuICAgICAgICAgIGlmIChwYXJhbWV0ZXJEZWNsYXJhdGlvbiAmJiB0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKHBhcmFtZXRlckRlY2xhcmF0aW9uKSkge1xuICAgICAgICAgICAgaWYgKCFzZWVuTGl0ZXJhbHMuaGFzKHBhcmFtZXRlckRlY2xhcmF0aW9uKSkge1xuICAgICAgICAgICAgICByZXN1bHRzLmdldChtZXRob2ROYW1lKSEuYWRkKHBhcmFtZXRlckRlY2xhcmF0aW9uKTtcbiAgICAgICAgICAgICAgc2VlbkxpdGVyYWxzLnNldChwYXJhbWV0ZXJEZWNsYXJhdGlvbiwgbWV0aG9kTmFtZSk7XG4gICAgICAgICAgICAgIC8vIElmIHRoZSBzYW1lIGxpdGVyYWwgaGFzIGJlZW4gcGFzc2VkIGludG8gbXVsdGlwbGUgZGlmZmVyZW50IG1ldGhvZHMsIHdlIGNhbid0XG4gICAgICAgICAgICAgIC8vIG1pZ3JhdGUgaXQsIGJlY2F1c2UgdGhlIHN1cHBvcnRlZCBwcm9wZXJ0aWVzIGFyZSBkaWZmZXJlbnQuIFdoZW4gd2UgZGV0ZWN0IHN1Y2hcbiAgICAgICAgICAgICAgLy8gYSBjYXNlLCB3ZSBkcm9wIGl0IGZyb20gdGhlIHJlc3VsdHMgc28gdGhhdCBpdCBnZXRzIGlnbm9yZWQuIElmIGl0J3MgdXNlZCBtdWx0aXBsZVxuICAgICAgICAgICAgICAvLyB0aW1lcyBmb3IgdGhlIHNhbWUgbWV0aG9kLCBpdCBjYW4gc3RpbGwgYmUgbWlncmF0ZWQuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlZW5MaXRlcmFscy5nZXQocGFyYW1ldGVyRGVjbGFyYXRpb24pICE9PSBtZXRob2ROYW1lKSB7XG4gICAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChsaXRlcmFscyA9PiBsaXRlcmFscy5kZWxldGUocGFyYW1ldGVyRGVjbGFyYXRpb24pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUuZm9yRWFjaENoaWxkKHZpc2l0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn1cbiJdfQ==