@angular/compiler-cli 12.1.0-next.5 → 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_component_linker_1.js +2 -3
- 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/configuration.d.ts +7 -0
- package/ngcc/src/packages/configuration.js +8 -3
- package/ngcc/src/packages/entry_point_manifest.js +2 -2
- 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.d.ts +2 -0
- package/src/ngtsc/annotations/src/component.js +6 -2
- 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/api/src/public_options.d.ts +12 -0
- package/src/ngtsc/core/api/src/public_options.js +1 -1
- package/src/ngtsc/core/src/compiler.d.ts +5 -0
- package/src/ngtsc/core/src/compiler.js +10 -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 +36 -6
- package/src/ngtsc/incremental/src/state.d.ts +5 -3
- package/src/ngtsc/incremental/src/state.js +1 -1
- package/src/ngtsc/indexer/src/template.js +1 -1
- package/src/ngtsc/metadata/src/dts.js +2 -3
- package/src/ngtsc/metadata/src/inheritance.js +2 -7
- package/src/ngtsc/partial_evaluator/src/builtin.js +1 -1
- package/src/ngtsc/partial_evaluator/src/diagnostics.js +4 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +19 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.js +12 -4
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +2 -0
- package/src/ngtsc/partial_evaluator/src/interpreter.js +48 -1
- package/src/ngtsc/partial_evaluator/src/ts_helpers.js +1 -1
- package/src/ngtsc/program.d.ts +1 -0
- package/src/ngtsc/program.js +26 -2
- 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/api.d.ts +6 -0
- package/src/ngtsc/transform/src/api.js +1 -1
- package/src/ngtsc/transform/src/compilation.d.ts +3 -0
- package/src/ngtsc/transform/src/compilation.js +124 -53
- 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 +36 -4
- 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.d.ts +2 -1
- package/src/ngtsc/typecheck/src/type_emitter.js +54 -48
- package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +2 -0
- package/src/ngtsc/typecheck/src/type_parameter_emitter.js +21 -7
- package/src/ngtsc/util/src/visitor.d.ts +1 -1
- package/src/ngtsc/util/src/visitor.js +1 -8
- package/src/ngtsc/xi18n/index.d.ts +9 -0
- package/src/ngtsc/xi18n/index.js +22 -0
- package/src/ngtsc/xi18n/src/context.d.ts +26 -0
- package/src/ngtsc/xi18n/src/context.js +20 -0
- package/src/transformers/api.d.ts +0 -3
- package/src/transformers/api.js +1 -1
- package/src/transformers/i18n.d.ts +14 -0
- package/src/transformers/i18n.js +76 -0
- package/src/transformers/program.d.ts +0 -4
- package/src/transformers/program.js +5 -56
- 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 -250
- 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 -1064
- 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 -908
- 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 -267
- package/src/ngtsc/incremental/src/noop.mjs +0 -13
- package/src/ngtsc/incremental/src/state.mjs +0 -17
- package/src/ngtsc/incremental/src/strategy.mjs +0 -76
- package/src/ngtsc/indexer/index.mjs +0 -11
- package/src/ngtsc/indexer/indexer.externs.js +0 -0
- package/src/ngtsc/indexer/src/api.mjs +0 -30
- package/src/ngtsc/indexer/src/context.mjs +0 -25
- package/src/ngtsc/indexer/src/template.mjs +0 -303
- package/src/ngtsc/indexer/src/transform.mjs +0 -51
- package/src/ngtsc/logging/index.mjs +0 -10
- package/src/ngtsc/logging/logging.externs.js +0 -0
- package/src/ngtsc/logging/src/console_logger.mjs +0 -43
- package/src/ngtsc/logging/src/logger.mjs +0 -15
- package/src/ngtsc/logging/testing/index.mjs +0 -9
- package/src/ngtsc/logging/testing/src/mock_logger.mjs +0 -32
- package/src/ngtsc/logging/testing/testing.externs.js +0 -0
- package/src/ngtsc/metadata/index.mjs +0 -15
- package/src/ngtsc/metadata/metadata.externs.js +0 -0
- package/src/ngtsc/metadata/src/api.mjs +0 -13
- package/src/ngtsc/metadata/src/dts.mjs +0 -143
- package/src/ngtsc/metadata/src/inheritance.mjs +0 -71
- package/src/ngtsc/metadata/src/property_mapping.mjs +0 -136
- package/src/ngtsc/metadata/src/registry.mjs +0 -80
- package/src/ngtsc/metadata/src/resource_registry.mjs +0 -81
- package/src/ngtsc/metadata/src/util.mjs +0 -200
- package/src/ngtsc/partial_evaluator/index.mjs +0 -12
- package/src/ngtsc/partial_evaluator/partial_evaluator.externs.js +0 -0
- package/src/ngtsc/partial_evaluator/src/builtin.mjs +0 -65
- package/src/ngtsc/partial_evaluator/src/diagnostics.mjs +0 -171
- package/src/ngtsc/partial_evaluator/src/dynamic.mjs +0 -86
- package/src/ngtsc/partial_evaluator/src/interface.mjs +0 -27
- package/src/ngtsc/partial_evaluator/src/interpreter.mjs +0 -683
- package/src/ngtsc/partial_evaluator/src/known_declaration.mjs +0 -43
- package/src/ngtsc/partial_evaluator/src/result.mjs +0 -50
- package/src/ngtsc/partial_evaluator/src/ts_helpers.mjs +0 -72
- package/src/ngtsc/perf/index.mjs +0 -11
- package/src/ngtsc/perf/perf.externs.js +0 -0
- package/src/ngtsc/perf/src/api.mjs +0 -278
- package/src/ngtsc/perf/src/clock.mjs +0 -15
- package/src/ngtsc/perf/src/noop.mjs +0 -21
- package/src/ngtsc/perf/src/recorder.mjs +0 -125
- package/src/ngtsc/program.mjs +0 -247
- 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 -485
- 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 -472
- 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 -140
- package/src/ngtsc/typecheck/src/type_parameter_emitter.mjs +0 -80
- 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/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/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 -935
- 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,251 +0,0 @@
|
|
|
1
|
-
import * as ts from 'typescript';
|
|
2
|
-
import { absoluteFromSourceFile, toRelativeImport } from '../../../src/ngtsc/file_system';
|
|
3
|
-
import { translateStatement } from '../../../src/ngtsc/translator';
|
|
4
|
-
import { isDtsPath } from '../../../src/ngtsc/util/src/typescript';
|
|
5
|
-
import { getContainingStatement, isAssignment } from '../host/esm2015_host';
|
|
6
|
-
import { POST_R3_MARKER, PRE_R3_MARKER } from '../host/ngcc_host';
|
|
7
|
-
import { stripExtension } from './utils';
|
|
8
|
-
/**
|
|
9
|
-
* A RenderingFormatter that works with ECMAScript Module import and export statements.
|
|
10
|
-
*/
|
|
11
|
-
export class EsmRenderingFormatter {
|
|
12
|
-
constructor(fs, host, isCore) {
|
|
13
|
-
this.fs = fs;
|
|
14
|
-
this.host = host;
|
|
15
|
-
this.isCore = isCore;
|
|
16
|
-
this.printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Add the imports at the top of the file, after any imports that are already there.
|
|
20
|
-
*/
|
|
21
|
-
addImports(output, imports, sf) {
|
|
22
|
-
if (imports.length === 0) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const insertionPoint = this.findEndOfImports(sf);
|
|
26
|
-
const renderedImports = imports.map(i => `import * as ${i.qualifier.text} from '${i.specifier}';\n`).join('');
|
|
27
|
-
output.appendLeft(insertionPoint, renderedImports);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Add the exports to the end of the file.
|
|
31
|
-
*/
|
|
32
|
-
addExports(output, entryPointBasePath, exports, importManager, file) {
|
|
33
|
-
exports.forEach(e => {
|
|
34
|
-
let exportFrom = '';
|
|
35
|
-
const isDtsFile = isDtsPath(entryPointBasePath);
|
|
36
|
-
const from = isDtsFile ? e.dtsFrom : e.from;
|
|
37
|
-
if (from) {
|
|
38
|
-
const basePath = stripExtension(from);
|
|
39
|
-
const relativePath = this.fs.relative(this.fs.dirname(entryPointBasePath), basePath);
|
|
40
|
-
const relativeImport = toRelativeImport(relativePath);
|
|
41
|
-
exportFrom = entryPointBasePath !== basePath ? ` from '${relativeImport}'` : '';
|
|
42
|
-
}
|
|
43
|
-
const exportStr = `\nexport {${e.identifier}}${exportFrom};`;
|
|
44
|
-
output.append(exportStr);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Add plain exports to the end of the file.
|
|
49
|
-
*
|
|
50
|
-
* Unlike `addExports`, direct exports go directly in a .js and .d.ts file and don't get added to
|
|
51
|
-
* an entrypoint.
|
|
52
|
-
*/
|
|
53
|
-
addDirectExports(output, exports, importManager, file) {
|
|
54
|
-
for (const e of exports) {
|
|
55
|
-
const exportStatement = `\nexport {${e.symbolName} as ${e.asAlias}} from '${e.fromModule}';`;
|
|
56
|
-
output.append(exportStatement);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Add the constants directly after the imports.
|
|
61
|
-
*/
|
|
62
|
-
addConstants(output, constants, file) {
|
|
63
|
-
if (constants === '') {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const insertionPoint = this.findEndOfImports(file);
|
|
67
|
-
// Append the constants to the right of the insertion point, to ensure they get ordered after
|
|
68
|
-
// added imports (those are appended left to the insertion point).
|
|
69
|
-
output.appendRight(insertionPoint, '\n' + constants + '\n');
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Add the definitions directly after their decorated class.
|
|
73
|
-
*/
|
|
74
|
-
addDefinitions(output, compiledClass, definitions) {
|
|
75
|
-
const classSymbol = this.host.getClassSymbol(compiledClass.declaration);
|
|
76
|
-
if (!classSymbol) {
|
|
77
|
-
throw new Error(`Compiled class does not have a valid symbol: ${compiledClass.name}`);
|
|
78
|
-
}
|
|
79
|
-
const declarationStatement = getContainingStatement(classSymbol.implementation.valueDeclaration);
|
|
80
|
-
const insertionPoint = declarationStatement.getEnd();
|
|
81
|
-
output.appendLeft(insertionPoint, '\n' + definitions);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Add the adjacent statements after all static properties of the class.
|
|
85
|
-
*/
|
|
86
|
-
addAdjacentStatements(output, compiledClass, statements) {
|
|
87
|
-
const classSymbol = this.host.getClassSymbol(compiledClass.declaration);
|
|
88
|
-
if (!classSymbol) {
|
|
89
|
-
throw new Error(`Compiled class does not have a valid symbol: ${compiledClass.name}`);
|
|
90
|
-
}
|
|
91
|
-
const endOfClass = this.host.getEndOfClass(classSymbol);
|
|
92
|
-
output.appendLeft(endOfClass.getEnd(), '\n' + statements);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Remove static decorator properties from classes.
|
|
96
|
-
*/
|
|
97
|
-
removeDecorators(output, decoratorsToRemove) {
|
|
98
|
-
decoratorsToRemove.forEach((nodesToRemove, containerNode) => {
|
|
99
|
-
if (ts.isArrayLiteralExpression(containerNode)) {
|
|
100
|
-
const items = containerNode.elements;
|
|
101
|
-
if (items.length === nodesToRemove.length) {
|
|
102
|
-
// Remove the entire statement
|
|
103
|
-
const statement = findStatement(containerNode);
|
|
104
|
-
if (statement) {
|
|
105
|
-
if (ts.isExpressionStatement(statement)) {
|
|
106
|
-
// The statement looks like: `SomeClass = __decorate(...);`
|
|
107
|
-
// Remove it completely
|
|
108
|
-
output.remove(statement.getFullStart(), statement.getEnd());
|
|
109
|
-
}
|
|
110
|
-
else if (ts.isReturnStatement(statement) && statement.expression &&
|
|
111
|
-
isAssignment(statement.expression)) {
|
|
112
|
-
// The statement looks like: `return SomeClass = __decorate(...);`
|
|
113
|
-
// We only want to end up with: `return SomeClass;`
|
|
114
|
-
const startOfRemoval = statement.expression.left.getEnd();
|
|
115
|
-
const endOfRemoval = getEndExceptSemicolon(statement);
|
|
116
|
-
output.remove(startOfRemoval, endOfRemoval);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
nodesToRemove.forEach(node => {
|
|
122
|
-
// remove any trailing comma
|
|
123
|
-
const nextSibling = getNextSiblingInArray(node, items);
|
|
124
|
-
let end;
|
|
125
|
-
if (nextSibling !== null &&
|
|
126
|
-
output.slice(nextSibling.getFullStart() - 1, nextSibling.getFullStart()) === ',') {
|
|
127
|
-
end = nextSibling.getFullStart() - 1 + nextSibling.getLeadingTriviaWidth();
|
|
128
|
-
}
|
|
129
|
-
else if (output.slice(node.getEnd(), node.getEnd() + 1) === ',') {
|
|
130
|
-
end = node.getEnd() + 1;
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
end = node.getEnd();
|
|
134
|
-
}
|
|
135
|
-
output.remove(node.getFullStart(), end);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Rewrite the IVY switch markers to indicate we are in IVY mode.
|
|
143
|
-
*/
|
|
144
|
-
rewriteSwitchableDeclarations(outputText, sourceFile, declarations) {
|
|
145
|
-
declarations.forEach(declaration => {
|
|
146
|
-
const start = declaration.initializer.getStart();
|
|
147
|
-
const end = declaration.initializer.getEnd();
|
|
148
|
-
const replacement = declaration.initializer.text.replace(PRE_R3_MARKER, POST_R3_MARKER);
|
|
149
|
-
outputText.overwrite(start, end, replacement);
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Add the type parameters to the appropriate functions that return `ModuleWithProviders`
|
|
154
|
-
* structures.
|
|
155
|
-
*
|
|
156
|
-
* This function will only get called on typings files.
|
|
157
|
-
*/
|
|
158
|
-
addModuleWithProvidersParams(outputText, moduleWithProviders, importManager) {
|
|
159
|
-
moduleWithProviders.forEach(info => {
|
|
160
|
-
const ngModuleName = info.ngModule.node.name.text;
|
|
161
|
-
const declarationFile = absoluteFromSourceFile(info.declaration.getSourceFile());
|
|
162
|
-
const ngModuleFile = absoluteFromSourceFile(info.ngModule.node.getSourceFile());
|
|
163
|
-
const relativePath = this.fs.relative(this.fs.dirname(declarationFile), ngModuleFile);
|
|
164
|
-
const relativeImport = toRelativeImport(relativePath);
|
|
165
|
-
const importPath = info.ngModule.ownedByModuleGuess ||
|
|
166
|
-
(declarationFile !== ngModuleFile ? stripExtension(relativeImport) : null);
|
|
167
|
-
const ngModule = generateImportString(importManager, importPath, ngModuleName);
|
|
168
|
-
if (info.declaration.type) {
|
|
169
|
-
const typeName = info.declaration.type && ts.isTypeReferenceNode(info.declaration.type) ?
|
|
170
|
-
info.declaration.type.typeName :
|
|
171
|
-
null;
|
|
172
|
-
if (this.isCoreModuleWithProvidersType(typeName)) {
|
|
173
|
-
// The declaration already returns `ModuleWithProvider` but it needs the `NgModule` type
|
|
174
|
-
// parameter adding.
|
|
175
|
-
outputText.overwrite(info.declaration.type.getStart(), info.declaration.type.getEnd(), `ModuleWithProviders<${ngModule}>`);
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
// The declaration returns an unknown type so we need to convert it to a union that
|
|
179
|
-
// includes the ngModule property.
|
|
180
|
-
const originalTypeString = info.declaration.type.getText();
|
|
181
|
-
outputText.overwrite(info.declaration.type.getStart(), info.declaration.type.getEnd(), `(${originalTypeString})&{ngModule:${ngModule}}`);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
// The declaration has no return type so provide one.
|
|
186
|
-
const lastToken = info.declaration.getLastToken();
|
|
187
|
-
const insertPoint = lastToken && lastToken.kind === ts.SyntaxKind.SemicolonToken ?
|
|
188
|
-
lastToken.getStart() :
|
|
189
|
-
info.declaration.getEnd();
|
|
190
|
-
outputText.appendLeft(insertPoint, `: ${generateImportString(importManager, '@angular/core', 'ModuleWithProviders')}<${ngModule}>`);
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Convert a `Statement` to JavaScript code in a format suitable for rendering by this formatter.
|
|
196
|
-
*
|
|
197
|
-
* @param stmt The `Statement` to print.
|
|
198
|
-
* @param sourceFile A `ts.SourceFile` that provides context for the statement. See
|
|
199
|
-
* `ts.Printer#printNode()` for more info.
|
|
200
|
-
* @param importManager The `ImportManager` to use for managing imports.
|
|
201
|
-
*
|
|
202
|
-
* @return The JavaScript code corresponding to `stmt` (in the appropriate format).
|
|
203
|
-
*/
|
|
204
|
-
printStatement(stmt, sourceFile, importManager) {
|
|
205
|
-
const node = translateStatement(stmt, importManager);
|
|
206
|
-
const code = this.printer.printNode(ts.EmitHint.Unspecified, node, sourceFile);
|
|
207
|
-
return code;
|
|
208
|
-
}
|
|
209
|
-
findEndOfImports(sf) {
|
|
210
|
-
for (const stmt of sf.statements) {
|
|
211
|
-
if (!ts.isImportDeclaration(stmt) && !ts.isImportEqualsDeclaration(stmt) &&
|
|
212
|
-
!ts.isNamespaceImport(stmt)) {
|
|
213
|
-
return stmt.getStart();
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
return 0;
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Check whether the given type is the core Angular `ModuleWithProviders` interface.
|
|
220
|
-
* @param typeName The type to check.
|
|
221
|
-
* @returns true if the type is the core Angular `ModuleWithProviders` interface.
|
|
222
|
-
*/
|
|
223
|
-
isCoreModuleWithProvidersType(typeName) {
|
|
224
|
-
const id = typeName && ts.isIdentifier(typeName) ? this.host.getImportOfIdentifier(typeName) : null;
|
|
225
|
-
return (id && id.name === 'ModuleWithProviders' && (this.isCore || id.from === '@angular/core'));
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
function findStatement(node) {
|
|
229
|
-
while (node) {
|
|
230
|
-
if (ts.isExpressionStatement(node) || ts.isReturnStatement(node)) {
|
|
231
|
-
return node;
|
|
232
|
-
}
|
|
233
|
-
node = node.parent;
|
|
234
|
-
}
|
|
235
|
-
return undefined;
|
|
236
|
-
}
|
|
237
|
-
function generateImportString(importManager, importPath, importName) {
|
|
238
|
-
const importAs = importPath ? importManager.generateNamedImport(importPath, importName) : null;
|
|
239
|
-
return importAs && importAs.moduleImport ? `${importAs.moduleImport.text}.${importAs.symbol}` :
|
|
240
|
-
`${importName}`;
|
|
241
|
-
}
|
|
242
|
-
function getNextSiblingInArray(node, array) {
|
|
243
|
-
const index = array.indexOf(node);
|
|
244
|
-
return index !== -1 && array.length > index + 1 ? array[index + 1] : null;
|
|
245
|
-
}
|
|
246
|
-
function getEndExceptSemicolon(statement) {
|
|
247
|
-
const lastToken = statement.getLastToken();
|
|
248
|
-
return (lastToken && lastToken.kind === ts.SyntaxKind.SemicolonToken) ? statement.getEnd() - 1 :
|
|
249
|
-
statement.getEnd();
|
|
250
|
-
}
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtX3JlbmRlcmluZ19mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcmVuZGVyaW5nL2VzbV9yZW5kZXJpbmdfZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBQyxzQkFBc0IsRUFBb0MsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxSCxPQUFPLEVBQXdCLGtCQUFrQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDeEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBSWpFLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQXFCLGNBQWMsRUFBRSxhQUFhLEVBQWdDLE1BQU0sbUJBQW1CLENBQUM7QUFHbkgsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUV2Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFHaEMsWUFDYyxFQUFvQixFQUFZLElBQXdCLEVBQ3hELE1BQWU7UUFEZixPQUFFLEdBQUYsRUFBRSxDQUFrQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQW9CO1FBQ3hELFdBQU0sR0FBTixNQUFNLENBQVM7UUFKbkIsWUFBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDO0lBSXpDLENBQUM7SUFFakM7O09BRUc7SUFDSCxVQUFVLENBQUMsTUFBbUIsRUFBRSxPQUFpQixFQUFFLEVBQWlCO1FBQ2xFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBRUQsTUFB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LEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0YsT0FBTyxRQUFRLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRCxHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFvQixJQUFPLEVBQUUsS0FBc0I7SUFDL0UsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxTQUF1QjtJQUNwRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDN0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtTdGF0ZW1lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCBNYWdpY1N0cmluZyBmcm9tICdtYWdpYy1zdHJpbmcnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7YWJzb2x1dGVGcm9tU291cmNlRmlsZSwgQWJzb2x1dGVGc1BhdGgsIFBhdGhNYW5pcHVsYXRpb24sIHRvUmVsYXRpdmVJbXBvcnR9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge1JlZXhwb3J0fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvaW1wb3J0cyc7XG5pbXBvcnQge0ltcG9ydCwgSW1wb3J0TWFuYWdlciwgdHJhbnNsYXRlU3RhdGVtZW50fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdHJhbnNsYXRvcic7XG5pbXBvcnQge2lzRHRzUGF0aH0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL3V0aWwvc3JjL3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzSW5mb30gZnJvbSAnLi4vYW5hbHlzaXMvbW9kdWxlX3dpdGhfcHJvdmlkZXJzX2FuYWx5emVyJztcbmltcG9ydCB7RXhwb3J0SW5mb30gZnJvbSAnLi4vYW5hbHlzaXMvcHJpdmF0ZV9kZWNsYXJhdGlvbnNfYW5hbHl6ZXInO1xuaW1wb3J0IHtDb21waWxlZENsYXNzfSBmcm9tICcuLi9hbmFseXNpcy90eXBlcyc7XG5pbXBvcnQge2dldENvbnRhaW5pbmdTdGF0ZW1lbnQsIGlzQXNzaWdubWVudH0gZnJvbSAnLi4vaG9zdC9lc20yMDE1X2hvc3QnO1xuaW1wb3J0IHtOZ2NjUmVmbGVjdGlvbkhvc3QsIFBPU1RfUjNfTUFSS0VSLCBQUkVfUjNfTUFSS0VSLCBTd2l0Y2hhYmxlVmFyaWFibGVEZWNsYXJhdGlvbn0gZnJvbSAnLi4vaG9zdC9uZ2NjX2hvc3QnO1xuXG5pbXBvcnQge1JlZHVuZGFudERlY29yYXRvck1hcCwgUmVuZGVyaW5nRm9ybWF0dGVyfSBmcm9tICcuL3JlbmRlcmluZ19mb3JtYXR0ZXInO1xuaW1wb3J0IHtzdHJpcEV4dGVuc2lvbn0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQSBSZW5kZXJpbmdGb3JtYXR0ZXIgdGhhdCB3b3JrcyB3aXRoIEVDTUFTY3JpcHQgTW9kdWxlIGltcG9ydCBhbmQgZXhwb3J0IHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFc21SZW5kZXJpbmdGb3JtYXR0ZXIgaW1wbGVtZW50cyBSZW5kZXJpbmdGb3JtYXR0ZXIge1xuICBwcm90ZWN0ZWQgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoe25ld0xpbmU6IHRzLk5ld0xpbmVLaW5kLkxpbmVGZWVkfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcm90ZWN0ZWQgZnM6IFBhdGhNYW5pcHVsYXRpb24sIHByb3RlY3RlZCBob3N0OiBOZ2NjUmVmbGVjdGlvbkhvc3QsXG4gICAgICBwcm90ZWN0ZWQgaXNDb3JlOiBib29sZWFuKSB7fVxuXG4gIC8qKlxuICAgKiAgQWRkIHRoZSBpbXBvcnRzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUsIGFmdGVyIGFueSBpbXBvcnRzIHRoYXQgYXJlIGFscmVhZHkgdGhlcmUuXG4gICAqL1xuICBhZGRJbXBvcnRzKG91dHB1dDogTWFnaWNTdHJpbmcsIGltcG9ydHM6IEltcG9ydFtdLCBzZjogdHMuU291cmNlRmlsZSk6IHZvaWQge1xuICAgIGlmIChpbXBvcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluc2VydGlvblBvaW50ID0gdGhpcy5maW5kRW5kT2ZJbXBvcnRzKHNmKTtcbiAgICBjb25zdCByZW5kZXJlZEltcG9ydHMgPVxuICAgICAgICBpbXBvcnRzLm1hcChpID0+IGBpbXBvcnQgKiBhcyAke2kucXVhbGlmaWVyLnRleHR9IGZyb20gJyR7aS5zcGVjaWZpZXJ9JztcXG5gKS5qb2luKCcnKTtcbiAgICBvdXRwdXQuYXBwZW5kTGVmdChpbnNlcnRpb25Qb2ludCwgcmVuZGVyZWRJbXBvcnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGV4cG9ydHMgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS5cbiAgICovXG4gIGFkZEV4cG9ydHMoXG4gICAgICBvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBlbnRyeVBvaW50QmFzZVBhdGg6IEFic29sdXRlRnNQYXRoLCBleHBvcnRzOiBFeHBvcnRJbmZvW10sXG4gICAgICBpbXBvcnRNYW5hZ2VyOiBJbXBvcnRNYW5hZ2VyLCBmaWxlOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG4gICAgZXhwb3J0cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgbGV0IGV4cG9ydEZyb20gPSAnJztcbiAgICAgIGNvbnN0IGlzRHRzRmlsZSA9IGlzRHRzUGF0aChlbnRyeVBvaW50QmFzZVBhdGgpO1xuICAgICAgY29uc3QgZnJvbSA9IGlzRHRzRmlsZSA/IGUuZHRzRnJvbSA6IGUuZnJvbTtcblxuICAgICAgaWYgKGZyb20pIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBzdHJpcEV4dGVuc2lvbihmcm9tKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZSh0aGlzLmZzLmRpcm5hbWUoZW50cnlQb2ludEJhc2VQYXRoKSwgYmFzZVBhdGgpO1xuICAgICAgICBjb25zdCByZWxhdGl2ZUltcG9ydCA9IHRvUmVsYXRpdmVJbXBvcnQocmVsYXRpdmVQYXRoKTtcbiAgICAgICAgZXhwb3J0RnJvbSA9IGVudHJ5UG9pbnRCYXNlUGF0aCAhPT0gYmFzZVBhdGggPyBgIGZyb20gJyR7cmVsYXRpdmVJbXBvcnR9J2AgOiAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhwb3J0U3RyID0gYFxcbmV4cG9ydCB7JHtlLmlkZW50aWZpZXJ9fSR7ZXhwb3J0RnJvbX07YDtcbiAgICAgIG91dHB1dC5hcHBlbmQoZXhwb3J0U3RyKTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkZCBwbGFpbiBleHBvcnRzIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4gICAqXG4gICAqIFVubGlrZSBgYWRkRXhwb3J0c2AsIGRpcmVjdCBleHBvcnRzIGdvIGRpcmVjdGx5IGluIGEgLmpzIGFuZCAuZC50cyBmaWxlIGFuZCBkb24ndCBnZXQgYWRkZWQgdG9cbiAgICogYW4gZW50cnlwb2ludC5cbiAgICovXG4gIGFkZERpcmVjdEV4cG9ydHMoXG4gICAgICBvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBleHBvcnRzOiBSZWV4cG9ydFtdLCBpbXBvcnRNYW5hZ2VyOiBJbXBvcnRNYW5hZ2VyLFxuICAgICAgZmlsZTogdHMuU291cmNlRmlsZSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZSBvZiBleHBvcnRzKSB7XG4gICAgICBjb25zdCBleHBvcnRTdGF0ZW1lbnQgPSBgXFxuZXhwb3J0IHske2Uuc3ltYm9sTmFtZX0gYXMgJHtlLmFzQWxpYXN9fSBmcm9tICcke2UuZnJvbU1vZHVsZX0nO2A7XG4gICAgICBvdXRwdXQuYXBwZW5kKGV4cG9ydFN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgY29uc3RhbnRzIGRpcmVjdGx5IGFmdGVyIHRoZSBpbXBvcnRzLlxuICAgKi9cbiAgYWRkQ29uc3RhbnRzKG91dHB1dDogTWFnaWNTdHJpbmcsIGNvbnN0YW50czogc3RyaW5nLCBmaWxlOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG4gICAgaWYgKGNvbnN0YW50cyA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXJ0aW9uUG9pbnQgPSB0aGlzLmZpbmRFbmRPZkltcG9ydHMoZmlsZSk7XG5cbiAgICAvLyBBcHBlbmQgdGhlIGNvbnN0YW50cyB0byB0aGUgcmlnaHQgb2YgdGhlIGluc2VydGlvbiBwb2ludCwgdG8gZW5zdXJlIHRoZXkgZ2V0IG9yZGVyZWQgYWZ0ZXJcbiAgICAvLyBhZGRlZCBpbXBvcnRzICh0aG9zZSBhcmUgYXBwZW5kZWQgbGVmdCB0byB0aGUgaW5zZXJ0aW9uIHBvaW50KS5cbiAgICBvdXRwdXQuYXBwZW5kUmlnaHQoaW5zZXJ0aW9uUG9pbnQsICdcXG4nICsgY29uc3RhbnRzICsgJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgZGVmaW5pdGlvbnMgZGlyZWN0bHkgYWZ0ZXIgdGhlaXIgZGVjb3JhdGVkIGNsYXNzLlxuICAgKi9cbiAgYWRkRGVmaW5pdGlvbnMob3V0cHV0OiBNYWdpY1N0cmluZywgY29tcGlsZWRDbGFzczogQ29tcGlsZWRDbGFzcywgZGVmaW5pdGlvbnM6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNsYXNzU3ltYm9sID0gdGhpcy5ob3N0LmdldENsYXNzU3ltYm9sKGNvbXBpbGVkQ2xhc3MuZGVjbGFyYXRpb24pO1xuICAgIGlmICghY2xhc3NTeW1ib2wpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZWQgY2xhc3MgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHN5bWJvbDogJHtjb21waWxlZENsYXNzLm5hbWV9YCk7XG4gICAgfVxuICAgIGNvbnN0IGRlY2xhcmF0aW9uU3RhdGVtZW50ID1cbiAgICAgICAgZ2V0Q29udGFpbmluZ1N0YXRlbWVudChjbGFzc1N5bWJvbC5pbXBsZW1lbnRhdGlvbi52YWx1ZURlY2xhcmF0aW9uKTtcbiAgICBjb25zdCBpbnNlcnRpb25Qb2ludCA9IGRlY2xhcmF0aW9uU3RhdGVtZW50LmdldEVuZCgpO1xuICAgIG91dHB1dC5hcHBlbmRMZWZ0KGluc2VydGlvblBvaW50LCAnXFxuJyArIGRlZmluaXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGFkamFjZW50IHN0YXRlbWVudHMgYWZ0ZXIgYWxsIHN0YXRpYyBwcm9wZXJ0aWVzIG9mIHRoZSBjbGFzcy5cbiAgICovXG4gIGFkZEFkamFjZW50U3RhdGVtZW50cyhvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBjb21waWxlZENsYXNzOiBDb21waWxlZENsYXNzLCBzdGF0ZW1lbnRzOiBzdHJpbmcpOlxuICAgICAgdm9pZCB7XG4gICAgY29uc3QgY2xhc3NTeW1ib2wgPSB0aGlzLmhvc3QuZ2V0Q2xhc3NTeW1ib2woY29tcGlsZWRDbGFzcy5kZWNsYXJhdGlvbik7XG4gICAgaWYgKCFjbGFzc1N5bWJvbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlZCBjbGFzcyBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgc3ltYm9sOiAke2NvbXBpbGVkQ2xhc3MubmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZW5kT2ZDbGFzcyA9IHRoaXMuaG9zdC5nZXRFbmRPZkNsYXNzKGNsYXNzU3ltYm9sKTtcbiAgICBvdXRwdXQuYXBwZW5kTGVmdChlbmRPZkNsYXNzLmdldEVuZCgpLCAnXFxuJyArIHN0YXRlbWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBzdGF0aWMgZGVjb3JhdG9yIHByb3BlcnRpZXMgZnJvbSBjbGFzc2VzLlxuICAgKi9cbiAgcmVtb3ZlRGVjb3JhdG9ycyhvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBkZWNvcmF0b3JzVG9SZW1vdmU6IFJlZHVuZGFudERlY29yYXRvck1hcCk6IHZvaWQge1xuICAgIGRlY29yYXRvcnNUb1JlbW92ZS5mb3JFYWNoKChub2Rlc1RvUmVtb3ZlLCBjb250YWluZXJOb2RlKSA9PiB7XG4gICAgICBpZiAodHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKGNvbnRhaW5lck5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gY29udGFpbmVyTm9kZS5lbGVtZW50cztcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gbm9kZXNUb1JlbW92ZS5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgdGhlIGVudGlyZSBzdGF0ZW1lbnRcbiAgICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBmaW5kU3RhdGVtZW50KGNvbnRhaW5lck5vZGUpO1xuICAgICAgICAgIGlmIChzdGF0ZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICh0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAvLyBUaGUgc3RhdGVtZW50IGxvb2tzIGxpa2U6IGBTb21lQ2xhc3MgPSBfX2RlY29yYXRlKC4uLik7YFxuICAgICAgICAgICAgICAvLyBSZW1vdmUgaXQgY29tcGxldGVseVxuICAgICAgICAgICAgICBvdXRwdXQucmVtb3ZlKHN0YXRlbWVudC5nZXRGdWxsU3RhcnQoKSwgc3RhdGVtZW50LmdldEVuZCgpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdHMuaXNSZXR1cm5TdGF0ZW1lbnQoc3RhdGVtZW50KSAmJiBzdGF0ZW1lbnQuZXhwcmVzc2lvbiAmJlxuICAgICAgICAgICAgICAgIGlzQXNzaWdubWVudChzdGF0ZW1lbnQuZXhwcmVzc2lvbikpIHtcbiAgICAgICAgICAgICAgLy8gVGhlIHN0YXRlbWVudCBsb29rcyBsaWtlOiBgcmV0dXJuIFNvbWVDbGFzcyA9IF9fZGVjb3JhdGUoLi4uKTtgXG4gICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBlbmQgdXAgd2l0aDogYHJldHVybiBTb21lQ2xhc3M7YFxuICAgICAgICAgICAgICBjb25zdCBzdGFydE9mUmVtb3ZhbCA9IHN0YXRlbWVudC5leHByZXNzaW9uLmxlZnQuZ2V0RW5kKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGVuZE9mUmVtb3ZhbCA9IGdldEVuZEV4Y2VwdFNlbWljb2xvbihzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgICBvdXRwdXQucmVtb3ZlKHN0YXJ0T2ZSZW1vdmFsLCBlbmRPZlJlbW92YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2Rlc1RvUmVtb3ZlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICAvLyByZW1vdmUgYW55IHRyYWlsaW5nIGNvbW1hXG4gICAgICAgICAgICBjb25zdCBuZXh0U2libGluZyA9IGdldE5leHRTaWJsaW5nSW5BcnJheShub2RlLCBpdGVtcyk7XG4gICAgICAgICAgICBsZXQgZW5kOiBudW1iZXI7XG5cbiAgICAgICAgICAgIGlmIChuZXh0U2libGluZyAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIG91dHB1dC5zbGljZShuZXh0U2libGluZy5nZXRGdWxsU3RhcnQoKSAtIDEsIG5leHRTaWJsaW5nLmdldEZ1bGxTdGFydCgpKSA9PT0gJywnKSB7XG4gICAgICAgICAgICAgIGVuZCA9IG5leHRTaWJsaW5nLmdldEZ1bGxTdGFydCgpIC0gMSArIG5leHRTaWJsaW5nLmdldExlYWRpbmdUcml2aWFXaWR0aCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvdXRwdXQuc2xpY2Uobm9kZS5nZXRFbmQoKSwgbm9kZS5nZXRFbmQoKSArIDEpID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgZW5kID0gbm9kZS5nZXRFbmQoKSArIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbmQgPSBub2RlLmdldEVuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0cHV0LnJlbW92ZShub2RlLmdldEZ1bGxTdGFydCgpLCBlbmQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV3cml0ZSB0aGUgSVZZIHN3aXRjaCBtYXJrZXJzIHRvIGluZGljYXRlIHdlIGFyZSBpbiBJVlkgbW9kZS5cbiAgICovXG4gIHJld3JpdGVTd2l0Y2hhYmxlRGVjbGFyYXRpb25zKFxuICAgICAgb3V0cHV0VGV4dDogTWFnaWNTdHJpbmcsIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gICAgICBkZWNsYXJhdGlvbnM6IFN3aXRjaGFibGVWYXJpYWJsZURlY2xhcmF0aW9uW10pOiB2b2lkIHtcbiAgICBkZWNsYXJhdGlvbnMuZm9yRWFjaChkZWNsYXJhdGlvbiA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IGRlY2xhcmF0aW9uLmluaXRpYWxpemVyLmdldFN0YXJ0KCk7XG4gICAgICBjb25zdCBlbmQgPSBkZWNsYXJhdGlvbi5pbml0aWFsaXplci5nZXRFbmQoKTtcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gZGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIudGV4dC5yZXBsYWNlKFBSRV9SM19NQVJLRVIsIFBPU1RfUjNfTUFSS0VSKTtcbiAgICAgIG91dHB1dFRleHQub3ZlcndyaXRlKHN0YXJ0LCBlbmQsIHJlcGxhY2VtZW50KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgdHlwZSBwYXJhbWV0ZXJzIHRvIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYE1vZHVsZVdpdGhQcm92aWRlcnNgXG4gICAqIHN0cnVjdHVyZXMuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGdldCBjYWxsZWQgb24gdHlwaW5ncyBmaWxlcy5cbiAgICovXG4gIGFkZE1vZHVsZVdpdGhQcm92aWRlcnNQYXJhbXMoXG4gICAgICBvdXRwdXRUZXh0OiBNYWdpY1N0cmluZywgbW9kdWxlV2l0aFByb3ZpZGVyczogTW9kdWxlV2l0aFByb3ZpZGVyc0luZm9bXSxcbiAgICAgIGltcG9ydE1hbmFnZXI6IEltcG9ydE1hbmFnZXIpOiB2b2lkIHtcbiAgICBtb2R1bGVXaXRoUHJvdmlkZXJzLmZvckVhY2goaW5mbyA9PiB7XG4gICAgICBjb25zdCBuZ01vZHVsZU5hbWUgPSBpbmZvLm5nTW9kdWxlLm5vZGUubmFtZS50ZXh0O1xuICAgICAgY29uc3QgZGVjbGFyYXRpb25GaWxlID0gYWJzb2x1dGVGcm9tU291cmNlRmlsZShpbmZvLmRlY2xhcmF0aW9uLmdldFNvdXJjZUZpbGUoKSk7XG4gICAgICBjb25zdCBuZ01vZHVsZUZpbGUgPSBhYnNvbHV0ZUZyb21Tb3VyY2VGaWxlKGluZm8ubmdNb2R1bGUubm9kZS5nZXRTb3VyY2VGaWxlKCkpO1xuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gdGhpcy5mcy5yZWxhdGl2ZSh0aGlzLmZzLmRpcm5hbWUoZGVjbGFyYXRpb25GaWxlKSwgbmdNb2R1bGVGaWxlKTtcbiAgICAgIGNvbnN0IHJlbGF0aXZlSW1wb3J0ID0gdG9SZWxhdGl2ZUltcG9ydChyZWxhdGl2ZVBhdGgpO1xuICAgICAgY29uc3QgaW1wb3J0UGF0aCA9IGluZm8ubmdNb2R1bGUub3duZWRCeU1vZHVsZUd1ZXNzIHx8XG4gICAgICAgICAgKGRlY2xhcmF0aW9uRmlsZSAhPT0gbmdNb2R1bGVGaWxlID8gc3RyaXBFeHRlbnNpb24ocmVsYXRpdmVJbXBvcnQpIDogbnVsbCk7XG4gICAgICBjb25zdCBuZ01vZHVsZSA9IGdlbmVyYXRlSW1wb3J0U3RyaW5nKGltcG9ydE1hbmFnZXIsIGltcG9ydFBhdGgsIG5nTW9kdWxlTmFtZSk7XG5cbiAgICAgIGlmIChpbmZvLmRlY2xhcmF0aW9uLnR5cGUpIHtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBpbmZvLmRlY2xhcmF0aW9uLnR5cGUgJiYgdHMuaXNUeXBlUmVmZXJlbmNlTm9kZShpbmZvLmRlY2xhcmF0aW9uLnR5cGUpID9cbiAgICAgICAgICAgIGluZm8uZGVjbGFyYXRpb24udHlwZS50eXBlTmFtZSA6XG4gICAgICAgICAgICBudWxsO1xuICAgICAgICBpZiAodGhpcy5pc0NvcmVNb2R1bGVXaXRoUHJvdmlkZXJzVHlwZSh0eXBlTmFtZSkpIHtcbiAgICAgICAgICAvLyBUaGUgZGVjbGFyYXRpb24gYWxyZWFkeSByZXR1cm5zIGBNb2R1bGVXaXRoUHJvdmlkZXJgIGJ1dCBpdCBuZWVkcyB0aGUgYE5nTW9kdWxlYCB0eXBlXG4gICAgICAgICAgLy8gcGFyYW1ldGVyIGFkZGluZy5cbiAgICAgICAgICBvdXRwdXRUZXh0Lm92ZXJ3cml0ZShcbiAgICAgICAgICAgICAgaW5mby5kZWNsYXJhdGlvbi50eXBlLmdldFN0YXJ0KCksIGluZm8uZGVjbGFyYXRpb24udHlwZS5nZXRFbmQoKSxcbiAgICAgICAgICAgICAgYE1vZHVsZVdpdGhQcm92aWRlcnM8JHtuZ01vZHVsZX0+YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGRlY2xhcmF0aW9uIHJldHVybnMgYW4gdW5rbm93biB0eXBlIHNvIHdlIG5lZWQgdG8gY29udmVydCBpdCB0byBhIHVuaW9uIHRoYXRcbiAgICAgICAgICAvLyBpbmNsdWRlcyB0aGUgbmdNb2R1bGUgcHJvcGVydHkuXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxUeXBlU3RyaW5nID0gaW5mby5kZWNsYXJhdGlvbi50eXBlLmdldFRleHQoKTtcbiAgICAgICAgICBvdXRwdXRUZXh0Lm92ZXJ3cml0ZShcbiAgICAgICAgICAgICAgaW5mby5kZWNsYXJhdGlvbi50eXBlLmdldFN0YXJ0KCksIGluZm8uZGVjbGFyYXRpb24udHlwZS5nZXRFbmQoKSxcbiAgICAgICAgICAgICAgYCgke29yaWdpbmFsVHlwZVN0cmluZ30pJntuZ01vZHVsZToke25nTW9kdWxlfX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIGRlY2xhcmF0aW9uIGhhcyBubyByZXR1cm4gdHlwZSBzbyBwcm92aWRlIG9uZS5cbiAgICAgICAgY29uc3QgbGFzdFRva2VuID0gaW5mby5kZWNsYXJhdGlvbi5nZXRMYXN0VG9rZW4oKTtcbiAgICAgICAgY29uc3QgaW5zZXJ0UG9pbnQgPSBsYXN0VG9rZW4gJiYgbGFzdFRva2VuLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuU2VtaWNvbG9uVG9rZW4gP1xuICAgICAgICAgICAgbGFzdFRva2VuLmdldFN0YXJ0KCkgOlxuICAgICAgICAgICAgaW5mby5kZWNsYXJhdGlvbi5nZXRFbmQoKTtcbiAgICAgICAgb3V0cHV0VGV4dC5hcHBlbmRMZWZ0KFxuICAgICAgICAgICAgaW5zZXJ0UG9pbnQsXG4gICAgICAgICAgICBgOiAke2dlbmVyYXRlSW1wb3J0U3RyaW5nKGltcG9ydE1hbmFnZXIsICdAYW5ndWxhci9jb3JlJywgJ01vZHVsZVdpdGhQcm92aWRlcnMnKX08JHtcbiAgICAgICAgICAgICAgICBuZ01vZHVsZX0+YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIGBTdGF0ZW1lbnRgIHRvIEphdmFTY3JpcHQgY29kZSBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3IgcmVuZGVyaW5nIGJ5IHRoaXMgZm9ybWF0dGVyLlxuICAgKlxuICAgKiBAcGFyYW0gc3RtdCBUaGUgYFN0YXRlbWVudGAgdG8gcHJpbnQuXG4gICAqIEBwYXJhbSBzb3VyY2VGaWxlIEEgYHRzLlNvdXJjZUZpbGVgIHRoYXQgcHJvdmlkZXMgY29udGV4dCBmb3IgdGhlIHN0YXRlbWVudC4gU2VlXG4gICAqICAgICBgdHMuUHJpbnRlciNwcmludE5vZGUoKWAgZm9yIG1vcmUgaW5mby5cbiAgICogQHBhcmFtIGltcG9ydE1hbmFnZXIgVGhlIGBJbXBvcnRNYW5hZ2VyYCB0byB1c2UgZm9yIG1hbmFnaW5nIGltcG9ydHMuXG4gICAqXG4gICAqIEByZXR1cm4gVGhlIEphdmFTY3JpcHQgY29kZSBjb3JyZXNwb25kaW5nIHRvIGBzdG10YCAoaW4gdGhlIGFwcHJvcHJpYXRlIGZvcm1hdCkuXG4gICAqL1xuICBwcmludFN0YXRlbWVudChzdG10OiBTdGF0ZW1lbnQsIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGltcG9ydE1hbmFnZXI6IEltcG9ydE1hbmFnZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGUgPSB0cmFuc2xhdGVTdGF0ZW1lbnQoc3RtdCwgaW1wb3J0TWFuYWdlcik7XG4gICAgY29uc3QgY29kZSA9IHRoaXMucHJpbnRlci5wcmludE5vZGUodHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIG5vZGUsIHNvdXJjZUZpbGUpO1xuXG4gICAgcmV0dXJuIGNvZGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZEVuZE9mSW1wb3J0cyhzZjogdHMuU291cmNlRmlsZSk6IG51bWJlciB7XG4gICAgZm9yIChjb25zdCBzdG10IG9mIHNmLnN0YXRlbWVudHMpIHtcbiAgICAgIGlmICghdHMuaXNJbXBvcnREZWNsYXJhdGlvbihzdG10KSAmJiAhdHMuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihzdG10KSAmJlxuICAgICAgICAgICF0cy5pc05hbWVzcGFjZUltcG9ydChzdG10KSkge1xuICAgICAgICByZXR1cm4gc3RtdC5nZXRTdGFydCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiB0eXBlIGlzIHRoZSBjb3JlIEFuZ3VsYXIgYE1vZHVsZVdpdGhQcm92aWRlcnNgIGludGVyZmFjZS5cbiAgICogQHBhcmFtIHR5cGVOYW1lIFRoZSB0eXBlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSB0eXBlIGlzIHRoZSBjb3JlIEFuZ3VsYXIgYE1vZHVsZVdpdGhQcm92aWRlcnNgIGludGVyZmFjZS5cbiAgICovXG4gIHByaXZhdGUgaXNDb3JlTW9kdWxlV2l0aFByb3ZpZGVyc1R5cGUodHlwZU5hbWU6IHRzLkVudGl0eU5hbWV8bnVsbCkge1xuICAgIGNvbnN0IGlkID1cbiAgICAgICAgdHlwZU5hbWUgJiYgdHMuaXNJZGVudGlmaWVyKHR5cGVOYW1lKSA/IHRoaXMuaG9zdC5nZXRJbXBvcnRPZklkZW50aWZpZXIodHlwZU5hbWUpIDogbnVsbDtcbiAgICByZXR1cm4gKFxuICAgICAgICBpZCAmJiBpZC5uYW1lID09PSAnTW9kdWxlV2l0aFByb3ZpZGVycycgJiYgKHRoaXMuaXNDb3JlIHx8IGlkLmZyb20gPT09ICdAYW5ndWxhci9jb3JlJykpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRTdGF0ZW1lbnQobm9kZTogdHMuTm9kZSk6IHRzLlN0YXRlbWVudHx1bmRlZmluZWQge1xuICB3aGlsZSAobm9kZSkge1xuICAgIGlmICh0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQobm9kZSkgfHwgdHMuaXNSZXR1cm5TdGF0ZW1lbnQobm9kZSkpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVJbXBvcnRTdHJpbmcoXG4gICAgaW1wb3J0TWFuYWdlcjogSW1wb3J0TWFuYWdlciwgaW1wb3J0UGF0aDogc3RyaW5nfG51bGwsIGltcG9ydE5hbWU6IHN0cmluZykge1xuICBjb25zdCBpbXBvcnRBcyA9IGltcG9ydFBhdGggPyBpbXBvcnRNYW5hZ2VyLmdlbmVyYXRlTmFtZWRJbXBvcnQoaW1wb3J0UGF0aCwgaW1wb3J0TmFtZSkgOiBudWxsO1xuICByZXR1cm4gaW1wb3J0QXMgJiYgaW1wb3J0QXMubW9kdWxlSW1wb3J0ID8gYCR7aW1wb3J0QXMubW9kdWxlSW1wb3J0LnRleHR9LiR7aW1wb3J0QXMuc3ltYm9sfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7aW1wb3J0TmFtZX1gO1xufVxuXG5mdW5jdGlvbiBnZXROZXh0U2libGluZ0luQXJyYXk8VCBleHRlbmRzIHRzLk5vZGU+KG5vZGU6IFQsIGFycmF5OiB0cy5Ob2RlQXJyYXk8VD4pOiBUfG51bGwge1xuICBjb25zdCBpbmRleCA9IGFycmF5LmluZGV4T2Yobm9kZSk7XG4gIHJldHVybiBpbmRleCAhPT0gLTEgJiYgYXJyYXkubGVuZ3RoID4gaW5kZXggKyAxID8gYXJyYXlbaW5kZXggKyAxXSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEVuZEV4Y2VwdFNlbWljb2xvbihzdGF0ZW1lbnQ6IHRzLlN0YXRlbWVudCk6IG51bWJlciB7XG4gIGNvbnN0IGxhc3RUb2tlbiA9IHN0YXRlbWVudC5nZXRMYXN0VG9rZW4oKTtcbiAgcmV0dXJuIChsYXN0VG9rZW4gJiYgbGFzdFRva2VuLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuU2VtaWNvbG9uVG9rZW4pID8gc3RhdGVtZW50LmdldEVuZCgpIC0gMSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC5nZXRFbmQoKTtcbn1cbiJdfQ==
|
|
@@ -1,32 +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 { validateAndRewriteCoreSymbol } from '../../../src/ngtsc/imports';
|
|
9
|
-
export class NgccFlatImportRewriter {
|
|
10
|
-
shouldImportSymbol(symbol, specifier) {
|
|
11
|
-
if (specifier === '@angular/core') {
|
|
12
|
-
// Don't use imports for @angular/core symbols in a flat bundle, as they'll be visible
|
|
13
|
-
// directly.
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
rewriteSymbol(symbol, specifier) {
|
|
21
|
-
if (specifier === '@angular/core') {
|
|
22
|
-
return validateAndRewriteCoreSymbol(symbol);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
return symbol;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
rewriteSpecifier(originalModulePath, inContextOfFile) {
|
|
29
|
-
return originalModulePath;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdjY19pbXBvcnRfcmV3cml0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcmVuZGVyaW5nL25nY2NfaW1wb3J0X3Jld3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBaUIsNEJBQTRCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RixNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLFNBQVMsS0FBSyxlQUFlLEVBQUU7WUFDakMsc0ZBQXNGO1lBQ3RGLFlBQVk7WUFDWixPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjLEVBQUUsU0FBaUI7UUFDN0MsSUFBSSxTQUFTLEtBQUssZUFBZSxFQUFFO1lBQ2pDLE9BQU8sNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNMLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsa0JBQTBCLEVBQUUsZUFBdUI7UUFDbEUsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0ltcG9ydFJld3JpdGVyLCB2YWxpZGF0ZUFuZFJld3JpdGVDb3JlU3ltYm9sfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvaW1wb3J0cyc7XG5cbmV4cG9ydCBjbGFzcyBOZ2NjRmxhdEltcG9ydFJld3JpdGVyIGltcGxlbWVudHMgSW1wb3J0UmV3cml0ZXIge1xuICBzaG91bGRJbXBvcnRTeW1ib2woc3ltYm9sOiBzdHJpbmcsIHNwZWNpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHNwZWNpZmllciA9PT0gJ0Bhbmd1bGFyL2NvcmUnKSB7XG4gICAgICAvLyBEb24ndCB1c2UgaW1wb3J0cyBmb3IgQGFuZ3VsYXIvY29yZSBzeW1ib2xzIGluIGEgZmxhdCBidW5kbGUsIGFzIHRoZXknbGwgYmUgdmlzaWJsZVxuICAgICAgLy8gZGlyZWN0bHkuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJld3JpdGVTeW1ib2woc3ltYm9sOiBzdHJpbmcsIHNwZWNpZmllcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3BlY2lmaWVyID09PSAnQGFuZ3VsYXIvY29yZScpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUFuZFJld3JpdGVDb3JlU3ltYm9sKHN5bWJvbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzeW1ib2w7XG4gICAgfVxuICB9XG5cbiAgcmV3cml0ZVNwZWNpZmllcihvcmlnaW5hbE1vZHVsZVBhdGg6IHN0cmluZywgaW5Db250ZXh0T2ZGaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBvcmlnaW5hbE1vZHVsZVBhdGg7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,170 +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 { jsDocComment, WrappedNodeExpr, WritePropExpr } from '@angular/compiler';
|
|
9
|
-
import MagicString from 'magic-string';
|
|
10
|
-
import { ImportManager } from '../../../src/ngtsc/translator';
|
|
11
|
-
import { IMPORT_PREFIX } from '../constants';
|
|
12
|
-
import { RedundantDecoratorMap } from './rendering_formatter';
|
|
13
|
-
import { renderSourceAndMap } from './source_maps';
|
|
14
|
-
import { getImportRewriter, stripExtension } from './utils';
|
|
15
|
-
/**
|
|
16
|
-
* A base-class for rendering an `AnalyzedFile`.
|
|
17
|
-
*
|
|
18
|
-
* Package formats have output files that must be rendered differently. Concrete sub-classes must
|
|
19
|
-
* implement the `addImports`, `addDefinitions` and `removeDecorators` abstract methods.
|
|
20
|
-
*/
|
|
21
|
-
export class Renderer {
|
|
22
|
-
constructor(host, srcFormatter, fs, logger, bundle, tsConfig = null) {
|
|
23
|
-
this.host = host;
|
|
24
|
-
this.srcFormatter = srcFormatter;
|
|
25
|
-
this.fs = fs;
|
|
26
|
-
this.logger = logger;
|
|
27
|
-
this.bundle = bundle;
|
|
28
|
-
this.tsConfig = tsConfig;
|
|
29
|
-
}
|
|
30
|
-
renderProgram(decorationAnalyses, switchMarkerAnalyses, privateDeclarationsAnalyses) {
|
|
31
|
-
const renderedFiles = [];
|
|
32
|
-
// Transform the source files.
|
|
33
|
-
this.bundle.src.program.getSourceFiles().forEach(sourceFile => {
|
|
34
|
-
if (decorationAnalyses.has(sourceFile) || switchMarkerAnalyses.has(sourceFile) ||
|
|
35
|
-
sourceFile === this.bundle.src.file) {
|
|
36
|
-
const compiledFile = decorationAnalyses.get(sourceFile);
|
|
37
|
-
const switchMarkerAnalysis = switchMarkerAnalyses.get(sourceFile);
|
|
38
|
-
renderedFiles.push(...this.renderFile(sourceFile, compiledFile, switchMarkerAnalysis, privateDeclarationsAnalyses));
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
return renderedFiles;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Render the source code and source-map for an Analyzed file.
|
|
45
|
-
* @param compiledFile The analyzed file to render.
|
|
46
|
-
* @param targetPath The absolute path where the rendered file will be written.
|
|
47
|
-
*/
|
|
48
|
-
renderFile(sourceFile, compiledFile, switchMarkerAnalysis, privateDeclarationsAnalyses) {
|
|
49
|
-
const isEntryPoint = sourceFile === this.bundle.src.file;
|
|
50
|
-
const outputText = new MagicString(sourceFile.text);
|
|
51
|
-
if (switchMarkerAnalysis) {
|
|
52
|
-
this.srcFormatter.rewriteSwitchableDeclarations(outputText, switchMarkerAnalysis.sourceFile, switchMarkerAnalysis.declarations);
|
|
53
|
-
}
|
|
54
|
-
const importManager = new ImportManager(getImportRewriter(this.bundle.src.r3SymbolsFile, this.bundle.isCore, this.bundle.isFlatCore), IMPORT_PREFIX);
|
|
55
|
-
if (compiledFile) {
|
|
56
|
-
// TODO: remove constructor param metadata and property decorators (we need info from the
|
|
57
|
-
// handlers to do this)
|
|
58
|
-
const decoratorsToRemove = this.computeDecoratorsToRemove(compiledFile.compiledClasses);
|
|
59
|
-
this.srcFormatter.removeDecorators(outputText, decoratorsToRemove);
|
|
60
|
-
compiledFile.compiledClasses.forEach(clazz => {
|
|
61
|
-
var _a;
|
|
62
|
-
const renderedDefinition = this.renderDefinitions(compiledFile.sourceFile, clazz, importManager, !!((_a = this.tsConfig) === null || _a === void 0 ? void 0 : _a.options.annotateForClosureCompiler));
|
|
63
|
-
this.srcFormatter.addDefinitions(outputText, clazz, renderedDefinition);
|
|
64
|
-
const renderedStatements = this.renderAdjacentStatements(compiledFile.sourceFile, clazz, importManager);
|
|
65
|
-
this.srcFormatter.addAdjacentStatements(outputText, clazz, renderedStatements);
|
|
66
|
-
});
|
|
67
|
-
if (!isEntryPoint && compiledFile.reexports.length > 0) {
|
|
68
|
-
this.srcFormatter.addDirectExports(outputText, compiledFile.reexports, importManager, compiledFile.sourceFile);
|
|
69
|
-
}
|
|
70
|
-
this.srcFormatter.addConstants(outputText, renderConstantPool(this.srcFormatter, compiledFile.sourceFile, compiledFile.constantPool, importManager), compiledFile.sourceFile);
|
|
71
|
-
}
|
|
72
|
-
// Add exports to the entry-point file
|
|
73
|
-
if (isEntryPoint) {
|
|
74
|
-
const entryPointBasePath = stripExtension(this.bundle.src.path);
|
|
75
|
-
this.srcFormatter.addExports(outputText, entryPointBasePath, privateDeclarationsAnalyses, importManager, sourceFile);
|
|
76
|
-
}
|
|
77
|
-
if (isEntryPoint || compiledFile) {
|
|
78
|
-
this.srcFormatter.addImports(outputText, importManager.getAllImports(sourceFile.fileName), sourceFile);
|
|
79
|
-
}
|
|
80
|
-
if (compiledFile || switchMarkerAnalysis || isEntryPoint) {
|
|
81
|
-
return renderSourceAndMap(this.logger, this.fs, sourceFile, outputText);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
return [];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* From the given list of classes, computes a map of decorators that should be removed.
|
|
89
|
-
* The decorators to remove are keyed by their container node, such that we can tell if
|
|
90
|
-
* we should remove the entire decorator property.
|
|
91
|
-
* @param classes The list of classes that may have decorators to remove.
|
|
92
|
-
* @returns A map of decorators to remove, keyed by their container node.
|
|
93
|
-
*/
|
|
94
|
-
computeDecoratorsToRemove(classes) {
|
|
95
|
-
const decoratorsToRemove = new RedundantDecoratorMap();
|
|
96
|
-
classes.forEach(clazz => {
|
|
97
|
-
if (clazz.decorators === null) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
clazz.decorators.forEach(dec => {
|
|
101
|
-
if (dec.node === null) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
const decoratorArray = dec.node.parent;
|
|
105
|
-
if (!decoratorsToRemove.has(decoratorArray)) {
|
|
106
|
-
decoratorsToRemove.set(decoratorArray, [dec.node]);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
decoratorsToRemove.get(decoratorArray).push(dec.node);
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
return decoratorsToRemove;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Render the definitions as source code for the given class.
|
|
117
|
-
* @param sourceFile The file containing the class to process.
|
|
118
|
-
* @param clazz The class whose definitions are to be rendered.
|
|
119
|
-
* @param compilation The results of analyzing the class - this is used to generate the rendered
|
|
120
|
-
* definitions.
|
|
121
|
-
* @param imports An object that tracks the imports that are needed by the rendered definitions.
|
|
122
|
-
*/
|
|
123
|
-
renderDefinitions(sourceFile, compiledClass, imports, annotateForClosureCompiler) {
|
|
124
|
-
const name = this.host.getInternalNameOfClass(compiledClass.declaration);
|
|
125
|
-
const leadingComment = annotateForClosureCompiler ? jsDocComment([{ tagName: 'nocollapse' }]) : undefined;
|
|
126
|
-
const statements = compiledClass.compilation.map(c => createAssignmentStatement(name, c.name, c.initializer, leadingComment));
|
|
127
|
-
return this.renderStatements(sourceFile, statements, imports);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Render the adjacent statements as source code for the given class.
|
|
131
|
-
* @param sourceFile The file containing the class to process.
|
|
132
|
-
* @param clazz The class whose statements are to be rendered.
|
|
133
|
-
* @param compilation The results of analyzing the class - this is used to generate the rendered
|
|
134
|
-
* definitions.
|
|
135
|
-
* @param imports An object that tracks the imports that are needed by the rendered definitions.
|
|
136
|
-
*/
|
|
137
|
-
renderAdjacentStatements(sourceFile, compiledClass, imports) {
|
|
138
|
-
const statements = [];
|
|
139
|
-
for (const c of compiledClass.compilation) {
|
|
140
|
-
statements.push(...c.statements);
|
|
141
|
-
}
|
|
142
|
-
return this.renderStatements(sourceFile, statements, imports);
|
|
143
|
-
}
|
|
144
|
-
renderStatements(sourceFile, statements, imports) {
|
|
145
|
-
const printStatement = (stmt) => this.srcFormatter.printStatement(stmt, sourceFile, imports);
|
|
146
|
-
return statements.map(printStatement).join('\n');
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Render the constant pool as source code for the given class.
|
|
151
|
-
*/
|
|
152
|
-
export function renderConstantPool(formatter, sourceFile, constantPool, imports) {
|
|
153
|
-
const printStatement = (stmt) => formatter.printStatement(stmt, sourceFile, imports);
|
|
154
|
-
return constantPool.statements.map(printStatement).join('\n');
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Create an Angular AST statement node that contains the assignment of the
|
|
158
|
-
* compiled decorator to be applied to the class.
|
|
159
|
-
* @param analyzedClass The info about the class whose statement we want to create.
|
|
160
|
-
*/
|
|
161
|
-
function createAssignmentStatement(receiverName, propName, initializer, leadingComment) {
|
|
162
|
-
const receiver = new WrappedNodeExpr(receiverName);
|
|
163
|
-
const statement = new WritePropExpr(receiver, propName, initializer, /* type */ undefined, /* sourceSpan */ undefined)
|
|
164
|
-
.toStmt();
|
|
165
|
-
if (leadingComment !== undefined) {
|
|
166
|
-
statement.addLeadingComment(leadingComment);
|
|
167
|
-
}
|
|
168
|
-
return statement;
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcmVuZGVyaW5nL3JlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBMkIsWUFBWSxFQUE2QixlQUFlLEVBQUUsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDcEksT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBS3ZDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUs1RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBSTNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBcUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFjLGlCQUFpQixFQUFFLGNBQWMsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUV2RTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQ1ksSUFBd0IsRUFBVSxZQUFnQyxFQUNsRSxFQUFzQixFQUFVLE1BQWMsRUFBVSxNQUF3QixFQUNoRixXQUFxQyxJQUFJO1FBRnpDLFNBQUksR0FBSixJQUFJLENBQW9CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2xFLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ2hGLGFBQVEsR0FBUixRQUFRLENBQWlDO0lBQUcsQ0FBQztJQUV6RCxhQUFhLENBQ1Qsa0JBQXNDLEVBQUUsb0JBQTBDLEVBQ2xGLDJCQUF3RDtRQUMxRCxNQUFNLGFBQWEsR0FBa0IsRUFBRSxDQUFDO1FBRXhDLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFD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QUFFLFFBQWdCLEVBQUUsV0FBdUIsRUFDM0UsY0FBK0I7SUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsTUFBTSxTQUFTLEdBQ1gsSUFBSSxhQUFhLENBQ2IsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7U0FDakYsTUFBTSxFQUFFLENBQUM7SUFDbEIsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO1FBQ2hDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUM3QztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7Q29uc3RhbnRQb29sLCBFeHByZXNzaW9uLCBqc0RvY0NvbW1lbnQsIExlYWRpbmdDb21tZW50LCBTdGF0ZW1lbnQsIFdyYXBwZWROb2RlRXhwciwgV3JpdGVQcm9wRXhwcn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IE1hZ2ljU3RyaW5nIGZyb20gJ21hZ2ljLXN0cmluZyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtSZWFkb25seUZpbGVTeXN0ZW19IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2xvZ2dpbmcnO1xuaW1wb3J0IHtJbXBvcnRNYW5hZ2VyfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdHJhbnNsYXRvcic7XG5pbXBvcnQge1BhcnNlZENvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uLy4uL3NyYy9wZXJmb3JtX2NvbXBpbGUnO1xuaW1wb3J0IHtQcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXN9IGZyb20gJy4uL2FuYWx5c2lzL3ByaXZhdGVfZGVjbGFyYXRpb25zX2FuYWx5emVyJztcbmltcG9ydCB7U3dpdGNoTWFya2VyQW5hbHlzZXMsIFN3aXRjaE1hcmtlckFuYWx5c2lzfSBmcm9tICcuLi9hbmFseXNpcy9zd2l0Y2hfbWFya2VyX2FuYWx5emVyJztcbmltcG9ydCB7Q29tcGlsZWRDbGFzcywgQ29tcGlsZWRGaWxlLCBEZWNvcmF0aW9uQW5hbHlzZXN9IGZyb20gJy4uL2FuYWx5c2lzL3R5cGVzJztcbmltcG9ydCB7SU1QT1JUX1BSRUZJWH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7TmdjY1JlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi9ob3N0L25nY2NfaG9zdCc7XG5pbXBvcnQge0VudHJ5UG9pbnRCdW5kbGV9IGZyb20gJy4uL3BhY2thZ2VzL2VudHJ5X3BvaW50X2J1bmRsZSc7XG5cbmltcG9ydCB7UmVkdW5kYW50RGVjb3JhdG9yTWFwLCBSZW5kZXJpbmdGb3JtYXR0ZXJ9IGZyb20gJy4vcmVuZGVyaW5nX2Zvcm1hdHRlcic7XG5pbXBvcnQge3JlbmRlclNvdXJjZUFuZE1hcH0gZnJvbSAnLi9zb3VyY2VfbWFwcyc7XG5pbXBvcnQge0ZpbGVUb1dyaXRlLCBnZXRJbXBvcnRSZXdyaXRlciwgc3RyaXBFeHRlbnNpb259IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEEgYmFzZS1jbGFzcyBmb3IgcmVuZGVyaW5nIGFuIGBBbmFseXplZEZpbGVgLlxuICpcbiAqIFBhY2thZ2UgZm9ybWF0cyBoYXZlIG91dHB1dCBmaWxlcyB0aGF0IG11c3QgYmUgcmVuZGVyZWQgZGlmZmVyZW50bHkuIENvbmNyZXRlIHN1Yi1jbGFzc2VzIG11c3RcbiAqIGltcGxlbWVudCB0aGUgYGFkZEltcG9ydHNgLCBgYWRkRGVmaW5pdGlvbnNgIGFuZCBgcmVtb3ZlRGVjb3JhdG9yc2AgYWJzdHJhY3QgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCwgcHJpdmF0ZSBzcmNGb3JtYXR0ZXI6IFJlbmRlcmluZ0Zvcm1hdHRlcixcbiAgICAgIHByaXZhdGUgZnM6IFJlYWRvbmx5RmlsZVN5c3RlbSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlciwgcHJpdmF0ZSBidW5kbGU6IEVudHJ5UG9pbnRCdW5kbGUsXG4gICAgICBwcml2YXRlIHRzQ29uZmlnOiBQYXJzZWRDb25maWd1cmF0aW9ufG51bGwgPSBudWxsKSB7fVxuXG4gIHJlbmRlclByb2dyYW0oXG4gICAgICBkZWNvcmF0aW9uQW5hbHlzZXM6IERlY29yYXRpb25BbmFseXNlcywgc3dpdGNoTWFya2VyQW5hbHlzZXM6IFN3aXRjaE1hcmtlckFuYWx5c2VzLFxuICAgICAgcHJpdmF0ZURlY2xhcmF0aW9uc0FuYWx5c2VzOiBQcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXMpOiBGaWxlVG9Xcml0ZVtdIHtcbiAgICBjb25zdCByZW5kZXJlZEZpbGVzOiBGaWxlVG9Xcml0ZVtdID0gW107XG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIHNvdXJjZSBmaWxlcy5cbiAgICB0aGlzLmJ1bmRsZS5zcmMucHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpLmZvckVhY2goc291cmNlRmlsZSA9PiB7XG4gICAgICBpZiAoZGVjb3JhdGlvbkFuYWx5c2VzLmhhcyhzb3VyY2VGaWxlKSB8fCBzd2l0Y2hNYXJrZXJBbmFseXNlcy5oYXMoc291cmNlRmlsZSkgfHxcbiAgICAgICAgICBzb3VyY2VGaWxlID09PSB0aGlzLmJ1bmRsZS5zcmMuZmlsZSkge1xuICAgICAgICBjb25zdCBjb21waWxlZEZpbGUgPSBkZWNvcmF0aW9uQW5hbHlzZXMuZ2V0KHNvdXJjZUZpbGUpO1xuICAgICAgICBjb25zdCBzd2l0Y2hNYXJrZXJBbmFseXNpcyA9IHN3aXRjaE1hcmtlckFuYWx5c2VzLmdldChzb3VyY2VGaWxlKTtcbiAgICAgICAgcmVuZGVyZWRGaWxlcy5wdXNoKC4uLnRoaXMucmVuZGVyRmlsZShcbiAgICAgICAgICAgIHNvdXJjZUZpbGUsIGNvbXBpbGVkRmlsZSwgc3dpdGNoTWFya2VyQW5hbHlzaXMsIHByaXZhdGVEZWNsYXJhdGlvbnNBbmFseXNlcykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlbmRlcmVkRmlsZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBzb3VyY2UgY29kZSBhbmQgc291cmNlLW1hcCBmb3IgYW4gQW5hbHl6ZWQgZmlsZS5cbiAgICogQHBhcmFtIGNvbXBpbGVkRmlsZSBUaGUgYW5hbHl6ZWQgZmlsZSB0byByZW5kZXIuXG4gICAqIEBwYXJhbSB0YXJnZXRQYXRoIFRoZSBhYnNvbHV0ZSBwYXRoIHdoZXJlIHRoZSByZW5kZXJlZCBmaWxlIHdpbGwgYmUgd3JpdHRlbi5cbiAgICovXG4gIHJlbmRlckZpbGUoXG4gICAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBjb21waWxlZEZpbGU6IENvbXBpbGVkRmlsZXx1bmRlZmluZWQsXG4gICAgICBzd2l0Y2hNYXJrZXJBbmFseXNpczogU3dpdGNoTWFya2VyQW5hbHlzaXN8dW5kZWZpbmVkLFxuICAgICAgcHJpdmF0ZURlY2xhcmF0aW9uc0FuYWx5c2VzOiBQcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXMpOiBGaWxlVG9Xcml0ZVtdIHtcbiAgICBjb25zdCBpc0VudHJ5UG9pbnQgPSBzb3VyY2VGaWxlID09PSB0aGlzLmJ1bmRsZS5zcmMuZmlsZTtcbiAgICBjb25zdCBvdXRwdXRUZXh0ID0gbmV3IE1hZ2ljU3RyaW5nKHNvdXJjZUZpbGUudGV4dCk7XG5cbiAgICBpZiAoc3dpdGNoTWFya2VyQW5hbHlzaXMpIHtcbiAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLnJld3JpdGVTd2l0Y2hhYmxlRGVjbGFyYXRpb25zKFxuICAgICAgICAgIG91dHB1dFRleHQsIHN3aXRjaE1hcmtlckFuYWx5c2lzLnNvdXJjZUZpbGUsIHN3aXRjaE1hcmtlckFuYWx5c2lzLmRlY2xhcmF0aW9ucyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0TWFuYWdlciA9IG5ldyBJbXBvcnRNYW5hZ2VyKFxuICAgICAgICBnZXRJbXBvcnRSZXdyaXRlcihcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlLnNyYy5yM1N5bWJvbHNGaWxlLCB0aGlzLmJ1bmRsZS5pc0NvcmUsIHRoaXMuYnVuZGxlLmlzRmxhdENvcmUpLFxuICAgICAgICBJTVBPUlRfUFJFRklYKTtcblxuICAgIGlmIChjb21waWxlZEZpbGUpIHtcbiAgICAgIC8vIFRPRE86IHJlbW92ZSBjb25zdHJ1Y3RvciBwYXJhbSBtZXRhZGF0YSBhbmQgcHJvcGVydHkgZGVjb3JhdG9ycyAod2UgbmVlZCBpbmZvIGZyb20gdGhlXG4gICAgICAvLyBoYW5kbGVycyB0byBkbyB0aGlzKVxuICAgICAgY29uc3QgZGVjb3JhdG9yc1RvUmVtb3ZlID0gdGhpcy5jb21wdXRlRGVjb3JhdG9yc1RvUmVtb3ZlKGNvbXBpbGVkRmlsZS5jb21waWxlZENsYXNzZXMpO1xuICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIucmVtb3ZlRGVjb3JhdG9ycyhvdXRwdXRUZXh0LCBkZWNvcmF0b3JzVG9SZW1vdmUpO1xuXG4gICAgICBjb21waWxlZEZpbGUuY29tcGlsZWRDbGFzc2VzLmZvckVhY2goY2xhenogPT4ge1xuICAgICAgICBjb25zdCByZW5kZXJlZERlZmluaXRpb24gPSB0aGlzLnJlbmRlckRlZmluaXRpb25zKFxuICAgICAgICAgICAgY29tcGlsZWRGaWxlLnNvdXJjZUZpbGUsIGNsYXp6LCBpbXBvcnRNYW5hZ2VyLFxuICAgICAgICAgICAgISF0aGlzLnRzQ29uZmlnPy5vcHRpb25zLmFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyKTtcbiAgICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIuYWRkRGVmaW5pdGlvbnMob3V0cHV0VGV4dCwgY2xhenosIHJlbmRlcmVkRGVmaW5pdGlvbik7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyZWRTdGF0ZW1lbnRzID1cbiAgICAgICAgICAgIHRoaXMucmVuZGVyQWRqYWNlbnRTdGF0ZW1lbnRzKGNvbXBpbGVkRmlsZS5zb3VyY2VGaWxlLCBjbGF6eiwgaW1wb3J0TWFuYWdlcik7XG4gICAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLmFkZEFkamFjZW50U3RhdGVtZW50cyhvdXRwdXRUZXh0LCBjbGF6eiwgcmVuZGVyZWRTdGF0ZW1lbnRzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWlzRW50cnlQb2ludCAmJiBjb21waWxlZEZpbGUucmVleHBvcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIuYWRkRGlyZWN0RXhwb3J0cyhcbiAgICAgICAgICAgIG91dHB1dFRleHQsIGNvbXBpbGVkRmlsZS5yZWV4cG9ydHMsIGltcG9ydE1hbmFnZXIsIGNvbXBpbGVkRmlsZS5zb3VyY2VGaWxlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zcmNGb3JtYXR0ZXIuYWRkQ29uc3RhbnRzKFxuICAgICAgICAgIG91dHB1dFRleHQsXG4gICAgICAgICAgcmVuZGVyQ29uc3RhbnRQb29sKFxuICAgICAgICAgICAgICB0aGlzLnNyY0Zvcm1hdHRlciwgY29tcGlsZWRGaWxlLnNvdXJjZUZpbGUsIGNvbXBpbGVkRmlsZS5jb25zdGFudFBvb2wsIGltcG9ydE1hbmFnZXIpLFxuICAgICAgICAgIGNvbXBpbGVkRmlsZS5zb3VyY2VGaWxlKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgZXhwb3J0cyB0byB0aGUgZW50cnktcG9pbnQgZmlsZVxuICAgIGlmIChpc0VudHJ5UG9pbnQpIHtcbiAgICAgIGNvbnN0IGVudHJ5UG9pbnRCYXNlUGF0aCA9IHN0cmlwRXh0ZW5zaW9uKHRoaXMuYnVuZGxlLnNyYy5wYXRoKTtcbiAgICAgIHRoaXMuc3JjRm9ybWF0dGVyLmFkZEV4cG9ydHMoXG4gICAgICAgICAgb3V0cHV0VGV4dCwgZW50cnlQb2ludEJhc2VQYXRoLCBwcml2YXRlRGVjbGFyYXRpb25zQW5hbHlzZXMsIGltcG9ydE1hbmFnZXIsIHNvdXJjZUZpbGUpO1xuICAgIH1cblxuICAgIGlmIChpc0VudHJ5UG9pbnQgfHwgY29tcGlsZWRGaWxlKSB7XG4gICAgICB0aGlzLnNyY0Zvcm1hdHRlci5hZGRJbXBvcnRzKFxuICAgICAgICAgIG91dHB1dFRleHQsIGltcG9ydE1hbmFnZXIuZ2V0QWxsSW1wb3J0cyhzb3VyY2VGaWxlLmZpbGVOYW1lKSwgc291cmNlRmlsZSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbXBpbGVkRmlsZSB8fCBzd2l0Y2hNYXJrZXJBbmFseXNpcyB8fCBpc0VudHJ5UG9pbnQpIHtcbiAgICAgIHJldHVybiByZW5kZXJTb3VyY2VBbmRNYXAodGhpcy5sb2dnZXIsIHRoaXMuZnMsIHNvdXJjZUZpbGUsIG91dHB1dFRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZyb20gdGhlIGdpdmVuIGxpc3Qgb2YgY2xhc3NlcywgY29tcHV0ZXMgYSBtYXAgb2YgZGVjb3JhdG9ycyB0aGF0IHNob3VsZCBiZSByZW1vdmVkLlxuICAgKiBUaGUgZGVjb3JhdG9ycyB0byByZW1vdmUgYXJlIGtleWVkIGJ5IHRoZWlyIGNvbnRhaW5lciBub2RlLCBzdWNoIHRoYXQgd2UgY2FuIHRlbGwgaWZcbiAgICogd2Ugc2hvdWxkIHJlbW92ZSB0aGUgZW50aXJlIGRlY29yYXRvciBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIGNsYXNzZXMgVGhlIGxpc3Qgb2YgY2xhc3NlcyB0aGF0IG1heSBoYXZlIGRlY29yYXRvcnMgdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyBBIG1hcCBvZiBkZWNvcmF0b3JzIHRvIHJlbW92ZSwga2V5ZWQgYnkgdGhlaXIgY29udGFpbmVyIG5vZGUuXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVEZWNvcmF0b3JzVG9SZW1vdmUoY2xhc3NlczogQ29tcGlsZWRDbGFzc1tdKTogUmVkdW5kYW50RGVjb3JhdG9yTWFwIHtcbiAgICBjb25zdCBkZWNvcmF0b3JzVG9SZW1vdmUgPSBuZXcgUmVkdW5kYW50RGVjb3JhdG9yTWFwKCk7XG4gICAgY2xhc3Nlcy5mb3JFYWNoKGNsYXp6ID0+IHtcbiAgICAgIGlmIChjbGF6ei5kZWNvcmF0b3JzID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2xhenouZGVjb3JhdG9ycy5mb3JFYWNoKGRlYyA9PiB7XG4gICAgICAgIGlmIChkZWMubm9kZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWNvcmF0b3JBcnJheSA9IGRlYy5ub2RlLnBhcmVudCE7XG4gICAgICAgIGlmICghZGVjb3JhdG9yc1RvUmVtb3ZlLmhhcyhkZWNvcmF0b3JBcnJheSkpIHtcbiAgICAgICAgICBkZWNvcmF0b3JzVG9SZW1vdmUuc2V0KGRlY29yYXRvckFycmF5LCBbZGVjLm5vZGVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWNvcmF0b3JzVG9SZW1vdmUuZ2V0KGRlY29yYXRvckFycmF5KSEucHVzaChkZWMubm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBkZWNvcmF0b3JzVG9SZW1vdmU7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBkZWZpbml0aW9ucyBhcyBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIGNsYXNzLlxuICAgKiBAcGFyYW0gc291cmNlRmlsZSBUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjbGFzcyB0byBwcm9jZXNzLlxuICAgKiBAcGFyYW0gY2xhenogVGhlIGNsYXNzIHdob3NlIGRlZmluaXRpb25zIGFyZSB0byBiZSByZW5kZXJlZC5cbiAgICogQHBhcmFtIGNvbXBpbGF0aW9uIFRoZSByZXN1bHRzIG9mIGFuYWx5emluZyB0aGUgY2xhc3MgLSB0aGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHJlbmRlcmVkXG4gICAqIGRlZmluaXRpb25zLlxuICAgKiBAcGFyYW0gaW1wb3J0cyBBbiBvYmplY3QgdGhhdCB0cmFja3MgdGhlIGltcG9ydHMgdGhhdCBhcmUgbmVlZGVkIGJ5IHRoZSByZW5kZXJlZCBkZWZpbml0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgcmVuZGVyRGVmaW5pdGlvbnMoXG4gICAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBjb21waWxlZENsYXNzOiBDb21waWxlZENsYXNzLCBpbXBvcnRzOiBJbXBvcnRNYW5hZ2VyLFxuICAgICAgYW5ub3RhdGVGb3JDbG9zdXJlQ29tcGlsZXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmhvc3QuZ2V0SW50ZXJuYWxOYW1lT2ZDbGFzcyhjb21waWxlZENsYXNzLmRlY2xhcmF0aW9uKTtcbiAgICBjb25zdCBsZWFkaW5nQ29tbWVudCA9XG4gICAgICAgIGFubm90YXRlRm9yQ2xvc3VyZUNvbXBpbGVyID8ganNEb2NDb21tZW50KFt7dGFnTmFtZTogJ25vY29sbGFwc2UnfV0pIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0YXRlbWVudHM6IFN0YXRlbWVudFtdID0gY29tcGlsZWRDbGFzcy5jb21waWxhdGlvbi5tYXAoXG4gICAgICAgIGMgPT4gY3JlYXRlQXNzaWdubWVudFN0YXRlbWVudChuYW1lLCBjLm5hbWUsIGMuaW5pdGlhbGl6ZXIsIGxlYWRpbmdDb21tZW50KSk7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyU3RhdGVtZW50cyhzb3VyY2VGaWxlLCBzdGF0ZW1lbnRzLCBpbXBvcnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIGFkamFjZW50IHN0YXRlbWVudHMgYXMgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBjbGFzcy5cbiAgICogQHBhcmFtIHNvdXJjZUZpbGUgVGhlIGZpbGUgY29udGFpbmluZyB0aGUgY2xhc3MgdG8gcHJvY2Vzcy5cbiAgICogQHBhcmFtIGNsYXp6IFRoZSBjbGFzcyB3aG9zZSBzdGF0ZW1lbnRzIGFyZSB0byBiZSByZW5kZXJlZC5cbiAgICogQHBhcmFtIGNvbXBpbGF0aW9uIFRoZSByZXN1bHRzIG9mIGFuYWx5emluZyB0aGUgY2xhc3MgLSB0aGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHJlbmRlcmVkXG4gICAqIGRlZmluaXRpb25zLlxuICAgKiBAcGFyYW0gaW1wb3J0cyBBbiBvYmplY3QgdGhhdCB0cmFja3MgdGhlIGltcG9ydHMgdGhhdCBhcmUgbmVlZGVkIGJ5IHRoZSByZW5kZXJlZCBkZWZpbml0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQWRqYWNlbnRTdGF0ZW1lbnRzKFxuICAgICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgY29tcGlsZWRDbGFzczogQ29tcGlsZWRDbGFzcywgaW1wb3J0czogSW1wb3J0TWFuYWdlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdGVtZW50czogU3RhdGVtZW50W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGMgb2YgY29tcGlsZWRDbGFzcy5jb21waWxhdGlvbikge1xuICAgICAgc3RhdGVtZW50cy5wdXNoKC4uLmMuc3RhdGVtZW50cyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlbmRlclN0YXRlbWVudHMoc291cmNlRmlsZSwgc3RhdGVtZW50cywgaW1wb3J0cyk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0YXRlbWVudHMoXG4gICAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSwgaW1wb3J0czogSW1wb3J0TWFuYWdlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcHJpbnRTdGF0ZW1lbnQgPSAoc3RtdDogU3RhdGVtZW50KSA9PlxuICAgICAgICB0aGlzLnNyY0Zvcm1hdHRlci5wcmludFN0YXRlbWVudChzdG10LCBzb3VyY2VGaWxlLCBpbXBvcnRzKTtcbiAgICByZXR1cm4gc3RhdGVtZW50cy5tYXAocHJpbnRTdGF0ZW1lbnQpLmpvaW4oJ1xcbicpO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBjb25zdGFudCBwb29sIGFzIHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gY2xhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDb25zdGFudFBvb2woXG4gICAgZm9ybWF0dGVyOiBSZW5kZXJpbmdGb3JtYXR0ZXIsIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGNvbnN0YW50UG9vbDogQ29uc3RhbnRQb29sLFxuICAgIGltcG9ydHM6IEltcG9ydE1hbmFnZXIpOiBzdHJpbmcge1xuICBjb25zdCBwcmludFN0YXRlbWVudCA9IChzdG10OiBTdGF0ZW1lbnQpID0+IGZvcm1hdHRlci5wcmludFN0YXRlbWVudChzdG10LCBzb3VyY2VGaWxlLCBpbXBvcnRzKTtcbiAgcmV0dXJuIGNvbnN0YW50UG9vbC5zdGF0ZW1lbnRzLm1hcChwcmludFN0YXRlbWVudCkuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIEFuZ3VsYXIgQVNUIHN0YXRlbWVudCBub2RlIHRoYXQgY29udGFpbnMgdGhlIGFzc2lnbm1lbnQgb2YgdGhlXG4gKiBjb21waWxlZCBkZWNvcmF0b3IgdG8gYmUgYXBwbGllZCB0byB0aGUgY2xhc3MuXG4gKiBAcGFyYW0gYW5hbHl6ZWRDbGFzcyBUaGUgaW5mbyBhYm91dCB0aGUgY2xhc3Mgd2hvc2Ugc3RhdGVtZW50IHdlIHdhbnQgdG8gY3JlYXRlLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25tZW50U3RhdGVtZW50KFxuICAgIHJlY2VpdmVyTmFtZTogdHMuRGVjbGFyYXRpb25OYW1lLCBwcm9wTmFtZTogc3RyaW5nLCBpbml0aWFsaXplcjogRXhwcmVzc2lvbixcbiAgICBsZWFkaW5nQ29tbWVudD86IExlYWRpbmdDb21tZW50KTogU3RhdGVtZW50IHtcbiAgY29uc3QgcmVjZWl2ZXIgPSBuZXcgV3JhcHBlZE5vZGVFeHByKHJlY2VpdmVyTmFtZSk7XG4gIGNvbnN0IHN0YXRlbWVudCA9XG4gICAgICBuZXcgV3JpdGVQcm9wRXhwcihcbiAgICAgICAgICByZWNlaXZlciwgcHJvcE5hbWUsIGluaXRpYWxpemVyLCAvKiB0eXBlICovIHVuZGVmaW5lZCwgLyogc291cmNlU3BhbiAqLyB1bmRlZmluZWQpXG4gICAgICAgICAgLnRvU3RtdCgpO1xuICBpZiAobGVhZGluZ0NvbW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXRlbWVudC5hZGRMZWFkaW5nQ29tbWVudChsZWFkaW5nQ29tbWVudCk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const RedundantDecoratorMap = Map;
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nX2Zvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9yZW5kZXJpbmcvcmVuZGVyaW5nX2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3QkEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1N0YXRlbWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IE1hZ2ljU3RyaW5nIGZyb20gJ21hZ2ljLXN0cmluZyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtSZWV4cG9ydH0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2ltcG9ydHMnO1xuaW1wb3J0IHtJbXBvcnQsIEltcG9ydE1hbmFnZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy90cmFuc2xhdG9yJztcbmltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVyc0luZm99IGZyb20gJy4uL2FuYWx5c2lzL21vZHVsZV93aXRoX3Byb3ZpZGVyc19hbmFseXplcic7XG5pbXBvcnQge0V4cG9ydEluZm99IGZyb20gJy4uL2FuYWx5c2lzL3ByaXZhdGVfZGVjbGFyYXRpb25zX2FuYWx5emVyJztcbmltcG9ydCB7Q29tcGlsZWRDbGFzc30gZnJvbSAnLi4vYW5hbHlzaXMvdHlwZXMnO1xuaW1wb3J0IHtTd2l0Y2hhYmxlVmFyaWFibGVEZWNsYXJhdGlvbn0gZnJvbSAnLi4vaG9zdC9uZ2NjX2hvc3QnO1xuXG4vKipcbiAqIFRoZSBjb2xsZWN0ZWQgZGVjb3JhdG9ycyB0aGF0IGhhdmUgYmVjb21lIHJlZHVuZGFudCBhZnRlciB0aGUgY29tcGlsYXRpb25cbiAqIG9mIEl2eSBzdGF0aWMgZmllbGRzLiBUaGUgbWFwIGlzIGtleWVkIGJ5IHRoZSBjb250YWluZXIgbm9kZSwgc3VjaCB0aGF0IHdlXG4gKiBjYW4gdGVsbCBpZiB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBlbnRpcmUgZGVjb3JhdG9yIHByb3BlcnR5XG4gKi9cbmV4cG9ydCB0eXBlIFJlZHVuZGFudERlY29yYXRvck1hcCA9IE1hcDx0cy5Ob2RlLCB0cy5Ob2RlW10+O1xuZXhwb3J0IGNvbnN0IFJlZHVuZGFudERlY29yYXRvck1hcCA9IE1hcDtcblxuLyoqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2Ugd2l0aCBtZXRob2RzIHRoYXQga25vdyBob3cgdG8gcmVuZGVyIGEgc3BlY2lmaWMgZm9ybWF0LFxuICogc3VjaCBhcyBFU001IG9yIFVNRC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJpbmdGb3JtYXR0ZXIge1xuICBhZGRDb25zdGFudHMob3V0cHV0OiBNYWdpY1N0cmluZywgY29uc3RhbnRzOiBzdHJpbmcsIGZpbGU6IHRzLlNvdXJjZUZpbGUpOiB2b2lkO1xuICBhZGRJbXBvcnRzKG91dHB1dDogTWFnaWNTdHJpbmcsIGltcG9ydHM6IEltcG9ydFtdLCBzZjogdHMuU291cmNlRmlsZSk6IHZvaWQ7XG4gIGFkZEV4cG9ydHMoXG4gICAgICBvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBlbnRyeVBvaW50QmFzZVBhdGg6IHN0cmluZywgZXhwb3J0czogRXhwb3J0SW5mb1tdLFxuICAgICAgaW1wb3J0TWFuYWdlcjogSW1wb3J0TWFuYWdlciwgZmlsZTogdHMuU291cmNlRmlsZSk6IHZvaWQ7XG4gIGFkZERpcmVjdEV4cG9ydHMoXG4gICAgICBvdXRwdXQ6IE1hZ2ljU3RyaW5nLCBleHBvcnRzOiBSZWV4cG9ydFtdLCBpbXBvcnRNYW5hZ2VyOiBJbXBvcnRNYW5hZ2VyLFxuICAgICAgZmlsZTogdHMuU291cmNlRmlsZSk6IHZvaWQ7XG4gIGFkZERlZmluaXRpb25zKG91dHB1dDogTWFnaWNTdHJpbmcsIGNvbXBpbGVkQ2xhc3M6IENvbXBpbGVkQ2xhc3MsIGRlZmluaXRpb25zOiBzdHJpbmcpOiB2b2lkO1xuICBhZGRBZGphY2VudFN0YXRlbWVudHMob3V0cHV0OiBNYWdpY1N0cmluZywgY29tcGlsZWRDbGFzczogQ29tcGlsZWRDbGFzcywgc3RhdGVtZW50czogc3RyaW5nKTpcbiAgICAgIHZvaWQ7XG4gIHJlbW92ZURlY29yYXRvcnMob3V0cHV0OiBNYWdpY1N0cmluZywgZGVjb3JhdG9yc1RvUmVtb3ZlOiBSZWR1bmRhbnREZWNvcmF0b3JNYXApOiB2b2lkO1xuICByZXdyaXRlU3dpdGNoYWJsZURlY2xhcmF0aW9ucyhcbiAgICAgIG91dHB1dFRleHQ6IE1hZ2ljU3RyaW5nLCBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICAgICAgZGVjbGFyYXRpb25zOiBTd2l0Y2hhYmxlVmFyaWFibGVEZWNsYXJhdGlvbltdKTogdm9pZDtcbiAgYWRkTW9kdWxlV2l0aFByb3ZpZGVyc1BhcmFtcyhcbiAgICAgIG91dHB1dFRleHQ6IE1hZ2ljU3RyaW5nLCBtb2R1bGVXaXRoUHJvdmlkZXJzOiBNb2R1bGVXaXRoUHJvdmlkZXJzSW5mb1tdLFxuICAgICAgaW1wb3J0TWFuYWdlcjogSW1wb3J0TWFuYWdlcik6IHZvaWQ7XG4gIHByaW50U3RhdGVtZW50KHN0bXQ6IFN0YXRlbWVudCwgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgaW1wb3J0TWFuYWdlcjogSW1wb3J0TWFuYWdlcik6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,54 +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 { fromObject, generateMapFileComment } from 'convert-source-map';
|
|
9
|
-
import { absoluteFrom, absoluteFromSourceFile } from '../../../src/ngtsc/file_system';
|
|
10
|
-
import { ContentOrigin, SourceFileLoader } from '../../../src/ngtsc/sourcemaps';
|
|
11
|
-
/**
|
|
12
|
-
* Merge the input and output source-maps, replacing the source-map comment in the output file
|
|
13
|
-
* with an appropriate source-map comment pointing to the merged source-map.
|
|
14
|
-
*/
|
|
15
|
-
export function renderSourceAndMap(logger, fs, sourceFile, generatedMagicString) {
|
|
16
|
-
var _a;
|
|
17
|
-
const sourceFilePath = absoluteFromSourceFile(sourceFile);
|
|
18
|
-
const sourceMapPath = absoluteFrom(`${sourceFilePath}.map`);
|
|
19
|
-
const generatedContent = generatedMagicString.toString();
|
|
20
|
-
const generatedMap = generatedMagicString.generateMap({ file: sourceFilePath, source: sourceFilePath, includeContent: true });
|
|
21
|
-
try {
|
|
22
|
-
const loader = new SourceFileLoader(fs, logger, {});
|
|
23
|
-
const generatedFile = loader.loadSourceFile(sourceFilePath, generatedContent, { map: generatedMap, mapPath: sourceMapPath });
|
|
24
|
-
const rawMergedMap = generatedFile.renderFlattenedSourceMap();
|
|
25
|
-
const mergedMap = fromObject(rawMergedMap);
|
|
26
|
-
const originalFile = loader.loadSourceFile(sourceFilePath, generatedMagicString.original);
|
|
27
|
-
if (originalFile.rawMap === null && !sourceFile.isDeclarationFile ||
|
|
28
|
-
((_a = originalFile.rawMap) === null || _a === void 0 ? void 0 : _a.origin) === ContentOrigin.Inline) {
|
|
29
|
-
// We render an inline source map if one of:
|
|
30
|
-
// * there was no input source map and this is not a typings file;
|
|
31
|
-
// * the input source map exists and was inline.
|
|
32
|
-
//
|
|
33
|
-
// We do not generate inline source maps for typings files unless there explicitly was one in
|
|
34
|
-
// the input file because these inline source maps can be very large and it impacts on the
|
|
35
|
-
// performance of IDEs that need to read them to provide intellisense etc.
|
|
36
|
-
return [
|
|
37
|
-
{ path: sourceFilePath, contents: `${generatedFile.contents}\n${mergedMap.toComment()}` }
|
|
38
|
-
];
|
|
39
|
-
}
|
|
40
|
-
const sourceMapComment = generateMapFileComment(`${fs.basename(sourceFilePath)}.map`);
|
|
41
|
-
return [
|
|
42
|
-
{ path: sourceFilePath, contents: `${generatedFile.contents}\n${sourceMapComment}` },
|
|
43
|
-
{ path: sourceMapPath, contents: mergedMap.toJSON() }
|
|
44
|
-
];
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
logger.error(`Error when flattening the source-map "${sourceMapPath}" for "${sourceFilePath}": ${e.toString()}`);
|
|
48
|
-
return [
|
|
49
|
-
{ path: sourceFilePath, contents: generatedContent },
|
|
50
|
-
{ path: sourceMapPath, contents: fromObject(generatedMap).toJSON() },
|
|
51
|
-
];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlX21hcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbmdjYy9zcmMvcmVuZGVyaW5nL3NvdXJjZV9tYXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxVQUFVLEVBQUUsc0JBQXNCLEVBQXFCLE1BQU0sb0JBQW9CLENBQUM7QUFJMUYsT0FBTyxFQUFDLFlBQVksRUFBRSxzQkFBc0IsRUFBcUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RyxPQUFPLEVBQUMsYUFBYSxFQUFnQixnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBVTVGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDOUIsTUFBYyxFQUFFLEVBQXNCLEVBQUUsVUFBeUIsRUFDakUsb0JBQWlDOztJQUNuQyxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsR0FBRyxjQUFjLE1BQU0sQ0FBQyxDQUFDO0lBQzVELE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQWlCLG9CQUFvQixDQUFDLFdBQVcsQ0FDL0QsRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFFMUUsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUN2QyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDO1FBRW5GLE1BQU0sWUFBWSxHQUFpQixhQUFhLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM1RSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUYsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUI7WUFDN0QsQ0FBQSxNQUFBLFlBQVksQ0FBQyxNQUFNLDBDQUFFLE1BQU0sTUFBSyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ3hELDRDQUE0QztZQUM1QyxrRUFBa0U7WUFDbEUsZ0RBQWdEO1lBQ2hELEVBQUU7WUFDRiw2RkFBNkY7WUFDN0YsMEZBQTBGO1lBQzFGLDBFQUEwRTtZQUMxRSxPQUFPO2dCQUNMLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxhQUFhLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDO2FBQ3hGLENBQUM7U0FDSDtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RixPQUFPO1lBQ0wsRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLEVBQUUsRUFBQztZQUNsRixFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBQztTQUNwRCxDQUFDO0tBQ0g7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sQ0FBQyxLQUFLLENBQUMseUNBQXlDLGFBQWEsVUFDL0QsY0FBYyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsT0FBTztZQUNMLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUM7WUFDbEQsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUM7U0FDbkUsQ0FBQztLQUNIO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtmcm9tT2JqZWN0LCBnZW5lcmF0ZU1hcEZpbGVDb21tZW50LCBTb3VyY2VNYXBDb252ZXJ0ZXJ9IGZyb20gJ2NvbnZlcnQtc291cmNlLW1hcCc7XG5pbXBvcnQgTWFnaWNTdHJpbmcgZnJvbSAnbWFnaWMtc3RyaW5nJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2Fic29sdXRlRnJvbSwgYWJzb2x1dGVGcm9tU291cmNlRmlsZSwgUmVhZG9ubHlGaWxlU3lzdGVtfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvZmlsZV9zeXN0ZW0nO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7Q29udGVudE9yaWdpbiwgUmF3U291cmNlTWFwLCBTb3VyY2VGaWxlTG9hZGVyfSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2Mvc291cmNlbWFwcyc7XG5cbmltcG9ydCB7RmlsZVRvV3JpdGV9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZU1hcEluZm8ge1xuICBzb3VyY2U6IHN0cmluZztcbiAgbWFwOiBTb3VyY2VNYXBDb252ZXJ0ZXJ8bnVsbDtcbiAgaXNJbmxpbmU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogTWVyZ2UgdGhlIGlucHV0IGFuZCBvdXRwdXQgc291cmNlLW1hcHMsIHJlcGxhY2luZyB0aGUgc291cmNlLW1hcCBjb21tZW50IGluIHRoZSBvdXRwdXQgZmlsZVxuICogd2l0aCBhbiBhcHByb3ByaWF0ZSBzb3VyY2UtbWFwIGNvbW1lbnQgcG9pbnRpbmcgdG8gdGhlIG1lcmdlZCBzb3VyY2UtbWFwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyU291cmNlQW5kTWFwKFxuICAgIGxvZ2dlcjogTG9nZ2VyLCBmczogUmVhZG9ubHlGaWxlU3lzdGVtLCBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICAgIGdlbmVyYXRlZE1hZ2ljU3RyaW5nOiBNYWdpY1N0cmluZyk6IEZpbGVUb1dyaXRlW10ge1xuICBjb25zdCBzb3VyY2VGaWxlUGF0aCA9IGFic29sdXRlRnJvbVNvdXJjZUZpbGUoc291cmNlRmlsZSk7XG4gIGNvbnN0IHNvdXJjZU1hcFBhdGggPSBhYnNvbHV0ZUZyb20oYCR7c291cmNlRmlsZVBhdGh9Lm1hcGApO1xuICBjb25zdCBnZW5lcmF0ZWRDb250ZW50ID0gZ2VuZXJhdGVkTWFnaWNTdHJpbmcudG9TdHJpbmcoKTtcbiAgY29uc3QgZ2VuZXJhdGVkTWFwOiBSYXdTb3VyY2VNYXAgPSBnZW5lcmF0ZWRNYWdpY1N0cmluZy5nZW5lcmF0ZU1hcChcbiAgICAgIHtmaWxlOiBzb3VyY2VGaWxlUGF0aCwgc291cmNlOiBzb3VyY2VGaWxlUGF0aCwgaW5jbHVkZUNvbnRlbnQ6IHRydWV9KTtcblxuICB0cnkge1xuICAgIGNvbnN0IGxvYWRlciA9IG5ldyBTb3VyY2VGaWxlTG9hZGVyKGZzLCBsb2dnZXIsIHt9KTtcbiAgICBjb25zdCBnZW5lcmF0ZWRGaWxlID0gbG9hZGVyLmxvYWRTb3VyY2VGaWxlKFxuICAgICAgICBzb3VyY2VGaWxlUGF0aCwgZ2VuZXJhdGVkQ29udGVudCwge21hcDogZ2VuZXJhdGVkTWFwLCBtYXBQYXRoOiBzb3VyY2VNYXBQYXRofSk7XG5cbiAgICBjb25zdCByYXdNZXJnZWRNYXA6IFJhd1NvdXJjZU1hcCA9IGdlbmVyYXRlZEZpbGUucmVuZGVyRmxhdHRlbmVkU291cmNlTWFwKCk7XG4gICAgY29uc3QgbWVyZ2VkTWFwID0gZnJvbU9iamVjdChyYXdNZXJnZWRNYXApO1xuICAgIGNvbnN0IG9yaWdpbmFsRmlsZSA9IGxvYWRlci5sb2FkU291cmNlRmlsZShzb3VyY2VGaWxlUGF0aCwgZ2VuZXJhdGVkTWFnaWNTdHJpbmcub3JpZ2luYWwpO1xuICAgIGlmIChvcmlnaW5hbEZpbGUucmF3TWFwID09PSBudWxsICYmICFzb3VyY2VGaWxlLmlzRGVjbGFyYXRpb25GaWxlIHx8XG4gICAgICAgIG9yaWdpbmFsRmlsZS5yYXdNYXA/Lm9yaWdpbiA9PT0gQ29udGVudE9yaWdpbi5JbmxpbmUpIHtcbiAgICAgIC8vIFdlIHJlbmRlciBhbiBpbmxpbmUgc291cmNlIG1hcCBpZiBvbmUgb2Y6XG4gICAgICAvLyAqIHRoZXJlIHdhcyBubyBpbnB1dCBzb3VyY2UgbWFwIGFuZCB0aGlzIGlzIG5vdCBhIHR5cGluZ3MgZmlsZTtcbiAgICAgIC8vICogdGhlIGlucHV0IHNvdXJjZSBtYXAgZXhpc3RzIGFuZCB3YXMgaW5saW5lLlxuICAgICAgLy9cbiAgICAgIC8vIFdlIGRvIG5vdCBnZW5lcmF0ZSBpbmxpbmUgc291cmNlIG1hcHMgZm9yIHR5cGluZ3MgZmlsZXMgdW5sZXNzIHRoZXJlIGV4cGxpY2l0bHkgd2FzIG9uZSBpblxuICAgICAgLy8gdGhlIGlucHV0IGZpbGUgYmVjYXVzZSB0aGVzZSBpbmxpbmUgc291cmNlIG1hcHMgY2FuIGJlIHZlcnkgbGFyZ2UgYW5kIGl0IGltcGFjdHMgb24gdGhlXG4gICAgICAvLyBwZXJmb3JtYW5jZSBvZiBJREVzIHRoYXQgbmVlZCB0byByZWFkIHRoZW0gdG8gcHJvdmlkZSBpbnRlbGxpc2Vuc2UgZXRjLlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge3BhdGg6IHNvdXJjZUZpbGVQYXRoLCBjb250ZW50czogYCR7Z2VuZXJhdGVkRmlsZS5jb250ZW50c31cXG4ke21lcmdlZE1hcC50b0NvbW1lbnQoKX1gfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VNYXBDb21tZW50ID0gZ2VuZXJhdGVNYXBGaWxlQ29tbWVudChgJHtmcy5iYXNlbmFtZShzb3VyY2VGaWxlUGF0aCl9Lm1hcGApO1xuICAgIHJldHVybiBbXG4gICAgICB7cGF0aDogc291cmNlRmlsZVBhdGgsIGNvbnRlbnRzOiBgJHtnZW5lcmF0ZWRGaWxlLmNvbnRlbnRzfVxcbiR7c291cmNlTWFwQ29tbWVudH1gfSxcbiAgICAgIHtwYXRoOiBzb3VyY2VNYXBQYXRoLCBjb250ZW50czogbWVyZ2VkTWFwLnRvSlNPTigpfVxuICAgIF07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoYEVycm9yIHdoZW4gZmxhdHRlbmluZyB0aGUgc291cmNlLW1hcCBcIiR7c291cmNlTWFwUGF0aH1cIiBmb3IgXCIke1xuICAgICAgICBzb3VyY2VGaWxlUGF0aH1cIjogJHtlLnRvU3RyaW5nKCl9YCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtwYXRoOiBzb3VyY2VGaWxlUGF0aCwgY29udGVudHM6IGdlbmVyYXRlZENvbnRlbnR9LFxuICAgICAge3BhdGg6IHNvdXJjZU1hcFBhdGgsIGNvbnRlbnRzOiBmcm9tT2JqZWN0KGdlbmVyYXRlZE1hcCkudG9KU09OKCl9LFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
|