@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,15 +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
|
-
// This file exists as a target for g3 patches which change the Angular compiler's behavior.
|
|
9
|
-
// Separating the patched code in a separate file eliminates the possibility of conflicts with the
|
|
10
|
-
// patch diffs when making changes to the rest of the compiler codebase.
|
|
11
|
-
// In ngtsc we no longer want to compile undecorated classes with Angular features.
|
|
12
|
-
// Migrations for these patterns ran as part of `ng update` and we want to ensure
|
|
13
|
-
// that projects do not regress. See https://hackmd.io/@alx/ryfYYuvzH for more details.
|
|
14
|
-
export const compileUndecoratedClassesWithAngularFeatures = false;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9jb3JlL3NyYy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsNEZBQTRGO0FBQzVGLGtHQUFrRztBQUNsRyx3RUFBd0U7QUFFeEUsbUZBQW1GO0FBQ25GLGlGQUFpRjtBQUNqRix1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0sNENBQTRDLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8vIFRoaXMgZmlsZSBleGlzdHMgYXMgYSB0YXJnZXQgZm9yIGczIHBhdGNoZXMgd2hpY2ggY2hhbmdlIHRoZSBBbmd1bGFyIGNvbXBpbGVyJ3MgYmVoYXZpb3IuXG4vLyBTZXBhcmF0aW5nIHRoZSBwYXRjaGVkIGNvZGUgaW4gYSBzZXBhcmF0ZSBmaWxlIGVsaW1pbmF0ZXMgdGhlIHBvc3NpYmlsaXR5IG9mIGNvbmZsaWN0cyB3aXRoIHRoZVxuLy8gcGF0Y2ggZGlmZnMgd2hlbiBtYWtpbmcgY2hhbmdlcyB0byB0aGUgcmVzdCBvZiB0aGUgY29tcGlsZXIgY29kZWJhc2UuXG5cbi8vIEluIG5ndHNjIHdlIG5vIGxvbmdlciB3YW50IHRvIGNvbXBpbGUgdW5kZWNvcmF0ZWQgY2xhc3NlcyB3aXRoIEFuZ3VsYXIgZmVhdHVyZXMuXG4vLyBNaWdyYXRpb25zIGZvciB0aGVzZSBwYXR0ZXJucyByYW4gYXMgcGFydCBvZiBgbmcgdXBkYXRlYCBhbmQgd2Ugd2FudCB0byBlbnN1cmVcbi8vIHRoYXQgcHJvamVjdHMgZG8gbm90IHJlZ3Jlc3MuIFNlZSBodHRwczovL2hhY2ttZC5pby9AYWx4L3J5ZllZdXZ6SCBmb3IgbW9yZSBkZXRhaWxzLlxuZXhwb3J0IGNvbnN0IGNvbXBpbGVVbmRlY29yYXRlZENsYXNzZXNXaXRoQW5ndWxhckZlYXR1cmVzID0gZmFsc2U7XG4iXX0=
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as ts from 'typescript';
|
|
9
|
-
import { ErrorCode, ngErrorCode } from '../../diagnostics';
|
|
10
|
-
import { findFlatIndexEntryPoint, FlatIndexGenerator } from '../../entry_point';
|
|
11
|
-
import { resolve } from '../../file_system';
|
|
12
|
-
import { FactoryGenerator, isShim, ShimAdapter, ShimReferenceTagger, SummaryGenerator } from '../../shims';
|
|
13
|
-
import { TypeCheckShimGenerator } from '../../typecheck';
|
|
14
|
-
import { normalizeSeparators } from '../../util/src/path';
|
|
15
|
-
import { getRootDirs, isNonDeclarationTsPath } from '../../util/src/typescript';
|
|
16
|
-
// A persistent source of bugs in CompilerHost delegation has been the addition by TS of new,
|
|
17
|
-
// optional methods on ts.CompilerHost. Since these methods are optional, it's not a type error that
|
|
18
|
-
// the delegating host doesn't implement or delegate them. This causes subtle runtime failures. No
|
|
19
|
-
// more. This infrastructure ensures that failing to delegate a method is a compile-time error.
|
|
20
|
-
/**
|
|
21
|
-
* Delegates all methods of `ExtendedTsCompilerHost` to a delegate, with the exception of
|
|
22
|
-
* `getSourceFile` and `fileExists` which are implemented in `NgCompilerHost`.
|
|
23
|
-
*
|
|
24
|
-
* If a new method is added to `ts.CompilerHost` which is not delegated, a type error will be
|
|
25
|
-
* generated for this class.
|
|
26
|
-
*/
|
|
27
|
-
export class DelegatingCompilerHost {
|
|
28
|
-
constructor(delegate) {
|
|
29
|
-
this.delegate = delegate;
|
|
30
|
-
// Excluded are 'getSourceFile' and 'fileExists', which are actually implemented by NgCompilerHost
|
|
31
|
-
// below.
|
|
32
|
-
this.createHash = this.delegateMethod('createHash');
|
|
33
|
-
this.directoryExists = this.delegateMethod('directoryExists');
|
|
34
|
-
this.fileNameToModuleName = this.delegateMethod('fileNameToModuleName');
|
|
35
|
-
this.getCancellationToken = this.delegateMethod('getCancellationToken');
|
|
36
|
-
this.getCanonicalFileName = this.delegateMethod('getCanonicalFileName');
|
|
37
|
-
this.getCurrentDirectory = this.delegateMethod('getCurrentDirectory');
|
|
38
|
-
this.getDefaultLibFileName = this.delegateMethod('getDefaultLibFileName');
|
|
39
|
-
this.getDefaultLibLocation = this.delegateMethod('getDefaultLibLocation');
|
|
40
|
-
this.getDirectories = this.delegateMethod('getDirectories');
|
|
41
|
-
this.getEnvironmentVariable = this.delegateMethod('getEnvironmentVariable');
|
|
42
|
-
this.getModifiedResourceFiles = this.delegateMethod('getModifiedResourceFiles');
|
|
43
|
-
this.getNewLine = this.delegateMethod('getNewLine');
|
|
44
|
-
this.getParsedCommandLine = this.delegateMethod('getParsedCommandLine');
|
|
45
|
-
this.getSourceFileByPath = this.delegateMethod('getSourceFileByPath');
|
|
46
|
-
this.readDirectory = this.delegateMethod('readDirectory');
|
|
47
|
-
this.readFile = this.delegateMethod('readFile');
|
|
48
|
-
this.readResource = this.delegateMethod('readResource');
|
|
49
|
-
this.transformResource = this.delegateMethod('transformResource');
|
|
50
|
-
this.realpath = this.delegateMethod('realpath');
|
|
51
|
-
this.resolveModuleNames = this.delegateMethod('resolveModuleNames');
|
|
52
|
-
this.resolveTypeReferenceDirectives = this.delegateMethod('resolveTypeReferenceDirectives');
|
|
53
|
-
this.resourceNameToFileName = this.delegateMethod('resourceNameToFileName');
|
|
54
|
-
this.trace = this.delegateMethod('trace');
|
|
55
|
-
this.useCaseSensitiveFileNames = this.delegateMethod('useCaseSensitiveFileNames');
|
|
56
|
-
this.writeFile = this.delegateMethod('writeFile');
|
|
57
|
-
}
|
|
58
|
-
delegateMethod(name) {
|
|
59
|
-
return this.delegate[name] !== undefined ? this.delegate[name].bind(this.delegate) :
|
|
60
|
-
undefined;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* A wrapper around `ts.CompilerHost` (plus any extension methods from `ExtendedTsCompilerHost`).
|
|
65
|
-
*
|
|
66
|
-
* In order for a consumer to include Angular compilation in their TypeScript compiler, the
|
|
67
|
-
* `ts.Program` must be created with a host that adds Angular-specific files (e.g. factories,
|
|
68
|
-
* summaries, the template type-checking file, etc) to the compilation. `NgCompilerHost` is the
|
|
69
|
-
* host implementation which supports this.
|
|
70
|
-
*
|
|
71
|
-
* The interface implementations here ensure that `NgCompilerHost` fully delegates to
|
|
72
|
-
* `ExtendedTsCompilerHost` methods whenever present.
|
|
73
|
-
*/
|
|
74
|
-
export class NgCompilerHost extends DelegatingCompilerHost {
|
|
75
|
-
constructor(delegate, inputFiles, rootDirs, shimAdapter, shimTagger, entryPoint, factoryTracker, diagnostics) {
|
|
76
|
-
super(delegate);
|
|
77
|
-
this.shimAdapter = shimAdapter;
|
|
78
|
-
this.shimTagger = shimTagger;
|
|
79
|
-
this.factoryTracker = null;
|
|
80
|
-
this.entryPoint = null;
|
|
81
|
-
this.factoryTracker = factoryTracker;
|
|
82
|
-
this.entryPoint = entryPoint;
|
|
83
|
-
this.constructionDiagnostics = diagnostics;
|
|
84
|
-
this.inputFiles = [...inputFiles, ...shimAdapter.extraInputFiles];
|
|
85
|
-
this.rootDirs = rootDirs;
|
|
86
|
-
if (this.resolveModuleNames === undefined) {
|
|
87
|
-
// In order to reuse the module resolution cache during the creation of the type-check
|
|
88
|
-
// program, we'll need to provide `resolveModuleNames` if the delegate did not provide one.
|
|
89
|
-
this.resolveModuleNames = this.createCachedResolveModuleNamesFunction();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Retrieves a set of `ts.SourceFile`s which should not be emitted as JS files.
|
|
94
|
-
*
|
|
95
|
-
* Available after this host is used to create a `ts.Program` (which causes all the files in the
|
|
96
|
-
* program to be enumerated).
|
|
97
|
-
*/
|
|
98
|
-
get ignoreForEmit() {
|
|
99
|
-
return this.shimAdapter.ignoreForEmit;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Retrieve the array of shim extension prefixes for which shims were created for each original
|
|
103
|
-
* file.
|
|
104
|
-
*/
|
|
105
|
-
get shimExtensionPrefixes() {
|
|
106
|
-
return this.shimAdapter.extensionPrefixes;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Performs cleanup that needs to happen after a `ts.Program` has been created using this host.
|
|
110
|
-
*/
|
|
111
|
-
postProgramCreationCleanup() {
|
|
112
|
-
this.shimTagger.finalize();
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Create an `NgCompilerHost` from a delegate host, an array of input filenames, and the full set
|
|
116
|
-
* of TypeScript and Angular compiler options.
|
|
117
|
-
*/
|
|
118
|
-
static wrap(delegate, inputFiles, options, oldProgram) {
|
|
119
|
-
// TODO(alxhub): remove the fallback to allowEmptyCodegenFiles after verifying that the rest of
|
|
120
|
-
// our build tooling is no longer relying on it.
|
|
121
|
-
const allowEmptyCodegenFiles = options.allowEmptyCodegenFiles || false;
|
|
122
|
-
const shouldGenerateFactoryShims = options.generateNgFactoryShims !== undefined ?
|
|
123
|
-
options.generateNgFactoryShims :
|
|
124
|
-
allowEmptyCodegenFiles;
|
|
125
|
-
const shouldGenerateSummaryShims = options.generateNgSummaryShims !== undefined ?
|
|
126
|
-
options.generateNgSummaryShims :
|
|
127
|
-
allowEmptyCodegenFiles;
|
|
128
|
-
const topLevelShimGenerators = [];
|
|
129
|
-
const perFileShimGenerators = [];
|
|
130
|
-
if (shouldGenerateSummaryShims) {
|
|
131
|
-
// Summary generation.
|
|
132
|
-
perFileShimGenerators.push(new SummaryGenerator());
|
|
133
|
-
}
|
|
134
|
-
let factoryTracker = null;
|
|
135
|
-
if (shouldGenerateFactoryShims) {
|
|
136
|
-
const factoryGenerator = new FactoryGenerator();
|
|
137
|
-
perFileShimGenerators.push(factoryGenerator);
|
|
138
|
-
factoryTracker = factoryGenerator;
|
|
139
|
-
}
|
|
140
|
-
const rootDirs = getRootDirs(delegate, options);
|
|
141
|
-
perFileShimGenerators.push(new TypeCheckShimGenerator());
|
|
142
|
-
let diagnostics = [];
|
|
143
|
-
const normalizedTsInputFiles = [];
|
|
144
|
-
for (const inputFile of inputFiles) {
|
|
145
|
-
if (!isNonDeclarationTsPath(inputFile)) {
|
|
146
|
-
continue;
|
|
147
|
-
}
|
|
148
|
-
normalizedTsInputFiles.push(resolve(inputFile));
|
|
149
|
-
}
|
|
150
|
-
let entryPoint = null;
|
|
151
|
-
if (options.flatModuleOutFile != null && options.flatModuleOutFile !== '') {
|
|
152
|
-
entryPoint = findFlatIndexEntryPoint(normalizedTsInputFiles);
|
|
153
|
-
if (entryPoint === null) {
|
|
154
|
-
// This error message talks specifically about having a single .ts file in "files". However
|
|
155
|
-
// the actual logic is a bit more permissive. If a single file exists, that will be taken,
|
|
156
|
-
// otherwise the highest level (shortest path) "index.ts" file will be used as the flat
|
|
157
|
-
// module entry point instead. If neither of these conditions apply, the error below is
|
|
158
|
-
// given.
|
|
159
|
-
//
|
|
160
|
-
// The user is not informed about the "index.ts" option as this behavior is deprecated -
|
|
161
|
-
// an explicit entrypoint should always be specified.
|
|
162
|
-
diagnostics.push({
|
|
163
|
-
category: ts.DiagnosticCategory.Error,
|
|
164
|
-
code: ngErrorCode(ErrorCode.CONFIG_FLAT_MODULE_NO_INDEX),
|
|
165
|
-
file: undefined,
|
|
166
|
-
start: undefined,
|
|
167
|
-
length: undefined,
|
|
168
|
-
messageText: 'Angular compiler option "flatModuleOutFile" requires one and only one .ts file in the "files" field.',
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
const flatModuleId = options.flatModuleId || null;
|
|
173
|
-
const flatModuleOutFile = normalizeSeparators(options.flatModuleOutFile);
|
|
174
|
-
const flatIndexGenerator = new FlatIndexGenerator(entryPoint, flatModuleOutFile, flatModuleId);
|
|
175
|
-
topLevelShimGenerators.push(flatIndexGenerator);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
const shimAdapter = new ShimAdapter(delegate, normalizedTsInputFiles, topLevelShimGenerators, perFileShimGenerators, oldProgram);
|
|
179
|
-
const shimTagger = new ShimReferenceTagger(perFileShimGenerators.map(gen => gen.extensionPrefix));
|
|
180
|
-
return new NgCompilerHost(delegate, inputFiles, rootDirs, shimAdapter, shimTagger, entryPoint, factoryTracker, diagnostics);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Check whether the given `ts.SourceFile` is a shim file.
|
|
184
|
-
*
|
|
185
|
-
* If this returns false, the file is user-provided.
|
|
186
|
-
*/
|
|
187
|
-
isShim(sf) {
|
|
188
|
-
return isShim(sf);
|
|
189
|
-
}
|
|
190
|
-
getSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile) {
|
|
191
|
-
// Is this a previously known shim?
|
|
192
|
-
const shimSf = this.shimAdapter.maybeGenerate(resolve(fileName));
|
|
193
|
-
if (shimSf !== null) {
|
|
194
|
-
// Yes, so return it.
|
|
195
|
-
return shimSf;
|
|
196
|
-
}
|
|
197
|
-
// No, so it's a file which might need shims (or a file which doesn't exist).
|
|
198
|
-
const sf = this.delegate.getSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile);
|
|
199
|
-
if (sf === undefined) {
|
|
200
|
-
return undefined;
|
|
201
|
-
}
|
|
202
|
-
this.shimTagger.tag(sf);
|
|
203
|
-
return sf;
|
|
204
|
-
}
|
|
205
|
-
fileExists(fileName) {
|
|
206
|
-
// Consider the file as existing whenever
|
|
207
|
-
// 1) it really does exist in the delegate host, or
|
|
208
|
-
// 2) at least one of the shim generators recognizes it
|
|
209
|
-
// Note that we can pass the file name as branded absolute fs path because TypeScript
|
|
210
|
-
// internally only passes POSIX-like paths.
|
|
211
|
-
//
|
|
212
|
-
// Also note that the `maybeGenerate` check below checks for both `null` and `undefined`.
|
|
213
|
-
return this.delegate.fileExists(fileName) ||
|
|
214
|
-
this.shimAdapter.maybeGenerate(resolve(fileName)) != null;
|
|
215
|
-
}
|
|
216
|
-
get unifiedModulesHost() {
|
|
217
|
-
return this.fileNameToModuleName !== undefined ? this : null;
|
|
218
|
-
}
|
|
219
|
-
createCachedResolveModuleNamesFunction() {
|
|
220
|
-
const moduleResolutionCache = ts.createModuleResolutionCache(this.getCurrentDirectory(), this.getCanonicalFileName.bind(this));
|
|
221
|
-
return (moduleNames, containingFile, reusedNames, redirectedReference, options) => {
|
|
222
|
-
return moduleNames.map(moduleName => {
|
|
223
|
-
const module = ts.resolveModuleName(moduleName, containingFile, options, this, moduleResolutionCache, redirectedReference);
|
|
224
|
-
return module.resolvedModule;
|
|
225
|
-
});
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvY29yZS9zcmMvaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzlFLE9BQU8sRUFBaUIsT0FBTyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFekcsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxzQkFBc0IsRUFBc0IsTUFBTSwyQkFBMkIsQ0FBQztBQUduRyw2RkFBNkY7QUFDN0Ysb0dBQW9HO0FBQ3BHLGtHQUFrRztBQUNsRywrRkFBK0Y7QUFFL0Y7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxZQUFzQixRQUFnQztRQUFoQyxhQUFRLEdBQVIsUUFBUSxDQUF3QjtRQVF0RCxrR0FBa0c7UUFDbEcsU0FBUztRQUNULGVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLG9CQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pELHlCQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JB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RyxFQUFFLENBQUMsMkJBQTJCLENBQ3hELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV0RSxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDaEYsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQy9CLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2dCQUMzRixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7RXJyb3JDb2RlLCBuZ0Vycm9yQ29kZX0gZnJvbSAnLi4vLi4vZGlhZ25vc3RpY3MnO1xuaW1wb3J0IHtmaW5kRmxhdEluZGV4RW50cnlQb2ludCwgRmxhdEluZGV4R2VuZXJhdG9yfSBmcm9tICcuLi8uLi9lbnRyeV9wb2ludCc7XG5pbXBvcnQge0Fic29sdXRlRnNQYXRoLCByZXNvbHZlfSBmcm9tICcuLi8uLi9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0ZhY3RvcnlHZW5lcmF0b3IsIGlzU2hpbSwgU2hpbUFkYXB0ZXIsIFNoaW1SZWZlcmVuY2VUYWdnZXIsIFN1bW1hcnlHZW5lcmF0b3J9IGZyb20gJy4uLy4uL3NoaW1zJztcbmltcG9ydCB7RmFjdG9yeVRyYWNrZXIsIFBlckZpbGVTaGltR2VuZXJhdG9yLCBUb3BMZXZlbFNoaW1HZW5lcmF0b3J9IGZyb20gJy4uLy4uL3NoaW1zL2FwaSc7XG5pbXBvcnQge1R5cGVDaGVja1NoaW1HZW5lcmF0b3J9IGZyb20gJy4uLy4uL3R5cGVjaGVjayc7XG5pbXBvcnQge25vcm1hbGl6ZVNlcGFyYXRvcnN9IGZyb20gJy4uLy4uL3V0aWwvc3JjL3BhdGgnO1xuaW1wb3J0IHtnZXRSb290RGlycywgaXNOb25EZWNsYXJhdGlvblRzUGF0aCwgUmVxdWlyZWREZWxlZ2F0aW9uc30gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge0V4dGVuZGVkVHNDb21waWxlckhvc3QsIE5nQ29tcGlsZXJBZGFwdGVyLCBOZ0NvbXBpbGVyT3B0aW9ucywgVW5pZmllZE1vZHVsZXNIb3N0fSBmcm9tICcuLi9hcGknO1xuXG4vLyBBIHBlcnNpc3RlbnQgc291cmNlIG9mIGJ1Z3MgaW4gQ29tcGlsZXJIb3N0IGRlbGVnYXRpb24gaGFzIGJlZW4gdGhlIGFkZGl0aW9uIGJ5IFRTIG9mIG5ldyxcbi8vIG9wdGlvbmFsIG1ldGhvZHMgb24gdHMuQ29tcGlsZXJIb3N0LiBTaW5jZSB0aGVzZSBtZXRob2RzIGFyZSBvcHRpb25hbCwgaXQncyBub3QgYSB0eXBlIGVycm9yIHRoYXRcbi8vIHRoZSBkZWxlZ2F0aW5nIGhvc3QgZG9lc24ndCBpbXBsZW1lbnQgb3IgZGVsZWdhdGUgdGhlbS4gVGhpcyBjYXVzZXMgc3VidGxlIHJ1bnRpbWUgZmFpbHVyZXMuIE5vXG4vLyBtb3JlLiBUaGlzIGluZnJhc3RydWN0dXJlIGVuc3VyZXMgdGhhdCBmYWlsaW5nIHRvIGRlbGVnYXRlIGEgbWV0aG9kIGlzIGEgY29tcGlsZS10aW1lIGVycm9yLlxuXG4vKipcbiAqIERlbGVnYXRlcyBhbGwgbWV0aG9kcyBvZiBgRXh0ZW5kZWRUc0NvbXBpbGVySG9zdGAgdG8gYSBkZWxlZ2F0ZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mXG4gKiBgZ2V0U291cmNlRmlsZWAgYW5kIGBmaWxlRXhpc3RzYCB3aGljaCBhcmUgaW1wbGVtZW50ZWQgaW4gYE5nQ29tcGlsZXJIb3N0YC5cbiAqXG4gKiBJZiBhIG5ldyBtZXRob2QgaXMgYWRkZWQgdG8gYHRzLkNvbXBpbGVySG9zdGAgd2hpY2ggaXMgbm90IGRlbGVnYXRlZCwgYSB0eXBlIGVycm9yIHdpbGwgYmVcbiAqIGdlbmVyYXRlZCBmb3IgdGhpcyBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERlbGVnYXRpbmdDb21waWxlckhvc3QgaW1wbGVtZW50c1xuICAgIE9taXQ8UmVxdWlyZWREZWxlZ2F0aW9uczxFeHRlbmRlZFRzQ29tcGlsZXJIb3N0PiwgJ2dldFNvdXJjZUZpbGUnfCdmaWxlRXhpc3RzJz4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZGVsZWdhdGU6IEV4dGVuZGVkVHNDb21waWxlckhvc3QpIHt9XG5cbiAgcHJpdmF0ZSBkZWxlZ2F0ZU1ldGhvZDxNIGV4dGVuZHMga2V5b2YgRXh0ZW5kZWRUc0NvbXBpbGVySG9zdD4obmFtZTogTSk6XG4gICAgICBFeHRlbmRlZFRzQ29tcGlsZXJIb3N0W01dIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZVtuYW1lXSAhPT0gdW5kZWZpbmVkID8gKHRoaXMuZGVsZWdhdGVbbmFtZV0gYXMgYW55KS5iaW5kKHRoaXMuZGVsZWdhdGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gRXhjbHVkZWQgYXJlICdnZXRTb3VyY2VGaWxlJyBhbmQgJ2ZpbGVFeGlzdHMnLCB3aGljaCBhcmUgYWN0dWFsbHkgaW1wbGVtZW50ZWQgYnkgTmdDb21waWxlckhvc3RcbiAgLy8gYmVsb3cuXG4gIGNyZWF0ZUhhc2ggPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCdjcmVhdGVIYXNoJyk7XG4gIGRpcmVjdG9yeUV4aXN0cyA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ2RpcmVjdG9yeUV4aXN0cycpO1xuICBmaWxlTmFtZVRvTW9kdWxlTmFtZSA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ2ZpbGVOYW1lVG9Nb2R1bGVOYW1lJyk7XG4gIGdldENhbmNlbGxhdGlvblRva2VuID0gdGhpcy5kZWxlZ2F0ZU1ldGhvZCgnZ2V0Q2FuY2VsbGF0aW9uVG9rZW4nKTtcbiAgZ2V0Q2Fub25pY2FsRmlsZU5hbWUgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCdnZXRDYW5vbmljYWxGaWxlTmFtZScpO1xuICBnZXRDdXJyZW50RGlyZWN0b3J5ID0gdGhpcy5kZWxlZ2F0ZU1ldGhvZCgnZ2V0Q3VycmVudERpcmVjdG9yeScpO1xuICBnZXREZWZhdWx0TGliRmlsZU5hbWUgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCdnZXREZWZhdWx0TGliRmlsZU5hbWUnKTtcbiAgZ2V0RGVmYXVsdExpYkxvY2F0aW9uID0gdGhpcy5kZWxlZ2F0ZU1ldGhvZCgnZ2V0RGVmYXVsdExpYkxvY2F0aW9uJyk7XG4gIGdldERpcmVjdG9yaWVzID0gdGhpcy5kZWxlZ2F0ZU1ldGhvZCgnZ2V0RGlyZWN0b3JpZXMnKTtcbiAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZSA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ2dldEVudmlyb25tZW50VmFyaWFibGUnKTtcbiAgZ2V0TW9kaWZpZWRSZXNvdXJjZUZpbGVzID0gdGhpcy5kZWxlZ2F0ZU1ldGhvZCgnZ2V0TW9kaWZpZWRSZXNvdXJjZUZpbGVzJyk7XG4gIGdldE5ld0xpbmUgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCdnZXROZXdMaW5lJyk7XG4gIGdldFBhcnNlZENvbW1hbmRMaW5lID0gdGhpcy5kZWxlZ2F0ZU1ldGhvZCgnZ2V0UGFyc2VkQ29tbWFuZExpbmUnKTtcbiAgZ2V0U291cmNlRmlsZUJ5UGF0aCA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ2dldFNvdXJjZUZpbGVCeVBhdGgnKTtcbiAgcmVhZERpcmVjdG9yeSA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ3JlYWREaXJlY3RvcnknKTtcbiAgcmVhZEZpbGUgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCdyZWFkRmlsZScpO1xuICByZWFkUmVzb3VyY2UgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCdyZWFkUmVzb3VyY2UnKTtcbiAgdHJhbnNmb3JtUmVzb3VyY2UgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCd0cmFuc2Zvcm1SZXNvdXJjZScpO1xuICByZWFscGF0aCA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ3JlYWxwYXRoJyk7XG4gIHJlc29sdmVNb2R1bGVOYW1lcyA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ3Jlc29sdmVNb2R1bGVOYW1lcycpO1xuICByZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCdyZXNvbHZlVHlwZVJlZmVyZW5jZURpcmVjdGl2ZXMnKTtcbiAgcmVzb3VyY2VOYW1lVG9GaWxlTmFtZSA9IHRoaXMuZGVsZWdhdGVNZXRob2QoJ3Jlc291cmNlTmFtZVRvRmlsZU5hbWUnKTtcbiAgdHJhY2UgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCd0cmFjZScpO1xuICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzID0gdGhpcy5kZWxlZ2F0ZU1ldGhvZCgndXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcycpO1xuICB3cml0ZUZpbGUgPSB0aGlzLmRlbGVnYXRlTWV0aG9kKCd3cml0ZUZpbGUnKTtcbn1cblxuLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIGB0cy5Db21waWxlckhvc3RgIChwbHVzIGFueSBleHRlbnNpb24gbWV0aG9kcyBmcm9tIGBFeHRlbmRlZFRzQ29tcGlsZXJIb3N0YCkuXG4gKlxuICogSW4gb3JkZXIgZm9yIGEgY29uc3VtZXIgdG8gaW5jbHVkZSBBbmd1bGFyIGNvbXBpbGF0aW9uIGluIHRoZWlyIFR5cGVTY3JpcHQgY29tcGlsZXIsIHRoZVxuICogYHRzLlByb2dyYW1gIG11c3QgYmUgY3JlYXRlZCB3aXRoIGEgaG9zdCB0aGF0IGFkZHMgQW5ndWxhci1zcGVjaWZpYyBmaWxlcyAoZS5nLiBmYWN0b3JpZXMsXG4gKiBzdW1tYXJpZXMsIHRoZSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIGZpbGUsIGV0YykgdG8gdGhlIGNvbXBpbGF0aW9uLiBgTmdDb21waWxlckhvc3RgIGlzIHRoZVxuICogaG9zdCBpbXBsZW1lbnRhdGlvbiB3aGljaCBzdXBwb3J0cyB0aGlzLlxuICpcbiAqIFRoZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25zIGhlcmUgZW5zdXJlIHRoYXQgYE5nQ29tcGlsZXJIb3N0YCBmdWxseSBkZWxlZ2F0ZXMgdG9cbiAqIGBFeHRlbmRlZFRzQ29tcGlsZXJIb3N0YCBtZXRob2RzIHdoZW5ldmVyIHByZXNlbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZ0NvbXBpbGVySG9zdCBleHRlbmRzIERlbGVnYXRpbmdDb21waWxlckhvc3QgaW1wbGVtZW50c1xuICAgIFJlcXVpcmVkRGVsZWdhdGlvbnM8RXh0ZW5kZWRUc0NvbXBpbGVySG9zdD4sIEV4dGVuZGVkVHNDb21waWxlckhvc3QsIE5nQ29tcGlsZXJBZGFwdGVyIHtcbiAgcmVhZG9ubHkgZmFjdG9yeVRyYWNrZXI6IEZhY3RvcnlUcmFja2VyfG51bGwgPSBudWxsO1xuICByZWFkb25seSBlbnRyeVBvaW50OiBBYnNvbHV0ZUZzUGF0aHxudWxsID0gbnVsbDtcbiAgcmVhZG9ubHkgY29uc3RydWN0aW9uRGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXTtcblxuICByZWFkb25seSBpbnB1dEZpbGVzOiBSZWFkb25seUFycmF5PHN0cmluZz47XG4gIHJlYWRvbmx5IHJvb3REaXJzOiBSZWFkb25seUFycmF5PEFic29sdXRlRnNQYXRoPjtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgZGVsZWdhdGU6IEV4dGVuZGVkVHNDb21waWxlckhvc3QsIGlucHV0RmlsZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICAgIHJvb3REaXJzOiBSZWFkb25seUFycmF5PEFic29sdXRlRnNQYXRoPiwgcHJpdmF0ZSBzaGltQWRhcHRlcjogU2hpbUFkYXB0ZXIsXG4gICAgICBwcml2YXRlIHNoaW1UYWdnZXI6IFNoaW1SZWZlcmVuY2VUYWdnZXIsIGVudHJ5UG9pbnQ6IEFic29sdXRlRnNQYXRofG51bGwsXG4gICAgICBmYWN0b3J5VHJhY2tlcjogRmFjdG9yeVRyYWNrZXJ8bnVsbCwgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSkge1xuICAgIHN1cGVyKGRlbGVnYXRlKTtcblxuICAgIHRoaXMuZmFjdG9yeVRyYWNrZXIgPSBmYWN0b3J5VHJhY2tlcjtcbiAgICB0aGlzLmVudHJ5UG9pbnQgPSBlbnRyeVBvaW50O1xuICAgIHRoaXMuY29uc3RydWN0aW9uRGlhZ25vc3RpY3MgPSBkaWFnbm9zdGljcztcbiAgICB0aGlzLmlucHV0RmlsZXMgPSBbLi4uaW5wdXRGaWxlcywgLi4uc2hpbUFkYXB0ZXIuZXh0cmFJbnB1dEZpbGVzXTtcbiAgICB0aGlzLnJvb3REaXJzID0gcm9vdERpcnM7XG5cbiAgICBpZiAodGhpcy5yZXNvbHZlTW9kdWxlTmFtZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gSW4gb3JkZXIgdG8gcmV1c2UgdGhlIG1vZHVsZSByZXNvbHV0aW9uIGNhY2hlIGR1cmluZyB0aGUgY3JlYXRpb24gb2YgdGhlIHR5cGUtY2hlY2tcbiAgICAgIC8vIHByb2dyYW0sIHdlJ2xsIG5lZWQgdG8gcHJvdmlkZSBgcmVzb2x2ZU1vZHVsZU5hbWVzYCBpZiB0aGUgZGVsZWdhdGUgZGlkIG5vdCBwcm92aWRlIG9uZS5cbiAgICAgIHRoaXMucmVzb2x2ZU1vZHVsZU5hbWVzID0gdGhpcy5jcmVhdGVDYWNoZWRSZXNvbHZlTW9kdWxlTmFtZXNGdW5jdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBzZXQgb2YgYHRzLlNvdXJjZUZpbGVgcyB3aGljaCBzaG91bGQgbm90IGJlIGVtaXR0ZWQgYXMgSlMgZmlsZXMuXG4gICAqXG4gICAqIEF2YWlsYWJsZSBhZnRlciB0aGlzIGhvc3QgaXMgdXNlZCB0byBjcmVhdGUgYSBgdHMuUHJvZ3JhbWAgKHdoaWNoIGNhdXNlcyBhbGwgdGhlIGZpbGVzIGluIHRoZVxuICAgKiBwcm9ncmFtIHRvIGJlIGVudW1lcmF0ZWQpLlxuICAgKi9cbiAgZ2V0IGlnbm9yZUZvckVtaXQoKTogU2V0PHRzLlNvdXJjZUZpbGU+IHtcbiAgICByZXR1cm4gdGhpcy5zaGltQWRhcHRlci5pZ25vcmVGb3JFbWl0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBhcnJheSBvZiBzaGltIGV4dGVuc2lvbiBwcmVmaXhlcyBmb3Igd2hpY2ggc2hpbXMgd2VyZSBjcmVhdGVkIGZvciBlYWNoIG9yaWdpbmFsXG4gICAqIGZpbGUuXG4gICAqL1xuICBnZXQgc2hpbUV4dGVuc2lvblByZWZpeGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zaGltQWRhcHRlci5leHRlbnNpb25QcmVmaXhlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBjbGVhbnVwIHRoYXQgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIGEgYHRzLlByb2dyYW1gIGhhcyBiZWVuIGNyZWF0ZWQgdXNpbmcgdGhpcyBob3N0LlxuICAgKi9cbiAgcG9zdFByb2dyYW1DcmVhdGlvbkNsZWFudXAoKTogdm9pZCB7XG4gICAgdGhpcy5zaGltVGFnZ2VyLmZpbmFsaXplKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGBOZ0NvbXBpbGVySG9zdGAgZnJvbSBhIGRlbGVnYXRlIGhvc3QsIGFuIGFycmF5IG9mIGlucHV0IGZpbGVuYW1lcywgYW5kIHRoZSBmdWxsIHNldFxuICAgKiBvZiBUeXBlU2NyaXB0IGFuZCBBbmd1bGFyIGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgd3JhcChcbiAgICAgIGRlbGVnYXRlOiB0cy5Db21waWxlckhvc3QsIGlucHV0RmlsZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiwgb3B0aW9uczogTmdDb21waWxlck9wdGlvbnMsXG4gICAgICBvbGRQcm9ncmFtOiB0cy5Qcm9ncmFtfG51bGwpOiBOZ0NvbXBpbGVySG9zdCB7XG4gICAgLy8gVE9ETyhhbHhodWIpOiByZW1vdmUgdGhlIGZhbGxiYWNrIHRvIGFsbG93RW1wdHlDb2RlZ2VuRmlsZXMgYWZ0ZXIgdmVyaWZ5aW5nIHRoYXQgdGhlIHJlc3Qgb2ZcbiAgICAvLyBvdXIgYnVpbGQgdG9vbGluZyBpcyBubyBsb25nZXIgcmVseWluZyBvbiBpdC5cbiAgICBjb25zdCBhbGxvd0VtcHR5Q29kZWdlbkZpbGVzID0gb3B0aW9ucy5hbGxvd0VtcHR5Q29kZWdlbkZpbGVzIHx8IGZhbHNlO1xuICAgIGNvbnN0IHNob3VsZEdlbmVyYXRlRmFjdG9yeVNoaW1zID0gb3B0aW9ucy5nZW5lcmF0ZU5nRmFjdG9yeVNoaW1zICE9PSB1bmRlZmluZWQgP1xuICAgICAgICBvcHRpb25zLmdlbmVyYXRlTmdGYWN0b3J5U2hpbXMgOlxuICAgICAgICBhbGxvd0VtcHR5Q29kZWdlbkZpbGVzO1xuXG4gICAgY29uc3Qgc2hvdWxkR2VuZXJhdGVTdW1tYXJ5U2hpbXMgPSBvcHRpb25zLmdlbmVyYXRlTmdTdW1tYXJ5U2hpbXMgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgIG9wdGlvbnMuZ2VuZXJhdGVOZ1N1bW1hcnlTaGltcyA6XG4gICAgICAgIGFsbG93RW1wdHlDb2RlZ2VuRmlsZXM7XG5cblxuICAgIGNvbnN0IHRvcExldmVsU2hpbUdlbmVyYXRvcnM6IFRvcExldmVsU2hpbUdlbmVyYXRvcltdID0gW107XG4gICAgY29uc3QgcGVyRmlsZVNoaW1HZW5lcmF0b3JzOiBQZXJGaWxlU2hpbUdlbmVyYXRvcltdID0gW107XG5cbiAgICBpZiAoc2hvdWxkR2VuZXJhdGVTdW1tYXJ5U2hpbXMpIHtcbiAgICAgIC8vIFN1bW1hcnkgZ2VuZXJhdGlvbi5cbiAgICAgIHBlckZpbGVTaGltR2VuZXJhdG9ycy5wdXNoKG5ldyBTdW1tYXJ5R2VuZXJhdG9yKCkpO1xuICAgIH1cblxuICAgIGxldCBmYWN0b3J5VHJhY2tlcjogRmFjdG9yeVRyYWNrZXJ8bnVsbCA9IG51bGw7XG4gICAgaWYgKHNob3VsZEdlbmVyYXRlRmFjdG9yeVNoaW1zKSB7XG4gICAgICBjb25zdCBmYWN0b3J5R2VuZXJhdG9yID0gbmV3IEZhY3RvcnlHZW5lcmF0b3IoKTtcbiAgICAgIHBlckZpbGVTaGltR2VuZXJhdG9ycy5wdXNoKGZhY3RvcnlHZW5lcmF0b3IpO1xuXG4gICAgICBmYWN0b3J5VHJhY2tlciA9IGZhY3RvcnlHZW5lcmF0b3I7XG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdERpcnMgPSBnZXRSb290RGlycyhkZWxlZ2F0ZSwgb3B0aW9ucyBhcyB0cy5Db21waWxlck9wdGlvbnMpO1xuXG4gICAgcGVyRmlsZVNoaW1HZW5lcmF0b3JzLnB1c2gobmV3IFR5cGVDaGVja1NoaW1HZW5lcmF0b3IoKSk7XG5cbiAgICBsZXQgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZFRzSW5wdXRGaWxlczogQWJzb2x1dGVGc1BhdGhbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaW5wdXRGaWxlIG9mIGlucHV0RmlsZXMpIHtcbiAgICAgIGlmICghaXNOb25EZWNsYXJhdGlvblRzUGF0aChpbnB1dEZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbm9ybWFsaXplZFRzSW5wdXRGaWxlcy5wdXNoKHJlc29sdmUoaW5wdXRGaWxlKSk7XG4gICAgfVxuXG4gICAgbGV0IGVudHJ5UG9pbnQ6IEFic29sdXRlRnNQYXRofG51bGwgPSBudWxsO1xuICAgIGlmIChvcHRpb25zLmZsYXRNb2R1bGVPdXRGaWxlICE9IG51bGwgJiYgb3B0aW9ucy5mbGF0TW9kdWxlT3V0RmlsZSAhPT0gJycpIHtcbiAgICAgIGVudHJ5UG9pbnQgPSBmaW5kRmxhdEluZGV4RW50cnlQb2ludChub3JtYWxpemVkVHNJbnB1dEZpbGVzKTtcbiAgICAgIGlmIChlbnRyeVBvaW50ID09PSBudWxsKSB7XG4gICAgICAgIC8vIFRoaXMgZXJyb3IgbWVzc2FnZSB0YWxrcyBzcGVjaWZpY2FsbHkgYWJvdXQgaGF2aW5nIGEgc2luZ2xlIC50cyBmaWxlIGluIFwiZmlsZXNcIi4gSG93ZXZlclxuICAgICAgICAvLyB0aGUgYWN0dWFsIGxvZ2ljIGlzIGEgYml0IG1vcmUgcGVybWlzc2l2ZS4gSWYgYSBzaW5nbGUgZmlsZSBleGlzdHMsIHRoYXQgd2lsbCBiZSB0YWtlbixcbiAgICAgICAgLy8gb3RoZXJ3aXNlIHRoZSBoaWdoZXN0IGxldmVsIChzaG9ydGVzdCBwYXRoKSBcImluZGV4LnRzXCIgZmlsZSB3aWxsIGJlIHVzZWQgYXMgdGhlIGZsYXRcbiAgICAgICAgLy8gbW9kdWxlIGVudHJ5IHBvaW50IGluc3RlYWQuIElmIG5laXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucyBhcHBseSwgdGhlIGVycm9yIGJlbG93IGlzXG4gICAgICAgIC8vIGdpdmVuLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGUgdXNlciBpcyBub3QgaW5mb3JtZWQgYWJvdXQgdGhlIFwiaW5kZXgudHNcIiBvcHRpb24gYXMgdGhpcyBiZWhhdmlvciBpcyBkZXByZWNhdGVkIC1cbiAgICAgICAgLy8gYW4gZXhwbGljaXQgZW50cnlwb2ludCBzaG91bGQgYWx3YXlzIGJlIHNwZWNpZmllZC5cbiAgICAgICAgZGlhZ25vc3RpY3MucHVzaCh7XG4gICAgICAgICAgY2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcbiAgICAgICAgICBjb2RlOiBuZ0Vycm9yQ29kZShFcnJvckNvZGUuQ09ORklHX0ZMQVRfTU9EVUxFX05PX0lOREVYKSxcbiAgICAgICAgICBmaWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgc3RhcnQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZXNzYWdlVGV4dDpcbiAgICAgICAgICAgICAgJ0FuZ3VsYXIgY29tcGlsZXIgb3B0aW9uIFwiZmxhdE1vZHVsZU91dEZpbGVcIiByZXF1aXJlcyBvbmUgYW5kIG9ubHkgb25lIC50cyBmaWxlIGluIHRoZSBcImZpbGVzXCIgZmllbGQuJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmbGF0TW9kdWxlSWQgPSBvcHRpb25zLmZsYXRNb2R1bGVJZCB8fCBudWxsO1xuICAgICAgICBjb25zdCBmbGF0TW9kdWxlT3V0RmlsZSA9IG5vcm1hbGl6ZVNlcGFyYXRvcnMob3B0aW9ucy5mbGF0TW9kdWxlT3V0RmlsZSk7XG4gICAgICAgIGNvbnN0IGZsYXRJbmRleEdlbmVyYXRvciA9XG4gICAgICAgICAgICBuZXcgRmxhdEluZGV4R2VuZXJhdG9yKGVudHJ5UG9pbnQsIGZsYXRNb2R1bGVPdXRGaWxlLCBmbGF0TW9kdWxlSWQpO1xuICAgICAgICB0b3BMZXZlbFNoaW1HZW5lcmF0b3JzLnB1c2goZmxhdEluZGV4R2VuZXJhdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzaGltQWRhcHRlciA9IG5ldyBTaGltQWRhcHRlcihcbiAgICAgICAgZGVsZWdhdGUsIG5vcm1hbGl6ZWRUc0lucHV0RmlsZXMsIHRvcExldmVsU2hpbUdlbmVyYXRvcnMsIHBlckZpbGVTaGltR2VuZXJhdG9ycyxcbiAgICAgICAgb2xkUHJvZ3JhbSk7XG4gICAgY29uc3Qgc2hpbVRhZ2dlciA9XG4gICAgICAgIG5ldyBTaGltUmVmZXJlbmNlVGFnZ2VyKHBlckZpbGVTaGltR2VuZXJhdG9ycy5tYXAoZ2VuID0+IGdlbi5leHRlbnNpb25QcmVmaXgpKTtcbiAgICByZXR1cm4gbmV3IE5nQ29tcGlsZXJIb3N0KFxuICAgICAgICBkZWxlZ2F0ZSwgaW5wdXRGaWxlcywgcm9vdERpcnMsIHNoaW1BZGFwdGVyLCBzaGltVGFnZ2VyLCBlbnRyeVBvaW50LCBmYWN0b3J5VHJhY2tlcixcbiAgICAgICAgZGlhZ25vc3RpY3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGB0cy5Tb3VyY2VGaWxlYCBpcyBhIHNoaW0gZmlsZS5cbiAgICpcbiAgICogSWYgdGhpcyByZXR1cm5zIGZhbHNlLCB0aGUgZmlsZSBpcyB1c2VyLXByb3ZpZGVkLlxuICAgKi9cbiAgaXNTaGltKHNmOiB0cy5Tb3VyY2VGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzU2hpbShzZik7XG4gIH1cblxuICBnZXRTb3VyY2VGaWxlKFxuICAgICAgZmlsZU5hbWU6IHN0cmluZywgbGFuZ3VhZ2VWZXJzaW9uOiB0cy5TY3JpcHRUYXJnZXQsXG4gICAgICBvbkVycm9yPzogKChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpfHVuZGVmaW5lZCxcbiAgICAgIHNob3VsZENyZWF0ZU5ld1NvdXJjZUZpbGU/OiBib29sZWFufHVuZGVmaW5lZCk6IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkIHtcbiAgICAvLyBJcyB0aGlzIGEgcHJldmlvdXNseSBrbm93biBzaGltP1xuICAgIGNvbnN0IHNoaW1TZiA9IHRoaXMuc2hpbUFkYXB0ZXIubWF5YmVHZW5lcmF0ZShyZXNvbHZlKGZpbGVOYW1lKSk7XG4gICAgaWYgKHNoaW1TZiAhPT0gbnVsbCkge1xuICAgICAgLy8gWWVzLCBzbyByZXR1cm4gaXQuXG4gICAgICByZXR1cm4gc2hpbVNmO1xuICAgIH1cblxuICAgIC8vIE5vLCBzbyBpdCdzIGEgZmlsZSB3aGljaCBtaWdodCBuZWVkIHNoaW1zIChvciBhIGZpbGUgd2hpY2ggZG9lc24ndCBleGlzdCkuXG4gICAgY29uc3Qgc2YgPVxuICAgICAgICB0aGlzLmRlbGVnYXRlLmdldFNvdXJjZUZpbGUoZmlsZU5hbWUsIGxhbmd1YWdlVmVyc2lvbiwgb25FcnJvciwgc2hvdWxkQ3JlYXRlTmV3U291cmNlRmlsZSk7XG4gICAgaWYgKHNmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5zaGltVGFnZ2VyLnRhZyhzZik7XG4gICAgcmV0dXJuIHNmO1xuICB9XG5cbiAgZmlsZUV4aXN0cyhmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gQ29uc2lkZXIgdGhlIGZpbGUgYXMgZXhpc3Rpbmcgd2hlbmV2ZXJcbiAgICAvLyAgMSkgaXQgcmVhbGx5IGRvZXMgZXhpc3QgaW4gdGhlIGRlbGVnYXRlIGhvc3QsIG9yXG4gICAgLy8gIDIpIGF0IGxlYXN0IG9uZSBvZiB0aGUgc2hpbSBnZW5lcmF0b3JzIHJlY29nbml6ZXMgaXRcbiAgICAvLyBOb3RlIHRoYXQgd2UgY2FuIHBhc3MgdGhlIGZpbGUgbmFtZSBhcyBicmFuZGVkIGFic29sdXRlIGZzIHBhdGggYmVjYXVzZSBUeXBlU2NyaXB0XG4gICAgLy8gaW50ZXJuYWxseSBvbmx5IHBhc3NlcyBQT1NJWC1saWtlIHBhdGhzLlxuICAgIC8vXG4gICAgLy8gQWxzbyBub3RlIHRoYXQgdGhlIGBtYXliZUdlbmVyYXRlYCBjaGVjayBiZWxvdyBjaGVja3MgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYC5cbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5maWxlRXhpc3RzKGZpbGVOYW1lKSB8fFxuICAgICAgICB0aGlzLnNoaW1BZGFwdGVyLm1heWJlR2VuZXJhdGUocmVzb2x2ZShmaWxlTmFtZSkpICE9IG51bGw7XG4gIH1cblxuICBnZXQgdW5pZmllZE1vZHVsZXNIb3N0KCk6IFVuaWZpZWRNb2R1bGVzSG9zdHxudWxsIHtcbiAgICByZXR1cm4gdGhpcy5maWxlTmFtZVRvTW9kdWxlTmFtZSAhPT0gdW5kZWZpbmVkID8gdGhpcyBhcyBVbmlmaWVkTW9kdWxlc0hvc3QgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZWRSZXNvbHZlTW9kdWxlTmFtZXNGdW5jdGlvbigpOiB0cy5Db21waWxlckhvc3RbJ3Jlc29sdmVNb2R1bGVOYW1lcyddIHtcbiAgICBjb25zdCBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUgPSB0cy5jcmVhdGVNb2R1bGVSZXNvbHV0aW9uQ2FjaGUoXG4gICAgICAgIHRoaXMuZ2V0Q3VycmVudERpcmVjdG9yeSgpLCB0aGlzLmdldENhbm9uaWNhbEZpbGVOYW1lLmJpbmQodGhpcykpO1xuXG4gICAgcmV0dXJuIChtb2R1bGVOYW1lcywgY29udGFpbmluZ0ZpbGUsIHJldXNlZE5hbWVzLCByZWRpcmVjdGVkUmVmZXJlbmNlLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gbW9kdWxlTmFtZXMubWFwKG1vZHVsZU5hbWUgPT4ge1xuICAgICAgICBjb25zdCBtb2R1bGUgPSB0cy5yZXNvbHZlTW9kdWxlTmFtZShcbiAgICAgICAgICAgIG1vZHVsZU5hbWUsIGNvbnRhaW5pbmdGaWxlLCBvcHRpb25zLCB0aGlzLCBtb2R1bGVSZXNvbHV0aW9uQ2FjaGUsIHJlZGlyZWN0ZWRSZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gbW9kdWxlLnJlc29sdmVkTW9kdWxlO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
File without changes
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
export { Cycle, CycleAnalyzer } from './src/analyzer';
|
|
9
|
-
export { ImportGraph } from './src/imports';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2N5Y2xlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCB7Q3ljbGUsIEN5Y2xlQW5hbHl6ZXIsIEN5Y2xlSGFuZGxpbmdTdHJhdGVneX0gZnJvbSAnLi9zcmMvYW5hbHl6ZXInO1xuZXhwb3J0IHtJbXBvcnRHcmFwaH0gZnJvbSAnLi9zcmMvaW1wb3J0cyc7XG4iXX0=
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Analyzes a `ts.Program` for cycles.
|
|
10
|
-
*/
|
|
11
|
-
export class CycleAnalyzer {
|
|
12
|
-
constructor(importGraph) {
|
|
13
|
-
this.importGraph = importGraph;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Check for a cycle to be created in the `ts.Program` by adding an import between `from` and
|
|
17
|
-
* `to`.
|
|
18
|
-
*
|
|
19
|
-
* @returns a `Cycle` object if an import between `from` and `to` would create a cycle; `null`
|
|
20
|
-
* otherwise.
|
|
21
|
-
*/
|
|
22
|
-
wouldCreateCycle(from, to) {
|
|
23
|
-
// Import of 'from' -> 'to' is illegal if an edge 'to' -> 'from' already exists.
|
|
24
|
-
return this.importGraph.transitiveImportsOf(to).has(from) ?
|
|
25
|
-
new Cycle(this.importGraph, from, to) :
|
|
26
|
-
null;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Record a synthetic import from `from` to `to`.
|
|
30
|
-
*
|
|
31
|
-
* This is an import that doesn't exist in the `ts.Program` but will be considered as part of the
|
|
32
|
-
* import graph for cycle creation.
|
|
33
|
-
*/
|
|
34
|
-
recordSyntheticImport(from, to) {
|
|
35
|
-
this.importGraph.addSyntheticImport(from, to);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Represents an import cycle between `from` and `to` in the program.
|
|
40
|
-
*
|
|
41
|
-
* This class allows us to do the work to compute the cyclic path between `from` and `to` only if
|
|
42
|
-
* needed.
|
|
43
|
-
*/
|
|
44
|
-
export class Cycle {
|
|
45
|
-
constructor(importGraph, from, to) {
|
|
46
|
-
this.importGraph = importGraph;
|
|
47
|
-
this.from = from;
|
|
48
|
-
this.to = to;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Compute an array of source-files that illustrates the cyclic path between `from` and `to`.
|
|
52
|
-
*
|
|
53
|
-
* Note that a `Cycle` will not be created unless a path is available between `to` and `from`,
|
|
54
|
-
* so `findPath()` will never return `null`.
|
|
55
|
-
*/
|
|
56
|
-
getPath() {
|
|
57
|
-
return [this.from, ...this.importGraph.findPath(this.to, this.from)];
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2N5Y2xlcy9zcmMvYW5hbHl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBTUg7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFaEQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsSUFBbUIsRUFBRSxFQUFpQjtRQUNyRCxnRkFBZ0Y7UUFDaEYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUMsSUFBbUIsRUFBRSxFQUFpQjtRQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxLQUFLO0lBQ2hCLFlBQ1ksV0FBd0IsRUFBVyxJQUFtQixFQUFXLEVBQWlCO1FBQWxGLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVcsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUFXLE9BQUUsR0FBRixFQUFFLENBQWU7SUFBRyxDQUFDO0lBRWxHOzs7OztPQUtHO0lBQ0gsT0FBTztRQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7SW1wb3J0R3JhcGh9IGZyb20gJy4vaW1wb3J0cyc7XG5cbi8qKlxuICogQW5hbHl6ZXMgYSBgdHMuUHJvZ3JhbWAgZm9yIGN5Y2xlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEN5Y2xlQW5hbHl6ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGltcG9ydEdyYXBoOiBJbXBvcnRHcmFwaCkge31cblxuICAvKipcbiAgICogQ2hlY2sgZm9yIGEgY3ljbGUgdG8gYmUgY3JlYXRlZCBpbiB0aGUgYHRzLlByb2dyYW1gIGJ5IGFkZGluZyBhbiBpbXBvcnQgYmV0d2VlbiBgZnJvbWAgYW5kXG4gICAqIGB0b2AuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgYEN5Y2xlYCBvYmplY3QgaWYgYW4gaW1wb3J0IGJldHdlZW4gYGZyb21gIGFuZCBgdG9gIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlOyBgbnVsbGBcbiAgICogICAgIG90aGVyd2lzZS5cbiAgICovXG4gIHdvdWxkQ3JlYXRlQ3ljbGUoZnJvbTogdHMuU291cmNlRmlsZSwgdG86IHRzLlNvdXJjZUZpbGUpOiBDeWNsZXxudWxsIHtcbiAgICAvLyBJbXBvcnQgb2YgJ2Zyb20nIC0+ICd0bycgaXMgaWxsZWdhbCBpZiBhbiBlZGdlICd0bycgLT4gJ2Zyb20nIGFscmVhZHkgZXhpc3RzLlxuICAgIHJldHVybiB0aGlzLmltcG9ydEdyYXBoLnRyYW5zaXRpdmVJbXBvcnRzT2YodG8pLmhhcyhmcm9tKSA/XG4gICAgICAgIG5ldyBDeWNsZSh0aGlzLmltcG9ydEdyYXBoLCBmcm9tLCB0bykgOlxuICAgICAgICBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZCBhIHN5bnRoZXRpYyBpbXBvcnQgZnJvbSBgZnJvbWAgdG8gYHRvYC5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBpbXBvcnQgdGhhdCBkb2Vzbid0IGV4aXN0IGluIHRoZSBgdHMuUHJvZ3JhbWAgYnV0IHdpbGwgYmUgY29uc2lkZXJlZCBhcyBwYXJ0IG9mIHRoZVxuICAgKiBpbXBvcnQgZ3JhcGggZm9yIGN5Y2xlIGNyZWF0aW9uLlxuICAgKi9cbiAgcmVjb3JkU3ludGhldGljSW1wb3J0KGZyb206IHRzLlNvdXJjZUZpbGUsIHRvOiB0cy5Tb3VyY2VGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5pbXBvcnRHcmFwaC5hZGRTeW50aGV0aWNJbXBvcnQoZnJvbSwgdG8pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBpbXBvcnQgY3ljbGUgYmV0d2VlbiBgZnJvbWAgYW5kIGB0b2AgaW4gdGhlIHByb2dyYW0uXG4gKlxuICogVGhpcyBjbGFzcyBhbGxvd3MgdXMgdG8gZG8gdGhlIHdvcmsgdG8gY29tcHV0ZSB0aGUgY3ljbGljIHBhdGggYmV0d2VlbiBgZnJvbWAgYW5kIGB0b2Agb25seSBpZlxuICogbmVlZGVkLlxuICovXG5leHBvcnQgY2xhc3MgQ3ljbGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgaW1wb3J0R3JhcGg6IEltcG9ydEdyYXBoLCByZWFkb25seSBmcm9tOiB0cy5Tb3VyY2VGaWxlLCByZWFkb25seSB0bzogdHMuU291cmNlRmlsZSkge31cblxuICAvKipcbiAgICogQ29tcHV0ZSBhbiBhcnJheSBvZiBzb3VyY2UtZmlsZXMgdGhhdCBpbGx1c3RyYXRlcyB0aGUgY3ljbGljIHBhdGggYmV0d2VlbiBgZnJvbWAgYW5kIGB0b2AuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBhIGBDeWNsZWAgd2lsbCBub3QgYmUgY3JlYXRlZCB1bmxlc3MgYSBwYXRoIGlzIGF2YWlsYWJsZSBiZXR3ZWVuIGB0b2AgYW5kIGBmcm9tYCxcbiAgICogc28gYGZpbmRQYXRoKClgIHdpbGwgbmV2ZXIgcmV0dXJuIGBudWxsYC5cbiAgICovXG4gIGdldFBhdGgoKTogdHMuU291cmNlRmlsZVtdIHtcbiAgICByZXR1cm4gW3RoaXMuZnJvbSwgLi4udGhpcy5pbXBvcnRHcmFwaC5maW5kUGF0aCh0aGlzLnRvLCB0aGlzLmZyb20pIV07XG4gIH1cbn1cblxuXG4vKipcbiAqIFdoYXQgdG8gZG8gaWYgYSBjeWNsZSBpcyBkZXRlY3RlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQ3ljbGVIYW5kbGluZ1N0cmF0ZWd5IHtcbiAgLyoqIEFkZCBcInJlbW90ZSBzY29waW5nXCIgY29kZSB0byBhdm9pZCBjcmVhdGluZyBhIGN5Y2xlLiAqL1xuICBVc2VSZW1vdGVTY29waW5nLFxuICAvKiogRmFpbCB0aGUgY29tcGlsYXRpb24gd2l0aCBhbiBlcnJvci4gKi9cbiAgRXJyb3IsXG59XG4iXX0=
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as ts from 'typescript';
|
|
9
|
-
import { PerfPhase } from '../../perf';
|
|
10
|
-
/**
|
|
11
|
-
* A cached graph of imports in the `ts.Program`.
|
|
12
|
-
*
|
|
13
|
-
* The `ImportGraph` keeps track of dependencies (imports) of individual `ts.SourceFile`s. Only
|
|
14
|
-
* dependencies within the same program are tracked; imports into packages on NPM are not.
|
|
15
|
-
*/
|
|
16
|
-
export class ImportGraph {
|
|
17
|
-
constructor(checker, perf) {
|
|
18
|
-
this.checker = checker;
|
|
19
|
-
this.perf = perf;
|
|
20
|
-
this.map = new Map();
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* List the direct (not transitive) imports of a given `ts.SourceFile`.
|
|
24
|
-
*
|
|
25
|
-
* This operation is cached.
|
|
26
|
-
*/
|
|
27
|
-
importsOf(sf) {
|
|
28
|
-
if (!this.map.has(sf)) {
|
|
29
|
-
this.map.set(sf, this.scanImports(sf));
|
|
30
|
-
}
|
|
31
|
-
return this.map.get(sf);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Lists the transitive imports of a given `ts.SourceFile`.
|
|
35
|
-
*/
|
|
36
|
-
transitiveImportsOf(sf) {
|
|
37
|
-
const imports = new Set();
|
|
38
|
-
this.transitiveImportsOfHelper(sf, imports);
|
|
39
|
-
return imports;
|
|
40
|
-
}
|
|
41
|
-
transitiveImportsOfHelper(sf, results) {
|
|
42
|
-
if (results.has(sf)) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
results.add(sf);
|
|
46
|
-
this.importsOf(sf).forEach(imported => {
|
|
47
|
-
this.transitiveImportsOfHelper(imported, results);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Find an import path from the `start` SourceFile to the `end` SourceFile.
|
|
52
|
-
*
|
|
53
|
-
* This function implements a breadth first search that results in finding the
|
|
54
|
-
* shortest path between the `start` and `end` points.
|
|
55
|
-
*
|
|
56
|
-
* @param start the starting point of the path.
|
|
57
|
-
* @param end the ending point of the path.
|
|
58
|
-
* @returns an array of source files that connect the `start` and `end` source files, or `null` if
|
|
59
|
-
* no path could be found.
|
|
60
|
-
*/
|
|
61
|
-
findPath(start, end) {
|
|
62
|
-
if (start === end) {
|
|
63
|
-
// Escape early for the case where `start` and `end` are the same.
|
|
64
|
-
return [start];
|
|
65
|
-
}
|
|
66
|
-
const found = new Set([start]);
|
|
67
|
-
const queue = [new Found(start, null)];
|
|
68
|
-
while (queue.length > 0) {
|
|
69
|
-
const current = queue.shift();
|
|
70
|
-
const imports = this.importsOf(current.sourceFile);
|
|
71
|
-
for (const importedFile of imports) {
|
|
72
|
-
if (!found.has(importedFile)) {
|
|
73
|
-
const next = new Found(importedFile, current);
|
|
74
|
-
if (next.sourceFile === end) {
|
|
75
|
-
// We have hit the target `end` path so we can stop here.
|
|
76
|
-
return next.toPath();
|
|
77
|
-
}
|
|
78
|
-
found.add(importedFile);
|
|
79
|
-
queue.push(next);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Add a record of an import from `sf` to `imported`, that's not present in the original
|
|
87
|
-
* `ts.Program` but will be remembered by the `ImportGraph`.
|
|
88
|
-
*/
|
|
89
|
-
addSyntheticImport(sf, imported) {
|
|
90
|
-
if (isLocalFile(imported)) {
|
|
91
|
-
this.importsOf(sf).add(imported);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
scanImports(sf) {
|
|
95
|
-
return this.perf.inPhase(PerfPhase.CycleDetection, () => {
|
|
96
|
-
const imports = new Set();
|
|
97
|
-
// Look through the source file for import and export statements.
|
|
98
|
-
for (const stmt of sf.statements) {
|
|
99
|
-
if ((!ts.isImportDeclaration(stmt) && !ts.isExportDeclaration(stmt)) ||
|
|
100
|
-
stmt.moduleSpecifier === undefined) {
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
if (ts.isImportDeclaration(stmt) && stmt.importClause !== undefined &&
|
|
104
|
-
stmt.importClause.isTypeOnly) {
|
|
105
|
-
// Exclude type-only imports as they are always elided, so they don't contribute to
|
|
106
|
-
// cycles.
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
const symbol = this.checker.getSymbolAtLocation(stmt.moduleSpecifier);
|
|
110
|
-
if (symbol === undefined || symbol.valueDeclaration === undefined) {
|
|
111
|
-
// No symbol could be found to skip over this import/export.
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
const moduleFile = symbol.valueDeclaration;
|
|
115
|
-
if (ts.isSourceFile(moduleFile) && isLocalFile(moduleFile)) {
|
|
116
|
-
// Record this local import.
|
|
117
|
-
imports.add(moduleFile);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return imports;
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function isLocalFile(sf) {
|
|
125
|
-
return !sf.isDeclarationFile;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* A helper class to track which SourceFiles are being processed when searching for a path in
|
|
129
|
-
* `getPath()` above.
|
|
130
|
-
*/
|
|
131
|
-
class Found {
|
|
132
|
-
constructor(sourceFile, parent) {
|
|
133
|
-
this.sourceFile = sourceFile;
|
|
134
|
-
this.parent = parent;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Back track through this found SourceFile and its ancestors to generate an array of
|
|
138
|
-
* SourceFiles that form am import path between two SourceFiles.
|
|
139
|
-
*/
|
|
140
|
-
toPath() {
|
|
141
|
-
const array = [];
|
|
142
|
-
let current = this;
|
|
143
|
-
while (current !== null) {
|
|
144
|
-
array.push(current.sourceFile);
|
|
145
|
-
current = current.parent;
|
|
146
|
-
}
|
|
147
|
-
// Pushing and then reversing, O(n), rather than unshifting repeatedly, O(n^2), avoids
|
|
148
|
-
// manipulating the array on every iteration: https://stackoverflow.com/a/26370620
|
|
149
|
-
return array.reverse();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvY3ljbGVzL3NyYy9pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpDLE9BQU8sRUFBQyxTQUFTLEVBQWUsTUFBTSxZQUFZLENBQUM7QUFFbkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUFvQixPQUF1QixFQUFVLElBQWtCO1FBQW5ELFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBYztRQUYvRCxRQUFHLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7SUFFZSxDQUFDO0lBRTNFOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsRUFBaUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDeEM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQixDQUFDLEVBQWlCO1FBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1FBQ3pDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLHlCQUF5QixDQUFDLEVBQWlCLEVBQUUsT0FBMkI7UUFDOUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFD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Q0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7b0JBQ2pFLDREQUE0RDtvQkFDNUQsU0FBUztpQkFDVjtnQkFDRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNDLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQzFELDRCQUE0QjtvQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDekI7YUFDRjtZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsU0FBUyxXQUFXLENBQUMsRUFBaUI7SUFDcEMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztBQUMvQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxLQUFLO0lBQ1QsWUFBcUIsVUFBeUIsRUFBVyxNQUFrQjtRQUF0RCxlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBWTtJQUFHLENBQUM7SUFFL0U7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLE1BQU0sS0FBSyxHQUFvQixFQUFFLENBQUM7UUFDbEMsSUFBSSxPQUFPLEdBQWUsSUFBSSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxLQUFLLElBQUksRUFBRTtZQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUMxQjtRQUNELHNGQUFzRjtRQUN0RixrRkFBa0Y7UUFDbEYsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1BlcmZQaGFzZSwgUGVyZlJlY29yZGVyfSBmcm9tICcuLi8uLi9wZXJmJztcblxuLyoqXG4gKiBBIGNhY2hlZCBncmFwaCBvZiBpbXBvcnRzIGluIHRoZSBgdHMuUHJvZ3JhbWAuXG4gKlxuICogVGhlIGBJbXBvcnRHcmFwaGAga2VlcHMgdHJhY2sgb2YgZGVwZW5kZW5jaWVzIChpbXBvcnRzKSBvZiBpbmRpdmlkdWFsIGB0cy5Tb3VyY2VGaWxlYHMuIE9ubHlcbiAqIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIHNhbWUgcHJvZ3JhbSBhcmUgdHJhY2tlZDsgaW1wb3J0cyBpbnRvIHBhY2thZ2VzIG9uIE5QTSBhcmUgbm90LlxuICovXG5leHBvcnQgY2xhc3MgSW1wb3J0R3JhcGgge1xuICBwcml2YXRlIG1hcCA9IG5ldyBNYXA8dHMuU291cmNlRmlsZSwgU2V0PHRzLlNvdXJjZUZpbGU+PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIHByaXZhdGUgcGVyZjogUGVyZlJlY29yZGVyKSB7fVxuXG4gIC8qKlxuICAgKiBMaXN0IHRoZSBkaXJlY3QgKG5vdCB0cmFuc2l0aXZlKSBpbXBvcnRzIG9mIGEgZ2l2ZW4gYHRzLlNvdXJjZUZpbGVgLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBjYWNoZWQuXG4gICAqL1xuICBpbXBvcnRzT2Yoc2Y6IHRzLlNvdXJjZUZpbGUpOiBTZXQ8dHMuU291cmNlRmlsZT4ge1xuICAgIGlmICghdGhpcy5tYXAuaGFzKHNmKSkge1xuICAgICAgdGhpcy5tYXAuc2V0KHNmLCB0aGlzLnNjYW5JbXBvcnRzKHNmKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hcC5nZXQoc2YpITtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyB0aGUgdHJhbnNpdGl2ZSBpbXBvcnRzIG9mIGEgZ2l2ZW4gYHRzLlNvdXJjZUZpbGVgLlxuICAgKi9cbiAgdHJhbnNpdGl2ZUltcG9ydHNPZihzZjogdHMuU291cmNlRmlsZSk6IFNldDx0cy5Tb3VyY2VGaWxlPiB7XG4gICAgY29uc3QgaW1wb3J0cyA9IG5ldyBTZXQ8dHMuU291cmNlRmlsZT4oKTtcbiAgICB0aGlzLnRyYW5zaXRpdmVJbXBvcnRzT2ZIZWxwZXIoc2YsIGltcG9ydHMpO1xuICAgIHJldHVybiBpbXBvcnRzO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2l0aXZlSW1wb3J0c09mSGVscGVyKHNmOiB0cy5Tb3VyY2VGaWxlLCByZXN1bHRzOiBTZXQ8dHMuU291cmNlRmlsZT4pOiB2b2lkIHtcbiAgICBpZiAocmVzdWx0cy5oYXMoc2YpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJlc3VsdHMuYWRkKHNmKTtcbiAgICB0aGlzLmltcG9ydHNPZihzZikuZm9yRWFjaChpbXBvcnRlZCA9PiB7XG4gICAgICB0aGlzLnRyYW5zaXRpdmVJbXBvcnRzT2ZIZWxwZXIoaW1wb3J0ZWQsIHJlc3VsdHMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYW4gaW1wb3J0IHBhdGggZnJvbSB0aGUgYHN0YXJ0YCBTb3VyY2VGaWxlIHRvIHRoZSBgZW5kYCBTb3VyY2VGaWxlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBicmVhZHRoIGZpcnN0IHNlYXJjaCB0aGF0IHJlc3VsdHMgaW4gZmluZGluZyB0aGVcbiAgICogc2hvcnRlc3QgcGF0aCBiZXR3ZWVuIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb2ludHMuXG4gICAqXG4gICAqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIHBhdGguXG4gICAqIEBwYXJhbSBlbmQgdGhlIGVuZGluZyBwb2ludCBvZiB0aGUgcGF0aC5cbiAgICogQHJldHVybnMgYW4gYXJyYXkgb2Ygc291cmNlIGZpbGVzIHRoYXQgY29ubmVjdCB0aGUgYHN0YXJ0YCBhbmQgYGVuZGAgc291cmNlIGZpbGVzLCBvciBgbnVsbGAgaWZcbiAgICogICAgIG5vIHBhdGggY291bGQgYmUgZm91bmQuXG4gICAqL1xuICBmaW5kUGF0aChzdGFydDogdHMuU291cmNlRmlsZSwgZW5kOiB0cy5Tb3VyY2VGaWxlKTogdHMuU291cmNlRmlsZVtdfG51bGwge1xuICAgIGlmIChzdGFydCA9PT0gZW5kKSB7XG4gICAgICAvLyBFc2NhcGUgZWFybHkgZm9yIHRoZSBjYXNlIHdoZXJlIGBzdGFydGAgYW5kIGBlbmRgIGFyZSB0aGUgc2FtZS5cbiAgICAgIHJldHVybiBbc3RhcnRdO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kID0gbmV3IFNldDx0cy5Tb3VyY2VGaWxlPihbc3RhcnRdKTtcbiAgICBjb25zdCBxdWV1ZTogRm91bmRbXSA9IFtuZXcgRm91bmQoc3RhcnQsIG51bGwpXTtcblxuICAgIHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gcXVldWUuc2hpZnQoKSE7XG4gICAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5pbXBvcnRzT2YoY3VycmVudC5zb3VyY2VGaWxlKTtcbiAgICAgIGZvciAoY29uc3QgaW1wb3J0ZWRGaWxlIG9mIGltcG9ydHMpIHtcbiAgICAgICAgaWYgKCFmb3VuZC5oYXMoaW1wb3J0ZWRGaWxlKSkge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBuZXcgRm91bmQoaW1wb3J0ZWRGaWxlLCBjdXJyZW50KTtcbiAgICAgICAgICBpZiAobmV4dC5zb3VyY2VGaWxlID09PSBlbmQpIHtcbiAgICAgICAgICAgIC8vIFdlIGhhdmUgaGl0IHRoZSB0YXJnZXQgYGVuZGAgcGF0aCBzbyB3ZSBjYW4gc3RvcCBoZXJlLlxuICAgICAgICAgICAgcmV0dXJuIG5leHQudG9QYXRoKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvdW5kLmFkZChpbXBvcnRlZEZpbGUpO1xuICAgICAgICAgIHF1ZXVlLnB1c2gobmV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcmVjb3JkIG9mIGFuIGltcG9ydCBmcm9tIGBzZmAgdG8gYGltcG9ydGVkYCwgdGhhdCdzIG5vdCBwcmVzZW50IGluIHRoZSBvcmlnaW5hbFxuICAgKiBgdHMuUHJvZ3JhbWAgYnV0IHdpbGwgYmUgcmVtZW1iZXJlZCBieSB0aGUgYEltcG9ydEdyYXBoYC5cbiAgICovXG4gIGFkZFN5bnRoZXRpY0ltcG9ydChzZjogdHMuU291cmNlRmlsZSwgaW1wb3J0ZWQ6IHRzLlNvdXJjZUZpbGUpOiB2b2lkIHtcbiAgICBpZiAoaXNMb2NhbEZpbGUoaW1wb3J0ZWQpKSB7XG4gICAgICB0aGlzLmltcG9ydHNPZihzZikuYWRkKGltcG9ydGVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNjYW5JbXBvcnRzKHNmOiB0cy5Tb3VyY2VGaWxlKTogU2V0PHRzLlNvdXJjZUZpbGU+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJmLmluUGhhc2UoUGVyZlBoYXNlLkN5Y2xlRGV0ZWN0aW9uLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbXBvcnRzID0gbmV3IFNldDx0cy5Tb3VyY2VGaWxlPigpO1xuICAgICAgLy8gTG9vayB0aHJvdWdoIHRoZSBzb3VyY2UgZmlsZSBmb3IgaW1wb3J0IGFuZCBleHBvcnQgc3RhdGVtZW50cy5cbiAgICAgIGZvciAoY29uc3Qgc3RtdCBvZiBzZi5zdGF0ZW1lbnRzKSB7XG4gICAgICAgIGlmICgoIXRzLmlzSW1wb3J0RGVjbGFyYXRpb24oc3RtdCkgJiYgIXRzLmlzRXhwb3J0RGVjbGFyYXRpb24oc3RtdCkpIHx8XG4gICAgICAgICAgICBzdG10Lm1vZHVsZVNwZWNpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHMuaXNJbXBvcnREZWNsYXJhdGlvbihzdG10KSAmJiBzdG10LmltcG9ydENsYXVzZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBzdG10LmltcG9ydENsYXVzZS5pc1R5cGVPbmx5KSB7XG4gICAgICAgICAgLy8gRXhjbHVkZSB0eXBlLW9ubHkgaW1wb3J0cyBhcyB0aGV5IGFyZSBhbHdheXMgZWxpZGVkLCBzbyB0aGV5IGRvbid0IGNvbnRyaWJ1dGUgdG9cbiAgICAgICAgICAvLyBjeWNsZXMuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzeW1ib2wgPSB0aGlzLmNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihzdG10Lm1vZHVsZVNwZWNpZmllcik7XG4gICAgICAgIGlmIChzeW1ib2wgPT09IHVuZGVmaW5lZCB8fCBzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTm8gc3ltYm9sIGNvdWxkIGJlIGZvdW5kIHRvIHNraXAgb3ZlciB0aGlzIGltcG9ydC9leHBvcnQuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kdWxlRmlsZSA9IHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uO1xuICAgICAgICBpZiAodHMuaXNTb3VyY2VGaWxlKG1vZHVsZUZpbGUpICYmIGlzTG9jYWxGaWxlKG1vZHVsZUZpbGUpKSB7XG4gICAgICAgICAgLy8gUmVjb3JkIHRoaXMgbG9jYWwgaW1wb3J0LlxuICAgICAgICAgIGltcG9ydHMuYWRkKG1vZHVsZUZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaW1wb3J0cztcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0xvY2FsRmlsZShzZjogdHMuU291cmNlRmlsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gIXNmLmlzRGVjbGFyYXRpb25GaWxlO1xufVxuXG4vKipcbiAqIEEgaGVscGVyIGNsYXNzIHRvIHRyYWNrIHdoaWNoIFNvdXJjZUZpbGVzIGFyZSBiZWluZyBwcm9jZXNzZWQgd2hlbiBzZWFyY2hpbmcgZm9yIGEgcGF0aCBpblxuICogYGdldFBhdGgoKWAgYWJvdmUuXG4gKi9cbmNsYXNzIEZvdW5kIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgcmVhZG9ubHkgcGFyZW50OiBGb3VuZHxudWxsKSB7fVxuXG4gIC8qKlxuICAgKiBCYWNrIHRyYWNrIHRocm91Z2ggdGhpcyBmb3VuZCBTb3VyY2VGaWxlIGFuZCBpdHMgYW5jZXN0b3JzIHRvIGdlbmVyYXRlIGFuIGFycmF5IG9mXG4gICAqIFNvdXJjZUZpbGVzIHRoYXQgZm9ybSBhbSBpbXBvcnQgcGF0aCBiZXR3ZWVuIHR3byBTb3VyY2VGaWxlcy5cbiAgICovXG4gIHRvUGF0aCgpOiB0cy5Tb3VyY2VGaWxlW10ge1xuICAgIGNvbnN0IGFycmF5OiB0cy5Tb3VyY2VGaWxlW10gPSBbXTtcbiAgICBsZXQgY3VycmVudDogRm91bmR8bnVsbCA9IHRoaXM7XG4gICAgd2hpbGUgKGN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGFycmF5LnB1c2goY3VycmVudC5zb3VyY2VGaWxlKTtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG4gICAgLy8gUHVzaGluZyBhbmQgdGhlbiByZXZlcnNpbmcsIE8obiksIHJhdGhlciB0aGFuIHVuc2hpZnRpbmcgcmVwZWF0ZWRseSwgTyhuXjIpLCBhdm9pZHNcbiAgICAvLyBtYW5pcHVsYXRpbmcgdGhlIGFycmF5IG9uIGV2ZXJ5IGl0ZXJhdGlvbjogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2MzcwNjIwXG4gICAgcmV0dXJuIGFycmF5LnJldmVyc2UoKTtcbiAgfVxufVxuIl19
|
|
File without changes
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
export { FatalDiagnosticError, isFatalDiagnosticError, makeDiagnostic, makeRelatedInformation } from './src/error';
|
|
9
|
-
export { COMPILER_ERRORS_WITH_GUIDES, ERROR_DETAILS_PAGE_BASE_URL, ErrorCode, ngErrorCode } from './src/error_code';
|
|
10
|
-
export { replaceTsWithNgInErrors } from './src/util';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2RpYWdub3N0aWNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDakgsT0FBTyxFQUFDLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IHtGYXRhbERpYWdub3N0aWNFcnJvciwgaXNGYXRhbERpYWdub3N0aWNFcnJvciwgbWFrZURpYWdub3N0aWMsIG1ha2VSZWxhdGVkSW5mb3JtYXRpb259IGZyb20gJy4vc3JjL2Vycm9yJztcbmV4cG9ydCB7Q09NUElMRVJfRVJST1JTX1dJVEhfR1VJREVTLCBFUlJPUl9ERVRBSUxTX1BBR0VfQkFTRV9VUkwsIEVycm9yQ29kZSwgbmdFcnJvckNvZGV9IGZyb20gJy4vc3JjL2Vycm9yX2NvZGUnO1xuZXhwb3J0IHtyZXBsYWNlVHNXaXRoTmdJbkVycm9yc30gZnJvbSAnLi9zcmMvdXRpbCc7XG4iXX0=
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as ts from 'typescript';
|
|
9
|
-
import { ngErrorCode } from './error_code';
|
|
10
|
-
export class FatalDiagnosticError {
|
|
11
|
-
constructor(code, node, message, relatedInformation) {
|
|
12
|
-
this.code = code;
|
|
13
|
-
this.node = node;
|
|
14
|
-
this.message = message;
|
|
15
|
-
this.relatedInformation = relatedInformation;
|
|
16
|
-
/**
|
|
17
|
-
* @internal
|
|
18
|
-
*/
|
|
19
|
-
this._isFatalDiagnosticError = true;
|
|
20
|
-
}
|
|
21
|
-
toDiagnostic() {
|
|
22
|
-
return makeDiagnostic(this.code, this.node, this.message, this.relatedInformation);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export function makeDiagnostic(code, node, messageText, relatedInformation) {
|
|
26
|
-
node = ts.getOriginalNode(node);
|
|
27
|
-
return {
|
|
28
|
-
category: ts.DiagnosticCategory.Error,
|
|
29
|
-
code: ngErrorCode(code),
|
|
30
|
-
file: ts.getOriginalNode(node).getSourceFile(),
|
|
31
|
-
start: node.getStart(undefined, false),
|
|
32
|
-
length: node.getWidth(),
|
|
33
|
-
messageText,
|
|
34
|
-
relatedInformation,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export function makeRelatedInformation(node, messageText) {
|
|
38
|
-
node = ts.getOriginalNode(node);
|
|
39
|
-
return {
|
|
40
|
-
category: ts.DiagnosticCategory.Message,
|
|
41
|
-
code: 0,
|
|
42
|
-
file: node.getSourceFile(),
|
|
43
|
-
start: node.getStart(),
|
|
44
|
-
length: node.getWidth(),
|
|
45
|
-
messageText,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
export function isFatalDiagnosticError(err) {
|
|
49
|
-
return err._isFatalDiagnosticError === true;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL2RpYWdub3N0aWNzL3NyYy9lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqQyxPQUFPLEVBQVksV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXBELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDYSxJQUFlLEVBQVcsSUFBYSxFQUN2QyxPQUF5QyxFQUN6QyxrQkFBc0Q7UUFGdEQsU0FBSSxHQUFKLElBQUksQ0FBVztRQUFXLFNBQUksR0FBSixJQUFJLENBQVM7UUFDdkMsWUFBTyxHQUFQLE9BQU8sQ0FBa0M7UUFDekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQztRQUVuRTs7V0FFRztRQUNILDRCQUF1QixHQUFHLElBQUksQ0FBQztJQUx1QyxDQUFDO0lBT3ZFLFlBQVk7UUFDVixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUMxQixJQUFlLEVBQUUsSUFBYSxFQUFFLFdBQTZDLEVBQzdFLGtCQUFzRDtJQUN4RCxJQUFJLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxPQUFPO1FBQ0wsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLO1FBQ3JDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRTtRQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ3ZCLFdBQVc7UUFDWCxrQkFBa0I7S0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLElBQWEsRUFBRSxXQUFtQjtJQUNwQyxJQUFJLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxPQUFPO1FBQ0wsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPO1FBQ3ZDLElBQUksRUFBRSxDQUFDO1FBQ1AsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDdkIsV0FBVztLQUNaLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEdBQVE7SUFDN0MsT0FBTyxHQUFHLENBQUMsdUJBQXVCLEtBQUssSUFBSSxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7RXJyb3JDb2RlLCBuZ0Vycm9yQ29kZX0gZnJvbSAnLi9lcnJvcl9jb2RlJztcblxuZXhwb3J0IGNsYXNzIEZhdGFsRGlhZ25vc3RpY0Vycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSBjb2RlOiBFcnJvckNvZGUsIHJlYWRvbmx5IG5vZGU6IHRzLk5vZGUsXG4gICAgICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmd8dHMuRGlhZ25vc3RpY01lc3NhZ2VDaGFpbixcbiAgICAgIHJlYWRvbmx5IHJlbGF0ZWRJbmZvcm1hdGlvbj86IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSkge31cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNGYXRhbERpYWdub3N0aWNFcnJvciA9IHRydWU7XG5cbiAgdG9EaWFnbm9zdGljKCk6IHRzLkRpYWdub3N0aWNXaXRoTG9jYXRpb24ge1xuICAgIHJldHVybiBtYWtlRGlhZ25vc3RpYyh0aGlzLmNvZGUsIHRoaXMubm9kZSwgdGhpcy5tZXNzYWdlLCB0aGlzLnJlbGF0ZWRJbmZvcm1hdGlvbik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VEaWFnbm9zdGljKFxuICAgIGNvZGU6IEVycm9yQ29kZSwgbm9kZTogdHMuTm9kZSwgbWVzc2FnZVRleHQ6IHN0cmluZ3x0cy5EaWFnbm9zdGljTWVzc2FnZUNoYWluLFxuICAgIHJlbGF0ZWRJbmZvcm1hdGlvbj86IHRzLkRpYWdub3N0aWNSZWxhdGVkSW5mb3JtYXRpb25bXSk6IHRzLkRpYWdub3N0aWNXaXRoTG9jYXRpb24ge1xuICBub2RlID0gdHMuZ2V0T3JpZ2luYWxOb2RlKG5vZGUpO1xuICByZXR1cm4ge1xuICAgIGNhdGVnb3J5OiB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IsXG4gICAgY29kZTogbmdFcnJvckNvZGUoY29kZSksXG4gICAgZmlsZTogdHMuZ2V0T3JpZ2luYWxOb2RlKG5vZGUpLmdldFNvdXJjZUZpbGUoKSxcbiAgICBzdGFydDogbm9kZS5nZXRTdGFydCh1bmRlZmluZWQsIGZhbHNlKSxcbiAgICBsZW5ndGg6IG5vZGUuZ2V0V2lkdGgoKSxcbiAgICBtZXNzYWdlVGV4dCxcbiAgICByZWxhdGVkSW5mb3JtYXRpb24sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlUmVsYXRlZEluZm9ybWF0aW9uKFxuICAgIG5vZGU6IHRzLk5vZGUsIG1lc3NhZ2VUZXh0OiBzdHJpbmcpOiB0cy5EaWFnbm9zdGljUmVsYXRlZEluZm9ybWF0aW9uIHtcbiAgbm9kZSA9IHRzLmdldE9yaWdpbmFsTm9kZShub2RlKTtcbiAgcmV0dXJuIHtcbiAgICBjYXRlZ29yeTogdHMuRGlhZ25vc3RpY0NhdGVnb3J5Lk1lc3NhZ2UsXG4gICAgY29kZTogMCxcbiAgICBmaWxlOiBub2RlLmdldFNvdXJjZUZpbGUoKSxcbiAgICBzdGFydDogbm9kZS5nZXRTdGFydCgpLFxuICAgIGxlbmd0aDogbm9kZS5nZXRXaWR0aCgpLFxuICAgIG1lc3NhZ2VUZXh0LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGYXRhbERpYWdub3N0aWNFcnJvcihlcnI6IGFueSk6IGVyciBpcyBGYXRhbERpYWdub3N0aWNFcnJvciB7XG4gIHJldHVybiBlcnIuX2lzRmF0YWxEaWFnbm9zdGljRXJyb3IgPT09IHRydWU7XG59XG4iXX0=
|