@angular/compiler-cli 12.1.0 → 12.1.4
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/linker/src/file_linker/emit_scopes/iife_emit_scope.js +1 -1
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
- package/ngcc/src/dependencies/commonjs_dependency_host.js +1 -1
- package/ngcc/src/dependencies/dts_dependency_host.js +1 -1
- package/ngcc/src/dependencies/esm_dependency_host.js +1 -1
- package/ngcc/src/dependencies/umd_dependency_host.js +1 -1
- package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +1 -1
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +1 -1
- package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +1 -1
- package/ngcc/src/execution/tasks/queues/serial_task_queue.js +1 -1
- package/ngcc/src/host/commonjs_host.js +1 -1
- package/ngcc/src/host/esm2015_host.js +1 -1
- package/ngcc/src/host/esm5_host.js +1 -1
- package/ngcc/src/host/umd_host.js +1 -1
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/ngcc/src/packages/entry_point_manifest.js +1 -1
- package/ngcc/src/packages/ngcc_compiler_host.js +1 -1
- package/ngcc/src/rendering/commonjs_rendering_formatter.js +1 -1
- package/ngcc/src/rendering/esm5_rendering_formatter.js +1 -1
- package/ngcc/src/rendering/umd_rendering_formatter.js +1 -1
- package/ngcc/src/writing/new_entry_point_file_writer.js +1 -1
- package/package.json +2 -2
- package/src/ngtsc/annotations/src/component.js +1 -1
- package/src/ngtsc/annotations/src/directive.js +1 -1
- package/src/ngtsc/annotations/src/ng_module.js +1 -1
- package/src/ngtsc/annotations/src/pipe.js +1 -1
- package/src/ngtsc/core/src/compiler.js +1 -1
- package/src/ngtsc/cycles/src/analyzer.d.ts +7 -0
- package/src/ngtsc/cycles/src/analyzer.js +89 -4
- package/src/ngtsc/cycles/src/imports.d.ts +1 -6
- package/src/ngtsc/cycles/src/imports.js +5 -23
- package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +1 -1
- package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +1 -1
- package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +1 -1
- package/src/ngtsc/incremental/semantic_graph/src/graph.js +1 -1
- package/src/ngtsc/incremental/src/incremental.js +30 -4
- package/src/ngtsc/indexer/src/template.js +1 -1
- package/src/ngtsc/metadata/src/dts.js +4 -5
- package/src/ngtsc/metadata/src/util.d.ts +2 -2
- package/src/ngtsc/metadata/src/util.js +9 -6
- package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
- package/src/ngtsc/partial_evaluator/src/diagnostics.js +4 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +19 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.js +12 -4
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +2 -0
- package/src/ngtsc/partial_evaluator/src/interpreter.js +53 -5
- package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
- package/src/ngtsc/program_driver/src/api.d.ts +20 -1
- package/src/ngtsc/program_driver/src/api.js +3 -2
- package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +2 -2
- package/src/ngtsc/program_driver/src/ts_create_program_driver.js +7 -3
- package/src/ngtsc/reflection/src/typescript.js +4 -1
- package/src/ngtsc/transform/src/compilation.d.ts +5 -0
- package/src/ngtsc/transform/src/compilation.js +95 -72
- package/src/ngtsc/transform/src/transform.js +1 -1
- package/src/ngtsc/typecheck/src/context.d.ts +2 -1
- package/src/ngtsc/typecheck/src/context.js +11 -3
- package/src/ngtsc/typecheck/src/template_semantics.js +1 -1
- package/src/ngtsc/typecheck/src/template_symbol_builder.js +21 -1
- package/src/ngtsc/typecheck/src/type_check_block.js +2 -2
- package/src/ngtsc/typecheck/src/type_check_file.js +1 -1
- package/src/ngtsc/typecheck/src/type_emitter.js +25 -6
- package/src/ngtsc/util/src/visitor.d.ts +1 -1
- package/src/ngtsc/util/src/visitor.js +1 -8
- package/src/version.js +1 -1
- package/compiler-cli.externs.js +0 -0
- package/index.mjs +0 -20
- package/linker/babel/babel.externs.js +0 -0
- package/linker/babel/index.mjs +0 -11
- package/linker/babel/src/ast/babel_ast_factory.mjs +0 -137
- package/linker/babel/src/ast/babel_ast_host.mjs +0 -154
- package/linker/babel/src/babel_declaration_scope.mjs +0 -52
- package/linker/babel/src/babel_plugin.mjs +0 -23
- package/linker/babel/src/es2015_linker_plugin.mjs +0 -158
- package/linker/babel/src/linker_plugin_options.mjs +0 -2
- package/linker/index.mjs +0 -7
- package/linker/linker.externs.js +0 -0
- package/linker/src/ast/ast_host.mjs +0 -9
- package/linker/src/ast/ast_value.mjs +0 -256
- package/linker/src/ast/typescript/typescript_ast_host.mjs +0 -156
- package/linker/src/ast/utils.mjs +0 -17
- package/linker/src/fatal_linker_error.mjs +0 -30
- package/linker/src/file_linker/declaration_scope.mjs +0 -9
- package/linker/src/file_linker/emit_scopes/emit_scope.mjs +0 -41
- package/linker/src/file_linker/emit_scopes/iife_emit_scope.mjs +0 -33
- package/linker/src/file_linker/file_linker.mjs +0 -70
- package/linker/src/file_linker/get_source_file.mjs +0 -28
- package/linker/src/file_linker/linker_environment.mjs +0 -23
- package/linker/src/file_linker/linker_options.mjs +0 -16
- package/linker/src/file_linker/needs_linking.mjs +0 -27
- package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.mjs +0 -29
- package/linker/src/file_linker/partial_linkers/partial_component_linker_1.mjs +0 -194
- package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.mjs +0 -137
- package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.mjs +0 -52
- package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.mjs +0 -56
- package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.mjs +0 -38
- package/linker/src/file_linker/partial_linkers/partial_linker.mjs +0 -2
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.mjs +0 -166
- package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.mjs +0 -110
- package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.mjs +0 -42
- package/linker/src/file_linker/partial_linkers/util.mjs +0 -78
- package/linker/src/file_linker/translator.mjs +0 -23
- package/linker/src/linker_import_generator.mjs +0 -28
- package/ngcc/index.mjs +0 -16
- package/ngcc/main-ivy-ngcc.mjs +0 -12
- package/ngcc/main-ngcc.mjs +0 -32
- package/ngcc/ngcc.externs.js +0 -0
- package/ngcc/src/analysis/decoration_analyzer.mjs +0 -215
- package/ngcc/src/analysis/migration_host.mjs +0 -80
- package/ngcc/src/analysis/module_with_providers_analyzer.mjs +0 -178
- package/ngcc/src/analysis/ngcc_references_registry.mjs +0 -45
- package/ngcc/src/analysis/ngcc_trait_compiler.mjs +0 -70
- package/ngcc/src/analysis/private_declarations_analyzer.mjs +0 -47
- package/ngcc/src/analysis/switch_marker_analyzer.mjs +0 -34
- package/ngcc/src/analysis/types.mjs +0 -2
- package/ngcc/src/analysis/util.mjs +0 -19
- package/ngcc/src/command_line_options.mjs +0 -142
- package/ngcc/src/constants.mjs +0 -10
- package/ngcc/src/dependencies/commonjs_dependency_host.mjs +0 -87
- package/ngcc/src/dependencies/dependency_host.mjs +0 -102
- package/ngcc/src/dependencies/dependency_resolver.mjs +0 -151
- package/ngcc/src/dependencies/dts_dependency_host.mjs +0 -18
- package/ngcc/src/dependencies/esm_dependency_host.mjs +0 -286
- package/ngcc/src/dependencies/module_resolver.mjs +0 -233
- package/ngcc/src/dependencies/umd_dependency_host.mjs +0 -33
- package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.mjs +0 -42
- package/ngcc/src/entry_point_finder/entry_point_collector.mjs +0 -120
- package/ngcc/src/entry_point_finder/interface.mjs +0 -2
- package/ngcc/src/entry_point_finder/program_based_entry_point_finder.mjs +0 -91
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.mjs +0 -216
- package/ngcc/src/entry_point_finder/tracing_entry_point_finder.mjs +0 -63
- package/ngcc/src/entry_point_finder/utils.mjs +0 -176
- package/ngcc/src/execution/analyze_entry_points.mjs +0 -130
- package/ngcc/src/execution/api.mjs +0 -2
- package/ngcc/src/execution/cluster/api.mjs +0 -9
- package/ngcc/src/execution/cluster/executor.mjs +0 -27
- package/ngcc/src/execution/cluster/master.mjs +0 -261
- package/ngcc/src/execution/cluster/package_json_updater.mjs +0 -45
- package/ngcc/src/execution/cluster/utils.mjs +0 -59
- package/ngcc/src/execution/cluster/worker.mjs +0 -81
- package/ngcc/src/execution/create_compile_function.mjs +0 -62
- package/ngcc/src/execution/single_process_executor.mjs +0 -57
- package/ngcc/src/execution/tasks/api.mjs +0 -22
- package/ngcc/src/execution/tasks/completion.mjs +0 -61
- package/ngcc/src/execution/tasks/queues/base_task_queue.mjs +0 -78
- package/ngcc/src/execution/tasks/queues/parallel_task_queue.mjs +0 -53
- package/ngcc/src/execution/tasks/queues/serial_task_queue.mjs +0 -29
- package/ngcc/src/execution/tasks/utils.mjs +0 -114
- package/ngcc/src/host/commonjs_host.mjs +0 -220
- package/ngcc/src/host/commonjs_umd_utils.mjs +0 -186
- package/ngcc/src/host/delegating_host.mjs +0 -140
- package/ngcc/src/host/esm2015_host.mjs +0 -2293
- package/ngcc/src/host/esm5_host.mjs +0 -721
- package/ngcc/src/host/ngcc_host.mjs +0 -15
- package/ngcc/src/host/umd_host.mjs +0 -486
- package/ngcc/src/host/utils.mjs +0 -12
- package/ngcc/src/locking/async_locker.mjs +0 -76
- package/ngcc/src/locking/lock_file.mjs +0 -4
- package/ngcc/src/locking/lock_file_with_child_process/index.mjs +0 -78
- package/ngcc/src/locking/lock_file_with_child_process/unlocker.mjs +0 -34
- package/ngcc/src/locking/lock_file_with_child_process/util.mjs +0 -29
- package/ngcc/src/locking/sync_locker.mjs +0 -52
- package/ngcc/src/main.mjs +0 -134
- package/ngcc/src/migrations/migration.mjs +0 -2
- package/ngcc/src/migrations/missing_injectable_migration.mjs +0 -164
- package/ngcc/src/migrations/undecorated_child_migration.mjs +0 -61
- package/ngcc/src/migrations/undecorated_parent_migration.mjs +0 -86
- package/ngcc/src/migrations/utils.mjs +0 -117
- package/ngcc/src/ngcc_options.mjs +0 -119
- package/ngcc/src/packages/build_marker.mjs +0 -84
- package/ngcc/src/packages/bundle_program.mjs +0 -52
- package/ngcc/src/packages/configuration.mjs +0 -255
- package/ngcc/src/packages/entry_point.mjs +0 -239
- package/ngcc/src/packages/entry_point_bundle.mjs +0 -68
- package/ngcc/src/packages/entry_point_manifest.mjs +0 -162
- package/ngcc/src/packages/ngcc_compiler_host.mjs +0 -77
- package/ngcc/src/packages/patch_ts_expando_initializer.mjs +0 -166
- package/ngcc/src/packages/source_file_cache.mjs +0 -187
- package/ngcc/src/packages/transformer.mjs +0 -140
- package/ngcc/src/path_mappings.mjs +0 -13
- package/ngcc/src/rendering/commonjs_rendering_formatter.mjs +0 -65
- package/ngcc/src/rendering/dts_renderer.mjs +0 -139
- package/ngcc/src/rendering/esm5_rendering_formatter.mjs +0 -50
- package/ngcc/src/rendering/esm_rendering_formatter.mjs +0 -251
- package/ngcc/src/rendering/ngcc_import_rewriter.mjs +0 -32
- package/ngcc/src/rendering/renderer.mjs +0 -170
- package/ngcc/src/rendering/rendering_formatter.mjs +0 -2
- package/ngcc/src/rendering/source_maps.mjs +0 -54
- package/ngcc/src/rendering/umd_rendering_formatter.mjs +0 -292
- package/ngcc/src/rendering/utils.mjs +0 -20
- package/ngcc/src/utils.mjs +0 -144
- package/ngcc/src/writing/cleaning/cleaning_strategies.mjs +0 -61
- package/ngcc/src/writing/cleaning/package_cleaner.mjs +0 -67
- package/ngcc/src/writing/cleaning/utils.mjs +0 -16
- package/ngcc/src/writing/file_writer.mjs +0 -2
- package/ngcc/src/writing/in_place_file_writer.mjs +0 -62
- package/ngcc/src/writing/new_entry_point_file_writer.mjs +0 -161
- package/ngcc/src/writing/package_json_updater.mjs +0 -144
- package/src/diagnostics/translate_diagnostics.mjs +0 -47
- package/src/diagnostics/typescript_version.mjs +0 -79
- package/src/extract_i18n.mjs +0 -46
- package/src/language_services.mjs +0 -18
- package/src/main.mjs +0 -185
- package/src/metadata/bundle_index_host.mjs +0 -107
- package/src/metadata/bundler.mjs +0 -556
- package/src/metadata/collector.mjs +0 -701
- package/src/metadata/evaluator.mjs +0 -643
- package/src/metadata/index.mjs +0 -11
- package/src/metadata/index_writer.mjs +0 -44
- package/src/metadata/schema.mjs +0 -102
- package/src/metadata/symbols.mjs +0 -117
- package/src/ngtsc/annotations/annotations.externs.js +0 -0
- package/src/ngtsc/annotations/index.mjs +0 -15
- package/src/ngtsc/annotations/src/api.mjs +0 -9
- package/src/ngtsc/annotations/src/component.mjs +0 -1068
- package/src/ngtsc/annotations/src/diagnostics.mjs +0 -147
- package/src/ngtsc/annotations/src/directive.mjs +0 -692
- package/src/ngtsc/annotations/src/factory.mjs +0 -17
- package/src/ngtsc/annotations/src/injectable.mjs +0 -260
- package/src/ngtsc/annotations/src/metadata.mjs +0 -145
- package/src/ngtsc/annotations/src/ng_module.mjs +0 -565
- package/src/ngtsc/annotations/src/pipe.mjs +0 -151
- package/src/ngtsc/annotations/src/references_registry.mjs +0 -16
- package/src/ngtsc/annotations/src/util.mjs +0 -495
- package/src/ngtsc/core/api/index.mjs +0 -12
- package/src/ngtsc/core/api/src/adapter.mjs +0 -9
- package/src/ngtsc/core/api/src/interfaces.mjs +0 -9
- package/src/ngtsc/core/api/src/options.mjs +0 -9
- package/src/ngtsc/core/api/src/public_options.mjs +0 -9
- package/src/ngtsc/core/api.externs.js +0 -0
- package/src/ngtsc/core/core.externs.js +0 -0
- package/src/ngtsc/core/index.mjs +0 -10
- package/src/ngtsc/core/src/compiler.mjs +0 -917
- package/src/ngtsc/core/src/config.mjs +0 -15
- package/src/ngtsc/core/src/host.mjs +0 -229
- package/src/ngtsc/cycles/cycles.externs.js +0 -0
- package/src/ngtsc/cycles/index.mjs +0 -10
- package/src/ngtsc/cycles/src/analyzer.mjs +0 -60
- package/src/ngtsc/cycles/src/imports.mjs +0 -152
- package/src/ngtsc/diagnostics/diagnostics.externs.js +0 -0
- package/src/ngtsc/diagnostics/index.mjs +0 -11
- package/src/ngtsc/diagnostics/src/error.mjs +0 -51
- package/src/ngtsc/diagnostics/src/error_code.mjs +0 -198
- package/src/ngtsc/diagnostics/src/util.mjs +0 -21
- package/src/ngtsc/entry_point/entry_point.externs.js +0 -0
- package/src/ngtsc/entry_point/index.mjs +0 -12
- package/src/ngtsc/entry_point/src/generator.mjs +0 -35
- package/src/ngtsc/entry_point/src/logic.mjs +0 -35
- package/src/ngtsc/entry_point/src/private_export_checker.mjs +0 -122
- package/src/ngtsc/entry_point/src/reference_graph.mjs +0 -73
- package/src/ngtsc/file_system/file_system.externs.js +0 -0
- package/src/ngtsc/file_system/index.mjs +0 -13
- package/src/ngtsc/file_system/src/compiler_host.mjs +0 -64
- package/src/ngtsc/file_system/src/helpers.mjs +0 -99
- package/src/ngtsc/file_system/src/invalid_file_system.mjs +0 -95
- package/src/ngtsc/file_system/src/logical.mjs +0 -84
- package/src/ngtsc/file_system/src/node_js_file_system.mjs +0 -142
- package/src/ngtsc/file_system/src/types.mjs +0 -9
- package/src/ngtsc/file_system/src/util.mjs +0 -22
- package/src/ngtsc/file_system/testing/index.mjs +0 -13
- package/src/ngtsc/file_system/testing/src/mock_file_system.mjs +0 -293
- package/src/ngtsc/file_system/testing/src/mock_file_system_native.mjs +0 -57
- package/src/ngtsc/file_system/testing/src/mock_file_system_posix.mjs +0 -38
- package/src/ngtsc/file_system/testing/src/mock_file_system_windows.mjs +0 -38
- package/src/ngtsc/file_system/testing/src/test_helper.mjs +0 -108
- package/src/ngtsc/file_system/testing/testing.externs.js +0 -0
- package/src/ngtsc/imports/imports.externs.js +0 -0
- package/src/ngtsc/imports/index.mjs +0 -14
- package/src/ngtsc/imports/src/alias.mjs +0 -137
- package/src/ngtsc/imports/src/core.mjs +0 -78
- package/src/ngtsc/imports/src/default.mjs +0 -135
- package/src/ngtsc/imports/src/emitter.mjs +0 -266
- package/src/ngtsc/imports/src/find_export.mjs +0 -56
- package/src/ngtsc/imports/src/reexport.mjs +0 -9
- package/src/ngtsc/imports/src/references.mjs +0 -137
- package/src/ngtsc/imports/src/resolver.mjs +0 -24
- package/src/ngtsc/incremental/api.externs.js +0 -0
- package/src/ngtsc/incremental/api.mjs +0 -9
- package/src/ngtsc/incremental/incremental.externs.js +0 -0
- package/src/ngtsc/incremental/index.mjs +0 -12
- package/src/ngtsc/incremental/semantic_graph/index.mjs +0 -12
- package/src/ngtsc/incremental/semantic_graph/semantic_graph.externs.js +0 -0
- package/src/ngtsc/incremental/semantic_graph/src/api.mjs +0 -36
- package/src/ngtsc/incremental/semantic_graph/src/graph.mjs +0 -237
- package/src/ngtsc/incremental/semantic_graph/src/type_parameters.mjs +0 -40
- package/src/ngtsc/incremental/semantic_graph/src/util.mjs +0 -69
- package/src/ngtsc/incremental/src/dependency_tracking.mjs +0 -117
- package/src/ngtsc/incremental/src/incremental.mjs +0 -271
- package/src/ngtsc/incremental/src/noop.mjs +0 -13
- package/src/ngtsc/incremental/src/state.mjs +0 -17
- package/src/ngtsc/incremental/src/strategy.mjs +0 -76
- package/src/ngtsc/indexer/index.mjs +0 -11
- package/src/ngtsc/indexer/indexer.externs.js +0 -0
- package/src/ngtsc/indexer/src/api.mjs +0 -30
- package/src/ngtsc/indexer/src/context.mjs +0 -25
- package/src/ngtsc/indexer/src/template.mjs +0 -303
- package/src/ngtsc/indexer/src/transform.mjs +0 -51
- package/src/ngtsc/logging/index.mjs +0 -10
- package/src/ngtsc/logging/logging.externs.js +0 -0
- package/src/ngtsc/logging/src/console_logger.mjs +0 -43
- package/src/ngtsc/logging/src/logger.mjs +0 -15
- package/src/ngtsc/logging/testing/index.mjs +0 -9
- package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
- package/src/ngtsc/logging/testing/testing.externs.js +0 -0
- package/src/ngtsc/metadata/index.mjs +0 -15
- package/src/ngtsc/metadata/metadata.externs.js +0 -0
- package/src/ngtsc/metadata/src/api.mjs +0 -13
- package/src/ngtsc/metadata/src/dts.mjs +0 -143
- package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
- package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
- package/src/ngtsc/metadata/src/registry.mjs +0 -80
- package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
- package/src/ngtsc/metadata/src/util.mjs +0 -200
- package/src/ngtsc/partial_evaluator/index.mjs +0 -12
- package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
- package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
- package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -171
- package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -86
- package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
- package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -683
- package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
- package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
- package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
- package/src/ngtsc/perf/index.mjs +0 -11
- package/src/ngtsc/perf/perf.externs.js +0 -0
- package/src/ngtsc/perf/src/api.mjs +0 -278
- package/src/ngtsc/perf/src/clock.mjs +0 -15
- package/src/ngtsc/perf/src/noop.mjs +0 -21
- package/src/ngtsc/perf/src/recorder.mjs +0 -125
- package/src/ngtsc/program.mjs +0 -271
- package/src/ngtsc/program_driver/index.mjs +0 -10
- package/src/ngtsc/program_driver/program_driver.externs.js +0 -0
- package/src/ngtsc/program_driver/src/api.mjs +0 -22
- package/src/ngtsc/program_driver/src/ts_create_program_driver.mjs +0 -164
- package/src/ngtsc/reflection/index.mjs +0 -12
- package/src/ngtsc/reflection/reflection.externs.js +0 -0
- package/src/ngtsc/reflection/src/host.mjs +0 -73
- package/src/ngtsc/reflection/src/type_to_value.mjs +0 -243
- package/src/ngtsc/reflection/src/typescript.mjs +0 -608
- package/src/ngtsc/reflection/src/util.mjs +0 -21
- package/src/ngtsc/resource/index.mjs +0 -9
- package/src/ngtsc/resource/resource.externs.js +0 -0
- package/src/ngtsc/resource/src/loader.mjs +0 -242
- package/src/ngtsc/routing/index.mjs +0 -11
- package/src/ngtsc/routing/routing.externs.js +0 -0
- package/src/ngtsc/routing/src/analyzer.mjs +0 -69
- package/src/ngtsc/routing/src/lazy.mjs +0 -168
- package/src/ngtsc/routing/src/route.mjs +0 -51
- package/src/ngtsc/scope/index.mjs +0 -12
- package/src/ngtsc/scope/scope.externs.js +0 -0
- package/src/ngtsc/scope/src/api.mjs +0 -9
- package/src/ngtsc/scope/src/component_scope.mjs +0 -31
- package/src/ngtsc/scope/src/dependency.mjs +0 -134
- package/src/ngtsc/scope/src/local.mjs +0 -531
- package/src/ngtsc/scope/src/typecheck.mjs +0 -83
- package/src/ngtsc/shims/api.externs.js +0 -0
- package/src/ngtsc/shims/api.mjs +0 -2
- package/src/ngtsc/shims/index.mjs +0 -14
- package/src/ngtsc/shims/shims.externs.js +0 -0
- package/src/ngtsc/shims/src/adapter.mjs +0 -188
- package/src/ngtsc/shims/src/expando.mjs +0 -102
- package/src/ngtsc/shims/src/factory_generator.mjs +0 -265
- package/src/ngtsc/shims/src/reference_tagger.mjs +0 -67
- package/src/ngtsc/shims/src/summary_generator.mjs +0 -64
- package/src/ngtsc/shims/src/util.mjs +0 -26
- package/src/ngtsc/sourcemaps/index.mjs +0 -11
- package/src/ngtsc/sourcemaps/sourcemaps.externs.js +0 -0
- package/src/ngtsc/sourcemaps/src/content_origin.mjs +0 -35
- package/src/ngtsc/sourcemaps/src/raw_source_map.mjs +0 -2
- package/src/ngtsc/sourcemaps/src/segment_marker.mjs +0 -40
- package/src/ngtsc/sourcemaps/src/source_file.mjs +0 -459
- package/src/ngtsc/sourcemaps/src/source_file_loader.mjs +0 -213
- package/src/ngtsc/switch/index.mjs +0 -9
- package/src/ngtsc/switch/src/switch.mjs +0 -115
- package/src/ngtsc/switch/switch.externs.js +0 -0
- package/src/ngtsc/transform/index.mjs +0 -14
- package/src/ngtsc/transform/src/alias.mjs +0 -30
- package/src/ngtsc/transform/src/api.mjs +0 -63
- package/src/ngtsc/transform/src/compilation.mjs +0 -514
- package/src/ngtsc/transform/src/declaration.mjs +0 -182
- package/src/ngtsc/transform/src/trait.mjs +0 -95
- package/src/ngtsc/transform/src/transform.mjs +0 -298
- package/src/ngtsc/transform/src/utils.mjs +0 -57
- package/src/ngtsc/transform/transform.externs.js +0 -0
- package/src/ngtsc/translator/index.mjs +0 -14
- package/src/ngtsc/translator/src/api/ast_factory.mjs +0 -9
- package/src/ngtsc/translator/src/api/import_generator.mjs +0 -9
- package/src/ngtsc/translator/src/context.mjs +0 -24
- package/src/ngtsc/translator/src/import_manager.mjs +0 -48
- package/src/ngtsc/translator/src/translator.mjs +0 -317
- package/src/ngtsc/translator/src/type_translator.mjs +0 -204
- package/src/ngtsc/translator/src/typescript_ast_factory.mjs +0 -211
- package/src/ngtsc/translator/src/typescript_translator.mjs +0 -17
- package/src/ngtsc/translator/translator.externs.js +0 -0
- package/src/ngtsc/tsc_plugin.mjs +0 -98
- package/src/ngtsc/typecheck/api/api.externs.js +0 -0
- package/src/ngtsc/typecheck/api/api.mjs +0 -9
- package/src/ngtsc/typecheck/api/checker.mjs +0 -31
- package/src/ngtsc/typecheck/api/completion.mjs +0 -16
- package/src/ngtsc/typecheck/api/context.mjs +0 -9
- package/src/ngtsc/typecheck/api/index.mjs +0 -14
- package/src/ngtsc/typecheck/api/scope.mjs +0 -9
- package/src/ngtsc/typecheck/api/symbols.mjs +0 -22
- package/src/ngtsc/typecheck/diagnostics/diagnostics.externs.js +0 -0
- package/src/ngtsc/typecheck/diagnostics/index.mjs +0 -10
- package/src/ngtsc/typecheck/diagnostics/src/diagnostic.mjs +0 -99
- package/src/ngtsc/typecheck/diagnostics/src/id.mjs +0 -23
- package/src/ngtsc/typecheck/index.mjs +0 -12
- package/src/ngtsc/typecheck/src/checker.mjs +0 -591
- package/src/ngtsc/typecheck/src/comments.mjs +0 -159
- package/src/ngtsc/typecheck/src/completion.mjs +0 -155
- package/src/ngtsc/typecheck/src/context.mjs +0 -350
- package/src/ngtsc/typecheck/src/diagnostics.mjs +0 -95
- package/src/ngtsc/typecheck/src/dom.mjs +0 -68
- package/src/ngtsc/typecheck/src/environment.mjs +0 -146
- package/src/ngtsc/typecheck/src/expression.mjs +0 -412
- package/src/ngtsc/typecheck/src/line_mappings.mjs +0 -60
- package/src/ngtsc/typecheck/src/oob.mjs +0 -112
- package/src/ngtsc/typecheck/src/shim.mjs +0 -37
- package/src/ngtsc/typecheck/src/source.mjs +0 -74
- package/src/ngtsc/typecheck/src/tcb_util.mjs +0 -135
- package/src/ngtsc/typecheck/src/template_semantics.mjs +0 -34
- package/src/ngtsc/typecheck/src/template_symbol_builder.mjs +0 -485
- package/src/ngtsc/typecheck/src/ts_util.mjs +0 -157
- package/src/ngtsc/typecheck/src/type_check_block.mjs +0 -1770
- package/src/ngtsc/typecheck/src/type_check_file.mjs +0 -65
- package/src/ngtsc/typecheck/src/type_constructor.mjs +0 -227
- package/src/ngtsc/typecheck/src/type_emitter.mjs +0 -127
- package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -93
- package/src/ngtsc/typecheck/typecheck.externs.js +0 -0
- package/src/ngtsc/util/src/path.mjs +0 -18
- package/src/ngtsc/util/src/typescript.mjs +0 -143
- package/src/ngtsc/util/src/visitor.mjs +0 -107
- package/src/ngtsc/util/util.externs.js +0 -0
- package/src/ngtsc/xi18n/index.mjs +0 -9
- package/src/ngtsc/xi18n/src/context.mjs +0 -9
- package/src/ngtsc/xi18n/xi18n.externs.js +0 -0
- package/src/perform_compile.mjs +0 -275
- package/src/perform_watch.mjs +0 -247
- package/src/tooling.mjs +0 -32
- package/src/transformers/api.mjs +0 -27
- package/src/transformers/compiler_host.mjs +0 -593
- package/src/transformers/downlevel_decorators_transform.mjs +0 -507
- package/src/transformers/entry_points.mjs +0 -10
- package/src/transformers/i18n.mjs +0 -59
- package/src/transformers/inline_resources.mjs +0 -269
- package/src/transformers/lower_expressions.mjs +0 -336
- package/src/transformers/metadata_cache.mjs +0 -53
- package/src/transformers/metadata_reader.mjs +0 -104
- package/src/transformers/node_emitter.mjs +0 -606
- package/src/transformers/node_emitter_transform.mjs +0 -78
- package/src/transformers/patch_alias_reference_resolution.mjs +0 -109
- package/src/transformers/program.mjs +0 -887
- package/src/transformers/r3_metadata_transform.mjs +0 -46
- package/src/transformers/r3_transform.mjs +0 -29
- package/src/transformers/util.mjs +0 -89
- package/src/typescript_support.mjs +0 -57
- package/src/version.mjs +0 -15
|
@@ -1,143 +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
|
-
import * as ts from 'typescript';
|
|
9
|
-
import { Reference } from '../../imports';
|
|
10
|
-
import { isNamedClassDeclaration } from '../../reflection';
|
|
11
|
-
import { MetaType } from './api';
|
|
12
|
-
import { ClassPropertyMapping } from './property_mapping';
|
|
13
|
-
import { extractDirectiveTypeCheckMeta, extractReferencesFromType, readStringArrayType, readStringMapType, readStringType } from './util';
|
|
14
|
-
/**
|
|
15
|
-
* A `MetadataReader` that can read metadata from `.d.ts` files, which have static Ivy properties
|
|
16
|
-
* from an upstream compilation already.
|
|
17
|
-
*/
|
|
18
|
-
export class DtsMetadataReader {
|
|
19
|
-
constructor(checker, reflector) {
|
|
20
|
-
this.checker = checker;
|
|
21
|
-
this.reflector = reflector;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Read the metadata from a class that has already been compiled somehow (either it's in a .d.ts
|
|
25
|
-
* file, or in a .ts file with a handwritten definition).
|
|
26
|
-
*
|
|
27
|
-
* @param ref `Reference` to the class of interest, with the context of how it was obtained.
|
|
28
|
-
*/
|
|
29
|
-
getNgModuleMetadata(ref) {
|
|
30
|
-
const clazz = ref.node;
|
|
31
|
-
const resolutionContext = clazz.getSourceFile().fileName;
|
|
32
|
-
// This operation is explicitly not memoized, as it depends on `ref.ownedByModuleGuess`.
|
|
33
|
-
// TODO(alxhub): investigate caching of .d.ts module metadata.
|
|
34
|
-
const ngModuleDef = this.reflector.getMembersOfClass(clazz).find(member => member.name === 'ɵmod' && member.isStatic);
|
|
35
|
-
if (ngModuleDef === undefined) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
else if (
|
|
39
|
-
// Validate that the shape of the ngModuleDef type is correct.
|
|
40
|
-
ngModuleDef.type === null || !ts.isTypeReferenceNode(ngModuleDef.type) ||
|
|
41
|
-
ngModuleDef.type.typeArguments === undefined ||
|
|
42
|
-
ngModuleDef.type.typeArguments.length !== 4) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
// Read the ModuleData out of the type arguments.
|
|
46
|
-
const [_, declarationMetadata, importMetadata, exportMetadata] = ngModuleDef.type.typeArguments;
|
|
47
|
-
return {
|
|
48
|
-
ref,
|
|
49
|
-
declarations: extractReferencesFromType(this.checker, declarationMetadata, ref.ownedByModuleGuess, resolutionContext),
|
|
50
|
-
exports: extractReferencesFromType(this.checker, exportMetadata, ref.ownedByModuleGuess, resolutionContext),
|
|
51
|
-
imports: extractReferencesFromType(this.checker, importMetadata, ref.ownedByModuleGuess, resolutionContext),
|
|
52
|
-
schemas: [],
|
|
53
|
-
rawDeclarations: null,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Read directive (or component) metadata from a referenced class in a .d.ts file.
|
|
58
|
-
*/
|
|
59
|
-
getDirectiveMetadata(ref) {
|
|
60
|
-
const clazz = ref.node;
|
|
61
|
-
const def = this.reflector.getMembersOfClass(clazz).find(field => field.isStatic && (field.name === 'ɵcmp' || field.name === 'ɵdir'));
|
|
62
|
-
if (def === undefined) {
|
|
63
|
-
// No definition could be found.
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
else if (def.type === null || !ts.isTypeReferenceNode(def.type) ||
|
|
67
|
-
def.type.typeArguments === undefined || def.type.typeArguments.length < 2) {
|
|
68
|
-
// The type metadata was the wrong shape.
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
const isComponent = def.name === 'ɵcmp';
|
|
72
|
-
const ctorParams = this.reflector.getConstructorParameters(clazz);
|
|
73
|
-
// A directive is considered to be structural if:
|
|
74
|
-
// 1) it's a directive, not a component, and
|
|
75
|
-
// 2) it injects `TemplateRef`
|
|
76
|
-
const isStructural = !isComponent && ctorParams !== null && ctorParams.some(param => {
|
|
77
|
-
return param.typeValueReference.kind === 1 /* IMPORTED */ &&
|
|
78
|
-
param.typeValueReference.moduleName === '@angular/core' &&
|
|
79
|
-
param.typeValueReference.importedName === 'TemplateRef';
|
|
80
|
-
});
|
|
81
|
-
const inputs = ClassPropertyMapping.fromMappedObject(readStringMapType(def.type.typeArguments[3]));
|
|
82
|
-
const outputs = ClassPropertyMapping.fromMappedObject(readStringMapType(def.type.typeArguments[4]));
|
|
83
|
-
return Object.assign(Object.assign({ type: MetaType.Directive, ref, name: clazz.name.text, isComponent, selector: readStringType(def.type.typeArguments[1]), exportAs: readStringArrayType(def.type.typeArguments[2]), inputs,
|
|
84
|
-
outputs, queries: readStringArrayType(def.type.typeArguments[5]) }, extractDirectiveTypeCheckMeta(clazz, inputs, this.reflector)), { baseClass: readBaseClass(clazz, this.checker, this.reflector), isPoisoned: false, isStructural });
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Read pipe metadata from a referenced class in a .d.ts file.
|
|
88
|
-
*/
|
|
89
|
-
getPipeMetadata(ref) {
|
|
90
|
-
const def = this.reflector.getMembersOfClass(ref.node).find(field => field.isStatic && field.name === 'ɵpipe');
|
|
91
|
-
if (def === undefined) {
|
|
92
|
-
// No definition could be found.
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
else if (def.type === null || !ts.isTypeReferenceNode(def.type) ||
|
|
96
|
-
def.type.typeArguments === undefined || def.type.typeArguments.length < 2) {
|
|
97
|
-
// The type metadata was the wrong shape.
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
100
|
-
const type = def.type.typeArguments[1];
|
|
101
|
-
if (!ts.isLiteralTypeNode(type) || !ts.isStringLiteral(type.literal)) {
|
|
102
|
-
// The type metadata was the wrong type.
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
const name = type.literal.text;
|
|
106
|
-
return {
|
|
107
|
-
type: MetaType.Pipe,
|
|
108
|
-
ref,
|
|
109
|
-
name,
|
|
110
|
-
nameExpr: null,
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function readBaseClass(clazz, checker, reflector) {
|
|
115
|
-
if (!isNamedClassDeclaration(clazz)) {
|
|
116
|
-
// Technically this is an error in a .d.ts file, but for the purposes of finding the base class
|
|
117
|
-
// it's ignored.
|
|
118
|
-
return reflector.hasBaseClass(clazz) ? 'dynamic' : null;
|
|
119
|
-
}
|
|
120
|
-
if (clazz.heritageClauses !== undefined) {
|
|
121
|
-
for (const clause of clazz.heritageClauses) {
|
|
122
|
-
if (clause.token === ts.SyntaxKind.ExtendsKeyword) {
|
|
123
|
-
const baseExpr = clause.types[0].expression;
|
|
124
|
-
let symbol = checker.getSymbolAtLocation(baseExpr);
|
|
125
|
-
if (symbol === undefined) {
|
|
126
|
-
return 'dynamic';
|
|
127
|
-
}
|
|
128
|
-
else if (symbol.flags & ts.SymbolFlags.Alias) {
|
|
129
|
-
symbol = checker.getAliasedSymbol(symbol);
|
|
130
|
-
}
|
|
131
|
-
if (symbol.valueDeclaration !== undefined &&
|
|
132
|
-
isNamedClassDeclaration(symbol.valueDeclaration)) {
|
|
133
|
-
return new Reference(symbol.valueDeclaration);
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
return 'dynamic';
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9tZXRhZGF0YS9zcmMvZHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFtQix1QkFBdUIsRUFBeUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVuSCxPQUFPLEVBQWdDLFFBQVEsRUFBeUIsTUFBTSxPQUFPLENBQUM7QUFDdEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFDLDZCQUE2QixFQUFFLHlCQUF5QixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUV4STs7O0dBR0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW9CLE9BQXVCLEVBQVUsU0FBeUI7UUFBMUQsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFnQjtJQUFHLENBQUM7SUFFbEY7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBQyxHQUFnQztRQUNsRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUN6RCx3RkFBd0Y7UUFDeEYsOERBQThEO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM1RCxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNO1FBQ0gsOERBQThEO1FBQzlELFdBQVcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDdEUsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUztZQUM1QyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxpREFBaUQ7UUFDakQsTUFBTSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDaEcsT0FBTztZQUNMLEdBQUc7WUFDSCxZQUFZLEVBQUUseUJBQXlCLENBQ25DLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDO1lBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsQ0FDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDO1lBQzVFLE9BQU8sRUFBRSx5QkFBeUIsQ0FDOUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDO1lBQzVFLE9BQU8sRUFBRSxFQUFFO1lBQ1gsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLEdBQWdDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3BELEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDckIsZ0NBQWdDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUNILEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDdEQsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0UseUNBQXlDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztRQUV4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxFLGlEQUFpRDtRQUNqRCw0Q0FBNEM7UUFDNUMsOEJBQThCO1FBQzlCLE1BQU0sWUFBWSxHQUFHLENBQUMsV0FBVyxJQUFJLFVBQVUsS0FBSyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRixPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLHFCQUFvQztnQkFDcEUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsS0FBSyxlQUFlO2dCQUN2RCxLQUFLLENBQUMsa0JBQWtCLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUNSLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RixNQUFNLE9BQU8sR0FDVCxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEYscUNBQ0UsSUFBSSxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQ3hCLEdBQUcsRUFDSCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQ3JCLFdBQVcsRUFDWCxRQUFRLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25ELFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN4RCxNQUFNO1lBQ04sT0FBTyxFQUNQLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUNwRCw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FDL0QsU0FBUyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQzdELFVBQVUsRUFBRSxLQUFLLEVBQ2pCLFlBQVksSUFDWjtJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxHQUFnQztRQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUNyQixnQ0FBZ0M7WUFDaEMsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQ0gsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3RSx5Q0FBeUM7WUFDekMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwRSx3Q0FBd0M7WUFDeEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQy9CLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7WUFDbkIsR0FBRztZQUNILElBQUk7WUFDSixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUF1QixFQUFFLE9BQXVCLEVBQUUsU0FBeUI7SUFFaEcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25DLCtGQUErRjtRQUMvRixnQkFBZ0I7UUFDaEIsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztLQUN6RDtJQUVELElBQUksS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUU7UUFDdkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQzFDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTtnQkFDakQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQzVDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO29CQUN4QixPQUFPLFNBQVMsQ0FBQztpQkFDbEI7cUJBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO29CQUM5QyxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO29CQUNyQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtvQkFDcEQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDL0M7cUJBQU07b0JBQ0wsT0FBTyxTQUFTLENBQUM7aUJBQ2xCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIGlzTmFtZWRDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdCwgVHlwZVZhbHVlUmVmZXJlbmNlS2luZH0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7RGlyZWN0aXZlTWV0YSwgTWV0YWRhdGFSZWFkZXIsIE1ldGFUeXBlLCBOZ01vZHVsZU1ldGEsIFBpcGVNZXRhfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge0NsYXNzUHJvcGVydHlNYXBwaW5nfSBmcm9tICcuL3Byb3BlcnR5X21hcHBpbmcnO1xuaW1wb3J0IHtleHRyYWN0RGlyZWN0aXZlVHlwZUNoZWNrTWV0YSwgZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZSwgcmVhZFN0cmluZ0FycmF5VHlwZSwgcmVhZFN0cmluZ01hcFR5cGUsIHJlYWRTdHJpbmdUeXBlfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEEgYE1ldGFkYXRhUmVhZGVyYCB0aGF0IGNhbiByZWFkIG1ldGFkYXRhIGZyb20gYC5kLnRzYCBmaWxlcywgd2hpY2ggaGF2ZSBzdGF0aWMgSXZ5IHByb3BlcnRpZXNcbiAqIGZyb20gYW4gdXBzdHJlYW0gY29tcGlsYXRpb24gYWxyZWFkeS5cbiAqL1xuZXhwb3J0IGNsYXNzIER0c01ldGFkYXRhUmVhZGVyIGltcGxlbWVudHMgTWV0YWRhdGFSZWFkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCBwcml2YXRlIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIFJlYWQgdGhlIG1ldGFkYXRhIGZyb20gYSBjbGFzcyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY29tcGlsZWQgc29tZWhvdyAoZWl0aGVyIGl0J3MgaW4gYSAuZC50c1xuICAgKiBmaWxlLCBvciBpbiBhIC50cyBmaWxlIHdpdGggYSBoYW5kd3JpdHRlbiBkZWZpbml0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIHJlZiBgUmVmZXJlbmNlYCB0byB0aGUgY2xhc3Mgb2YgaW50ZXJlc3QsIHdpdGggdGhlIGNvbnRleHQgb2YgaG93IGl0IHdhcyBvYnRhaW5lZC5cbiAgICovXG4gIGdldE5nTW9kdWxlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBOZ01vZHVsZU1ldGF8bnVsbCB7XG4gICAgY29uc3QgY2xhenogPSByZWYubm9kZTtcbiAgICBjb25zdCByZXNvbHV0aW9uQ29udGV4dCA9IGNsYXp6LmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcbiAgICAvLyBUaGlzIG9wZXJhdGlvbiBpcyBleHBsaWNpdGx5IG5vdCBtZW1vaXplZCwgYXMgaXQgZGVwZW5kcyBvbiBgcmVmLm93bmVkQnlNb2R1bGVHdWVzc2AuXG4gICAgLy8gVE9ETyhhbHhodWIpOiBpbnZlc3RpZ2F0ZSBjYWNoaW5nIG9mIC5kLnRzIG1vZHVsZSBtZXRhZGF0YS5cbiAgICBjb25zdCBuZ01vZHVsZURlZiA9IHRoaXMucmVmbGVjdG9yLmdldE1lbWJlcnNPZkNsYXNzKGNsYXp6KS5maW5kKFxuICAgICAgICBtZW1iZXIgPT4gbWVtYmVyLm5hbWUgPT09ICfJtW1vZCcgJiYgbWVtYmVyLmlzU3RhdGljKTtcbiAgICBpZiAobmdNb2R1bGVEZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc2hhcGUgb2YgdGhlIG5nTW9kdWxlRGVmIHR5cGUgaXMgY29ycmVjdC5cbiAgICAgICAgbmdNb2R1bGVEZWYudHlwZSA9PT0gbnVsbCB8fCAhdHMuaXNUeXBlUmVmZXJlbmNlTm9kZShuZ01vZHVsZURlZi50eXBlKSB8fFxuICAgICAgICBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZWFkIHRoZSBNb2R1bGVEYXRhIG91dCBvZiB0aGUgdHlwZSBhcmd1bWVudHMuXG4gICAgY29uc3QgW18sIGRlY2xhcmF0aW9uTWV0YWRhdGEsIGltcG9ydE1ldGFkYXRhLCBleHBvcnRNZXRhZGF0YV0gPSBuZ01vZHVsZURlZi50eXBlLnR5cGVBcmd1bWVudHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZixcbiAgICAgIGRlY2xhcmF0aW9uczogZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZShcbiAgICAgICAgICB0aGlzLmNoZWNrZXIsIGRlY2xhcmF0aW9uTWV0YWRhdGEsIHJlZi5vd25lZEJ5TW9kdWxlR3Vlc3MsIHJlc29sdXRpb25Db250ZXh0KSxcbiAgICAgIGV4cG9ydHM6IGV4dHJhY3RSZWZlcmVuY2VzRnJvbVR5cGUoXG4gICAgICAgICAgdGhpcy5jaGVja2VyLCBleHBvcnRNZXRhZGF0YSwgcmVmLm93bmVkQnlNb2R1bGVHdWVzcywgcmVzb2x1dGlvbkNvbnRleHQpLFxuICAgICAgaW1wb3J0czogZXh0cmFjdFJlZmVyZW5jZXNGcm9tVHlwZShcbiAgICAgICAgICB0aGlzLmNoZWNrZXIsIGltcG9ydE1ldGFkYXRhLCByZWYub3duZWRCeU1vZHVsZUd1ZXNzLCByZXNvbHV0aW9uQ29udGV4dCksXG4gICAgICBzY2hlbWFzOiBbXSxcbiAgICAgIHJhd0RlY2xhcmF0aW9uczogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgZGlyZWN0aXZlIChvciBjb21wb25lbnQpIG1ldGFkYXRhIGZyb20gYSByZWZlcmVuY2VkIGNsYXNzIGluIGEgLmQudHMgZmlsZS5cbiAgICovXG4gIGdldERpcmVjdGl2ZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogRGlyZWN0aXZlTWV0YXxudWxsIHtcbiAgICBjb25zdCBjbGF6eiA9IHJlZi5ub2RlO1xuICAgIGNvbnN0IGRlZiA9IHRoaXMucmVmbGVjdG9yLmdldE1lbWJlcnNPZkNsYXNzKGNsYXp6KS5maW5kKFxuICAgICAgICBmaWVsZCA9PiBmaWVsZC5pc1N0YXRpYyAmJiAoZmllbGQubmFtZSA9PT0gJ8m1Y21wJyB8fCBmaWVsZC5uYW1lID09PSAnybVkaXInKSk7XG4gICAgaWYgKGRlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBObyBkZWZpbml0aW9uIGNvdWxkIGJlIGZvdW5kLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICAgZGVmLnR5cGUgPT09IG51bGwgfHwgIXRzLmlzVHlwZVJlZmVyZW5jZU5vZGUoZGVmLnR5cGUpIHx8XG4gICAgICAgIGRlZi50eXBlLnR5cGVBcmd1bWVudHMgPT09IHVuZGVmaW5lZCB8fCBkZWYudHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIC8vIFRoZSB0eXBlIG1ldGFkYXRhIHdhcyB0aGUgd3Jvbmcgc2hhcGUuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpc0NvbXBvbmVudCA9IGRlZi5uYW1lID09PSAnybVjbXAnO1xuXG4gICAgY29uc3QgY3RvclBhcmFtcyA9IHRoaXMucmVmbGVjdG9yLmdldENvbnN0cnVjdG9yUGFyYW1ldGVycyhjbGF6eik7XG5cbiAgICAvLyBBIGRpcmVjdGl2ZSBpcyBjb25zaWRlcmVkIHRvIGJlIHN0cnVjdHVyYWwgaWY6XG4gICAgLy8gMSkgaXQncyBhIGRpcmVjdGl2ZSwgbm90IGEgY29tcG9uZW50LCBhbmRcbiAgICAvLyAyKSBpdCBpbmplY3RzIGBUZW1wbGF0ZVJlZmBcbiAgICBjb25zdCBpc1N0cnVjdHVyYWwgPSAhaXNDb21wb25lbnQgJiYgY3RvclBhcmFtcyAhPT0gbnVsbCAmJiBjdG9yUGFyYW1zLnNvbWUocGFyYW0gPT4ge1xuICAgICAgcmV0dXJuIHBhcmFtLnR5cGVWYWx1ZVJlZmVyZW5jZS5raW5kID09PSBUeXBlVmFsdWVSZWZlcmVuY2VLaW5kLklNUE9SVEVEICYmXG4gICAgICAgICAgcGFyYW0udHlwZVZhbHVlUmVmZXJlbmNlLm1vZHVsZU5hbWUgPT09ICdAYW5ndWxhci9jb3JlJyAmJlxuICAgICAgICAgIHBhcmFtLnR5cGVWYWx1ZVJlZmVyZW5jZS5pbXBvcnRlZE5hbWUgPT09ICdUZW1wbGF0ZVJlZic7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnB1dHMgPVxuICAgICAgICBDbGFzc1Byb3BlcnR5TWFwcGluZy5mcm9tTWFwcGVkT2JqZWN0KHJlYWRTdHJpbmdNYXBUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbM10pKTtcbiAgICBjb25zdCBvdXRwdXRzID1cbiAgICAgICAgQ2xhc3NQcm9wZXJ0eU1hcHBpbmcuZnJvbU1hcHBlZE9iamVjdChyZWFkU3RyaW5nTWFwVHlwZShkZWYudHlwZS50eXBlQXJndW1lbnRzWzRdKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IE1ldGFUeXBlLkRpcmVjdGl2ZSxcbiAgICAgIHJlZixcbiAgICAgIG5hbWU6IGNsYXp6Lm5hbWUudGV4dCxcbiAgICAgIGlzQ29tcG9uZW50LFxuICAgICAgc2VsZWN0b3I6IHJlYWRTdHJpbmdUeXBlKGRlZi50eXBlLnR5cGVBcmd1bWVudHNbMV0pLFxuICAgICAgZXhwb3J0QXM6IHJlYWRTdHJpbmdBcnJheVR5cGUoZGVmLnR5cGUudHlwZUFyZ3VtZW50c1syXSksXG4gICAgICBpbnB1dHMsXG4gICAgICBvdXRwdXRzLFxuICAgICAgcXVlcmllczogcmVhZFN0cmluZ0FycmF5VHlwZShkZWYudHlwZS50eXBlQXJndW1lbnRzWzVdKSxcbiAgICAgIC4uLmV4dHJhY3REaXJlY3RpdmVUeXBlQ2hlY2tNZXRhKGNsYXp6LCBpbnB1dHMsIHRoaXMucmVmbGVjdG9yKSxcbiAgICAgIGJhc2VDbGFzczogcmVhZEJhc2VDbGFzcyhjbGF6eiwgdGhpcy5jaGVja2VyLCB0aGlzLnJlZmxlY3RvciksXG4gICAgICBpc1BvaXNvbmVkOiBmYWxzZSxcbiAgICAgIGlzU3RydWN0dXJhbCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgcGlwZSBtZXRhZGF0YSBmcm9tIGEgcmVmZXJlbmNlZCBjbGFzcyBpbiBhIC5kLnRzIGZpbGUuXG4gICAqL1xuICBnZXRQaXBlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBQaXBlTWV0YXxudWxsIHtcbiAgICBjb25zdCBkZWYgPSB0aGlzLnJlZmxlY3Rvci5nZXRNZW1iZXJzT2ZDbGFzcyhyZWYubm9kZSkuZmluZChcbiAgICAgICAgZmllbGQgPT4gZmllbGQuaXNTdGF0aWMgJiYgZmllbGQubmFtZSA9PT0gJ8m1cGlwZScpO1xuICAgIGlmIChkZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm8gZGVmaW5pdGlvbiBjb3VsZCBiZSBmb3VuZC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRlZi50eXBlID09PSBudWxsIHx8ICF0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKGRlZi50eXBlKSB8fFxuICAgICAgICBkZWYudHlwZS50eXBlQXJndW1lbnRzID09PSB1bmRlZmluZWQgfHwgZGVmLnR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAvLyBUaGUgdHlwZSBtZXRhZGF0YSB3YXMgdGhlIHdyb25nIHNoYXBlLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSBkZWYudHlwZS50eXBlQXJndW1lbnRzWzFdO1xuICAgIGlmICghdHMuaXNMaXRlcmFsVHlwZU5vZGUodHlwZSkgfHwgIXRzLmlzU3RyaW5nTGl0ZXJhbCh0eXBlLmxpdGVyYWwpKSB7XG4gICAgICAvLyBUaGUgdHlwZSBtZXRhZGF0YSB3YXMgdGhlIHdyb25nIHR5cGUuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHR5cGUubGl0ZXJhbC50ZXh0O1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBNZXRhVHlwZS5QaXBlLFxuICAgICAgcmVmLFxuICAgICAgbmFtZSxcbiAgICAgIG5hbWVFeHByOiBudWxsLFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZEJhc2VDbGFzcyhjbGF6ejogQ2xhc3NEZWNsYXJhdGlvbiwgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpOlxuICAgIFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPnwnZHluYW1pYyd8bnVsbCB7XG4gIGlmICghaXNOYW1lZENsYXNzRGVjbGFyYXRpb24oY2xhenopKSB7XG4gICAgLy8gVGVjaG5pY2FsbHkgdGhpcyBpcyBhbiBlcnJvciBpbiBhIC5kLnRzIGZpbGUsIGJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGZpbmRpbmcgdGhlIGJhc2UgY2xhc3NcbiAgICAvLyBpdCdzIGlnbm9yZWQuXG4gICAgcmV0dXJuIHJlZmxlY3Rvci5oYXNCYXNlQ2xhc3MoY2xhenopID8gJ2R5bmFtaWMnIDogbnVsbDtcbiAgfVxuXG4gIGlmIChjbGF6ei5oZXJpdGFnZUNsYXVzZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgY2xhdXNlIG9mIGNsYXp6Lmhlcml0YWdlQ2xhdXNlcykge1xuICAgICAgaWYgKGNsYXVzZS50b2tlbiA9PT0gdHMuU3ludGF4S2luZC5FeHRlbmRzS2V5d29yZCkge1xuICAgICAgICBjb25zdCBiYXNlRXhwciA9IGNsYXVzZS50eXBlc1swXS5leHByZXNzaW9uO1xuICAgICAgICBsZXQgc3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKGJhc2VFeHByKTtcbiAgICAgICAgaWYgKHN5bWJvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuICdkeW5hbWljJztcbiAgICAgICAgfSBlbHNlIGlmIChzeW1ib2wuZmxhZ3MgJiB0cy5TeW1ib2xGbGFncy5BbGlhcykge1xuICAgICAgICAgIHN5bWJvbCA9IGNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbChzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBpc05hbWVkQ2xhc3NEZWNsYXJhdGlvbihzeW1ib2wudmFsdWVEZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlZmVyZW5jZShzeW1ib2wudmFsdWVEZWNsYXJhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICdkeW5hbWljJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
|
|
@@ -1,71 +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
|
-
import { ClassPropertyMapping } from './property_mapping';
|
|
9
|
-
/**
|
|
10
|
-
* Given a reference to a directive, return a flattened version of its `DirectiveMeta` metadata
|
|
11
|
-
* which includes metadata from its entire inheritance chain.
|
|
12
|
-
*
|
|
13
|
-
* The returned `DirectiveMeta` will either have `baseClass: null` if the inheritance chain could be
|
|
14
|
-
* fully resolved, or `baseClass: 'dynamic'` if the inheritance chain could not be completely
|
|
15
|
-
* followed.
|
|
16
|
-
*/
|
|
17
|
-
export function flattenInheritedDirectiveMetadata(reader, dir) {
|
|
18
|
-
const topMeta = reader.getDirectiveMetadata(dir);
|
|
19
|
-
if (topMeta === null) {
|
|
20
|
-
throw new Error(`Metadata not found for directive: ${dir.debugName}`);
|
|
21
|
-
}
|
|
22
|
-
if (topMeta.baseClass === null) {
|
|
23
|
-
return topMeta;
|
|
24
|
-
}
|
|
25
|
-
const coercedInputFields = new Set();
|
|
26
|
-
const undeclaredInputFields = new Set();
|
|
27
|
-
const restrictedInputFields = new Set();
|
|
28
|
-
const stringLiteralInputFields = new Set();
|
|
29
|
-
let isDynamic = false;
|
|
30
|
-
let inputs = ClassPropertyMapping.empty();
|
|
31
|
-
let outputs = ClassPropertyMapping.empty();
|
|
32
|
-
let isStructural = false;
|
|
33
|
-
const addMetadata = (meta) => {
|
|
34
|
-
if (meta.baseClass === 'dynamic') {
|
|
35
|
-
isDynamic = true;
|
|
36
|
-
}
|
|
37
|
-
else if (meta.baseClass !== null) {
|
|
38
|
-
const baseMeta = reader.getDirectiveMetadata(meta.baseClass);
|
|
39
|
-
if (baseMeta !== null) {
|
|
40
|
-
addMetadata(baseMeta);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
// Missing metadata for the base class means it's effectively dynamic.
|
|
44
|
-
isDynamic = true;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
isStructural = isStructural || meta.isStructural;
|
|
48
|
-
inputs = ClassPropertyMapping.merge(inputs, meta.inputs);
|
|
49
|
-
outputs = ClassPropertyMapping.merge(outputs, meta.outputs);
|
|
50
|
-
for (const coercedInputField of meta.coercedInputFields) {
|
|
51
|
-
coercedInputFields.add(coercedInputField);
|
|
52
|
-
}
|
|
53
|
-
for (const undeclaredInputField of meta.undeclaredInputFields) {
|
|
54
|
-
undeclaredInputFields.add(undeclaredInputField);
|
|
55
|
-
}
|
|
56
|
-
for (const restrictedInputField of meta.restrictedInputFields) {
|
|
57
|
-
restrictedInputFields.add(restrictedInputField);
|
|
58
|
-
}
|
|
59
|
-
for (const field of meta.stringLiteralInputFields) {
|
|
60
|
-
stringLiteralInputFields.add(field);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
addMetadata(topMeta);
|
|
64
|
-
return Object.assign(Object.assign({}, topMeta), { inputs,
|
|
65
|
-
outputs,
|
|
66
|
-
coercedInputFields,
|
|
67
|
-
undeclaredInputFields,
|
|
68
|
-
restrictedInputFields,
|
|
69
|
-
stringLiteralInputFields, baseClass: isDynamic ? 'dynamic' : null, isStructural });
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5oZXJpdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL21ldGFkYXRhL3NyYy9pbmhlcml0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFNSCxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLE1BQU0sb0JBQW9CLENBQUM7QUFFM0U7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FDN0MsTUFBc0IsRUFBRSxHQUFnQztJQUMxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtRQUM5QixPQUFPLE9BQU8sQ0FBQztLQUNoQjtJQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFDeEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUMzRCxNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO0lBQzNELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7SUFDOUQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLElBQUksTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLElBQUksT0FBTyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLElBQUksWUFBWSxHQUFZLEtBQUssQ0FBQztJQUVsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQW1CLEVBQVEsRUFBRTtRQUNoRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQ2hDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDbEI7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUNyQixXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsc0VBQXNFO2dCQUN0RSxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ2xCO1NBQ0Y7UUFFRCxZQUFZLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFakQsTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RCxLQUFLLE1BQU0saUJBQWlCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsS0FBSyxNQUFNLG9CQUFvQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM3RCxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNqRDtRQUNELEtBQUssTUFBTSxvQkFBb0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDN0QscUJBQXFCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDakQ7UUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqRCx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDLENBQUM7SUFFRixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFckIsdUNBQ0ssT0FBTyxLQUNWLE1BQU07UUFDTixPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUN2QyxZQUFZLElBQ1o7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UmVmZXJlbmNlfSBmcm9tICcuLi8uLi9pbXBvcnRzJztcbmltcG9ydCB7Q2xhc3NEZWNsYXJhdGlvbn0gZnJvbSAnLi4vLi4vcmVmbGVjdGlvbic7XG5cbmltcG9ydCB7RGlyZWN0aXZlTWV0YSwgTWV0YWRhdGFSZWFkZXJ9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7Q2xhc3NQcm9wZXJ0eU1hcHBpbmcsIENsYXNzUHJvcGVydHlOYW1lfSBmcm9tICcuL3Byb3BlcnR5X21hcHBpbmcnO1xuXG4vKipcbiAqIEdpdmVuIGEgcmVmZXJlbmNlIHRvIGEgZGlyZWN0aXZlLCByZXR1cm4gYSBmbGF0dGVuZWQgdmVyc2lvbiBvZiBpdHMgYERpcmVjdGl2ZU1ldGFgIG1ldGFkYXRhXG4gKiB3aGljaCBpbmNsdWRlcyBtZXRhZGF0YSBmcm9tIGl0cyBlbnRpcmUgaW5oZXJpdGFuY2UgY2hhaW4uXG4gKlxuICogVGhlIHJldHVybmVkIGBEaXJlY3RpdmVNZXRhYCB3aWxsIGVpdGhlciBoYXZlIGBiYXNlQ2xhc3M6IG51bGxgIGlmIHRoZSBpbmhlcml0YW5jZSBjaGFpbiBjb3VsZCBiZVxuICogZnVsbHkgcmVzb2x2ZWQsIG9yIGBiYXNlQ2xhc3M6ICdkeW5hbWljJ2AgaWYgdGhlIGluaGVyaXRhbmNlIGNoYWluIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWx5XG4gKiBmb2xsb3dlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5Jbmhlcml0ZWREaXJlY3RpdmVNZXRhZGF0YShcbiAgICByZWFkZXI6IE1ldGFkYXRhUmVhZGVyLCBkaXI6IFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPik6IERpcmVjdGl2ZU1ldGEge1xuICBjb25zdCB0b3BNZXRhID0gcmVhZGVyLmdldERpcmVjdGl2ZU1ldGFkYXRhKGRpcik7XG4gIGlmICh0b3BNZXRhID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNZXRhZGF0YSBub3QgZm91bmQgZm9yIGRpcmVjdGl2ZTogJHtkaXIuZGVidWdOYW1lfWApO1xuICB9XG4gIGlmICh0b3BNZXRhLmJhc2VDbGFzcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0b3BNZXRhO1xuICB9XG5cbiAgY29uc3QgY29lcmNlZElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgY29uc3QgdW5kZWNsYXJlZElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgY29uc3QgcmVzdHJpY3RlZElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgY29uc3Qgc3RyaW5nTGl0ZXJhbElucHV0RmllbGRzID0gbmV3IFNldDxDbGFzc1Byb3BlcnR5TmFtZT4oKTtcbiAgbGV0IGlzRHluYW1pYyA9IGZhbHNlO1xuICBsZXQgaW5wdXRzID0gQ2xhc3NQcm9wZXJ0eU1hcHBpbmcuZW1wdHkoKTtcbiAgbGV0IG91dHB1dHMgPSBDbGFzc1Byb3BlcnR5TWFwcGluZy5lbXB0eSgpO1xuICBsZXQgaXNTdHJ1Y3R1cmFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3QgYWRkTWV0YWRhdGEgPSAobWV0YTogRGlyZWN0aXZlTWV0YSk6IHZvaWQgPT4ge1xuICAgIGlmIChtZXRhLmJhc2VDbGFzcyA9PT0gJ2R5bmFtaWMnKSB7XG4gICAgICBpc0R5bmFtaWMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWV0YS5iYXNlQ2xhc3MgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGJhc2VNZXRhID0gcmVhZGVyLmdldERpcmVjdGl2ZU1ldGFkYXRhKG1ldGEuYmFzZUNsYXNzKTtcbiAgICAgIGlmIChiYXNlTWV0YSAhPT0gbnVsbCkge1xuICAgICAgICBhZGRNZXRhZGF0YShiYXNlTWV0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNaXNzaW5nIG1ldGFkYXRhIGZvciB0aGUgYmFzZSBjbGFzcyBtZWFucyBpdCdzIGVmZmVjdGl2ZWx5IGR5bmFtaWMuXG4gICAgICAgIGlzRHluYW1pYyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXNTdHJ1Y3R1cmFsID0gaXNTdHJ1Y3R1cmFsIHx8IG1ldGEuaXNTdHJ1Y3R1cmFsO1xuXG4gICAgaW5wdXRzID0gQ2xhc3NQcm9wZXJ0eU1hcHBpbmcubWVyZ2UoaW5wdXRzLCBtZXRhLmlucHV0cyk7XG4gICAgb3V0cHV0cyA9IENsYXNzUHJvcGVydHlNYXBwaW5nLm1lcmdlKG91dHB1dHMsIG1ldGEub3V0cHV0cyk7XG5cbiAgICBmb3IgKGNvbnN0IGNvZXJjZWRJbnB1dEZpZWxkIG9mIG1ldGEuY29lcmNlZElucHV0RmllbGRzKSB7XG4gICAgICBjb2VyY2VkSW5wdXRGaWVsZHMuYWRkKGNvZXJjZWRJbnB1dEZpZWxkKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB1bmRlY2xhcmVkSW5wdXRGaWVsZCBvZiBtZXRhLnVuZGVjbGFyZWRJbnB1dEZpZWxkcykge1xuICAgICAgdW5kZWNsYXJlZElucHV0RmllbGRzLmFkZCh1bmRlY2xhcmVkSW5wdXRGaWVsZCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVzdHJpY3RlZElucHV0RmllbGQgb2YgbWV0YS5yZXN0cmljdGVkSW5wdXRGaWVsZHMpIHtcbiAgICAgIHJlc3RyaWN0ZWRJbnB1dEZpZWxkcy5hZGQocmVzdHJpY3RlZElucHV0RmllbGQpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIG1ldGEuc3RyaW5nTGl0ZXJhbElucHV0RmllbGRzKSB7XG4gICAgICBzdHJpbmdMaXRlcmFsSW5wdXRGaWVsZHMuYWRkKGZpZWxkKTtcbiAgICB9XG4gIH07XG5cbiAgYWRkTWV0YWRhdGEodG9wTWV0YSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi50b3BNZXRhLFxuICAgIGlucHV0cyxcbiAgICBvdXRwdXRzLFxuICAgIGNvZXJjZWRJbnB1dEZpZWxkcyxcbiAgICB1bmRlY2xhcmVkSW5wdXRGaWVsZHMsXG4gICAgcmVzdHJpY3RlZElucHV0RmllbGRzLFxuICAgIHN0cmluZ0xpdGVyYWxJbnB1dEZpZWxkcyxcbiAgICBiYXNlQ2xhc3M6IGlzRHluYW1pYyA/ICdkeW5hbWljJyA6IG51bGwsXG4gICAgaXNTdHJ1Y3R1cmFsLFxuICB9O1xufVxuIl19
|
|
@@ -1,136 +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
|
-
/**
|
|
9
|
-
* A mapping of component property and template binding property names, for example containing the
|
|
10
|
-
* inputs of a particular directive or component.
|
|
11
|
-
*
|
|
12
|
-
* A single component property has exactly one input/output annotation (and therefore one binding
|
|
13
|
-
* property name) associated with it, but the same binding property name may be shared across many
|
|
14
|
-
* component property names.
|
|
15
|
-
*
|
|
16
|
-
* Allows bidirectional querying of the mapping - looking up all inputs/outputs with a given
|
|
17
|
-
* property name, or mapping from a specific class property to its binding property name.
|
|
18
|
-
*/
|
|
19
|
-
export class ClassPropertyMapping {
|
|
20
|
-
constructor(forwardMap) {
|
|
21
|
-
this.forwardMap = forwardMap;
|
|
22
|
-
this.reverseMap = reverseMapFromForwardMap(forwardMap);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Construct a `ClassPropertyMapping` with no entries.
|
|
26
|
-
*/
|
|
27
|
-
static empty() {
|
|
28
|
-
return new ClassPropertyMapping(new Map());
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Construct a `ClassPropertyMapping` from a primitive JS object which maps class property names
|
|
32
|
-
* to either binding property names or an array that contains both names, which is used in on-disk
|
|
33
|
-
* metadata formats (e.g. in .d.ts files).
|
|
34
|
-
*/
|
|
35
|
-
static fromMappedObject(obj) {
|
|
36
|
-
const forwardMap = new Map();
|
|
37
|
-
for (const classPropertyName of Object.keys(obj)) {
|
|
38
|
-
const value = obj[classPropertyName];
|
|
39
|
-
const bindingPropertyName = Array.isArray(value) ? value[0] : value;
|
|
40
|
-
const inputOrOutput = { classPropertyName, bindingPropertyName };
|
|
41
|
-
forwardMap.set(classPropertyName, inputOrOutput);
|
|
42
|
-
}
|
|
43
|
-
return new ClassPropertyMapping(forwardMap);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Merge two mappings into one, with class properties from `b` taking precedence over class
|
|
47
|
-
* properties from `a`.
|
|
48
|
-
*/
|
|
49
|
-
static merge(a, b) {
|
|
50
|
-
const forwardMap = new Map(a.forwardMap.entries());
|
|
51
|
-
for (const [classPropertyName, inputOrOutput] of b.forwardMap) {
|
|
52
|
-
forwardMap.set(classPropertyName, inputOrOutput);
|
|
53
|
-
}
|
|
54
|
-
return new ClassPropertyMapping(forwardMap);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* All class property names mapped in this mapping.
|
|
58
|
-
*/
|
|
59
|
-
get classPropertyNames() {
|
|
60
|
-
return Array.from(this.forwardMap.keys());
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* All binding property names mapped in this mapping.
|
|
64
|
-
*/
|
|
65
|
-
get propertyNames() {
|
|
66
|
-
return Array.from(this.reverseMap.keys());
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Check whether a mapping for the given property name exists.
|
|
70
|
-
*/
|
|
71
|
-
hasBindingPropertyName(propertyName) {
|
|
72
|
-
return this.reverseMap.has(propertyName);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Lookup all `InputOrOutput`s that use this `propertyName`.
|
|
76
|
-
*/
|
|
77
|
-
getByBindingPropertyName(propertyName) {
|
|
78
|
-
return this.reverseMap.has(propertyName) ? this.reverseMap.get(propertyName) : null;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Lookup the `InputOrOutput` associated with a `classPropertyName`.
|
|
82
|
-
*/
|
|
83
|
-
getByClassPropertyName(classPropertyName) {
|
|
84
|
-
return this.forwardMap.has(classPropertyName) ? this.forwardMap.get(classPropertyName) : null;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Convert this mapping to a primitive JS object which maps each class property directly to the
|
|
88
|
-
* binding property name associated with it.
|
|
89
|
-
*/
|
|
90
|
-
toDirectMappedObject() {
|
|
91
|
-
const obj = {};
|
|
92
|
-
for (const [classPropertyName, inputOrOutput] of this.forwardMap) {
|
|
93
|
-
obj[classPropertyName] = inputOrOutput.bindingPropertyName;
|
|
94
|
-
}
|
|
95
|
-
return obj;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Convert this mapping to a primitive JS object which maps each class property either to itself
|
|
99
|
-
* (for cases where the binding property name is the same) or to an array which contains both
|
|
100
|
-
* names if they differ.
|
|
101
|
-
*
|
|
102
|
-
* This object format is used when mappings are serialized (for example into .d.ts files).
|
|
103
|
-
*/
|
|
104
|
-
toJointMappedObject() {
|
|
105
|
-
const obj = {};
|
|
106
|
-
for (const [classPropertyName, inputOrOutput] of this.forwardMap) {
|
|
107
|
-
if (inputOrOutput.bindingPropertyName === classPropertyName) {
|
|
108
|
-
obj[classPropertyName] = inputOrOutput.bindingPropertyName;
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
obj[classPropertyName] = [inputOrOutput.bindingPropertyName, classPropertyName];
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return obj;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Implement the iterator protocol and return entry objects which contain the class and binding
|
|
118
|
-
* property names (and are useful for destructuring).
|
|
119
|
-
*/
|
|
120
|
-
*[Symbol.iterator]() {
|
|
121
|
-
for (const [classPropertyName, inputOrOutput] of this.forwardMap.entries()) {
|
|
122
|
-
yield [classPropertyName, inputOrOutput.bindingPropertyName];
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
function reverseMapFromForwardMap(forwardMap) {
|
|
127
|
-
const reverseMap = new Map();
|
|
128
|
-
for (const [_, inputOrOutput] of forwardMap) {
|
|
129
|
-
if (!reverseMap.has(inputOrOutput.bindingPropertyName)) {
|
|
130
|
-
reverseMap.set(inputOrOutput.bindingPropertyName, []);
|
|
131
|
-
}
|
|
132
|
-
reverseMap.get(inputOrOutput.bindingPropertyName).push(inputOrOutput);
|
|
133
|
-
}
|
|
134
|
-
return reverseMap;
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlfbWFwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvbWV0YWRhdGEvc3JjL3Byb3BlcnR5X21hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBbUNIOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBVy9CLFlBQW9CLFVBQWlEO1FBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUs7UUFDVixPQUFPLElBQUksb0JBQW9CLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBRXZCO1FBQ0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQW9DLENBQUM7UUFFL0QsS0FBSyxNQUFNLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDckMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNwRSxNQUFNLGFBQWEsR0FBa0IsRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBQyxDQUFDO1lBQzlFLFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxPQUFPLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBdUIsRUFBRSxDQUF1QjtRQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBbUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLEtBQUssTUFBTSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUU7WUFDN0QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNsRDtRQUVELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsWUFBaUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0IsQ0FBQyxZQUFvQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNILHNCQUFzQixDQUFDLGlCQUF5QjtRQUM5QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2xCLE1BQU0sR0FBRyxHQUF1RCxFQUFFLENBQUM7UUFDbkUsS0FBSyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNoRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxhQUFhLENBQUMsbUJBQW1CLENBQUM7U0FDNUQ7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxtQkFBbUI7UUFFakIsTUFBTSxHQUFHLEdBRUwsRUFBRSxDQUFDO1FBQ1AsS0FBSyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNoRSxJQUFJLGFBQWEsQ0FBQyxtQkFBNkIsS0FBSyxpQkFBMkIsRUFBRTtnQkFDL0UsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDO2FBQzVEO2lCQUFNO2dCQUNMLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLENBQUM7YUFDakY7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILENBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2pCLEtBQUssTUFBTSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDMUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzlEO0lBQ0gsQ0FBQztDQUNGO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxVQUFpRDtJQUVqRixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBd0MsQ0FBQztJQUNuRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLElBQUksVUFBVSxFQUFFO1FBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RELFVBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDeEU7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5wdXRPdXRwdXRQcm9wZXJ0eVNldH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIGEgY2xhc3MgcHJvcGVydHkgdGhhdCBiYWNrcyBhbiBpbnB1dCBvciBvdXRwdXQgZGVjbGFyZWQgYnkgYSBkaXJlY3RpdmUgb3IgY29tcG9uZW50LlxuICpcbiAqIFRoaXMgdHlwZSBleGlzdHMgZm9yIGRvY3VtZW50YXRpb24gb25seS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2xhc3NQcm9wZXJ0eU5hbWUgPSBzdHJpbmc7XG5cbi8qKlxuICogVGhlIG5hbWUgYnkgd2hpY2ggYW4gaW5wdXQgb3Igb3V0cHV0IG9mIGEgZGlyZWN0aXZlIG9yIGNvbXBvbmVudCBpcyBib3VuZCBpbiBhbiBBbmd1bGFyIHRlbXBsYXRlLlxuICpcbiAqIFRoaXMgdHlwZSBleGlzdHMgZm9yIGRvY3VtZW50YXRpb24gb25seS5cbiAqL1xuZXhwb3J0IHR5cGUgQmluZGluZ1Byb3BlcnR5TmFtZSA9IHN0cmluZztcblxuLyoqXG4gKiBBbiBpbnB1dCBvciBvdXRwdXQgb2YgYSBkaXJlY3RpdmUgdGhhdCBoYXMgYm90aCBhIG5hbWVkIEphdmFTY3JpcHQgY2xhc3MgcHJvcGVydHkgb24gYSBjb21wb25lbnRcbiAqIG9yIGRpcmVjdGl2ZSBjbGFzcywgYXMgd2VsbCBhcyBhbiBBbmd1bGFyIHRlbXBsYXRlIHByb3BlcnR5IG5hbWUgdXNlZCBmb3IgYmluZGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9yT3V0cHV0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBKYXZhU2NyaXB0IHByb3BlcnR5IG9uIHRoZSBjb21wb25lbnQgb3IgZGlyZWN0aXZlIGluc3RhbmNlIGZvciB0aGlzIGlucHV0IG9yXG4gICAqIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzUHJvcGVydHlOYW1lOiBDbGFzc1Byb3BlcnR5TmFtZTtcblxuICAvKipcbiAgICogVGhlIHByb3BlcnR5IG5hbWUgdXNlZCB0byBiaW5kIHRoaXMgaW5wdXQgb3Igb3V0cHV0IGluIGFuIEFuZ3VsYXIgdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBiaW5kaW5nUHJvcGVydHlOYW1lOiBCaW5kaW5nUHJvcGVydHlOYW1lO1xufVxuXG4vKipcbiAqIEEgbWFwcGluZyBvZiBjb21wb25lbnQgcHJvcGVydHkgYW5kIHRlbXBsYXRlIGJpbmRpbmcgcHJvcGVydHkgbmFtZXMsIGZvciBleGFtcGxlIGNvbnRhaW5pbmcgdGhlXG4gKiBpbnB1dHMgb2YgYSBwYXJ0aWN1bGFyIGRpcmVjdGl2ZSBvciBjb21wb25lbnQuXG4gKlxuICogQSBzaW5nbGUgY29tcG9uZW50IHByb3BlcnR5IGhhcyBleGFjdGx5IG9uZSBpbnB1dC9vdXRwdXQgYW5ub3RhdGlvbiAoYW5kIHRoZXJlZm9yZSBvbmUgYmluZGluZ1xuICogcHJvcGVydHkgbmFtZSkgYXNzb2NpYXRlZCB3aXRoIGl0LCBidXQgdGhlIHNhbWUgYmluZGluZyBwcm9wZXJ0eSBuYW1lIG1heSBiZSBzaGFyZWQgYWNyb3NzIG1hbnlcbiAqIGNvbXBvbmVudCBwcm9wZXJ0eSBuYW1lcy5cbiAqXG4gKiBBbGxvd3MgYmlkaXJlY3Rpb25hbCBxdWVyeWluZyBvZiB0aGUgbWFwcGluZyAtIGxvb2tpbmcgdXAgYWxsIGlucHV0cy9vdXRwdXRzIHdpdGggYSBnaXZlblxuICogcHJvcGVydHkgbmFtZSwgb3IgbWFwcGluZyBmcm9tIGEgc3BlY2lmaWMgY2xhc3MgcHJvcGVydHkgdG8gaXRzIGJpbmRpbmcgcHJvcGVydHkgbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsYXNzUHJvcGVydHlNYXBwaW5nIGltcGxlbWVudHMgSW5wdXRPdXRwdXRQcm9wZXJ0eVNldCB7XG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gY2xhc3MgcHJvcGVydHkgbmFtZXMgdG8gdGhlIHNpbmdsZSBgSW5wdXRPck91dHB1dGAgZm9yIHRoYXQgY2xhc3MgcHJvcGVydHkuXG4gICAqL1xuICBwcml2YXRlIGZvcndhcmRNYXA6IE1hcDxDbGFzc1Byb3BlcnR5TmFtZSwgSW5wdXRPck91dHB1dD47XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBwcm9wZXJ0eSBuYW1lcyB0byBvbmUgb3IgbW9yZSBgSW5wdXRPck91dHB1dGBzIHdoaWNoIHNoYXJlIHRoYXQgbmFtZS5cbiAgICovXG4gIHByaXZhdGUgcmV2ZXJzZU1hcDogTWFwPEJpbmRpbmdQcm9wZXJ0eU5hbWUsIElucHV0T3JPdXRwdXRbXT47XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihmb3J3YXJkTWFwOiBNYXA8Q2xhc3NQcm9wZXJ0eU5hbWUsIElucHV0T3JPdXRwdXQ+KSB7XG4gICAgdGhpcy5mb3J3YXJkTWFwID0gZm9yd2FyZE1hcDtcbiAgICB0aGlzLnJldmVyc2VNYXAgPSByZXZlcnNlTWFwRnJvbUZvcndhcmRNYXAoZm9yd2FyZE1hcCk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0IGEgYENsYXNzUHJvcGVydHlNYXBwaW5nYCB3aXRoIG5vIGVudHJpZXMuXG4gICAqL1xuICBzdGF0aWMgZW1wdHkoKTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcge1xuICAgIHJldHVybiBuZXcgQ2xhc3NQcm9wZXJ0eU1hcHBpbmcobmV3IE1hcCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgYSBgQ2xhc3NQcm9wZXJ0eU1hcHBpbmdgIGZyb20gYSBwcmltaXRpdmUgSlMgb2JqZWN0IHdoaWNoIG1hcHMgY2xhc3MgcHJvcGVydHkgbmFtZXNcbiAgICogdG8gZWl0aGVyIGJpbmRpbmcgcHJvcGVydHkgbmFtZXMgb3IgYW4gYXJyYXkgdGhhdCBjb250YWlucyBib3RoIG5hbWVzLCB3aGljaCBpcyB1c2VkIGluIG9uLWRpc2tcbiAgICogbWV0YWRhdGEgZm9ybWF0cyAoZS5nLiBpbiAuZC50cyBmaWxlcykuXG4gICAqL1xuICBzdGF0aWMgZnJvbU1hcHBlZE9iamVjdChvYmo6IHtcbiAgICBbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV8W0NsYXNzUHJvcGVydHlOYW1lLCBCaW5kaW5nUHJvcGVydHlOYW1lXVxuICB9KTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcge1xuICAgIGNvbnN0IGZvcndhcmRNYXAgPSBuZXcgTWFwPENsYXNzUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0PigpO1xuXG4gICAgZm9yIChjb25zdCBjbGFzc1Byb3BlcnR5TmFtZSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtjbGFzc1Byb3BlcnR5TmFtZV07XG4gICAgICBjb25zdCBiaW5kaW5nUHJvcGVydHlOYW1lID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlO1xuICAgICAgY29uc3QgaW5wdXRPck91dHB1dDogSW5wdXRPck91dHB1dCA9IHtjbGFzc1Byb3BlcnR5TmFtZSwgYmluZGluZ1Byb3BlcnR5TmFtZX07XG4gICAgICBmb3J3YXJkTWFwLnNldChjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDbGFzc1Byb3BlcnR5TWFwcGluZyhmb3J3YXJkTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSB0d28gbWFwcGluZ3MgaW50byBvbmUsIHdpdGggY2xhc3MgcHJvcGVydGllcyBmcm9tIGBiYCB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIGNsYXNzXG4gICAqIHByb3BlcnRpZXMgZnJvbSBgYWAuXG4gICAqL1xuICBzdGF0aWMgbWVyZ2UoYTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcsIGI6IENsYXNzUHJvcGVydHlNYXBwaW5nKTogQ2xhc3NQcm9wZXJ0eU1hcHBpbmcge1xuICAgIGNvbnN0IGZvcndhcmRNYXAgPSBuZXcgTWFwPENsYXNzUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0PihhLmZvcndhcmRNYXAuZW50cmllcygpKTtcbiAgICBmb3IgKGNvbnN0IFtjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dF0gb2YgYi5mb3J3YXJkTWFwKSB7XG4gICAgICBmb3J3YXJkTWFwLnNldChjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDbGFzc1Byb3BlcnR5TWFwcGluZyhmb3J3YXJkTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgY2xhc3MgcHJvcGVydHkgbmFtZXMgbWFwcGVkIGluIHRoaXMgbWFwcGluZy5cbiAgICovXG4gIGdldCBjbGFzc1Byb3BlcnR5TmFtZXMoKTogQ2xhc3NQcm9wZXJ0eU5hbWVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mb3J3YXJkTWFwLmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGJpbmRpbmcgcHJvcGVydHkgbmFtZXMgbWFwcGVkIGluIHRoaXMgbWFwcGluZy5cbiAgICovXG4gIGdldCBwcm9wZXJ0eU5hbWVzKCk6IEJpbmRpbmdQcm9wZXJ0eU5hbWVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5yZXZlcnNlTWFwLmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIG1hcHBpbmcgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSBuYW1lIGV4aXN0cy5cbiAgICovXG4gIGhhc0JpbmRpbmdQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lOiBCaW5kaW5nUHJvcGVydHlOYW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmV2ZXJzZU1hcC5oYXMocHJvcGVydHlOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rdXAgYWxsIGBJbnB1dE9yT3V0cHV0YHMgdGhhdCB1c2UgdGhpcyBgcHJvcGVydHlOYW1lYC5cbiAgICovXG4gIGdldEJ5QmluZGluZ1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFJlYWRvbmx5QXJyYXk8SW5wdXRPck91dHB1dD58bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmV2ZXJzZU1hcC5oYXMocHJvcGVydHlOYW1lKSA/IHRoaXMucmV2ZXJzZU1hcC5nZXQocHJvcGVydHlOYW1lKSEgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2t1cCB0aGUgYElucHV0T3JPdXRwdXRgIGFzc29jaWF0ZWQgd2l0aCBhIGBjbGFzc1Byb3BlcnR5TmFtZWAuXG4gICAqL1xuICBnZXRCeUNsYXNzUHJvcGVydHlOYW1lKGNsYXNzUHJvcGVydHlOYW1lOiBzdHJpbmcpOiBJbnB1dE9yT3V0cHV0fG51bGwge1xuICAgIHJldHVybiB0aGlzLmZvcndhcmRNYXAuaGFzKGNsYXNzUHJvcGVydHlOYW1lKSA/IHRoaXMuZm9yd2FyZE1hcC5nZXQoY2xhc3NQcm9wZXJ0eU5hbWUpISA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIG1hcHBpbmcgdG8gYSBwcmltaXRpdmUgSlMgb2JqZWN0IHdoaWNoIG1hcHMgZWFjaCBjbGFzcyBwcm9wZXJ0eSBkaXJlY3RseSB0byB0aGVcbiAgICogYmluZGluZyBwcm9wZXJ0eSBuYW1lIGFzc29jaWF0ZWQgd2l0aCBpdC5cbiAgICovXG4gIHRvRGlyZWN0TWFwcGVkT2JqZWN0KCk6IHtbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV9IHtcbiAgICBjb25zdCBvYmo6IHtbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV9ID0ge307XG4gICAgZm9yIChjb25zdCBbY2xhc3NQcm9wZXJ0eU5hbWUsIGlucHV0T3JPdXRwdXRdIG9mIHRoaXMuZm9yd2FyZE1hcCkge1xuICAgICAgb2JqW2NsYXNzUHJvcGVydHlOYW1lXSA9IGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgbWFwcGluZyB0byBhIHByaW1pdGl2ZSBKUyBvYmplY3Qgd2hpY2ggbWFwcyBlYWNoIGNsYXNzIHByb3BlcnR5IGVpdGhlciB0byBpdHNlbGZcbiAgICogKGZvciBjYXNlcyB3aGVyZSB0aGUgYmluZGluZyBwcm9wZXJ0eSBuYW1lIGlzIHRoZSBzYW1lKSBvciB0byBhbiBhcnJheSB3aGljaCBjb250YWlucyBib3RoXG4gICAqIG5hbWVzIGlmIHRoZXkgZGlmZmVyLlxuICAgKlxuICAgKiBUaGlzIG9iamVjdCBmb3JtYXQgaXMgdXNlZCB3aGVuIG1hcHBpbmdzIGFyZSBzZXJpYWxpemVkIChmb3IgZXhhbXBsZSBpbnRvIC5kLnRzIGZpbGVzKS5cbiAgICovXG4gIHRvSm9pbnRNYXBwZWRPYmplY3QoKTpcbiAgICAgIHtbY2xhc3NQcm9wZXJ0eU5hbWU6IHN0cmluZ106IEJpbmRpbmdQcm9wZXJ0eU5hbWV8W0JpbmRpbmdQcm9wZXJ0eU5hbWUsIENsYXNzUHJvcGVydHlOYW1lXX0ge1xuICAgIGNvbnN0IG9iajoge1xuICAgICAgW2NsYXNzUHJvcGVydHlOYW1lOiBzdHJpbmddOiBCaW5kaW5nUHJvcGVydHlOYW1lfFtCaW5kaW5nUHJvcGVydHlOYW1lLCBDbGFzc1Byb3BlcnR5TmFtZV1cbiAgICB9ID0ge307XG4gICAgZm9yIChjb25zdCBbY2xhc3NQcm9wZXJ0eU5hbWUsIGlucHV0T3JPdXRwdXRdIG9mIHRoaXMuZm9yd2FyZE1hcCkge1xuICAgICAgaWYgKGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSBhcyBzdHJpbmcgPT09IGNsYXNzUHJvcGVydHlOYW1lIGFzIHN0cmluZykge1xuICAgICAgICBvYmpbY2xhc3NQcm9wZXJ0eU5hbWVdID0gaW5wdXRPck91dHB1dC5iaW5kaW5nUHJvcGVydHlOYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqW2NsYXNzUHJvcGVydHlOYW1lXSA9IFtpbnB1dE9yT3V0cHV0LmJpbmRpbmdQcm9wZXJ0eU5hbWUsIGNsYXNzUHJvcGVydHlOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sIGFuZCByZXR1cm4gZW50cnkgb2JqZWN0cyB3aGljaCBjb250YWluIHRoZSBjbGFzcyBhbmQgYmluZGluZ1xuICAgKiBwcm9wZXJ0eSBuYW1lcyAoYW5kIGFyZSB1c2VmdWwgZm9yIGRlc3RydWN0dXJpbmcpLlxuICAgKi9cbiAgKiBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFtDbGFzc1Byb3BlcnR5TmFtZSwgQmluZGluZ1Byb3BlcnR5TmFtZV0+IHtcbiAgICBmb3IgKGNvbnN0IFtjbGFzc1Byb3BlcnR5TmFtZSwgaW5wdXRPck91dHB1dF0gb2YgdGhpcy5mb3J3YXJkTWFwLmVudHJpZXMoKSkge1xuICAgICAgeWllbGQgW2NsYXNzUHJvcGVydHlOYW1lLCBpbnB1dE9yT3V0cHV0LmJpbmRpbmdQcm9wZXJ0eU5hbWVdO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXZlcnNlTWFwRnJvbUZvcndhcmRNYXAoZm9yd2FyZE1hcDogTWFwPENsYXNzUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0Pik6XG4gICAgTWFwPEJpbmRpbmdQcm9wZXJ0eU5hbWUsIElucHV0T3JPdXRwdXRbXT4ge1xuICBjb25zdCByZXZlcnNlTWFwID0gbmV3IE1hcDxCaW5kaW5nUHJvcGVydHlOYW1lLCBJbnB1dE9yT3V0cHV0W10+KCk7XG4gIGZvciAoY29uc3QgW18sIGlucHV0T3JPdXRwdXRdIG9mIGZvcndhcmRNYXApIHtcbiAgICBpZiAoIXJldmVyc2VNYXAuaGFzKGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSkpIHtcbiAgICAgIHJldmVyc2VNYXAuc2V0KGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSwgW10pO1xuICAgIH1cblxuICAgIHJldmVyc2VNYXAuZ2V0KGlucHV0T3JPdXRwdXQuYmluZGluZ1Byb3BlcnR5TmFtZSkhLnB1c2goaW5wdXRPck91dHB1dCk7XG4gIH1cbiAgcmV0dXJuIHJldmVyc2VNYXA7XG59XG4iXX0=
|
|
@@ -1,80 +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
|
-
import { hasInjectableFields } from './util';
|
|
9
|
-
/**
|
|
10
|
-
* A registry of directive, pipe, and module metadata for types defined in the current compilation
|
|
11
|
-
* unit, which supports both reading and registering.
|
|
12
|
-
*/
|
|
13
|
-
export class LocalMetadataRegistry {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.directives = new Map();
|
|
16
|
-
this.ngModules = new Map();
|
|
17
|
-
this.pipes = new Map();
|
|
18
|
-
}
|
|
19
|
-
getDirectiveMetadata(ref) {
|
|
20
|
-
return this.directives.has(ref.node) ? this.directives.get(ref.node) : null;
|
|
21
|
-
}
|
|
22
|
-
getNgModuleMetadata(ref) {
|
|
23
|
-
return this.ngModules.has(ref.node) ? this.ngModules.get(ref.node) : null;
|
|
24
|
-
}
|
|
25
|
-
getPipeMetadata(ref) {
|
|
26
|
-
return this.pipes.has(ref.node) ? this.pipes.get(ref.node) : null;
|
|
27
|
-
}
|
|
28
|
-
registerDirectiveMetadata(meta) {
|
|
29
|
-
this.directives.set(meta.ref.node, meta);
|
|
30
|
-
}
|
|
31
|
-
registerNgModuleMetadata(meta) {
|
|
32
|
-
this.ngModules.set(meta.ref.node, meta);
|
|
33
|
-
}
|
|
34
|
-
registerPipeMetadata(meta) {
|
|
35
|
-
this.pipes.set(meta.ref.node, meta);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* A `MetadataRegistry` which registers metdata with multiple delegate `MetadataRegistry` instances.
|
|
40
|
-
*/
|
|
41
|
-
export class CompoundMetadataRegistry {
|
|
42
|
-
constructor(registries) {
|
|
43
|
-
this.registries = registries;
|
|
44
|
-
}
|
|
45
|
-
registerDirectiveMetadata(meta) {
|
|
46
|
-
for (const registry of this.registries) {
|
|
47
|
-
registry.registerDirectiveMetadata(meta);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
registerNgModuleMetadata(meta) {
|
|
51
|
-
for (const registry of this.registries) {
|
|
52
|
-
registry.registerNgModuleMetadata(meta);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
registerPipeMetadata(meta) {
|
|
56
|
-
for (const registry of this.registries) {
|
|
57
|
-
registry.registerPipeMetadata(meta);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Registry that keeps track of classes that can be constructed via dependency injection (e.g.
|
|
63
|
-
* injectables, directives, pipes).
|
|
64
|
-
*/
|
|
65
|
-
export class InjectableClassRegistry {
|
|
66
|
-
constructor(host) {
|
|
67
|
-
this.host = host;
|
|
68
|
-
this.classes = new Set();
|
|
69
|
-
}
|
|
70
|
-
registerInjectable(declaration) {
|
|
71
|
-
this.classes.add(declaration);
|
|
72
|
-
}
|
|
73
|
-
isInjectable(declaration) {
|
|
74
|
-
// Figure out whether the class is injectable based on the registered classes, otherwise
|
|
75
|
-
// fall back to looking at its members since we might not have been able register the class
|
|
76
|
-
// if it was compiled already.
|
|
77
|
-
return this.classes.has(declaration) || hasInjectableFields(declaration, this.host);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL21ldGFkYXRhL3NyYy9yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFNSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFM0M7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjtJQUFsQztRQUNVLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFDdEQsVUFBSyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO0lBcUJ4RCxDQUFDO0lBbkJDLG9CQUFvQixDQUFDLEdBQWdDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvRSxDQUFDO0lBQ0QsbUJBQW1CLENBQUMsR0FBZ0M7UUFDbEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7SUFDRCxlQUFlLENBQUMsR0FBZ0M7UUFDOUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFtQjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsSUFBa0I7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELG9CQUFvQixDQUFDLElBQWM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFlBQW9CLFVBQThCO1FBQTlCLGVBQVUsR0FBVixVQUFVLENBQW9CO0lBQUcsQ0FBQztJQUV0RCx5QkFBeUIsQ0FBQyxJQUFtQjtRQUMzQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQWtCO1FBQ3pDLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN0QyxRQUFRLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBYztRQUNqQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUdsQyxZQUFvQixJQUFvQjtRQUFwQixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUZoQyxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7SUFFSCxDQUFDO0lBRTVDLGtCQUFrQixDQUFDLFdBQTZCO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLENBQUMsV0FBNkI7UUFDeEMsd0ZBQXdGO1FBQ3hGLDJGQUEyRjtRQUMzRiw4QkFBOEI7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0NsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuaW1wb3J0IHtEaXJlY3RpdmVNZXRhLCBNZXRhZGF0YVJlYWRlciwgTWV0YWRhdGFSZWdpc3RyeSwgTmdNb2R1bGVNZXRhLCBQaXBlTWV0YX0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHtoYXNJbmplY3RhYmxlRmllbGRzfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEEgcmVnaXN0cnkgb2YgZGlyZWN0aXZlLCBwaXBlLCBhbmQgbW9kdWxlIG1ldGFkYXRhIGZvciB0eXBlcyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uXG4gKiB1bml0LCB3aGljaCBzdXBwb3J0cyBib3RoIHJlYWRpbmcgYW5kIHJlZ2lzdGVyaW5nLlxuICovXG5leHBvcnQgY2xhc3MgTG9jYWxNZXRhZGF0YVJlZ2lzdHJ5IGltcGxlbWVudHMgTWV0YWRhdGFSZWdpc3RyeSwgTWV0YWRhdGFSZWFkZXIge1xuICBwcml2YXRlIGRpcmVjdGl2ZXMgPSBuZXcgTWFwPENsYXNzRGVjbGFyYXRpb24sIERpcmVjdGl2ZU1ldGE+KCk7XG4gIHByaXZhdGUgbmdNb2R1bGVzID0gbmV3IE1hcDxDbGFzc0RlY2xhcmF0aW9uLCBOZ01vZHVsZU1ldGE+KCk7XG4gIHByaXZhdGUgcGlwZXMgPSBuZXcgTWFwPENsYXNzRGVjbGFyYXRpb24sIFBpcGVNZXRhPigpO1xuXG4gIGdldERpcmVjdGl2ZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogRGlyZWN0aXZlTWV0YXxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmVzLmhhcyhyZWYubm9kZSkgPyB0aGlzLmRpcmVjdGl2ZXMuZ2V0KHJlZi5ub2RlKSEgOiBudWxsO1xuICB9XG4gIGdldE5nTW9kdWxlTWV0YWRhdGEocmVmOiBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbj4pOiBOZ01vZHVsZU1ldGF8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubmdNb2R1bGVzLmhhcyhyZWYubm9kZSkgPyB0aGlzLm5nTW9kdWxlcy5nZXQocmVmLm5vZGUpISA6IG51bGw7XG4gIH1cbiAgZ2V0UGlwZU1ldGFkYXRhKHJlZjogUmVmZXJlbmNlPENsYXNzRGVjbGFyYXRpb24+KTogUGlwZU1ldGF8bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGlwZXMuaGFzKHJlZi5ub2RlKSA/IHRoaXMucGlwZXMuZ2V0KHJlZi5ub2RlKSEgOiBudWxsO1xuICB9XG5cbiAgcmVnaXN0ZXJEaXJlY3RpdmVNZXRhZGF0YShtZXRhOiBEaXJlY3RpdmVNZXRhKTogdm9pZCB7XG4gICAgdGhpcy5kaXJlY3RpdmVzLnNldChtZXRhLnJlZi5ub2RlLCBtZXRhKTtcbiAgfVxuICByZWdpc3Rlck5nTW9kdWxlTWV0YWRhdGEobWV0YTogTmdNb2R1bGVNZXRhKTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZHVsZXMuc2V0KG1ldGEucmVmLm5vZGUsIG1ldGEpO1xuICB9XG4gIHJlZ2lzdGVyUGlwZU1ldGFkYXRhKG1ldGE6IFBpcGVNZXRhKTogdm9pZCB7XG4gICAgdGhpcy5waXBlcy5zZXQobWV0YS5yZWYubm9kZSwgbWV0YSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGBNZXRhZGF0YVJlZ2lzdHJ5YCB3aGljaCByZWdpc3RlcnMgbWV0ZGF0YSB3aXRoIG11bHRpcGxlIGRlbGVnYXRlIGBNZXRhZGF0YVJlZ2lzdHJ5YCBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wb3VuZE1ldGFkYXRhUmVnaXN0cnkgaW1wbGVtZW50cyBNZXRhZGF0YVJlZ2lzdHJ5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWdpc3RyaWVzOiBNZXRhZGF0YVJlZ2lzdHJ5W10pIHt9XG5cbiAgcmVnaXN0ZXJEaXJlY3RpdmVNZXRhZGF0YShtZXRhOiBEaXJlY3RpdmVNZXRhKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCByZWdpc3RyeSBvZiB0aGlzLnJlZ2lzdHJpZXMpIHtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyRGlyZWN0aXZlTWV0YWRhdGEobWV0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJOZ01vZHVsZU1ldGFkYXRhKG1ldGE6IE5nTW9kdWxlTWV0YSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgcmVnaXN0cnkgb2YgdGhpcy5yZWdpc3RyaWVzKSB7XG4gICAgICByZWdpc3RyeS5yZWdpc3Rlck5nTW9kdWxlTWV0YWRhdGEobWV0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJQaXBlTWV0YWRhdGEobWV0YTogUGlwZU1ldGEpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHJlZ2lzdHJ5IG9mIHRoaXMucmVnaXN0cmllcykge1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXJQaXBlTWV0YWRhdGEobWV0YSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVnaXN0cnkgdGhhdCBrZWVwcyB0cmFjayBvZiBjbGFzc2VzIHRoYXQgY2FuIGJlIGNvbnN0cnVjdGVkIHZpYSBkZXBlbmRlbmN5IGluamVjdGlvbiAoZS5nLlxuICogaW5qZWN0YWJsZXMsIGRpcmVjdGl2ZXMsIHBpcGVzKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdGFibGVDbGFzc1JlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBjbGFzc2VzID0gbmV3IFNldDxDbGFzc0RlY2xhcmF0aW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdDogUmVmbGVjdGlvbkhvc3QpIHt9XG5cbiAgcmVnaXN0ZXJJbmplY3RhYmxlKGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jbGFzc2VzLmFkZChkZWNsYXJhdGlvbik7XG4gIH1cblxuICBpc0luamVjdGFibGUoZGVjbGFyYXRpb246IENsYXNzRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgICAvLyBGaWd1cmUgb3V0IHdoZXRoZXIgdGhlIGNsYXNzIGlzIGluamVjdGFibGUgYmFzZWQgb24gdGhlIHJlZ2lzdGVyZWQgY2xhc3Nlcywgb3RoZXJ3aXNlXG4gICAgLy8gZmFsbCBiYWNrIHRvIGxvb2tpbmcgYXQgaXRzIG1lbWJlcnMgc2luY2Ugd2UgbWlnaHQgbm90IGhhdmUgYmVlbiBhYmxlIHJlZ2lzdGVyIHRoZSBjbGFzc1xuICAgIC8vIGlmIGl0IHdhcyBjb21waWxlZCBhbHJlYWR5LlxuICAgIHJldHVybiB0aGlzLmNsYXNzZXMuaGFzKGRlY2xhcmF0aW9uKSB8fCBoYXNJbmplY3RhYmxlRmllbGRzKGRlY2xhcmF0aW9uLCB0aGlzLmhvc3QpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,81 +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
|
-
export function isExternalResource(resource) {
|
|
9
|
-
return resource.path !== null;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Tracks the mapping between external template/style files and the component(s) which use them.
|
|
13
|
-
*
|
|
14
|
-
* This information is produced during analysis of the program and is used mainly to support
|
|
15
|
-
* external tooling, for which such a mapping is challenging to determine without compiler
|
|
16
|
-
* assistance.
|
|
17
|
-
*/
|
|
18
|
-
export class ResourceRegistry {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.externalTemplateToComponentsMap = new Map();
|
|
21
|
-
this.componentToTemplateMap = new Map();
|
|
22
|
-
this.componentToStylesMap = new Map();
|
|
23
|
-
this.externalStyleToComponentsMap = new Map();
|
|
24
|
-
}
|
|
25
|
-
getComponentsWithTemplate(template) {
|
|
26
|
-
if (!this.externalTemplateToComponentsMap.has(template)) {
|
|
27
|
-
return new Set();
|
|
28
|
-
}
|
|
29
|
-
return this.externalTemplateToComponentsMap.get(template);
|
|
30
|
-
}
|
|
31
|
-
registerResources(resources, component) {
|
|
32
|
-
if (resources.template !== null) {
|
|
33
|
-
this.registerTemplate(resources.template, component);
|
|
34
|
-
}
|
|
35
|
-
for (const style of resources.styles) {
|
|
36
|
-
this.registerStyle(style, component);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
registerTemplate(templateResource, component) {
|
|
40
|
-
const { path } = templateResource;
|
|
41
|
-
if (path !== null) {
|
|
42
|
-
if (!this.externalTemplateToComponentsMap.has(path)) {
|
|
43
|
-
this.externalTemplateToComponentsMap.set(path, new Set());
|
|
44
|
-
}
|
|
45
|
-
this.externalTemplateToComponentsMap.get(path).add(component);
|
|
46
|
-
}
|
|
47
|
-
this.componentToTemplateMap.set(component, templateResource);
|
|
48
|
-
}
|
|
49
|
-
getTemplate(component) {
|
|
50
|
-
if (!this.componentToTemplateMap.has(component)) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
return this.componentToTemplateMap.get(component);
|
|
54
|
-
}
|
|
55
|
-
registerStyle(styleResource, component) {
|
|
56
|
-
const { path } = styleResource;
|
|
57
|
-
if (!this.componentToStylesMap.has(component)) {
|
|
58
|
-
this.componentToStylesMap.set(component, new Set());
|
|
59
|
-
}
|
|
60
|
-
if (path !== null) {
|
|
61
|
-
if (!this.externalStyleToComponentsMap.has(path)) {
|
|
62
|
-
this.externalStyleToComponentsMap.set(path, new Set());
|
|
63
|
-
}
|
|
64
|
-
this.externalStyleToComponentsMap.get(path).add(component);
|
|
65
|
-
}
|
|
66
|
-
this.componentToStylesMap.get(component).add(styleResource);
|
|
67
|
-
}
|
|
68
|
-
getStyles(component) {
|
|
69
|
-
if (!this.componentToStylesMap.has(component)) {
|
|
70
|
-
return new Set();
|
|
71
|
-
}
|
|
72
|
-
return this.componentToStylesMap.get(component);
|
|
73
|
-
}
|
|
74
|
-
getComponentsWithStyle(styleUrl) {
|
|
75
|
-
if (!this.externalStyleToComponentsMap.has(styleUrl)) {
|
|
76
|
-
return new Set();
|
|
77
|
-
}
|
|
78
|
-
return this.externalStyleToComponentsMap.get(styleUrl);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VfcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL21ldGFkYXRhL3NyYy9yZXNvdXJjZV9yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUF1QkgsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFFBQWtCO0lBQ25ELE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7QUFDaEMsQ0FBQztBQVlEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFBN0I7UUFDVSxvQ0FBK0IsR0FBRyxJQUFJLEdBQUcsRUFBeUMsQ0FBQztRQUNuRiwyQkFBc0IsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUMvRCx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUNsRSxpQ0FBNEIsR0FBRyxJQUFJLEdBQUcsRUFBeUMsQ0FBQztJQWlFMUYsQ0FBQztJQS9EQyx5QkFBeUIsQ0FBQyxRQUF3QjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2RCxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7U0FDbEI7UUFFRCxPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQTZCLEVBQUUsU0FBMkI7UUFDMUUsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN0RDtRQUNELEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxnQkFBMEIsRUFBRSxTQUEyQjtRQUN0RSxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFDaEMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDM0Q7WUFDRCxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRTtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUEyQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMvQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxhQUFhLENBQUMsYUFBdUIsRUFBRSxTQUEyQjtRQUNoRSxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsYUFBYSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztTQUNyRDtRQUNELElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3hEO1lBQ0QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDN0Q7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQTJCO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdDLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztTQUNsQjtRQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBd0I7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEQsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO0lBQzFELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBYnNvbHV0ZUZzUGF0aH0gZnJvbSAnLi4vLi4vZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9ufSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIHJlc291cmNlIGZvciBhIGNvbXBvbmVudCBhbmQgY29udGFpbnMgdGhlIGBBYnNvbHV0ZUZzUGF0aGBcbiAqIHRvIHRoZSBmaWxlIHdoaWNoIHdhcyByZXNvbHZlZCBieSBldmFsdWF0aW5nIHRoZSBgdHMuRXhwcmVzc2lvbmAgKGdlbmVyYWxseSwgYSByZWxhdGl2ZSBvclxuICogYWJzb2x1dGUgc3RyaW5nIHBhdGggdG8gdGhlIHJlc291cmNlKS5cbiAqXG4gKiBJZiB0aGUgcmVzb3VyY2UgaXMgaW5saW5lLCB0aGUgYHBhdGhgIHdpbGwgYmUgYG51bGxgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgcGF0aDogQWJzb2x1dGVGc1BhdGh8bnVsbDtcbiAgZXhwcmVzc2lvbjogdHMuRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbFJlc291cmNlIGV4dGVuZHMgUmVzb3VyY2Uge1xuICBwYXRoOiBBYnNvbHV0ZUZzUGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxSZXNvdXJjZShyZXNvdXJjZTogUmVzb3VyY2UpOiByZXNvdXJjZSBpcyBFeHRlcm5hbFJlc291cmNlIHtcbiAgcmV0dXJuIHJlc291cmNlLnBhdGggIT09IG51bGw7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZWl0aGVyIGlubGluZSBvciBleHRlcm5hbCByZXNvdXJjZXMgb2YgYSBjb21wb25lbnQuXG4gKlxuICogQSByZXNvdXJjZSB3aXRoIGEgYHBhdGhgIG9mIGBudWxsYCBpcyBjb25zaWRlcmVkIGlubGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRSZXNvdXJjZXMge1xuICB0ZW1wbGF0ZTogUmVzb3VyY2U7XG4gIHN0eWxlczogUmVhZG9ubHlTZXQ8UmVzb3VyY2U+O1xufVxuXG4vKipcbiAqIFRyYWNrcyB0aGUgbWFwcGluZyBiZXR3ZWVuIGV4dGVybmFsIHRlbXBsYXRlL3N0eWxlIGZpbGVzIGFuZCB0aGUgY29tcG9uZW50KHMpIHdoaWNoIHVzZSB0aGVtLlxuICpcbiAqIFRoaXMgaW5mb3JtYXRpb24gaXMgcHJvZHVjZWQgZHVyaW5nIGFuYWx5c2lzIG9mIHRoZSBwcm9ncmFtIGFuZCBpcyB1c2VkIG1haW5seSB0byBzdXBwb3J0XG4gKiBleHRlcm5hbCB0b29saW5nLCBmb3Igd2hpY2ggc3VjaCBhIG1hcHBpbmcgaXMgY2hhbGxlbmdpbmcgdG8gZGV0ZXJtaW5lIHdpdGhvdXQgY29tcGlsZXJcbiAqIGFzc2lzdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBleHRlcm5hbFRlbXBsYXRlVG9Db21wb25lbnRzTWFwID0gbmV3IE1hcDxBYnNvbHV0ZUZzUGF0aCwgU2V0PENsYXNzRGVjbGFyYXRpb24+PigpO1xuICBwcml2YXRlIGNvbXBvbmVudFRvVGVtcGxhdGVNYXAgPSBuZXcgTWFwPENsYXNzRGVjbGFyYXRpb24sIFJlc291cmNlPigpO1xuICBwcml2YXRlIGNvbXBvbmVudFRvU3R5bGVzTWFwID0gbmV3IE1hcDxDbGFzc0RlY2xhcmF0aW9uLCBTZXQ8UmVzb3VyY2U+PigpO1xuICBwcml2YXRlIGV4dGVybmFsU3R5bGVUb0NvbXBvbmVudHNNYXAgPSBuZXcgTWFwPEFic29sdXRlRnNQYXRoLCBTZXQ8Q2xhc3NEZWNsYXJhdGlvbj4+KCk7XG5cbiAgZ2V0Q29tcG9uZW50c1dpdGhUZW1wbGF0ZSh0ZW1wbGF0ZTogQWJzb2x1dGVGc1BhdGgpOiBSZWFkb25seVNldDxDbGFzc0RlY2xhcmF0aW9uPiB7XG4gICAgaWYgKCF0aGlzLmV4dGVybmFsVGVtcGxhdGVUb0NvbXBvbmVudHNNYXAuaGFzKHRlbXBsYXRlKSkge1xuICAgICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leHRlcm5hbFRlbXBsYXRlVG9Db21wb25lbnRzTWFwLmdldCh0ZW1wbGF0ZSkhO1xuICB9XG5cbiAgcmVnaXN0ZXJSZXNvdXJjZXMocmVzb3VyY2VzOiBDb21wb25lbnRSZXNvdXJjZXMsIGNvbXBvbmVudDogQ2xhc3NEZWNsYXJhdGlvbikge1xuICAgIGlmIChyZXNvdXJjZXMudGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJUZW1wbGF0ZShyZXNvdXJjZXMudGVtcGxhdGUsIGNvbXBvbmVudCk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc3R5bGUgb2YgcmVzb3VyY2VzLnN0eWxlcykge1xuICAgICAgdGhpcy5yZWdpc3RlclN0eWxlKHN0eWxlLCBjb21wb25lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyVGVtcGxhdGUodGVtcGxhdGVSZXNvdXJjZTogUmVzb3VyY2UsIGNvbXBvbmVudDogQ2xhc3NEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHtwYXRofSA9IHRlbXBsYXRlUmVzb3VyY2U7XG4gICAgaWYgKHBhdGggIT09IG51bGwpIHtcbiAgICAgIGlmICghdGhpcy5leHRlcm5hbFRlbXBsYXRlVG9Db21wb25lbnRzTWFwLmhhcyhwYXRoKSkge1xuICAgICAgICB0aGlzLmV4dGVybmFsVGVtcGxhdGVUb0NvbXBvbmVudHNNYXAuc2V0KHBhdGgsIG5ldyBTZXQoKSk7XG4gICAgICB9XG4gICAgICB0aGlzLmV4dGVybmFsVGVtcGxhdGVUb0NvbXBvbmVudHNNYXAuZ2V0KHBhdGgpIS5hZGQoY29tcG9uZW50KTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRUb1RlbXBsYXRlTWFwLnNldChjb21wb25lbnQsIHRlbXBsYXRlUmVzb3VyY2UpO1xuICB9XG5cbiAgZ2V0VGVtcGxhdGUoY29tcG9uZW50OiBDbGFzc0RlY2xhcmF0aW9uKTogUmVzb3VyY2V8bnVsbCB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFRvVGVtcGxhdGVNYXAuaGFzKGNvbXBvbmVudCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRUb1RlbXBsYXRlTWFwLmdldChjb21wb25lbnQpITtcbiAgfVxuXG4gIHJlZ2lzdGVyU3R5bGUoc3R5bGVSZXNvdXJjZTogUmVzb3VyY2UsIGNvbXBvbmVudDogQ2xhc3NEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHtwYXRofSA9IHN0eWxlUmVzb3VyY2U7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFRvU3R5bGVzTWFwLmhhcyhjb21wb25lbnQpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFRvU3R5bGVzTWFwLnNldChjb21wb25lbnQsIG5ldyBTZXQoKSk7XG4gICAgfVxuICAgIGlmIChwYXRoICE9PSBudWxsKSB7XG4gICAgICBpZiAoIXRoaXMuZXh0ZXJuYWxTdHlsZVRvQ29tcG9uZW50c01hcC5oYXMocGF0aCkpIHtcbiAgICAgICAgdGhpcy5leHRlcm5hbFN0eWxlVG9Db21wb25lbnRzTWFwLnNldChwYXRoLCBuZXcgU2V0KCkpO1xuICAgICAgfVxuICAgICAgdGhpcy5leHRlcm5hbFN0eWxlVG9Db21wb25lbnRzTWFwLmdldChwYXRoKSEuYWRkKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50VG9TdHlsZXNNYXAuZ2V0KGNvbXBvbmVudCkhLmFkZChzdHlsZVJlc291cmNlKTtcbiAgfVxuXG4gIGdldFN0eWxlcyhjb21wb25lbnQ6IENsYXNzRGVjbGFyYXRpb24pOiBTZXQ8UmVzb3VyY2U+IHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50VG9TdHlsZXNNYXAuaGFzKGNvbXBvbmVudCkpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFRvU3R5bGVzTWFwLmdldChjb21wb25lbnQpITtcbiAgfVxuXG4gIGdldENvbXBvbmVudHNXaXRoU3R5bGUoc3R5bGVVcmw6IEFic29sdXRlRnNQYXRoKTogUmVhZG9ubHlTZXQ8Q2xhc3NEZWNsYXJhdGlvbj4ge1xuICAgIGlmICghdGhpcy5leHRlcm5hbFN0eWxlVG9Db21wb25lbnRzTWFwLmhhcyhzdHlsZVVybCkpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXh0ZXJuYWxTdHlsZVRvQ29tcG9uZW50c01hcC5nZXQoc3R5bGVVcmwpITtcbiAgfVxufVxuIl19
|