@angular/core 13.0.0-next.8 → 13.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.d.ts +590 -955
- package/esm2020/core.mjs +5 -0
- package/esm2020/index.mjs +14 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/esm2020/src/application_init.mjs +140 -0
- package/esm2020/src/application_module.mjs +135 -0
- package/esm2020/src/application_ref.mjs +738 -0
- package/{esm2015/src/application_tokens.js → esm2020/src/application_tokens.mjs} +0 -0
- package/esm2020/src/change_detection/change_detection.mjs +31 -0
- package/esm2020/src/change_detection/change_detection_util.mjs +64 -0
- package/esm2020/src/change_detection/change_detector_ref.mjs +89 -0
- package/{esm2015/src/change_detection/constants.js → esm2020/src/change_detection/constants.mjs} +0 -0
- package/esm2020/src/change_detection/differs/default_iterable_differ.mjs +666 -0
- package/{esm2015/src/change_detection/differs/default_keyvalue_differ.js → esm2020/src/change_detection/differs/default_keyvalue_differ.mjs} +0 -0
- package/{esm2015/src/change_detection/differs/iterable_differs.js → esm2020/src/change_detection/differs/iterable_differs.mjs} +0 -0
- package/{esm2015/src/change_detection/differs/keyvalue_differs.js → esm2020/src/change_detection/differs/keyvalue_differs.mjs} +0 -0
- package/{esm2015/src/change_detection/pipe_transform.js → esm2020/src/change_detection/pipe_transform.mjs} +0 -0
- package/esm2020/src/change_detection.mjs +14 -0
- package/esm2020/src/codegen_private_exports.mjs +11 -0
- package/{esm2015/src/compiler/compiler_facade.js → esm2020/src/compiler/compiler_facade.mjs} +0 -0
- package/{esm2015/src/compiler/compiler_facade_interface.js → esm2020/src/compiler/compiler_facade_interface.mjs} +1 -1
- package/esm2020/src/console.mjs +26 -0
- package/esm2020/src/core.mjs +52 -0
- package/esm2020/src/core_private_export.mjs +34 -0
- package/esm2020/src/core_render3_private_export.mjs +46 -0
- package/esm2020/src/debug/debug_node.mjs +625 -0
- package/{esm2015/src/debug/proxy.js → esm2020/src/debug/proxy.mjs} +0 -0
- package/{esm2015/src/di/forward_ref.js → esm2020/src/di/forward_ref.mjs} +0 -0
- package/{esm2015/src/di/index.js → esm2020/src/di/index.mjs} +0 -0
- package/{esm2015/src/di/inject_switch.js → esm2020/src/di/inject_switch.mjs} +0 -0
- package/esm2020/src/di/injectable.mjs +27 -0
- package/esm2020/src/di/injection_token.mjs +82 -0
- package/esm2020/src/di/injector.mjs +323 -0
- package/esm2020/src/di/injector_compatibility.mjs +185 -0
- package/{esm2015/src/di/injector_marker.js → esm2020/src/di/injector_marker.mjs} +0 -0
- package/{esm2015/src/di/injector_token.js → esm2020/src/di/injector_token.mjs} +0 -0
- package/{esm2015/src/di/interface/defs.js → esm2020/src/di/interface/defs.mjs} +0 -0
- package/{esm2015/src/di/interface/injector.js → esm2020/src/di/interface/injector.mjs} +0 -0
- package/{esm2015/src/di/interface/provider.js → esm2020/src/di/interface/provider.mjs} +0 -0
- package/{esm2015/src/di/jit/environment.js → esm2020/src/di/jit/environment.mjs} +0 -0
- package/esm2020/src/di/jit/injectable.mjs +94 -0
- package/{esm2015/src/di/jit/util.js → esm2020/src/di/jit/util.mjs} +0 -0
- package/esm2020/src/di/metadata.mjs +60 -0
- package/esm2020/src/di/metadata_attr.mjs +24 -0
- package/{esm2015/src/di/null_injector.js → esm2020/src/di/null_injector.mjs} +0 -0
- package/{esm2015/src/di/provider_token.js → esm2020/src/di/provider_token.mjs} +0 -0
- package/{esm2015/src/di/r3_injector.js → esm2020/src/di/r3_injector.mjs} +0 -0
- package/{esm2015/src/di/reflective_errors.js → esm2020/src/di/reflective_errors.mjs} +0 -0
- package/{esm2015/src/di/reflective_injector.js → esm2020/src/di/reflective_injector.mjs} +0 -0
- package/{esm2015/src/di/reflective_key.js → esm2020/src/di/reflective_key.mjs} +0 -0
- package/{esm2015/src/di/reflective_provider.js → esm2020/src/di/reflective_provider.mjs} +0 -0
- package/{esm2015/src/di/scope.js → esm2020/src/di/scope.mjs} +0 -0
- package/esm2020/src/di/util.mjs +51 -0
- package/{esm2015/src/di.js → esm2020/src/di.mjs} +0 -0
- package/{esm2015/src/error_handler.js → esm2020/src/error_handler.mjs} +0 -0
- package/{esm2015/src/errors.js → esm2020/src/errors.mjs} +0 -0
- package/esm2020/src/event_emitter.mjs +53 -0
- package/{esm2015/src/i18n/locale_data_api.js → esm2020/src/i18n/locale_data_api.mjs} +0 -0
- package/esm2020/src/i18n/locale_en.mjs +17 -0
- package/{esm2015/src/i18n/localization.js → esm2020/src/i18n/localization.mjs} +0 -0
- package/{esm2015/src/i18n/tokens.js → esm2020/src/i18n/tokens.mjs} +0 -0
- package/{esm2015/src/interface/lifecycle_hooks.js → esm2020/src/interface/lifecycle_hooks.mjs} +0 -0
- package/{esm2015/src/interface/simple_change.js → esm2020/src/interface/simple_change.mjs} +0 -0
- package/{esm2015/src/interface/type.js → esm2020/src/interface/type.mjs} +0 -0
- package/{esm2015/src/ivy_switch.js → esm2020/src/ivy_switch.mjs} +2 -2
- package/esm2020/src/linker/compiler.mjs +136 -0
- package/{esm2015/src/linker/component_factory.js → esm2020/src/linker/component_factory.mjs} +0 -0
- package/{esm2015/src/linker/component_factory_resolver.js → esm2020/src/linker/component_factory_resolver.mjs} +0 -0
- package/esm2020/src/linker/element_ref.mjs +59 -0
- package/esm2020/src/linker/ng_module_factory.mjs +29 -0
- package/esm2020/src/linker/ng_module_factory_loader.mjs +42 -0
- package/esm2020/src/linker/ng_module_factory_loader_impl.mjs +10 -0
- package/{esm2015/src/linker/ng_module_factory_registration.js → esm2020/src/linker/ng_module_factory_registration.mjs} +2 -2
- package/{esm2015/src/linker/query_list.js → esm2020/src/linker/query_list.mjs} +0 -0
- package/{esm2015/src/linker/template_ref.js → esm2020/src/linker/template_ref.mjs} +2 -2
- package/esm2020/src/linker/view_container_ref.mjs +283 -0
- package/{esm2015/src/linker/view_ref.js → esm2020/src/linker/view_ref.mjs} +0 -0
- package/esm2020/src/linker.mjs +19 -0
- package/esm2020/src/metadata/di.mjs +108 -0
- package/esm2020/src/metadata/directives.mjs +112 -0
- package/{esm2015/src/metadata/do_boostrap.js → esm2020/src/metadata/do_boostrap.mjs} +0 -0
- package/esm2020/src/metadata/ng_module.mjs +42 -0
- package/{esm2015/src/metadata/ng_module_def.js → esm2020/src/metadata/ng_module_def.mjs} +0 -0
- package/{esm2015/src/metadata/resource_loading.js → esm2020/src/metadata/resource_loading.mjs} +0 -0
- package/{esm2015/src/metadata/schema.js → esm2020/src/metadata/schema.mjs} +0 -0
- package/{esm2015/src/metadata/view.js → esm2020/src/metadata/view.mjs} +0 -0
- package/{esm2015/src/metadata.js → esm2020/src/metadata.mjs} +0 -0
- package/{esm2015/src/platform_core_providers.js → esm2020/src/platform_core_providers.mjs} +0 -0
- package/{esm2015/src/r3_symbols.js → esm2020/src/r3_symbols.mjs} +0 -0
- package/{esm2015/src/reflection/platform_reflection_capabilities.js → esm2020/src/reflection/platform_reflection_capabilities.mjs} +0 -0
- package/{esm2015/src/reflection/reflection.js → esm2020/src/reflection/reflection.mjs} +0 -0
- package/{esm2015/src/reflection/reflection_capabilities.js → esm2020/src/reflection/reflection_capabilities.mjs} +0 -0
- package/{esm2015/src/reflection/reflector.js → esm2020/src/reflection/reflector.mjs} +0 -0
- package/{esm2015/src/reflection/types.js → esm2020/src/reflection/types.mjs} +0 -0
- package/{esm2015/src/render/api.js → esm2020/src/render/api.mjs} +2 -2
- package/{esm2015/src/render/api_flags.js → esm2020/src/render/api_flags.mjs} +0 -0
- package/{esm2015/src/render.js → esm2020/src/render.mjs} +0 -0
- package/{esm2015/src/render3/assert.js → esm2020/src/render3/assert.mjs} +0 -0
- package/{esm2015/src/render3/bindings.js → esm2020/src/render3/bindings.mjs} +0 -0
- package/{esm2015/src/render3/collect_native_nodes.js → esm2020/src/render3/collect_native_nodes.mjs} +0 -0
- package/esm2020/src/render3/component.mjs +204 -0
- package/{esm2015/src/render3/component_ref.js → esm2020/src/render3/component_ref.mjs} +2 -2
- package/{esm2015/src/render3/context_discovery.js → esm2020/src/render3/context_discovery.mjs} +0 -0
- package/{esm2015/src/render3/definition.js → esm2020/src/render3/definition.mjs} +0 -0
- package/{esm2015/src/render3/definition_factory.js → esm2020/src/render3/definition_factory.mjs} +0 -0
- package/{esm2015/src/render3/di.js → esm2020/src/render3/di.mjs} +0 -0
- package/{esm2015/src/render3/di_setup.js → esm2020/src/render3/di_setup.mjs} +0 -0
- package/esm2020/src/render3/error_code.mjs +42 -0
- package/esm2020/src/render3/error_details_base_url.mjs +16 -0
- package/{esm2015/src/render3/errors.js → esm2020/src/render3/errors.mjs} +0 -0
- package/{esm2015/src/render3/errors_di.js → esm2020/src/render3/errors_di.mjs} +0 -0
- package/{esm2015/src/render3/features/copy_definition_feature.js → esm2020/src/render3/features/copy_definition_feature.mjs} +0 -0
- package/{esm2015/src/render3/features/inherit_definition_feature.js → esm2020/src/render3/features/inherit_definition_feature.mjs} +0 -0
- package/esm2020/src/render3/features/ng_onchanges_feature.mjs +92 -0
- package/{esm2015/src/render3/features/providers_feature.js → esm2020/src/render3/features/providers_feature.mjs} +0 -0
- package/{esm2015/src/render3/fields.js → esm2020/src/render3/fields.mjs} +0 -0
- package/{esm2015/src/render3/global_utils_api.js → esm2020/src/render3/global_utils_api.mjs} +0 -0
- package/{esm2015/src/render3/hooks.js → esm2020/src/render3/hooks.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_apply.js → esm2020/src/render3/i18n/i18n_apply.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_debug.js → esm2020/src/render3/i18n/i18n_debug.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_insert_before_index.js → esm2020/src/render3/i18n/i18n_insert_before_index.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_locale_id.js → esm2020/src/render3/i18n/i18n_locale_id.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_parse.js → esm2020/src/render3/i18n/i18n_parse.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_postprocess.js → esm2020/src/render3/i18n/i18n_postprocess.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_tree_shaking.js → esm2020/src/render3/i18n/i18n_tree_shaking.mjs} +0 -0
- package/{esm2015/src/render3/i18n/i18n_util.js → esm2020/src/render3/i18n/i18n_util.mjs} +0 -0
- package/{esm2015/src/render3/index.js → esm2020/src/render3/index.mjs} +0 -0
- package/{esm2015/src/render3/instructions/advance.js → esm2020/src/render3/instructions/advance.mjs} +0 -0
- package/{esm2015/src/render3/instructions/all.js → esm2020/src/render3/instructions/all.mjs} +0 -0
- package/{esm2015/src/render3/instructions/attribute.js → esm2020/src/render3/instructions/attribute.mjs} +0 -0
- package/{esm2015/src/render3/instructions/attribute_interpolation.js → esm2020/src/render3/instructions/attribute_interpolation.mjs} +0 -0
- package/{esm2015/src/render3/instructions/change_detection.js → esm2020/src/render3/instructions/change_detection.mjs} +0 -0
- package/{esm2015/src/render3/instructions/class_map_interpolation.js → esm2020/src/render3/instructions/class_map_interpolation.mjs} +0 -0
- package/{esm2015/src/render3/instructions/di.js → esm2020/src/render3/instructions/di.mjs} +0 -0
- package/{esm2015/src/render3/instructions/di_attr.js → esm2020/src/render3/instructions/di_attr.mjs} +0 -0
- package/{esm2015/src/render3/instructions/element.js → esm2020/src/render3/instructions/element.mjs} +0 -0
- package/{esm2015/src/render3/instructions/element_container.js → esm2020/src/render3/instructions/element_container.mjs} +0 -0
- package/{esm2015/src/render3/instructions/get_current_view.js → esm2020/src/render3/instructions/get_current_view.mjs} +0 -0
- package/{esm2015/src/render3/instructions/host_property.js → esm2020/src/render3/instructions/host_property.mjs} +0 -0
- package/{esm2015/src/render3/instructions/i18n.js → esm2020/src/render3/instructions/i18n.mjs} +0 -0
- package/{esm2015/src/render3/instructions/i18n_icu_container_visitor.js → esm2020/src/render3/instructions/i18n_icu_container_visitor.mjs} +0 -0
- package/{esm2015/src/render3/instructions/interpolation.js → esm2020/src/render3/instructions/interpolation.mjs} +0 -0
- package/{esm2015/src/render3/instructions/listener.js → esm2020/src/render3/instructions/listener.mjs} +0 -0
- package/{esm2015/src/render3/instructions/lview_debug.js → esm2020/src/render3/instructions/lview_debug.mjs} +0 -0
- package/{esm2015/src/render3/instructions/namespace.js → esm2020/src/render3/instructions/namespace.mjs} +0 -0
- package/{esm2015/src/render3/instructions/next_context.js → esm2020/src/render3/instructions/next_context.mjs} +0 -0
- package/{esm2015/src/render3/instructions/projection.js → esm2020/src/render3/instructions/projection.mjs} +0 -0
- package/{esm2015/src/render3/instructions/property.js → esm2020/src/render3/instructions/property.mjs} +0 -0
- package/{esm2015/src/render3/instructions/property_interpolation.js → esm2020/src/render3/instructions/property_interpolation.mjs} +0 -0
- package/esm2020/src/render3/instructions/shared.mjs +1811 -0
- package/{esm2015/src/render3/instructions/storage.js → esm2020/src/render3/instructions/storage.mjs} +0 -0
- package/{esm2015/src/render3/instructions/style_map_interpolation.js → esm2020/src/render3/instructions/style_map_interpolation.mjs} +0 -0
- package/{esm2015/src/render3/instructions/style_prop_interpolation.js → esm2020/src/render3/instructions/style_prop_interpolation.mjs} +0 -0
- package/{esm2015/src/render3/instructions/styling.js → esm2020/src/render3/instructions/styling.mjs} +0 -0
- package/{esm2015/src/render3/instructions/template.js → esm2020/src/render3/instructions/template.mjs} +0 -0
- package/{esm2015/src/render3/instructions/text.js → esm2020/src/render3/instructions/text.mjs} +0 -0
- package/{esm2015/src/render3/instructions/text_interpolation.js → esm2020/src/render3/instructions/text_interpolation.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/container.js → esm2020/src/render3/interfaces/container.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/context.js → esm2020/src/render3/interfaces/context.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/definition.js → esm2020/src/render3/interfaces/definition.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/document.js → esm2020/src/render3/interfaces/document.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/i18n.js → esm2020/src/render3/interfaces/i18n.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/injector.js → esm2020/src/render3/interfaces/injector.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/node.js → esm2020/src/render3/interfaces/node.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/player.js → esm2020/src/render3/interfaces/player.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/projection.js → esm2020/src/render3/interfaces/projection.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/public_definitions.js → esm2020/src/render3/interfaces/public_definitions.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/query.js → esm2020/src/render3/interfaces/query.mjs} +0 -0
- package/esm2020/src/render3/interfaces/renderer.mjs +27 -0
- package/{esm2015/src/render3/interfaces/renderer_dom.js → esm2020/src/render3/interfaces/renderer_dom.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/sanitization.js → esm2020/src/render3/interfaces/sanitization.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/styling.js → esm2020/src/render3/interfaces/styling.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/type_checks.js → esm2020/src/render3/interfaces/type_checks.mjs} +0 -0
- package/{esm2015/src/render3/interfaces/view.js → esm2020/src/render3/interfaces/view.mjs} +0 -0
- package/esm2020/src/render3/jit/directive.mjs +325 -0
- package/esm2020/src/render3/jit/environment.mjs +165 -0
- package/{esm2015/src/render3/jit/jit_options.js → esm2020/src/render3/jit/jit_options.mjs} +0 -0
- package/{esm2015/src/render3/jit/module.js → esm2020/src/render3/jit/module.mjs} +0 -0
- package/esm2020/src/render3/jit/partial.mjs +104 -0
- package/{esm2015/src/render3/jit/pipe.js → esm2020/src/render3/jit/pipe.mjs} +0 -0
- package/esm2020/src/render3/metadata.mjs +49 -0
- package/{esm2015/src/render3/namespaces.js → esm2020/src/render3/namespaces.mjs} +0 -0
- package/esm2020/src/render3/ng_module_ref.mjs +122 -0
- package/{esm2015/src/render3/node_assert.js → esm2020/src/render3/node_assert.mjs} +0 -0
- package/{esm2015/src/render3/node_manipulation.js → esm2020/src/render3/node_manipulation.mjs} +0 -0
- package/{esm2015/src/render3/node_manipulation_i18n.js → esm2020/src/render3/node_manipulation_i18n.mjs} +0 -0
- package/{esm2015/src/render3/node_selector_matcher.js → esm2020/src/render3/node_selector_matcher.mjs} +0 -0
- package/esm2020/src/render3/pipe.mjs +184 -0
- package/{esm2015/src/render3/profiler.js → esm2020/src/render3/profiler.mjs} +0 -0
- package/{esm2015/src/render3/pure_function.js → esm2020/src/render3/pure_function.mjs} +0 -0
- package/{esm2015/src/render3/query.js → esm2020/src/render3/query.mjs} +0 -0
- package/{esm2015/src/render3/state.js → esm2020/src/render3/state.mjs} +0 -0
- package/{esm2015/src/render3/styling/class_differ.js → esm2020/src/render3/styling/class_differ.mjs} +0 -0
- package/{esm2015/src/render3/styling/static_styling.js → esm2020/src/render3/styling/static_styling.mjs} +0 -0
- package/{esm2015/src/render3/styling/style_binding_list.js → esm2020/src/render3/styling/style_binding_list.mjs} +0 -0
- package/{esm2015/src/render3/styling/styling_parser.js → esm2020/src/render3/styling/styling_parser.mjs} +0 -0
- package/{esm2015/src/render3/tokens.js → esm2020/src/render3/tokens.mjs} +0 -0
- package/{esm2015/src/render3/util/attrs_utils.js → esm2020/src/render3/util/attrs_utils.mjs} +0 -0
- package/{esm2015/src/render3/util/change_detection_utils.js → esm2020/src/render3/util/change_detection_utils.mjs} +0 -0
- package/{esm2015/src/render3/util/debug_utils.js → esm2020/src/render3/util/debug_utils.mjs} +0 -0
- package/esm2020/src/render3/util/discovery_utils.mjs +411 -0
- package/esm2020/src/render3/util/global_utils.mjs +77 -0
- package/{esm2015/src/render3/util/injector_utils.js → esm2020/src/render3/util/injector_utils.mjs} +0 -0
- package/esm2020/src/render3/util/misc_utils.mjs +61 -0
- package/{esm2015/src/render3/util/stringify_utils.js → esm2020/src/render3/util/stringify_utils.mjs} +0 -0
- package/{esm2015/src/render3/util/view_traversal_utils.js → esm2020/src/render3/util/view_traversal_utils.mjs} +0 -0
- package/{esm2015/src/render3/util/view_utils.js → esm2020/src/render3/util/view_utils.mjs} +0 -0
- package/{esm2015/src/render3/view_engine_compatibility_prebound.js → esm2020/src/render3/view_engine_compatibility_prebound.mjs} +1 -1
- package/{esm2015/src/render3/view_ref.js → esm2020/src/render3/view_ref.mjs} +0 -0
- package/{esm2015/src/sanitization/bypass.js → esm2020/src/sanitization/bypass.mjs} +0 -0
- package/{esm2015/src/sanitization/html_sanitizer.js → esm2020/src/sanitization/html_sanitizer.mjs} +0 -0
- package/{esm2015/src/sanitization/inert_body.js → esm2020/src/sanitization/inert_body.mjs} +3 -3
- package/{esm2015/src/sanitization/sanitization.js → esm2020/src/sanitization/sanitization.mjs} +0 -0
- package/{esm2015/src/sanitization/sanitizer.js → esm2020/src/sanitization/sanitizer.mjs} +0 -0
- package/{esm2015/src/sanitization/security.js → esm2020/src/sanitization/security.mjs} +0 -0
- package/{esm2015/src/sanitization/url_sanitizer.js → esm2020/src/sanitization/url_sanitizer.mjs} +0 -0
- package/esm2020/src/testability/testability.mjs +258 -0
- package/{esm2015/src/util/array_utils.js → esm2020/src/util/array_utils.mjs} +0 -0
- package/{esm2015/src/util/assert.js → esm2020/src/util/assert.mjs} +0 -0
- package/{esm2015/src/util/char_code.js → esm2020/src/util/char_code.mjs} +0 -0
- package/{esm2015/src/util/closure.js → esm2020/src/util/closure.mjs} +0 -0
- package/{esm2015/src/util/comparison.js → esm2020/src/util/comparison.mjs} +0 -0
- package/{esm2015/src/util/decorators.js → esm2020/src/util/decorators.mjs} +0 -0
- package/{esm2015/src/util/dom.js → esm2020/src/util/dom.mjs} +0 -0
- package/{esm2015/src/util/empty.js → esm2020/src/util/empty.mjs} +0 -0
- package/{esm2015/src/util/errors.js → esm2020/src/util/errors.mjs} +0 -0
- package/{esm2015/src/util/global.js → esm2020/src/util/global.mjs} +0 -0
- package/{esm2015/src/util/is_dev_mode.js → esm2020/src/util/is_dev_mode.mjs} +0 -0
- package/{esm2015/src/util/iterable.js → esm2020/src/util/iterable.mjs} +0 -0
- package/{esm2015/src/util/lang.js → esm2020/src/util/lang.mjs} +0 -0
- package/{esm2015/src/util/microtask.js → esm2020/src/util/microtask.mjs} +0 -0
- package/{esm2015/src/util/named_array_type.js → esm2020/src/util/named_array_type.mjs} +0 -0
- package/{esm2015/src/util/ng_dev_mode.js → esm2020/src/util/ng_dev_mode.mjs} +0 -0
- package/{esm2015/src/util/ng_i18n_closure_mode.js → esm2020/src/util/ng_i18n_closure_mode.mjs} +0 -0
- package/{esm2015/src/util/ng_jit_mode.js → esm2020/src/util/ng_jit_mode.mjs} +0 -0
- package/{esm2015/src/util/ng_reflect.js → esm2020/src/util/ng_reflect.mjs} +0 -0
- package/{esm2015/src/util/noop.js → esm2020/src/util/noop.mjs} +0 -0
- package/{esm2015/src/util/property.js → esm2020/src/util/property.mjs} +0 -0
- package/{esm2015/src/util/raf.js → esm2020/src/util/raf.mjs} +0 -0
- package/{esm2015/src/util/security/trusted_type_defs.js → esm2020/src/util/security/trusted_type_defs.mjs} +0 -0
- package/esm2020/src/util/security/trusted_types.mjs +130 -0
- package/esm2020/src/util/security/trusted_types_bypass.mjs +83 -0
- package/{esm2015/src/util/stringify.js → esm2020/src/util/stringify.mjs} +0 -0
- package/{esm2015/src/util/symbol.js → esm2020/src/util/symbol.mjs} +0 -0
- package/{esm2015/src/version.js → esm2020/src/version.mjs} +1 -1
- package/{esm2015/src/view/element.js → esm2020/src/view/element.mjs} +0 -0
- package/{esm2015/src/view/entrypoint.js → esm2020/src/view/entrypoint.mjs} +0 -0
- package/{esm2015/src/view/errors.js → esm2020/src/view/errors.mjs} +0 -0
- package/{esm2015/src/view/index.js → esm2020/src/view/index.mjs} +2 -2
- package/{esm2015/src/view/ng_content.js → esm2020/src/view/ng_content.mjs} +0 -0
- package/{esm2015/src/view/ng_module.js → esm2020/src/view/ng_module.mjs} +0 -0
- package/esm2020/src/view/provider.mjs +490 -0
- package/esm2020/src/view/provider_flags.mjs +26 -0
- package/{esm2015/src/view/pure_expression.js → esm2020/src/view/pure_expression.mjs} +0 -0
- package/{esm2015/src/view/query.js → esm2020/src/view/query.mjs} +0 -0
- package/esm2020/src/view/refs.mjs +369 -0
- package/{esm2015/src/view/services.js → esm2020/src/view/services.mjs} +0 -0
- package/{esm2015/src/view/text.js → esm2020/src/view/text.mjs} +0 -0
- package/{esm2015/src/view/types.js → esm2020/src/view/types.mjs} +0 -0
- package/esm2020/src/view/util.mjs +369 -0
- package/{esm2015/src/view/view.js → esm2020/src/view/view.mjs} +0 -0
- package/{esm2015/src/view/view_attach.js → esm2020/src/view/view_attach.mjs} +0 -0
- package/{esm2015/src/zone/ng_zone.js → esm2020/src/zone/ng_zone.mjs} +0 -0
- package/{esm2015/src/zone.js → esm2020/src/zone.mjs} +0 -0
- package/{esm2015/testing/index.js → esm2020/testing/index.mjs} +0 -0
- package/{esm2015/testing/public_api.js → esm2020/testing/public_api.mjs} +0 -0
- package/{esm2015/testing/src/async.js → esm2020/testing/src/async.mjs} +0 -0
- package/{esm2015/testing/src/component_fixture.js → esm2020/testing/src/component_fixture.mjs} +0 -0
- package/{esm2015/testing/src/fake_async.js → esm2020/testing/src/fake_async.mjs} +0 -0
- package/{esm2015/testing/src/lang_utils.js → esm2020/testing/src/lang_utils.mjs} +0 -0
- package/esm2020/testing/src/logger.mjs +34 -0
- package/{esm2015/testing/src/metadata_override.js → esm2020/testing/src/metadata_override.mjs} +0 -0
- package/{esm2015/testing/src/metadata_overrider.js → esm2020/testing/src/metadata_overrider.mjs} +0 -0
- package/esm2020/testing/src/ng_zone_mock.mjs +33 -0
- package/{esm2015/testing/src/private_export_testing.js → esm2020/testing/src/private_export_testing.mjs} +0 -0
- package/esm2020/testing/src/r3_test_bed.mjs +397 -0
- package/esm2020/testing/src/r3_test_bed_compiler.mjs +735 -0
- package/{esm2015/testing/src/resolvers.js → esm2020/testing/src/resolvers.mjs} +0 -0
- package/{esm2015/testing/src/styling.js → esm2020/testing/src/styling.mjs} +0 -0
- package/esm2020/testing/src/test_bed.mjs +614 -0
- package/esm2020/testing/src/test_bed_common.mjs +28 -0
- package/esm2020/testing/src/test_compiler.mjs +69 -0
- package/{esm2015/testing/src/test_hooks.js → esm2020/testing/src/test_hooks.mjs} +0 -0
- package/{esm2015/testing/src/testing.js → esm2020/testing/src/testing.mjs} +0 -0
- package/{esm2015/testing/src/testing_internal.js → esm2020/testing/src/testing_internal.mjs} +0 -0
- package/esm2020/testing/testing.mjs +5 -0
- package/fesm2015/{core.js → core.mjs} +8641 -8712
- package/fesm2015/core.mjs.map +1 -0
- package/fesm2015/{testing.js → testing.mjs} +50 -61
- package/fesm2015/testing.mjs.map +1 -0
- package/fesm2020/core.mjs +33119 -0
- package/fesm2020/core.mjs.map +1 -0
- package/fesm2020/testing.mjs +2635 -0
- package/fesm2020/testing.mjs.map +1 -0
- package/package.json +33 -8
- package/schematics/migrations/router-link-empty-expression/analyze_template.d.ts +2 -2
- package/schematics/migrations/router-link-empty-expression/analyze_template.js +6 -7
- package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.d.ts +7 -6
- package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.js +10 -11
- package/schematics/migrations/router-link-empty-expression/index.js +22 -11
- package/schematics/migrations/{move-document → testbed-teardown}/index.d.ts +2 -2
- package/schematics/migrations/testbed-teardown/index.js +92 -0
- package/schematics/migrations/testbed-teardown/util.d.ts +35 -0
- package/schematics/migrations/testbed-teardown/util.js +188 -0
- package/schematics/migrations.json +6 -101
- package/schematics/package.json +3 -0
- package/schematics/utils/import_manager.d.ts +1 -1
- package/schematics/utils/import_manager.js +22 -19
- package/schematics/utils/load_esm.d.ts +32 -0
- package/schematics/utils/load_esm.js +79 -0
- package/schematics/utils/ng_component_template.d.ts +1 -1
- package/schematics/utils/ng_component_template.js +12 -9
- package/schematics/utils/ng_decorators.d.ts +1 -1
- package/schematics/utils/ng_decorators.js +1 -1
- package/schematics/utils/parse_html.d.ts +2 -2
- package/schematics/utils/parse_html.js +4 -5
- package/schematics/utils/template_ast_visitor.d.ts +55 -0
- package/schematics/utils/template_ast_visitor.js +73 -0
- package/schematics/utils/typescript/class_declaration.d.ts +1 -1
- package/schematics/utils/typescript/class_declaration.js +10 -7
- package/schematics/utils/typescript/compiler_host.d.ts +1 -1
- package/schematics/utils/typescript/compiler_host.js +7 -4
- package/schematics/utils/typescript/decorators.d.ts +1 -1
- package/schematics/utils/typescript/decorators.js +7 -4
- package/schematics/utils/typescript/find_base_classes.d.ts +1 -1
- package/schematics/utils/typescript/find_base_classes.js +6 -3
- package/schematics/utils/typescript/functions.d.ts +1 -1
- package/schematics/utils/typescript/functions.js +9 -6
- package/schematics/utils/typescript/imports.d.ts +1 -1
- package/schematics/utils/typescript/imports.js +12 -9
- package/schematics/utils/typescript/nodes.d.ts +1 -1
- package/schematics/utils/typescript/nodes.js +11 -8
- package/schematics/utils/typescript/parse_tsconfig.d.ts +1 -1
- package/schematics/utils/typescript/parse_tsconfig.js +31 -9
- package/schematics/utils/typescript/property_name.d.ts +1 -1
- package/schematics/utils/typescript/property_name.js +7 -4
- package/schematics/utils/typescript/symbol.d.ts +1 -1
- package/schematics/utils/typescript/symbol.js +15 -12
- package/testing/package.json +5 -5
- package/testing/testing.d.ts +57 -339
- package/bundles/core-testing.umd.js +0 -3179
- package/bundles/core-testing.umd.js.map +0 -1
- package/bundles/core.umd.js +0 -34489
- package/bundles/core.umd.js.map +0 -1
- package/core.metadata.json +0 -1
- package/esm2015/core.externs.js +0 -6
- package/esm2015/core.js +0 -38
- package/esm2015/index.js +0 -13
- package/esm2015/src/application_init.js +0 -142
- package/esm2015/src/application_module.js +0 -134
- package/esm2015/src/application_ref.js +0 -735
- package/esm2015/src/change_detection/change_detection.js +0 -31
- package/esm2015/src/change_detection/change_detection_util.js +0 -105
- package/esm2015/src/change_detection/change_detector_ref.js +0 -96
- package/esm2015/src/change_detection/differs/default_iterable_differ.js +0 -668
- package/esm2015/src/change_detection.js +0 -14
- package/esm2015/src/codegen_private_exports.js +0 -11
- package/esm2015/src/compiler/compiler.externs.js +0 -0
- package/esm2015/src/console.js +0 -23
- package/esm2015/src/core.js +0 -50
- package/esm2015/src/core_private_export.js +0 -35
- package/esm2015/src/core_render3_private_export.js +0 -45
- package/esm2015/src/debug/debug_node.js +0 -632
- package/esm2015/src/di/injectable.js +0 -36
- package/esm2015/src/di/injection_token.js +0 -75
- package/esm2015/src/di/injector.js +0 -326
- package/esm2015/src/di/injector_compatibility.js +0 -187
- package/esm2015/src/di/interface/interface.externs.js +0 -0
- package/esm2015/src/di/jit/injectable.js +0 -96
- package/esm2015/src/di/metadata.js +0 -62
- package/esm2015/src/di/metadata_attr.js +0 -24
- package/esm2015/src/di/util.js +0 -53
- package/esm2015/src/event_emitter.js +0 -54
- package/esm2015/src/i18n/locale_en.js +0 -17
- package/esm2015/src/interface/interface.externs.js +0 -0
- package/esm2015/src/linker/compiler.js +0 -118
- package/esm2015/src/linker/element_ref.js +0 -66
- package/esm2015/src/linker/ng_module_factory.js +0 -21
- package/esm2015/src/linker/ng_module_factory_loader.js +0 -41
- package/esm2015/src/linker/system_js_ng_module_factory_loader.js +0 -77
- package/esm2015/src/linker/view_container_ref.js +0 -252
- package/esm2015/src/linker.js +0 -20
- package/esm2015/src/metadata/di.js +0 -99
- package/esm2015/src/metadata/directives.js +0 -120
- package/esm2015/src/metadata/ng_module.js +0 -44
- package/esm2015/src/reflection/reflection.externs.js +0 -0
- package/esm2015/src/render3/component.js +0 -206
- package/esm2015/src/render3/error_code.js +0 -45
- package/esm2015/src/render3/features/ng_onchanges_feature.js +0 -92
- package/esm2015/src/render3/instructions/shared.js +0 -1813
- package/esm2015/src/render3/interfaces/renderer.js +0 -29
- package/esm2015/src/render3/jit/directive.js +0 -312
- package/esm2015/src/render3/jit/environment.js +0 -167
- package/esm2015/src/render3/jit/partial.js +0 -105
- package/esm2015/src/render3/metadata.js +0 -49
- package/esm2015/src/render3/ng_module_ref.js +0 -108
- package/esm2015/src/render3/pipe.js +0 -202
- package/esm2015/src/render3/util/discovery_utils.js +0 -411
- package/esm2015/src/render3/util/global_utils.js +0 -78
- package/esm2015/src/render3/util/misc_utils.js +0 -63
- package/esm2015/src/testability/testability.js +0 -256
- package/esm2015/src/util/security/trusted_types.js +0 -133
- package/esm2015/src/util/security/trusted_types_bypass.js +0 -86
- package/esm2015/src/util/util.externs.js +0 -0
- package/esm2015/src/view/provider.js +0 -507
- package/esm2015/src/view/refs.js +0 -362
- package/esm2015/src/view/util.js +0 -378
- package/esm2015/testing/src/logger.js +0 -32
- package/esm2015/testing/src/ng_zone_mock.js +0 -31
- package/esm2015/testing/src/r3_test_bed.js +0 -397
- package/esm2015/testing/src/r3_test_bed_compiler.js +0 -744
- package/esm2015/testing/src/test_bed.js +0 -608
- package/esm2015/testing/src/test_bed_common.js +0 -31
- package/esm2015/testing/src/test_compiler.js +0 -66
- package/esm2015/testing/testing.externs.js +0 -6
- package/esm2015/testing/testing.js +0 -7
- package/fesm2015/core.js.map +0 -1
- package/fesm2015/testing.js.map +0 -1
- package/schematics/migrations/abstract-control-parent/index.d.ts +0 -11
- package/schematics/migrations/abstract-control-parent/index.js +0 -69
- package/schematics/migrations/abstract-control-parent/util.d.ts +0 -14
- package/schematics/migrations/abstract-control-parent/util.js +0 -64
- package/schematics/migrations/activated-route-snapshot-fragment/index.d.ts +0 -13
- package/schematics/migrations/activated-route-snapshot-fragment/index.js +0 -70
- package/schematics/migrations/activated-route-snapshot-fragment/util.d.ts +0 -16
- package/schematics/migrations/activated-route-snapshot-fragment/util.js +0 -48
- package/schematics/migrations/can-activate-with-redirect-to/index.d.ts +0 -11
- package/schematics/migrations/can-activate-with-redirect-to/index.js +0 -66
- package/schematics/migrations/can-activate-with-redirect-to/util.d.ts +0 -11
- package/schematics/migrations/can-activate-with-redirect-to/util.js +0 -70
- package/schematics/migrations/deep-shadow-piercing-selector/index.d.ts +0 -10
- package/schematics/migrations/deep-shadow-piercing-selector/index.js +0 -49
- package/schematics/migrations/dynamic-queries/index.d.ts +0 -13
- package/schematics/migrations/dynamic-queries/index.js +0 -73
- package/schematics/migrations/dynamic-queries/util.d.ts +0 -25
- package/schematics/migrations/dynamic-queries/util.js +0 -81
- package/schematics/migrations/initial-navigation/collector.d.ts +0 -22
- package/schematics/migrations/initial-navigation/collector.js +0 -119
- package/schematics/migrations/initial-navigation/index.d.ts +0 -11
- package/schematics/migrations/initial-navigation/index.js +0 -83
- package/schematics/migrations/initial-navigation/transform.d.ts +0 -20
- package/schematics/migrations/initial-navigation/transform.js +0 -68
- package/schematics/migrations/initial-navigation/update_recorder.d.ts +0 -18
- package/schematics/migrations/initial-navigation/update_recorder.js +0 -20
- package/schematics/migrations/initial-navigation/util.d.ts +0 -12
- package/schematics/migrations/initial-navigation/util.js +0 -43
- package/schematics/migrations/missing-injectable/definition_collector.d.ts +0 -37
- package/schematics/migrations/missing-injectable/definition_collector.js +0 -89
- package/schematics/migrations/missing-injectable/index.d.ts +0 -11
- package/schematics/migrations/missing-injectable/index.js +0 -122
- package/schematics/migrations/missing-injectable/providers_evaluator.d.ts +0 -36
- package/schematics/migrations/missing-injectable/providers_evaluator.js +0 -64
- package/schematics/migrations/missing-injectable/transform.d.ts +0 -69
- package/schematics/migrations/missing-injectable/transform.js +0 -201
- package/schematics/migrations/missing-injectable/update_recorder.d.ts +0 -21
- package/schematics/migrations/missing-injectable/update_recorder.js +0 -20
- package/schematics/migrations/module-with-providers/collector.d.ts +0 -34
- package/schematics/migrations/module-with-providers/collector.js +0 -73
- package/schematics/migrations/module-with-providers/index.d.ts +0 -13
- package/schematics/migrations/module-with-providers/index.js +0 -93
- package/schematics/migrations/module-with-providers/transform.d.ts +0 -49
- package/schematics/migrations/module-with-providers/transform.js +0 -148
- package/schematics/migrations/module-with-providers/util.d.ts +0 -13
- package/schematics/migrations/module-with-providers/util.js +0 -40
- package/schematics/migrations/move-document/document_import_visitor.d.ts +0 -27
- package/schematics/migrations/move-document/document_import_visitor.js +0 -74
- package/schematics/migrations/move-document/index.js +0 -93
- package/schematics/migrations/move-document/move-import.d.ts +0 -12
- package/schematics/migrations/move-document/move-import.js +0 -61
- package/schematics/migrations/native-view-encapsulation/index.d.ts +0 -11
- package/schematics/migrations/native-view-encapsulation/index.js +0 -63
- package/schematics/migrations/native-view-encapsulation/util.d.ts +0 -11
- package/schematics/migrations/native-view-encapsulation/util.js +0 -48
- package/schematics/migrations/navigation-extras-omissions/index.d.ts +0 -11
- package/schematics/migrations/navigation-extras-omissions/index.js +0 -69
- package/schematics/migrations/navigation-extras-omissions/util.d.ts +0 -11
- package/schematics/migrations/navigation-extras-omissions/util.js +0 -126
- package/schematics/migrations/relative-link-resolution/collector.d.ts +0 -22
- package/schematics/migrations/relative-link-resolution/collector.js +0 -95
- package/schematics/migrations/relative-link-resolution/index.d.ts +0 -11
- package/schematics/migrations/relative-link-resolution/index.js +0 -84
- package/schematics/migrations/relative-link-resolution/transform.d.ts +0 -22
- package/schematics/migrations/relative-link-resolution/transform.js +0 -65
- package/schematics/migrations/relative-link-resolution/update_recorder.d.ts +0 -18
- package/schematics/migrations/relative-link-resolution/update_recorder.js +0 -20
- package/schematics/migrations/relative-link-resolution/util.d.ts +0 -12
- package/schematics/migrations/relative-link-resolution/util.js +0 -43
- package/schematics/migrations/renderer-to-renderer2/helpers.d.ts +0 -25
- package/schematics/migrations/renderer-to-renderer2/helpers.js +0 -238
- package/schematics/migrations/renderer-to-renderer2/index.d.ts +0 -14
- package/schematics/migrations/renderer-to-renderer2/index.js +0 -135
- package/schematics/migrations/renderer-to-renderer2/migration.d.ts +0 -18
- package/schematics/migrations/renderer-to-renderer2/migration.js +0 -225
- package/schematics/migrations/renderer-to-renderer2/util.d.ts +0 -18
- package/schematics/migrations/renderer-to-renderer2/util.js +0 -83
- package/schematics/migrations/router-preserve-query-params/index.d.ts +0 -14
- package/schematics/migrations/router-preserve-query-params/index.js +0 -72
- package/schematics/migrations/router-preserve-query-params/util.d.ts +0 -11
- package/schematics/migrations/router-preserve-query-params/util.js +0 -103
- package/schematics/migrations/static-queries/angular/directive_inputs.d.ts +0 -11
- package/schematics/migrations/static-queries/angular/directive_inputs.js +0 -84
- package/schematics/migrations/static-queries/angular/ng_query_visitor.d.ts +0 -45
- package/schematics/migrations/static-queries/angular/ng_query_visitor.js +0 -127
- package/schematics/migrations/static-queries/angular/query-definition.d.ts +0 -37
- package/schematics/migrations/static-queries/angular/query-definition.js +0 -33
- package/schematics/migrations/static-queries/angular/super_class.d.ts +0 -15
- package/schematics/migrations/static-queries/angular/super_class.js +0 -35
- package/schematics/migrations/static-queries/index.d.ts +0 -11
- package/schematics/migrations/static-queries/index.js +0 -219
- package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.d.ts +0 -38
- package/schematics/migrations/static-queries/strategies/template_strategy/template_strategy.js +0 -214
- package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.d.ts +0 -24
- package/schematics/migrations/static-queries/strategies/test_strategy/test_strategy.js +0 -38
- package/schematics/migrations/static-queries/strategies/timing-strategy.d.ts +0 -19
- package/schematics/migrations/static-queries/strategies/timing-strategy.js +0 -20
- package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.d.ts +0 -82
- package/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.js +0 -369
- package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.d.ts +0 -18
- package/schematics/migrations/static-queries/strategies/usage_strategy/super_class_context.js +0 -52
- package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.d.ts +0 -26
- package/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.js +0 -94
- package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.d.ts +0 -33
- package/schematics/migrations/static-queries/strategies/usage_strategy/usage_strategy.js +0 -168
- package/schematics/migrations/static-queries/transform.d.ts +0 -21
- package/schematics/migrations/static-queries/transform.js +0 -102
- package/schematics/migrations/template-var-assignment/analyze_template.d.ts +0 -20
- package/schematics/migrations/template-var-assignment/analyze_template.js +0 -39
- package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.d.ts +0 -27
- package/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.js +0 -79
- package/schematics/migrations/template-var-assignment/index.d.ts +0 -11
- package/schematics/migrations/template-var-assignment/index.js +0 -90
- package/schematics/migrations/undecorated-classes-with-decorated-fields/index.d.ts +0 -14
- package/schematics/migrations/undecorated-classes-with-decorated-fields/index.js +0 -114
- package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.d.ts +0 -63
- package/schematics/migrations/undecorated-classes-with-decorated-fields/transform.js +0 -300
- package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts +0 -19
- package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.js +0 -20
- package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.d.ts +0 -18
- package/schematics/migrations/undecorated-classes-with-di/create_ngc_program.js +0 -57
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.d.ts +0 -18
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata.js +0 -97
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.d.ts +0 -39
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/decorator_rewriter.js +0 -116
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.d.ts +0 -37
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/import_rewrite_visitor.js +0 -126
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.d.ts +0 -10
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/path_format.js +0 -31
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.d.ts +0 -16
- package/schematics/migrations/undecorated-classes-with-di/decorator_rewrite/source_file_exports.js +0 -65
- package/schematics/migrations/undecorated-classes-with-di/index.d.ts +0 -11
- package/schematics/migrations/undecorated-classes-with-di/index.js +0 -184
- package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.d.ts +0 -38
- package/schematics/migrations/undecorated-classes-with-di/ng_declaration_collector.js +0 -142
- package/schematics/migrations/undecorated-classes-with-di/transform.d.ts +0 -97
- package/schematics/migrations/undecorated-classes-with-di/transform.js +0 -370
- package/schematics/migrations/undecorated-classes-with-di/update_recorder.d.ts +0 -20
- package/schematics/migrations/undecorated-classes-with-di/update_recorder.js +0 -20
- package/schematics/migrations/wait-for-async/index.d.ts +0 -11
- package/schematics/migrations/wait-for-async/index.js +0 -98
- package/schematics/migrations/wait-for-async/util.d.ts +0 -11
- package/schematics/migrations/wait-for-async/util.js +0 -37
- package/schematics/migrations/xhr-factory/index.d.ts +0 -10
- package/schematics/migrations/xhr-factory/index.js +0 -104
- package/src/r3_symbols.d.ts +0 -1025
- package/testing/testing.metadata.json +0 -1
- package/testing.d.ts +0 -7
- package/testing.metadata.json +0 -1
|
@@ -1,300 +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/undecorated-classes-with-decorated-fields/transform", ["require", "exports", "@angular/compiler-cli/src/ngtsc/partial_evaluator", "@angular/compiler-cli/src/ngtsc/reflection", "typescript", "@angular/core/schematics/utils/import_manager", "@angular/core/schematics/utils/ng_decorators", "@angular/core/schematics/utils/typescript/find_base_classes", "@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.UndecoratedClassesWithDecoratedFieldsTransform = void 0;
|
|
20
|
-
const partial_evaluator_1 = require("@angular/compiler-cli/src/ngtsc/partial_evaluator");
|
|
21
|
-
const reflection_1 = require("@angular/compiler-cli/src/ngtsc/reflection");
|
|
22
|
-
const ts = require("typescript");
|
|
23
|
-
const import_manager_1 = require("@angular/core/schematics/utils/import_manager");
|
|
24
|
-
const ng_decorators_1 = require("@angular/core/schematics/utils/ng_decorators");
|
|
25
|
-
const find_base_classes_1 = require("@angular/core/schematics/utils/typescript/find_base_classes");
|
|
26
|
-
const functions_1 = require("@angular/core/schematics/utils/typescript/functions");
|
|
27
|
-
const property_name_1 = require("@angular/core/schematics/utils/typescript/property_name");
|
|
28
|
-
/**
|
|
29
|
-
* Set of known decorators that indicate that the current class needs a directive
|
|
30
|
-
* definition. These decorators are always specific to directives.
|
|
31
|
-
*/
|
|
32
|
-
const DIRECTIVE_FIELD_DECORATORS = new Set([
|
|
33
|
-
'Input', 'Output', 'ViewChild', 'ViewChildren', 'ContentChild', 'ContentChildren', 'HostBinding',
|
|
34
|
-
'HostListener'
|
|
35
|
-
]);
|
|
36
|
-
/**
|
|
37
|
-
* Set of known lifecycle hooks that indicate that the current class needs a directive
|
|
38
|
-
* definition. These lifecycle hooks are always specific to directives.
|
|
39
|
-
*/
|
|
40
|
-
const DIRECTIVE_LIFECYCLE_HOOKS = new Set([
|
|
41
|
-
'ngOnChanges', 'ngOnInit', 'ngDoCheck', 'ngAfterViewInit', 'ngAfterViewChecked',
|
|
42
|
-
'ngAfterContentInit', 'ngAfterContentChecked'
|
|
43
|
-
]);
|
|
44
|
-
/**
|
|
45
|
-
* Set of known lifecycle hooks that indicate that a given class uses Angular
|
|
46
|
-
* features, but it's ambiguous whether it is a directive or service.
|
|
47
|
-
*/
|
|
48
|
-
const AMBIGUOUS_LIFECYCLE_HOOKS = new Set(['ngOnDestroy']);
|
|
49
|
-
/** Describes how a given class is used in the context of Angular. */
|
|
50
|
-
var InferredKind;
|
|
51
|
-
(function (InferredKind) {
|
|
52
|
-
InferredKind[InferredKind["DIRECTIVE"] = 0] = "DIRECTIVE";
|
|
53
|
-
InferredKind[InferredKind["AMBIGUOUS"] = 1] = "AMBIGUOUS";
|
|
54
|
-
InferredKind[InferredKind["UNKNOWN"] = 2] = "UNKNOWN";
|
|
55
|
-
})(InferredKind || (InferredKind = {}));
|
|
56
|
-
/** Describes possible types of Angular declarations. */
|
|
57
|
-
var DeclarationType;
|
|
58
|
-
(function (DeclarationType) {
|
|
59
|
-
DeclarationType[DeclarationType["DIRECTIVE"] = 0] = "DIRECTIVE";
|
|
60
|
-
DeclarationType[DeclarationType["COMPONENT"] = 1] = "COMPONENT";
|
|
61
|
-
DeclarationType[DeclarationType["ABSTRACT_DIRECTIVE"] = 2] = "ABSTRACT_DIRECTIVE";
|
|
62
|
-
DeclarationType[DeclarationType["PIPE"] = 3] = "PIPE";
|
|
63
|
-
DeclarationType[DeclarationType["INJECTABLE"] = 4] = "INJECTABLE";
|
|
64
|
-
})(DeclarationType || (DeclarationType = {}));
|
|
65
|
-
/** TODO message that is added to ambiguous classes using Angular features. */
|
|
66
|
-
const AMBIGUOUS_CLASS_TODO = 'Add Angular decorator.';
|
|
67
|
-
class UndecoratedClassesWithDecoratedFieldsTransform {
|
|
68
|
-
constructor(typeChecker, getUpdateRecorder) {
|
|
69
|
-
this.typeChecker = typeChecker;
|
|
70
|
-
this.getUpdateRecorder = getUpdateRecorder;
|
|
71
|
-
this.printer = ts.createPrinter();
|
|
72
|
-
this.importManager = new import_manager_1.ImportManager(this.getUpdateRecorder, this.printer);
|
|
73
|
-
this.reflectionHost = new reflection_1.TypeScriptReflectionHost(this.typeChecker);
|
|
74
|
-
this.partialEvaluator = new partial_evaluator_1.PartialEvaluator(this.reflectionHost, this.typeChecker, null);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Migrates the specified source files. The transform adds the abstract `@Directive`
|
|
78
|
-
* decorator to undecorated classes that use Angular features. Class members which
|
|
79
|
-
* are decorated with any Angular decorator, or class members for lifecycle hooks are
|
|
80
|
-
* indicating that a given class uses Angular features. https://hackmd.io/vuQfavzfRG6KUCtU7oK_EA
|
|
81
|
-
*/
|
|
82
|
-
migrate(sourceFiles) {
|
|
83
|
-
const { detectedAbstractDirectives, ambiguousClasses } = this._findUndecoratedAbstractDirectives(sourceFiles);
|
|
84
|
-
detectedAbstractDirectives.forEach(node => {
|
|
85
|
-
const sourceFile = node.getSourceFile();
|
|
86
|
-
const recorder = this.getUpdateRecorder(sourceFile);
|
|
87
|
-
const directiveExpr = this.importManager.addImportToSourceFile(sourceFile, 'Directive', '@angular/core');
|
|
88
|
-
const decoratorExpr = ts.createDecorator(ts.createCall(directiveExpr, undefined, undefined));
|
|
89
|
-
recorder.addClassDecorator(node, this.printer.printNode(ts.EmitHint.Unspecified, decoratorExpr, sourceFile));
|
|
90
|
-
});
|
|
91
|
-
// Ambiguous classes clearly use Angular features, but the migration is unable to
|
|
92
|
-
// determine whether the class is used as directive, service or pipe. The migration
|
|
93
|
-
// could potentially determine the type by checking NgModule definitions or inheritance
|
|
94
|
-
// of other known declarations, but this is out of scope and a TODO/failure is sufficient.
|
|
95
|
-
return Array.from(ambiguousClasses).reduce((failures, node) => {
|
|
96
|
-
// If the class has been reported as ambiguous before, skip adding a TODO and
|
|
97
|
-
// printing an error. A class could be visited multiple times when it's part
|
|
98
|
-
// of multiple build targets in the CLI project.
|
|
99
|
-
if (this._hasBeenReportedAsAmbiguous(node)) {
|
|
100
|
-
return failures;
|
|
101
|
-
}
|
|
102
|
-
const sourceFile = node.getSourceFile();
|
|
103
|
-
const recorder = this.getUpdateRecorder(sourceFile);
|
|
104
|
-
// Add a TODO to the class that uses Angular features but is not decorated.
|
|
105
|
-
recorder.addClassTodo(node, AMBIGUOUS_CLASS_TODO);
|
|
106
|
-
// Add an error for the class that will be printed in the `ng update` output.
|
|
107
|
-
return failures.concat({
|
|
108
|
-
node,
|
|
109
|
-
message: 'Class uses Angular features but cannot be migrated automatically. Please ' +
|
|
110
|
-
'add an appropriate Angular decorator.'
|
|
111
|
-
});
|
|
112
|
-
}, []);
|
|
113
|
-
}
|
|
114
|
-
/** Records all changes that were made in the import manager. */
|
|
115
|
-
recordChanges() {
|
|
116
|
-
this.importManager.recordChanges();
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Finds undecorated abstract directives in the specified source files. Also returns
|
|
120
|
-
* a set of undecorated classes which could not be detected as guaranteed abstract
|
|
121
|
-
* directives. Those are ambiguous and could be either Directive, Pipe or service.
|
|
122
|
-
*/
|
|
123
|
-
_findUndecoratedAbstractDirectives(sourceFiles) {
|
|
124
|
-
const ambiguousClasses = new Set();
|
|
125
|
-
const declarations = new WeakMap();
|
|
126
|
-
const detectedAbstractDirectives = new Set();
|
|
127
|
-
const undecoratedClasses = new Set();
|
|
128
|
-
const visitNode = (node) => {
|
|
129
|
-
node.forEachChild(visitNode);
|
|
130
|
-
if (!ts.isClassDeclaration(node)) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const { inferredKind, decoratedType } = this._analyzeClassDeclaration(node);
|
|
134
|
-
if (decoratedType !== null) {
|
|
135
|
-
declarations.set(node, decoratedType);
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
if (inferredKind === InferredKind.DIRECTIVE) {
|
|
139
|
-
detectedAbstractDirectives.add(node);
|
|
140
|
-
}
|
|
141
|
-
else if (inferredKind === InferredKind.AMBIGUOUS) {
|
|
142
|
-
ambiguousClasses.add(node);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
undecoratedClasses.add(node);
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
sourceFiles.forEach(sourceFile => sourceFile.forEachChild(visitNode));
|
|
149
|
-
/**
|
|
150
|
-
* Checks the inheritance of the given set of classes. It removes classes from the
|
|
151
|
-
* detected abstract directives set when they inherit from a non-abstract Angular
|
|
152
|
-
* declaration. e.g. an abstract directive can never extend from a component.
|
|
153
|
-
*
|
|
154
|
-
* If a class inherits from an abstract directive though, we will migrate them too
|
|
155
|
-
* as derived classes also need to be decorated. This has been done for a simpler mental
|
|
156
|
-
* model and reduced complexity in the Angular compiler. See migration plan document.
|
|
157
|
-
*/
|
|
158
|
-
const checkInheritanceOfClasses = (classes) => {
|
|
159
|
-
classes.forEach(node => {
|
|
160
|
-
for (const { node: baseClass } of (0, find_base_classes_1.findBaseClassDeclarations)(node, this.typeChecker)) {
|
|
161
|
-
if (!declarations.has(baseClass)) {
|
|
162
|
-
continue;
|
|
163
|
-
}
|
|
164
|
-
// If the undecorated class inherits from an abstract directive, always migrate it.
|
|
165
|
-
// Derived undecorated classes of abstract directives are always also considered
|
|
166
|
-
// abstract directives and need to be decorated too. This is necessary as otherwise
|
|
167
|
-
// the inheritance chain cannot be resolved by the Angular compiler. e.g. when it
|
|
168
|
-
// flattens directive metadata for type checking. In the other case, we never want
|
|
169
|
-
// to migrate a class if it extends from a non-abstract Angular declaration. That
|
|
170
|
-
// is an unsupported pattern as of v9 and was previously handled with the
|
|
171
|
-
// `undecorated-classes-with-di` migration (which copied the inherited decorator).
|
|
172
|
-
if (declarations.get(baseClass) === DeclarationType.ABSTRACT_DIRECTIVE) {
|
|
173
|
-
detectedAbstractDirectives.add(node);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
detectedAbstractDirectives.delete(node);
|
|
177
|
-
}
|
|
178
|
-
ambiguousClasses.delete(node);
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
};
|
|
183
|
-
// Check inheritance of any detected abstract directive. We want to remove
|
|
184
|
-
// classes that are not eligible abstract directives due to inheritance. i.e.
|
|
185
|
-
// if a class extends from a component, it cannot be a derived abstract directive.
|
|
186
|
-
checkInheritanceOfClasses(detectedAbstractDirectives);
|
|
187
|
-
// Update the class declarations to reflect the detected abstract directives. This is
|
|
188
|
-
// then used later when we check for undecorated classes that inherit from an abstract
|
|
189
|
-
// directive and need to be decorated.
|
|
190
|
-
detectedAbstractDirectives.forEach(n => declarations.set(n, DeclarationType.ABSTRACT_DIRECTIVE));
|
|
191
|
-
// Check ambiguous and undecorated classes if they inherit from an abstract directive.
|
|
192
|
-
// If they do, we want to migrate them too. See function definition for more details.
|
|
193
|
-
checkInheritanceOfClasses(ambiguousClasses);
|
|
194
|
-
checkInheritanceOfClasses(undecoratedClasses);
|
|
195
|
-
return { detectedAbstractDirectives, ambiguousClasses };
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Analyzes the given class declaration by determining whether the class
|
|
199
|
-
* is a directive, is an abstract directive, or uses Angular features.
|
|
200
|
-
*/
|
|
201
|
-
_analyzeClassDeclaration(node) {
|
|
202
|
-
const ngDecorators = node.decorators && (0, ng_decorators_1.getAngularDecorators)(this.typeChecker, node.decorators);
|
|
203
|
-
const inferredKind = this._determineClassKind(node);
|
|
204
|
-
if (ngDecorators === undefined || ngDecorators.length === 0) {
|
|
205
|
-
return { decoratedType: null, inferredKind };
|
|
206
|
-
}
|
|
207
|
-
const directiveDecorator = ngDecorators.find(({ name }) => name === 'Directive');
|
|
208
|
-
const componentDecorator = ngDecorators.find(({ name }) => name === 'Component');
|
|
209
|
-
const pipeDecorator = ngDecorators.find(({ name }) => name === 'Pipe');
|
|
210
|
-
const injectableDecorator = ngDecorators.find(({ name }) => name === 'Injectable');
|
|
211
|
-
const isAbstractDirective = directiveDecorator !== undefined && this._isAbstractDirective(directiveDecorator);
|
|
212
|
-
let decoratedType = null;
|
|
213
|
-
if (isAbstractDirective) {
|
|
214
|
-
decoratedType = DeclarationType.ABSTRACT_DIRECTIVE;
|
|
215
|
-
}
|
|
216
|
-
else if (componentDecorator !== undefined) {
|
|
217
|
-
decoratedType = DeclarationType.COMPONENT;
|
|
218
|
-
}
|
|
219
|
-
else if (directiveDecorator !== undefined) {
|
|
220
|
-
decoratedType = DeclarationType.DIRECTIVE;
|
|
221
|
-
}
|
|
222
|
-
else if (pipeDecorator !== undefined) {
|
|
223
|
-
decoratedType = DeclarationType.PIPE;
|
|
224
|
-
}
|
|
225
|
-
else if (injectableDecorator !== undefined) {
|
|
226
|
-
decoratedType = DeclarationType.INJECTABLE;
|
|
227
|
-
}
|
|
228
|
-
return { decoratedType, inferredKind };
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Checks whether the given decorator resolves to an abstract directive. An directive is
|
|
232
|
-
* considered "abstract" if there is no selector specified.
|
|
233
|
-
*/
|
|
234
|
-
_isAbstractDirective({ node }) {
|
|
235
|
-
const metadataArgs = node.expression.arguments;
|
|
236
|
-
if (metadataArgs.length === 0) {
|
|
237
|
-
return true;
|
|
238
|
-
}
|
|
239
|
-
const metadataExpr = (0, functions_1.unwrapExpression)(metadataArgs[0]);
|
|
240
|
-
if (!ts.isObjectLiteralExpression(metadataExpr)) {
|
|
241
|
-
return false;
|
|
242
|
-
}
|
|
243
|
-
const metadata = (0, reflection_1.reflectObjectLiteral)(metadataExpr);
|
|
244
|
-
if (!metadata.has('selector')) {
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
|
-
const selector = this.partialEvaluator.evaluate(metadata.get('selector'));
|
|
248
|
-
return selector == null;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Determines the kind of a given class in terms of Angular. The method checks
|
|
252
|
-
* whether the given class has members that indicate the use of Angular features.
|
|
253
|
-
* e.g. lifecycle hooks or decorated members like `@Input` or `@Output` are
|
|
254
|
-
* considered Angular features..
|
|
255
|
-
*/
|
|
256
|
-
_determineClassKind(node) {
|
|
257
|
-
let usage = InferredKind.UNKNOWN;
|
|
258
|
-
for (const member of node.members) {
|
|
259
|
-
const propertyName = member.name !== undefined ? (0, property_name_1.getPropertyNameText)(member.name) : null;
|
|
260
|
-
// If the class declares any of the known directive lifecycle hooks, we can
|
|
261
|
-
// immediately exit the loop as the class is guaranteed to be a directive.
|
|
262
|
-
if (propertyName !== null && DIRECTIVE_LIFECYCLE_HOOKS.has(propertyName)) {
|
|
263
|
-
return InferredKind.DIRECTIVE;
|
|
264
|
-
}
|
|
265
|
-
const ngDecorators = member.decorators !== undefined ?
|
|
266
|
-
(0, ng_decorators_1.getAngularDecorators)(this.typeChecker, member.decorators) :
|
|
267
|
-
[];
|
|
268
|
-
for (const { name } of ngDecorators) {
|
|
269
|
-
if (DIRECTIVE_FIELD_DECORATORS.has(name)) {
|
|
270
|
-
return InferredKind.DIRECTIVE;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
// If the class declares any of the lifecycle hooks that do not guarantee that
|
|
274
|
-
// the given class is a directive, update the kind and continue looking for other
|
|
275
|
-
// members that would unveil a more specific kind (i.e. being a directive).
|
|
276
|
-
if (propertyName !== null && AMBIGUOUS_LIFECYCLE_HOOKS.has(propertyName)) {
|
|
277
|
-
usage = InferredKind.AMBIGUOUS;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
return usage;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Checks whether a given class has been reported as ambiguous in previous
|
|
284
|
-
* migration run. e.g. when build targets are migrated first, and then test
|
|
285
|
-
* targets that have an overlap with build source files, the same class
|
|
286
|
-
* could be detected as ambiguous.
|
|
287
|
-
*/
|
|
288
|
-
_hasBeenReportedAsAmbiguous(node) {
|
|
289
|
-
const sourceFile = node.getSourceFile();
|
|
290
|
-
const leadingComments = ts.getLeadingCommentRanges(sourceFile.text, node.pos);
|
|
291
|
-
if (leadingComments === undefined) {
|
|
292
|
-
return false;
|
|
293
|
-
}
|
|
294
|
-
return leadingComments.some(({ kind, pos, end }) => kind === ts.SyntaxKind.SingleLineCommentTrivia &&
|
|
295
|
-
sourceFile.text.substring(pos, end).includes(`TODO: ${AMBIGUOUS_CLASS_TODO}`));
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
exports.UndecoratedClassesWithDecoratedFieldsTransform = UndecoratedClassesWithDecoratedFieldsTransform;
|
|
299
|
-
});
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRlY29yYXRlZC1maWVsZHMvdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILHlGQUFtRjtJQUNuRiwyRUFBMEc7SUFDMUcsaUNBQWlDO0lBRWpDLGtGQUF5RDtJQUN6RCxnRkFBNEU7SUFDNUUsbUdBQW1GO0lBQ25GLG1GQUFrRTtJQUNsRSwyRkFBeUU7SUFJekU7OztPQUdHO0lBQ0gsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGFBQWE7UUFDaEcsY0FBYztLQUNmLENBQUMsQ0FBQztJQUVIOzs7T0FHRztJQUNILE1BQU0seUJBQXlCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDeEMsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CO1FBQy9FLG9CQUFvQixFQUFFLHVCQUF1QjtLQUM5QyxDQUFDLENBQUM7SUFFSDs7O09BR0c7SUFDSCxNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUUzRCxxRUFBcUU7SUFDckUsSUFBSyxZQUlKO0lBSkQsV0FBSyxZQUFZO1FBQ2YseURBQVMsQ0FBQTtRQUNULHlEQUFTLENBQUE7UUFDVCxxREFBTyxDQUFBO0lBQ1QsQ0FBQyxFQUpJLFlBQVksS0FBWixZQUFZLFFBSWhCO0lBRUQsd0RBQXdEO0lBQ3hELElBQUssZUFNSjtJQU5ELFdBQUssZUFBZTtRQUNsQiwrREFBUyxDQUFBO1FBQ1QsK0RBQVMs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Q0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ3hFLEtBQUssR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO2lCQUNoQzthQUNGO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQ7Ozs7O1dBS0c7UUFDSywyQkFBMkIsQ0FBQyxJQUF5QjtZQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlFLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRTtnQkFDakMsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FDdkIsQ0FBQyxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QjtnQkFDaEUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7S0FDRjtJQTlQRCx3R0E4UEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtQYXJ0aWFsRXZhbHVhdG9yfSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGkvc3JjL25ndHNjL3BhcnRpYWxfZXZhbHVhdG9yJztcbmltcG9ydCB7cmVmbGVjdE9iamVjdExpdGVyYWwsIFR5cGVTY3JpcHRSZWZsZWN0aW9uSG9zdH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ltcG9ydE1hbmFnZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2ltcG9ydF9tYW5hZ2VyJztcbmltcG9ydCB7Z2V0QW5ndWxhckRlY29yYXRvcnMsIE5nRGVjb3JhdG9yfSBmcm9tICcuLi8uLi91dGlscy9uZ19kZWNvcmF0b3JzJztcbmltcG9ydCB7ZmluZEJhc2VDbGFzc0RlY2xhcmF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9maW5kX2Jhc2VfY2xhc3Nlcyc7XG5pbXBvcnQge3Vud3JhcEV4cHJlc3Npb259IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvZnVuY3Rpb25zJztcbmltcG9ydCB7Z2V0UHJvcGVydHlOYW1lVGV4dH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9wcm9wZXJ0eV9uYW1lJztcblxuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGVfcmVjb3JkZXInO1xuXG4vKipcbiAqIFNldCBvZiBrbm93biBkZWNvcmF0b3JzIHRoYXQgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCBjbGFzcyBuZWVkcyBhIGRpcmVjdGl2ZVxuICogZGVmaW5pdGlvbi4gVGhlc2UgZGVjb3JhdG9ycyBhcmUgYWx3YXlzIHNwZWNpZmljIHRvIGRpcmVjdGl2ZXMuXG4gKi9cbmNvbnN0IERJUkVDVElWRV9GSUVMRF9ERUNPUkFUT1JTID0gbmV3IFNldChbXG4gICdJbnB1dCcsICdPdXRwdXQnLCAnVmlld0NoaWxkJywgJ1ZpZXdDaGlsZHJlbicsICdDb250ZW50Q2hpbGQnLCAnQ29udGVudENoaWxkcmVuJywgJ0hvc3RCaW5kaW5nJyxcbiAgJ0hvc3RMaXN0ZW5lcidcbl0pO1xuXG4vKipcbiAqIFNldCBvZiBrbm93biBsaWZlY3ljbGUgaG9va3MgdGhhdCBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IGNsYXNzIG5lZWRzIGEgZGlyZWN0aXZlXG4gKiBkZWZpbml0aW9uLiBUaGVzZSBsaWZlY3ljbGUgaG9va3MgYXJlIGFsd2F5cyBzcGVjaWZpYyB0byBkaXJlY3RpdmVzLlxuICovXG5jb25zdCBESVJFQ1RJVkVfTElGRUNZQ0xFX0hPT0tTID0gbmV3IFNldChbXG4gICduZ09uQ2hhbmdlcycsICduZ09uSW5pdCcsICduZ0RvQ2hlY2snLCAnbmdBZnRlclZpZXdJbml0JywgJ25nQWZ0ZXJWaWV3Q2hlY2tlZCcsXG4gICduZ0FmdGVyQ29udGVudEluaXQnLCAnbmdBZnRlckNvbnRlbnRDaGVja2VkJ1xuXSk7XG5cbi8qKlxuICogU2V0IG9mIGtub3duIGxpZmVjeWNsZSBob29rcyB0aGF0IGluZGljYXRlIHRoYXQgYSBnaXZlbiBjbGFzcyB1c2VzIEFuZ3VsYXJcbiAqIGZlYXR1cmVzLCBidXQgaXQncyBhbWJpZ3VvdXMgd2hldGhlciBpdCBpcyBhIGRpcmVjdGl2ZSBvciBzZXJ2aWNlLlxuICovXG5jb25zdCBBTUJJR1VPVVNfTElGRUNZQ0xFX0hPT0tTID0gbmV3IFNldChbJ25nT25EZXN0cm95J10pO1xuXG4vKiogRGVzY3JpYmVzIGhvdyBhIGdpdmVuIGNsYXNzIGlzIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgQW5ndWxhci4gKi9cbmVudW0gSW5mZXJyZWRLaW5kIHtcbiAgRElSRUNUSVZFLFxuICBBTUJJR1VPVVMsXG4gIFVOS05PV04sXG59XG5cbi8qKiBEZXNjcmliZXMgcG9zc2libGUgdHlwZXMgb2YgQW5ndWxhciBkZWNsYXJhdGlvbnMuICovXG5lbnVtIERlY2xhcmF0aW9uVHlwZSB7XG4gIERJUkVDVElWRSxcbiAgQ09NUE9ORU5ULFxuICBBQlNUUkFDVF9ESVJFQ1RJVkUsXG4gIFBJUEUsXG4gIElOSkVDVEFCTEUsXG59XG5cbi8qKiBBbmFseXplZCBjbGFzcyBkZWNsYXJhdGlvbi4gKi9cbmludGVyZmFjZSBBbmFseXplZENsYXNzIHtcbiAgLyoqIFR5cGUgb2YgZGVjbGFyYXRpb24gdGhhdCBpcyBkZXRlcm1pbmVkIHRocm91Z2ggYW4gYXBwbGllZCBkZWNvcmF0b3IuICovXG4gIGRlY29yYXRlZFR5cGU6IERlY2xhcmF0aW9uVHlwZXxudWxsO1xuICAvKiogSW5mZXJyZWQgY2xhc3Mga2luZCBpbiB0ZXJtcyBvZiBBbmd1bGFyLiAqL1xuICBpbmZlcnJlZEtpbmQ6IEluZmVycmVkS2luZDtcbn1cblxuaW50ZXJmYWNlIEFuYWx5c2lzRmFpbHVyZSB7XG4gIG5vZGU6IHRzLk5vZGU7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFRPRE8gbWVzc2FnZSB0aGF0IGlzIGFkZGVkIHRvIGFtYmlndW91cyBjbGFzc2VzIHVzaW5nIEFuZ3VsYXIgZmVhdHVyZXMuICovXG5jb25zdCBBTUJJR1VPVVNfQ0xBU1NfVE9ETyA9ICdBZGQgQW5ndWxhciBkZWNvcmF0b3IuJztcblxuZXhwb3J0IGNsYXNzIFVuZGVjb3JhdGVkQ2xhc3Nlc1dpdGhEZWNvcmF0ZWRGaWVsZHNUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG4gIHByaXZhdGUgaW1wb3J0TWFuYWdlciA9IG5ldyBJbXBvcnRNYW5hZ2VyKHRoaXMuZ2V0VXBkYXRlUmVjb3JkZXIsIHRoaXMucHJpbnRlcik7XG4gIHByaXZhdGUgcmVmbGVjdGlvbkhvc3QgPSBuZXcgVHlwZVNjcmlwdFJlZmxlY3Rpb25Ib3N0KHRoaXMudHlwZUNoZWNrZXIpO1xuICBwcml2YXRlIHBhcnRpYWxFdmFsdWF0b3IgPSBuZXcgUGFydGlhbEV2YWx1YXRvcih0aGlzLnJlZmxlY3Rpb25Ib3N0LCB0aGlzLnR5cGVDaGVja2VyLCBudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgICAgcHJpdmF0ZSBnZXRVcGRhdGVSZWNvcmRlcjogKHNmOiB0cy5Tb3VyY2VGaWxlKSA9PiBVcGRhdGVSZWNvcmRlcikge31cblxuICAvKipcbiAgICogTWlncmF0ZXMgdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZXMuIFRoZSB0cmFuc2Zvcm0gYWRkcyB0aGUgYWJzdHJhY3QgYEBEaXJlY3RpdmVgXG4gICAqIGRlY29yYXRvciB0byB1bmRlY29yYXRlZCBjbGFzc2VzIHRoYXQgdXNlIEFuZ3VsYXIgZmVhdHVyZXMuIENsYXNzIG1lbWJlcnMgd2hpY2hcbiAgICogYXJlIGRlY29yYXRlZCB3aXRoIGFueSBBbmd1bGFyIGRlY29yYXRvciwgb3IgY2xhc3MgbWVtYmVycyBmb3IgbGlmZWN5Y2xlIGhvb2tzIGFyZVxuICAgKiBpbmRpY2F0aW5nIHRoYXQgYSBnaXZlbiBjbGFzcyB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMuIGh0dHBzOi8vaGFja21kLmlvL3Z1UWZhdnpmUkc2S1VDdFU3b0tfRUFcbiAgICovXG4gIG1pZ3JhdGUoc291cmNlRmlsZXM6IHRzLlNvdXJjZUZpbGVbXSk6IEFuYWx5c2lzRmFpbHVyZVtdIHtcbiAgICBjb25zdCB7ZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMsIGFtYmlndW91c0NsYXNzZXN9ID1cbiAgICAgICAgdGhpcy5fZmluZFVuZGVjb3JhdGVkQWJzdHJhY3REaXJlY3RpdmVzKHNvdXJjZUZpbGVzKTtcblxuICAgIGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgICBjb25zdCByZWNvcmRlciA9IHRoaXMuZ2V0VXBkYXRlUmVjb3JkZXIoc291cmNlRmlsZSk7XG4gICAgICBjb25zdCBkaXJlY3RpdmVFeHByID1cbiAgICAgICAgICB0aGlzLmltcG9ydE1hbmFnZXIuYWRkSW1wb3J0VG9Tb3VyY2VGaWxlKHNvdXJjZUZpbGUsICdEaXJlY3RpdmUnLCAnQGFuZ3VsYXIvY29yZScpO1xuICAgICAgY29uc3QgZGVjb3JhdG9yRXhwciA9IHRzLmNyZWF0ZURlY29yYXRvcih0cy5jcmVhdGVDYWxsKGRpcmVjdGl2ZUV4cHIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7XG4gICAgICByZWNvcmRlci5hZGRDbGFzc0RlY29yYXRvcihcbiAgICAgICAgICBub2RlLCB0aGlzLnByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBkZWNvcmF0b3JFeHByLCBzb3VyY2VGaWxlKSk7XG4gICAgfSk7XG5cbiAgICAvLyBBbWJpZ3VvdXMgY2xhc3NlcyBjbGVhcmx5IHVzZSBBbmd1bGFyIGZlYXR1cmVzLCBidXQgdGhlIG1pZ3JhdGlvbiBpcyB1bmFibGUgdG9cbiAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2xhc3MgaXMgdXNlZCBhcyBkaXJlY3RpdmUsIHNlcnZpY2Ugb3IgcGlwZS4gVGhlIG1pZ3JhdGlvblxuICAgIC8vIGNvdWxkIHBvdGVudGlhbGx5IGRldGVybWluZSB0aGUgdHlwZSBieSBjaGVja2luZyBOZ01vZHVsZSBkZWZpbml0aW9ucyBvciBpbmhlcml0YW5jZVxuICAgIC8vIG9mIG90aGVyIGtub3duIGRlY2xhcmF0aW9ucywgYnV0IHRoaXMgaXMgb3V0IG9mIHNjb3BlIGFuZCBhIFRPRE8vZmFpbHVyZSBpcyBzdWZmaWNpZW50LlxuICAgIHJldHVybiBBcnJheS5mcm9tKGFtYmlndW91c0NsYXNzZXMpLnJlZHVjZSgoZmFpbHVyZXMsIG5vZGUpID0+IHtcbiAgICAgIC8vIElmIHRoZSBjbGFzcyBoYXMgYmVlbiByZXBvcnRlZCBhcyBhbWJpZ3VvdXMgYmVmb3JlLCBza2lwIGFkZGluZyBhIFRPRE8gYW5kXG4gICAgICAvLyBwcmludGluZyBhbiBlcnJvci4gQSBjbGFzcyBjb3VsZCBiZSB2aXNpdGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gaXQncyBwYXJ0XG4gICAgICAvLyBvZiBtdWx0aXBsZSBidWlsZCB0YXJnZXRzIGluIHRoZSBDTEkgcHJvamVjdC5cbiAgICAgIGlmICh0aGlzLl9oYXNCZWVuUmVwb3J0ZWRBc0FtYmlndW91cyhub2RlKSkge1xuICAgICAgICByZXR1cm4gZmFpbHVyZXM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBub2RlLmdldFNvdXJjZUZpbGUoKTtcbiAgICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5nZXRVcGRhdGVSZWNvcmRlcihzb3VyY2VGaWxlKTtcblxuICAgICAgLy8gQWRkIGEgVE9ETyB0byB0aGUgY2xhc3MgdGhhdCB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMgYnV0IGlzIG5vdCBkZWNvcmF0ZWQuXG4gICAgICByZWNvcmRlci5hZGRDbGFzc1RvZG8obm9kZSwgQU1CSUdVT1VTX0NMQVNTX1RPRE8pO1xuXG4gICAgICAvLyBBZGQgYW4gZXJyb3IgZm9yIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUgcHJpbnRlZCBpbiB0aGUgYG5nIHVwZGF0ZWAgb3V0cHV0LlxuICAgICAgcmV0dXJuIGZhaWx1cmVzLmNvbmNhdCh7XG4gICAgICAgIG5vZGUsXG4gICAgICAgIG1lc3NhZ2U6ICdDbGFzcyB1c2VzIEFuZ3VsYXIgZmVhdHVyZXMgYnV0IGNhbm5vdCBiZSBtaWdyYXRlZCBhdXRvbWF0aWNhbGx5LiBQbGVhc2UgJyArXG4gICAgICAgICAgICAnYWRkIGFuIGFwcHJvcHJpYXRlIEFuZ3VsYXIgZGVjb3JhdG9yLidcbiAgICAgIH0pO1xuICAgIH0sIFtdIGFzIEFuYWx5c2lzRmFpbHVyZVtdKTtcbiAgfVxuXG4gIC8qKiBSZWNvcmRzIGFsbCBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBpbXBvcnQgbWFuYWdlci4gKi9cbiAgcmVjb3JkQ2hhbmdlcygpIHtcbiAgICB0aGlzLmltcG9ydE1hbmFnZXIucmVjb3JkQ2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHVuZGVjb3JhdGVkIGFic3RyYWN0IGRpcmVjdGl2ZXMgaW4gdGhlIHNwZWNpZmllZCBzb3VyY2UgZmlsZXMuIEFsc28gcmV0dXJuc1xuICAgKiBhIHNldCBvZiB1bmRlY29yYXRlZCBjbGFzc2VzIHdoaWNoIGNvdWxkIG5vdCBiZSBkZXRlY3RlZCBhcyBndWFyYW50ZWVkIGFic3RyYWN0XG4gICAqIGRpcmVjdGl2ZXMuIFRob3NlIGFyZSBhbWJpZ3VvdXMgYW5kIGNvdWxkIGJlIGVpdGhlciBEaXJlY3RpdmUsIFBpcGUgb3Igc2VydmljZS5cbiAgICovXG4gIHByaXZhdGUgX2ZpbmRVbmRlY29yYXRlZEFic3RyYWN0RGlyZWN0aXZlcyhzb3VyY2VGaWxlczogdHMuU291cmNlRmlsZVtdKSB7XG4gICAgY29uc3QgYW1iaWd1b3VzQ2xhc3NlcyA9IG5ldyBTZXQ8dHMuQ2xhc3NEZWNsYXJhdGlvbj4oKTtcbiAgICBjb25zdCBkZWNsYXJhdGlvbnMgPSBuZXcgV2Vha01hcDx0cy5DbGFzc0RlY2xhcmF0aW9uLCBEZWNsYXJhdGlvblR5cGU+KCk7XG4gICAgY29uc3QgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMgPSBuZXcgU2V0PHRzLkNsYXNzRGVjbGFyYXRpb24+KCk7XG4gICAgY29uc3QgdW5kZWNvcmF0ZWRDbGFzc2VzID0gbmV3IFNldDx0cy5DbGFzc0RlY2xhcmF0aW9uPigpO1xuXG4gICAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAgIG5vZGUuZm9yRWFjaENoaWxkKHZpc2l0Tm9kZSk7XG4gICAgICBpZiAoIXRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7aW5mZXJyZWRLaW5kLCBkZWNvcmF0ZWRUeXBlfSA9IHRoaXMuX2FuYWx5emVDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuXG4gICAgICBpZiAoZGVjb3JhdGVkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBkZWNsYXJhdGlvbnMuc2V0KG5vZGUsIGRlY29yYXRlZFR5cGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmZlcnJlZEtpbmQgPT09IEluZmVycmVkS2luZC5ESVJFQ1RJVkUpIHtcbiAgICAgICAgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMuYWRkKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChpbmZlcnJlZEtpbmQgPT09IEluZmVycmVkS2luZC5BTUJJR1VPVVMpIHtcbiAgICAgICAgYW1iaWd1b3VzQ2xhc3Nlcy5hZGQobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1bmRlY29yYXRlZENsYXNzZXMuYWRkKG5vZGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzb3VyY2VGaWxlcy5mb3JFYWNoKHNvdXJjZUZpbGUgPT4gc291cmNlRmlsZS5mb3JFYWNoQ2hpbGQodmlzaXROb2RlKSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgdGhlIGluaGVyaXRhbmNlIG9mIHRoZSBnaXZlbiBzZXQgb2YgY2xhc3Nlcy4gSXQgcmVtb3ZlcyBjbGFzc2VzIGZyb20gdGhlXG4gICAgICogZGV0ZWN0ZWQgYWJzdHJhY3QgZGlyZWN0aXZlcyBzZXQgd2hlbiB0aGV5IGluaGVyaXQgZnJvbSBhIG5vbi1hYnN0cmFjdCBBbmd1bGFyXG4gICAgICogZGVjbGFyYXRpb24uIGUuZy4gYW4gYWJzdHJhY3QgZGlyZWN0aXZlIGNhbiBuZXZlciBleHRlbmQgZnJvbSBhIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIElmIGEgY2xhc3MgaW5oZXJpdHMgZnJvbSBhbiBhYnN0cmFjdCBkaXJlY3RpdmUgdGhvdWdoLCB3ZSB3aWxsIG1pZ3JhdGUgdGhlbSB0b29cbiAgICAgKiBhcyBkZXJpdmVkIGNsYXNzZXMgYWxzbyBuZWVkIHRvIGJlIGRlY29yYXRlZC4gVGhpcyBoYXMgYmVlbiBkb25lIGZvciBhIHNpbXBsZXIgbWVudGFsXG4gICAgICogbW9kZWwgYW5kIHJlZHVjZWQgY29tcGxleGl0eSBpbiB0aGUgQW5ndWxhciBjb21waWxlci4gU2VlIG1pZ3JhdGlvbiBwbGFuIGRvY3VtZW50LlxuICAgICAqL1xuICAgIGNvbnN0IGNoZWNrSW5oZXJpdGFuY2VPZkNsYXNzZXMgPSAoY2xhc3NlczogU2V0PHRzLkNsYXNzRGVjbGFyYXRpb24+KSA9PiB7XG4gICAgICBjbGFzc2VzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qge25vZGU6IGJhc2VDbGFzc30gb2YgZmluZEJhc2VDbGFzc0RlY2xhcmF0aW9ucyhub2RlLCB0aGlzLnR5cGVDaGVja2VyKSkge1xuICAgICAgICAgIGlmICghZGVjbGFyYXRpb25zLmhhcyhiYXNlQ2xhc3MpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSWYgdGhlIHVuZGVjb3JhdGVkIGNsYXNzIGluaGVyaXRzIGZyb20gYW4gYWJzdHJhY3QgZGlyZWN0aXZlLCBhbHdheXMgbWlncmF0ZSBpdC5cbiAgICAgICAgICAvLyBEZXJpdmVkIHVuZGVjb3JhdGVkIGNsYXNzZXMgb2YgYWJzdHJhY3QgZGlyZWN0aXZlcyBhcmUgYWx3YXlzIGFsc28gY29uc2lkZXJlZFxuICAgICAgICAgIC8vIGFic3RyYWN0IGRpcmVjdGl2ZXMgYW5kIG5lZWQgdG8gYmUgZGVjb3JhdGVkIHRvby4gVGhpcyBpcyBuZWNlc3NhcnkgYXMgb3RoZXJ3aXNlXG4gICAgICAgICAgLy8gdGhlIGluaGVyaXRhbmNlIGNoYWluIGNhbm5vdCBiZSByZXNvbHZlZCBieSB0aGUgQW5ndWxhciBjb21waWxlci4gZS5nLiB3aGVuIGl0XG4gICAgICAgICAgLy8gZmxhdHRlbnMgZGlyZWN0aXZlIG1ldGFkYXRhIGZvciB0eXBlIGNoZWNraW5nLiBJbiB0aGUgb3RoZXIgY2FzZSwgd2UgbmV2ZXIgd2FudFxuICAgICAgICAgIC8vIHRvIG1pZ3JhdGUgYSBjbGFzcyBpZiBpdCBleHRlbmRzIGZyb20gYSBub24tYWJzdHJhY3QgQW5ndWxhciBkZWNsYXJhdGlvbi4gVGhhdFxuICAgICAgICAgIC8vIGlzIGFuIHVuc3VwcG9ydGVkIHBhdHRlcm4gYXMgb2YgdjkgYW5kIHdhcyBwcmV2aW91c2x5IGhhbmRsZWQgd2l0aCB0aGVcbiAgICAgICAgICAvLyBgdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRpYCBtaWdyYXRpb24gKHdoaWNoIGNvcGllZCB0aGUgaW5oZXJpdGVkIGRlY29yYXRvcikuXG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9ucy5nZXQoYmFzZUNsYXNzKSA9PT0gRGVjbGFyYXRpb25UeXBlLkFCU1RSQUNUX0RJUkVDVElWRSkge1xuICAgICAgICAgICAgZGV0ZWN0ZWRBYnN0cmFjdERpcmVjdGl2ZXMuYWRkKG5vZGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXRlY3RlZEFic3RyYWN0RGlyZWN0aXZlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFtYmlndW91c0NsYXNzZXMuZGVsZXRlKG5vZGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgYW55IGRldGVjdGVkIGFic3RyYWN0IGRpcmVjdGl2ZS4gV2Ugd2FudCB0byByZW1vdmVcbiAgICAvLyBjbGFzc2VzIHRoYXQgYXJlIG5vdCBlbGlnaWJsZSBhYnN0cmFjdCBkaXJlY3RpdmVzIGR1ZSB0byBpbmhlcml0YW5jZS4gaS5lLlxuICAgIC8vIGlmIGEgY2xhc3MgZXh0ZW5kcyBmcm9tIGEgY29tcG9uZW50LCBpdCBjYW5ub3QgYmUgYSBkZXJpdmVkIGFic3RyYWN0IGRpcmVjdGl2ZS5cbiAgICBjaGVja0luaGVyaXRhbmNlT2ZDbGFzc2VzKGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzKTtcbiAgICAvLyBVcGRhdGUgdGhlIGNsYXNzIGRlY2xhcmF0aW9ucyB0byByZWZsZWN0IHRoZSBkZXRlY3RlZCBhYnN0cmFjdCBkaXJlY3RpdmVzLiBUaGlzIGlzXG4gICAgLy8gdGhlbiB1c2VkIGxhdGVyIHdoZW4gd2UgY2hlY2sgZm9yIHVuZGVjb3JhdGVkIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gYW4gYWJzdHJhY3RcbiAgICAvLyBkaXJlY3RpdmUgYW5kIG5lZWQgdG8gYmUgZGVjb3JhdGVkLlxuICAgIGRldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLmZvckVhY2goXG4gICAgICAgIG4gPT4gZGVjbGFyYXRpb25zLnNldChuLCBEZWNsYXJhdGlvblR5cGUuQUJTVFJBQ1RfRElSRUNUSVZFKSk7XG4gICAgLy8gQ2hlY2sgYW1iaWd1b3VzIGFuZCB1bmRlY29yYXRlZCBjbGFzc2VzIGlmIHRoZXkgaW5oZXJpdCBmcm9tIGFuIGFic3RyYWN0IGRpcmVjdGl2ZS5cbiAgICAvLyBJZiB0aGV5IGRvLCB3ZSB3YW50IHRvIG1pZ3JhdGUgdGhlbSB0b28uIFNlZSBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBtb3JlIGRldGFpbHMuXG4gICAgY2hlY2tJbmhlcml0YW5jZU9mQ2xhc3NlcyhhbWJpZ3VvdXNDbGFzc2VzKTtcbiAgICBjaGVja0luaGVyaXRhbmNlT2ZDbGFzc2VzKHVuZGVjb3JhdGVkQ2xhc3Nlcyk7XG5cbiAgICByZXR1cm4ge2RldGVjdGVkQWJzdHJhY3REaXJlY3RpdmVzLCBhbWJpZ3VvdXNDbGFzc2VzfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmFseXplcyB0aGUgZ2l2ZW4gY2xhc3MgZGVjbGFyYXRpb24gYnkgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgY2xhc3NcbiAgICogaXMgYSBkaXJlY3RpdmUsIGlzIGFuIGFic3RyYWN0IGRpcmVjdGl2ZSwgb3IgdXNlcyBBbmd1bGFyIGZlYXR1cmVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfYW5hbHl6ZUNsYXNzRGVjbGFyYXRpb24obm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbik6IEFuYWx5emVkQ2xhc3Mge1xuICAgIGNvbnN0IG5nRGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycyAmJiBnZXRBbmd1bGFyRGVjb3JhdG9ycyh0aGlzLnR5cGVDaGVja2VyLCBub2RlLmRlY29yYXRvcnMpO1xuICAgIGNvbnN0IGluZmVycmVkS2luZCA9IHRoaXMuX2RldGVybWluZUNsYXNzS2luZChub2RlKTtcbiAgICBpZiAobmdEZWNvcmF0b3JzID09PSB1bmRlZmluZWQgfHwgbmdEZWNvcmF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtkZWNvcmF0ZWRUeXBlOiBudWxsLCBpbmZlcnJlZEtpbmR9O1xuICAgIH1cbiAgICBjb25zdCBkaXJlY3RpdmVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnRGlyZWN0aXZlJyk7XG4gICAgY29uc3QgY29tcG9uZW50RGVjb3JhdG9yID0gbmdEZWNvcmF0b3JzLmZpbmQoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ0NvbXBvbmVudCcpO1xuICAgIGNvbnN0IHBpcGVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnUGlwZScpO1xuICAgIGNvbnN0IGluamVjdGFibGVEZWNvcmF0b3IgPSBuZ0RlY29yYXRvcnMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSAnSW5qZWN0YWJsZScpO1xuICAgIGNvbnN0IGlzQWJzdHJhY3REaXJlY3RpdmUgPVxuICAgICAgICBkaXJlY3RpdmVEZWNvcmF0b3IgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9pc0Fic3RyYWN0RGlyZWN0aXZlKGRpcmVjdGl2ZURlY29yYXRvcik7XG5cbiAgICBsZXQgZGVjb3JhdGVkVHlwZTogRGVjbGFyYXRpb25UeXBlfG51bGwgPSBudWxsO1xuICAgIGlmIChpc0Fic3RyYWN0RGlyZWN0aXZlKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkFCU1RSQUNUX0RJUkVDVElWRTtcbiAgICB9IGVsc2UgaWYgKGNvbXBvbmVudERlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkNPTVBPTkVOVDtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGl2ZURlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLkRJUkVDVElWRTtcbiAgICB9IGVsc2UgaWYgKHBpcGVEZWNvcmF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVjb3JhdGVkVHlwZSA9IERlY2xhcmF0aW9uVHlwZS5QSVBFO1xuICAgIH0gZWxzZSBpZiAoaW5qZWN0YWJsZURlY29yYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWNvcmF0ZWRUeXBlID0gRGVjbGFyYXRpb25UeXBlLklOSkVDVEFCTEU7XG4gICAgfVxuICAgIHJldHVybiB7ZGVjb3JhdGVkVHlwZSwgaW5mZXJyZWRLaW5kfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gZGVjb3JhdG9yIHJlc29sdmVzIHRvIGFuIGFic3RyYWN0IGRpcmVjdGl2ZS4gQW4gZGlyZWN0aXZlIGlzXG4gICAqIGNvbnNpZGVyZWQgXCJhYnN0cmFjdFwiIGlmIHRoZXJlIGlzIG5vIHNlbGVjdG9yIHNwZWNpZmllZC5cbiAgICovXG4gIHByaXZhdGUgX2lzQWJzdHJhY3REaXJlY3RpdmUoe25vZGV9OiBOZ0RlY29yYXRvcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1ldGFkYXRhQXJncyA9IG5vZGUuZXhwcmVzc2lvbi5hcmd1bWVudHM7XG4gICAgaWYgKG1ldGFkYXRhQXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBtZXRhZGF0YUV4cHIgPSB1bndyYXBFeHByZXNzaW9uKG1ldGFkYXRhQXJnc1swXSk7XG4gICAgaWYgKCF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKG1ldGFkYXRhRXhwcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbWV0YWRhdGEgPSByZWZsZWN0T2JqZWN0TGl0ZXJhbChtZXRhZGF0YUV4cHIpO1xuICAgIGlmICghbWV0YWRhdGEuaGFzKCdzZWxlY3RvcicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdG9yID0gdGhpcy5wYXJ0aWFsRXZhbHVhdG9yLmV2YWx1YXRlKG1ldGFkYXRhLmdldCgnc2VsZWN0b3InKSEpO1xuICAgIHJldHVybiBzZWxlY3RvciA9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIGtpbmQgb2YgYSBnaXZlbiBjbGFzcyBpbiB0ZXJtcyBvZiBBbmd1bGFyLiBUaGUgbWV0aG9kIGNoZWNrc1xuICAgKiB3aGV0aGVyIHRoZSBnaXZlbiBjbGFzcyBoYXMgbWVtYmVycyB0aGF0IGluZGljYXRlIHRoZSB1c2Ugb2YgQW5ndWxhciBmZWF0dXJlcy5cbiAgICogZS5nLiBsaWZlY3ljbGUgaG9va3Mgb3IgZGVjb3JhdGVkIG1lbWJlcnMgbGlrZSBgQElucHV0YCBvciBgQE91dHB1dGAgYXJlXG4gICAqIGNvbnNpZGVyZWQgQW5ndWxhciBmZWF0dXJlcy4uXG4gICAqL1xuICBwcml2YXRlIF9kZXRlcm1pbmVDbGFzc0tpbmQobm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbik6IEluZmVycmVkS2luZCB7XG4gICAgbGV0IHVzYWdlID0gSW5mZXJyZWRLaW5kLlVOS05PV047XG5cbiAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiBub2RlLm1lbWJlcnMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IG1lbWJlci5uYW1lICE9PSB1bmRlZmluZWQgPyBnZXRQcm9wZXJ0eU5hbWVUZXh0KG1lbWJlci5uYW1lKSA6IG51bGw7XG5cbiAgICAgIC8vIElmIHRoZSBjbGFzcyBkZWNsYXJlcyBhbnkgb2YgdGhlIGtub3duIGRpcmVjdGl2ZSBsaWZlY3ljbGUgaG9va3MsIHdlIGNhblxuICAgICAgLy8gaW1tZWRpYXRlbHkgZXhpdCB0aGUgbG9vcCBhcyB0aGUgY2xhc3MgaXMgZ3VhcmFudGVlZCB0byBiZSBhIGRpcmVjdGl2ZS5cbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IG51bGwgJiYgRElSRUNUSVZFX0xJRkVDWUNMRV9IT09LUy5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gSW5mZXJyZWRLaW5kLkRJUkVDVElWRTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmdEZWNvcmF0b3JzID0gbWVtYmVyLmRlY29yYXRvcnMgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgZ2V0QW5ndWxhckRlY29yYXRvcnModGhpcy50eXBlQ2hlY2tlciwgbWVtYmVyLmRlY29yYXRvcnMpIDpcbiAgICAgICAgICBbXTtcbiAgICAgIGZvciAoY29uc3Qge25hbWV9IG9mIG5nRGVjb3JhdG9ycykge1xuICAgICAgICBpZiAoRElSRUNUSVZFX0ZJRUxEX0RFQ09SQVRPUlMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIEluZmVycmVkS2luZC5ESVJFQ1RJVkU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIGNsYXNzIGRlY2xhcmVzIGFueSBvZiB0aGUgbGlmZWN5Y2xlIGhvb2tzIHRoYXQgZG8gbm90IGd1YXJhbnRlZSB0aGF0XG4gICAgICAvLyB0aGUgZ2l2ZW4gY2xhc3MgaXMgYSBkaXJlY3RpdmUsIHVwZGF0ZSB0aGUga2luZCBhbmQgY29udGludWUgbG9va2luZyBmb3Igb3RoZXJcbiAgICAgIC8vIG1lbWJlcnMgdGhhdCB3b3VsZCB1bnZlaWwgYSBtb3JlIHNwZWNpZmljIGtpbmQgKGkuZS4gYmVpbmcgYSBkaXJlY3RpdmUpLlxuICAgICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gbnVsbCAmJiBBTUJJR1VPVVNfTElGRUNZQ0xFX0hPT0tTLmhhcyhwcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgIHVzYWdlID0gSW5mZXJyZWRLaW5kLkFNQklHVU9VUztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXNhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgYSBnaXZlbiBjbGFzcyBoYXMgYmVlbiByZXBvcnRlZCBhcyBhbWJpZ3VvdXMgaW4gcHJldmlvdXNcbiAgICogbWlncmF0aW9uIHJ1bi4gZS5nLiB3aGVuIGJ1aWxkIHRhcmdldHMgYXJlIG1pZ3JhdGVkIGZpcnN0LCBhbmQgdGhlbiB0ZXN0XG4gICAqIHRhcmdldHMgdGhhdCBoYXZlIGFuIG92ZXJsYXAgd2l0aCBidWlsZCBzb3VyY2UgZmlsZXMsIHRoZSBzYW1lIGNsYXNzXG4gICAqIGNvdWxkIGJlIGRldGVjdGVkIGFzIGFtYmlndW91cy5cbiAgICovXG4gIHByaXZhdGUgX2hhc0JlZW5SZXBvcnRlZEFzQW1iaWd1b3VzKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgY29uc3QgbGVhZGluZ0NvbW1lbnRzID0gdHMuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoc291cmNlRmlsZS50ZXh0LCBub2RlLnBvcyk7XG4gICAgaWYgKGxlYWRpbmdDb21tZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBsZWFkaW5nQ29tbWVudHMuc29tZShcbiAgICAgICAgKHtraW5kLCBwb3MsIGVuZH0pID0+IGtpbmQgPT09IHRzLlN5bnRheEtpbmQuU2luZ2xlTGluZUNvbW1lbnRUcml2aWEgJiZcbiAgICAgICAgICAgIHNvdXJjZUZpbGUudGV4dC5zdWJzdHJpbmcocG9zLCBlbmQpLmluY2x1ZGVzKGBUT0RPOiAke0FNQklHVU9VU19DTEFTU19UT0RPfWApKTtcbiAgfVxufVxuIl19
|
package/schematics/migrations/undecorated-classes-with-decorated-fields/update_recorder.d.ts
DELETED
|
@@ -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/undecorated-classes-with-decorated-fields/update_recorder" />
|
|
9
|
-
import * as ts from 'typescript';
|
|
10
|
-
import { ImportManagerUpdateRecorder } from '../../utils/import_manager';
|
|
11
|
-
/**
|
|
12
|
-
* Update recorder interface that is used to transform source files
|
|
13
|
-
* in a non-colliding way.
|
|
14
|
-
*/
|
|
15
|
-
export interface UpdateRecorder extends ImportManagerUpdateRecorder {
|
|
16
|
-
addClassDecorator(node: ts.ClassDeclaration, text: string): void;
|
|
17
|
-
addClassTodo(node: ts.ClassDeclaration, message: string): void;
|
|
18
|
-
commitUpdate(): void;
|
|
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/undecorated-classes-with-decorated-fields/update_recorder", ["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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX3JlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRlY29yYXRlZC1maWVsZHMvdXBkYXRlX3JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7SW1wb3J0TWFuYWdlclVwZGF0ZVJlY29yZGVyfSBmcm9tICcuLi8uLi91dGlscy9pbXBvcnRfbWFuYWdlcic7XG5cbi8qKlxuICogVXBkYXRlIHJlY29yZGVyIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gdHJhbnNmb3JtIHNvdXJjZSBmaWxlc1xuICogaW4gYSBub24tY29sbGlkaW5nIHdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVSZWNvcmRlciBleHRlbmRzIEltcG9ydE1hbmFnZXJVcGRhdGVSZWNvcmRlciB7XG4gIGFkZENsYXNzRGVjb3JhdG9yKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24sIHRleHQ6IHN0cmluZyk6IHZvaWQ7XG4gIGFkZENsYXNzVG9kbyhub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICBjb21taXRVcGRhdGUoKTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -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/undecorated-classes-with-di/create_ngc_program" />
|
|
9
|
-
import { AotCompiler } from '@angular/compiler';
|
|
10
|
-
import { CompilerHost } from '@angular/compiler-cli';
|
|
11
|
-
import * as ts from 'typescript';
|
|
12
|
-
/** Creates an NGC program that can be used to read and parse metadata for files. */
|
|
13
|
-
export declare function createNgcProgram(createHost: (options: ts.CompilerOptions) => CompilerHost, tsconfigPath: string): {
|
|
14
|
-
host: CompilerHost;
|
|
15
|
-
ngcProgram: import("@angular/compiler-cli").Program;
|
|
16
|
-
program: ts.Program;
|
|
17
|
-
compiler: AotCompiler;
|
|
18
|
-
};
|
|
@@ -1,57 +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/undecorated-classes-with-di/create_ngc_program", ["require", "exports", "@angular/compiler-cli"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.createNgcProgram = void 0;
|
|
20
|
-
const compiler_cli_1 = require("@angular/compiler-cli");
|
|
21
|
-
/** Creates an NGC program that can be used to read and parse metadata for files. */
|
|
22
|
-
function createNgcProgram(createHost, tsconfigPath) {
|
|
23
|
-
const { rootNames, options } = (0, compiler_cli_1.readConfiguration)(tsconfigPath);
|
|
24
|
-
// https://github.com/angular/angular/commit/ec4381dd401f03bded652665b047b6b90f2b425f made Ivy
|
|
25
|
-
// the default. This breaks the assumption that "createProgram" from compiler-cli returns the
|
|
26
|
-
// NGC program. In order to ensure that the migration runs properly, we set "enableIvy" to false.
|
|
27
|
-
options.enableIvy = false;
|
|
28
|
-
// Libraries which have been generated with CLI versions past v6.2.0, explicitly set the
|
|
29
|
-
// flat-module options in their tsconfig files. This is problematic because by default,
|
|
30
|
-
// those tsconfig files do not specify explicit source files which can be considered as
|
|
31
|
-
// entry point for the flat-module bundle. Therefore the `@angular/compiler-cli` is unable
|
|
32
|
-
// to determine the flat module entry point and throws a compile error. This is not an issue
|
|
33
|
-
// for the libraries built with `ng-packagr`, because the tsconfig files are modified in-memory
|
|
34
|
-
// to specify an explicit flat module entry-point. Our migrations don't distinguish between
|
|
35
|
-
// libraries and applications, and also don't run `ng-packagr`. To ensure that such libraries
|
|
36
|
-
// can be successfully migrated, we remove the flat-module options to eliminate the flat module
|
|
37
|
-
// entry-point requirement. More context: https://github.com/angular/angular/issues/34985.
|
|
38
|
-
options.flatModuleId = undefined;
|
|
39
|
-
options.flatModuleOutFile = undefined;
|
|
40
|
-
const host = createHost(options);
|
|
41
|
-
// For this migration, we never need to read resources and can just return
|
|
42
|
-
// an empty string for requested resources. We need to handle requested resources
|
|
43
|
-
// because our created NGC compiler program does not know about special resolutions
|
|
44
|
-
// which are set up by the Angular CLI. i.e. resolving stylesheets through "tilde".
|
|
45
|
-
host.readResource = () => '';
|
|
46
|
-
host.resourceNameToFileName = () => '$fake-file$';
|
|
47
|
-
const ngcProgram = (0, compiler_cli_1.createProgram)({ rootNames, options, host });
|
|
48
|
-
// The "AngularCompilerProgram" does not expose the "AotCompiler" instance, nor does it
|
|
49
|
-
// expose the logic that is necessary to analyze the determined modules. We work around
|
|
50
|
-
// this by just accessing the necessary private properties using the bracket notation.
|
|
51
|
-
const compiler = ngcProgram['compiler'];
|
|
52
|
-
const program = ngcProgram.getTsProgram();
|
|
53
|
-
return { host, ngcProgram, program, compiler };
|
|
54
|
-
}
|
|
55
|
-
exports.createNgcProgram = createNgcProgram;
|
|
56
|
-
});
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX25nY19wcm9ncmFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zY2hlbWF0aWNzL21pZ3JhdGlvbnMvdW5kZWNvcmF0ZWQtY2xhc3Nlcy13aXRoLWRpL2NyZWF0ZV9uZ2NfcHJvZ3JhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFHSCx3REFBcUY7SUFHckYsb0ZBQW9GO0lBQ3BGLFNBQWdCLGdCQUFnQixDQUM1QixVQUF5RCxFQUFFLFlBQW9CO1FBQ2pGLE1BQU0sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLEdBQUcsSUFBQSxnQ0FBaUIsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUU3RCw4RkFBOEY7UUFDOUYsNkZBQTZGO1FBQzdGLGlHQUFpRztRQUNqRyxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUUxQix3RkFBd0Y7UUFDeEYsdUZBQXVGO1FBQ3ZGLHVGQUF1RjtRQUN2RiwwRkFBMEY7UUFDMUYsNEZBQTRGO1FBQzVGLCtGQUErRjtRQUMvRiwyRkFBMkY7UUFDM0YsNkZBQTZGO1FBQzdGLCtGQUErRjtRQUMvRiwwRkFBMEY7UUFDMUYsT0FBTyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDakMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakMsMEVBQTBFO1FBQzFFLGlGQUFpRjtRQUNqRixtRkFBbUY7UUFDbkYsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFFbEQsTUFBTSxVQUFVLEdBQUcsSUFBQSw0QkFBYSxFQUFDLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRTdELHVGQUF1RjtRQUN2Rix1RkFBdUY7UUFDdkYsc0ZBQXNGO1FBQ3RGLE1BQU0sUUFBUSxHQUFpQixVQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUxQyxPQUFPLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLENBQUM7SUFDL0MsQ0FBQztJQXhDRCw0Q0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtBb3RDb21waWxlcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtDb21waWxlckhvc3QsIGNyZWF0ZVByb2dyYW0sIHJlYWRDb25maWd1cmF0aW9ufSBmcm9tICdAYW5ndWxhci9jb21waWxlci1jbGknO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKiBDcmVhdGVzIGFuIE5HQyBwcm9ncmFtIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVhZCBhbmQgcGFyc2UgbWV0YWRhdGEgZm9yIGZpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5nY1Byb2dyYW0oXG4gICAgY3JlYXRlSG9zdDogKG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucykgPT4gQ29tcGlsZXJIb3N0LCB0c2NvbmZpZ1BhdGg6IHN0cmluZykge1xuICBjb25zdCB7cm9vdE5hbWVzLCBvcHRpb25zfSA9IHJlYWRDb25maWd1cmF0aW9uKHRzY29uZmlnUGF0aCk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9jb21taXQvZWM0MzgxZGQ0MDFmMDNiZGVkNjUyNjY1YjA0N2I2YjkwZjJiNDI1ZiBtYWRlIEl2eVxuICAvLyB0aGUgZGVmYXVsdC4gVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gdGhhdCBcImNyZWF0ZVByb2dyYW1cIiBmcm9tIGNvbXBpbGVyLWNsaSByZXR1cm5zIHRoZVxuICAvLyBOR0MgcHJvZ3JhbS4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIG1pZ3JhdGlvbiBydW5zIHByb3Blcmx5LCB3ZSBzZXQgXCJlbmFibGVJdnlcIiB0byBmYWxzZS5cbiAgb3B0aW9ucy5lbmFibGVJdnkgPSBmYWxzZTtcblxuICAvLyBMaWJyYXJpZXMgd2hpY2ggaGF2ZSBiZWVuIGdlbmVyYXRlZCB3aXRoIENMSSB2ZXJzaW9ucyBwYXN0IHY2LjIuMCwgZXhwbGljaXRseSBzZXQgdGhlXG4gIC8vIGZsYXQtbW9kdWxlIG9wdGlvbnMgaW4gdGhlaXIgdHNjb25maWcgZmlsZXMuIFRoaXMgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSBieSBkZWZhdWx0LFxuICAvLyB0aG9zZSB0c2NvbmZpZyBmaWxlcyBkbyBub3Qgc3BlY2lmeSBleHBsaWNpdCBzb3VyY2UgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnNpZGVyZWQgYXNcbiAgLy8gZW50cnkgcG9pbnQgZm9yIHRoZSBmbGF0LW1vZHVsZSBidW5kbGUuIFRoZXJlZm9yZSB0aGUgYEBhbmd1bGFyL2NvbXBpbGVyLWNsaWAgaXMgdW5hYmxlXG4gIC8vIHRvIGRldGVybWluZSB0aGUgZmxhdCBtb2R1bGUgZW50cnkgcG9pbnQgYW5kIHRocm93cyBhIGNvbXBpbGUgZXJyb3IuIFRoaXMgaXMgbm90IGFuIGlzc3VlXG4gIC8vIGZvciB0aGUgbGlicmFyaWVzIGJ1aWx0IHdpdGggYG5nLXBhY2thZ3JgLCBiZWNhdXNlIHRoZSB0c2NvbmZpZyBmaWxlcyBhcmUgbW9kaWZpZWQgaW4tbWVtb3J5XG4gIC8vIHRvIHNwZWNpZnkgYW4gZXhwbGljaXQgZmxhdCBtb2R1bGUgZW50cnktcG9pbnQuIE91ciBtaWdyYXRpb25zIGRvbid0IGRpc3Rpbmd1aXNoIGJldHdlZW5cbiAgLy8gbGlicmFyaWVzIGFuZCBhcHBsaWNhdGlvbnMsIGFuZCBhbHNvIGRvbid0IHJ1biBgbmctcGFja2FncmAuIFRvIGVuc3VyZSB0aGF0IHN1Y2ggbGlicmFyaWVzXG4gIC8vIGNhbiBiZSBzdWNjZXNzZnVsbHkgbWlncmF0ZWQsIHdlIHJlbW92ZSB0aGUgZmxhdC1tb2R1bGUgb3B0aW9ucyB0byBlbGltaW5hdGUgdGhlIGZsYXQgbW9kdWxlXG4gIC8vIGVudHJ5LXBvaW50IHJlcXVpcmVtZW50LiBNb3JlIGNvbnRleHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzM0OTg1LlxuICBvcHRpb25zLmZsYXRNb2R1bGVJZCA9IHVuZGVmaW5lZDtcbiAgb3B0aW9ucy5mbGF0TW9kdWxlT3V0RmlsZSA9IHVuZGVmaW5lZDtcblxuICBjb25zdCBob3N0ID0gY3JlYXRlSG9zdChvcHRpb25zKTtcblxuICAvLyBGb3IgdGhpcyBtaWdyYXRpb24sIHdlIG5ldmVyIG5lZWQgdG8gcmVhZCByZXNvdXJjZXMgYW5kIGNhbiBqdXN0IHJldHVyblxuICAvLyBhbiBlbXB0eSBzdHJpbmcgZm9yIHJlcXVlc3RlZCByZXNvdXJjZXMuIFdlIG5lZWQgdG8gaGFuZGxlIHJlcXVlc3RlZCByZXNvdXJjZXNcbiAgLy8gYmVjYXVzZSBvdXIgY3JlYXRlZCBOR0MgY29tcGlsZXIgcHJvZ3JhbSBkb2VzIG5vdCBrbm93IGFib3V0IHNwZWNpYWwgcmVzb2x1dGlvbnNcbiAgLy8gd2hpY2ggYXJlIHNldCB1cCBieSB0aGUgQW5ndWxhciBDTEkuIGkuZS4gcmVzb2x2aW5nIHN0eWxlc2hlZXRzIHRocm91Z2ggXCJ0aWxkZVwiLlxuICBob3N0LnJlYWRSZXNvdXJjZSA9ICgpID0+ICcnO1xuICBob3N0LnJlc291cmNlTmFtZVRvRmlsZU5hbWUgPSAoKSA9PiAnJGZha2UtZmlsZSQnO1xuXG4gIGNvbnN0IG5nY1Byb2dyYW0gPSBjcmVhdGVQcm9ncmFtKHtyb290TmFtZXMsIG9wdGlvbnMsIGhvc3R9KTtcblxuICAvLyBUaGUgXCJBbmd1bGFyQ29tcGlsZXJQcm9ncmFtXCIgZG9lcyBub3QgZXhwb3NlIHRoZSBcIkFvdENvbXBpbGVyXCIgaW5zdGFuY2UsIG5vciBkb2VzIGl0XG4gIC8vIGV4cG9zZSB0aGUgbG9naWMgdGhhdCBpcyBuZWNlc3NhcnkgdG8gYW5hbHl6ZSB0aGUgZGV0ZXJtaW5lZCBtb2R1bGVzLiBXZSB3b3JrIGFyb3VuZFxuICAvLyB0aGlzIGJ5IGp1c3QgYWNjZXNzaW5nIHRoZSBuZWNlc3NhcnkgcHJpdmF0ZSBwcm9wZXJ0aWVzIHVzaW5nIHRoZSBicmFja2V0IG5vdGF0aW9uLlxuICBjb25zdCBjb21waWxlcjogQW90Q29tcGlsZXIgPSAobmdjUHJvZ3JhbSBhcyBhbnkpWydjb21waWxlciddO1xuICBjb25zdCBwcm9ncmFtID0gbmdjUHJvZ3JhbS5nZXRUc1Byb2dyYW0oKTtcblxuICByZXR1cm4ge2hvc3QsIG5nY1Byb2dyYW0sIHByb2dyYW0sIGNvbXBpbGVyfTtcbn1cbiJdfQ==
|
|
@@ -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/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata" />
|
|
9
|
-
import { StaticSymbol } from '@angular/compiler';
|
|
10
|
-
import * as ts from 'typescript';
|
|
11
|
-
/** Error that will be thrown if an unexpected value needs to be converted. */
|
|
12
|
-
export declare class UnexpectedMetadataValueError extends Error {
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Converts a directive metadata object into a TypeScript expression. Throws
|
|
16
|
-
* if metadata cannot be cleanly converted.
|
|
17
|
-
*/
|
|
18
|
-
export declare function convertDirectiveMetadataToExpression(metadata: any, resolveSymbolImport: (symbol: StaticSymbol) => string | null, createImport: (moduleName: string, name: string) => ts.Expression, convertProperty?: (key: string, value: any) => ts.Expression | null): ts.Expression;
|
|
@@ -1,97 +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/undecorated-classes-with-di/decorator_rewrite/convert_directive_metadata", ["require", "exports", "@angular/compiler", "typescript"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.convertDirectiveMetadataToExpression = exports.UnexpectedMetadataValueError = void 0;
|
|
20
|
-
const compiler_1 = require("@angular/compiler");
|
|
21
|
-
const ts = require("typescript");
|
|
22
|
-
/** Error that will be thrown if an unexpected value needs to be converted. */
|
|
23
|
-
class UnexpectedMetadataValueError extends Error {
|
|
24
|
-
}
|
|
25
|
-
exports.UnexpectedMetadataValueError = UnexpectedMetadataValueError;
|
|
26
|
-
/**
|
|
27
|
-
* Converts a directive metadata object into a TypeScript expression. Throws
|
|
28
|
-
* if metadata cannot be cleanly converted.
|
|
29
|
-
*/
|
|
30
|
-
function convertDirectiveMetadataToExpression(metadata, resolveSymbolImport, createImport, convertProperty) {
|
|
31
|
-
if (typeof metadata === 'string') {
|
|
32
|
-
return ts.createStringLiteral(metadata);
|
|
33
|
-
}
|
|
34
|
-
else if (Array.isArray(metadata)) {
|
|
35
|
-
return ts.createArrayLiteral(metadata.map(el => convertDirectiveMetadataToExpression(el, resolveSymbolImport, createImport, convertProperty)));
|
|
36
|
-
}
|
|
37
|
-
else if (typeof metadata === 'number') {
|
|
38
|
-
return ts.createNumericLiteral(metadata.toString());
|
|
39
|
-
}
|
|
40
|
-
else if (typeof metadata === 'boolean') {
|
|
41
|
-
return metadata ? ts.createTrue() : ts.createFalse();
|
|
42
|
-
}
|
|
43
|
-
else if (typeof metadata === 'undefined') {
|
|
44
|
-
return ts.createIdentifier('undefined');
|
|
45
|
-
}
|
|
46
|
-
else if (typeof metadata === 'bigint') {
|
|
47
|
-
return ts.createBigIntLiteral(metadata.toString());
|
|
48
|
-
}
|
|
49
|
-
else if (typeof metadata === 'object') {
|
|
50
|
-
// In case there is a static symbol object part of the metadata, try to resolve
|
|
51
|
-
// the import expression of the symbol. If no import path could be resolved, an
|
|
52
|
-
// error will be thrown as the symbol cannot be converted into TypeScript AST.
|
|
53
|
-
if (metadata instanceof compiler_1.StaticSymbol) {
|
|
54
|
-
const resolvedImport = resolveSymbolImport(metadata);
|
|
55
|
-
if (resolvedImport === null) {
|
|
56
|
-
throw new UnexpectedMetadataValueError();
|
|
57
|
-
}
|
|
58
|
-
return createImport(resolvedImport, metadata.name);
|
|
59
|
-
}
|
|
60
|
-
const literalProperties = [];
|
|
61
|
-
for (const key of Object.keys(metadata)) {
|
|
62
|
-
const metadataValue = metadata[key];
|
|
63
|
-
let propertyValue = null;
|
|
64
|
-
// Allows custom conversion of properties in an object. This is useful for special
|
|
65
|
-
// cases where we don't want to store the enum values as integers, but rather use the
|
|
66
|
-
// real enum symbol. e.g. instead of `2` we want to use `ViewEncapsulation.None`.
|
|
67
|
-
if (convertProperty) {
|
|
68
|
-
propertyValue = convertProperty(key, metadataValue);
|
|
69
|
-
}
|
|
70
|
-
// In case the property value has not been assigned to an expression, we convert
|
|
71
|
-
// the resolved metadata value into a TypeScript expression.
|
|
72
|
-
if (propertyValue === null) {
|
|
73
|
-
propertyValue = convertDirectiveMetadataToExpression(metadataValue, resolveSymbolImport, createImport, convertProperty);
|
|
74
|
-
}
|
|
75
|
-
literalProperties.push(ts.createPropertyAssignment(getPropertyName(key), propertyValue));
|
|
76
|
-
}
|
|
77
|
-
return ts.createObjectLiteral(literalProperties, true);
|
|
78
|
-
}
|
|
79
|
-
throw new UnexpectedMetadataValueError();
|
|
80
|
-
}
|
|
81
|
-
exports.convertDirectiveMetadataToExpression = convertDirectiveMetadataToExpression;
|
|
82
|
-
/**
|
|
83
|
-
* Gets a valid property name from the given text. If the text cannot be used
|
|
84
|
-
* as unquoted identifier, the name will be wrapped in a string literal.
|
|
85
|
-
*/
|
|
86
|
-
function getPropertyName(name) {
|
|
87
|
-
// Matches the most common identifiers that do not need quotes. Constructing a
|
|
88
|
-
// regular expression that matches the ECMAScript specification in order to determine
|
|
89
|
-
// whether quotes are needed is out of scope for this migration. For those more complex
|
|
90
|
-
// property names, we just always use quotes (when constructing AST from metadata).
|
|
91
|
-
if (/^[a-zA-Z_$]+$/.test(name)) {
|
|
92
|
-
return name;
|
|
93
|
-
}
|
|
94
|
-
return ts.createStringLiteral(name);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydF9kaXJlY3RpdmVfbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy91bmRlY29yYXRlZC1jbGFzc2VzLXdpdGgtZGkvZGVjb3JhdG9yX3Jld3JpdGUvY29udmVydF9kaXJlY3RpdmVfbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7O0lBRUgsZ0RBQStDO0lBQy9DLGlDQUFpQztJQUVqQyw4RUFBOEU7SUFDOUUsTUFBYSw0QkFBNkIsU0FBUSxLQUFLO0tBQUc7SUFBMUQsb0VBQTBEO0lBRTFEOzs7T0FHRztJQUNILFNBQWdCLG9DQUFvQyxDQUNoRCxRQUFhLEVBQUUsbUJBQTRELEVBQzNFLFlBQWlFLEVBQ2pFLGVBQW1FO1FBQ3JFLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3JDLEVBQUUsQ0FBQyxFQUFFLENBQUMsb0NBQW9DLENBQ3RDLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25FO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDdkMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckQ7YUFBTSxJQUFJLE9BQU8sUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUN4QyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEQ7YUFBTSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUMxQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN6QzthQUFNLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDdkMsK0VBQStFO1lBQy9FLCtFQUErRTtZQUMvRSw4RUFBOEU7WUFDOUUsSUFBSSxRQUFRLFlBQVksdUJBQVksRUFBRTtnQkFDcEMsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JELElBQUksY0FBYyxLQUFLLElBQUksRUFBRTtvQkFDM0IsTUFBTSxJQUFJLDRCQUE0QixFQUFFLENBQUM7aUJBQzFDO2dCQUNELE9BQU8sWUFBWSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEQ7WUFFRCxNQUFNLGlCQUFpQixHQUE0QixFQUFFLENBQUM7WUFFdEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksYUFBYSxHQUF1QixJQUFJLENBQUM7Z0JBRTdDLGtGQUFrRjtnQkFDbEYscUZBQXFGO2dCQUNyRixpRkFBaUY7Z0JBQ2pGLElBQUksZUFBZSxFQUFFO29CQUNuQixhQUFhLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztpQkFDckQ7Z0JBRUQsZ0ZBQWdGO2dCQUNoRiw0REFBNEQ7Z0JBQzVELElBQUksYUFBYSxLQUFLLElBQUksRUFBRTtvQkFDMUIsYUFBYSxHQUFHLG9DQUFvQyxDQUNoRCxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2lCQUN4RTtnQkFFRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQzFGO1lBRUQsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDeEQ7UUFFRCxNQUFNLElBQUksNEJBQTRCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBekRELG9GQXlEQztJQUVEOzs7T0FHRztJQUNILFNBQVMsZUFBZSxDQUFDLElBQVk7UUFDbkMsOEVBQThFO1FBQzlFLHFGQUFxRjtRQUNyRix1RkFBdUY7UUFDdkYsbUZBQW1GO1FBQ25GLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1N0YXRpY1N5bWJvbH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKiBFcnJvciB0aGF0IHdpbGwgYmUgdGhyb3duIGlmIGFuIHVuZXhwZWN0ZWQgdmFsdWUgbmVlZHMgdG8gYmUgY29udmVydGVkLiAqL1xuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRNZXRhZGF0YVZhbHVlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZGlyZWN0aXZlIG1ldGFkYXRhIG9iamVjdCBpbnRvIGEgVHlwZVNjcmlwdCBleHByZXNzaW9uLiBUaHJvd3NcbiAqIGlmIG1ldGFkYXRhIGNhbm5vdCBiZSBjbGVhbmx5IGNvbnZlcnRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREaXJlY3RpdmVNZXRhZGF0YVRvRXhwcmVzc2lvbihcbiAgICBtZXRhZGF0YTogYW55LCByZXNvbHZlU3ltYm9sSW1wb3J0OiAoc3ltYm9sOiBTdGF0aWNTeW1ib2wpID0+IHN0cmluZyB8IG51bGwsXG4gICAgY3JlYXRlSW1wb3J0OiAobW9kdWxlTmFtZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHRzLkV4cHJlc3Npb24sXG4gICAgY29udmVydFByb3BlcnR5PzogKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB0cy5FeHByZXNzaW9uIHwgbnVsbCk6IHRzLkV4cHJlc3Npb24ge1xuICBpZiAodHlwZW9mIG1ldGFkYXRhID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0cy5jcmVhdGVTdHJpbmdMaXRlcmFsKG1ldGFkYXRhKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1ldGFkYXRhKSkge1xuICAgIHJldHVybiB0cy5jcmVhdGVBcnJheUxpdGVyYWwobWV0YWRhdGEubWFwKFxuICAgICAgICBlbCA9PiBjb252ZXJ0RGlyZWN0aXZlTWV0YWRhdGFUb0V4cHJlc3Npb24oXG4gICAgICAgICAgICBlbCwgcmVzb2x2ZVN5bWJvbEltcG9ydCwgY3JlYXRlSW1wb3J0LCBjb252ZXJ0UHJvcGVydHkpKSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1ldGFkYXRhID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB0cy5jcmVhdGVOdW1lcmljTGl0ZXJhbChtZXRhZGF0YS50b1N0cmluZygpKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbWV0YWRhdGEgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBtZXRhZGF0YSA/IHRzLmNyZWF0ZVRydWUoKSA6IHRzLmNyZWF0ZUZhbHNlKCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1ldGFkYXRhID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiB0cy5jcmVhdGVJZGVudGlmaWVyKCd1bmRlZmluZWQnKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbWV0YWRhdGEgPT09ICdiaWdpbnQnKSB7XG4gICAgcmV0dXJuIHRzLmNyZWF0ZUJpZ0ludExpdGVyYWwobWV0YWRhdGEudG9TdHJpbmcoKSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1ldGFkYXRhID09PSAnb2JqZWN0Jykge1xuICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYSBzdGF0aWMgc3ltYm9sIG9iamVjdCBwYXJ0IG9mIHRoZSBtZXRhZGF0YSwgdHJ5IHRvIHJlc29sdmVcbiAgICAvLyB0aGUgaW1wb3J0IGV4cHJlc3Npb24gb2YgdGhlIHN5bWJvbC4gSWYgbm8gaW1wb3J0IHBhdGggY291bGQgYmUgcmVzb2x2ZWQsIGFuXG4gICAgLy8gZXJyb3Igd2lsbCBiZSB0aHJvd24gYXMgdGhlIHN5bWJvbCBjYW5ub3QgYmUgY29udmVydGVkIGludG8gVHlwZVNjcmlwdCBBU1QuXG4gICAgaWYgKG1ldGFkYXRhIGluc3RhbmNlb2YgU3RhdGljU3ltYm9sKSB7XG4gICAgICBjb25zdCByZXNvbHZlZEltcG9ydCA9IHJlc29sdmVTeW1ib2xJbXBvcnQobWV0YWRhdGEpO1xuICAgICAgaWYgKHJlc29sdmVkSW1wb3J0ID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkTWV0YWRhdGFWYWx1ZUVycm9yKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlSW1wb3J0KHJlc29sdmVkSW1wb3J0LCBtZXRhZGF0YS5uYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXRlcmFsUHJvcGVydGllczogdHMuUHJvcGVydHlBc3NpZ25tZW50W10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1ldGFkYXRhKSkge1xuICAgICAgY29uc3QgbWV0YWRhdGFWYWx1ZSA9IG1ldGFkYXRhW2tleV07XG4gICAgICBsZXQgcHJvcGVydHlWYWx1ZTogdHMuRXhwcmVzc2lvbnxudWxsID0gbnVsbDtcblxuICAgICAgLy8gQWxsb3dzIGN1c3RvbSBjb252ZXJzaW9uIG9mIHByb3BlcnRpZXMgaW4gYW4gb2JqZWN0LiBUaGlzIGlzIHVzZWZ1bCBmb3Igc3BlY2lhbFxuICAgICAgLy8gY2FzZXMgd2hlcmUgd2UgZG9uJ3Qgd2FudCB0byBzdG9yZSB0aGUgZW51bSB2YWx1ZXMgYXMgaW50ZWdlcnMsIGJ1dCByYXRoZXIgdXNlIHRoZVxuICAgICAgLy8gcmVhbCBlbnVtIHN5bWJvbC4gZS5nLiBpbnN0ZWFkIG9mIGAyYCB3ZSB3YW50IHRvIHVzZSBgVmlld0VuY2Fwc3VsYXRpb24uTm9uZWAuXG4gICAgICBpZiAoY29udmVydFByb3BlcnR5KSB7XG4gICAgICAgIHByb3BlcnR5VmFsdWUgPSBjb252ZXJ0UHJvcGVydHkoa2V5LCBtZXRhZGF0YVZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW4gY2FzZSB0aGUgcHJvcGVydHkgdmFsdWUgaGFzIG5vdCBiZWVuIGFzc2lnbmVkIHRvIGFuIGV4cHJlc3Npb24sIHdlIGNvbnZlcnRcbiAgICAgIC8vIHRoZSByZXNvbHZlZCBtZXRhZGF0YSB2YWx1ZSBpbnRvIGEgVHlwZVNjcmlwdCBleHByZXNzaW9uLlxuICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcHJvcGVydHlWYWx1ZSA9IGNvbnZlcnREaXJlY3RpdmVNZXRhZGF0YVRvRXhwcmVzc2lvbihcbiAgICAgICAgICAgIG1ldGFkYXRhVmFsdWUsIHJlc29sdmVTeW1ib2xJbXBvcnQsIGNyZWF0ZUltcG9ydCwgY29udmVydFByb3BlcnR5KTtcbiAgICAgIH1cblxuICAgICAgbGl0ZXJhbFByb3BlcnRpZXMucHVzaCh0cy5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoZ2V0UHJvcGVydHlOYW1lKGtleSksIHByb3BlcnR5VmFsdWUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHMuY3JlYXRlT2JqZWN0TGl0ZXJhbChsaXRlcmFsUHJvcGVydGllcywgdHJ1ZSk7XG4gIH1cblxuICB0aHJvdyBuZXcgVW5leHBlY3RlZE1ldGFkYXRhVmFsdWVFcnJvcigpO1xufVxuXG4vKipcbiAqIEdldHMgYSB2YWxpZCBwcm9wZXJ0eSBuYW1lIGZyb20gdGhlIGdpdmVuIHRleHQuIElmIHRoZSB0ZXh0IGNhbm5vdCBiZSB1c2VkXG4gKiBhcyB1bnF1b3RlZCBpZGVudGlmaWVyLCB0aGUgbmFtZSB3aWxsIGJlIHdyYXBwZWQgaW4gYSBzdHJpbmcgbGl0ZXJhbC5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcGVydHlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZ3x0cy5TdHJpbmdMaXRlcmFsIHtcbiAgLy8gTWF0Y2hlcyB0aGUgbW9zdCBjb21tb24gaWRlbnRpZmllcnMgdGhhdCBkbyBub3QgbmVlZCBxdW90ZXMuIENvbnN0cnVjdGluZyBhXG4gIC8vIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgdGhlIEVDTUFTY3JpcHQgc3BlY2lmaWNhdGlvbiBpbiBvcmRlciB0byBkZXRlcm1pbmVcbiAgLy8gd2hldGhlciBxdW90ZXMgYXJlIG5lZWRlZCBpcyBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgbWlncmF0aW9uLiBGb3IgdGhvc2UgbW9yZSBjb21wbGV4XG4gIC8vIHByb3BlcnR5IG5hbWVzLCB3ZSBqdXN0IGFsd2F5cyB1c2UgcXVvdGVzICh3aGVuIGNvbnN0cnVjdGluZyBBU1QgZnJvbSBtZXRhZGF0YSkuXG4gIGlmICgvXlthLXpBLVpfJF0rJC8udGVzdChuYW1lKSkge1xuICAgIHJldHVybiBuYW1lO1xuICB9XG4gIHJldHVybiB0cy5jcmVhdGVTdHJpbmdMaXRlcmFsKG5hbWUpO1xufVxuIl19
|