@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
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import { Injector } from '../di/injector';
|
|
9
|
+
import { InjectFlags } from '../di/interface/injector';
|
|
10
|
+
import { ComponentFactory, ComponentRef } from '../linker/component_factory';
|
|
11
|
+
import { ComponentFactoryBoundToModule, ComponentFactoryResolver } from '../linker/component_factory_resolver';
|
|
12
|
+
import { ElementRef } from '../linker/element_ref';
|
|
13
|
+
import { NgModuleRef } from '../linker/ng_module_factory';
|
|
14
|
+
import { TemplateRef } from '../linker/template_ref';
|
|
15
|
+
import { assertEqual } from '../util/assert';
|
|
16
|
+
import { stringify } from '../util/stringify';
|
|
17
|
+
import { VERSION } from '../version';
|
|
18
|
+
import { callNgModuleLifecycle, initNgModule, resolveNgModuleDep } from './ng_module';
|
|
19
|
+
import { asElementData, asProviderData, asTextData, Services } from './types';
|
|
20
|
+
import { markParentViewsForCheck, resolveDefinition, rootRenderNodes, tokenKey, viewParentEl } from './util';
|
|
21
|
+
import { attachEmbeddedView, detachEmbeddedView, moveEmbeddedView, renderDetachView } from './view_attach';
|
|
22
|
+
const EMPTY_CONTEXT = {};
|
|
23
|
+
// Attention: this function is called as top level function.
|
|
24
|
+
// Putting any logic in here will destroy closure tree shaking!
|
|
25
|
+
export function createComponentFactory(selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors) {
|
|
26
|
+
return new ComponentFactory_(selector, componentType, viewDefFactory, inputs, outputs, ngContentSelectors);
|
|
27
|
+
}
|
|
28
|
+
export function getComponentViewDefinitionFactory(componentFactory) {
|
|
29
|
+
return componentFactory.viewDefFactory;
|
|
30
|
+
}
|
|
31
|
+
class ComponentFactory_ extends ComponentFactory {
|
|
32
|
+
constructor(selector, componentType, viewDefFactory, _inputs, _outputs, ngContentSelectors) {
|
|
33
|
+
// Attention: this ctor is called as top level function.
|
|
34
|
+
// Putting any logic in here will destroy closure tree shaking!
|
|
35
|
+
super();
|
|
36
|
+
this.selector = selector;
|
|
37
|
+
this.componentType = componentType;
|
|
38
|
+
this._inputs = _inputs;
|
|
39
|
+
this._outputs = _outputs;
|
|
40
|
+
this.ngContentSelectors = ngContentSelectors;
|
|
41
|
+
this.viewDefFactory = viewDefFactory;
|
|
42
|
+
}
|
|
43
|
+
get inputs() {
|
|
44
|
+
const inputsArr = [];
|
|
45
|
+
const inputs = this._inputs;
|
|
46
|
+
for (let propName in inputs) {
|
|
47
|
+
const templateName = inputs[propName];
|
|
48
|
+
inputsArr.push({ propName, templateName });
|
|
49
|
+
}
|
|
50
|
+
return inputsArr;
|
|
51
|
+
}
|
|
52
|
+
get outputs() {
|
|
53
|
+
const outputsArr = [];
|
|
54
|
+
for (let propName in this._outputs) {
|
|
55
|
+
const templateName = this._outputs[propName];
|
|
56
|
+
outputsArr.push({ propName, templateName });
|
|
57
|
+
}
|
|
58
|
+
return outputsArr;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new component.
|
|
62
|
+
*/
|
|
63
|
+
create(injector, projectableNodes, rootSelectorOrNode, ngModule) {
|
|
64
|
+
if (!ngModule) {
|
|
65
|
+
throw new Error('ngModule should be provided');
|
|
66
|
+
}
|
|
67
|
+
const viewDef = resolveDefinition(this.viewDefFactory);
|
|
68
|
+
const componentNodeIndex = viewDef.nodes[0].element.componentProvider.nodeIndex;
|
|
69
|
+
const view = Services.createRootView(injector, projectableNodes || [], rootSelectorOrNode, viewDef, ngModule, EMPTY_CONTEXT);
|
|
70
|
+
const component = asProviderData(view, componentNodeIndex).instance;
|
|
71
|
+
if (rootSelectorOrNode) {
|
|
72
|
+
view.renderer.setAttribute(asElementData(view, 0).renderElement, 'ng-version', VERSION.full);
|
|
73
|
+
}
|
|
74
|
+
return new ComponentRef_(view, new ViewRef_(view), component);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
class ComponentRef_ extends ComponentRef {
|
|
78
|
+
constructor(_view, _viewRef, _component) {
|
|
79
|
+
super();
|
|
80
|
+
this._view = _view;
|
|
81
|
+
this._viewRef = _viewRef;
|
|
82
|
+
this._component = _component;
|
|
83
|
+
this._elDef = this._view.def.nodes[0];
|
|
84
|
+
this.hostView = _viewRef;
|
|
85
|
+
this.changeDetectorRef = _viewRef;
|
|
86
|
+
this.instance = _component;
|
|
87
|
+
}
|
|
88
|
+
get location() {
|
|
89
|
+
return new ElementRef(asElementData(this._view, this._elDef.nodeIndex).renderElement);
|
|
90
|
+
}
|
|
91
|
+
get injector() {
|
|
92
|
+
return new Injector_(this._view, this._elDef);
|
|
93
|
+
}
|
|
94
|
+
get componentType() {
|
|
95
|
+
return this._component.constructor;
|
|
96
|
+
}
|
|
97
|
+
destroy() {
|
|
98
|
+
this._viewRef.destroy();
|
|
99
|
+
}
|
|
100
|
+
onDestroy(callback) {
|
|
101
|
+
this._viewRef.onDestroy(callback);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export function createViewContainerData(view, elDef, elData) {
|
|
105
|
+
return new ViewContainerRef_(view, elDef, elData);
|
|
106
|
+
}
|
|
107
|
+
class ViewContainerRef_ {
|
|
108
|
+
constructor(_view, _elDef, _data) {
|
|
109
|
+
this._view = _view;
|
|
110
|
+
this._elDef = _elDef;
|
|
111
|
+
this._data = _data;
|
|
112
|
+
/**
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
this._embeddedViews = [];
|
|
116
|
+
}
|
|
117
|
+
get element() {
|
|
118
|
+
return new ElementRef(this._data.renderElement);
|
|
119
|
+
}
|
|
120
|
+
get injector() {
|
|
121
|
+
return new Injector_(this._view, this._elDef);
|
|
122
|
+
}
|
|
123
|
+
/** @deprecated No replacement */
|
|
124
|
+
get parentInjector() {
|
|
125
|
+
let view = this._view;
|
|
126
|
+
let elDef = this._elDef.parent;
|
|
127
|
+
while (!elDef && view) {
|
|
128
|
+
elDef = viewParentEl(view);
|
|
129
|
+
view = view.parent;
|
|
130
|
+
}
|
|
131
|
+
return view ? new Injector_(view, elDef) : new Injector_(this._view, null);
|
|
132
|
+
}
|
|
133
|
+
clear() {
|
|
134
|
+
const len = this._embeddedViews.length;
|
|
135
|
+
for (let i = len - 1; i >= 0; i--) {
|
|
136
|
+
const view = detachEmbeddedView(this._data, i);
|
|
137
|
+
Services.destroyView(view);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
get(index) {
|
|
141
|
+
const view = this._embeddedViews[index];
|
|
142
|
+
if (view) {
|
|
143
|
+
const ref = new ViewRef_(view);
|
|
144
|
+
ref.attachToViewContainerRef(this);
|
|
145
|
+
return ref;
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
get length() {
|
|
150
|
+
return this._embeddedViews.length;
|
|
151
|
+
}
|
|
152
|
+
createEmbeddedView(templateRef, context, index) {
|
|
153
|
+
const viewRef = templateRef.createEmbeddedView(context || {});
|
|
154
|
+
this.insert(viewRef, index);
|
|
155
|
+
return viewRef;
|
|
156
|
+
}
|
|
157
|
+
createComponent(componentFactoryOrType, indexOrOptions, injector, projectableNodes, ngModuleRef) {
|
|
158
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
159
|
+
assertEqual(typeof componentFactoryOrType !== 'function', true, 'ViewEngine does not support Type as an argument for \'componentFactoryOrType\'');
|
|
160
|
+
assertEqual(typeof indexOrOptions !== 'object', true, 'ViewEngine does not support options as an object provided via second argument');
|
|
161
|
+
}
|
|
162
|
+
const index = indexOrOptions;
|
|
163
|
+
const contextInjector = injector || this.parentInjector;
|
|
164
|
+
const componentFactory = componentFactoryOrType;
|
|
165
|
+
if (!ngModuleRef && !(componentFactory instanceof ComponentFactoryBoundToModule)) {
|
|
166
|
+
ngModuleRef = contextInjector.get(NgModuleRef);
|
|
167
|
+
}
|
|
168
|
+
const componentRef = componentFactory.create(contextInjector, projectableNodes, undefined, ngModuleRef);
|
|
169
|
+
this.insert(componentRef.hostView, index);
|
|
170
|
+
return componentRef;
|
|
171
|
+
}
|
|
172
|
+
insert(viewRef, index) {
|
|
173
|
+
if (viewRef.destroyed) {
|
|
174
|
+
throw new Error('Cannot insert a destroyed View in a ViewContainer!');
|
|
175
|
+
}
|
|
176
|
+
const viewRef_ = viewRef;
|
|
177
|
+
const viewData = viewRef_._view;
|
|
178
|
+
attachEmbeddedView(this._view, this._data, index, viewData);
|
|
179
|
+
viewRef_.attachToViewContainerRef(this);
|
|
180
|
+
return viewRef;
|
|
181
|
+
}
|
|
182
|
+
move(viewRef, currentIndex) {
|
|
183
|
+
if (viewRef.destroyed) {
|
|
184
|
+
throw new Error('Cannot move a destroyed View in a ViewContainer!');
|
|
185
|
+
}
|
|
186
|
+
const previousIndex = this._embeddedViews.indexOf(viewRef._view);
|
|
187
|
+
moveEmbeddedView(this._data, previousIndex, currentIndex);
|
|
188
|
+
return viewRef;
|
|
189
|
+
}
|
|
190
|
+
indexOf(viewRef) {
|
|
191
|
+
return this._embeddedViews.indexOf(viewRef._view);
|
|
192
|
+
}
|
|
193
|
+
remove(index) {
|
|
194
|
+
const viewData = detachEmbeddedView(this._data, index);
|
|
195
|
+
if (viewData) {
|
|
196
|
+
Services.destroyView(viewData);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
detach(index) {
|
|
200
|
+
const view = detachEmbeddedView(this._data, index);
|
|
201
|
+
return view ? new ViewRef_(view) : null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
export function createChangeDetectorRef(view) {
|
|
205
|
+
return new ViewRef_(view);
|
|
206
|
+
}
|
|
207
|
+
export class ViewRef_ {
|
|
208
|
+
constructor(_view) {
|
|
209
|
+
this._view = _view;
|
|
210
|
+
this._viewContainerRef = null;
|
|
211
|
+
this._appRef = null;
|
|
212
|
+
}
|
|
213
|
+
get rootNodes() {
|
|
214
|
+
return rootRenderNodes(this._view);
|
|
215
|
+
}
|
|
216
|
+
get context() {
|
|
217
|
+
return this._view.context;
|
|
218
|
+
}
|
|
219
|
+
set context(value) {
|
|
220
|
+
this._view.context = value;
|
|
221
|
+
}
|
|
222
|
+
get destroyed() {
|
|
223
|
+
return (this._view.state & 128 /* Destroyed */) !== 0;
|
|
224
|
+
}
|
|
225
|
+
markForCheck() {
|
|
226
|
+
markParentViewsForCheck(this._view);
|
|
227
|
+
}
|
|
228
|
+
detach() {
|
|
229
|
+
this._view.state &= ~4 /* Attached */;
|
|
230
|
+
}
|
|
231
|
+
detectChanges() {
|
|
232
|
+
const fs = this._view.root.rendererFactory;
|
|
233
|
+
if (fs.begin) {
|
|
234
|
+
fs.begin();
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
Services.checkAndUpdateView(this._view);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
if (fs.end) {
|
|
241
|
+
fs.end();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
checkNoChanges() {
|
|
246
|
+
Services.checkNoChangesView(this._view);
|
|
247
|
+
}
|
|
248
|
+
reattach() {
|
|
249
|
+
this._view.state |= 4 /* Attached */;
|
|
250
|
+
}
|
|
251
|
+
onDestroy(callback) {
|
|
252
|
+
if (!this._view.disposables) {
|
|
253
|
+
this._view.disposables = [];
|
|
254
|
+
}
|
|
255
|
+
this._view.disposables.push(callback);
|
|
256
|
+
}
|
|
257
|
+
destroy() {
|
|
258
|
+
if (this._appRef) {
|
|
259
|
+
this._appRef.detachView(this);
|
|
260
|
+
}
|
|
261
|
+
else if (this._viewContainerRef) {
|
|
262
|
+
this._viewContainerRef.detach(this._viewContainerRef.indexOf(this));
|
|
263
|
+
}
|
|
264
|
+
Services.destroyView(this._view);
|
|
265
|
+
}
|
|
266
|
+
detachFromAppRef() {
|
|
267
|
+
this._appRef = null;
|
|
268
|
+
renderDetachView(this._view);
|
|
269
|
+
Services.dirtyParentQueries(this._view);
|
|
270
|
+
}
|
|
271
|
+
attachToAppRef(appRef) {
|
|
272
|
+
if (this._viewContainerRef) {
|
|
273
|
+
throw new Error('This view is already attached to a ViewContainer!');
|
|
274
|
+
}
|
|
275
|
+
this._appRef = appRef;
|
|
276
|
+
}
|
|
277
|
+
attachToViewContainerRef(vcRef) {
|
|
278
|
+
if (this._appRef) {
|
|
279
|
+
throw new Error('This view is already attached directly to the ApplicationRef!');
|
|
280
|
+
}
|
|
281
|
+
this._viewContainerRef = vcRef;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
export function createTemplateData(view, def) {
|
|
285
|
+
return new TemplateRef_(view, def);
|
|
286
|
+
}
|
|
287
|
+
class TemplateRef_ extends TemplateRef {
|
|
288
|
+
constructor(_parentView, _def) {
|
|
289
|
+
super();
|
|
290
|
+
this._parentView = _parentView;
|
|
291
|
+
this._def = _def;
|
|
292
|
+
}
|
|
293
|
+
createEmbeddedView(context) {
|
|
294
|
+
return new ViewRef_(Services.createEmbeddedView(this._parentView, this._def, this._def.element.template, context));
|
|
295
|
+
}
|
|
296
|
+
get elementRef() {
|
|
297
|
+
return new ElementRef(asElementData(this._parentView, this._def.nodeIndex).renderElement);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
export function createInjector(view, elDef) {
|
|
301
|
+
return new Injector_(view, elDef);
|
|
302
|
+
}
|
|
303
|
+
class Injector_ {
|
|
304
|
+
constructor(view, elDef) {
|
|
305
|
+
this.view = view;
|
|
306
|
+
this.elDef = elDef;
|
|
307
|
+
}
|
|
308
|
+
get(token, notFoundValue = Injector.THROW_IF_NOT_FOUND) {
|
|
309
|
+
const allowPrivateServices = this.elDef ? (this.elDef.flags & 33554432 /* ComponentView */) !== 0 : false;
|
|
310
|
+
return Services.resolveDep(this.view, this.elDef, allowPrivateServices, { flags: 0 /* None */, token, tokenKey: tokenKey(token) }, notFoundValue);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
export function nodeValue(view, index) {
|
|
314
|
+
const def = view.def.nodes[index];
|
|
315
|
+
if (def.flags & 1 /* TypeElement */) {
|
|
316
|
+
const elData = asElementData(view, def.nodeIndex);
|
|
317
|
+
return def.element.template ? elData.template : elData.renderElement;
|
|
318
|
+
}
|
|
319
|
+
else if (def.flags & 2 /* TypeText */) {
|
|
320
|
+
return asTextData(view, def.nodeIndex).renderText;
|
|
321
|
+
}
|
|
322
|
+
else if (def.flags & (20224 /* CatProvider */ | 16 /* TypePipe */)) {
|
|
323
|
+
return asProviderData(view, def.nodeIndex).instance;
|
|
324
|
+
}
|
|
325
|
+
throw new Error(`Illegal state: read nodeValue for node index ${index}`);
|
|
326
|
+
}
|
|
327
|
+
export function createNgModuleRef(moduleType, parent, bootstrapComponents, def) {
|
|
328
|
+
return new NgModuleRef_(moduleType, parent, bootstrapComponents, def);
|
|
329
|
+
}
|
|
330
|
+
class NgModuleRef_ {
|
|
331
|
+
constructor(_moduleType, _parent, _bootstrapComponents, _def) {
|
|
332
|
+
this._moduleType = _moduleType;
|
|
333
|
+
this._parent = _parent;
|
|
334
|
+
this._bootstrapComponents = _bootstrapComponents;
|
|
335
|
+
this._def = _def;
|
|
336
|
+
this._destroyListeners = [];
|
|
337
|
+
this._destroyed = false;
|
|
338
|
+
this.injector = this;
|
|
339
|
+
initNgModule(this);
|
|
340
|
+
}
|
|
341
|
+
get(token, notFoundValue = Injector.THROW_IF_NOT_FOUND, injectFlags = InjectFlags.Default) {
|
|
342
|
+
let flags = 0 /* None */;
|
|
343
|
+
if (injectFlags & InjectFlags.SkipSelf) {
|
|
344
|
+
flags |= 1 /* SkipSelf */;
|
|
345
|
+
}
|
|
346
|
+
else if (injectFlags & InjectFlags.Self) {
|
|
347
|
+
flags |= 4 /* Self */;
|
|
348
|
+
}
|
|
349
|
+
return resolveNgModuleDep(this, { token: token, tokenKey: tokenKey(token), flags: flags }, notFoundValue);
|
|
350
|
+
}
|
|
351
|
+
get instance() {
|
|
352
|
+
return this.get(this._moduleType);
|
|
353
|
+
}
|
|
354
|
+
get componentFactoryResolver() {
|
|
355
|
+
return this.get(ComponentFactoryResolver);
|
|
356
|
+
}
|
|
357
|
+
destroy() {
|
|
358
|
+
if (this._destroyed) {
|
|
359
|
+
throw new Error(`The ng module ${stringify(this.instance.constructor)} has already been destroyed.`);
|
|
360
|
+
}
|
|
361
|
+
this._destroyed = true;
|
|
362
|
+
callNgModuleLifecycle(this, 131072 /* OnDestroy */);
|
|
363
|
+
this._destroyListeners.forEach((listener) => listener());
|
|
364
|
+
}
|
|
365
|
+
onDestroy(callback) {
|
|
366
|
+
this._destroyListeners.push(callback);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3ZpZXcvcmVmcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFHSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsNkJBQTZCLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFzQixXQUFXLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFHbkQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRW5DLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUErRSxRQUFRLEVBQThFLE1BQU0sU0FBUyxDQUFDO0FBQ3RPLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMzRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFl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QyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLHdCQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixNQUFNLElBQUksS0FBSyxDQUNYLGlCQUFpQixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUMxRjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHFCQUFxQixDQUFDLElBQUkseUJBQXNCLENBQUM7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQW9CO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbic7XG5pbXBvcnQge0luamVjdG9yfSBmcm9tICcuLi9kaS9pbmplY3Rvcic7XG5pbXBvcnQge0luamVjdEZsYWdzfSBmcm9tICcuLi9kaS9pbnRlcmZhY2UvaW5qZWN0b3InO1xuaW1wb3J0IHtUeXBlfSBmcm9tICcuLi9pbnRlcmZhY2UvdHlwZSc7XG5pbXBvcnQge0NvbXBvbmVudEZhY3RvcnksIENvbXBvbmVudFJlZn0gZnJvbSAnLi4vbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5JztcbmltcG9ydCB7Q29tcG9uZW50RmFjdG9yeUJvdW5kVG9Nb2R1bGUsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcn0gZnJvbSAnLi4vbGlua2VyL2NvbXBvbmVudF9mYWN0b3J5X3Jlc29sdmVyJztcbmltcG9ydCB7RWxlbWVudFJlZn0gZnJvbSAnLi4vbGlua2VyL2VsZW1lbnRfcmVmJztcbmltcG9ydCB7SW50ZXJuYWxOZ01vZHVsZVJlZiwgTmdNb2R1bGVSZWZ9IGZyb20gJy4uL2xpbmtlci9uZ19tb2R1bGVfZmFjdG9yeSc7XG5pbXBvcnQge1RlbXBsYXRlUmVmfSBmcm9tICcuLi9saW5rZXIvdGVtcGxhdGVfcmVmJztcbmltcG9ydCB7Vmlld0NvbnRhaW5lclJlZn0gZnJvbSAnLi4vbGlua2VyL3ZpZXdfY29udGFpbmVyX3JlZic7XG5pbXBvcnQge0VtYmVkZGVkVmlld1JlZiwgSW50ZXJuYWxWaWV3UmVmLCBWaWV3UmVmLCBWaWV3UmVmVHJhY2tlcn0gZnJvbSAnLi4vbGlua2VyL3ZpZXdfcmVmJztcbmltcG9ydCB7YXNzZXJ0RXF1YWx9IGZyb20gJy4uL3V0aWwvYXNzZXJ0JztcbmltcG9ydCB7c3RyaW5naWZ5fSBmcm9tICcuLi91dGlsL3N0cmluZ2lmeSc7XG5pbXBvcnQge1ZFUlNJT059IGZyb20gJy4uL3ZlcnNpb24nO1xuXG5pbXBvcnQge2NhbGxOZ01vZHVsZUxpZmVjeWNsZSwgaW5pdE5nTW9kdWxlLCByZXNvbHZlTmdNb2R1bGVEZXB9IGZyb20gJy4vbmdfbW9kdWxlJztcbmltcG9ydCB7YXNFbGVtZW50RGF0YSwgYXNQcm92aWRlckRhdGEsIGFzVGV4dERhdGEsIERlcEZsYWdzLCBFbGVtZW50RGF0YSwgTmdNb2R1bGVEYXRhLCBOZ01vZHVsZURlZmluaXRpb24sIE5vZGVEZWYsIE5vZGVGbGFncywgU2VydmljZXMsIFRlbXBsYXRlRGF0YSwgVmlld0NvbnRhaW5lckRhdGEsIFZpZXdEYXRhLCBWaWV3RGVmaW5pdGlvbkZhY3RvcnksIFZpZXdTdGF0ZX0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge21hcmtQYXJlbnRWaWV3c0ZvckNoZWNrLCByZXNvbHZlRGVmaW5pdGlvbiwgcm9vdFJlbmRlck5vZGVzLCB0b2tlbktleSwgdmlld1BhcmVudEVsfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHthdHRhY2hFbWJlZGRlZFZpZXcsIGRldGFjaEVtYmVkZGVkVmlldywgbW92ZUVtYmVkZGVkVmlldywgcmVuZGVyRGV0YWNoVmlld30gZnJvbSAnLi92aWV3X2F0dGFjaCc7XG5cbmNvbnN0IEVNUFRZX0NPTlRFWFQgPSB7fTtcblxuLy8gQXR0ZW50aW9uOiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhcyB0b3AgbGV2ZWwgZnVuY3Rpb24uXG4vLyBQdXR0aW5nIGFueSBsb2dpYyBpbiBoZXJlIHdpbGwgZGVzdHJveSBjbG9zdXJlIHRyZWUgc2hha2luZyFcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnRGYWN0b3J5KFxuICAgIHNlbGVjdG9yOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55Piwgdmlld0RlZkZhY3Rvcnk6IFZpZXdEZWZpbml0aW9uRmFjdG9yeSxcbiAgICBpbnB1dHM6IHtbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZ318bnVsbCwgb3V0cHV0czoge1twcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBuZ0NvbnRlbnRTZWxlY3RvcnM6IHN0cmluZ1tdKTogQ29tcG9uZW50RmFjdG9yeTxhbnk+IHtcbiAgcmV0dXJuIG5ldyBDb21wb25lbnRGYWN0b3J5XyhcbiAgICAgIHNlbGVjdG9yLCBjb21wb25lbnRUeXBlLCB2aWV3RGVmRmFjdG9yeSwgaW5wdXRzLCBvdXRwdXRzLCBuZ0NvbnRlbnRTZWxlY3RvcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50Vmlld0RlZmluaXRpb25GYWN0b3J5KGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8YW55Pik6XG4gICAgVmlld0RlZmluaXRpb25GYWN0b3J5IHtcbiAgcmV0dXJuIChjb21wb25lbnRGYWN0b3J5IGFzIENvbXBvbmVudEZhY3RvcnlfKS52aWV3RGVmRmFjdG9yeTtcbn1cblxuY2xhc3MgQ29tcG9uZW50RmFjdG9yeV8gZXh0ZW5kcyBDb21wb25lbnRGYWN0b3J5PGFueT4ge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICB2aWV3RGVmRmFjdG9yeTogVmlld0RlZmluaXRpb25GYWN0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHVibGljIHNlbGVjdG9yOiBzdHJpbmcsIHB1YmxpYyBjb21wb25lbnRUeXBlOiBUeXBlPGFueT4sXG4gICAgICB2aWV3RGVmRmFjdG9yeTogVmlld0RlZmluaXRpb25GYWN0b3J5LCBwcml2YXRlIF9pbnB1dHM6IHtbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZ318bnVsbCxcbiAgICAgIHByaXZhdGUgX291dHB1dHM6IHtbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZ30sIHB1YmxpYyBuZ0NvbnRlbnRTZWxlY3RvcnM6IHN0cmluZ1tdKSB7XG4gICAgLy8gQXR0ZW50aW9uOiB0aGlzIGN0b3IgaXMgY2FsbGVkIGFzIHRvcCBsZXZlbCBmdW5jdGlvbi5cbiAgICAvLyBQdXR0aW5nIGFueSBsb2dpYyBpbiBoZXJlIHdpbGwgZGVzdHJveSBjbG9zdXJlIHRyZWUgc2hha2luZyFcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmlld0RlZkZhY3RvcnkgPSB2aWV3RGVmRmFjdG9yeTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBpbnB1dHMoKSB7XG4gICAgY29uc3QgaW5wdXRzQXJyOiB7cHJvcE5hbWU6IHN0cmluZywgdGVtcGxhdGVOYW1lOiBzdHJpbmd9W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHMgPSB0aGlzLl9pbnB1dHMhO1xuICAgIGZvciAobGV0IHByb3BOYW1lIGluIGlucHV0cykge1xuICAgICAgY29uc3QgdGVtcGxhdGVOYW1lID0gaW5wdXRzW3Byb3BOYW1lXTtcbiAgICAgIGlucHV0c0Fyci5wdXNoKHtwcm9wTmFtZSwgdGVtcGxhdGVOYW1lfSk7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dHNBcnI7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgb3V0cHV0cygpIHtcbiAgICBjb25zdCBvdXRwdXRzQXJyOiB7cHJvcE5hbWU6IHN0cmluZywgdGVtcGxhdGVOYW1lOiBzdHJpbmd9W10gPSBbXTtcbiAgICBmb3IgKGxldCBwcm9wTmFtZSBpbiB0aGlzLl9vdXRwdXRzKSB7XG4gICAgICBjb25zdCB0ZW1wbGF0ZU5hbWUgPSB0aGlzLl9vdXRwdXRzW3Byb3BOYW1lXTtcbiAgICAgIG91dHB1dHNBcnIucHVzaCh7cHJvcE5hbWUsIHRlbXBsYXRlTmFtZX0pO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0c0FycjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbXBvbmVudC5cbiAgICovXG4gIG92ZXJyaWRlIGNyZWF0ZShcbiAgICAgIGluamVjdG9yOiBJbmplY3RvciwgcHJvamVjdGFibGVOb2Rlcz86IGFueVtdW10sIHJvb3RTZWxlY3Rvck9yTm9kZT86IHN0cmluZ3xhbnksXG4gICAgICBuZ01vZHVsZT86IE5nTW9kdWxlUmVmPGFueT4pOiBDb21wb25lbnRSZWY8YW55PiB7XG4gICAgaWYgKCFuZ01vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCduZ01vZHVsZSBzaG91bGQgYmUgcHJvdmlkZWQnKTtcbiAgICB9XG4gICAgY29uc3Qgdmlld0RlZiA9IHJlc29sdmVEZWZpbml0aW9uKHRoaXMudmlld0RlZkZhY3RvcnkpO1xuICAgIGNvbnN0IGNvbXBvbmVudE5vZGVJbmRleCA9IHZpZXdEZWYubm9kZXNbMF0uZWxlbWVudCEuY29tcG9uZW50UHJvdmlkZXIhLm5vZGVJbmRleDtcbiAgICBjb25zdCB2aWV3ID0gU2VydmljZXMuY3JlYXRlUm9vdFZpZXcoXG4gICAgICAgIGluamVjdG9yLCBwcm9qZWN0YWJsZU5vZGVzIHx8IFtdLCByb290U2VsZWN0b3JPck5vZGUsIHZpZXdEZWYsIG5nTW9kdWxlLCBFTVBUWV9DT05URVhUKTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBhc1Byb3ZpZGVyRGF0YSh2aWV3LCBjb21wb25lbnROb2RlSW5kZXgpLmluc3RhbmNlO1xuICAgIGlmIChyb290U2VsZWN0b3JPck5vZGUpIHtcbiAgICAgIHZpZXcucmVuZGVyZXIuc2V0QXR0cmlidXRlKGFzRWxlbWVudERhdGEodmlldywgMCkucmVuZGVyRWxlbWVudCwgJ25nLXZlcnNpb24nLCBWRVJTSU9OLmZ1bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ29tcG9uZW50UmVmXyh2aWV3LCBuZXcgVmlld1JlZl8odmlldyksIGNvbXBvbmVudCk7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9uZW50UmVmXyBleHRlbmRzIENvbXBvbmVudFJlZjxhbnk+IHtcbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGhvc3RWaWV3OiBWaWV3UmVmO1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgaW5zdGFuY2U6IGFueTtcbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgcHJpdmF0ZSBfZWxEZWY6IE5vZGVEZWY7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXc6IFZpZXdEYXRhLCBwcml2YXRlIF92aWV3UmVmOiBWaWV3UmVmLCBwcml2YXRlIF9jb21wb25lbnQ6IGFueSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZWxEZWYgPSB0aGlzLl92aWV3LmRlZi5ub2Rlc1swXTtcbiAgICB0aGlzLmhvc3RWaWV3ID0gX3ZpZXdSZWY7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZiA9IF92aWV3UmVmO1xuICAgIHRoaXMuaW5zdGFuY2UgPSBfY29tcG9uZW50O1xuICB9XG4gIG92ZXJyaWRlIGdldCBsb2NhdGlvbigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gbmV3IEVsZW1lbnRSZWYoYXNFbGVtZW50RGF0YSh0aGlzLl92aWV3LCB0aGlzLl9lbERlZi5ub2RlSW5kZXgpLnJlbmRlckVsZW1lbnQpO1xuICB9XG4gIG92ZXJyaWRlIGdldCBpbmplY3RvcigpOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIG5ldyBJbmplY3Rvcl8odGhpcy5fdmlldywgdGhpcy5fZWxEZWYpO1xuICB9XG4gIG92ZXJyaWRlIGdldCBjb21wb25lbnRUeXBlKCk6IFR5cGU8YW55PiB7XG4gICAgcmV0dXJuIDxhbnk+dGhpcy5fY29tcG9uZW50LmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgb3ZlcnJpZGUgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl92aWV3UmVmLmRlc3Ryb3koKTtcbiAgfVxuICBvdmVycmlkZSBvbkRlc3Ryb3koY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld1JlZi5vbkRlc3Ryb3koY2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWaWV3Q29udGFpbmVyRGF0YShcbiAgICB2aWV3OiBWaWV3RGF0YSwgZWxEZWY6IE5vZGVEZWYsIGVsRGF0YTogRWxlbWVudERhdGEpOiBWaWV3Q29udGFpbmVyRGF0YSB7XG4gIHJldHVybiBuZXcgVmlld0NvbnRhaW5lclJlZl8odmlldywgZWxEZWYsIGVsRGF0YSk7XG59XG5cbmNsYXNzIFZpZXdDb250YWluZXJSZWZfIGltcGxlbWVudHMgVmlld0NvbnRhaW5lckRhdGEge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfZW1iZWRkZWRWaWV3czogVmlld0RhdGFbXSA9IFtdO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3OiBWaWV3RGF0YSwgcHJpdmF0ZSBfZWxEZWY6IE5vZGVEZWYsIHByaXZhdGUgX2RhdGE6IEVsZW1lbnREYXRhKSB7fVxuXG4gIGdldCBlbGVtZW50KCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiBuZXcgRWxlbWVudFJlZih0aGlzLl9kYXRhLnJlbmRlckVsZW1lbnQpO1xuICB9XG5cbiAgZ2V0IGluamVjdG9yKCk6IEluamVjdG9yIHtcbiAgICByZXR1cm4gbmV3IEluamVjdG9yXyh0aGlzLl92aWV3LCB0aGlzLl9lbERlZik7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgTm8gcmVwbGFjZW1lbnQgKi9cbiAgZ2V0IHBhcmVudEluamVjdG9yKCk6IEluamVjdG9yIHtcbiAgICBsZXQgdmlldyA9IHRoaXMuX3ZpZXc7XG4gICAgbGV0IGVsRGVmID0gdGhpcy5fZWxEZWYucGFyZW50O1xuICAgIHdoaWxlICghZWxEZWYgJiYgdmlldykge1xuICAgICAgZWxEZWYgPSB2aWV3UGFyZW50RWwodmlldyk7XG4gICAgICB2aWV3ID0gdmlldy5wYXJlbnQhO1xuICAgIH1cblxuICAgIHJldHVybiB2aWV3ID8gbmV3IEluamVjdG9yXyh2aWV3LCBlbERlZikgOiBuZXcgSW5qZWN0b3JfKHRoaXMuX3ZpZXcsIG51bGwpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgY29uc3QgbGVuID0gdGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB2aWV3ID0gZGV0YWNoRW1iZWRkZWRWaWV3KHRoaXMuX2RhdGEsIGkpITtcbiAgICAgIFNlcnZpY2VzLmRlc3Ryb3lWaWV3KHZpZXcpO1xuICAgIH1cbiAgfVxuXG4gIGdldChpbmRleDogbnVtYmVyKTogVmlld1JlZnxudWxsIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5fZW1iZWRkZWRWaWV3c1tpbmRleF07XG4gICAgaWYgKHZpZXcpIHtcbiAgICAgIGNvbnN0IHJlZiA9IG5ldyBWaWV3UmVmXyh2aWV3KTtcbiAgICAgIHJlZi5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyk7XG4gICAgICByZXR1cm4gcmVmO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGg7XG4gIH1cblxuICBjcmVhdGVFbWJlZGRlZFZpZXc8Qz4odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPEM+LCBjb250ZXh0PzogQywgaW5kZXg/OiBudW1iZXIpOlxuICAgICAgRW1iZWRkZWRWaWV3UmVmPEM+IHtcbiAgICBjb25zdCB2aWV3UmVmID0gdGVtcGxhdGVSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KGNvbnRleHQgfHwgPGFueT57fSk7XG4gICAgdGhpcy5pbnNlcnQodmlld1JlZiwgaW5kZXgpO1xuICAgIHJldHVybiB2aWV3UmVmO1xuICB9XG5cbiAgY3JlYXRlQ29tcG9uZW50PEM+KFxuICAgICAgY29tcG9uZW50RmFjdG9yeU9yVHlwZTogQ29tcG9uZW50RmFjdG9yeTxDPnxUeXBlPEM+LCBpbmRleE9yT3B0aW9ucz86IG51bWJlcnx7fSxcbiAgICAgIGluamVjdG9yPzogSW5qZWN0b3IsIHByb2plY3RhYmxlTm9kZXM/OiBhbnlbXVtdLFxuICAgICAgbmdNb2R1bGVSZWY/OiBOZ01vZHVsZVJlZjxhbnk+KTogQ29tcG9uZW50UmVmPEM+IHtcbiAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICBhc3NlcnRFcXVhbChcbiAgICAgICAgICB0eXBlb2YgY29tcG9uZW50RmFjdG9yeU9yVHlwZSAhPT0gJ2Z1bmN0aW9uJywgdHJ1ZSxcbiAgICAgICAgICAnVmlld0VuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IFR5cGUgYXMgYW4gYXJndW1lbnQgZm9yIFxcJ2NvbXBvbmVudEZhY3RvcnlPclR5cGVcXCcnKTtcbiAgICAgIGFzc2VydEVxdWFsKFxuICAgICAgICAgIHR5cGVvZiBpbmRleE9yT3B0aW9ucyAhPT0gJ29iamVjdCcsIHRydWUsXG4gICAgICAgICAgJ1ZpZXdFbmdpbmUgZG9lcyBub3Qgc3VwcG9ydCBvcHRpb25zIGFzIGFuIG9iamVjdCBwcm92aWRlZCB2aWEgc2Vjb25kIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhPck9wdGlvbnMgYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGNvbnRleHRJbmplY3RvciA9IGluamVjdG9yIHx8IHRoaXMucGFyZW50SW5qZWN0b3I7XG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudEZhY3RvcnlPclR5cGUgYXMgQ29tcG9uZW50RmFjdG9yeTxDPjtcbiAgICBpZiAoIW5nTW9kdWxlUmVmICYmICEoY29tcG9uZW50RmFjdG9yeSBpbnN0YW5jZW9mIENvbXBvbmVudEZhY3RvcnlCb3VuZFRvTW9kdWxlKSkge1xuICAgICAgbmdNb2R1bGVSZWYgPSBjb250ZXh0SW5qZWN0b3IuZ2V0KE5nTW9kdWxlUmVmKTtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50UmVmID1cbiAgICAgICAgY29tcG9uZW50RmFjdG9yeS5jcmVhdGUoY29udGV4dEluamVjdG9yLCBwcm9qZWN0YWJsZU5vZGVzLCB1bmRlZmluZWQsIG5nTW9kdWxlUmVmKTtcbiAgICB0aGlzLmluc2VydChjb21wb25lbnRSZWYuaG9zdFZpZXcsIGluZGV4KTtcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgaW5zZXJ0KHZpZXdSZWY6IFZpZXdSZWYsIGluZGV4PzogbnVtYmVyKTogVmlld1JlZiB7XG4gICAgaWYgKHZpZXdSZWYuZGVzdHJveWVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBpbnNlcnQgYSBkZXN0cm95ZWQgVmlldyBpbiBhIFZpZXdDb250YWluZXIhJyk7XG4gICAgfVxuICAgIGNvbnN0IHZpZXdSZWZfID0gPFZpZXdSZWZfPnZpZXdSZWY7XG4gICAgY29uc3Qgdmlld0RhdGEgPSB2aWV3UmVmXy5fdmlldztcbiAgICBhdHRhY2hFbWJlZGRlZFZpZXcodGhpcy5fdmlldywgdGhpcy5fZGF0YSwgaW5kZXgsIHZpZXdEYXRhKTtcbiAgICB2aWV3UmVmXy5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyk7XG4gICAgcmV0dXJuIHZpZXdSZWY7XG4gIH1cblxuICBtb3ZlKHZpZXdSZWY6IFZpZXdSZWZfLCBjdXJyZW50SW5kZXg6IG51bWJlcik6IFZpZXdSZWYge1xuICAgIGlmICh2aWV3UmVmLmRlc3Ryb3llZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbW92ZSBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEnKTtcbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IHRoaXMuX2VtYmVkZGVkVmlld3MuaW5kZXhPZih2aWV3UmVmLl92aWV3KTtcbiAgICBtb3ZlRW1iZWRkZWRWaWV3KHRoaXMuX2RhdGEsIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCk7XG4gICAgcmV0dXJuIHZpZXdSZWY7XG4gIH1cblxuICBpbmRleE9mKHZpZXdSZWY6IFZpZXdSZWYpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9lbWJlZGRlZFZpZXdzLmluZGV4T2YoKDxWaWV3UmVmXz52aWV3UmVmKS5fdmlldyk7XG4gIH1cblxuICByZW1vdmUoaW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3RGF0YSA9IGRldGFjaEVtYmVkZGVkVmlldyh0aGlzLl9kYXRhLCBpbmRleCk7XG4gICAgaWYgKHZpZXdEYXRhKSB7XG4gICAgICBTZXJ2aWNlcy5kZXN0cm95Vmlldyh2aWV3RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgZGV0YWNoKGluZGV4PzogbnVtYmVyKTogVmlld1JlZnxudWxsIHtcbiAgICBjb25zdCB2aWV3ID0gZGV0YWNoRW1iZWRkZWRWaWV3KHRoaXMuX2RhdGEsIGluZGV4KTtcbiAgICByZXR1cm4gdmlldyA/IG5ldyBWaWV3UmVmXyh2aWV3KSA6IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoYW5nZURldGVjdG9yUmVmKHZpZXc6IFZpZXdEYXRhKTogQ2hhbmdlRGV0ZWN0b3JSZWYge1xuICByZXR1cm4gbmV3IFZpZXdSZWZfKHZpZXcpO1xufVxuXG5leHBvcnQgY2xhc3MgVmlld1JlZl8gaW1wbGVtZW50cyBFbWJlZGRlZFZpZXdSZWY8YW55PiwgSW50ZXJuYWxWaWV3UmVmIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfdmlldzogVmlld0RhdGE7XG4gIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZ8bnVsbDtcbiAgcHJpdmF0ZSBfYXBwUmVmOiBWaWV3UmVmVHJhY2tlcnxudWxsO1xuXG4gIGNvbnN0cnVjdG9yKF92aWV3OiBWaWV3RGF0YSkge1xuICAgIHRoaXMuX3ZpZXcgPSBfdmlldztcbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmID0gbnVsbDtcbiAgICB0aGlzLl9hcHBSZWYgPSBudWxsO1xuICB9XG5cbiAgZ2V0IHJvb3ROb2RlcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHJvb3RSZW5kZXJOb2Rlcyh0aGlzLl92aWV3KTtcbiAgfVxuXG4gIGdldCBjb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl92aWV3LmNvbnRleHQ7XG4gIH1cblxuICBzZXQgY29udGV4dCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmlldy5jb250ZXh0ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZGVzdHJveWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fdmlldy5zdGF0ZSAmIFZpZXdTdGF0ZS5EZXN0cm95ZWQpICE9PSAwO1xuICB9XG5cbiAgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgIG1hcmtQYXJlbnRWaWV3c0ZvckNoZWNrKHRoaXMuX3ZpZXcpO1xuICB9XG4gIGRldGFjaCgpOiB2b2lkIHtcbiAgICB0aGlzLl92aWV3LnN0YXRlICY9IH5WaWV3U3RhdGUuQXR0YWNoZWQ7XG4gIH1cbiAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBmcyA9IHRoaXMuX3ZpZXcucm9vdC5yZW5kZXJlckZhY3Rvcnk7XG4gICAgaWYgKGZzLmJlZ2luKSB7XG4gICAgICBmcy5iZWdpbigpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgU2VydmljZXMuY2hlY2tBbmRVcGRhdGVWaWV3KHRoaXMuX3ZpZXcpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZnMuZW5kKSB7XG4gICAgICAgIGZzLmVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjaGVja05vQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBTZXJ2aWNlcy5jaGVja05vQ2hhbmdlc1ZpZXcodGhpcy5fdmlldyk7XG4gIH1cblxuICByZWF0dGFjaCgpOiB2b2lkIHtcbiAgICB0aGlzLl92aWV3LnN0YXRlIHw9IFZpZXdTdGF0ZS5BdHRhY2hlZDtcbiAgfVxuICBvbkRlc3Ryb3koY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCF0aGlzLl92aWV3LmRpc3Bvc2FibGVzKSB7XG4gICAgICB0aGlzLl92aWV3LmRpc3Bvc2FibGVzID0gW107XG4gICAgfVxuICAgIHRoaXMuX3ZpZXcuZGlzcG9zYWJsZXMucHVzaCg8YW55PmNhbGxiYWNrKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX2FwcFJlZikge1xuICAgICAgdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl92aWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmRldGFjaCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluZGV4T2YodGhpcykpO1xuICAgIH1cbiAgICBTZXJ2aWNlcy5kZXN0cm95Vmlldyh0aGlzLl92aWV3KTtcbiAgfVxuXG4gIGRldGFjaEZyb21BcHBSZWYoKSB7XG4gICAgdGhpcy5fYXBwUmVmID0gbnVsbDtcbiAgICByZW5kZXJEZXRhY2hWaWV3KHRoaXMuX3ZpZXcpO1xuICAgIFNlcnZpY2VzLmRpcnR5UGFyZW50UXVlcmllcyh0aGlzLl92aWV3KTtcbiAgfVxuXG4gIGF0dGFjaFRvQXBwUmVmKGFwcFJlZjogVmlld1JlZlRyYWNrZXIpIHtcbiAgICBpZiAodGhpcy5fdmlld0NvbnRhaW5lclJlZikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIFZpZXdDb250YWluZXIhJyk7XG4gICAgfVxuICAgIHRoaXMuX2FwcFJlZiA9IGFwcFJlZjtcbiAgfVxuXG4gIGF0dGFjaFRvVmlld0NvbnRhaW5lclJlZih2Y1JlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIGlmICh0aGlzLl9hcHBSZWYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgZGlyZWN0bHkgdG8gdGhlIEFwcGxpY2F0aW9uUmVmIScpO1xuICAgIH1cbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmID0gdmNSZWY7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlRGF0YSh2aWV3OiBWaWV3RGF0YSwgZGVmOiBOb2RlRGVmKTogVGVtcGxhdGVEYXRhIHtcbiAgcmV0dXJuIG5ldyBUZW1wbGF0ZVJlZl8odmlldywgZGVmKTtcbn1cblxuY2xhc3MgVGVtcGxhdGVSZWZfIGV4dGVuZHMgVGVtcGxhdGVSZWY8YW55PiBpbXBsZW1lbnRzIFRlbXBsYXRlRGF0YSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBfcHJvamVjdGVkVmlld3MhOiBWaWV3RGF0YVtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BhcmVudFZpZXc6IFZpZXdEYXRhLCBwcml2YXRlIF9kZWY6IE5vZGVEZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY3JlYXRlRW1iZWRkZWRWaWV3KGNvbnRleHQ6IGFueSk6IEVtYmVkZGVkVmlld1JlZjxhbnk+IHtcbiAgICByZXR1cm4gbmV3IFZpZXdSZWZfKFNlcnZpY2VzLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgICAgdGhpcy5fcGFyZW50VmlldywgdGhpcy5fZGVmLCB0aGlzLl9kZWYuZWxlbWVudCEudGVtcGxhdGUgISwgY29udGV4dCkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50UmVmKGFzRWxlbWVudERhdGEodGhpcy5fcGFyZW50VmlldywgdGhpcy5fZGVmLm5vZGVJbmRleCkucmVuZGVyRWxlbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluamVjdG9yKHZpZXc6IFZpZXdEYXRhLCBlbERlZjogTm9kZURlZik6IEluamVjdG9yIHtcbiAgcmV0dXJuIG5ldyBJbmplY3Rvcl8odmlldywgZWxEZWYpO1xufVxuXG5jbGFzcyBJbmplY3Rvcl8gaW1wbGVtZW50cyBJbmplY3RvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlldzogVmlld0RhdGEsIHByaXZhdGUgZWxEZWY6IE5vZGVEZWZ8bnVsbCkge31cbiAgZ2V0KHRva2VuOiBhbnksIG5vdEZvdW5kVmFsdWU6IGFueSA9IEluamVjdG9yLlRIUk9XX0lGX05PVF9GT1VORCk6IGFueSB7XG4gICAgY29uc3QgYWxsb3dQcml2YXRlU2VydmljZXMgPVxuICAgICAgICB0aGlzLmVsRGVmID8gKHRoaXMuZWxEZWYuZmxhZ3MgJiBOb2RlRmxhZ3MuQ29tcG9uZW50VmlldykgIT09IDAgOiBmYWxzZTtcbiAgICByZXR1cm4gU2VydmljZXMucmVzb2x2ZURlcChcbiAgICAgICAgdGhpcy52aWV3LCB0aGlzLmVsRGVmLCBhbGxvd1ByaXZhdGVTZXJ2aWNlcyxcbiAgICAgICAge2ZsYWdzOiBEZXBGbGFncy5Ob25lLCB0b2tlbiwgdG9rZW5LZXk6IHRva2VuS2V5KHRva2VuKX0sIG5vdEZvdW5kVmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlVmFsdWUodmlldzogVmlld0RhdGEsIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICBjb25zdCBkZWYgPSB2aWV3LmRlZi5ub2Rlc1tpbmRleF07XG4gIGlmIChkZWYuZmxhZ3MgJiBOb2RlRmxhZ3MuVHlwZUVsZW1lbnQpIHtcbiAgICBjb25zdCBlbERhdGEgPSBhc0VsZW1lbnREYXRhKHZpZXcsIGRlZi5ub2RlSW5kZXgpO1xuICAgIHJldHVybiBkZWYuZWxlbWVudCEudGVtcGxhdGUgPyBlbERhdGEudGVtcGxhdGUgOiBlbERhdGEucmVuZGVyRWxlbWVudDtcbiAgfSBlbHNlIGlmIChkZWYuZmxhZ3MgJiBOb2RlRmxhZ3MuVHlwZVRleHQpIHtcbiAgICByZXR1cm4gYXNUZXh0RGF0YSh2aWV3LCBkZWYubm9kZUluZGV4KS5yZW5kZXJUZXh0O1xuICB9IGVsc2UgaWYgKGRlZi5mbGFncyAmIChOb2RlRmxhZ3MuQ2F0UHJvdmlkZXIgfCBOb2RlRmxhZ3MuVHlwZVBpcGUpKSB7XG4gICAgcmV0dXJuIGFzUHJvdmlkZXJEYXRhKHZpZXcsIGRlZi5ub2RlSW5kZXgpLmluc3RhbmNlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgSWxsZWdhbCBzdGF0ZTogcmVhZCBub2RlVmFsdWUgZm9yIG5vZGUgaW5kZXggJHtpbmRleH1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5nTW9kdWxlUmVmKFxuICAgIG1vZHVsZVR5cGU6IFR5cGU8YW55PiwgcGFyZW50OiBJbmplY3RvciwgYm9vdHN0cmFwQ29tcG9uZW50czogVHlwZTxhbnk+W10sXG4gICAgZGVmOiBOZ01vZHVsZURlZmluaXRpb24pOiBOZ01vZHVsZVJlZjxhbnk+IHtcbiAgcmV0dXJuIG5ldyBOZ01vZHVsZVJlZl8obW9kdWxlVHlwZSwgcGFyZW50LCBib290c3RyYXBDb21wb25lbnRzLCBkZWYpO1xufVxuXG5jbGFzcyBOZ01vZHVsZVJlZl8gaW1wbGVtZW50cyBOZ01vZHVsZURhdGEsIEludGVybmFsTmdNb2R1bGVSZWY8YW55PiB7XG4gIHByaXZhdGUgX2Rlc3Ryb3lMaXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG4gIHByaXZhdGUgX2Rlc3Ryb3llZDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogQGludGVybmFsICovXG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBfcHJvdmlkZXJzITogYW55W107XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgLy8gVE9ETyhpc3N1ZS8yNDU3MSk6IHJlbW92ZSAnIScuXG4gIF9tb2R1bGVzITogYW55W107XG5cbiAgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yID0gdGhpcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgX21vZHVsZVR5cGU6IFR5cGU8YW55PiwgcHVibGljIF9wYXJlbnQ6IEluamVjdG9yLFxuICAgICAgcHVibGljIF9ib290c3RyYXBDb21wb25lbnRzOiBUeXBlPGFueT5bXSwgcHVibGljIF9kZWY6IE5nTW9kdWxlRGVmaW5pdGlvbikge1xuICAgIGluaXROZ01vZHVsZSh0aGlzKTtcbiAgfVxuXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlOiBhbnkgPSBJbmplY3Rvci5USFJPV19JRl9OT1RfRk9VTkQsXG4gICAgICBpbmplY3RGbGFnczogSW5qZWN0RmxhZ3MgPSBJbmplY3RGbGFncy5EZWZhdWx0KTogYW55IHtcbiAgICBsZXQgZmxhZ3MgPSBEZXBGbGFncy5Ob25lO1xuICAgIGlmIChpbmplY3RGbGFncyAmIEluamVjdEZsYWdzLlNraXBTZWxmKSB7XG4gICAgICBmbGFncyB8PSBEZXBGbGFncy5Ta2lwU2VsZjtcbiAgICB9IGVsc2UgaWYgKGluamVjdEZsYWdzICYgSW5qZWN0RmxhZ3MuU2VsZikge1xuICAgICAgZmxhZ3MgfD0gRGVwRmxhZ3MuU2VsZjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVOZ01vZHVsZURlcChcbiAgICAgICAgdGhpcywge3Rva2VuOiB0b2tlbiwgdG9rZW5LZXk6IHRva2VuS2V5KHRva2VuKSwgZmxhZ3M6IGZsYWdzfSwgbm90Rm91bmRWYWx1ZSk7XG4gIH1cblxuICBnZXQgaW5zdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KHRoaXMuX21vZHVsZVR5cGUpO1xuICB9XG5cbiAgZ2V0IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGUgbmcgbW9kdWxlICR7c3RyaW5naWZ5KHRoaXMuaW5zdGFuY2UuY29uc3RydWN0b3IpfSBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC5gKTtcbiAgICB9XG4gICAgdGhpcy5fZGVzdHJveWVkID0gdHJ1ZTtcbiAgICBjYWxsTmdNb2R1bGVMaWZlY3ljbGUodGhpcywgTm9kZUZsYWdzLk9uRGVzdHJveSk7XG4gICAgdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSk7XG4gIH1cblxuICBvbkRlc3Ryb3koY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2goY2FsbGJhY2spO1xuICB9XG59XG4iXX0=
|
|
File without changes
|
|
File without changes
|
|
File without changes
|