@angular/compiler-cli 12.1.1 → 12.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/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/partial_evaluator/src/builtin.js +1 -1
- 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/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 -174
- package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -94
- package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
- package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -719
- 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,298 +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 { ConstantPool } from '@angular/compiler';
|
|
9
|
-
import * as ts from 'typescript';
|
|
10
|
-
import { getDefaultImportDeclaration } from '../../imports/src/default';
|
|
11
|
-
import { PerfPhase } from '../../perf';
|
|
12
|
-
import { ImportManager, translateExpression, translateStatement } from '../../translator';
|
|
13
|
-
import { visit, Visitor } from '../../util/src/visitor';
|
|
14
|
-
import { addImports } from './utils';
|
|
15
|
-
const NO_DECORATORS = new Set();
|
|
16
|
-
const CLOSURE_FILE_OVERVIEW_REGEXP = /\s+@fileoverview\s+/i;
|
|
17
|
-
export function ivyTransformFactory(compilation, reflector, importRewriter, defaultImportTracker, perf, isCore, isClosureCompilerEnabled) {
|
|
18
|
-
const recordWrappedNode = createRecorderFn(defaultImportTracker);
|
|
19
|
-
return (context) => {
|
|
20
|
-
return (file) => {
|
|
21
|
-
return perf.inPhase(PerfPhase.Compile, () => transformIvySourceFile(compilation, context, reflector, importRewriter, file, isCore, isClosureCompilerEnabled, recordWrappedNode));
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Visits all classes, performs Ivy compilation where Angular decorators are present and collects
|
|
27
|
-
* result in a Map that associates a ts.ClassDeclaration with Ivy compilation results. This visitor
|
|
28
|
-
* does NOT perform any TS transformations.
|
|
29
|
-
*/
|
|
30
|
-
class IvyCompilationVisitor extends Visitor {
|
|
31
|
-
constructor(compilation, constantPool) {
|
|
32
|
-
super();
|
|
33
|
-
this.compilation = compilation;
|
|
34
|
-
this.constantPool = constantPool;
|
|
35
|
-
this.classCompilationMap = new Map();
|
|
36
|
-
}
|
|
37
|
-
visitClassDeclaration(node) {
|
|
38
|
-
// Determine if this class has an Ivy field that needs to be added, and compile the field
|
|
39
|
-
// to an expression if so.
|
|
40
|
-
const result = this.compilation.compile(node, this.constantPool);
|
|
41
|
-
if (result !== null) {
|
|
42
|
-
this.classCompilationMap.set(node, result);
|
|
43
|
-
}
|
|
44
|
-
return { node };
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Visits all classes and performs transformation of corresponding TS nodes based on the Ivy
|
|
49
|
-
* compilation results (provided as an argument).
|
|
50
|
-
*/
|
|
51
|
-
class IvyTransformationVisitor extends Visitor {
|
|
52
|
-
constructor(compilation, classCompilationMap, reflector, importManager, recordWrappedNodeExpr, isClosureCompilerEnabled, isCore) {
|
|
53
|
-
super();
|
|
54
|
-
this.compilation = compilation;
|
|
55
|
-
this.classCompilationMap = classCompilationMap;
|
|
56
|
-
this.reflector = reflector;
|
|
57
|
-
this.importManager = importManager;
|
|
58
|
-
this.recordWrappedNodeExpr = recordWrappedNodeExpr;
|
|
59
|
-
this.isClosureCompilerEnabled = isClosureCompilerEnabled;
|
|
60
|
-
this.isCore = isCore;
|
|
61
|
-
}
|
|
62
|
-
visitClassDeclaration(node) {
|
|
63
|
-
// If this class is not registered in the map, it means that it doesn't have Angular decorators,
|
|
64
|
-
// thus no further processing is required.
|
|
65
|
-
if (!this.classCompilationMap.has(node)) {
|
|
66
|
-
return { node };
|
|
67
|
-
}
|
|
68
|
-
const translateOptions = {
|
|
69
|
-
recordWrappedNode: this.recordWrappedNodeExpr,
|
|
70
|
-
annotateForClosureCompiler: this.isClosureCompilerEnabled,
|
|
71
|
-
};
|
|
72
|
-
// There is at least one field to add.
|
|
73
|
-
const statements = [];
|
|
74
|
-
const members = [...node.members];
|
|
75
|
-
for (const field of this.classCompilationMap.get(node)) {
|
|
76
|
-
// Translate the initializer for the field into TS nodes.
|
|
77
|
-
const exprNode = translateExpression(field.initializer, this.importManager, translateOptions);
|
|
78
|
-
// Create a static property declaration for the new field.
|
|
79
|
-
const property = ts.createProperty(undefined, [ts.createToken(ts.SyntaxKind.StaticKeyword)], field.name, undefined, undefined, exprNode);
|
|
80
|
-
if (this.isClosureCompilerEnabled) {
|
|
81
|
-
// Closure compiler transforms the form `Service.ɵprov = X` into `Service$ɵprov = X`. To
|
|
82
|
-
// prevent this transformation, such assignments need to be annotated with @nocollapse.
|
|
83
|
-
// Note that tsickle is typically responsible for adding such annotations, however it
|
|
84
|
-
// doesn't yet handle synthetic fields added during other transformations.
|
|
85
|
-
ts.addSyntheticLeadingComment(property, ts.SyntaxKind.MultiLineCommentTrivia, '* @nocollapse ',
|
|
86
|
-
/* hasTrailingNewLine */ false);
|
|
87
|
-
}
|
|
88
|
-
field.statements.map(stmt => translateStatement(stmt, this.importManager, translateOptions))
|
|
89
|
-
.forEach(stmt => statements.push(stmt));
|
|
90
|
-
members.push(property);
|
|
91
|
-
}
|
|
92
|
-
// Replace the class declaration with an updated version.
|
|
93
|
-
node = ts.updateClassDeclaration(node,
|
|
94
|
-
// Remove the decorator which triggered this compilation, leaving the others alone.
|
|
95
|
-
maybeFilterDecorator(node.decorators, this.compilation.decoratorsFor(node)), node.modifiers, node.name, node.typeParameters, node.heritageClauses || [],
|
|
96
|
-
// Map over the class members and remove any Angular decorators from them.
|
|
97
|
-
members.map(member => this._stripAngularDecorators(member)));
|
|
98
|
-
return { node, after: statements };
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Return all decorators on a `Declaration` which are from @angular/core, or an empty set if none
|
|
102
|
-
* are.
|
|
103
|
-
*/
|
|
104
|
-
_angularCoreDecorators(decl) {
|
|
105
|
-
const decorators = this.reflector.getDecoratorsOfDeclaration(decl);
|
|
106
|
-
if (decorators === null) {
|
|
107
|
-
return NO_DECORATORS;
|
|
108
|
-
}
|
|
109
|
-
const coreDecorators = decorators.filter(dec => this.isCore || isFromAngularCore(dec))
|
|
110
|
-
.map(dec => dec.node);
|
|
111
|
-
if (coreDecorators.length > 0) {
|
|
112
|
-
return new Set(coreDecorators);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return NO_DECORATORS;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Given a `ts.Node`, filter the decorators array and return a version containing only non-Angular
|
|
120
|
-
* decorators.
|
|
121
|
-
*
|
|
122
|
-
* If all decorators are removed (or none existed in the first place), this method returns
|
|
123
|
-
* `undefined`.
|
|
124
|
-
*/
|
|
125
|
-
_nonCoreDecoratorsOnly(node) {
|
|
126
|
-
// Shortcut if the node has no decorators.
|
|
127
|
-
if (node.decorators === undefined) {
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
// Build a Set of the decorators on this node from @angular/core.
|
|
131
|
-
const coreDecorators = this._angularCoreDecorators(node);
|
|
132
|
-
if (coreDecorators.size === node.decorators.length) {
|
|
133
|
-
// If all decorators are to be removed, return `undefined`.
|
|
134
|
-
return undefined;
|
|
135
|
-
}
|
|
136
|
-
else if (coreDecorators.size === 0) {
|
|
137
|
-
// If no decorators need to be removed, return the original decorators array.
|
|
138
|
-
return node.decorators;
|
|
139
|
-
}
|
|
140
|
-
// Filter out the core decorators.
|
|
141
|
-
const filtered = node.decorators.filter(dec => !coreDecorators.has(dec));
|
|
142
|
-
// If no decorators survive, return `undefined`. This can only happen if a core decorator is
|
|
143
|
-
// repeated on the node.
|
|
144
|
-
if (filtered.length === 0) {
|
|
145
|
-
return undefined;
|
|
146
|
-
}
|
|
147
|
-
// Create a new `NodeArray` with the filtered decorators that sourcemaps back to the original.
|
|
148
|
-
const array = ts.createNodeArray(filtered);
|
|
149
|
-
array.pos = node.decorators.pos;
|
|
150
|
-
array.end = node.decorators.end;
|
|
151
|
-
return array;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Remove Angular decorators from a `ts.Node` in a shallow manner.
|
|
155
|
-
*
|
|
156
|
-
* This will remove decorators from class elements (getters, setters, properties, methods) as well
|
|
157
|
-
* as parameters of constructors.
|
|
158
|
-
*/
|
|
159
|
-
_stripAngularDecorators(node) {
|
|
160
|
-
if (ts.isParameter(node)) {
|
|
161
|
-
// Strip decorators from parameters (probably of the constructor).
|
|
162
|
-
node = ts.updateParameter(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer);
|
|
163
|
-
}
|
|
164
|
-
else if (ts.isMethodDeclaration(node) && node.decorators !== undefined) {
|
|
165
|
-
// Strip decorators of methods.
|
|
166
|
-
node = ts.updateMethod(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body);
|
|
167
|
-
}
|
|
168
|
-
else if (ts.isPropertyDeclaration(node) && node.decorators !== undefined) {
|
|
169
|
-
// Strip decorators of properties.
|
|
170
|
-
node = ts.updateProperty(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.name, node.questionToken, node.type, node.initializer);
|
|
171
|
-
}
|
|
172
|
-
else if (ts.isGetAccessor(node)) {
|
|
173
|
-
// Strip decorators of getters.
|
|
174
|
-
node = ts.updateGetAccessor(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.name, node.parameters, node.type, node.body);
|
|
175
|
-
}
|
|
176
|
-
else if (ts.isSetAccessor(node)) {
|
|
177
|
-
// Strip decorators of setters.
|
|
178
|
-
node = ts.updateSetAccessor(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.name, node.parameters, node.body);
|
|
179
|
-
}
|
|
180
|
-
else if (ts.isConstructorDeclaration(node)) {
|
|
181
|
-
// For constructors, strip decorators of the parameters.
|
|
182
|
-
const parameters = node.parameters.map(param => this._stripAngularDecorators(param));
|
|
183
|
-
node =
|
|
184
|
-
ts.updateConstructor(node, node.decorators, node.modifiers, parameters, node.body);
|
|
185
|
-
}
|
|
186
|
-
return node;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* A transformer which operates on ts.SourceFiles and applies changes from an `IvyCompilation`.
|
|
191
|
-
*/
|
|
192
|
-
function transformIvySourceFile(compilation, context, reflector, importRewriter, file, isCore, isClosureCompilerEnabled, recordWrappedNode) {
|
|
193
|
-
const constantPool = new ConstantPool(isClosureCompilerEnabled);
|
|
194
|
-
const importManager = new ImportManager(importRewriter);
|
|
195
|
-
// The transformation process consists of 2 steps:
|
|
196
|
-
//
|
|
197
|
-
// 1. Visit all classes, perform compilation and collect the results.
|
|
198
|
-
// 2. Perform actual transformation of required TS nodes using compilation results from the first
|
|
199
|
-
// step.
|
|
200
|
-
//
|
|
201
|
-
// This is needed to have all `o.Expression`s generated before any TS transforms happen. This
|
|
202
|
-
// allows `ConstantPool` to properly identify expressions that can be shared across multiple
|
|
203
|
-
// components declared in the same file.
|
|
204
|
-
// Step 1. Go though all classes in AST, perform compilation and collect the results.
|
|
205
|
-
const compilationVisitor = new IvyCompilationVisitor(compilation, constantPool);
|
|
206
|
-
visit(file, compilationVisitor, context);
|
|
207
|
-
// Step 2. Scan through the AST again and perform transformations based on Ivy compilation
|
|
208
|
-
// results obtained at Step 1.
|
|
209
|
-
const transformationVisitor = new IvyTransformationVisitor(compilation, compilationVisitor.classCompilationMap, reflector, importManager, recordWrappedNode, isClosureCompilerEnabled, isCore);
|
|
210
|
-
let sf = visit(file, transformationVisitor, context);
|
|
211
|
-
// Generate the constant statements first, as they may involve adding additional imports
|
|
212
|
-
// to the ImportManager.
|
|
213
|
-
const downlevelTranslatedCode = getLocalizeCompileTarget(context) < ts.ScriptTarget.ES2015;
|
|
214
|
-
const constants = constantPool.statements.map(stmt => translateStatement(stmt, importManager, {
|
|
215
|
-
recordWrappedNode,
|
|
216
|
-
downlevelTaggedTemplates: downlevelTranslatedCode,
|
|
217
|
-
downlevelVariableDeclarations: downlevelTranslatedCode,
|
|
218
|
-
annotateForClosureCompiler: isClosureCompilerEnabled,
|
|
219
|
-
}));
|
|
220
|
-
// Preserve @fileoverview comments required by Closure, since the location might change as a
|
|
221
|
-
// result of adding extra imports and constant pool statements.
|
|
222
|
-
const fileOverviewMeta = isClosureCompilerEnabled ? getFileOverviewComment(sf.statements) : null;
|
|
223
|
-
// Add new imports for this file.
|
|
224
|
-
sf = addImports(importManager, sf, constants);
|
|
225
|
-
if (fileOverviewMeta !== null) {
|
|
226
|
-
setFileOverviewComment(sf, fileOverviewMeta);
|
|
227
|
-
}
|
|
228
|
-
return sf;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Compute the correct target output for `$localize` messages generated by Angular
|
|
232
|
-
*
|
|
233
|
-
* In some versions of TypeScript, the transformation of synthetic `$localize` tagged template
|
|
234
|
-
* literals is broken. See https://github.com/microsoft/TypeScript/issues/38485
|
|
235
|
-
*
|
|
236
|
-
* Here we compute what the expected final output target of the compilation will
|
|
237
|
-
* be so that we can generate ES5 compliant `$localize` calls instead of relying upon TS to do the
|
|
238
|
-
* downleveling for us.
|
|
239
|
-
*/
|
|
240
|
-
function getLocalizeCompileTarget(context) {
|
|
241
|
-
const target = context.getCompilerOptions().target || ts.ScriptTarget.ES2015;
|
|
242
|
-
return target !== ts.ScriptTarget.JSON ? target : ts.ScriptTarget.ES2015;
|
|
243
|
-
}
|
|
244
|
-
function getFileOverviewComment(statements) {
|
|
245
|
-
if (statements.length > 0) {
|
|
246
|
-
const host = statements[0];
|
|
247
|
-
let trailing = false;
|
|
248
|
-
let comments = ts.getSyntheticLeadingComments(host);
|
|
249
|
-
// If @fileoverview tag is not found in source file, tsickle produces fake node with trailing
|
|
250
|
-
// comment and inject it at the very beginning of the generated file. So we need to check for
|
|
251
|
-
// leading as well as trailing comments.
|
|
252
|
-
if (!comments || comments.length === 0) {
|
|
253
|
-
trailing = true;
|
|
254
|
-
comments = ts.getSyntheticTrailingComments(host);
|
|
255
|
-
}
|
|
256
|
-
if (comments && comments.length > 0 && CLOSURE_FILE_OVERVIEW_REGEXP.test(comments[0].text)) {
|
|
257
|
-
return { comments, host, trailing };
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
return null;
|
|
261
|
-
}
|
|
262
|
-
function setFileOverviewComment(sf, fileoverview) {
|
|
263
|
-
const { comments, host, trailing } = fileoverview;
|
|
264
|
-
// If host statement is no longer the first one, it means that extra statements were added at the
|
|
265
|
-
// very beginning, so we need to relocate @fileoverview comment and cleanup the original statement
|
|
266
|
-
// that hosted it.
|
|
267
|
-
if (sf.statements.length > 0 && host !== sf.statements[0]) {
|
|
268
|
-
if (trailing) {
|
|
269
|
-
ts.setSyntheticTrailingComments(host, undefined);
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
ts.setSyntheticLeadingComments(host, undefined);
|
|
273
|
-
}
|
|
274
|
-
ts.setSyntheticLeadingComments(sf.statements[0], comments);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
function maybeFilterDecorator(decorators, toRemove) {
|
|
278
|
-
if (decorators === undefined) {
|
|
279
|
-
return undefined;
|
|
280
|
-
}
|
|
281
|
-
const filtered = decorators.filter(dec => toRemove.find(decToRemove => ts.getOriginalNode(dec) === decToRemove) === undefined);
|
|
282
|
-
if (filtered.length === 0) {
|
|
283
|
-
return undefined;
|
|
284
|
-
}
|
|
285
|
-
return ts.createNodeArray(filtered);
|
|
286
|
-
}
|
|
287
|
-
function isFromAngularCore(decorator) {
|
|
288
|
-
return decorator.import !== null && decorator.import.from === '@angular/core';
|
|
289
|
-
}
|
|
290
|
-
function createRecorderFn(defaultImportTracker) {
|
|
291
|
-
return node => {
|
|
292
|
-
const importDecl = getDefaultImportDeclaration(node);
|
|
293
|
-
if (importDecl !== null) {
|
|
294
|
-
defaultImportTracker.recordUsedImport(importDecl);
|
|
295
|
-
}
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy90cmFuc2Zvcm0vc3JjL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHakMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFNBQVMsRUFBZSxNQUFNLFlBQVksQ0FBQztBQUVuRCxPQUFPLEVBQUMsYUFBYSxFQUF1QixtQkFBbUIsRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNoSSxPQUFPLEVBQUMsS0FBSyxFQUF3QixPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUk1RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRW5DLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO0FBRTlDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFXNUQsTUFBTSxVQUFVLG1CQUFtQixDQUMvQixXQUEwQixFQUFFLFNBQXlCLEVBQUUsY0FBOEIsRUFDckYsb0JBQTBDLEVBQUUsSUFBa0IsRUFBRSxNQUFlLEVBQy9FLHdCQUFpQztJQUNuQyxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDakUsT0FBTyxDQUFDLE9BQWlDLEVBQWlDLEVBQUU7UUFDMUUsT0FBTyxDQUFDLElBQW1CLEVBQWlCLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNmLFNBQVMsQ0FBQyxPQUFPLEVBQ2pCLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUN4QixXQUFX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TEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Q29uc3RhbnRQb29sfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtEZWZhdWx0SW1wb3J0VHJhY2tlciwgSW1wb3J0UmV3cml0ZXJ9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtnZXREZWZhdWx0SW1wb3J0RGVjbGFyYXRpb259IGZyb20gJy4uLy4uL2ltcG9ydHMvc3JjL2RlZmF1bHQnO1xuaW1wb3J0IHtQZXJmUGhhc2UsIFBlcmZSZWNvcmRlcn0gZnJvbSAnLi4vLi4vcGVyZic7XG5pbXBvcnQge0RlY29yYXRvciwgUmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uLy4uL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHtJbXBvcnRNYW5hZ2VyLCBSZWNvcmRXcmFwcGVkTm9kZUZuLCB0cmFuc2xhdGVFeHByZXNzaW9uLCB0cmFuc2xhdGVTdGF0ZW1lbnQsIFRyYW5zbGF0b3JPcHRpb25zfSBmcm9tICcuLi8uLi90cmFuc2xhdG9yJztcbmltcG9ydCB7dmlzaXQsIFZpc2l0TGlzdEVudHJ5UmVzdWx0LCBWaXNpdG9yfSBmcm9tICcuLi8uLi91dGlsL3NyYy92aXNpdG9yJztcblxuaW1wb3J0IHtDb21waWxlUmVzdWx0fSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge1RyYWl0Q29tcGlsZXJ9IGZyb20gJy4vY29tcGlsYXRpb24nO1xuaW1wb3J0IHthZGRJbXBvcnRzfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTk9fREVDT1JBVE9SUyA9IG5ldyBTZXQ8dHMuRGVjb3JhdG9yPigpO1xuXG5jb25zdCBDTE9TVVJFX0ZJTEVfT1ZFUlZJRVdfUkVHRVhQID0gL1xccytAZmlsZW92ZXJ2aWV3XFxzKy9pO1xuXG4vKipcbiAqIE1ldGFkYXRhIHRvIHN1cHBvcnQgQGZpbGVvdmVydmlldyBibG9ja3MgKENsb3N1cmUgYW5ub3RhdGlvbnMpIGV4dHJhY3RpbmcvcmVzdG9yaW5nLlxuICovXG5pbnRlcmZhY2UgRmlsZU92ZXJ2aWV3TWV0YSB7XG4gIGNvbW1lbnRzOiB0cy5TeW50aGVzaXplZENvbW1lbnRbXTtcbiAgaG9zdDogdHMuU3RhdGVtZW50O1xuICB0cmFpbGluZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl2eVRyYW5zZm9ybUZhY3RvcnkoXG4gICAgY29tcGlsYXRpb246IFRyYWl0Q29tcGlsZXIsIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QsIGltcG9ydFJld3JpdGVyOiBJbXBvcnRSZXdyaXRlcixcbiAgICBkZWZhdWx0SW1wb3J0VHJhY2tlcjogRGVmYXVsdEltcG9ydFRyYWNrZXIsIHBlcmY6IFBlcmZSZWNvcmRlciwgaXNDb3JlOiBib29sZWFuLFxuICAgIGlzQ2xvc3VyZUNvbXBpbGVyRW5hYmxlZDogYm9vbGVhbik6IHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPiB7XG4gIGNvbnN0IHJlY29yZFdyYXBwZWROb2RlID0gY3JlYXRlUmVjb3JkZXJGbihkZWZhdWx0SW1wb3J0VHJhY2tlcik7XG4gIHJldHVybiAoY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KTogdHMuVHJhbnNmb3JtZXI8dHMuU291cmNlRmlsZT4gPT4ge1xuICAgIHJldHVybiAoZmlsZTogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUgPT4ge1xuICAgICAgcmV0dXJuIHBlcmYuaW5QaGFzZShcbiAgICAgICAgICBQZXJmUGhhc2UuQ29tcGlsZSxcbiAgICAgICAgICAoKSA9PiB0cmFuc2Zvcm1JdnlTb3VyY2VGaWxlKFxuICAgICAgICAgICAgICBjb21waWxhdGlvbiwgY29udGV4dCwgcmVmbGVjdG9yLCBpbXBvcnRSZXdyaXRlciwgZmlsZSwgaXNDb3JlLFxuICAgICAgICAgICAgICBpc0Nsb3N1cmVDb21waWxlckVuYWJsZWQsIHJlY29yZFdyYXBwZWROb2RlKSk7XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBWaXNpdHMgYWxsIGNsYXNzZXMsIHBlcmZvcm1zIEl2eSBjb21waWxhdGlvbiB3aGVyZSBBbmd1bGFyIGRlY29yYXRvcnMgYXJlIHByZXNlbnQgYW5kIGNvbGxlY3RzXG4gKiByZXN1bHQgaW4gYSBNYXAgdGhhdCBhc3NvY2lhdGVzIGEgdHMuQ2xhc3NEZWNsYXJhdGlvbiB3aXRoIEl2eSBjb21waWxhdGlvbiByZXN1bHRzLiBUaGlzIHZpc2l0b3JcbiAqIGRvZXMgTk9UIHBlcmZvcm0gYW55IFRTIHRyYW5zZm9ybWF0aW9ucy5cbiAqL1xuY2xhc3MgSXZ5Q29tcGlsYXRpb25WaXNpdG9yIGV4dGVuZHMgVmlzaXRvciB7XG4gIHB1YmxpYyBjbGFzc0NvbXBpbGF0aW9uTWFwID0gbmV3IE1hcDx0cy5DbGFzc0RlY2xhcmF0aW9uLCBDb21waWxlUmVzdWx0W10+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21waWxhdGlvbjogVHJhaXRDb21waWxlciwgcHJpdmF0ZSBjb25zdGFudFBvb2w6IENvbnN0YW50UG9vbCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogdHMuQ2xhc3NEZWNsYXJhdGlvbik6XG4gICAgICBWaXNpdExpc3RFbnRyeVJlc3VsdDx0cy5TdGF0ZW1lbnQsIHRzLkNsYXNzRGVjbGFyYXRpb24+IHtcbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBjbGFzcyBoYXMgYW4gSXZ5IGZpZWxkIHRoYXQgbmVlZHMgdG8gYmUgYWRkZWQsIGFuZCBjb21waWxlIHRoZSBmaWVsZFxuICAgIC8vIHRvIGFuIGV4cHJlc3Npb24gaWYgc28uXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb21waWxhdGlvbi5jb21waWxlKG5vZGUsIHRoaXMuY29uc3RhbnRQb29sKTtcbiAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmNsYXNzQ29tcGlsYXRpb25NYXAuc2V0KG5vZGUsIHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiB7bm9kZX07XG4gIH1cbn1cblxuLyoqXG4gKiBWaXNpdHMgYWxsIGNsYXNzZXMgYW5kIHBlcmZvcm1zIHRyYW5zZm9ybWF0aW9uIG9mIGNvcnJlc3BvbmRpbmcgVFMgbm9kZXMgYmFzZWQgb24gdGhlIEl2eVxuICogY29tcGlsYXRpb24gcmVzdWx0cyAocHJvdmlkZWQgYXMgYW4gYXJndW1lbnQpLlxuICovXG5jbGFzcyBJdnlUcmFuc2Zvcm1hdGlvblZpc2l0b3IgZXh0ZW5kcyBWaXNpdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGNvbXBpbGF0aW9uOiBUcmFpdENvbXBpbGVyLFxuICAgICAgcHJpdmF0ZSBjbGFzc0NvbXBpbGF0aW9uTWFwOiBNYXA8dHMuQ2xhc3NEZWNsYXJhdGlvbiwgQ29tcGlsZVJlc3VsdFtdPixcbiAgICAgIHByaXZhdGUgcmVmbGVjdG9yOiBSZWZsZWN0aW9uSG9zdCwgcHJpdmF0ZSBpbXBvcnRNYW5hZ2VyOiBJbXBvcnRNYW5hZ2VyLFxuICAgICAgcHJpdmF0ZSByZWNvcmRXcmFwcGVkTm9kZUV4cHI6IFJlY29yZFdyYXBwZWROb2RlRm48dHMuRXhwcmVzc2lvbj4sXG4gICAgICBwcml2YXRlIGlzQ2xvc3VyZUNvbXBpbGVyRW5hYmxlZDogYm9vbGVhbiwgcHJpdmF0ZSBpc0NvcmU6IGJvb2xlYW4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24pOlxuICAgICAgVmlzaXRMaXN0RW50cnlSZXN1bHQ8dHMuU3RhdGVtZW50LCB0cy5DbGFzc0RlY2xhcmF0aW9uPiB7XG4gICAgLy8gSWYgdGhpcyBjbGFzcyBpcyBub3QgcmVnaXN0ZXJlZCBpbiB0aGUgbWFwLCBpdCBtZWFucyB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSBBbmd1bGFyIGRlY29yYXRvcnMsXG4gICAgLy8gdGh1cyBubyBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMgcmVxdWlyZWQuXG4gICAgaWYgKCF0aGlzLmNsYXNzQ29tcGlsYXRpb25NYXAuaGFzKG5vZGUpKSB7XG4gICAgICByZXR1cm4ge25vZGV9O1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zbGF0ZU9wdGlvbnM6IFRyYW5zbGF0b3JPcHRpb25zPHRzLkV4cHJlc3Npb24+ID0ge1xuICAgICAgcmVjb3JkV3JhcHBlZE5vZGU6IHRoaXMucmVjb3JkV3JhcHBlZE5vZGVFeHByLFxuICAgICAgYW5ub3RhdGVGb3JDbG9zdXJlQ29tcGlsZXI6IHRoaXMuaXNDbG9zdXJlQ29tcGlsZXJFbmFibGVkLFxuICAgIH07XG5cbiAgICAvLyBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgZmllbGQgdG8gYWRkLlxuICAgIGNvbnN0IHN0YXRlbWVudHM6IHRzLlN0YXRlbWVudFtdID0gW107XG4gICAgY29uc3QgbWVtYmVycyA9IFsuLi5ub2RlLm1lbWJlcnNdO1xuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmNsYXNzQ29tcGlsYXRpb25NYXAuZ2V0KG5vZGUpISkge1xuICAgICAgLy8gVHJhbnNsYXRlIHRoZSBpbml0aWFsaXplciBmb3IgdGhlIGZpZWxkIGludG8gVFMgbm9kZXMuXG4gICAgICBjb25zdCBleHByTm9kZSA9IHRyYW5zbGF0ZUV4cHJlc3Npb24oZmllbGQuaW5pdGlhbGl6ZXIsIHRoaXMuaW1wb3J0TWFuYWdlciwgdHJhbnNsYXRlT3B0aW9ucyk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIHN0YXRpYyBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBmb3IgdGhlIG5ldyBmaWVsZC5cbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdHMuY3JlYXRlUHJvcGVydHkoXG4gICAgICAgICAgdW5kZWZpbmVkLCBbdHMuY3JlYXRlVG9rZW4odHMuU3ludGF4S2luZC5TdGF0aWNLZXl3b3JkKV0sIGZpZWxkLm5hbWUsIHVuZGVmaW5lZCxcbiAgICAgICAgICB1bmRlZmluZWQsIGV4cHJOb2RlKTtcblxuICAgICAgaWYgKHRoaXMuaXNDbG9zdXJlQ29tcGlsZXJFbmFibGVkKSB7XG4gICAgICAgIC8vIENsb3N1cmUgY29tcGlsZXIgdHJhbnNmb3JtcyB0aGUgZm9ybSBgU2VydmljZS7JtXByb3YgPSBYYCBpbnRvIGBTZXJ2aWNlJMm1cHJvdiA9IFhgLiBUb1xuICAgICAgICAvLyBwcmV2ZW50IHRoaXMgdHJhbnNmb3JtYXRpb24sIHN1Y2ggYXNzaWdubWVudHMgbmVlZCB0byBiZSBhbm5vdGF0ZWQgd2l0aCBAbm9jb2xsYXBzZS5cbiAgICAgICAgLy8gTm90ZSB0aGF0IHRzaWNrbGUgaXMgdHlwaWNhbGx5IHJlc3BvbnNpYmxlIGZvciBhZGRpbmcgc3VjaCBhbm5vdGF0aW9ucywgaG93ZXZlciBpdFxuICAgICAgICAvLyBkb2Vzbid0IHlldCBoYW5kbGUgc3ludGhldGljIGZpZWxkcyBhZGRlZCBkdXJpbmcgb3RoZXIgdHJhbnNmb3JtYXRpb25zLlxuICAgICAgICB0cy5hZGRTeW50aGV0aWNMZWFkaW5nQ29tbWVudChcbiAgICAgICAgICAgIHByb3BlcnR5LCB0cy5TeW50YXhLaW5kLk11bHRpTGluZUNvbW1lbnRUcml2aWEsICcqIEBub2NvbGxhcHNlICcsXG4gICAgICAgICAgICAvKiBoYXNUcmFpbGluZ05ld0xpbmUgKi8gZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBmaWVsZC5zdGF0ZW1lbnRzLm1hcChzdG10ID0+IHRyYW5zbGF0ZVN0YXRlbWVudChzdG10LCB0aGlzLmltcG9ydE1hbmFnZXIsIHRyYW5zbGF0ZU9wdGlvbnMpKVxuICAgICAgICAgIC5mb3JFYWNoKHN0bXQgPT4gc3RhdGVtZW50cy5wdXNoKHN0bXQpKTtcblxuICAgICAgbWVtYmVycy5wdXNoKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBjbGFzcyBkZWNsYXJhdGlvbiB3aXRoIGFuIHVwZGF0ZWQgdmVyc2lvbi5cbiAgICBub2RlID0gdHMudXBkYXRlQ2xhc3NEZWNsYXJhdGlvbihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBkZWNvcmF0b3Igd2hpY2ggdHJpZ2dlcmVkIHRoaXMgY29tcGlsYXRpb24sIGxlYXZpbmcgdGhlIG90aGVycyBhbG9uZS5cbiAgICAgICAgbWF5YmVGaWx0ZXJEZWNvcmF0b3Iobm9kZS5kZWNvcmF0b3JzLCB0aGlzLmNvbXBpbGF0aW9uLmRlY29yYXRvcnNGb3Iobm9kZSkpLCBub2RlLm1vZGlmaWVycyxcbiAgICAgICAgbm9kZS5uYW1lLCBub2RlLnR5cGVQYXJhbWV0ZXJzLCBub2RlLmhlcml0YWdlQ2xhdXNlcyB8fCBbXSxcbiAgICAgICAgLy8gTWFwIG92ZXIgdGhlIGNsYXNzIG1lbWJlcnMgYW5kIHJlbW92ZSBhbnkgQW5ndWxhciBkZWNvcmF0b3JzIGZyb20gdGhlbS5cbiAgICAgICAgbWVtYmVycy5tYXAobWVtYmVyID0+IHRoaXMuX3N0cmlwQW5ndWxhckRlY29yYXRvcnMobWVtYmVyKSkpO1xuICAgIHJldHVybiB7bm9kZSwgYWZ0ZXI6IHN0YXRlbWVudHN9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgZGVjb3JhdG9ycyBvbiBhIGBEZWNsYXJhdGlvbmAgd2hpY2ggYXJlIGZyb20gQGFuZ3VsYXIvY29yZSwgb3IgYW4gZW1wdHkgc2V0IGlmIG5vbmVcbiAgICogYXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBfYW5ndWxhckNvcmVEZWNvcmF0b3JzKGRlY2w6IHRzLkRlY2xhcmF0aW9uKTogU2V0PHRzLkRlY29yYXRvcj4ge1xuICAgIGNvbnN0IGRlY29yYXRvcnMgPSB0aGlzLnJlZmxlY3Rvci5nZXREZWNvcmF0b3JzT2ZEZWNsYXJhdGlvbihkZWNsKTtcbiAgICBpZiAoZGVjb3JhdG9ycyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5PX0RFQ09SQVRPUlM7XG4gICAgfVxuICAgIGNvbnN0IGNvcmVEZWNvcmF0b3JzID0gZGVjb3JhdG9ycy5maWx0ZXIoZGVjID0+IHRoaXMuaXNDb3JlIHx8IGlzRnJvbUFuZ3VsYXJDb3JlKGRlYykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChkZWMgPT4gZGVjLm5vZGUgYXMgdHMuRGVjb3JhdG9yKTtcbiAgICBpZiAoY29yZURlY29yYXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG5ldyBTZXQ8dHMuRGVjb3JhdG9yPihjb3JlRGVjb3JhdG9ycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBOT19ERUNPUkFUT1JTO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGB0cy5Ob2RlYCwgZmlsdGVyIHRoZSBkZWNvcmF0b3JzIGFycmF5IGFuZCByZXR1cm4gYSB2ZXJzaW9uIGNvbnRhaW5pbmcgb25seSBub24tQW5ndWxhclxuICAgKiBkZWNvcmF0b3JzLlxuICAgKlxuICAgKiBJZiBhbGwgZGVjb3JhdG9ycyBhcmUgcmVtb3ZlZCAob3Igbm9uZSBleGlzdGVkIGluIHRoZSBmaXJzdCBwbGFjZSksIHRoaXMgbWV0aG9kIHJldHVybnNcbiAgICogYHVuZGVmaW5lZGAuXG4gICAqL1xuICBwcml2YXRlIF9ub25Db3JlRGVjb3JhdG9yc09ubHkobm9kZTogdHMuRGVjbGFyYXRpb24pOiB0cy5Ob2RlQXJyYXk8dHMuRGVjb3JhdG9yPnx1bmRlZmluZWQge1xuICAgIC8vIFNob3J0Y3V0IGlmIHRoZSBub2RlIGhhcyBubyBkZWNvcmF0b3JzLlxuICAgIGlmIChub2RlLmRlY29yYXRvcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gQnVpbGQgYSBTZXQgb2YgdGhlIGRlY29yYXRvcnMgb24gdGhpcyBub2RlIGZyb20gQGFuZ3VsYXIvY29yZS5cbiAgICBjb25zdCBjb3JlRGVjb3JhdG9ycyA9IHRoaXMuX2FuZ3VsYXJDb3JlRGVjb3JhdG9ycyhub2RlKTtcblxuICAgIGlmIChjb3JlRGVjb3JhdG9ycy5zaXplID09PSBub2RlLmRlY29yYXRvcnMubGVuZ3RoKSB7XG4gICAgICAvLyBJZiBhbGwgZGVjb3JhdG9ycyBhcmUgdG8gYmUgcmVtb3ZlZCwgcmV0dXJuIGB1bmRlZmluZWRgLlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKGNvcmVEZWNvcmF0b3JzLnNpemUgPT09IDApIHtcbiAgICAgIC8vIElmIG5vIGRlY29yYXRvcnMgbmVlZCB0byBiZSByZW1vdmVkLCByZXR1cm4gdGhlIG9yaWdpbmFsIGRlY29yYXRvcnMgYXJyYXkuXG4gICAgICByZXR1cm4gbm9kZS5kZWNvcmF0b3JzO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBvdXQgdGhlIGNvcmUgZGVjb3JhdG9ycy5cbiAgICBjb25zdCBmaWx0ZXJlZCA9IG5vZGUuZGVjb3JhdG9ycy5maWx0ZXIoZGVjID0+ICFjb3JlRGVjb3JhdG9ycy5oYXMoZGVjKSk7XG5cbiAgICAvLyBJZiBubyBkZWNvcmF0b3JzIHN1cnZpdmUsIHJldHVybiBgdW5kZWZpbmVkYC4gVGhpcyBjYW4gb25seSBoYXBwZW4gaWYgYSBjb3JlIGRlY29yYXRvciBpc1xuICAgIC8vIHJlcGVhdGVkIG9uIHRoZSBub2RlLlxuICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IGBOb2RlQXJyYXlgIHdpdGggdGhlIGZpbHRlcmVkIGRlY29yYXRvcnMgdGhhdCBzb3VyY2VtYXBzIGJhY2sgdG8gdGhlIG9yaWdpbmFsLlxuICAgIGNvbnN0IGFycmF5ID0gdHMuY3JlYXRlTm9kZUFycmF5KGZpbHRlcmVkKTtcbiAgICAoYXJyYXkucG9zIGFzIG51bWJlcikgPSBub2RlLmRlY29yYXRvcnMucG9zO1xuICAgIChhcnJheS5lbmQgYXMgbnVtYmVyKSA9IG5vZGUuZGVjb3JhdG9ycy5lbmQ7XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBBbmd1bGFyIGRlY29yYXRvcnMgZnJvbSBhIGB0cy5Ob2RlYCBpbiBhIHNoYWxsb3cgbWFubmVyLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgcmVtb3ZlIGRlY29yYXRvcnMgZnJvbSBjbGFzcyBlbGVtZW50cyAoZ2V0dGVycywgc2V0dGVycywgcHJvcGVydGllcywgbWV0aG9kcykgYXMgd2VsbFxuICAgKiBhcyBwYXJhbWV0ZXJzIG9mIGNvbnN0cnVjdG9ycy5cbiAgICovXG4gIHByaXZhdGUgX3N0cmlwQW5ndWxhckRlY29yYXRvcnM8VCBleHRlbmRzIHRzLk5vZGU+KG5vZGU6IFQpOiBUIHtcbiAgICBpZiAodHMuaXNQYXJhbWV0ZXIobm9kZSkpIHtcbiAgICAgIC8vIFN0cmlwIGRlY29yYXRvcnMgZnJvbSBwYXJhbWV0ZXJzIChwcm9iYWJseSBvZiB0aGUgY29uc3RydWN0b3IpLlxuICAgICAgbm9kZSA9IHRzLnVwZGF0ZVBhcmFtZXRlcihcbiAgICAgICAgICAgICAgICAgbm9kZSwgdGhpcy5fbm9uQ29yZURlY29yYXRvcnNPbmx5KG5vZGUpLCBub2RlLm1vZGlmaWVycywgbm9kZS5kb3REb3REb3RUb2tlbixcbiAgICAgICAgICAgICAgICAgbm9kZS5uYW1lLCBub2RlLnF1ZXN0aW9uVG9rZW4sIG5vZGUudHlwZSwgbm9kZS5pbml0aWFsaXplcikgYXMgVCAmXG4gICAgICAgICAgdHMuUGFyYW1ldGVyRGVjbGFyYXRpb247XG4gICAgfSBlbHNlIGlmICh0cy5pc01ldGhvZERlY2xhcmF0aW9uKG5vZGUpICYmIG5vZGUuZGVjb3JhdG9ycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTdHJpcCBkZWNvcmF0b3JzIG9mIG1ldGhvZHMuXG4gICAgICBub2RlID0gdHMudXBkYXRlTWV0aG9kKFxuICAgICAgICAgICAgICAgICBub2RlLCB0aGlzLl9ub25Db3JlRGVjb3JhdG9yc09ubHkobm9kZSksIG5vZGUubW9kaWZpZXJzLCBub2RlLmFzdGVyaXNrVG9rZW4sXG4gICAgICAgICAgICAgICAgIG5vZGUubmFtZSwgbm9kZS5xdWVzdGlvblRva2VuLCBub2RlLnR5cGVQYXJhbWV0ZXJzLCBub2RlLnBhcmFtZXRlcnMsIG5vZGUudHlwZSxcbiAgICAgICAgICAgICAgICAgbm9kZS5ib2R5KSBhcyBUICZcbiAgICAgICAgICB0cy5NZXRob2REZWNsYXJhdGlvbjtcbiAgICB9IGVsc2UgaWYgKHRzLmlzUHJvcGVydHlEZWNsYXJhdGlvbihub2RlKSAmJiBub2RlLmRlY29yYXRvcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3RyaXAgZGVjb3JhdG9ycyBvZiBwcm9wZXJ0aWVzLlxuICAgICAgbm9kZSA9IHRzLnVwZGF0ZVByb3BlcnR5KFxuICAgICAgICAgICAgICAgICBub2RlLCB0aGlzLl9ub25Db3JlRGVjb3JhdG9yc09ubHkobm9kZSksIG5vZGUubW9kaWZpZXJzLCBub2RlLm5hbWUsXG4gICAgICAgICAgICAgICAgIG5vZGUucXVlc3Rpb25Ub2tlbiwgbm9kZS50eXBlLCBub2RlLmluaXRpYWxpemVyKSBhcyBUICZcbiAgICAgICAgICB0cy5Qcm9wZXJ0eURlY2xhcmF0aW9uO1xuICAgIH0gZWxzZSBpZiAodHMuaXNHZXRBY2Nlc3Nvcihub2RlKSkge1xuICAgICAgLy8gU3RyaXAgZGVjb3JhdG9ycyBvZiBnZXR0ZXJzLlxuICAgICAgbm9kZSA9IHRzLnVwZGF0ZUdldEFjY2Vzc29yKFxuICAgICAgICAgICAgICAgICBub2RlLCB0aGlzLl9ub25Db3JlRGVjb3JhdG9yc09ubHkobm9kZSksIG5vZGUubW9kaWZpZXJzLCBub2RlLm5hbWUsXG4gICAgICAgICAgICAgICAgIG5vZGUucGFyYW1ldGVycywgbm9kZS50eXBlLCBub2RlLmJvZHkpIGFzIFQgJlxuICAgICAgICAgIHRzLkdldEFjY2Vzc29yRGVjbGFyYXRpb247XG4gICAgfSBlbHNlIGlmICh0cy5pc1NldEFjY2Vzc29yKG5vZGUpKSB7XG4gICAgICAvLyBTdHJpcCBkZWNvcmF0b3JzIG9mIHNldHRlcnMuXG4gICAgICBub2RlID0gdHMudXBkYXRlU2V0QWNjZXNzb3IoXG4gICAgICAgICAgICAgICAgIG5vZGUsIHRoaXMuX25vbkNvcmVEZWNvcmF0b3JzT25seShub2RlKSwgbm9kZS5tb2RpZmllcnMsIG5vZGUubmFtZSxcbiAgICAgICAgICAgICAgICAgbm9kZS5wYXJhbWV0ZXJzLCBub2RlLmJvZHkpIGFzIFQgJlxuICAgICAgICAgIHRzLlNldEFjY2Vzc29yRGVjbGFyYXRpb247XG4gICAgfSBlbHNlIGlmICh0cy5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIC8vIEZvciBjb25zdHJ1Y3RvcnMsIHN0cmlwIGRlY29yYXRvcnMgb2YgdGhlIHBhcmFtZXRlcnMuXG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gbm9kZS5wYXJhbWV0ZXJzLm1hcChwYXJhbSA9PiB0aGlzLl9zdHJpcEFuZ3VsYXJEZWNvcmF0b3JzKHBhcmFtKSk7XG4gICAgICBub2RlID1cbiAgICAgICAgICB0cy51cGRhdGVDb25zdHJ1Y3Rvcihub2RlLCBub2RlLmRlY29yYXRvcnMsIG5vZGUubW9kaWZpZXJzLCBwYXJhbWV0ZXJzLCBub2RlLmJvZHkpIGFzIFQgJlxuICAgICAgICAgIHRzLkNvbnN0cnVjdG9yRGVjbGFyYXRpb247XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG59XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB3aGljaCBvcGVyYXRlcyBvbiB0cy5Tb3VyY2VGaWxlcyBhbmQgYXBwbGllcyBjaGFuZ2VzIGZyb20gYW4gYEl2eUNvbXBpbGF0aW9uYC5cbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtSXZ5U291cmNlRmlsZShcbiAgICBjb21waWxhdGlvbjogVHJhaXRDb21waWxlciwgY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0LCByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0LFxuICAgIGltcG9ydFJld3JpdGVyOiBJbXBvcnRSZXdyaXRlciwgZmlsZTogdHMuU291cmNlRmlsZSwgaXNDb3JlOiBib29sZWFuLFxuICAgIGlzQ2xvc3VyZUNvbXBpbGVyRW5hYmxlZDogYm9vbGVhbixcbiAgICByZWNvcmRXcmFwcGVkTm9kZTogUmVjb3JkV3JhcHBlZE5vZGVGbjx0cy5FeHByZXNzaW9uPik6IHRzLlNvdXJjZUZpbGUge1xuICBjb25zdCBjb25zdGFudFBvb2wgPSBuZXcgQ29uc3RhbnRQb29sKGlzQ2xvc3VyZUNvbXBpbGVyRW5hYmxlZCk7XG4gIGNvbnN0IGltcG9ydE1hbmFnZXIgPSBuZXcgSW1wb3J0TWFuYWdlcihpbXBvcnRSZXdyaXRlcik7XG5cbiAgLy8gVGhlIHRyYW5zZm9ybWF0aW9uIHByb2Nlc3MgY29uc2lzdHMgb2YgMiBzdGVwczpcbiAgLy9cbiAgLy8gIDEuIFZpc2l0IGFsbCBjbGFzc2VzLCBwZXJmb3JtIGNvbXBpbGF0aW9uIGFuZCBjb2xsZWN0IHRoZSByZXN1bHRzLlxuICAvLyAgMi4gUGVyZm9ybSBhY3R1YWwgdHJhbnNmb3JtYXRpb24gb2YgcmVxdWlyZWQgVFMgbm9kZXMgdXNpbmcgY29tcGlsYXRpb24gcmVzdWx0cyBmcm9tIHRoZSBmaXJzdFxuICAvLyAgICAgc3RlcC5cbiAgLy9cbiAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gaGF2ZSBhbGwgYG8uRXhwcmVzc2lvbmBzIGdlbmVyYXRlZCBiZWZvcmUgYW55IFRTIHRyYW5zZm9ybXMgaGFwcGVuLiBUaGlzXG4gIC8vIGFsbG93cyBgQ29uc3RhbnRQb29sYCB0byBwcm9wZXJseSBpZGVudGlmeSBleHByZXNzaW9ucyB0aGF0IGNhbiBiZSBzaGFyZWQgYWNyb3NzIG11bHRpcGxlXG4gIC8vIGNvbXBvbmVudHMgZGVjbGFyZWQgaW4gdGhlIHNhbWUgZmlsZS5cblxuICAvLyBTdGVwIDEuIEdvIHRob3VnaCBhbGwgY2xhc3NlcyBpbiBBU1QsIHBlcmZvcm0gY29tcGlsYXRpb24gYW5kIGNvbGxlY3QgdGhlIHJlc3VsdHMuXG4gIGNvbnN0IGNvbXBpbGF0aW9uVmlzaXRvciA9IG5ldyBJdnlDb21waWxhdGlvblZpc2l0b3IoY29tcGlsYXRpb24sIGNvbnN0YW50UG9vbCk7XG4gIHZpc2l0KGZpbGUsIGNvbXBpbGF0aW9uVmlzaXRvciwgY29udGV4dCk7XG5cbiAgLy8gU3RlcCAyLiBTY2FuIHRocm91Z2ggdGhlIEFTVCBhZ2FpbiBhbmQgcGVyZm9ybSB0cmFuc2Zvcm1hdGlvbnMgYmFzZWQgb24gSXZ5IGNvbXBpbGF0aW9uXG4gIC8vIHJlc3VsdHMgb2J0YWluZWQgYXQgU3RlcCAxLlxuICBjb25zdCB0cmFuc2Zvcm1hdGlvblZpc2l0b3IgPSBuZXcgSXZ5VHJhbnNmb3JtYXRpb25WaXNpdG9yKFxuICAgICAgY29tcGlsYXRpb24sIGNvbXBpbGF0aW9uVmlzaXRvci5jbGFzc0NvbXBpbGF0aW9uTWFwLCByZWZsZWN0b3IsIGltcG9ydE1hbmFnZXIsXG4gICAgICByZWNvcmRXcmFwcGVkTm9kZSwgaXNDbG9zdXJlQ29tcGlsZXJFbmFibGVkLCBpc0NvcmUpO1xuICBsZXQgc2YgPSB2aXNpdChmaWxlLCB0cmFuc2Zvcm1hdGlvblZpc2l0b3IsIGNvbnRleHQpO1xuXG4gIC8vIEdlbmVyYXRlIHRoZSBjb25zdGFudCBzdGF0ZW1lbnRzIGZpcnN0LCBhcyB0aGV5IG1heSBpbnZvbHZlIGFkZGluZyBhZGRpdGlvbmFsIGltcG9ydHNcbiAgLy8gdG8gdGhlIEltcG9ydE1hbmFnZXIuXG4gIGNvbnN0IGRvd25sZXZlbFRyYW5zbGF0ZWRDb2RlID0gZ2V0TG9jYWxpemVDb21waWxlVGFyZ2V0KGNvbnRleHQpIDwgdHMuU2NyaXB0VGFyZ2V0LkVTMjAxNTtcbiAgY29uc3QgY29uc3RhbnRzID1cbiAgICAgIGNvbnN0YW50UG9vbC5zdGF0ZW1lbnRzLm1hcChzdG10ID0+IHRyYW5zbGF0ZVN0YXRlbWVudChzdG10LCBpbXBvcnRNYW5hZ2VyLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRXcmFwcGVkTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sZXZlbFRhZ2dlZFRlbXBsYXRlczogZG93bmxldmVsVHJhbnNsYXRlZENvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubGV2ZWxWYXJpYWJsZURlY2xhcmF0aW9uczogZG93bmxldmVsVHJhbnNsYXRlZENvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0ZUZvckNsb3N1cmVDb21waWxlcjogaXNDbG9zdXJlQ29tcGlsZXJFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAvLyBQcmVzZXJ2ZSBAZmlsZW92ZXJ2aWV3IGNvbW1lbnRzIHJlcXVpcmVkIGJ5IENsb3N1cmUsIHNpbmNlIHRoZSBsb2NhdGlvbiBtaWdodCBjaGFuZ2UgYXMgYVxuICAvLyByZXN1bHQgb2YgYWRkaW5nIGV4dHJhIGltcG9ydHMgYW5kIGNvbnN0YW50IHBvb2wgc3RhdGVtZW50cy5cbiAgY29uc3QgZmlsZU92ZXJ2aWV3TWV0YSA9IGlzQ2xvc3VyZUNvbXBpbGVyRW5hYmxlZCA/IGdldEZpbGVPdmVydmlld0NvbW1lbnQoc2Yuc3RhdGVtZW50cykgOiBudWxsO1xuXG4gIC8vIEFkZCBuZXcgaW1wb3J0cyBmb3IgdGhpcyBmaWxlLlxuICBzZiA9IGFkZEltcG9ydHMoaW1wb3J0TWFuYWdlciwgc2YsIGNvbnN0YW50cyk7XG5cbiAgaWYgKGZpbGVPdmVydmlld01ldGEgIT09IG51bGwpIHtcbiAgICBzZXRGaWxlT3ZlcnZpZXdDb21tZW50KHNmLCBmaWxlT3ZlcnZpZXdNZXRhKTtcbiAgfVxuXG4gIHJldHVybiBzZjtcbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBjb3JyZWN0IHRhcmdldCBvdXRwdXQgZm9yIGAkbG9jYWxpemVgIG1lc3NhZ2VzIGdlbmVyYXRlZCBieSBBbmd1bGFyXG4gKlxuICogSW4gc29tZSB2ZXJzaW9ucyBvZiBUeXBlU2NyaXB0LCB0aGUgdHJhbnNmb3JtYXRpb24gb2Ygc3ludGhldGljIGAkbG9jYWxpemVgIHRhZ2dlZCB0ZW1wbGF0ZVxuICogbGl0ZXJhbHMgaXMgYnJva2VuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zODQ4NVxuICpcbiAqIEhlcmUgd2UgY29tcHV0ZSB3aGF0IHRoZSBleHBlY3RlZCBmaW5hbCBvdXRwdXQgdGFyZ2V0IG9mIHRoZSBjb21waWxhdGlvbiB3aWxsXG4gKiBiZSBzbyB0aGF0IHdlIGNhbiBnZW5lcmF0ZSBFUzUgY29tcGxpYW50IGAkbG9jYWxpemVgIGNhbGxzIGluc3RlYWQgb2YgcmVseWluZyB1cG9uIFRTIHRvIGRvIHRoZVxuICogZG93bmxldmVsaW5nIGZvciB1cy5cbiAqL1xuZnVuY3Rpb24gZ2V0TG9jYWxpemVDb21waWxlVGFyZ2V0KGNvbnRleHQ6IHRzLlRyYW5zZm9ybWF0aW9uQ29udGV4dCk6XG4gICAgRXhjbHVkZTx0cy5TY3JpcHRUYXJnZXQsIHRzLlNjcmlwdFRhcmdldC5KU09OPiB7XG4gIGNvbnN0IHRhcmdldCA9IGNvbnRleHQuZ2V0Q29tcGlsZXJPcHRpb25zKCkudGFyZ2V0IHx8IHRzLlNjcmlwdFRhcmdldC5FUzIwMTU7XG4gIHJldHVybiB0YXJnZXQgIT09IHRzLlNjcmlwdFRhcmdldC5KU09OID8gdGFyZ2V0IDogdHMuU2NyaXB0VGFyZ2V0LkVTMjAxNTtcbn1cblxuZnVuY3Rpb24gZ2V0RmlsZU92ZXJ2aWV3Q29tbWVudChzdGF0ZW1lbnRzOiB0cy5Ob2RlQXJyYXk8dHMuU3RhdGVtZW50Pik6IEZpbGVPdmVydmlld01ldGF8bnVsbCB7XG4gIGlmIChzdGF0ZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBob3N0ID0gc3RhdGVtZW50c1swXTtcbiAgICBsZXQgdHJhaWxpbmcgPSBmYWxzZTtcbiAgICBsZXQgY29tbWVudHMgPSB0cy5nZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHMoaG9zdCk7XG4gICAgLy8gSWYgQGZpbGVvdmVydmlldyB0YWcgaXMgbm90IGZvdW5kIGluIHNvdXJjZSBmaWxlLCB0c2lja2xlIHByb2R1Y2VzIGZha2Ugbm9kZSB3aXRoIHRyYWlsaW5nXG4gICAgLy8gY29tbWVudCBhbmQgaW5qZWN0IGl0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgZ2VuZXJhdGVkIGZpbGUuIFNvIHdlIG5lZWQgdG8gY2hlY2sgZm9yXG4gICAgLy8gbGVhZGluZyBhcyB3ZWxsIGFzIHRyYWlsaW5nIGNvbW1lbnRzLlxuICAgIGlmICghY29tbWVudHMgfHwgY29tbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0cmFpbGluZyA9IHRydWU7XG4gICAgICBjb21tZW50cyA9IHRzLmdldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHMoaG9zdCk7XG4gICAgfVxuICAgIGlmIChjb21tZW50cyAmJiBjb21tZW50cy5sZW5ndGggPiAwICYmIENMT1NVUkVfRklMRV9PVkVSVklFV19SRUdFWFAudGVzdChjb21tZW50c1swXS50ZXh0KSkge1xuICAgICAgcmV0dXJuIHtjb21tZW50cywgaG9zdCwgdHJhaWxpbmd9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gc2V0RmlsZU92ZXJ2aWV3Q29tbWVudChzZjogdHMuU291cmNlRmlsZSwgZmlsZW92ZXJ2aWV3OiBGaWxlT3ZlcnZpZXdNZXRhKTogdm9pZCB7XG4gIGNvbnN0IHtjb21tZW50cywgaG9zdCwgdHJhaWxpbmd9ID0gZmlsZW92ZXJ2aWV3O1xuICAvLyBJZiBob3N0IHN0YXRlbWVudCBpcyBubyBsb25nZXIgdGhlIGZpcnN0IG9uZSwgaXQgbWVhbnMgdGhhdCBleHRyYSBzdGF0ZW1lbnRzIHdlcmUgYWRkZWQgYXQgdGhlXG4gIC8vIHZlcnkgYmVnaW5uaW5nLCBzbyB3ZSBuZWVkIHRvIHJlbG9jYXRlIEBmaWxlb3ZlcnZpZXcgY29tbWVudCBhbmQgY2xlYW51cCB0aGUgb3JpZ2luYWwgc3RhdGVtZW50XG4gIC8vIHRoYXQgaG9zdGVkIGl0LlxuICBpZiAoc2Yuc3RhdGVtZW50cy5sZW5ndGggPiAwICYmIGhvc3QgIT09IHNmLnN0YXRlbWVudHNbMF0pIHtcbiAgICBpZiAodHJhaWxpbmcpIHtcbiAgICAgIHRzLnNldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHMoaG9zdCwgdW5kZWZpbmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHMuc2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKGhvc3QsIHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHRzLnNldFN5bnRoZXRpY0xlYWRpbmdDb21tZW50cyhzZi5zdGF0ZW1lbnRzWzBdLCBjb21tZW50cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVGaWx0ZXJEZWNvcmF0b3IoXG4gICAgZGVjb3JhdG9yczogdHMuTm9kZUFycmF5PHRzLkRlY29yYXRvcj58dW5kZWZpbmVkLFxuICAgIHRvUmVtb3ZlOiB0cy5EZWNvcmF0b3JbXSk6IHRzLk5vZGVBcnJheTx0cy5EZWNvcmF0b3I+fHVuZGVmaW5lZCB7XG4gIGlmIChkZWNvcmF0b3JzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGZpbHRlcmVkID0gZGVjb3JhdG9ycy5maWx0ZXIoXG4gICAgICBkZWMgPT4gdG9SZW1vdmUuZmluZChkZWNUb1JlbW92ZSA9PiB0cy5nZXRPcmlnaW5hbE5vZGUoZGVjKSA9PT0gZGVjVG9SZW1vdmUpID09PSB1bmRlZmluZWQpO1xuICBpZiAoZmlsdGVyZWQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gdHMuY3JlYXRlTm9kZUFycmF5KGZpbHRlcmVkKTtcbn1cblxuZnVuY3Rpb24gaXNGcm9tQW5ndWxhckNvcmUoZGVjb3JhdG9yOiBEZWNvcmF0b3IpOiBib29sZWFuIHtcbiAgcmV0dXJuIGRlY29yYXRvci5pbXBvcnQgIT09IG51bGwgJiYgZGVjb3JhdG9yLmltcG9ydC5mcm9tID09PSAnQGFuZ3VsYXIvY29yZSc7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlY29yZGVyRm4oZGVmYXVsdEltcG9ydFRyYWNrZXI6IERlZmF1bHRJbXBvcnRUcmFja2VyKTpcbiAgICBSZWNvcmRXcmFwcGVkTm9kZUZuPHRzLkV4cHJlc3Npb24+IHtcbiAgcmV0dXJuIG5vZGUgPT4ge1xuICAgIGNvbnN0IGltcG9ydERlY2wgPSBnZXREZWZhdWx0SW1wb3J0RGVjbGFyYXRpb24obm9kZSk7XG4gICAgaWYgKGltcG9ydERlY2wgIT09IG51bGwpIHtcbiAgICAgIGRlZmF1bHRJbXBvcnRUcmFja2VyLnJlY29yZFVzZWRJbXBvcnQoaW1wb3J0RGVjbCk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as ts from 'typescript';
|
|
9
|
-
/**
|
|
10
|
-
* Adds extra imports in the import manage for this source file, after the existing imports
|
|
11
|
-
* and before the module body.
|
|
12
|
-
* Can optionally add extra statements (e.g. new constants) before the body as well.
|
|
13
|
-
*/
|
|
14
|
-
export function addImports(importManager, sf, extraStatements = []) {
|
|
15
|
-
// Generate the import statements to prepend.
|
|
16
|
-
const addedImports = importManager.getAllImports(sf.fileName).map(i => {
|
|
17
|
-
const qualifier = ts.createIdentifier(i.qualifier.text);
|
|
18
|
-
const importClause = ts.createImportClause(
|
|
19
|
-
/* name */ undefined,
|
|
20
|
-
/* namedBindings */ ts.createNamespaceImport(qualifier));
|
|
21
|
-
const decl = ts.createImportDeclaration(
|
|
22
|
-
/* decorators */ undefined,
|
|
23
|
-
/* modifiers */ undefined,
|
|
24
|
-
/* importClause */ importClause,
|
|
25
|
-
/* moduleSpecifier */ ts.createLiteral(i.specifier));
|
|
26
|
-
// Set the qualifier's original TS node to the `ts.ImportDeclaration`. This allows downstream
|
|
27
|
-
// transforms such as tsickle to properly process references to this import.
|
|
28
|
-
//
|
|
29
|
-
// This operation is load-bearing in g3 as some imported modules contain special metadata
|
|
30
|
-
// generated by clutz, which tsickle uses to transform imports and references to those imports.
|
|
31
|
-
//
|
|
32
|
-
// TODO(alxhub): add a test for this when tsickle is updated externally to depend on this
|
|
33
|
-
// behavior.
|
|
34
|
-
ts.setOriginalNode(i.qualifier, decl);
|
|
35
|
-
return decl;
|
|
36
|
-
});
|
|
37
|
-
// Filter out the existing imports and the source file body. All new statements
|
|
38
|
-
// will be inserted between them.
|
|
39
|
-
const existingImports = sf.statements.filter(stmt => isImportStatement(stmt));
|
|
40
|
-
const body = sf.statements.filter(stmt => !isImportStatement(stmt));
|
|
41
|
-
// Prepend imports if needed.
|
|
42
|
-
if (addedImports.length > 0) {
|
|
43
|
-
// If we prepend imports, we also prepend NotEmittedStatement to use it as an anchor
|
|
44
|
-
// for @fileoverview Closure annotation. If there is no @fileoverview annotations, this
|
|
45
|
-
// statement would be a noop.
|
|
46
|
-
const fileoverviewAnchorStmt = ts.createNotEmittedStatement(sf);
|
|
47
|
-
return ts.updateSourceFileNode(sf, ts.createNodeArray([
|
|
48
|
-
fileoverviewAnchorStmt, ...existingImports, ...addedImports, ...extraStatements, ...body
|
|
49
|
-
]));
|
|
50
|
-
}
|
|
51
|
-
return sf;
|
|
52
|
-
}
|
|
53
|
-
function isImportStatement(stmt) {
|
|
54
|
-
return ts.isImportDeclaration(stmt) || ts.isImportEqualsDeclaration(stmt) ||
|
|
55
|
-
ts.isNamespaceImport(stmt);
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3RyYW5zZm9ybS9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJakM7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3RCLGFBQTRCLEVBQUUsRUFBaUIsRUFDL0Msa0JBQWtDLEVBQUU7SUFDdEMsNkNBQTZDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNwRSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUMsa0JBQWtCO1FBQ3RDLFVBQVUsQ0FBQyxTQUFTO1FBQ3BCLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyx1QkFBdUI7UUFDbkMsZ0JBQWdCLENBQUMsU0FBUztRQUMxQixlQUFlLENBQUMsU0FBUztRQUN6QixrQkFBa0IsQ0FBQyxZQUFZO1FBQy9CLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFekQsNkZBQTZGO1FBQzdGLDRFQUE0RTtRQUM1RSxFQUFFO1FBQ0YseUZBQXlGO1FBQ3pGLCtGQUErRjtRQUMvRixFQUFFO1FBQ0YseUZBQXlGO1FBQ3pGLFlBQVk7UUFDWixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztJQUVILCtFQUErRTtJQUMvRSxpQ0FBaUM7SUFDakMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLDZCQUE2QjtJQUM3QixJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLG9GQUFvRjtRQUNwRix1RkFBdUY7UUFDdkYsNkJBQTZCO1FBQzdCLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQ3BELHNCQUFzQixFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsSUFBSTtTQUN6RixDQUFDLENBQUMsQ0FBQztLQUNMO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFrQjtJQUMzQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDO1FBQ3JFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtJbXBvcnRNYW5hZ2VyfSBmcm9tICcuLi8uLi90cmFuc2xhdG9yJztcblxuLyoqXG4gKiBBZGRzIGV4dHJhIGltcG9ydHMgaW4gdGhlIGltcG9ydCBtYW5hZ2UgZm9yIHRoaXMgc291cmNlIGZpbGUsIGFmdGVyIHRoZSBleGlzdGluZyBpbXBvcnRzXG4gKiBhbmQgYmVmb3JlIHRoZSBtb2R1bGUgYm9keS5cbiAqIENhbiBvcHRpb25hbGx5IGFkZCBleHRyYSBzdGF0ZW1lbnRzIChlLmcuIG5ldyBjb25zdGFudHMpIGJlZm9yZSB0aGUgYm9keSBhcyB3ZWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSW1wb3J0cyhcbiAgICBpbXBvcnRNYW5hZ2VyOiBJbXBvcnRNYW5hZ2VyLCBzZjogdHMuU291cmNlRmlsZSxcbiAgICBleHRyYVN0YXRlbWVudHM6IHRzLlN0YXRlbWVudFtdID0gW10pOiB0cy5Tb3VyY2VGaWxlIHtcbiAgLy8gR2VuZXJhdGUgdGhlIGltcG9ydCBzdGF0ZW1lbnRzIHRvIHByZXBlbmQuXG4gIGNvbnN0IGFkZGVkSW1wb3J0cyA9IGltcG9ydE1hbmFnZXIuZ2V0QWxsSW1wb3J0cyhzZi5maWxlTmFtZSkubWFwKGkgPT4ge1xuICAgIGNvbnN0IHF1YWxpZmllciA9IHRzLmNyZWF0ZUlkZW50aWZpZXIoaS5xdWFsaWZpZXIudGV4dCk7XG4gICAgY29uc3QgaW1wb3J0Q2xhdXNlID0gdHMuY3JlYXRlSW1wb3J0Q2xhdXNlKFxuICAgICAgICAvKiBuYW1lICovIHVuZGVmaW5lZCxcbiAgICAgICAgLyogbmFtZWRCaW5kaW5ncyAqLyB0cy5jcmVhdGVOYW1lc3BhY2VJbXBvcnQocXVhbGlmaWVyKSk7XG4gICAgY29uc3QgZGVjbCA9IHRzLmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKFxuICAgICAgICAvKiBkZWNvcmF0b3JzICovIHVuZGVmaW5lZCxcbiAgICAgICAgLyogbW9kaWZpZXJzICovIHVuZGVmaW5lZCxcbiAgICAgICAgLyogaW1wb3J0Q2xhdXNlICovIGltcG9ydENsYXVzZSxcbiAgICAgICAgLyogbW9kdWxlU3BlY2lmaWVyICovIHRzLmNyZWF0ZUxpdGVyYWwoaS5zcGVjaWZpZXIpKTtcblxuICAgIC8vIFNldCB0aGUgcXVhbGlmaWVyJ3Mgb3JpZ2luYWwgVFMgbm9kZSB0byB0aGUgYHRzLkltcG9ydERlY2xhcmF0aW9uYC4gVGhpcyBhbGxvd3MgZG93bnN0cmVhbVxuICAgIC8vIHRyYW5zZm9ybXMgc3VjaCBhcyB0c2lja2xlIHRvIHByb3Blcmx5IHByb2Nlc3MgcmVmZXJlbmNlcyB0byB0aGlzIGltcG9ydC5cbiAgICAvL1xuICAgIC8vIFRoaXMgb3BlcmF0aW9uIGlzIGxvYWQtYmVhcmluZyBpbiBnMyBhcyBzb21lIGltcG9ydGVkIG1vZHVsZXMgY29udGFpbiBzcGVjaWFsIG1ldGFkYXRhXG4gICAgLy8gZ2VuZXJhdGVkIGJ5IGNsdXR6LCB3aGljaCB0c2lja2xlIHVzZXMgdG8gdHJhbnNmb3JtIGltcG9ydHMgYW5kIHJlZmVyZW5jZXMgdG8gdGhvc2UgaW1wb3J0cy5cbiAgICAvL1xuICAgIC8vIFRPRE8oYWx4aHViKTogYWRkIGEgdGVzdCBmb3IgdGhpcyB3aGVuIHRzaWNrbGUgaXMgdXBkYXRlZCBleHRlcm5hbGx5IHRvIGRlcGVuZCBvbiB0aGlzXG4gICAgLy8gYmVoYXZpb3IuXG4gICAgdHMuc2V0T3JpZ2luYWxOb2RlKGkucXVhbGlmaWVyLCBkZWNsKTtcblxuICAgIHJldHVybiBkZWNsO1xuICB9KTtcblxuICAvLyBGaWx0ZXIgb3V0IHRoZSBleGlzdGluZyBpbXBvcnRzIGFuZCB0aGUgc291cmNlIGZpbGUgYm9keS4gQWxsIG5ldyBzdGF0ZW1lbnRzXG4gIC8vIHdpbGwgYmUgaW5zZXJ0ZWQgYmV0d2VlbiB0aGVtLlxuICBjb25zdCBleGlzdGluZ0ltcG9ydHMgPSBzZi5zdGF0ZW1lbnRzLmZpbHRlcihzdG10ID0+IGlzSW1wb3J0U3RhdGVtZW50KHN0bXQpKTtcbiAgY29uc3QgYm9keSA9IHNmLnN0YXRlbWVudHMuZmlsdGVyKHN0bXQgPT4gIWlzSW1wb3J0U3RhdGVtZW50KHN0bXQpKTtcbiAgLy8gUHJlcGVuZCBpbXBvcnRzIGlmIG5lZWRlZC5cbiAgaWYgKGFkZGVkSW1wb3J0cy5sZW5ndGggPiAwKSB7XG4gICAgLy8gSWYgd2UgcHJlcGVuZCBpbXBvcnRzLCB3ZSBhbHNvIHByZXBlbmQgTm90RW1pdHRlZFN0YXRlbWVudCB0byB1c2UgaXQgYXMgYW4gYW5jaG9yXG4gICAgLy8gZm9yIEBmaWxlb3ZlcnZpZXcgQ2xvc3VyZSBhbm5vdGF0aW9uLiBJZiB0aGVyZSBpcyBubyBAZmlsZW92ZXJ2aWV3IGFubm90YXRpb25zLCB0aGlzXG4gICAgLy8gc3RhdGVtZW50IHdvdWxkIGJlIGEgbm9vcC5cbiAgICBjb25zdCBmaWxlb3ZlcnZpZXdBbmNob3JTdG10ID0gdHMuY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudChzZik7XG4gICAgcmV0dXJuIHRzLnVwZGF0ZVNvdXJjZUZpbGVOb2RlKHNmLCB0cy5jcmVhdGVOb2RlQXJyYXkoW1xuICAgICAgZmlsZW92ZXJ2aWV3QW5jaG9yU3RtdCwgLi4uZXhpc3RpbmdJbXBvcnRzLCAuLi5hZGRlZEltcG9ydHMsIC4uLmV4dHJhU3RhdGVtZW50cywgLi4uYm9keVxuICAgIF0pKTtcbiAgfVxuXG4gIHJldHVybiBzZjtcbn1cblxuZnVuY3Rpb24gaXNJbXBvcnRTdGF0ZW1lbnQoc3RtdDogdHMuU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiB0cy5pc0ltcG9ydERlY2xhcmF0aW9uKHN0bXQpIHx8IHRzLmlzSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oc3RtdCkgfHxcbiAgICAgIHRzLmlzTmFtZXNwYWNlSW1wb3J0KHN0bXQpO1xufVxuIl19
|
|
File without changes
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
export { Context } from './src/context';
|
|
9
|
-
export { ImportManager } from './src/import_manager';
|
|
10
|
-
export { ExpressionTranslatorVisitor } from './src/translator';
|
|
11
|
-
export { translateType } from './src/type_translator';
|
|
12
|
-
export { attachComments, createTemplateMiddle, createTemplateTail, TypeScriptAstFactory } from './src/typescript_ast_factory';
|
|
13
|
-
export { translateExpression, translateStatement } from './src/typescript_translator';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3RyYW5zbGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBSUgsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQVMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFDLDJCQUEyQixFQUF5QyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUgsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IHtBc3RGYWN0b3J5LCBCaW5hcnlPcGVyYXRvciwgTGVhZGluZ0NvbW1lbnQsIE9iamVjdExpdGVyYWxQcm9wZXJ0eSwgU291cmNlTWFwTG9jYXRpb24sIFNvdXJjZU1hcFJhbmdlLCBUZW1wbGF0ZUVsZW1lbnQsIFRlbXBsYXRlTGl0ZXJhbCwgVW5hcnlPcGVyYXRvciwgVmFyaWFibGVEZWNsYXJhdGlvblR5cGV9IGZyb20gJy4vc3JjL2FwaS9hc3RfZmFjdG9yeSc7XG5leHBvcnQge0ltcG9ydEdlbmVyYXRvciwgTmFtZWRJbXBvcnR9IGZyb20gJy4vc3JjL2FwaS9pbXBvcnRfZ2VuZXJhdG9yJztcbmV4cG9ydCB7Q29udGV4dH0gZnJvbSAnLi9zcmMvY29udGV4dCc7XG5leHBvcnQge0ltcG9ydCwgSW1wb3J0TWFuYWdlcn0gZnJvbSAnLi9zcmMvaW1wb3J0X21hbmFnZXInO1xuZXhwb3J0IHtFeHByZXNzaW9uVHJhbnNsYXRvclZpc2l0b3IsIFJlY29yZFdyYXBwZWROb2RlRm4sIFRyYW5zbGF0b3JPcHRpb25zfSBmcm9tICcuL3NyYy90cmFuc2xhdG9yJztcbmV4cG9ydCB7dHJhbnNsYXRlVHlwZX0gZnJvbSAnLi9zcmMvdHlwZV90cmFuc2xhdG9yJztcbmV4cG9ydCB7YXR0YWNoQ29tbWVudHMsIGNyZWF0ZVRlbXBsYXRlTWlkZGxlLCBjcmVhdGVUZW1wbGF0ZVRhaWwsIFR5cGVTY3JpcHRBc3RGYWN0b3J5fSBmcm9tICcuL3NyYy90eXBlc2NyaXB0X2FzdF9mYWN0b3J5JztcbmV4cG9ydCB7dHJhbnNsYXRlRXhwcmVzc2lvbiwgdHJhbnNsYXRlU3RhdGVtZW50fSBmcm9tICcuL3NyYy90eXBlc2NyaXB0X3RyYW5zbGF0b3InO1xuIl19
|
|
@@ -1,9 +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 {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0X2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3RyYW5zbGF0b3Ivc3JjL2FwaS9hc3RfZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBVc2VkIHRvIGNyZWF0ZSB0cmFuc3BpbGVyIHNwZWNpZmljIEFTVCBub2RlcyBmcm9tIEFuZ3VsYXIgT3V0cHV0IEFTVCBub2RlcyBpbiBhbiBhYnN0cmFjdCB3YXkuXG4gKlxuICogTm90ZSB0aGF0IHRoZSBgQXN0RmFjdG9yeWAgbWFrZXMgbm8gYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHRhcmdldCBsYW5ndWFnZSBiZWluZyBnZW5lcmF0ZWQuXG4gKiBJdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvIGRvIHRoaXMgLSBlLmcuIG9ubHkgY2FsbCBgY3JlYXRlVGFnZ2VkVGVtcGxhdGUoKWAgb3IgcGFzcyBgbGV0YHxgY29uc3RgXG4gKiB0byBgY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbigpYCBpZiB0aGUgZmluYWwgSlMgd2lsbCBhbGxvdyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3RGYWN0b3J5PFRTdGF0ZW1lbnQsIFRFeHByZXNzaW9uPiB7XG4gIC8qKlxuICAgKiBBdHRhY2ggdGhlIGBsZWFkaW5nQ29tbWVudHNgIHRvIHRoZSBnaXZlbiBgc3RhdGVtZW50YCBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IHRoZSBzdGF0ZW1lbnQgd2hlcmUgdGhlIGNvbW1lbnRzIGFyZSB0byBiZSBhdHRhY2hlZC5cbiAgICogQHBhcmFtIGxlYWRpbmdDb21tZW50cyB0aGUgY29tbWVudHMgdG8gYXR0YWNoLlxuICAgKi9cbiAgYXR0YWNoQ29tbWVudHMoc3RhdGVtZW50OiBUU3RhdGVtZW50LCBsZWFkaW5nQ29tbWVudHM6IExlYWRpbmdDb21tZW50W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBsaXRlcmFsIGFycmF5IGV4cHJlc2lvbiAoZS5nLiBgW2V4cHIxLCBleHByMl1gKS5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRzIGEgY29sbGVjdGlvbiBvZiB0aGUgZXhwcmVzc2lvbnMgdG8gYXBwZWFyIGluIGVhY2ggYXJyYXkgc2xvdC5cbiAgICovXG4gIGNyZWF0ZUFycmF5TGl0ZXJhbChlbGVtZW50czogVEV4cHJlc3Npb25bXSk6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gYXNzaWdubWVudCBleHByZXNzaW9uIChlLmcuIGBsaHNFeHByID0gcmhzRXhwcmApLlxuICAgKlxuICAgKiBAcGFyYW0gdGFyZ2V0IGFuIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgYXNzaWdubWVudC5cbiAgICogQHBhcmFtIHZhbHVlIGFuIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGFzc2lnbm1lbnQuXG4gICAqL1xuICBjcmVhdGVBc3NpZ25tZW50KHRhcmdldDogVEV4cHJlc3Npb24sIHZhbHVlOiBURXhwcmVzc2lvbik6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiaW5hcnkgZXhwcmVzc2lvbiAoZS5nLiBgbGhzICYmIHJoc2ApLlxuICAgKlxuICAgKiBAcGFyYW0gbGVmdE9wZXJhbmQgYW4gZXhwcmVzc2lvbiB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBsZWZ0IG9mIHRoZSBvcGVyYXRvci5cbiAgICogQHBhcmFtIG9wZXJhdG9yIHRoZSBiaW5hcnkgb3BlcmF0b3IgdGhhdCB3aWxsIGJlIGFwcGxpZWQuXG4gICAqIEBwYXJhbSByaWdodE9wZXJhbmQgYW4gZXhwcmVzc2lvbiB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSByaWdodCBvZiB0aGUgb3BlcmF0b3IuXG4gICAqL1xuICBjcmVhdGVCaW5hcnlFeHByZXNzaW9uKFxuICAgICAgbGVmdE9wZXJhbmQ6IFRFeHByZXNzaW9uLCBvcGVyYXRvcjogQmluYXJ5T3BlcmF0b3IsIHJpZ2h0T3BlcmFuZDogVEV4cHJlc3Npb24pOiBURXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgYmxvY2sgb2Ygc3RhdGVtZW50cyAoZS5nLiBgeyBzdG10MTsgc3RtdDI7IH1gKS5cbiAgICpcbiAgICogQHBhcmFtIGJvZHkgYW4gYXJyYXkgb2Ygc3RhdGVtZW50cyB0byBiZSB3cmFwcGVkIGluIGEgYmxvY2suXG4gICAqL1xuICBjcmVhdGVCbG9jayhib2R5OiBUU3RhdGVtZW50W10pOiBUU3RhdGVtZW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIGNhbGxpbmcgdGhlIGBjYWxsZWVgIHdpdGggdGhlIGdpdmVuIGBhcmdzYC5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxlZSBhbiBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLlxuICAgKiBAcGFyYW0gYXJncyB0aGUgYXJ1Z21lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgY2FsbC5cbiAgICogQHBhcmFtIHB1cmUgd2hldGhlciB0byBtYXJrIHRoZSBjYWxsIGFzIHB1cmUgKGhhdmluZyBubyBzaWRlLWVmZmVjdHMpLlxuICAgKi9cbiAgY3JlYXRlQ2FsbEV4cHJlc3Npb24oY2FsbGVlOiBURXhwcmVzc2lvbiwgYXJnczogVEV4cHJlc3Npb25bXSwgcHVyZTogYm9vbGVhbik6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB0ZXJuYXJ5IGV4cHJlc3Npb24gKGUuZy4gYHRlc3RFeHByID8gdHJ1ZUV4cHIgOiBmYWxzZUV4cHJgKS5cbiAgICpcbiAgICogQHBhcmFtIGNvbmRpdGlvbiBhbiBleHByZXNzaW9uIHRoYXQgd2lsbCBiZSB0ZXN0ZWQgZm9yIHRydXRoaW5lc3MuXG4gICAqIEBwYXJhbSB0aGVuRXhwcmVzc2lvbiBhbiBleHByZXNzaW9uIHRoYXQgaXMgZXhlY3V0ZWQgaWYgYGNvbmRpdGlvbmAgaXMgdHJ1dGh5LlxuICAgKiBAcGFyYW0gZWxzZUV4cHJlc3Npb24gYW4gZXhwcmVzc2lvbiB0aGF0IGlzIGV4ZWN1dGVkIGlmIGBjb25kaXRpb25gIGlzIGZhbHN5LlxuICAgKi9cbiAgY3JlYXRlQ29uZGl0aW9uYWwoXG4gICAgICBjb25kaXRpb246IFRFeHByZXNzaW9uLCB0aGVuRXhwcmVzc2lvbjogVEV4cHJlc3Npb24sXG4gICAgICBlbHNlRXhwcmVzc2lvbjogVEV4cHJlc3Npb24pOiBURXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGVsZW1lbnQgYWNjZXNzIChlLmcuIGBvYmpbZXhwcl1gKS5cbiAgICpcbiAgICogQHBhcmFtIGV4cHJlc3Npb24gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byB0aGUgb2JqZWN0IHRvIGJlIGFjY2Vzc2VkLlxuICAgKiBAcGFyYW0gZWxlbWVudCBhbiBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIHRoZSBlbGVtZW50IG9uIHRoZSBvYmplY3QuXG4gICAqL1xuICBjcmVhdGVFbGVtZW50QWNjZXNzKGV4cHJlc3Npb246IFRFeHByZXNzaW9uLCBlbGVtZW50OiBURXhwcmVzc2lvbik6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdGF0ZW1lbnQgdGhhdCBpcyBzaW1wbHkgZXhlY3V0aW5nIHRoZSBnaXZlbiBgZXhwcmVzc2lvbmAgKGUuZy4gYHggPSAxMDtgKS5cbiAgICpcbiAgICogQHBhcmFtIGV4cHJlc3Npb24gdGhlIGV4cHJlc3Npb24gdG8gYmUgY29udmVydGVkIHRvIGEgc3RhdGVtZW50LlxuICAgKi9cbiAgY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByZXNzaW9uOiBURXhwcmVzc2lvbik6IFRTdGF0ZW1lbnQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHN0YXRlbWVudCB0aGF0IGRlY2xhcmVzIGEgZnVuY3Rpb24gKGUuZy4gYGZ1bmN0aW9uIGZvbyhwYXJhbTEsIHBhcmFtMikgeyBzdG10OyB9YCkuXG4gICAqXG4gICAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyB0aGUgbmFtZXMgb2YgdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGJvZHkgYSBzdGF0ZW1lbnQgKG9yIGEgYmxvY2sgb2Ygc3RhdGVtZW50cykgdGhhdCBhcmUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbihmdW5jdGlvbk5hbWU6IHN0cmluZywgcGFyYW1ldGVyczogc3RyaW5nW10sIGJvZHk6IFRTdGF0ZW1lbnQpOlxuICAgICAgVFN0YXRlbWVudDtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGV4cHJlc3Npb24gdGhhdCByZXByZXNlbnRzIGEgZnVuY3Rpb25cbiAgICogKGUuZy4gYGZ1bmN0aW9uIGZvbyhwYXJhbTEsIHBhcmFtMikgeyBzdG10OyB9YCkuXG4gICAqXG4gICAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyB0aGUgbmFtZXMgb2YgdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGJvZHkgYSBzdGF0ZW1lbnQgKG9yIGEgYmxvY2sgb2Ygc3RhdGVtZW50cykgdGhhdCBhcmUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGZ1bmN0aW9uTmFtZTogc3RyaW5nfG51bGwsIHBhcmFtZXRlcnM6IHN0cmluZ1tdLCBib2R5OiBUU3RhdGVtZW50KTpcbiAgICAgIFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaWRlbnRpZmllci5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGlkZW50aWZpZXIuXG4gICAqL1xuICBjcmVhdGVJZGVudGlmaWVyKG5hbWU6IHN0cmluZyk6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaWYgc3RhdGVtZW50IChlLmcuIGBpZiAodGVzdEV4cHIpIHsgdHJ1ZVN0bXQ7IH0gZWxzZSB7IGZhbHNlU3RtdDsgfWApLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZGl0aW9uIGFuIGV4cHJlc3Npb24gdGhhdCB3aWxsIGJlIHRlc3RlZCBmb3IgdHJ1dGhpbmVzcy5cbiAgICogQHBhcmFtIHRoZW5TdGF0ZW1lbnQgYSBzdGF0ZW1lbnQgKG9yIGJsb2NrIG9mIHN0YXRlbWVudHMpIHRoYXQgaXMgZXhlY3V0ZWQgaWYgYGNvbmRpdGlvbmAgaXNcbiAgICogICAgIHRydXRoeS5cbiAgICogQHBhcmFtIGVsc2VTdGF0ZW1lbnQgYSBzdGF0ZW1lbnQgKG9yIGJsb2NrIG9mIHN0YXRlbWVudHMpIHRoYXQgaXMgZXhlY3V0ZWQgaWYgYGNvbmRpdGlvbmAgaXNcbiAgICogICAgIGZhbHN5LlxuICAgKi9cbiAgY3JlYXRlSWZTdGF0ZW1lbnQoXG4gICAgICBjb25kaXRpb246IFRFeHByZXNzaW9uLCB0aGVuU3RhdGVtZW50OiBUU3RhdGVtZW50LFxuICAgICAgZWxzZVN0YXRlbWVudDogVFN0YXRlbWVudHxudWxsKTogVFN0YXRlbWVudDtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2ltcGxlIGxpdGVyYWwgKGUuZy4gYFwic3RyaW5nXCJgLCBgMTIzYCwgYGZhbHNlYCwgZXRjKS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSBvZiB0aGUgbGl0ZXJhbC5cbiAgICovXG4gIGNyZWF0ZUxpdGVyYWwodmFsdWU6IHN0cmluZ3xudW1iZXJ8Ym9vbGVhbnxudWxsfHVuZGVmaW5lZCk6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIGluc3RhbnRpYXRpbmcgdGhlIGBleHByZXNzaW9uYCBhcyBhIGNsYXNzLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwcmVzc2lvbiBhbiBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgY29uc3RydWN0b3IgdG8gYmUgaW5zdGFudGlhdGVkLlxuICAgKiBAcGFyYW0gYXJncyB0aGUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuXG4gICAqL1xuICBjcmVhdGVOZXdFeHByZXNzaW9uKGV4cHJlc3Npb246IFRFeHByZXNzaW9uLCBhcmdzOiBURXhwcmVzc2lvbltdKTogVEV4cHJlc3Npb247XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxpdGVyYWwgb2JqZWN0IGV4cHJlc3Npb24gKGUuZy4gYHsgcHJvcDE6IGV4cHIxLCBwcm9wMjogZXhwcjIgfWApLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydGllcyB0aGUgcHJvcGVydGllcyAoa2V5IGFuZCB2YWx1ZSkgdG8gYXBwZWFyIGluIHRoZSBvYmplY3QuXG4gICAqL1xuICBjcmVhdGVPYmplY3RMaXRlcmFsKHByb3BlcnRpZXM6IE9iamVjdExpdGVyYWxQcm9wZXJ0eTxURXhwcmVzc2lvbj5bXSk6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBXcmFwIGFuIGV4cHJlc3Npb24gaW4gcGFyZW50aGVzZXMuXG4gICAqXG4gICAqIEBwYXJhbSBleHByZXNzaW9uIHRoZSBleHByZXNzaW9uIHRvIHdyYXAgaW4gcGFyZW50aGVzZXMuXG4gICAqL1xuICBjcmVhdGVQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihleHByZXNzaW9uOiBURXhwcmVzc2lvbik6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBwcm9wZXJ0eSBhY2Nlc3MgKGUuZy4gYG9iai5wcm9wYCkuXG4gICAqXG4gICAqIEBwYXJhbSBleHByZXNzaW9uIGFuIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gdGhlIG9iamVjdCB0byBiZSBhY2Nlc3NlZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gYWNjZXNzLlxuICAgKi9cbiAgY3JlYXRlUHJvcGVydHlBY2Nlc3MoZXhwcmVzc2lvbjogVEV4cHJlc3Npb24sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogVEV4cHJlc3Npb247XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJldHVybiBzdGF0ZW1lbnQgKGUuZyBgcmV0dXJuIGV4cHI7YCkuXG4gICAqXG4gICAqIEBwYXJhbSBleHByZXNzaW9uIHRoZSBleHByZXNzaW9uIHRvIGJlIHJldHVybmVkLlxuICAgKi9cbiAgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGV4cHJlc3Npb246IFRFeHByZXNzaW9ufG51bGwpOiBUU3RhdGVtZW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB0YWdnZWQgdGVtcGxhdGUgbGl0ZXJhbCBzdHJpbmcuIEUuZy5cbiAgICpcbiAgICogYGBgXG4gICAqIHRhZ2BzdHIxJHtleHByMX1zdHIyJHtleHByMn1zdHIzYFxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHRhZyBhbiBleHByZXNzaW9uIHRoYXQgaXMgYXBwbGllZCBhcyBhIHRhZyBoYW5kbGVyIGZvciB0aGlzIHRlbXBsYXRlIHN0cmluZy5cbiAgICogQHBhcmFtIHRlbXBsYXRlIHRoZSBjb2xsZWN0aW9uIG9mIHN0cmluZ3MgYW5kIGV4cHJlc3Npb25zIHRoYXQgY29uc3RpdHV0ZSBhbiBpbnRlcnBvbGF0ZWRcbiAgICogICAgIHRlbXBsYXRlIGxpdGVyYWwuXG4gICAqL1xuICBjcmVhdGVUYWdnZWRUZW1wbGF0ZSh0YWc6IFRFeHByZXNzaW9uLCB0ZW1wbGF0ZTogVGVtcGxhdGVMaXRlcmFsPFRFeHByZXNzaW9uPik6IFRFeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB0aHJvdyBzdGF0ZW1lbnQgKGUuZy4gYHRocm93IGV4cHI7YCkuXG4gICAqXG4gICAqIEBwYXJhbSBleHByZXNzaW9uIHRoZSBleHByZXNzaW9uIHRvIGJlIHRocm93bi5cbiAgICovXG4gIGNyZWF0ZVRocm93U3RhdGVtZW50KGV4cHJlc3Npb246IFRFeHByZXNzaW9uKTogVFN0YXRlbWVudDtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGV4cHJlc3Npb24gdGhhdCBleHRyYWN0cyB0aGUgdHlwZSBvZiBhbiBleHByZXNzaW9uIChlLmcuIGB0eXBlb2YgZXhwcmApLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwcmVzc2lvbiB0aGUgZXhwcmVzc2lvbiB3aG9zZSB0eXBlIHdlIHdhbnQuXG4gICAqL1xuICBjcmVhdGVUeXBlT2ZFeHByZXNzaW9uKGV4cHJlc3Npb246IFRFeHByZXNzaW9uKTogVEV4cHJlc3Npb247XG5cbiAgLyoqXG4gICAqIFByZWZpeCB0aGUgYG9wZXJhbmRgIHdpdGggdGhlIGdpdmVuIGBvcGVyYXRvcmAgKGUuZy4gYC1leHByYCkuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRvciB0aGUgdGV4dCBvZiB0aGUgb3BlcmF0b3IgdG8gYXBwbHkgKGUuZy4gYCtgLCBgLWAgb3IgYCFgKS5cbiAgICogQHBhcmFtIG9wZXJhbmQgdGhlIGV4cHJlc3Npb24gdGhhdCB0aGUgb3BlcmF0b3IgYXBwbGllcyB0by5cbiAgICovXG4gIGNyZWF0ZVVuYXJ5RXhwcmVzc2lvbihvcGVyYXRvcjogVW5hcnlPcGVyYXRvciwgb3BlcmFuZDogVEV4cHJlc3Npb24pOiBURXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGV4cHJlc3Npb24gdGhhdCBkZWNsYXJlcyBhIG5ldyB2YXJpYWJsZSwgcG9zc2libHkgaW5pdGlhbGl6ZWQgdG8gYGluaXRpYWxpemVyYC5cbiAgICpcbiAgICogQHBhcmFtIHZhcmlhYmxlTmFtZSB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuXG4gICAqIEBwYXJhbSBpbml0aWFsaXplciBpZiBub3QgYG51bGxgIHRoZW4gdGhpcyBleHByZXNzaW9uIGlzIGFzc2lnbmVkIHRvIHRoZSBkZWNsYXJlZCB2YXJpYWJsZS5cbiAgICogQHBhcmFtIHR5cGUgd2hldGhlciB0aGlzIHZhcmlhYmxlIHNob3VsZCBiZSBkZWNsYXJlZCBhcyBgdmFyYCwgYGxldGAgb3IgYGNvbnN0YC5cbiAgICovXG4gIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgICB2YXJpYWJsZU5hbWU6IHN0cmluZywgaW5pdGlhbGl6ZXI6IFRFeHByZXNzaW9ufG51bGwsXG4gICAgICB0eXBlOiBWYXJpYWJsZURlY2xhcmF0aW9uVHlwZSk6IFRTdGF0ZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBhIHNvdXJjZSBtYXAgcmFuZ2UgdG8gdGhlIGdpdmVuIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBub2RlIHRoZSBub2RlIHRvIHdoaWNoIHRoZSByYW5nZSBzaG91bGQgYmUgYXR0YWNoZWQuXG4gICAqIEBwYXJhbSBzb3VyY2VNYXBSYW5nZSB0aGUgcmFuZ2UgdG8gYXR0YWNoIHRvIHRoZSBub2RlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIHJhbmdlIHRvIGF0dGFjaC5cbiAgICogQHJldHVybnMgdGhlIGBub2RlYCB3aXRoIHRoZSBgc291cmNlTWFwUmFuZ2VgIGF0dGFjaGVkLlxuICAgKi9cbiAgc2V0U291cmNlTWFwUmFuZ2U8VCBleHRlbmRzIFRTdGF0ZW1lbnR8VEV4cHJlc3Npb24+KG5vZGU6IFQsIHNvdXJjZU1hcFJhbmdlOiBTb3VyY2VNYXBSYW5nZXxudWxsKTpcbiAgICAgIFQ7XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmFyaWFibGVEZWNsYXJhdGlvblR5cGUgPSAnY29uc3QnfCdsZXQnfCd2YXInO1xuXG4vKipcbiAqIFRoZSB1bmFyeSBvcGVyYXRvcnMgc3VwcG9ydGVkIGJ5IHRoZSBgQXN0RmFjdG9yeWAuXG4gKi9cbmV4cG9ydCB0eXBlIFVuYXJ5T3BlcmF0b3IgPSAnKyd8Jy0nfCchJztcblxuLyoqXG4gKiBUaGUgYmluYXJ5IG9wZXJhdG9ycyBzdXBwb3J0ZWQgYnkgdGhlIGBBc3RGYWN0b3J5YC5cbiAqL1xuZXhwb3J0IHR5cGUgQmluYXJ5T3BlcmF0b3IgPVxuICAgICcmJid8Jz4nfCc+PSd8JyYnfCcvJ3wnPT0nfCc9PT0nfCc8J3wnPD0nfCctJ3wnJSd8JyonfCchPSd8JyE9PSd8J3x8J3wnKyd8Jz8/JztcblxuLyoqXG4gKiBUaGUgb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhlIHN0YXJ0IG9yIGVuZCBvZiBhIG5vZGUgY3JlYXRlZCBieSB0aGUgYEFzdEZhY3RvcnlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZU1hcExvY2F0aW9uIHtcbiAgLyoqIDAtYmFzZWQgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIHRoZSBsb2NhdGlvbiBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUuICovXG4gIG9mZnNldDogbnVtYmVyO1xuICAvKiogMC1iYXNlZCBsaW5lIGluZGV4IG9mIHRoZSBsb2NhdGlvbiBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUuICovXG4gIGxpbmU6IG51bWJlcjtcbiAgLyoqIDAtYmFzZWQgY29sdW1uIHBvc2l0aW9uIG9mIHRoZSBsb2NhdGlvbiBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUuICovXG4gIGNvbHVtbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBvcmlnaW5hbCByYW5nZSBvZiBhIG5vZGUgY3JlYXRlZCBieSB0aGUgYEFzdEZhY3RvcnlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZU1hcFJhbmdlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgc3RhcnQ6IFNvdXJjZU1hcExvY2F0aW9uO1xuICBlbmQ6IFNvdXJjZU1hcExvY2F0aW9uO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIHVzZWQgYnkgdGhlIGBBc3RGYWN0b3J5YCB0byBjcmVhdGUgYSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QgbGl0ZXJhbCBleHByZXNzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdExpdGVyYWxQcm9wZXJ0eTxURXhwcmVzc2lvbj4ge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgdmFsdWU6IFRFeHByZXNzaW9uO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgYHByb3BlcnR5TmFtZWAgc2hvdWxkIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy5cbiAgICovXG4gIHF1b3RlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiB1c2VkIGJ5IHRoZSBgQXN0RmFjdG9yeWAgdG8gY3JlYXRlIGEgdGVtcGxhdGUgbGl0ZXJhbCBzdHJpbmcgKGkuZS4gYSBiYWNrLXRpY2tlZFxuICogc3RyaW5nIHdpdGggaW50ZXJwb2xhdGlvbnMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlTGl0ZXJhbDxURXhwcmVzc2lvbj4ge1xuICAvKipcbiAgICogQSBjb2xsZWN0aW9uIG9mIHRoZSBzdGF0aWMgc3RyaW5nIHBpZWNlcyBvZiB0aGUgaW50ZXJwb2xhdGVkIHRlbXBsYXRlIGxpdGVyYWwgc3RyaW5nLlxuICAgKi9cbiAgZWxlbWVudHM6IFRlbXBsYXRlRWxlbWVudFtdO1xuICAvKipcbiAgICogQSBjb2xsZWN0aW9uIG9mIHRoZSBpbnRlcnBvbGF0ZWQgZXhwcmVzc2lvbnMgdGhhdCBhcmUgaW50ZXJsZWF2ZWQgYmV0d2VlbiB0aGUgZWxlbWVudHMuXG4gICAqL1xuICBleHByZXNzaW9uczogVEV4cHJlc3Npb25bXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIHN0YXRpYyBzdHJpbmcgcGllY2Ugb2YgYW4gaW50ZXJwb2xhdGVkIHRlbXBsYXRlIGxpdGVyYWwgc3RyaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRWxlbWVudCB7XG4gIC8qKiBUaGUgcmF3IHN0cmluZyBhcyBpdCB3YXMgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLiAqL1xuICByYXc6IHN0cmluZztcbiAgLyoqIFRoZSBwYXJzZWQgc3RyaW5nLCB3aXRoIGVzY2FwZSBjb2RlcyBldGMgcHJvY2Vzc2VkLiAqL1xuICBjb29rZWQ6IHN0cmluZztcbiAgLyoqIFRoZSBvcmlnaW5hbCBsb2NhdGlvbiBvZiB0aGlzIHBpZWNlIG9mIHRoZSB0ZW1wbGF0ZSBsaXRlcmFsIHN0cmluZy4gKi9cbiAgcmFuZ2U6IFNvdXJjZU1hcFJhbmdlfG51bGw7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gdXNlZCBieSB0aGUgYEFzdEZhY3RvcnlgIHRvIHByZXBlbmQgYSBjb21tZW50IHRvIGEgc3RhdGVtZW50IHRoYXQgd2FzIGNyZWF0ZWQgYnkgdGhlXG4gKiBgQXN0RmFjdG9yeWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVhZGluZ0NvbW1lbnQge1xuICB0b1N0cmluZygpOiBzdHJpbmc7XG4gIG11bHRpbGluZTogYm9vbGVhbjtcbiAgdHJhaWxpbmdOZXdsaW5lOiBib29sZWFuO1xufVxuIl19
|
|
@@ -1,9 +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 {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0X2dlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHJhbnNsYXRvci9zcmMvYXBpL2ltcG9ydF9nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogVGhlIHN5bWJvbCBuYW1lIGFuZCBpbXBvcnQgbmFtZXNwYWNlIG9mIGFuIGltcG9ydGVkIHN5bWJvbCxcbiAqIHdoaWNoIGhhcyBiZWVuIHJlZ2lzdGVyZWQgdGhyb3VnaCB0aGUgSW1wb3J0R2VuZXJhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkSW1wb3J0PFRFeHByZXNzaW9uPiB7XG4gIC8qKiBUaGUgaW1wb3J0IG5hbWVzcGFjZSBjb250YWluaW5nIHRoaXMgaW1wb3J0ZWQgc3ltYm9sLiAqL1xuICBtb2R1bGVJbXBvcnQ6IFRFeHByZXNzaW9ufG51bGw7XG4gIC8qKiBUaGUgKHBvc3NpYmx5IHJld3JpdHRlbikgbmFtZSBvZiB0aGUgaW1wb3J0ZWQgc3ltYm9sLiAqL1xuICBzeW1ib2w6IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBpbXBvcnQgaW5mb3JtYXRpb24gYmFzZWQgb24gdGhlIGNvbnRleHQgb2YgdGhlIGNvZGUgYmVpbmcgZ2VuZXJhdGVkLlxuICpcbiAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGVzZSBtZXRob2RzIHJldHVybiBhIHNwZWNpZmljIGlkZW50aWZpZXIgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgaW1wb3J0ZWRcbiAqIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRHZW5lcmF0b3I8VEV4cHJlc3Npb24+IHtcbiAgZ2VuZXJhdGVOYW1lc3BhY2VJbXBvcnQobW9kdWxlTmFtZTogc3RyaW5nKTogVEV4cHJlc3Npb247XG4gIGdlbmVyYXRlTmFtZWRJbXBvcnQobW9kdWxlTmFtZTogc3RyaW5nLCBvcmlnaW5hbFN5bWJvbDogc3RyaW5nKTogTmFtZWRJbXBvcnQ8VEV4cHJlc3Npb24+O1xufVxuIl19
|
|
@@ -1,24 +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
|
-
* The current context of a translator visitor as it traverses the AST tree.
|
|
10
|
-
*
|
|
11
|
-
* It tracks whether we are in the process of outputting a statement or an expression.
|
|
12
|
-
*/
|
|
13
|
-
export class Context {
|
|
14
|
-
constructor(isStatement) {
|
|
15
|
-
this.isStatement = isStatement;
|
|
16
|
-
}
|
|
17
|
-
get withExpressionMode() {
|
|
18
|
-
return this.isStatement ? new Context(false) : this;
|
|
19
|
-
}
|
|
20
|
-
get withStatementMode() {
|
|
21
|
-
return !this.isStatement ? new Context(true) : this;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHJhbnNsYXRvci9zcmMvY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLE9BQU87SUFDbEIsWUFBcUIsV0FBb0I7UUFBcEIsZ0JBQVcsR0FBWCxXQUFXLENBQVM7SUFBRyxDQUFDO0lBRTdDLElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogVGhlIGN1cnJlbnQgY29udGV4dCBvZiBhIHRyYW5zbGF0b3IgdmlzaXRvciBhcyBpdCB0cmF2ZXJzZXMgdGhlIEFTVCB0cmVlLlxuICpcbiAqIEl0IHRyYWNrcyB3aGV0aGVyIHdlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBvdXRwdXR0aW5nIGEgc3RhdGVtZW50IG9yIGFuIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZXh0IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgaXNTdGF0ZW1lbnQ6IGJvb2xlYW4pIHt9XG5cbiAgZ2V0IHdpdGhFeHByZXNzaW9uTW9kZSgpOiBDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5pc1N0YXRlbWVudCA/IG5ldyBDb250ZXh0KGZhbHNlKSA6IHRoaXM7XG4gIH1cblxuICBnZXQgd2l0aFN0YXRlbWVudE1vZGUoKTogQ29udGV4dCB7XG4gICAgcmV0dXJuICF0aGlzLmlzU3RhdGVtZW50ID8gbmV3IENvbnRleHQodHJ1ZSkgOiB0aGlzO1xuICB9XG59XG4iXX0=
|
|
@@ -1,48 +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 { NoopImportRewriter } from '../../imports';
|
|
10
|
-
export class ImportManager {
|
|
11
|
-
constructor(rewriter = new NoopImportRewriter(), prefix = 'i') {
|
|
12
|
-
this.rewriter = rewriter;
|
|
13
|
-
this.prefix = prefix;
|
|
14
|
-
this.specifierToIdentifier = new Map();
|
|
15
|
-
this.nextIndex = 0;
|
|
16
|
-
}
|
|
17
|
-
generateNamespaceImport(moduleName) {
|
|
18
|
-
if (!this.specifierToIdentifier.has(moduleName)) {
|
|
19
|
-
this.specifierToIdentifier.set(moduleName, ts.createIdentifier(`${this.prefix}${this.nextIndex++}`));
|
|
20
|
-
}
|
|
21
|
-
return this.specifierToIdentifier.get(moduleName);
|
|
22
|
-
}
|
|
23
|
-
generateNamedImport(moduleName, originalSymbol) {
|
|
24
|
-
// First, rewrite the symbol name.
|
|
25
|
-
const symbol = this.rewriter.rewriteSymbol(originalSymbol, moduleName);
|
|
26
|
-
// Ask the rewriter if this symbol should be imported at all. If not, it can be referenced
|
|
27
|
-
// directly (moduleImport: null).
|
|
28
|
-
if (!this.rewriter.shouldImportSymbol(symbol, moduleName)) {
|
|
29
|
-
// The symbol should be referenced directly.
|
|
30
|
-
return { moduleImport: null, symbol };
|
|
31
|
-
}
|
|
32
|
-
// If not, this symbol will be imported using a generated namespace import.
|
|
33
|
-
const moduleImport = this.generateNamespaceImport(moduleName);
|
|
34
|
-
return { moduleImport, symbol };
|
|
35
|
-
}
|
|
36
|
-
getAllImports(contextPath) {
|
|
37
|
-
const imports = [];
|
|
38
|
-
for (const [originalSpecifier, qualifier] of this.specifierToIdentifier) {
|
|
39
|
-
const specifier = this.rewriter.rewriteSpecifier(originalSpecifier, contextPath);
|
|
40
|
-
imports.push({
|
|
41
|
-
specifier,
|
|
42
|
-
qualifier,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return imports;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0X21hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3RyYW5zbGF0b3Ivc3JjL2ltcG9ydF9tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBaUIsa0JBQWtCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFhakUsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBc0IsV0FBMkIsSUFBSSxrQkFBa0IsRUFBRSxFQUFVLFNBQVMsR0FBRztRQUF6RSxhQUFRLEdBQVIsUUFBUSxDQUEyQztRQUFVLFdBQU0sR0FBTixNQUFNLENBQU07UUFIdkYsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDekQsY0FBUyxHQUFHLENBQUMsQ0FBQztJQUd0QixDQUFDO0lBRUQsdUJBQXVCLENBQUMsVUFBa0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FDMUIsVUFBVSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLGNBQXNCO1FBQzVELGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdkUsMEZBQTBGO1FBQzFGLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDekQsNENBQTRDO1lBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDO1NBQ3JDO1FBRUQsMkVBQTJFO1FBQzNFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5RCxPQUFPLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhLENBQUMsV0FBbUI7UUFDL0IsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBQzdCLEtBQUssTUFBTSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUN2RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2pGLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsU0FBUztnQkFDVCxTQUFTO2FBQ1YsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtJbXBvcnRSZXdyaXRlciwgTm9vcEltcG9ydFJld3JpdGVyfSBmcm9tICcuLi8uLi9pbXBvcnRzJztcbmltcG9ydCB7SW1wb3J0R2VuZXJhdG9yLCBOYW1lZEltcG9ydH0gZnJvbSAnLi9hcGkvaW1wb3J0X2dlbmVyYXRvcic7XG5cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgYW4gaW1wb3J0IHRoYXQgaGFzIGJlZW4gYWRkZWQgdG8gYSBtb2R1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0IHtcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCBoYXMgYmVlbiBpbXBvcnRlZC4gKi9cbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG4gIC8qKiBUaGUgYHRzLklkZW50aWZlcmAgYnkgd2hpY2ggdGhlIGltcG9ydGVkIG1vZHVsZSBpcyBrbm93bi4gKi9cbiAgcXVhbGlmaWVyOiB0cy5JZGVudGlmaWVyO1xufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0TWFuYWdlciBpbXBsZW1lbnRzIEltcG9ydEdlbmVyYXRvcjx0cy5JZGVudGlmaWVyPiB7XG4gIHByaXZhdGUgc3BlY2lmaWVyVG9JZGVudGlmaWVyID0gbmV3IE1hcDxzdHJpbmcsIHRzLklkZW50aWZpZXI+KCk7XG4gIHByaXZhdGUgbmV4dEluZGV4ID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmV3cml0ZXI6IEltcG9ydFJld3JpdGVyID0gbmV3IE5vb3BJbXBvcnRSZXdyaXRlcigpLCBwcml2YXRlIHByZWZpeCA9ICdpJykge1xuICB9XG5cbiAgZ2VuZXJhdGVOYW1lc3BhY2VJbXBvcnQobW9kdWxlTmFtZTogc3RyaW5nKTogdHMuSWRlbnRpZmllciB7XG4gICAgaWYgKCF0aGlzLnNwZWNpZmllclRvSWRlbnRpZmllci5oYXMobW9kdWxlTmFtZSkpIHtcbiAgICAgIHRoaXMuc3BlY2lmaWVyVG9JZGVudGlmaWVyLnNldChcbiAgICAgICAgICBtb2R1bGVOYW1lLCB0cy5jcmVhdGVJZGVudGlmaWVyKGAke3RoaXMucHJlZml4fSR7dGhpcy5uZXh0SW5kZXgrK31gKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNwZWNpZmllclRvSWRlbnRpZmllci5nZXQobW9kdWxlTmFtZSkhO1xuICB9XG5cbiAgZ2VuZXJhdGVOYW1lZEltcG9ydChtb2R1bGVOYW1lOiBzdHJpbmcsIG9yaWdpbmFsU3ltYm9sOiBzdHJpbmcpOiBOYW1lZEltcG9ydDx0cy5JZGVudGlmaWVyPiB7XG4gICAgLy8gRmlyc3QsIHJld3JpdGUgdGhlIHN5bWJvbCBuYW1lLlxuICAgIGNvbnN0IHN5bWJvbCA9IHRoaXMucmV3cml0ZXIucmV3cml0ZVN5bWJvbChvcmlnaW5hbFN5bWJvbCwgbW9kdWxlTmFtZSk7XG5cbiAgICAvLyBBc2sgdGhlIHJld3JpdGVyIGlmIHRoaXMgc3ltYm9sIHNob3VsZCBiZSBpbXBvcnRlZCBhdCBhbGwuIElmIG5vdCwgaXQgY2FuIGJlIHJlZmVyZW5jZWRcbiAgICAvLyBkaXJlY3RseSAobW9kdWxlSW1wb3J0OiBudWxsKS5cbiAgICBpZiAoIXRoaXMucmV3cml0ZXIuc2hvdWxkSW1wb3J0U3ltYm9sKHN5bWJvbCwgbW9kdWxlTmFtZSkpIHtcbiAgICAgIC8vIFRoZSBzeW1ib2wgc2hvdWxkIGJlIHJlZmVyZW5jZWQgZGlyZWN0bHkuXG4gICAgICByZXR1cm4ge21vZHVsZUltcG9ydDogbnVsbCwgc3ltYm9sfTtcbiAgICB9XG5cbiAgICAvLyBJZiBub3QsIHRoaXMgc3ltYm9sIHdpbGwgYmUgaW1wb3J0ZWQgdXNpbmcgYSBnZW5lcmF0ZWQgbmFtZXNwYWNlIGltcG9ydC5cbiAgICBjb25zdCBtb2R1bGVJbXBvcnQgPSB0aGlzLmdlbmVyYXRlTmFtZXNwYWNlSW1wb3J0KG1vZHVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIHttb2R1bGVJbXBvcnQsIHN5bWJvbH07XG4gIH1cblxuICBnZXRBbGxJbXBvcnRzKGNvbnRleHRQYXRoOiBzdHJpbmcpOiBJbXBvcnRbXSB7XG4gICAgY29uc3QgaW1wb3J0czogSW1wb3J0W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtvcmlnaW5hbFNwZWNpZmllciwgcXVhbGlmaWVyXSBvZiB0aGlzLnNwZWNpZmllclRvSWRlbnRpZmllcikge1xuICAgICAgY29uc3Qgc3BlY2lmaWVyID0gdGhpcy5yZXdyaXRlci5yZXdyaXRlU3BlY2lmaWVyKG9yaWdpbmFsU3BlY2lmaWVyLCBjb250ZXh0UGF0aCk7XG4gICAgICBpbXBvcnRzLnB1c2goe1xuICAgICAgICBzcGVjaWZpZXIsXG4gICAgICAgIHF1YWxpZmllcixcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaW1wb3J0cztcbiAgfVxufVxuIl19
|