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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/core.d.ts +791 -1180
  2. package/esm2020/core.mjs +5 -0
  3. package/esm2020/index.mjs +14 -0
  4. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  5. package/esm2020/src/application_init.mjs +140 -0
  6. package/esm2020/src/application_module.mjs +130 -0
  7. package/esm2020/src/application_ref.mjs +738 -0
  8. package/{esm2015/src/application_tokens.js → esm2020/src/application_tokens.mjs} +0 -0
  9. package/esm2020/src/change_detection/change_detection.mjs +31 -0
  10. package/esm2020/src/change_detection/change_detection_util.mjs +64 -0
  11. package/esm2020/src/change_detection/change_detector_ref.mjs +89 -0
  12. package/{esm2015/src/change_detection/constants.js → esm2020/src/change_detection/constants.mjs} +0 -0
  13. package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +666 -0
  14. package/{esm2015/src/change_detection/differs/default_keyvalue_differ.js → esm2020/src/change_detection/differs/default_keyvalue_differ.mjs} +0 -0
  15. package/{esm2015/src/change_detection/differs/iterable_differs.js → esm2020/src/change_detection/differs/iterable_differs.mjs} +0 -0
  16. package/{esm2015/src/change_detection/differs/keyvalue_differs.js → esm2020/src/change_detection/differs/keyvalue_differs.mjs} +0 -0
  17. package/{esm2015/src/change_detection/pipe_transform.js → esm2020/src/change_detection/pipe_transform.mjs} +0 -0
  18. package/esm2020/src/change_detection.mjs +14 -0
  19. package/esm2020/src/codegen_private_exports.mjs +11 -0
  20. package/{esm2015/src/compiler/compiler_facade.js → esm2020/src/compiler/compiler_facade.mjs} +0 -0
  21. package/{esm2015/src/compiler/compiler_facade_interface.js → esm2020/src/compiler/compiler_facade_interface.mjs} +1 -1
  22. package/esm2020/src/console.mjs +26 -0
  23. package/esm2020/src/core.mjs +52 -0
  24. package/esm2020/src/core_private_export.mjs +34 -0
  25. package/esm2020/src/core_render3_private_export.mjs +47 -0
  26. package/esm2020/src/debug/debug_node.mjs +625 -0
  27. package/{esm2015/src/debug/proxy.js → esm2020/src/debug/proxy.mjs} +0 -0
  28. package/{esm2015/src/di/forward_ref.js → esm2020/src/di/forward_ref.mjs} +0 -0
  29. package/{esm2015/src/di/index.js → esm2020/src/di/index.mjs} +0 -0
  30. package/{esm2015/src/di/inject_switch.js → esm2020/src/di/inject_switch.mjs} +0 -0
  31. package/esm2020/src/di/injectable.mjs +27 -0
  32. package/esm2020/src/di/injection_token.mjs +82 -0
  33. package/esm2020/src/di/injector.mjs +323 -0
  34. package/esm2020/src/di/injector_compatibility.mjs +185 -0
  35. package/{esm2015/src/di/injector_marker.js → esm2020/src/di/injector_marker.mjs} +0 -0
  36. package/{esm2015/src/di/injector_token.js → esm2020/src/di/injector_token.mjs} +0 -0
  37. package/{esm2015/src/di/interface/defs.js → esm2020/src/di/interface/defs.mjs} +0 -0
  38. package/{esm2015/src/di/interface/injector.js → esm2020/src/di/interface/injector.mjs} +0 -0
  39. package/{esm2015/src/di/interface/provider.js → esm2020/src/di/interface/provider.mjs} +0 -0
  40. package/{esm2015/src/di/jit/environment.js → esm2020/src/di/jit/environment.mjs} +0 -0
  41. package/esm2020/src/di/jit/injectable.mjs +94 -0
  42. package/{esm2015/src/di/jit/util.js → esm2020/src/di/jit/util.mjs} +0 -0
  43. package/esm2020/src/di/metadata.mjs +60 -0
  44. package/esm2020/src/di/metadata_attr.mjs +24 -0
  45. package/{esm2015/src/di/null_injector.js → esm2020/src/di/null_injector.mjs} +0 -0
  46. package/{esm2015/src/di/provider_token.js → esm2020/src/di/provider_token.mjs} +0 -0
  47. package/{esm2015/src/di/r3_injector.js → esm2020/src/di/r3_injector.mjs} +0 -0
  48. package/{esm2015/src/di/reflective_errors.js → esm2020/src/di/reflective_errors.mjs} +0 -0
  49. package/{esm2015/src/di/reflective_injector.js → esm2020/src/di/reflective_injector.mjs} +0 -0
  50. package/{esm2015/src/di/reflective_key.js → esm2020/src/di/reflective_key.mjs} +0 -0
  51. package/{esm2015/src/di/reflective_provider.js → esm2020/src/di/reflective_provider.mjs} +0 -0
  52. package/{esm2015/src/di/scope.js → esm2020/src/di/scope.mjs} +0 -0
  53. package/esm2020/src/di/util.mjs +51 -0
  54. package/{esm2015/src/di.js → esm2020/src/di.mjs} +0 -0
  55. package/{esm2015/src/error_handler.js → esm2020/src/error_handler.mjs} +0 -0
  56. package/{esm2015/src/errors.js → esm2020/src/errors.mjs} +0 -0
  57. package/esm2020/src/event_emitter.mjs +53 -0
  58. package/{esm2015/src/i18n/locale_data_api.js → esm2020/src/i18n/locale_data_api.mjs} +0 -0
  59. package/esm2020/src/i18n/locale_en.mjs +17 -0
  60. package/{esm2015/src/i18n/localization.js → esm2020/src/i18n/localization.mjs} +0 -0
  61. package/{esm2015/src/i18n/tokens.js → esm2020/src/i18n/tokens.mjs} +0 -0
  62. package/{esm2015/src/interface/lifecycle_hooks.js → esm2020/src/interface/lifecycle_hooks.mjs} +0 -0
  63. package/{esm2015/src/interface/simple_change.js → esm2020/src/interface/simple_change.mjs} +0 -0
  64. package/{esm2015/src/interface/type.js → esm2020/src/interface/type.mjs} +0 -0
  65. package/{esm2015/src/ivy_switch.js → esm2020/src/ivy_switch.mjs} +2 -2
  66. package/esm2020/src/linker/compiler.mjs +136 -0
  67. package/{esm2015/src/linker/component_factory.js → esm2020/src/linker/component_factory.mjs} +0 -0
  68. package/{esm2015/src/linker/component_factory_resolver.js → esm2020/src/linker/component_factory_resolver.mjs} +5 -5
  69. package/esm2020/src/linker/element_ref.mjs +59 -0
  70. package/esm2020/src/linker/ng_module_factory.mjs +29 -0
  71. package/esm2020/src/linker/ng_module_factory_loader.mjs +42 -0
  72. package/esm2020/src/linker/ng_module_factory_loader_impl.mjs +10 -0
  73. package/{esm2015/src/linker/ng_module_factory_registration.js → esm2020/src/linker/ng_module_factory_registration.mjs} +2 -2
  74. package/{esm2015/src/linker/query_list.js → esm2020/src/linker/query_list.mjs} +0 -0
  75. package/{esm2015/src/linker/template_ref.js → esm2020/src/linker/template_ref.mjs} +2 -2
  76. package/esm2020/src/linker/view_container_ref.mjs +283 -0
  77. package/{esm2015/src/linker/view_ref.js → esm2020/src/linker/view_ref.mjs} +0 -0
  78. package/esm2020/src/linker.mjs +19 -0
  79. package/esm2020/src/metadata/di.mjs +108 -0
  80. package/esm2020/src/metadata/directives.mjs +112 -0
  81. package/{esm2015/src/metadata/do_boostrap.js → esm2020/src/metadata/do_boostrap.mjs} +0 -0
  82. package/esm2020/src/metadata/ng_module.mjs +42 -0
  83. package/{esm2015/src/metadata/ng_module_def.js → esm2020/src/metadata/ng_module_def.mjs} +0 -0
  84. package/{esm2015/src/metadata/resource_loading.js → esm2020/src/metadata/resource_loading.mjs} +0 -0
  85. package/{esm2015/src/metadata/schema.js → esm2020/src/metadata/schema.mjs} +0 -0
  86. package/{esm2015/src/metadata/view.js → esm2020/src/metadata/view.mjs} +0 -0
  87. package/{esm2015/src/metadata.js → esm2020/src/metadata.mjs} +0 -0
  88. package/{esm2015/src/platform_core_providers.js → esm2020/src/platform_core_providers.mjs} +0 -0
  89. package/{esm2015/src/r3_symbols.js → esm2020/src/r3_symbols.mjs} +0 -0
  90. package/{esm2015/src/reflection/platform_reflection_capabilities.js → esm2020/src/reflection/platform_reflection_capabilities.mjs} +0 -0
  91. package/{esm2015/src/reflection/reflection.js → esm2020/src/reflection/reflection.mjs} +0 -0
  92. package/{esm2015/src/reflection/reflection_capabilities.js → esm2020/src/reflection/reflection_capabilities.mjs} +0 -0
  93. package/{esm2015/src/reflection/reflector.js → esm2020/src/reflection/reflector.mjs} +0 -0
  94. package/{esm2015/src/reflection/types.js → esm2020/src/reflection/types.mjs} +0 -0
  95. package/{esm2015/src/render/api.js → esm2020/src/render/api.mjs} +2 -2
  96. package/{esm2015/src/render/api_flags.js → esm2020/src/render/api_flags.mjs} +0 -0
  97. package/{esm2015/src/render.js → esm2020/src/render.mjs} +0 -0
  98. package/{esm2015/src/render3/assert.js → esm2020/src/render3/assert.mjs} +0 -0
  99. package/{esm2015/src/render3/bindings.js → esm2020/src/render3/bindings.mjs} +0 -0
  100. package/{esm2015/src/render3/collect_native_nodes.js → esm2020/src/render3/collect_native_nodes.mjs} +0 -0
  101. package/esm2020/src/render3/component.mjs +204 -0
  102. package/{esm2015/src/render3/component_ref.js → esm2020/src/render3/component_ref.mjs} +0 -0
  103. package/{esm2015/src/render3/context_discovery.js → esm2020/src/render3/context_discovery.mjs} +0 -0
  104. package/esm2020/src/render3/definition.mjs +296 -0
  105. package/{esm2015/src/render3/definition_factory.js → esm2020/src/render3/definition_factory.mjs} +0 -0
  106. package/{esm2015/src/render3/di.js → esm2020/src/render3/di.mjs} +3 -3
  107. package/{esm2015/src/render3/di_setup.js → esm2020/src/render3/di_setup.mjs} +0 -0
  108. package/esm2020/src/render3/error_code.mjs +42 -0
  109. package/esm2020/src/render3/error_details_base_url.mjs +16 -0
  110. package/{esm2015/src/render3/errors.js → esm2020/src/render3/errors.mjs} +0 -0
  111. package/{esm2015/src/render3/errors_di.js → esm2020/src/render3/errors_di.mjs} +0 -0
  112. package/{esm2015/src/render3/features/copy_definition_feature.js → esm2020/src/render3/features/copy_definition_feature.mjs} +0 -0
  113. package/{esm2015/src/render3/features/inherit_definition_feature.js → esm2020/src/render3/features/inherit_definition_feature.mjs} +0 -0
  114. package/esm2020/src/render3/features/ng_onchanges_feature.mjs +92 -0
  115. package/{esm2015/src/render3/features/providers_feature.js → esm2020/src/render3/features/providers_feature.mjs} +0 -0
  116. package/esm2020/src/render3/fields.mjs +21 -0
  117. package/{esm2015/src/render3/global_utils_api.js → esm2020/src/render3/global_utils_api.mjs} +0 -0
  118. package/{esm2015/src/render3/hooks.js → esm2020/src/render3/hooks.mjs} +0 -0
  119. package/{esm2015/src/render3/i18n/i18n_apply.js → esm2020/src/render3/i18n/i18n_apply.mjs} +0 -0
  120. package/{esm2015/src/render3/i18n/i18n_debug.js → esm2020/src/render3/i18n/i18n_debug.mjs} +0 -0
  121. package/{esm2015/src/render3/i18n/i18n_insert_before_index.js → esm2020/src/render3/i18n/i18n_insert_before_index.mjs} +0 -0
  122. package/{esm2015/src/render3/i18n/i18n_locale_id.js → esm2020/src/render3/i18n/i18n_locale_id.mjs} +0 -0
  123. package/{esm2015/src/render3/i18n/i18n_parse.js → esm2020/src/render3/i18n/i18n_parse.mjs} +0 -0
  124. package/{esm2015/src/render3/i18n/i18n_postprocess.js → esm2020/src/render3/i18n/i18n_postprocess.mjs} +0 -0
  125. package/{esm2015/src/render3/i18n/i18n_tree_shaking.js → esm2020/src/render3/i18n/i18n_tree_shaking.mjs} +0 -0
  126. package/{esm2015/src/render3/i18n/i18n_util.js → esm2020/src/render3/i18n/i18n_util.mjs} +0 -0
  127. package/{esm2015/src/render3/index.js → esm2020/src/render3/index.mjs} +0 -0
  128. package/{esm2015/src/render3/instructions/advance.js → esm2020/src/render3/instructions/advance.mjs} +0 -0
  129. package/{esm2015/src/render3/instructions/all.js → esm2020/src/render3/instructions/all.mjs} +0 -0
  130. package/{esm2015/src/render3/instructions/attribute.js → esm2020/src/render3/instructions/attribute.mjs} +0 -0
  131. package/{esm2015/src/render3/instructions/attribute_interpolation.js → esm2020/src/render3/instructions/attribute_interpolation.mjs} +0 -0
  132. package/{esm2015/src/render3/instructions/change_detection.js → esm2020/src/render3/instructions/change_detection.mjs} +0 -0
  133. package/{esm2015/src/render3/instructions/class_map_interpolation.js → esm2020/src/render3/instructions/class_map_interpolation.mjs} +0 -0
  134. package/{esm2015/src/render3/instructions/di.js → esm2020/src/render3/instructions/di.mjs} +0 -0
  135. package/{esm2015/src/render3/instructions/di_attr.js → esm2020/src/render3/instructions/di_attr.mjs} +0 -0
  136. package/{esm2015/src/render3/instructions/element.js → esm2020/src/render3/instructions/element.mjs} +0 -0
  137. package/{esm2015/src/render3/instructions/element_container.js → esm2020/src/render3/instructions/element_container.mjs} +0 -0
  138. package/{esm2015/src/render3/instructions/get_current_view.js → esm2020/src/render3/instructions/get_current_view.mjs} +0 -0
  139. package/{esm2015/src/render3/instructions/host_property.js → esm2020/src/render3/instructions/host_property.mjs} +0 -0
  140. package/{esm2015/src/render3/instructions/i18n.js → esm2020/src/render3/instructions/i18n.mjs} +0 -0
  141. package/{esm2015/src/render3/instructions/i18n_icu_container_visitor.js → esm2020/src/render3/instructions/i18n_icu_container_visitor.mjs} +0 -0
  142. package/{esm2015/src/render3/instructions/interpolation.js → esm2020/src/render3/instructions/interpolation.mjs} +0 -0
  143. package/{esm2015/src/render3/instructions/listener.js → esm2020/src/render3/instructions/listener.mjs} +0 -0
  144. package/{esm2015/src/render3/instructions/lview_debug.js → esm2020/src/render3/instructions/lview_debug.mjs} +0 -0
  145. package/{esm2015/src/render3/instructions/namespace.js → esm2020/src/render3/instructions/namespace.mjs} +0 -0
  146. package/{esm2015/src/render3/instructions/next_context.js → esm2020/src/render3/instructions/next_context.mjs} +0 -0
  147. package/{esm2015/src/render3/instructions/projection.js → esm2020/src/render3/instructions/projection.mjs} +0 -0
  148. package/{esm2015/src/render3/instructions/property.js → esm2020/src/render3/instructions/property.mjs} +0 -0
  149. package/{esm2015/src/render3/instructions/property_interpolation.js → esm2020/src/render3/instructions/property_interpolation.mjs} +0 -0
  150. package/esm2020/src/render3/instructions/shared.mjs +1811 -0
  151. package/{esm2015/src/render3/instructions/storage.js → esm2020/src/render3/instructions/storage.mjs} +0 -0
  152. package/{esm2015/src/render3/instructions/style_map_interpolation.js → esm2020/src/render3/instructions/style_map_interpolation.mjs} +0 -0
  153. package/{esm2015/src/render3/instructions/style_prop_interpolation.js → esm2020/src/render3/instructions/style_prop_interpolation.mjs} +0 -0
  154. package/{esm2015/src/render3/instructions/styling.js → esm2020/src/render3/instructions/styling.mjs} +0 -0
  155. package/{esm2015/src/render3/instructions/template.js → esm2020/src/render3/instructions/template.mjs} +0 -0
  156. package/{esm2015/src/render3/instructions/text.js → esm2020/src/render3/instructions/text.mjs} +0 -0
  157. package/{esm2015/src/render3/instructions/text_interpolation.js → esm2020/src/render3/instructions/text_interpolation.mjs} +0 -0
  158. package/{esm2015/src/render3/interfaces/container.js → esm2020/src/render3/interfaces/container.mjs} +0 -0
  159. package/{esm2015/src/render3/interfaces/context.js → esm2020/src/render3/interfaces/context.mjs} +0 -0
  160. package/{esm2015/src/render3/interfaces/definition.js → esm2020/src/render3/interfaces/definition.mjs} +0 -0
  161. package/{esm2015/src/render3/interfaces/document.js → esm2020/src/render3/interfaces/document.mjs} +0 -0
  162. package/{esm2015/src/render3/interfaces/i18n.js → esm2020/src/render3/interfaces/i18n.mjs} +0 -0
  163. package/{esm2015/src/render3/interfaces/injector.js → esm2020/src/render3/interfaces/injector.mjs} +0 -0
  164. package/{esm2015/src/render3/interfaces/node.js → esm2020/src/render3/interfaces/node.mjs} +0 -0
  165. package/{esm2015/src/render3/interfaces/player.js → esm2020/src/render3/interfaces/player.mjs} +0 -0
  166. package/{esm2015/src/render3/interfaces/projection.js → esm2020/src/render3/interfaces/projection.mjs} +0 -0
  167. package/{esm2015/src/render3/interfaces/public_definitions.js → esm2020/src/render3/interfaces/public_definitions.mjs} +0 -0
  168. package/{esm2015/src/render3/interfaces/query.js → esm2020/src/render3/interfaces/query.mjs} +0 -0
  169. package/esm2020/src/render3/interfaces/renderer.mjs +27 -0
  170. package/{esm2015/src/render3/interfaces/renderer_dom.js → esm2020/src/render3/interfaces/renderer_dom.mjs} +0 -0
  171. package/{esm2015/src/render3/interfaces/sanitization.js → esm2020/src/render3/interfaces/sanitization.mjs} +0 -0
  172. package/{esm2015/src/render3/interfaces/styling.js → esm2020/src/render3/interfaces/styling.mjs} +0 -0
  173. package/{esm2015/src/render3/interfaces/type_checks.js → esm2020/src/render3/interfaces/type_checks.mjs} +0 -0
  174. package/{esm2015/src/render3/interfaces/view.js → esm2020/src/render3/interfaces/view.mjs} +0 -0
  175. package/esm2020/src/render3/jit/directive.mjs +325 -0
  176. package/esm2020/src/render3/jit/environment.mjs +165 -0
  177. package/{esm2015/src/render3/jit/jit_options.js → esm2020/src/render3/jit/jit_options.mjs} +0 -0
  178. package/{esm2015/src/render3/jit/module.js → esm2020/src/render3/jit/module.mjs} +0 -0
  179. package/esm2020/src/render3/jit/partial.mjs +104 -0
  180. package/{esm2015/src/render3/jit/pipe.js → esm2020/src/render3/jit/pipe.mjs} +0 -0
  181. package/esm2020/src/render3/metadata.mjs +49 -0
  182. package/{esm2015/src/render3/namespaces.js → esm2020/src/render3/namespaces.mjs} +0 -0
  183. package/esm2020/src/render3/ng_module_ref.mjs +119 -0
  184. package/{esm2015/src/render3/node_assert.js → esm2020/src/render3/node_assert.mjs} +0 -0
  185. package/{esm2015/src/render3/node_manipulation.js → esm2020/src/render3/node_manipulation.mjs} +0 -0
  186. package/{esm2015/src/render3/node_manipulation_i18n.js → esm2020/src/render3/node_manipulation_i18n.mjs} +0 -0
  187. package/{esm2015/src/render3/node_selector_matcher.js → esm2020/src/render3/node_selector_matcher.mjs} +0 -0
  188. package/esm2020/src/render3/pipe.mjs +184 -0
  189. package/{esm2015/src/render3/profiler.js → esm2020/src/render3/profiler.mjs} +0 -0
  190. package/{esm2015/src/render3/pure_function.js → esm2020/src/render3/pure_function.mjs} +0 -0
  191. package/{esm2015/src/render3/query.js → esm2020/src/render3/query.mjs} +0 -0
  192. package/{esm2015/src/render3/state.js → esm2020/src/render3/state.mjs} +0 -0
  193. package/{esm2015/src/render3/styling/class_differ.js → esm2020/src/render3/styling/class_differ.mjs} +0 -0
  194. package/{esm2015/src/render3/styling/static_styling.js → esm2020/src/render3/styling/static_styling.mjs} +0 -0
  195. package/{esm2015/src/render3/styling/style_binding_list.js → esm2020/src/render3/styling/style_binding_list.mjs} +0 -0
  196. package/{esm2015/src/render3/styling/styling_parser.js → esm2020/src/render3/styling/styling_parser.mjs} +0 -0
  197. package/{esm2015/src/render3/tokens.js → esm2020/src/render3/tokens.mjs} +0 -0
  198. package/{esm2015/src/render3/util/attrs_utils.js → esm2020/src/render3/util/attrs_utils.mjs} +0 -0
  199. package/{esm2015/src/render3/util/change_detection_utils.js → esm2020/src/render3/util/change_detection_utils.mjs} +0 -0
  200. package/{esm2015/src/render3/util/debug_utils.js → esm2020/src/render3/util/debug_utils.mjs} +0 -0
  201. package/esm2020/src/render3/util/discovery_utils.mjs +411 -0
  202. package/esm2020/src/render3/util/global_utils.mjs +77 -0
  203. package/{esm2015/src/render3/util/injector_utils.js → esm2020/src/render3/util/injector_utils.mjs} +0 -0
  204. package/esm2020/src/render3/util/misc_utils.mjs +61 -0
  205. package/{esm2015/src/render3/util/stringify_utils.js → esm2020/src/render3/util/stringify_utils.mjs} +0 -0
  206. package/{esm2015/src/render3/util/view_traversal_utils.js → esm2020/src/render3/util/view_traversal_utils.mjs} +0 -0
  207. package/{esm2015/src/render3/util/view_utils.js → esm2020/src/render3/util/view_utils.mjs} +0 -0
  208. package/{esm2015/src/render3/view_engine_compatibility_prebound.js → esm2020/src/render3/view_engine_compatibility_prebound.mjs} +0 -0
  209. package/{esm2015/src/render3/view_ref.js → esm2020/src/render3/view_ref.mjs} +0 -0
  210. package/{esm2015/src/sanitization/bypass.js → esm2020/src/sanitization/bypass.mjs} +0 -0
  211. package/{esm2015/src/sanitization/html_sanitizer.js → esm2020/src/sanitization/html_sanitizer.mjs} +0 -0
  212. package/{esm2015/src/sanitization/inert_body.js → esm2020/src/sanitization/inert_body.mjs} +3 -3
  213. package/{esm2015/src/sanitization/sanitization.js → esm2020/src/sanitization/sanitization.mjs} +0 -0
  214. package/{esm2015/src/sanitization/sanitizer.js → esm2020/src/sanitization/sanitizer.mjs} +0 -0
  215. package/{esm2015/src/sanitization/security.js → esm2020/src/sanitization/security.mjs} +0 -0
  216. package/{esm2015/src/sanitization/url_sanitizer.js → esm2020/src/sanitization/url_sanitizer.mjs} +0 -0
  217. package/esm2020/src/testability/testability.mjs +258 -0
  218. package/{esm2015/src/util/array_utils.js → esm2020/src/util/array_utils.mjs} +0 -0
  219. package/{esm2015/src/util/assert.js → esm2020/src/util/assert.mjs} +0 -0
  220. package/{esm2015/src/util/char_code.js → esm2020/src/util/char_code.mjs} +0 -0
  221. package/{esm2015/src/util/closure.js → esm2020/src/util/closure.mjs} +0 -0
  222. package/{esm2015/src/util/comparison.js → esm2020/src/util/comparison.mjs} +0 -0
  223. package/{esm2015/src/util/decorators.js → esm2020/src/util/decorators.mjs} +0 -0
  224. package/{esm2015/src/util/dom.js → esm2020/src/util/dom.mjs} +0 -0
  225. package/{esm2015/src/util/empty.js → esm2020/src/util/empty.mjs} +0 -0
  226. package/{esm2015/src/util/errors.js → esm2020/src/util/errors.mjs} +0 -0
  227. package/{esm2015/src/util/global.js → esm2020/src/util/global.mjs} +0 -0
  228. package/{esm2015/src/util/is_dev_mode.js → esm2020/src/util/is_dev_mode.mjs} +0 -0
  229. package/{esm2015/src/util/iterable.js → esm2020/src/util/iterable.mjs} +0 -0
  230. package/{esm2015/src/util/lang.js → esm2020/src/util/lang.mjs} +0 -0
  231. package/{esm2015/src/util/microtask.js → esm2020/src/util/microtask.mjs} +0 -0
  232. package/{esm2015/src/util/named_array_type.js → esm2020/src/util/named_array_type.mjs} +0 -0
  233. package/{esm2015/src/util/ng_dev_mode.js → esm2020/src/util/ng_dev_mode.mjs} +0 -0
  234. package/{esm2015/src/util/ng_i18n_closure_mode.js → esm2020/src/util/ng_i18n_closure_mode.mjs} +0 -0
  235. package/{esm2015/src/util/ng_jit_mode.js → esm2020/src/util/ng_jit_mode.mjs} +0 -0
  236. package/{esm2015/src/util/ng_reflect.js → esm2020/src/util/ng_reflect.mjs} +0 -0
  237. package/{esm2015/src/util/noop.js → esm2020/src/util/noop.mjs} +0 -0
  238. package/{esm2015/src/util/property.js → esm2020/src/util/property.mjs} +0 -0
  239. package/{esm2015/src/util/raf.js → esm2020/src/util/raf.mjs} +0 -0
  240. package/{esm2015/src/util/security/trusted_type_defs.js → esm2020/src/util/security/trusted_type_defs.mjs} +0 -0
  241. package/esm2020/src/util/security/trusted_types.mjs +130 -0
  242. package/esm2020/src/util/security/trusted_types_bypass.mjs +83 -0
  243. package/{esm2015/src/util/stringify.js → esm2020/src/util/stringify.mjs} +0 -0
  244. package/{esm2015/src/util/symbol.js → esm2020/src/util/symbol.mjs} +0 -0
  245. package/{esm2015/src/version.js → esm2020/src/version.mjs} +1 -1
  246. package/{esm2015/src/view/element.js → esm2020/src/view/element.mjs} +0 -0
  247. package/{esm2015/src/view/entrypoint.js → esm2020/src/view/entrypoint.mjs} +0 -0
  248. package/{esm2015/src/view/errors.js → esm2020/src/view/errors.mjs} +0 -0
  249. package/{esm2015/src/view/index.js → esm2020/src/view/index.mjs} +2 -2
  250. package/{esm2015/src/view/ng_content.js → esm2020/src/view/ng_content.mjs} +0 -0
  251. package/{esm2015/src/view/ng_module.js → esm2020/src/view/ng_module.mjs} +0 -0
  252. package/esm2020/src/view/provider.mjs +490 -0
  253. package/{esm2015/src/view/provider_flags.js → esm2020/src/view/provider_flags.mjs} +0 -0
  254. package/{esm2015/src/view/pure_expression.js → esm2020/src/view/pure_expression.mjs} +0 -0
  255. package/{esm2015/src/view/query.js → esm2020/src/view/query.mjs} +0 -0
  256. package/{esm2015/src/view/refs.js → esm2020/src/view/refs.mjs} +0 -0
  257. package/{esm2015/src/view/services.js → esm2020/src/view/services.mjs} +0 -0
  258. package/{esm2015/src/view/text.js → esm2020/src/view/text.mjs} +0 -0
  259. package/{esm2015/src/view/types.js → esm2020/src/view/types.mjs} +0 -0
  260. package/esm2020/src/view/util.mjs +369 -0
  261. package/{esm2015/src/view/view.js → esm2020/src/view/view.mjs} +0 -0
  262. package/{esm2015/src/view/view_attach.js → esm2020/src/view/view_attach.mjs} +0 -0
  263. package/{esm2015/src/zone/ng_zone.js → esm2020/src/zone/ng_zone.mjs} +0 -0
  264. package/{esm2015/src/zone.js → esm2020/src/zone.mjs} +0 -0
  265. package/{esm2015/testing/index.js → esm2020/testing/index.mjs} +0 -0
  266. package/{esm2015/testing/public_api.js → esm2020/testing/public_api.mjs} +0 -0
  267. package/{esm2015/testing/src/async.js → esm2020/testing/src/async.mjs} +0 -0
  268. package/{esm2015/testing/src/component_fixture.js → esm2020/testing/src/component_fixture.mjs} +0 -0
  269. package/{esm2015/testing/src/fake_async.js → esm2020/testing/src/fake_async.mjs} +0 -0
  270. package/{esm2015/testing/src/lang_utils.js → esm2020/testing/src/lang_utils.mjs} +0 -0
  271. package/esm2020/testing/src/logger.mjs +34 -0
  272. package/{esm2015/testing/src/metadata_override.js → esm2020/testing/src/metadata_override.mjs} +0 -0
  273. package/{esm2015/testing/src/metadata_overrider.js → esm2020/testing/src/metadata_overrider.mjs} +0 -0
  274. package/esm2020/testing/src/ng_zone_mock.mjs +33 -0
  275. package/{esm2015/testing/src/private_export_testing.js → esm2020/testing/src/private_export_testing.mjs} +0 -0
  276. package/esm2020/testing/src/r3_test_bed.mjs +397 -0
  277. package/esm2020/testing/src/r3_test_bed_compiler.mjs +735 -0
  278. package/{esm2015/testing/src/resolvers.js → esm2020/testing/src/resolvers.mjs} +0 -0
  279. package/{esm2015/testing/src/styling.js → esm2020/testing/src/styling.mjs} +0 -0
  280. package/esm2020/testing/src/test_bed.mjs +614 -0
  281. package/esm2020/testing/src/test_bed_common.mjs +28 -0
  282. package/esm2020/testing/src/test_compiler.mjs +69 -0
  283. package/{esm2015/testing/src/test_hooks.js → esm2020/testing/src/test_hooks.mjs} +0 -0
  284. package/{esm2015/testing/src/testing.js → esm2020/testing/src/testing.mjs} +0 -0
  285. package/{esm2015/testing/src/testing_internal.js → esm2020/testing/src/testing_internal.mjs} +0 -0
  286. package/esm2020/testing/testing.mjs +5 -0
  287. package/fesm2015/{core.js → core.mjs} +496 -546
  288. package/fesm2015/core.mjs.map +1 -0
  289. package/fesm2015/{testing.js → testing.mjs} +50 -61
  290. package/fesm2015/testing.mjs.map +1 -0
  291. package/fesm2020/core.mjs +33109 -0
  292. package/fesm2020/core.mjs.map +1 -0
  293. package/fesm2020/testing.mjs +2635 -0
  294. package/fesm2020/testing.mjs.map +1 -0
  295. package/package.json +33 -8
  296. package/schematics/migrations/{move-document → testbed-teardown}/index.d.ts +2 -2
  297. package/schematics/migrations/testbed-teardown/index.js +92 -0
  298. package/schematics/migrations/testbed-teardown/util.d.ts +35 -0
  299. package/schematics/migrations/testbed-teardown/util.js +188 -0
  300. package/schematics/migrations.json +6 -101
  301. package/schematics/package.json +3 -0
  302. package/schematics/utils/import_manager.d.ts +1 -1
  303. package/schematics/utils/import_manager.js +22 -19
  304. package/schematics/utils/load_esm.d.ts +8 -0
  305. package/schematics/utils/load_esm.js +24 -2
  306. package/schematics/utils/ng_component_template.d.ts +1 -1
  307. package/schematics/utils/ng_component_template.js +12 -9
  308. package/schematics/utils/ng_decorators.d.ts +1 -1
  309. package/schematics/utils/ng_decorators.js +1 -1
  310. package/schematics/utils/typescript/class_declaration.d.ts +1 -1
  311. package/schematics/utils/typescript/class_declaration.js +10 -7
  312. package/schematics/utils/typescript/compiler_host.d.ts +1 -1
  313. package/schematics/utils/typescript/compiler_host.js +7 -4
  314. package/schematics/utils/typescript/decorators.d.ts +1 -1
  315. package/schematics/utils/typescript/decorators.js +7 -4
  316. package/schematics/utils/typescript/find_base_classes.d.ts +1 -1
  317. package/schematics/utils/typescript/find_base_classes.js +6 -3
  318. package/schematics/utils/typescript/functions.d.ts +1 -1
  319. package/schematics/utils/typescript/functions.js +9 -6
  320. package/schematics/utils/typescript/imports.d.ts +1 -1
  321. package/schematics/utils/typescript/imports.js +12 -9
  322. package/schematics/utils/typescript/nodes.d.ts +1 -1
  323. package/schematics/utils/typescript/nodes.js +11 -8
  324. package/schematics/utils/typescript/parse_tsconfig.d.ts +1 -1
  325. package/schematics/utils/typescript/parse_tsconfig.js +31 -9
  326. package/schematics/utils/typescript/property_name.d.ts +1 -1
  327. package/schematics/utils/typescript/property_name.js +7 -4
  328. package/schematics/utils/typescript/symbol.d.ts +1 -1
  329. package/schematics/utils/typescript/symbol.js +15 -12
  330. package/testing/package.json +5 -5
  331. package/testing/testing.d.ts +4 -333
  332. package/bundles/core-testing.umd.js +0 -3179
  333. package/bundles/core-testing.umd.js.map +0 -1
  334. package/bundles/core.umd.js +0 -34454
  335. package/bundles/core.umd.js.map +0 -1
  336. package/core.metadata.json +0 -1
  337. package/esm2015/core.externs.js +0 -6
  338. package/esm2015/core.js +0 -38
  339. package/esm2015/index.js +0 -13
  340. package/esm2015/src/application_init.js +0 -142
  341. package/esm2015/src/application_module.js +0 -134
  342. package/esm2015/src/application_ref.js +0 -738
  343. package/esm2015/src/change_detection/change_detection.js +0 -31
  344. package/esm2015/src/change_detection/change_detection_util.js +0 -105
  345. package/esm2015/src/change_detection/change_detector_ref.js +0 -96
  346. package/esm2015/src/change_detection/differs/default_iterable_differ.js +0 -668
  347. package/esm2015/src/change_detection.js +0 -14
  348. package/esm2015/src/codegen_private_exports.js +0 -11
  349. package/esm2015/src/compiler/compiler.externs.js +0 -0
  350. package/esm2015/src/console.js +0 -23
  351. package/esm2015/src/core.js +0 -50
  352. package/esm2015/src/core_private_export.js +0 -35
  353. package/esm2015/src/core_render3_private_export.js +0 -45
  354. package/esm2015/src/debug/debug_node.js +0 -632
  355. package/esm2015/src/di/injectable.js +0 -36
  356. package/esm2015/src/di/injection_token.js +0 -75
  357. package/esm2015/src/di/injector.js +0 -326
  358. package/esm2015/src/di/injector_compatibility.js +0 -187
  359. package/esm2015/src/di/interface/interface.externs.js +0 -0
  360. package/esm2015/src/di/jit/injectable.js +0 -96
  361. package/esm2015/src/di/metadata.js +0 -62
  362. package/esm2015/src/di/metadata_attr.js +0 -24
  363. package/esm2015/src/di/util.js +0 -53
  364. package/esm2015/src/event_emitter.js +0 -54
  365. package/esm2015/src/i18n/locale_en.js +0 -17
  366. package/esm2015/src/interface/interface.externs.js +0 -0
  367. package/esm2015/src/linker/compiler.js +0 -118
  368. package/esm2015/src/linker/element_ref.js +0 -66
  369. package/esm2015/src/linker/ng_module_factory.js +0 -21
  370. package/esm2015/src/linker/ng_module_factory_loader.js +0 -32
  371. package/esm2015/src/linker/view_container_ref.js +0 -290
  372. package/esm2015/src/linker.js +0 -19
  373. package/esm2015/src/metadata/di.js +0 -99
  374. package/esm2015/src/metadata/directives.js +0 -120
  375. package/esm2015/src/metadata/ng_module.js +0 -44
  376. package/esm2015/src/reflection/reflection.externs.js +0 -0
  377. package/esm2015/src/render3/component.js +0 -206
  378. package/esm2015/src/render3/definition.js +0 -299
  379. package/esm2015/src/render3/error_code.js +0 -45
  380. package/esm2015/src/render3/features/ng_onchanges_feature.js +0 -92
  381. package/esm2015/src/render3/fields.js +0 -22
  382. package/esm2015/src/render3/instructions/shared.js +0 -1813
  383. package/esm2015/src/render3/interfaces/renderer.js +0 -29
  384. package/esm2015/src/render3/jit/directive.js +0 -312
  385. package/esm2015/src/render3/jit/environment.js +0 -167
  386. package/esm2015/src/render3/jit/partial.js +0 -105
  387. package/esm2015/src/render3/metadata.js +0 -49
  388. package/esm2015/src/render3/ng_module_ref.js +0 -108
  389. package/esm2015/src/render3/pipe.js +0 -202
  390. package/esm2015/src/render3/util/discovery_utils.js +0 -411
  391. package/esm2015/src/render3/util/global_utils.js +0 -78
  392. package/esm2015/src/render3/util/misc_utils.js +0 -63
  393. package/esm2015/src/testability/testability.js +0 -256
  394. package/esm2015/src/util/security/trusted_types.js +0 -133
  395. package/esm2015/src/util/security/trusted_types_bypass.js +0 -86
  396. package/esm2015/src/util/util.externs.js +0 -0
  397. package/esm2015/src/view/provider.js +0 -490
  398. package/esm2015/src/view/util.js +0 -378
  399. package/esm2015/testing/src/logger.js +0 -32
  400. package/esm2015/testing/src/ng_zone_mock.js +0 -31
  401. package/esm2015/testing/src/r3_test_bed.js +0 -397
  402. package/esm2015/testing/src/r3_test_bed_compiler.js +0 -744
  403. package/esm2015/testing/src/test_bed.js +0 -608
  404. package/esm2015/testing/src/test_bed_common.js +0 -31
  405. package/esm2015/testing/src/test_compiler.js +0 -66
  406. package/esm2015/testing/testing.externs.js +0 -6
  407. package/esm2015/testing/testing.js +0 -7
  408. package/fesm2015/core.js.map +0 -1
  409. package/fesm2015/testing.js.map +0 -1
  410. package/schematics/migrations/abstract-control-parent/index.d.ts +0 -11
  411. package/schematics/migrations/abstract-control-parent/index.js +0 -69
  412. package/schematics/migrations/abstract-control-parent/util.d.ts +0 -14
  413. package/schematics/migrations/abstract-control-parent/util.js +0 -64
  414. package/schematics/migrations/activated-route-snapshot-fragment/index.d.ts +0 -13
  415. package/schematics/migrations/activated-route-snapshot-fragment/index.js +0 -70
  416. package/schematics/migrations/activated-route-snapshot-fragment/util.d.ts +0 -16
  417. package/schematics/migrations/activated-route-snapshot-fragment/util.js +0 -48
  418. package/schematics/migrations/can-activate-with-redirect-to/index.d.ts +0 -11
  419. package/schematics/migrations/can-activate-with-redirect-to/index.js +0 -66
  420. package/schematics/migrations/can-activate-with-redirect-to/util.d.ts +0 -11
  421. package/schematics/migrations/can-activate-with-redirect-to/util.js +0 -70
  422. package/schematics/migrations/deep-shadow-piercing-selector/index.d.ts +0 -10
  423. package/schematics/migrations/deep-shadow-piercing-selector/index.js +0 -49
  424. package/schematics/migrations/dynamic-queries/index.d.ts +0 -13
  425. package/schematics/migrations/dynamic-queries/index.js +0 -73
  426. package/schematics/migrations/dynamic-queries/util.d.ts +0 -25
  427. package/schematics/migrations/dynamic-queries/util.js +0 -81
  428. package/schematics/migrations/initial-navigation/collector.d.ts +0 -22
  429. package/schematics/migrations/initial-navigation/collector.js +0 -119
  430. package/schematics/migrations/initial-navigation/index.d.ts +0 -11
  431. package/schematics/migrations/initial-navigation/index.js +0 -83
  432. package/schematics/migrations/initial-navigation/transform.d.ts +0 -20
  433. package/schematics/migrations/initial-navigation/transform.js +0 -68
  434. package/schematics/migrations/initial-navigation/update_recorder.d.ts +0 -18
  435. package/schematics/migrations/initial-navigation/update_recorder.js +0 -20
  436. package/schematics/migrations/initial-navigation/util.d.ts +0 -12
  437. package/schematics/migrations/initial-navigation/util.js +0 -43
  438. package/schematics/migrations/missing-injectable/definition_collector.d.ts +0 -37
  439. package/schematics/migrations/missing-injectable/definition_collector.js +0 -89
  440. package/schematics/migrations/missing-injectable/index.d.ts +0 -11
  441. package/schematics/migrations/missing-injectable/index.js +0 -122
  442. package/schematics/migrations/missing-injectable/providers_evaluator.d.ts +0 -36
  443. package/schematics/migrations/missing-injectable/providers_evaluator.js +0 -64
  444. package/schematics/migrations/missing-injectable/transform.d.ts +0 -69
  445. package/schematics/migrations/missing-injectable/transform.js +0 -201
  446. package/schematics/migrations/missing-injectable/update_recorder.d.ts +0 -21
  447. package/schematics/migrations/missing-injectable/update_recorder.js +0 -20
  448. package/schematics/migrations/module-with-providers/collector.d.ts +0 -34
  449. package/schematics/migrations/module-with-providers/collector.js +0 -73
  450. package/schematics/migrations/module-with-providers/index.d.ts +0 -13
  451. package/schematics/migrations/module-with-providers/index.js +0 -93
  452. package/schematics/migrations/module-with-providers/transform.d.ts +0 -49
  453. package/schematics/migrations/module-with-providers/transform.js +0 -148
  454. package/schematics/migrations/module-with-providers/util.d.ts +0 -13
  455. package/schematics/migrations/module-with-providers/util.js +0 -40
  456. package/schematics/migrations/move-document/document_import_visitor.d.ts +0 -27
  457. package/schematics/migrations/move-document/document_import_visitor.js +0 -74
  458. package/schematics/migrations/move-document/index.js +0 -93
  459. package/schematics/migrations/move-document/move-import.d.ts +0 -12
  460. package/schematics/migrations/move-document/move-import.js +0 -61
  461. package/schematics/migrations/native-view-encapsulation/index.d.ts +0 -11
  462. package/schematics/migrations/native-view-encapsulation/index.js +0 -63
  463. package/schematics/migrations/native-view-encapsulation/util.d.ts +0 -11
  464. package/schematics/migrations/native-view-encapsulation/util.js +0 -48
  465. package/schematics/migrations/navigation-extras-omissions/index.d.ts +0 -11
  466. package/schematics/migrations/navigation-extras-omissions/index.js +0 -69
  467. package/schematics/migrations/navigation-extras-omissions/util.d.ts +0 -11
  468. package/schematics/migrations/navigation-extras-omissions/util.js +0 -126
  469. package/schematics/migrations/relative-link-resolution/collector.d.ts +0 -22
  470. package/schematics/migrations/relative-link-resolution/collector.js +0 -95
  471. package/schematics/migrations/relative-link-resolution/index.d.ts +0 -11
  472. package/schematics/migrations/relative-link-resolution/index.js +0 -84
  473. package/schematics/migrations/relative-link-resolution/transform.d.ts +0 -22
  474. package/schematics/migrations/relative-link-resolution/transform.js +0 -65
  475. package/schematics/migrations/relative-link-resolution/update_recorder.d.ts +0 -18
  476. package/schematics/migrations/relative-link-resolution/update_recorder.js +0 -20
  477. package/schematics/migrations/relative-link-resolution/util.d.ts +0 -12
  478. package/schematics/migrations/relative-link-resolution/util.js +0 -43
  479. package/schematics/migrations/renderer-to-renderer2/helpers.d.ts +0 -25
  480. package/schematics/migrations/renderer-to-renderer2/helpers.js +0 -238
  481. package/schematics/migrations/renderer-to-renderer2/index.d.ts +0 -14
  482. package/schematics/migrations/renderer-to-renderer2/index.js +0 -135
  483. package/schematics/migrations/renderer-to-renderer2/migration.d.ts +0 -18
  484. package/schematics/migrations/renderer-to-renderer2/migration.js +0 -225
  485. package/schematics/migrations/renderer-to-renderer2/util.d.ts +0 -18
  486. package/schematics/migrations/renderer-to-renderer2/util.js +0 -83
  487. package/schematics/migrations/router-preserve-query-params/index.d.ts +0 -14
  488. package/schematics/migrations/router-preserve-query-params/index.js +0 -72
  489. package/schematics/migrations/router-preserve-query-params/util.d.ts +0 -11
  490. package/schematics/migrations/router-preserve-query-params/util.js +0 -103
  491. package/schematics/migrations/static-queries/angular/directive_inputs.d.ts +0 -11
  492. package/schematics/migrations/static-queries/angular/directive_inputs.js +0 -84
  493. package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +0 -45
  494. package/schematics/migrations/static-queries/angular/ng_query_visitor.js +0 -127
  495. package/schematics/migrations/static-queries/angular/query-definition.d.ts +0 -37
  496. package/schematics/migrations/static-queries/angular/query-definition.js +0 -33
  497. package/schematics/migrations/static-queries/angular/super_class.d.ts +0 -15
  498. package/schematics/migrations/static-queries/angular/super_class.js +0 -35
  499. package/schematics/migrations/static-queries/index.d.ts +0 -11
  500. package/schematics/migrations/static-queries/index.js +0 -230
  501. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +0 -41
  502. package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +0 -214
  503. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.d.ts +0 -24
  504. package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.js +0 -38
  505. package/schematics/migrations/static-queries/strategies/timing-strategy.d.ts +0 -19
  506. package/schematics/migrations/static-queries/strategies/timing-strategy.js +0 -20
  507. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +0 -82
  508. package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +0 -369
  509. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.d.ts +0 -18
  510. package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.js +0 -52
  511. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.d.ts +0 -27
  512. package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +0 -93
  513. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +0 -34
  514. package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +0 -169
  515. package/schematics/migrations/static-queries/transform.d.ts +0 -21
  516. package/schematics/migrations/static-queries/transform.js +0 -102
  517. package/schematics/migrations/template-var-assignment/analyze_template.d.ts +0 -20
  518. package/schematics/migrations/template-var-assignment/analyze_template.js +0 -38
  519. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.d.ts +0 -28
  520. package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +0 -80
  521. package/schematics/migrations/template-var-assignment/index.d.ts +0 -11
  522. package/schematics/migrations/template-var-assignment/index.js +0 -101
  523. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.d.ts +0 -14
  524. package/schematics/migrations/undecorated-classes-with-decorated-fields/index.js +0 -114
  525. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.d.ts +0 -63
  526. package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.js +0 -300
  527. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts +0 -19
  528. package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.js +0 -20
  529. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.d.ts +0 -18
  530. package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.js +0 -57
  531. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.d.ts +0 -18
  532. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.js +0 -96
  533. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.d.ts +0 -39
  534. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.js +0 -116
  535. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.d.ts +0 -37
  536. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.js +0 -126
  537. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.d.ts +0 -10
  538. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.js +0 -31
  539. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.d.ts +0 -16
  540. package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.js +0 -65
  541. package/schematics/migrations/undecorated-classes-with-di/index.d.ts +0 -11
  542. package/schematics/migrations/undecorated-classes-with-di/index.js +0 -195
  543. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.d.ts +0 -38
  544. package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.js +0 -142
  545. package/schematics/migrations/undecorated-classes-with-di/transform.d.ts +0 -98
  546. package/schematics/migrations/undecorated-classes-with-di/transform.js +0 -371
  547. package/schematics/migrations/undecorated-classes-with-di/update_recorder.d.ts +0 -20
  548. package/schematics/migrations/undecorated-classes-with-di/update_recorder.js +0 -20
  549. package/schematics/migrations/wait-for-async/index.d.ts +0 -11
  550. package/schematics/migrations/wait-for-async/index.js +0 -98
  551. package/schematics/migrations/wait-for-async/util.d.ts +0 -11
  552. package/schematics/migrations/wait-for-async/util.js +0 -37
  553. package/schematics/migrations/xhr-factory/index.d.ts +0 -10
  554. package/schematics/migrations/xhr-factory/index.js +0 -104
  555. package/src/r3_symbols.d.ts +0 -1025
  556. package/testing/testing.metadata.json +0 -1
  557. package/testing.d.ts +0 -7
  558. package/testing.metadata.json +0 -1
@@ -1,38 +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/static-queries/strategies/test_strategy/test_strategy", ["require", "exports"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.QueryTestStrategy = void 0;
20
- /**
21
- * Query timing strategy that is used for queries used within test files. The query
22
- * timing is not analyzed for test files as the template strategy cannot work within
23
- * spec files (due to missing component modules) and the usage strategy is not capable
24
- * of detecting the timing of queries based on how they are used in tests.
25
- */
26
- class QueryTestStrategy {
27
- setup() { }
28
- /**
29
- * Detects the timing for a given query. For queries within tests, we always
30
- * add a TODO and print a message saying that the timing can't be detected for tests.
31
- */
32
- detectTiming(query) {
33
- return { timing: null, message: 'Timing within tests cannot be detected.' };
34
- }
35
- }
36
- exports.QueryTestStrategy = QueryTestStrategy;
37
- });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3N0YXRpYy1xdWVyaWVzL3N0cmF0ZWdpZXMvdGVzdF9zdHJhdGVneS90ZXN0X3N0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUtIOzs7OztPQUtHO0lBQ0gsTUFBYSxpQkFBaUI7UUFDNUIsS0FBSyxLQUFJLENBQUM7UUFFVjs7O1dBR0c7UUFDSCxZQUFZLENBQUMsS0FBd0I7WUFDbkMsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLHlDQUF5QyxFQUFDLENBQUM7UUFDNUUsQ0FBQztLQUNGO0lBVkQsOENBVUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtOZ1F1ZXJ5RGVmaW5pdGlvbn0gZnJvbSAnLi4vLi4vYW5ndWxhci9xdWVyeS1kZWZpbml0aW9uJztcbmltcG9ydCB7VGltaW5nUmVzdWx0LCBUaW1pbmdTdHJhdGVneX0gZnJvbSAnLi4vdGltaW5nLXN0cmF0ZWd5JztcblxuLyoqXG4gKiBRdWVyeSB0aW1pbmcgc3RyYXRlZ3kgdGhhdCBpcyB1c2VkIGZvciBxdWVyaWVzIHVzZWQgd2l0aGluIHRlc3QgZmlsZXMuIFRoZSBxdWVyeVxuICogdGltaW5nIGlzIG5vdCBhbmFseXplZCBmb3IgdGVzdCBmaWxlcyBhcyB0aGUgdGVtcGxhdGUgc3RyYXRlZ3kgY2Fubm90IHdvcmsgd2l0aGluXG4gKiBzcGVjIGZpbGVzIChkdWUgdG8gbWlzc2luZyBjb21wb25lbnQgbW9kdWxlcykgYW5kIHRoZSB1c2FnZSBzdHJhdGVneSBpcyBub3QgY2FwYWJsZVxuICogb2YgZGV0ZWN0aW5nIHRoZSB0aW1pbmcgb2YgcXVlcmllcyBiYXNlZCBvbiBob3cgdGhleSBhcmUgdXNlZCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXJ5VGVzdFN0cmF0ZWd5IGltcGxlbWVudHMgVGltaW5nU3RyYXRlZ3kge1xuICBzZXR1cCgpIHt9XG5cbiAgLyoqXG4gICAqIERldGVjdHMgdGhlIHRpbWluZyBmb3IgYSBnaXZlbiBxdWVyeS4gRm9yIHF1ZXJpZXMgd2l0aGluIHRlc3RzLCB3ZSBhbHdheXNcbiAgICogYWRkIGEgVE9ETyBhbmQgcHJpbnQgYSBtZXNzYWdlIHNheWluZyB0aGF0IHRoZSB0aW1pbmcgY2FuJ3QgYmUgZGV0ZWN0ZWQgZm9yIHRlc3RzLlxuICAgKi9cbiAgZGV0ZWN0VGltaW5nKHF1ZXJ5OiBOZ1F1ZXJ5RGVmaW5pdGlvbik6IFRpbWluZ1Jlc3VsdCB7XG4gICAgcmV0dXJuIHt0aW1pbmc6IG51bGwsIG1lc3NhZ2U6ICdUaW1pbmcgd2l0aGluIHRlc3RzIGNhbm5vdCBiZSBkZXRlY3RlZC4nfTtcbiAgfVxufVxuIl19
@@ -1,19 +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/static-queries/strategies/timing-strategy" />
9
- import { NgQueryDefinition, QueryTiming } from '../angular/query-definition';
10
- export interface TimingStrategy {
11
- /** Sets up the given strategy. Throws if the strategy could not be set up. */
12
- setup(): void;
13
- /** Detects the timing result for a given query. */
14
- detectTiming(query: NgQueryDefinition): TimingResult;
15
- }
16
- export declare type TimingResult = {
17
- timing: QueryTiming | null;
18
- message?: string;
19
- };
@@ -1,20 +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/static-queries/strategies/timing-strategy", ["require", "exports"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltaW5nLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvc3RhdGljLXF1ZXJpZXMvc3RyYXRlZ2llcy90aW1pbmctc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TmdRdWVyeURlZmluaXRpb24sIFF1ZXJ5VGltaW5nfSBmcm9tICcuLi9hbmd1bGFyL3F1ZXJ5LWRlZmluaXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWluZ1N0cmF0ZWd5IHtcbiAgLyoqIFNldHMgdXAgdGhlIGdpdmVuIHN0cmF0ZWd5LiBUaHJvd3MgaWYgdGhlIHN0cmF0ZWd5IGNvdWxkIG5vdCBiZSBzZXQgdXAuICovXG4gIHNldHVwKCk6IHZvaWQ7XG4gIC8qKiBEZXRlY3RzIHRoZSB0aW1pbmcgcmVzdWx0IGZvciBhIGdpdmVuIHF1ZXJ5LiAqL1xuICBkZXRlY3RUaW1pbmcocXVlcnk6IE5nUXVlcnlEZWZpbml0aW9uKTogVGltaW5nUmVzdWx0O1xufVxuXG5leHBvcnQgdHlwZSBUaW1pbmdSZXN1bHQgPSB7XG4gIHRpbWluZzogUXVlcnlUaW1pbmd8bnVsbDtcbiAgbWVzc2FnZT86IHN0cmluZztcbn07XG4iXX0=
@@ -1,82 +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/static-queries/strategies/usage_strategy/declaration_usage_visitor" />
9
- import * as ts from 'typescript';
10
- export declare type FunctionContext = Map<ts.Node, ts.Node>;
11
- export declare enum ResolvedUsage {
12
- SYNCHRONOUS = 0,
13
- ASYNCHRONOUS = 1,
14
- AMBIGUOUS = 2
15
- }
16
- /**
17
- * Class that can be used to determine if a given TypeScript node is used within
18
- * other given TypeScript nodes. This is achieved by walking through all children
19
- * of the given node and checking for usages of the given declaration. The visitor
20
- * also handles potential control flow changes caused by call/new expressions.
21
- */
22
- export declare class DeclarationUsageVisitor {
23
- private declaration;
24
- private typeChecker;
25
- private baseContext;
26
- /** Set of visited symbols that caused a jump in control flow. */
27
- private visitedJumpExprNodes;
28
- /**
29
- * Queue of nodes that need to be checked for declaration usage and
30
- * are guaranteed to be executed synchronously.
31
- */
32
- private nodeQueue;
33
- /**
34
- * Nodes which need to be checked for declaration usage but aren't
35
- * guaranteed to execute synchronously.
36
- */
37
- private ambiguousNodeQueue;
38
- /**
39
- * Function context that holds the TypeScript node values for all parameters
40
- * of the currently analyzed function block.
41
- */
42
- private context;
43
- constructor(declaration: ts.Node, typeChecker: ts.TypeChecker, baseContext?: FunctionContext);
44
- private isReferringToSymbol;
45
- private addJumpExpressionToQueue;
46
- private addNewExpressionToQueue;
47
- private visitPropertyAccessors;
48
- private visitBinaryExpression;
49
- getResolvedNodeUsage(searchNode: ts.Node): ResolvedUsage;
50
- private isSynchronouslyUsedInNode;
51
- /**
52
- * Peeks into the given jump expression by adding all function like declarations
53
- * which are referenced in the jump expression arguments to the ambiguous node
54
- * queue. These arguments could technically access the given declaration but it's
55
- * not guaranteed that the jump expression is executed. In that case the resolved
56
- * usage is ambiguous.
57
- */
58
- private peekIntoJumpExpression;
59
- /**
60
- * Resolves a given node from the context. In case the node is not mapped in
61
- * the context, the original node is returned.
62
- */
63
- private _resolveNodeFromContext;
64
- /**
65
- * Updates the context to reflect the newly set parameter values. This allows future
66
- * references to function parameters to be resolved to the actual node through the context.
67
- */
68
- private _updateContext;
69
- /**
70
- * Resolves the declaration of a given TypeScript node. For example an identifier can
71
- * refer to a function parameter. This parameter can then be resolved through the
72
- * function context.
73
- */
74
- private _resolveDeclarationOfNode;
75
- /**
76
- * Gets the declaration symbol of a given TypeScript node. Resolves aliased
77
- * symbols to the symbol containing the value declaration.
78
- */
79
- private _getDeclarationSymbolOfNode;
80
- /** Gets the symbol of the given property access expression. */
81
- private _getPropertyAccessSymbol;
82
- }
@@ -1,369 +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/static-queries/strategies/usage_strategy/declaration_usage_visitor", ["require", "exports", "typescript", "@angular/core/schematics/utils/typescript/functions", "@angular/core/schematics/utils/typescript/property_name"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.DeclarationUsageVisitor = exports.ResolvedUsage = void 0;
20
- const ts = require("typescript");
21
- const functions_1 = require("@angular/core/schematics/utils/typescript/functions");
22
- const property_name_1 = require("@angular/core/schematics/utils/typescript/property_name");
23
- var ResolvedUsage;
24
- (function (ResolvedUsage) {
25
- ResolvedUsage[ResolvedUsage["SYNCHRONOUS"] = 0] = "SYNCHRONOUS";
26
- ResolvedUsage[ResolvedUsage["ASYNCHRONOUS"] = 1] = "ASYNCHRONOUS";
27
- ResolvedUsage[ResolvedUsage["AMBIGUOUS"] = 2] = "AMBIGUOUS";
28
- })(ResolvedUsage = exports.ResolvedUsage || (exports.ResolvedUsage = {}));
29
- /**
30
- * List of TypeScript syntax tokens that can be used within a binary expression as
31
- * compound assignment. These imply a read and write of the left-side expression.
32
- */
33
- const BINARY_COMPOUND_TOKENS = [
34
- ts.SyntaxKind.CaretEqualsToken,
35
- ts.SyntaxKind.AsteriskEqualsToken,
36
- ts.SyntaxKind.AmpersandEqualsToken,
37
- ts.SyntaxKind.BarEqualsToken,
38
- ts.SyntaxKind.AsteriskAsteriskEqualsToken,
39
- ts.SyntaxKind.PlusEqualsToken,
40
- ts.SyntaxKind.MinusEqualsToken,
41
- ts.SyntaxKind.SlashEqualsToken,
42
- ];
43
- /**
44
- * List of known asynchronous external call expressions which aren't analyzable
45
- * but are guaranteed to not execute the passed argument synchronously.
46
- */
47
- const ASYNC_EXTERNAL_CALLS = [
48
- { parent: ['Promise'], name: 'then' },
49
- { parent: ['Promise'], name: 'catch' },
50
- { parent: [null, 'Window'], name: 'requestAnimationFrame' },
51
- { parent: [null, 'Window'], name: 'setTimeout' },
52
- { parent: [null, 'Window'], name: 'setInterval' },
53
- { parent: ['*'], name: 'addEventListener' },
54
- ];
55
- /**
56
- * Class that can be used to determine if a given TypeScript node is used within
57
- * other given TypeScript nodes. This is achieved by walking through all children
58
- * of the given node and checking for usages of the given declaration. The visitor
59
- * also handles potential control flow changes caused by call/new expressions.
60
- */
61
- class DeclarationUsageVisitor {
62
- constructor(declaration, typeChecker, baseContext = new Map()) {
63
- this.declaration = declaration;
64
- this.typeChecker = typeChecker;
65
- this.baseContext = baseContext;
66
- /** Set of visited symbols that caused a jump in control flow. */
67
- this.visitedJumpExprNodes = new Set();
68
- /**
69
- * Queue of nodes that need to be checked for declaration usage and
70
- * are guaranteed to be executed synchronously.
71
- */
72
- this.nodeQueue = [];
73
- /**
74
- * Nodes which need to be checked for declaration usage but aren't
75
- * guaranteed to execute synchronously.
76
- */
77
- this.ambiguousNodeQueue = [];
78
- /**
79
- * Function context that holds the TypeScript node values for all parameters
80
- * of the currently analyzed function block.
81
- */
82
- this.context = new Map();
83
- }
84
- isReferringToSymbol(node) {
85
- const symbol = this.typeChecker.getSymbolAtLocation(node);
86
- return !!symbol && symbol.valueDeclaration === this.declaration;
87
- }
88
- addJumpExpressionToQueue(callExpression) {
89
- const node = (0, functions_1.unwrapExpression)(callExpression.expression);
90
- // In case the given expression is already referring to a function-like declaration,
91
- // we don't need to resolve the symbol of the expression as the jump expression is
92
- // defined inline and we can just add the given node to the queue.
93
- if ((0, functions_1.isFunctionLikeDeclaration)(node) && node.body) {
94
- this.nodeQueue.push(node.body);
95
- return;
96
- }
97
- const callExprSymbol = this._getDeclarationSymbolOfNode(node);
98
- if (!callExprSymbol || !callExprSymbol.valueDeclaration) {
99
- this.peekIntoJumpExpression(callExpression);
100
- return;
101
- }
102
- const expressionDecl = this._resolveNodeFromContext(callExprSymbol.valueDeclaration);
103
- // Note that we should not add previously visited symbols to the queue as
104
- // this could cause cycles.
105
- if (!(0, functions_1.isFunctionLikeDeclaration)(expressionDecl) ||
106
- this.visitedJumpExprNodes.has(expressionDecl) || !expressionDecl.body) {
107
- this.peekIntoJumpExpression(callExpression);
108
- return;
109
- }
110
- // Update the context for the new jump expression and its specified arguments.
111
- this._updateContext(callExpression.arguments, expressionDecl.parameters);
112
- this.visitedJumpExprNodes.add(expressionDecl);
113
- this.nodeQueue.push(expressionDecl.body);
114
- }
115
- addNewExpressionToQueue(node) {
116
- const newExprSymbol = this._getDeclarationSymbolOfNode((0, functions_1.unwrapExpression)(node.expression));
117
- // Only handle new expressions which resolve to classes. Technically "new" could
118
- // also call void functions or objects with a constructor signature. Also note that
119
- // we should not visit already visited symbols as this could cause cycles.
120
- if (!newExprSymbol || !newExprSymbol.valueDeclaration ||
121
- !ts.isClassDeclaration(newExprSymbol.valueDeclaration)) {
122
- this.peekIntoJumpExpression(node);
123
- return;
124
- }
125
- const targetConstructor = newExprSymbol.valueDeclaration.members.find(ts.isConstructorDeclaration);
126
- if (targetConstructor && targetConstructor.body &&
127
- !this.visitedJumpExprNodes.has(targetConstructor)) {
128
- // Update the context for the new expression and its specified constructor
129
- // parameters if arguments are passed to the class constructor.
130
- if (node.arguments) {
131
- this._updateContext(node.arguments, targetConstructor.parameters);
132
- }
133
- this.visitedJumpExprNodes.add(targetConstructor);
134
- this.nodeQueue.push(targetConstructor.body);
135
- }
136
- else {
137
- this.peekIntoJumpExpression(node);
138
- }
139
- }
140
- visitPropertyAccessors(node, checkSetter, checkGetter) {
141
- const propertySymbol = this._getPropertyAccessSymbol(node);
142
- if ((propertySymbol === null || propertySymbol === void 0 ? void 0 : propertySymbol.declarations) === undefined || propertySymbol.declarations.length === 0 ||
143
- (propertySymbol.getFlags() & ts.SymbolFlags.Accessor) === 0) {
144
- return;
145
- }
146
- // Since we checked the symbol flags and the symbol is describing an accessor, the
147
- // declarations are guaranteed to only contain the getters and setters.
148
- const accessors = propertySymbol.declarations;
149
- accessors
150
- .filter(d => (checkSetter && ts.isSetAccessor(d) || checkGetter && ts.isGetAccessor(d)) &&
151
- d.body && !this.visitedJumpExprNodes.has(d))
152
- .forEach(d => {
153
- this.visitedJumpExprNodes.add(d);
154
- this.nodeQueue.push(d.body);
155
- });
156
- }
157
- visitBinaryExpression(node) {
158
- const leftExpr = (0, functions_1.unwrapExpression)(node.left);
159
- if (!ts.isPropertyAccessExpression(leftExpr)) {
160
- return false;
161
- }
162
- if (BINARY_COMPOUND_TOKENS.indexOf(node.operatorToken.kind) !== -1) {
163
- // Compound assignments always cause the getter and setter to be called.
164
- // Therefore we need to check the setter and getter of the property access.
165
- this.visitPropertyAccessors(leftExpr, /* setter */ true, /* getter */ true);
166
- }
167
- else if (node.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
168
- // Value assignments using the equals token only cause the "setter" to be called.
169
- // Therefore we need to analyze the setter declaration of the property access.
170
- this.visitPropertyAccessors(leftExpr, /* setter */ true, /* getter */ false);
171
- }
172
- else {
173
- // If the binary expression is not an assignment, it's a simple property read and
174
- // we need to check the getter declaration if present.
175
- this.visitPropertyAccessors(leftExpr, /* setter */ false, /* getter */ true);
176
- }
177
- return true;
178
- }
179
- getResolvedNodeUsage(searchNode) {
180
- this.nodeQueue = [searchNode];
181
- this.visitedJumpExprNodes.clear();
182
- this.context.clear();
183
- // Copy base context values into the current function block context. The
184
- // base context is useful if nodes need to be mapped to other nodes. e.g.
185
- // abstract super class methods are mapped to their implementation node of
186
- // the derived class.
187
- this.baseContext.forEach((value, key) => this.context.set(key, value));
188
- return this.isSynchronouslyUsedInNode(searchNode);
189
- }
190
- isSynchronouslyUsedInNode(searchNode) {
191
- this.ambiguousNodeQueue = [];
192
- while (this.nodeQueue.length) {
193
- const node = this.nodeQueue.shift();
194
- if (ts.isIdentifier(node) && this.isReferringToSymbol(node)) {
195
- return ResolvedUsage.SYNCHRONOUS;
196
- }
197
- // Handle call expressions within TypeScript nodes that cause a jump in control
198
- // flow. We resolve the call expression value declaration and add it to the node queue.
199
- if (ts.isCallExpression(node)) {
200
- this.addJumpExpressionToQueue(node);
201
- }
202
- // Handle new expressions that cause a jump in control flow. We resolve the
203
- // constructor declaration of the target class and add it to the node queue.
204
- if (ts.isNewExpression(node)) {
205
- this.addNewExpressionToQueue(node);
206
- }
207
- // We also need to handle binary expressions where a value can be either assigned to
208
- // the property, or a value is read from a property expression. Depending on the
209
- // binary expression operator, setters or getters need to be analyzed.
210
- if (ts.isBinaryExpression(node)) {
211
- // In case the binary expression contained a property expression on the left side, we
212
- // don't want to continue visiting this property expression on its own. This is necessary
213
- // because visiting the expression on its own causes a loss of context. e.g. property
214
- // access expressions *do not* always cause a value read (e.g. property assignments)
215
- if (this.visitBinaryExpression(node)) {
216
- this.nodeQueue.push(node.right);
217
- continue;
218
- }
219
- }
220
- // Handle property access expressions. Property expressions which are part of binary
221
- // expressions won't be added to the node queue, so these access expressions are
222
- // guaranteed to be "read" accesses and we need to check the "getter" declaration.
223
- if (ts.isPropertyAccessExpression(node)) {
224
- this.visitPropertyAccessors(node, /* setter */ false, /* getter */ true);
225
- }
226
- // Do not visit nodes that declare a block of statements but are not executed
227
- // synchronously (e.g. function declarations). We only want to check TypeScript
228
- // nodes which are synchronously executed in the control flow.
229
- if (!(0, functions_1.isFunctionLikeDeclaration)(node)) {
230
- this.nodeQueue.push(...node.getChildren());
231
- }
232
- }
233
- if (this.ambiguousNodeQueue.length) {
234
- // Update the node queue to all stored ambiguous nodes. These nodes are not
235
- // guaranteed to be executed and therefore in case of a synchronous usage
236
- // within one of those nodes, the resolved usage is ambiguous.
237
- this.nodeQueue = this.ambiguousNodeQueue;
238
- const usage = this.isSynchronouslyUsedInNode(searchNode);
239
- return usage === ResolvedUsage.SYNCHRONOUS ? ResolvedUsage.AMBIGUOUS : usage;
240
- }
241
- return ResolvedUsage.ASYNCHRONOUS;
242
- }
243
- /**
244
- * Peeks into the given jump expression by adding all function like declarations
245
- * which are referenced in the jump expression arguments to the ambiguous node
246
- * queue. These arguments could technically access the given declaration but it's
247
- * not guaranteed that the jump expression is executed. In that case the resolved
248
- * usage is ambiguous.
249
- */
250
- peekIntoJumpExpression(jumpExp) {
251
- if (!jumpExp.arguments) {
252
- return;
253
- }
254
- // For some call expressions we don't want to add the arguments to the
255
- // ambiguous node queue. e.g. "setTimeout" is not analyzable but is
256
- // guaranteed to execute its argument asynchronously. We handle a subset
257
- // of these call expressions by having a hardcoded list of some.
258
- if (ts.isCallExpression(jumpExp)) {
259
- const symbol = this._getDeclarationSymbolOfNode(jumpExp.expression);
260
- if (symbol && symbol.valueDeclaration) {
261
- const parentNode = symbol.valueDeclaration.parent;
262
- if (parentNode && (ts.isInterfaceDeclaration(parentNode) || ts.isSourceFile(parentNode)) &&
263
- (ts.isMethodSignature(symbol.valueDeclaration) ||
264
- ts.isFunctionDeclaration(symbol.valueDeclaration)) &&
265
- symbol.valueDeclaration.name) {
266
- const parentName = ts.isInterfaceDeclaration(parentNode) ? parentNode.name.text : null;
267
- const callName = (0, property_name_1.getPropertyNameText)(symbol.valueDeclaration.name);
268
- if (ASYNC_EXTERNAL_CALLS.some(c => (c.name === callName &&
269
- (c.parent.indexOf(parentName) !== -1 || c.parent.indexOf('*') !== -1)))) {
270
- return;
271
- }
272
- }
273
- }
274
- }
275
- jumpExp.arguments.forEach((node) => {
276
- node = this._resolveDeclarationOfNode(node);
277
- if (ts.isVariableDeclaration(node) && node.initializer) {
278
- node = node.initializer;
279
- }
280
- if ((0, functions_1.isFunctionLikeDeclaration)(node) && !!node.body) {
281
- this.ambiguousNodeQueue.push(node.body);
282
- }
283
- });
284
- }
285
- /**
286
- * Resolves a given node from the context. In case the node is not mapped in
287
- * the context, the original node is returned.
288
- */
289
- _resolveNodeFromContext(node) {
290
- if (this.context.has(node)) {
291
- return this.context.get(node);
292
- }
293
- return node;
294
- }
295
- /**
296
- * Updates the context to reflect the newly set parameter values. This allows future
297
- * references to function parameters to be resolved to the actual node through the context.
298
- */
299
- _updateContext(callArgs, parameters) {
300
- parameters.forEach((parameter, index) => {
301
- let argumentNode = callArgs[index];
302
- if (!argumentNode) {
303
- if (!parameter.initializer) {
304
- return;
305
- }
306
- // Argument can be undefined in case the function parameter has a default
307
- // value. In that case we want to store the parameter default value in the context.
308
- argumentNode = parameter.initializer;
309
- }
310
- if (ts.isIdentifier(argumentNode)) {
311
- this.context.set(parameter, this._resolveDeclarationOfNode(argumentNode));
312
- }
313
- else {
314
- this.context.set(parameter, argumentNode);
315
- }
316
- });
317
- }
318
- /**
319
- * Resolves the declaration of a given TypeScript node. For example an identifier can
320
- * refer to a function parameter. This parameter can then be resolved through the
321
- * function context.
322
- */
323
- _resolveDeclarationOfNode(node) {
324
- const symbol = this._getDeclarationSymbolOfNode(node);
325
- if (!symbol || !symbol.valueDeclaration) {
326
- return node;
327
- }
328
- return this._resolveNodeFromContext(symbol.valueDeclaration);
329
- }
330
- /**
331
- * Gets the declaration symbol of a given TypeScript node. Resolves aliased
332
- * symbols to the symbol containing the value declaration.
333
- */
334
- _getDeclarationSymbolOfNode(node) {
335
- let symbol = this.typeChecker.getSymbolAtLocation(node);
336
- if (!symbol) {
337
- return null;
338
- }
339
- // Resolve the symbol to it's original declaration symbol.
340
- while (symbol.flags & ts.SymbolFlags.Alias) {
341
- symbol = this.typeChecker.getAliasedSymbol(symbol);
342
- }
343
- return symbol;
344
- }
345
- /** Gets the symbol of the given property access expression. */
346
- _getPropertyAccessSymbol(node) {
347
- let propertySymbol = this._getDeclarationSymbolOfNode(node.name);
348
- if (!propertySymbol || !propertySymbol.valueDeclaration) {
349
- return null;
350
- }
351
- if (!this.context.has(propertySymbol.valueDeclaration)) {
352
- return propertySymbol;
353
- }
354
- // In case the context has the value declaration of the given property access
355
- // name identifier, we need to replace the "propertySymbol" with the symbol
356
- // referring to the resolved symbol based on the context. e.g. abstract properties
357
- // can ultimately resolve into an accessor declaration based on the implementation.
358
- const contextNode = this._resolveNodeFromContext(propertySymbol.valueDeclaration);
359
- if (!ts.isAccessor(contextNode)) {
360
- return null;
361
- }
362
- // Resolve the symbol referring to the "accessor" using the name identifier
363
- // of the accessor declaration.
364
- return this._getDeclarationSymbolOfNode(contextNode.name);
365
- }
366
- }
367
- exports.DeclarationUsageVisitor = DeclarationUsageVisitor;
368
- });
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb25fdXNhZ2VfdmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3N0YXRpYy1xdWVyaWVzL3N0cmF0ZWdpZXMvdXNhZ2Vfc3RyYXRlZ3kvZGVjbGFyYXRpb25fdXNhZ2VfdmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFFSCxpQ0FBaUM7SUFDakMsbUZBQW1HO0lBQ25HLDJGQUErRTtJQUkvRSxJQUFZLGFBSVg7SUFKRCxXQUFZLGFBQWE7UUFDdkIsK0RBQVcsQ0FBQTtRQUNYLGlFQUFZLENBQUE7UUFDWiwyREFBUyxDQUFBO0lBQ1gsQ0FBQyxFQUpXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBSXhCO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxzQkFBc0IsR0FBRztRQUM3QixFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtRQUM5QixFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQjtRQUNqQyxFQUFFLENBQUMsVUFBVSxDQUFDLG9CQUFvQjtRQUNsQyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWM7UUFDNUIsRUFBRSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7UUFDekMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlO1FBQzdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO1FBQzlCLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO0tBQy9CLENBQUM7SUFFRjs7O09BR0c7SUFDSCxNQUFNLG9CQUFvQixHQUFHO1FBQzNCLEVBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQztRQUNuQyxFQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUM7UUFDcEMsRUFBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFDO1FBQ3pELEVBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUM7UUFDOUMsRUFBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBQztRQUMvQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBQztLQUMxQyxDQUFDO0lBRUY7Ozs7O09BS0c7SUFDSCxNQUFhLHVCQUF1QjtRQXNCbEMsWUFDWSxXQUFvQixFQUFVLFdBQTJCLEVBQ3pELGNBQStCLElBQUksR0FBRyxFQUFFO1lBRHhDLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1lBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1lBQ3pELGdCQUFXLEdBQVgsV0FBVyxDQUE2QjtZQXZCcEQsaUVBQWlFO1lBQ3pELHlCQUFvQixHQUFHLElBQUksR0FBRyxFQUFXLENBQUM7WUFFbEQ7OztlQUdHO1lBQ0ssY0FBUyxHQUFjLEVBQUUsQ0FBQztZQUVsQzs7O2VBR0c7WUFDSyx1QkFBa0IsR0FBYyxFQUFFLENBQUM7WUFFM0M7OztlQUdHO1lBQ0ssWUFBTyxHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBSVUsQ0FBQztRQUVoRCxtQkFBbUIsQ0FBQyxJQUFhO1lBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2xFLENBQUM7UUFFTyx3QkFBd0IsQ0FBQyxjQUFpQztZQUNoRSxNQUFNLElBQUksR0FBRyxJQUFBLDRCQUFnQixFQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUV6RCxvRkFBb0Y7WUFDcEYsa0ZBQWtGO1lBQ2xGLGtFQUFrRTtZQUNsRSxJQUFJLElBQUEscUNBQXlCLEVBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixPQUFPO2FBQ1I7WUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFOUQsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM1QyxPQUFPO2FBQ1I7WUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFckYseUVBQXlFO1lBQ3pFLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsSUFBQSxxQ0FBeUIsRUFBQyxjQUFjLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO2dCQUN6RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzVDLE9BQU87YUFDUjtZQUVELDhFQUE4RTtZQUM5RSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFTyx1QkFBdUIsQ0FBQyxJQUFzQjtZQUNwRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBQSw0QkFBZ0IsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUUxRixnRkFBZ0Y7WUFDaEYsbUZBQW1GO1lBQ25GLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQjtnQkFDakQsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsT0FBTzthQUNSO1lBRUQsTUFBTSxpQkFBaUIsR0FDbkIsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFFN0UsSUFBSSxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUMzQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDckQsMEVBQTBFO2dCQUMxRSwrREFBK0Q7Z0JBQy9ELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNuRTtnQkFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztRQUNILENBQUM7UUFFTyxzQkFBc0IsQ0FDMUIsSUFBaUMsRUFBRSxXQUFvQixFQUFFLFdBQW9CO1lBQy9FLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUzRCxJQUFJLENBQUEsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLFlBQVksTUFBSyxTQUFTLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDdEYsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQy9ELE9BQU87YUFDUjtZQUVELGtGQUFrRjtZQUNsRix1RUFBdUU7WUFDdkUsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLFlBQXdDLENBQUM7WUFFMUUsU0FBUztpQkFDSixNQUFNLENBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbkQsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNULENBQUM7UUFFTyxxQkFBcUIsQ0FBQyxJQUF5QjtZQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFBLDRCQUFnQixFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM1QyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDbEUsd0VBQXdFO2dCQUN4RSwyRUFBMkU7Z0JBQzNFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0U7aUJBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQkFDaEUsaUZBQWlGO2dCQUNqRiw4RUFBOEU7Z0JBQzlFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUU7aUJBQU07Z0JBQ0wsaUZBQWlGO2dCQUNqRixzREFBc0Q7Z0JBQ3RELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDOUU7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxvQkFBb0IsQ0FBQyxVQUFtQjtZQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFckIsd0VBQXdFO1lBQ3hFLHlFQUF5RTtZQUN6RSwwRUFBMEU7WUFDMUUscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFdkUsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVPLHlCQUF5QixDQUFDLFVBQW1CO1lBQ25ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7WUFFN0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUcsQ0FBQztnQkFFckMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDM0QsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDO2lCQUNsQztnQkFFRCwrRUFBK0U7Z0JBQy9FLHVGQUF1RjtnQkFDdkYsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzdCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDckM7Z0JBRUQsMkVBQTJFO2dCQUMzRSw0RUFBNEU7Z0JBQzVFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNwQztnQkFFRCxvRkFBb0Y7Z0JBQ3BGLGdGQUFnRjtnQkFDaEYsc0VBQXNFO2dCQUN0RSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IscUZBQXFGO29CQUNyRix5RkFBeUY7b0JBQ3pGLHFGQUFxRjtvQkFDckYsb0ZBQW9GO29CQUNwRixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNoQyxTQUFTO3FCQUNWO2lCQUNGO2dCQUVELG9GQUFvRjtnQkFDcEYsZ0ZBQWdGO2dCQUNoRixrRkFBa0Y7Z0JBQ2xGLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN2QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMxRTtnQkFFRCw2RUFBNkU7Z0JBQzdFLCtFQUErRTtnQkFDL0UsOERBQThEO2dCQUM5RCxJQUFJLENBQUMsSUFBQSxxQ0FBeUIsRUFBQyxJQUFJLENBQUMsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztpQkFDNUM7YUFDRjtZQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtnQkFDbEMsMkVBQTJFO2dCQUMzRSx5RUFBeUU7Z0JBQ3pFLDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDekQsT0FBTyxLQUFLLEtBQUssYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQzlFO1lBQ0QsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDO1FBQ3BDLENBQUM7UUFFRDs7Ozs7O1dBTUc7UUFDSyxzQkFBc0IsQ0FBQyxPQUEyQztZQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDdEIsT0FBTzthQUNSO1lBRUQsc0VBQXNFO1lBQ3RFLG1FQUFtRTtZQUNuRSx3RUFBd0U7WUFDeEUsZ0VBQWdFO1lBQ2hFLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7b0JBQ3JDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7b0JBQ2xELElBQUksVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3BGLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzs0QkFDN0MsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUNuRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO3dCQUNoQyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ3ZGLE1BQU0sUUFBUSxHQUFHLElBQUEsbUNBQW1CLEVBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNuRSxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FDckIsQ0FBQyxDQUFDLEVBQUUsQ0FDQSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUTs0QkFDbkIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTs0QkFDcEYsT0FBTzt5QkFDUjtxQkFDRjtpQkFDRjthQUNGO1lBRUQsT0FBTyxDQUFDLFNBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFhLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFNUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDdEQsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ3pCO2dCQUVELElBQUksSUFBQSxxQ0FBeUIsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDbEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQ7OztXQUdHO1FBQ0ssdUJBQXVCLENBQUMsSUFBYTtZQUMzQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO2FBQ2hDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQ7OztXQUdHO1FBQ0ssY0FBYyxDQUNsQixRQUFxQyxFQUFFLFVBQWlEO1lBQzFGLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksWUFBWSxHQUFZLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFNUMsSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7d0JBQzFCLE9BQU87cUJBQ1I7b0JBRUQseUVBQXlFO29CQUN6RSxtRkFBbUY7b0JBQ25GLFlBQVksR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO2lCQUN0QztnQkFFRCxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztpQkFDM0U7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUMzQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSyx5QkFBeUIsQ0FBQyxJQUFhO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV0RCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO2dCQUN2QyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVEOzs7V0FHRztRQUNLLDJCQUEyQixDQUFDLElBQWE7WUFDL0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV4RCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCwwREFBMEQ7WUFDMUQsT0FBTyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO2dCQUMxQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwRDtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCwrREFBK0Q7UUFDdkQsd0JBQXdCLENBQUMsSUFBaUM7WUFDaEUsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVqRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFO2dCQUN2RCxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUN0RCxPQUFPLGNBQWMsQ0FBQzthQUN2QjtZQUVELDZFQUE2RTtZQUM3RSwyRUFBMkU7WUFDM0Usa0ZBQWtGO1lBQ2xGLG1GQUFtRjtZQUNuRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFbEYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCwyRUFBMkU7WUFDM0UsK0JBQStCO1lBQy9CLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxDQUFDO0tBQ0Y7SUE3V0QsMERBNldDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtpc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uLCB1bndyYXBFeHByZXNzaW9ufSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy90eXBlc2NyaXB0L2Z1bmN0aW9ucyc7XG5pbXBvcnQge2dldFByb3BlcnR5TmFtZVRleHR9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvcHJvcGVydHlfbmFtZSc7XG5cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uQ29udGV4dCA9IE1hcDx0cy5Ob2RlLCB0cy5Ob2RlPjtcblxuZXhwb3J0IGVudW0gUmVzb2x2ZWRVc2FnZSB7XG4gIFNZTkNIUk9OT1VTLFxuICBBU1lOQ0hST05PVVMsXG4gIEFNQklHVU9VUyxcbn1cblxuLyoqXG4gKiBMaXN0IG9mIFR5cGVTY3JpcHQgc3ludGF4IHRva2VucyB0aGF0IGNhbiBiZSB1c2VkIHdpdGhpbiBhIGJpbmFyeSBleHByZXNzaW9uIGFzXG4gKiBjb21wb3VuZCBhc3NpZ25tZW50LiBUaGVzZSBpbXBseSBhIHJlYWQgYW5kIHdyaXRlIG9mIHRoZSBsZWZ0LXNpZGUgZXhwcmVzc2lvbi5cbiAqL1xuY29uc3QgQklOQVJZX0NPTVBPVU5EX1RPS0VOUyA9IFtcbiAgdHMuU3ludGF4S2luZC5DYXJldEVxdWFsc1Rva2VuLFxuICB0cy5TeW50YXhLaW5kLkFzdGVyaXNrRXF1YWxzVG9rZW4sXG4gIHRzLlN5bnRheEtpbmQuQW1wZXJzYW5kRXF1YWxzVG9rZW4sXG4gIHRzLlN5bnRheEtpbmQuQmFyRXF1YWxzVG9rZW4sXG4gIHRzLlN5bnRheEtpbmQuQXN0ZXJpc2tBc3Rlcmlza0VxdWFsc1Rva2VuLFxuICB0cy5TeW50YXhLaW5kLlBsdXNFcXVhbHNUb2tlbixcbiAgdHMuU3ludGF4S2luZC5NaW51c0VxdWFsc1Rva2VuLFxuICB0cy5TeW50YXhLaW5kLlNsYXNoRXF1YWxzVG9rZW4sXG5dO1xuXG4vKipcbiAqIExpc3Qgb2Yga25vd24gYXN5bmNocm9ub3VzIGV4dGVybmFsIGNhbGwgZXhwcmVzc2lvbnMgd2hpY2ggYXJlbid0IGFuYWx5emFibGVcbiAqIGJ1dCBhcmUgZ3VhcmFudGVlZCB0byBub3QgZXhlY3V0ZSB0aGUgcGFzc2VkIGFyZ3VtZW50IHN5bmNocm9ub3VzbHkuXG4gKi9cbmNvbnN0IEFTWU5DX0VYVEVSTkFMX0NBTExTID0gW1xuICB7cGFyZW50OiBbJ1Byb21pc2UnXSwgbmFtZTogJ3RoZW4nfSxcbiAge3BhcmVudDogWydQcm9taXNlJ10sIG5hbWU6ICdjYXRjaCd9LFxuICB7cGFyZW50OiBbbnVsbCwgJ1dpbmRvdyddLCBuYW1lOiAncmVxdWVzdEFuaW1hdGlvbkZyYW1lJ30sXG4gIHtwYXJlbnQ6IFtudWxsLCAnV2luZG93J10sIG5hbWU6ICdzZXRUaW1lb3V0J30sXG4gIHtwYXJlbnQ6IFtudWxsLCAnV2luZG93J10sIG5hbWU6ICdzZXRJbnRlcnZhbCd9LFxuICB7cGFyZW50OiBbJyonXSwgbmFtZTogJ2FkZEV2ZW50TGlzdGVuZXInfSxcbl07XG5cbi8qKlxuICogQ2xhc3MgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbiBUeXBlU2NyaXB0IG5vZGUgaXMgdXNlZCB3aXRoaW5cbiAqIG90aGVyIGdpdmVuIFR5cGVTY3JpcHQgbm9kZXMuIFRoaXMgaXMgYWNoaWV2ZWQgYnkgd2Fsa2luZyB0aHJvdWdoIGFsbCBjaGlsZHJlblxuICogb2YgdGhlIGdpdmVuIG5vZGUgYW5kIGNoZWNraW5nIGZvciB1c2FnZXMgb2YgdGhlIGdpdmVuIGRlY2xhcmF0aW9uLiBUaGUgdmlzaXRvclxuICogYWxzbyBoYW5kbGVzIHBvdGVudGlhbCBjb250cm9sIGZsb3cgY2hhbmdlcyBjYXVzZWQgYnkgY2FsbC9uZXcgZXhwcmVzc2lvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWNsYXJhdGlvblVzYWdlVmlzaXRvciB7XG4gIC8qKiBTZXQgb2YgdmlzaXRlZCBzeW1ib2xzIHRoYXQgY2F1c2VkIGEganVtcCBpbiBjb250cm9sIGZsb3cuICovXG4gIHByaXZhdGUgdmlzaXRlZEp1bXBFeHByTm9kZXMgPSBuZXcgU2V0PHRzLk5vZGU+KCk7XG5cbiAgLyoqXG4gICAqIFF1ZXVlIG9mIG5vZGVzIHRoYXQgbmVlZCB0byBiZSBjaGVja2VkIGZvciBkZWNsYXJhdGlvbiB1c2FnZSBhbmRcbiAgICogYXJlIGd1YXJhbnRlZWQgdG8gYmUgZXhlY3V0ZWQgc3luY2hyb25vdXNseS5cbiAgICovXG4gIHByaXZhdGUgbm9kZVF1ZXVlOiB0cy5Ob2RlW10gPSBbXTtcblxuICAvKipcbiAgICogTm9kZXMgd2hpY2ggbmVlZCB0byBiZSBjaGVja2VkIGZvciBkZWNsYXJhdGlvbiB1c2FnZSBidXQgYXJlbid0XG4gICAqIGd1YXJhbnRlZWQgdG8gZXhlY3V0ZSBzeW5jaHJvbm91c2x5LlxuICAgKi9cbiAgcHJpdmF0ZSBhbWJpZ3VvdXNOb2RlUXVldWU6IHRzLk5vZGVbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiBjb250ZXh0IHRoYXQgaG9sZHMgdGhlIFR5cGVTY3JpcHQgbm9kZSB2YWx1ZXMgZm9yIGFsbCBwYXJhbWV0ZXJzXG4gICAqIG9mIHRoZSBjdXJyZW50bHkgYW5hbHl6ZWQgZnVuY3Rpb24gYmxvY2suXG4gICAqL1xuICBwcml2YXRlIGNvbnRleHQ6IEZ1bmN0aW9uQ29udGV4dCA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZGVjbGFyYXRpb246IHRzLk5vZGUsIHByaXZhdGUgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgICAgcHJpdmF0ZSBiYXNlQ29udGV4dDogRnVuY3Rpb25Db250ZXh0ID0gbmV3IE1hcCgpKSB7fVxuXG4gIHByaXZhdGUgaXNSZWZlcnJpbmdUb1N5bWJvbChub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3ltYm9sID0gdGhpcy50eXBlQ2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xuICAgIHJldHVybiAhIXN5bWJvbCAmJiBzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiA9PT0gdGhpcy5kZWNsYXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSnVtcEV4cHJlc3Npb25Ub1F1ZXVlKGNhbGxFeHByZXNzaW9uOiB0cy5DYWxsRXhwcmVzc2lvbikge1xuICAgIGNvbnN0IG5vZGUgPSB1bndyYXBFeHByZXNzaW9uKGNhbGxFeHByZXNzaW9uLmV4cHJlc3Npb24pO1xuXG4gICAgLy8gSW4gY2FzZSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBpcyBhbHJlYWR5IHJlZmVycmluZyB0byBhIGZ1bmN0aW9uLWxpa2UgZGVjbGFyYXRpb24sXG4gICAgLy8gd2UgZG9uJ3QgbmVlZCB0byByZXNvbHZlIHRoZSBzeW1ib2wgb2YgdGhlIGV4cHJlc3Npb24gYXMgdGhlIGp1bXAgZXhwcmVzc2lvbiBpc1xuICAgIC8vIGRlZmluZWQgaW5saW5lIGFuZCB3ZSBjYW4ganVzdCBhZGQgdGhlIGdpdmVuIG5vZGUgdG8gdGhlIHF1ZXVlLlxuICAgIGlmIChpc0Z1bmN0aW9uTGlrZURlY2xhcmF0aW9uKG5vZGUpICYmIG5vZGUuYm9keSkge1xuICAgICAgdGhpcy5ub2RlUXVldWUucHVzaChub2RlLmJvZHkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGxFeHByU3ltYm9sID0gdGhpcy5fZ2V0RGVjbGFyYXRpb25TeW1ib2xPZk5vZGUobm9kZSk7XG5cbiAgICBpZiAoIWNhbGxFeHByU3ltYm9sIHx8ICFjYWxsRXhwclN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKSB7XG4gICAgICB0aGlzLnBlZWtJbnRvSnVtcEV4cHJlc3Npb24oY2FsbEV4cHJlc3Npb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cHJlc3Npb25EZWNsID0gdGhpcy5fcmVzb2x2ZU5vZGVGcm9tQ29udGV4dChjYWxsRXhwclN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKTtcblxuICAgIC8vIE5vdGUgdGhhdCB3ZSBzaG91bGQgbm90IGFkZCBwcmV2aW91c2x5IHZpc2l0ZWQgc3ltYm9scyB0byB0aGUgcXVldWUgYXNcbiAgICAvLyB0aGlzIGNvdWxkIGNhdXNlIGN5Y2xlcy5cbiAgICBpZiAoIWlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24oZXhwcmVzc2lvbkRlY2wpIHx8XG4gICAgICAgIHRoaXMudmlzaXRlZEp1bXBFeHByTm9kZXMuaGFzKGV4cHJlc3Npb25EZWNsKSB8fCAhZXhwcmVzc2lvbkRlY2wuYm9keSkge1xuICAgICAgdGhpcy5wZWVrSW50b0p1bXBFeHByZXNzaW9uKGNhbGxFeHByZXNzaW9uKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGNvbnRleHQgZm9yIHRoZSBuZXcganVtcCBleHByZXNzaW9uIGFuZCBpdHMgc3BlY2lmaWVkIGFyZ3VtZW50cy5cbiAgICB0aGlzLl91cGRhdGVDb250ZXh0KGNhbGxFeHByZXNzaW9uLmFyZ3VtZW50cywgZXhwcmVzc2lvbkRlY2wucGFyYW1ldGVycyk7XG5cbiAgICB0aGlzLnZpc2l0ZWRKdW1wRXhwck5vZGVzLmFkZChleHByZXNzaW9uRGVjbCk7XG4gICAgdGhpcy5ub2RlUXVldWUucHVzaChleHByZXNzaW9uRGVjbC5ib2R5KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTmV3RXhwcmVzc2lvblRvUXVldWUobm9kZTogdHMuTmV3RXhwcmVzc2lvbikge1xuICAgIGNvbnN0IG5ld0V4cHJTeW1ib2wgPSB0aGlzLl9nZXREZWNsYXJhdGlvblN5bWJvbE9mTm9kZSh1bndyYXBFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbikpO1xuXG4gICAgLy8gT25seSBoYW5kbGUgbmV3IGV4cHJlc3Npb25zIHdoaWNoIHJlc29sdmUgdG8gY2xhc3Nlcy4gVGVjaG5pY2FsbHkgXCJuZXdcIiBjb3VsZFxuICAgIC8vIGFsc28gY2FsbCB2b2lkIGZ1bmN0aW9ucyBvciBvYmplY3RzIHdpdGggYSBjb25zdHJ1Y3RvciBzaWduYXR1cmUuIEFsc28gbm90ZSB0aGF0XG4gICAgLy8gd2Ugc2hvdWxkIG5vdCB2aXNpdCBhbHJlYWR5IHZpc2l0ZWQgc3ltYm9scyBhcyB0aGlzIGNvdWxkIGNhdXNlIGN5Y2xlcy5cbiAgICBpZiAoIW5ld0V4cHJTeW1ib2wgfHwgIW5ld0V4cHJTeW1ib2wudmFsdWVEZWNsYXJhdGlvbiB8fFxuICAgICAgICAhdHMuaXNDbGFzc0RlY2xhcmF0aW9uKG5ld0V4cHJTeW1ib2wudmFsdWVEZWNsYXJhdGlvbikpIHtcbiAgICAgIHRoaXMucGVla0ludG9KdW1wRXhwcmVzc2lvbihub2RlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRDb25zdHJ1Y3RvciA9XG4gICAgICAgIG5ld0V4cHJTeW1ib2wudmFsdWVEZWNsYXJhdGlvbi5tZW1iZXJzLmZpbmQodHMuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKTtcblxuICAgIGlmICh0YXJnZXRDb25zdHJ1Y3RvciAmJiB0YXJnZXRDb25zdHJ1Y3Rvci5ib2R5ICYmXG4gICAgICAgICF0aGlzLnZpc2l0ZWRKdW1wRXhwck5vZGVzLmhhcyh0YXJnZXRDb25zdHJ1Y3RvcikpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgY29udGV4dCBmb3IgdGhlIG5ldyBleHByZXNzaW9uIGFuZCBpdHMgc3BlY2lmaWVkIGNvbnN0cnVjdG9yXG4gICAgICAvLyBwYXJhbWV0ZXJzIGlmIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3Rvci5cbiAgICAgIGlmIChub2RlLmFyZ3VtZW50cykge1xuICAgICAgICB0aGlzLl91cGRhdGVDb250ZXh0KG5vZGUuYXJndW1lbnRzLCB0YXJnZXRDb25zdHJ1Y3Rvci5wYXJhbWV0ZXJzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy52aXNpdGVkSnVtcEV4cHJOb2Rlcy5hZGQodGFyZ2V0Q29uc3RydWN0b3IpO1xuICAgICAgdGhpcy5ub2RlUXVldWUucHVzaCh0YXJnZXRDb25zdHJ1Y3Rvci5ib2R5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wZWVrSW50b0p1bXBFeHByZXNzaW9uKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmlzaXRQcm9wZXJ0eUFjY2Vzc29ycyhcbiAgICAgIG5vZGU6IHRzLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiwgY2hlY2tTZXR0ZXI6IGJvb2xlYW4sIGNoZWNrR2V0dGVyOiBib29sZWFuKSB7XG4gICAgY29uc3QgcHJvcGVydHlTeW1ib2wgPSB0aGlzLl9nZXRQcm9wZXJ0eUFjY2Vzc1N5bWJvbChub2RlKTtcblxuICAgIGlmIChwcm9wZXJ0eVN5bWJvbD8uZGVjbGFyYXRpb25zID09PSB1bmRlZmluZWQgfHwgcHJvcGVydHlTeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAocHJvcGVydHlTeW1ib2wuZ2V0RmxhZ3MoKSAmIHRzLlN5bWJvbEZsYWdzLkFjY2Vzc29yKSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIGNoZWNrZWQgdGhlIHN5bWJvbCBmbGFncyBhbmQgdGhlIHN5bWJvbCBpcyBkZXNjcmliaW5nIGFuIGFjY2Vzc29yLCB0aGVcbiAgICAvLyBkZWNsYXJhdGlvbnMgYXJlIGd1YXJhbnRlZWQgdG8gb25seSBjb250YWluIHRoZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzLlxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHByb3BlcnR5U3ltYm9sLmRlY2xhcmF0aW9ucyBhcyB0cy5BY2Nlc3NvckRlY2xhcmF0aW9uW107XG5cbiAgICBhY2Nlc3NvcnNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIGQgPT4gKGNoZWNrU2V0dGVyICYmIHRzLmlzU2V0QWNjZXNzb3IoZCkgfHwgY2hlY2tHZXR0ZXIgJiYgdHMuaXNHZXRBY2Nlc3NvcihkKSkgJiZcbiAgICAgICAgICAgICAgICBkLmJvZHkgJiYgIXRoaXMudmlzaXRlZEp1bXBFeHByTm9kZXMuaGFzKGQpKVxuICAgICAgICAuZm9yRWFjaChkID0+IHtcbiAgICAgICAgICB0aGlzLnZpc2l0ZWRKdW1wRXhwck5vZGVzLmFkZChkKTtcbiAgICAgICAgICB0aGlzLm5vZGVRdWV1ZS5wdXNoKGQuYm9keSEpO1xuICAgICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGU6IHRzLkJpbmFyeUV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBsZWZ0RXhwciA9IHVud3JhcEV4cHJlc3Npb24obm9kZS5sZWZ0KTtcblxuICAgIGlmICghdHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obGVmdEV4cHIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKEJJTkFSWV9DT01QT1VORF9UT0tFTlMuaW5kZXhPZihub2RlLm9wZXJhdG9yVG9rZW4ua2luZCkgIT09IC0xKSB7XG4gICAgICAvLyBDb21wb3VuZCBhc3NpZ25tZW50cyBhbHdheXMgY2F1c2UgdGhlIGdldHRlciBhbmQgc2V0dGVyIHRvIGJlIGNhbGxlZC5cbiAgICAgIC8vIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBzZXR0ZXIgYW5kIGdldHRlciBvZiB0aGUgcHJvcGVydHkgYWNjZXNzLlxuICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzb3JzKGxlZnRFeHByLCAvKiBzZXR0ZXIgKi8gdHJ1ZSwgLyogZ2V0dGVyICovIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5vcGVyYXRvclRva2VuLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRXF1YWxzVG9rZW4pIHtcbiAgICAgIC8vIFZhbHVlIGFzc2lnbm1lbnRzIHVzaW5nIHRoZSBlcXVhbHMgdG9rZW4gb25seSBjYXVzZSB0aGUgXCJzZXR0ZXJcIiB0byBiZSBjYWxsZWQuXG4gICAgICAvLyBUaGVyZWZvcmUgd2UgbmVlZCB0byBhbmFseXplIHRoZSBzZXR0ZXIgZGVjbGFyYXRpb24gb2YgdGhlIHByb3BlcnR5IGFjY2Vzcy5cbiAgICAgIHRoaXMudmlzaXRQcm9wZXJ0eUFjY2Vzc29ycyhsZWZ0RXhwciwgLyogc2V0dGVyICovIHRydWUsIC8qIGdldHRlciAqLyBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZSBiaW5hcnkgZXhwcmVzc2lvbiBpcyBub3QgYW4gYXNzaWdubWVudCwgaXQncyBhIHNpbXBsZSBwcm9wZXJ0eSByZWFkIGFuZFxuICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayB0aGUgZ2V0dGVyIGRlY2xhcmF0aW9uIGlmIHByZXNlbnQuXG4gICAgICB0aGlzLnZpc2l0UHJvcGVydHlBY2Nlc3NvcnMobGVmdEV4cHIsIC8qIHNldHRlciAqLyBmYWxzZSwgLyogZ2V0dGVyICovIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFJlc29sdmVkTm9kZVVzYWdlKHNlYXJjaE5vZGU6IHRzLk5vZGUpOiBSZXNvbHZlZFVzYWdlIHtcbiAgICB0aGlzLm5vZGVRdWV1ZSA9IFtzZWFyY2hOb2RlXTtcbiAgICB0aGlzLnZpc2l0ZWRKdW1wRXhwck5vZGVzLmNsZWFyKCk7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyKCk7XG5cbiAgICAvLyBDb3B5IGJhc2UgY29udGV4dCB2YWx1ZXMgaW50byB0aGUgY3VycmVudCBmdW5jdGlvbiBibG9jayBjb250ZXh0LiBUaGVcbiAgICAvLyBiYXNlIGNvbnRleHQgaXMgdXNlZnVsIGlmIG5vZGVzIG5lZWQgdG8gYmUgbWFwcGVkIHRvIG90aGVyIG5vZGVzLiBlLmcuXG4gICAgLy8gYWJzdHJhY3Qgc3VwZXIgY2xhc3MgbWV0aG9kcyBhcmUgbWFwcGVkIHRvIHRoZWlyIGltcGxlbWVudGF0aW9uIG5vZGUgb2ZcbiAgICAvLyB0aGUgZGVyaXZlZCBjbGFzcy5cbiAgICB0aGlzLmJhc2VDb250ZXh0LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHRoaXMuY29udGV4dC5zZXQoa2V5LCB2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuaXNTeW5jaHJvbm91c2x5VXNlZEluTm9kZShzZWFyY2hOb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTeW5jaHJvbm91c2x5VXNlZEluTm9kZShzZWFyY2hOb2RlOiB0cy5Ob2RlKTogUmVzb2x2ZWRVc2FnZSB7XG4gICAgdGhpcy5hbWJpZ3VvdXNOb2RlUXVldWUgPSBbXTtcblxuICAgIHdoaWxlICh0aGlzLm5vZGVRdWV1ZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGVRdWV1ZS5zaGlmdCgpITtcblxuICAgICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSAmJiB0aGlzLmlzUmVmZXJyaW5nVG9TeW1ib2wobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIFJlc29sdmVkVXNhZ2UuU1lOQ0hST05PVVM7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBjYWxsIGV4cHJlc3Npb25zIHdpdGhpbiBUeXBlU2NyaXB0IG5vZGVzIHRoYXQgY2F1c2UgYSBqdW1wIGluIGNvbnRyb2xcbiAgICAgIC8vIGZsb3cuIFdlIHJlc29sdmUgdGhlIGNhbGwgZXhwcmVzc2lvbiB2YWx1ZSBkZWNsYXJhdGlvbiBhbmQgYWRkIGl0IHRvIHRoZSBub2RlIHF1ZXVlLlxuICAgICAgaWYgKHRzLmlzQ2FsbEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICAgICAgdGhpcy5hZGRKdW1wRXhwcmVzc2lvblRvUXVldWUobm9kZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBuZXcgZXhwcmVzc2lvbnMgdGhhdCBjYXVzZSBhIGp1bXAgaW4gY29udHJvbCBmbG93LiBXZSByZXNvbHZlIHRoZVxuICAgICAgLy8gY29uc3RydWN0b3IgZGVjbGFyYXRpb24gb2YgdGhlIHRhcmdldCBjbGFzcyBhbmQgYWRkIGl0IHRvIHRoZSBub2RlIHF1ZXVlLlxuICAgICAgaWYgKHRzLmlzTmV3RXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgICB0aGlzLmFkZE5ld0V4cHJlc3Npb25Ub1F1ZXVlKG5vZGUpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gaGFuZGxlIGJpbmFyeSBleHByZXNzaW9ucyB3aGVyZSBhIHZhbHVlIGNhbiBiZSBlaXRoZXIgYXNzaWduZWQgdG9cbiAgICAgIC8vIHRoZSBwcm9wZXJ0eSwgb3IgYSB2YWx1ZSBpcyByZWFkIGZyb20gYSBwcm9wZXJ0eSBleHByZXNzaW9uLiBEZXBlbmRpbmcgb24gdGhlXG4gICAgICAvLyBiaW5hcnkgZXhwcmVzc2lvbiBvcGVyYXRvciwgc2V0dGVycyBvciBnZXR0ZXJzIG5lZWQgdG8gYmUgYW5hbHl6ZWQuXG4gICAgICBpZiAodHMuaXNCaW5hcnlFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIGJpbmFyeSBleHByZXNzaW9uIGNvbnRhaW5lZCBhIHByb3BlcnR5IGV4cHJlc3Npb24gb24gdGhlIGxlZnQgc2lkZSwgd2VcbiAgICAgICAgLy8gZG9uJ3Qgd2FudCB0byBjb250aW51ZSB2aXNpdGluZyB0aGlzIHByb3BlcnR5IGV4cHJlc3Npb24gb24gaXRzIG93bi4gVGhpcyBpcyBuZWNlc3NhcnlcbiAgICAgICAgLy8gYmVjYXVzZSB2aXNpdGluZyB0aGUgZXhwcmVzc2lvbiBvbiBpdHMgb3duIGNhdXNlcyBhIGxvc3Mgb2YgY29udGV4dC4gZS5nLiBwcm9wZXJ0eVxuICAgICAgICAvLyBhY2Nlc3MgZXhwcmVzc2lvbnMgKmRvIG5vdCogYWx3YXlzIGNhdXNlIGEgdmFsdWUgcmVhZCAoZS5nLiBwcm9wZXJ0eSBhc3NpZ25tZW50cylcbiAgICAgICAgaWYgKHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICAgICAgdGhpcy5ub2RlUXVldWUucHVzaChub2RlLnJpZ2h0KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgcHJvcGVydHkgYWNjZXNzIGV4cHJlc3Npb25zLiBQcm9wZXJ0eSBleHByZXNzaW9ucyB3aGljaCBhcmUgcGFydCBvZiBiaW5hcnlcbiAgICAgIC8vIGV4cHJlc3Npb25zIHdvbid0IGJlIGFkZGVkIHRvIHRoZSBub2RlIHF1ZXVlLCBzbyB0aGVzZSBhY2Nlc3MgZXhwcmVzc2lvbnMgYXJlXG4gICAgICAvLyBndWFyYW50ZWVkIHRvIGJlIFwicmVhZFwiIGFjY2Vzc2VzIGFuZCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBcImdldHRlclwiIGRlY2xhcmF0aW9uLlxuICAgICAgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICAgIHRoaXMudmlzaXRQcm9wZXJ0eUFjY2Vzc29ycyhub2RlLCAvKiBzZXR0ZXIgKi8gZmFsc2UsIC8qIGdldHRlciAqLyB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgLy8gRG8gbm90IHZpc2l0IG5vZGVzIHRoYXQgZGVjbGFyZSBhIGJsb2NrIG9mIHN0YXRlbWVudHMgYnV0IGFyZSBub3QgZXhlY3V0ZWRcbiAgICAgIC8vIHN5bmNocm9ub3VzbHkgKGUuZy4gZnVuY3Rpb24gZGVjbGFyYXRpb25zKS4gV2Ugb25seSB3YW50IHRvIGNoZWNrIFR5cGVTY3JpcHRcbiAgICAgIC8vIG5vZGVzIHdoaWNoIGFyZSBzeW5jaHJvbm91c2x5IGV4ZWN1dGVkIGluIHRoZSBjb250cm9sIGZsb3cuXG4gICAgICBpZiAoIWlzRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgICAgdGhpcy5ub2RlUXVldWUucHVzaCguLi5ub2RlLmdldENoaWxkcmVuKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFtYmlndW91c05vZGVRdWV1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgbm9kZSBxdWV1ZSB0byBhbGwgc3RvcmVkIGFtYmlndW91cyBub2Rlcy4gVGhlc2Ugbm9kZXMgYXJlIG5vdFxuICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSBleGVjdXRlZCBhbmQgdGhlcmVmb3JlIGluIGNhc2Ugb2YgYSBzeW5jaHJvbm91cyB1c2FnZVxuICAgICAgLy8gd2l0aGluIG9uZSBvZiB0aG9zZSBub2RlcywgdGhlIHJlc29sdmVkIHVzYWdlIGlzIGFtYmlndW91cy5cbiAgICAgIHRoaXMubm9kZVF1ZXVlID0gdGhpcy5hbWJpZ3VvdXNOb2RlUXVldWU7XG4gICAgICBjb25zdCB1c2FnZSA9IHRoaXMuaXNTeW5jaHJvbm91c2x5VXNlZEluTm9kZShzZWFyY2hOb2RlKTtcbiAgICAgIHJldHVybiB1c2FnZSA9PT0gUmVzb2x2ZWRVc2FnZS5TWU5DSFJPTk9VUyA/IFJlc29sdmVkVXNhZ2UuQU1CSUdVT1VTIDogdXNhZ2U7XG4gICAgfVxuICAgIHJldHVybiBSZXNvbHZlZFVzYWdlLkFTWU5DSFJPTk9VUztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZWVrcyBpbnRvIHRoZSBnaXZlbiBqdW1wIGV4cHJlc3Npb24gYnkgYWRkaW5nIGFsbCBmdW5jdGlvbiBsaWtlIGRlY2xhcmF0aW9uc1xuICAgKiB3aGljaCBhcmUgcmVmZXJlbmNlZCBpbiB0aGUganVtcCBleHByZXNzaW9uIGFyZ3VtZW50cyB0byB0aGUgYW1iaWd1b3VzIG5vZGVcbiAgICogcXVldWUuIFRoZXNlIGFyZ3VtZW50cyBjb3VsZCB0ZWNobmljYWxseSBhY2Nlc3MgdGhlIGdpdmVuIGRlY2xhcmF0aW9uIGJ1dCBpdCdzXG4gICAqIG5vdCBndWFyYW50ZWVkIHRoYXQgdGhlIGp1bXAgZXhwcmVzc2lvbiBpcyBleGVjdXRlZC4gSW4gdGhhdCBjYXNlIHRoZSByZXNvbHZlZFxuICAgKiB1c2FnZSBpcyBhbWJpZ3VvdXMuXG4gICAqL1xuICBwcml2YXRlIHBlZWtJbnRvSnVtcEV4cHJlc3Npb24oanVtcEV4cDogdHMuQ2FsbEV4cHJlc3Npb258dHMuTmV3RXhwcmVzc2lvbikge1xuICAgIGlmICghanVtcEV4cC5hcmd1bWVudHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBGb3Igc29tZSBjYWxsIGV4cHJlc3Npb25zIHdlIGRvbid0IHdhbnQgdG8gYWRkIHRoZSBhcmd1bWVudHMgdG8gdGhlXG4gICAgLy8gYW1iaWd1b3VzIG5vZGUgcXVldWUuIGUuZy4gXCJzZXRUaW1lb3V0XCIgaXMgbm90IGFuYWx5emFibGUgYnV0IGlzXG4gICAgLy8gZ3VhcmFudGVlZCB0byBleGVjdXRlIGl0cyBhcmd1bWVudCBhc3luY2hyb25vdXNseS4gV2UgaGFuZGxlIGEgc3Vic2V0XG4gICAgLy8gb2YgdGhlc2UgY2FsbCBleHByZXNzaW9ucyBieSBoYXZpbmcgYSBoYXJkY29kZWQgbGlzdCBvZiBzb21lLlxuICAgIGlmICh0cy5pc0NhbGxFeHByZXNzaW9uKGp1bXBFeHApKSB7XG4gICAgICBjb25zdCBzeW1ib2wgPSB0aGlzLl9nZXREZWNsYXJhdGlvblN5bWJvbE9mTm9kZShqdW1wRXhwLmV4cHJlc3Npb24pO1xuICAgICAgaWYgKHN5bWJvbCAmJiBzeW1ib2wudmFsdWVEZWNsYXJhdGlvbikge1xuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24ucGFyZW50O1xuICAgICAgICBpZiAocGFyZW50Tm9kZSAmJiAodHMuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihwYXJlbnROb2RlKSB8fCB0cy5pc1NvdXJjZUZpbGUocGFyZW50Tm9kZSkpICYmXG4gICAgICAgICAgICAodHMuaXNNZXRob2RTaWduYXR1cmUoc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pIHx8XG4gICAgICAgICAgICAgdHMuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKSkgJiZcbiAgICAgICAgICAgIHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uLm5hbWUpIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnROYW1lID0gdHMuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihwYXJlbnROb2RlKSA/IHBhcmVudE5vZGUubmFtZS50ZXh0IDogbnVsbDtcbiAgICAgICAgICBjb25zdCBjYWxsTmFtZSA9IGdldFByb3BlcnR5TmFtZVRleHQoc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24ubmFtZSk7XG4gICAgICAgICAgaWYgKEFTWU5DX0VYVEVSTkFMX0NBTExTLnNvbWUoXG4gICAgICAgICAgICAgICAgICBjID0+XG4gICAgICAgICAgICAgICAgICAgICAgKGMubmFtZSA9PT0gY2FsbE5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgKGMucGFyZW50LmluZGV4T2YocGFyZW50TmFtZSkgIT09IC0xIHx8IGMucGFyZW50LmluZGV4T2YoJyonKSAhPT0gLTEpKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBqdW1wRXhwLmFyZ3VtZW50cyEuZm9yRWFjaCgobm9kZTogdHMuTm9kZSkgPT4ge1xuICAgICAgbm9kZSA9IHRoaXMuX3Jlc29sdmVEZWNsYXJhdGlvbk9mTm9kZShub2RlKTtcblxuICAgICAgaWYgKHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSAmJiBub2RlLmluaXRpYWxpemVyKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLmluaXRpYWxpemVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbihub2RlKSAmJiAhIW5vZGUuYm9keSkge1xuICAgICAgICB0aGlzLmFtYmlndW91c05vZGVRdWV1ZS5wdXNoKG5vZGUuYm9keSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYSBnaXZlbiBub2RlIGZyb20gdGhlIGNvbnRleHQuIEluIGNhc2UgdGhlIG5vZGUgaXMgbm90IG1hcHBlZCBpblxuICAgKiB0aGUgY29udGV4dCwgdGhlIG9yaWdpbmFsIG5vZGUgaXMgcmV0dXJuZWQuXG4gICAqL1xuICBwcml2YXRlIF9yZXNvbHZlTm9kZUZyb21Db250ZXh0KG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHtcbiAgICBpZiAodGhpcy5jb250ZXh0Lmhhcyhub2RlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5nZXQobm9kZSkhO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb250ZXh0IHRvIHJlZmxlY3QgdGhlIG5ld2x5IHNldCBwYXJhbWV0ZXIgdmFsdWVzLiBUaGlzIGFsbG93cyBmdXR1cmVcbiAgICogcmVmZXJlbmNlcyB0byBmdW5jdGlvbiBwYXJhbWV0ZXJzIHRvIGJlIHJlc29sdmVkIHRvIHRoZSBhY3R1YWwgbm9kZSB0aHJvdWdoIHRoZSBjb250ZXh0LlxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlQ29udGV4dChcbiAgICAgIGNhbGxBcmdzOiB0cy5Ob2RlQXJyYXk8dHMuRXhwcmVzc2lvbj4sIHBhcmFtZXRlcnM6IHRzLk5vZGVBcnJheTx0cy5QYXJhbWV0ZXJEZWNsYXJhdGlvbj4pIHtcbiAgICBwYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlciwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBhcmd1bWVudE5vZGU6IHRzLk5vZGUgPSBjYWxsQXJnc1tpbmRleF07XG5cbiAgICAgIGlmICghYXJndW1lbnROb2RlKSB7XG4gICAgICAgIGlmICghcGFyYW1ldGVyLmluaXRpYWxpemVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXJndW1lbnQgY2FuIGJlIHVuZGVmaW5lZCBpbiBjYXNlIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdFxuICAgICAgICAvLyB2YWx1ZS4gSW4gdGhhdCBjYXNlIHdlIHdhbnQgdG8gc3RvcmUgdGhlIHBhcmFtZXRlciBkZWZhdWx0IHZhbHVlIGluIHRoZSBjb250ZXh0LlxuICAgICAgICBhcmd1bWVudE5vZGUgPSBwYXJhbWV0ZXIuaW5pdGlhbGl6ZXI7XG4gICAgICB9XG5cbiAgICAgIGlmICh0cy5pc0lkZW50aWZpZXIoYXJndW1lbnROb2RlKSkge1xuICAgICAgICB0aGlzLmNvbnRleHQuc2V0KHBhcmFtZXRlciwgdGhpcy5fcmVzb2x2ZURlY2xhcmF0aW9uT2ZOb2RlKGFyZ3VtZW50Tm9kZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNldChwYXJhbWV0ZXIsIGFyZ3VtZW50Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGRlY2xhcmF0aW9uIG9mIGEgZ2l2ZW4gVHlwZVNjcmlwdCBub2RlLiBGb3IgZXhhbXBsZSBhbiBpZGVudGlmaWVyIGNhblxuICAgKiByZWZlciB0byBhIGZ1bmN0aW9uIHBhcmFtZXRlci4gVGhpcyBwYXJhbWV0ZXIgY2FuIHRoZW4gYmUgcmVzb2x2ZWQgdGhyb3VnaCB0aGVcbiAgICogZnVuY3Rpb24gY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgX3Jlc29sdmVEZWNsYXJhdGlvbk9mTm9kZShub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB7XG4gICAgY29uc3Qgc3ltYm9sID0gdGhpcy5fZ2V0RGVjbGFyYXRpb25TeW1ib2xPZk5vZGUobm9kZSk7XG5cbiAgICBpZiAoIXN5bWJvbCB8fCAhc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9yZXNvbHZlTm9kZUZyb21Db250ZXh0KHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZWNsYXJhdGlvbiBzeW1ib2wgb2YgYSBnaXZlbiBUeXBlU2NyaXB0IG5vZGUuIFJlc29sdmVzIGFsaWFzZWRcbiAgICogc3ltYm9scyB0byB0aGUgc3ltYm9sIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGRlY2xhcmF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0RGVjbGFyYXRpb25TeW1ib2xPZk5vZGUobm9kZTogdHMuTm9kZSk6IHRzLlN5bWJvbHxudWxsIHtcbiAgICBsZXQgc3ltYm9sID0gdGhpcy50eXBlQ2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xuXG4gICAgaWYgKCFzeW1ib2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFJlc29sdmUgdGhlIHN5bWJvbCB0byBpdCdzIG9yaWdpbmFsIGRlY2xhcmF0aW9uIHN5bWJvbC5cbiAgICB3aGlsZSAoc3ltYm9sLmZsYWdzICYgdHMuU3ltYm9sRmxhZ3MuQWxpYXMpIHtcbiAgICAgIHN5bWJvbCA9IHRoaXMudHlwZUNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbChzeW1ib2wpO1xuICAgIH1cblxuICAgIHJldHVybiBzeW1ib2w7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgc3ltYm9sIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbi4gKi9cbiAgcHJpdmF0ZSBfZ2V0UHJvcGVydHlBY2Nlc3NTeW1ib2wobm9kZTogdHMuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKTogdHMuU3ltYm9sfG51bGwge1xuICAgIGxldCBwcm9wZXJ0eVN5bWJvbCA9IHRoaXMuX2dldERlY2xhcmF0aW9uU3ltYm9sT2ZOb2RlKG5vZGUubmFtZSk7XG5cbiAgICBpZiAoIXByb3BlcnR5U3ltYm9sIHx8ICFwcm9wZXJ0eVN5bWJvbC52YWx1ZURlY2xhcmF0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udGV4dC5oYXMocHJvcGVydHlTeW1ib2wudmFsdWVEZWNsYXJhdGlvbikpIHtcbiAgICAgIHJldHVybiBwcm9wZXJ0eVN5bWJvbDtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIHRoZSBjb250ZXh0IGhhcyB0aGUgdmFsdWUgZGVjbGFyYXRpb24gb2YgdGhlIGdpdmVuIHByb3BlcnR5IGFjY2Vzc1xuICAgIC8vIG5hbWUgaWRlbnRpZmllciwgd2UgbmVlZCB0byByZXBsYWNlIHRoZSBcInByb3BlcnR5U3ltYm9sXCIgd2l0aCB0aGUgc3ltYm9sXG4gICAgLy8gcmVmZXJyaW5nIHRvIHRoZSByZXNvbHZlZCBzeW1ib2wgYmFzZWQgb24gdGhlIGNvbnRleHQuIGUuZy4gYWJzdHJhY3QgcHJvcGVydGllc1xuICAgIC8vIGNhbiB1bHRpbWF0ZWx5IHJlc29sdmUgaW50byBhbiBhY2Nlc3NvciBkZWNsYXJhdGlvbiBiYXNlZCBvbiB0aGUgaW1wbGVtZW50YXRpb24uXG4gICAgY29uc3QgY29udGV4dE5vZGUgPSB0aGlzLl9yZXNvbHZlTm9kZUZyb21Db250ZXh0KHByb3BlcnR5U3ltYm9sLnZhbHVlRGVjbGFyYXRpb24pO1xuXG4gICAgaWYgKCF0cy5pc0FjY2Vzc29yKGNvbnRleHROb2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gUmVzb2x2ZSB0aGUgc3ltYm9sIHJlZmVycmluZyB0byB0aGUgXCJhY2Nlc3NvclwiIHVzaW5nIHRoZSBuYW1lIGlkZW50aWZpZXJcbiAgICAvLyBvZiB0aGUgYWNjZXNzb3IgZGVjbGFyYXRpb24uXG4gICAgcmV0dXJuIHRoaXMuX2dldERlY2xhcmF0aW9uU3ltYm9sT2ZOb2RlKGNvbnRleHROb2RlLm5hbWUpO1xuICB9XG59XG4iXX0=
@@ -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/static-queries/strategies/usage_strategy/super_class_context" />
9
- import * as ts from 'typescript';
10
- import { ClassMetadataMap } from '../../angular/ng_query_visitor';
11
- import { FunctionContext } from './declaration_usage_visitor';
12
- /**
13
- * Updates the specified function context to map abstract super-class class members
14
- * to their implementation TypeScript nodes. This allows us to run the declaration visitor
15
- * for the super class with the context of the "baseClass" (e.g. with implemented abstract
16
- * class members)
17
- */
18
- export declare function updateSuperClassAbstractMembersContext(baseClass: ts.ClassDeclaration, context: FunctionContext, classMetadataMap: ClassMetadataMap): void;