@angular/compiler-cli 13.0.0-next.9 → 13.0.0-rc.3
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/bundles/index.js +20413 -0
- package/bundles/index.js.map +6 -0
- package/bundles/linker/babel/index.js +2384 -0
- package/bundles/linker/babel/index.js.map +6 -0
- package/bundles/linker/index.js +1849 -0
- package/bundles/linker/index.js.map +6 -0
- package/bundles/ngcc/index.js +16038 -0
- package/bundles/ngcc/index.js.map +6 -0
- package/bundles/ngcc/main-ngcc.js +16126 -0
- package/bundles/ngcc/main-ngcc.js.map +6 -0
- package/bundles/ngcc/src/execution/cluster/ngcc_cluster_worker.js +13850 -0
- package/bundles/ngcc/src/execution/cluster/ngcc_cluster_worker.js.map +6 -0
- package/bundles/ngcc/src/locking/lock_file_with_child_process/ngcc_lock_unlocker.js +334 -0
- package/bundles/ngcc/src/locking/lock_file_with_child_process/ngcc_lock_unlocker.js.map +6 -0
- package/bundles/private/bazel.js +97 -0
- package/bundles/private/bazel.js.map +6 -0
- package/bundles/private/localize.js +911 -0
- package/bundles/private/localize.js.map +6 -0
- package/bundles/private/migrations.js +2183 -0
- package/bundles/private/migrations.js.map +6 -0
- package/bundles/private/tooling.js +942 -0
- package/bundles/private/tooling.js.map +6 -0
- package/bundles/src/bin/ng_xi18n.js +20463 -0
- package/bundles/src/bin/ng_xi18n.js.map +6 -0
- package/bundles/src/bin/ngc.js +20465 -0
- package/bundles/src/bin/ngc.js.map +6 -0
- package/bundles_metadata.json +1 -0
- package/import_meta_url.d.ts +14 -0
- package/index.d.ts +4 -1
- package/linker/babel/src/ast/babel_ast_factory.d.ts +1 -8
- package/linker/babel/src/ast/babel_ast_host.d.ts +1 -1
- package/linker/babel/src/babel_core.d.ts +36 -0
- package/linker/babel/src/babel_declaration_scope.d.ts +1 -1
- package/linker/babel/src/babel_plugin.d.ts +1 -8
- package/linker/babel/src/es2015_linker_plugin.d.ts +2 -2
- package/linker/src/ast/typescript/typescript_ast_host.d.ts +1 -1
- package/linker/src/file_linker/emit_scopes/emit_scope.d.ts +1 -2
- package/linker/src/file_linker/emit_scopes/iife_emit_scope.d.ts +1 -1
- package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_component_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_linker.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.d.ts +2 -2
- package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.d.ts +1 -2
- package/linker/src/file_linker/partial_linkers/util.d.ts +1 -2
- package/ngcc/index.d.ts +15 -0
- package/ngcc/src/analysis/decoration_analyzer.d.ts +1 -1
- package/ngcc/src/analysis/module_with_providers_analyzer.d.ts +1 -1
- package/ngcc/src/analysis/ngcc_references_registry.d.ts +1 -1
- package/ngcc/src/analysis/ngcc_trait_compiler.d.ts +1 -1
- package/ngcc/src/analysis/private_declarations_analyzer.d.ts +1 -1
- package/ngcc/src/analysis/switch_marker_analyzer.d.ts +1 -1
- package/ngcc/src/analysis/types.d.ts +1 -1
- package/ngcc/src/dependencies/esm_dependency_host.d.ts +1 -1
- package/ngcc/src/execution/cluster/api.d.ts +5 -1
- package/ngcc/src/execution/cluster/master.d.ts +5 -3
- package/{src/ngtsc/logging/testing/index.d.ts → ngcc/src/execution/cluster/ngcc_cluster_worker.d.ts} +2 -2
- package/ngcc/src/host/commonjs_host.d.ts +1 -1
- package/ngcc/src/host/commonjs_umd_utils.d.ts +1 -1
- package/ngcc/src/host/delegating_host.d.ts +1 -1
- package/ngcc/src/host/esm2015_host.d.ts +1 -1
- package/ngcc/src/host/esm5_host.d.ts +1 -1
- package/ngcc/src/host/ngcc_host.d.ts +1 -1
- package/ngcc/src/host/umd_host.d.ts +1 -1
- package/ngcc/src/host/utils.d.ts +1 -1
- package/ngcc/src/locking/lock_file.d.ts +1 -1
- package/ngcc/src/locking/lock_file_with_child_process/index.d.ts +2 -0
- package/ngcc/src/locking/lock_file_with_child_process/{unlocker.d.ts → ngcc_lock_unlocker.d.ts} +1 -1
- package/ngcc/src/migrations/migration.d.ts +1 -1
- package/ngcc/src/migrations/missing_injectable_migration.d.ts +1 -1
- package/ngcc/src/migrations/undecorated_child_migration.d.ts +1 -1
- package/ngcc/src/migrations/undecorated_parent_migration.d.ts +1 -1
- package/ngcc/src/migrations/utils.d.ts +1 -1
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/bundle_program.d.ts +1 -1
- package/ngcc/src/packages/entry_point_bundle.d.ts +1 -1
- package/ngcc/src/packages/ngcc_compiler_host.d.ts +1 -1
- package/ngcc/src/packages/source_file_cache.d.ts +1 -1
- package/ngcc/src/packages/transformer.d.ts +1 -1
- package/ngcc/src/rendering/commonjs_rendering_formatter.d.ts +1 -1
- package/ngcc/src/rendering/dts_renderer.d.ts +1 -1
- package/ngcc/src/rendering/esm5_rendering_formatter.d.ts +1 -1
- package/ngcc/src/rendering/esm_rendering_formatter.d.ts +1 -1
- package/ngcc/src/rendering/renderer.d.ts +1 -1
- package/ngcc/src/rendering/rendering_formatter.d.ts +1 -1
- package/ngcc/src/rendering/source_maps.d.ts +3 -3
- package/ngcc/src/rendering/umd_rendering_formatter.d.ts +1 -1
- package/ngcc/src/rendering/utils.d.ts +1 -1
- package/ngcc/src/utils.d.ts +1 -1
- package/package.json +52 -13
- package/private/bazel.d.ts +13 -0
- package/private/localize.d.ts +15 -0
- package/private/migrations.d.ts +16 -0
- package/{src → private}/tooling.d.ts +2 -2
- package/src/bin/ng_xi18n.d.ts +10 -0
- package/{ngcc/main-ivy-ngcc.d.ts → src/bin/ngc.d.ts} +2 -1
- package/src/diagnostics/translate_diagnostics.d.ts +1 -1
- package/src/extract_i18n.d.ts +0 -5
- package/src/main.d.ts +9 -6
- package/src/metadata/bundle_index_host.d.ts +1 -1
- package/src/metadata/bundler.d.ts +1 -1
- package/src/metadata/collector.d.ts +1 -1
- package/src/metadata/evaluator.d.ts +1 -1
- package/src/metadata/symbols.d.ts +1 -1
- package/src/ngtsc/annotations/src/component.d.ts +1 -1
- package/src/ngtsc/annotations/src/diagnostics.d.ts +1 -1
- package/src/ngtsc/annotations/src/directive.d.ts +1 -1
- package/src/ngtsc/annotations/src/ng_module.d.ts +2 -3
- package/src/ngtsc/annotations/src/pipe.d.ts +1 -1
- package/src/ngtsc/annotations/src/util.d.ts +2 -4
- package/src/ngtsc/core/api/src/adapter.d.ts +1 -1
- package/src/ngtsc/core/api/src/interfaces.d.ts +1 -1
- package/src/ngtsc/core/api/src/options.d.ts +1 -1
- package/src/ngtsc/core/api/src/public_options.d.ts +5 -1
- package/src/ngtsc/core/src/compiler.d.ts +1 -1
- package/src/ngtsc/core/src/host.d.ts +1 -1
- package/src/ngtsc/cycles/src/analyzer.d.ts +1 -1
- package/src/ngtsc/cycles/src/imports.d.ts +1 -1
- package/src/ngtsc/diagnostics/index.d.ts +4 -2
- package/src/ngtsc/diagnostics/src/docs.d.ts +14 -0
- package/src/ngtsc/diagnostics/src/error.d.ts +1 -1
- package/src/ngtsc/diagnostics/src/error_details_base_url.d.ts +16 -0
- package/src/ngtsc/diagnostics/src/util.d.ts +2 -0
- package/src/ngtsc/entry_point/src/generator.d.ts +1 -1
- package/src/ngtsc/entry_point/src/private_export_checker.d.ts +1 -1
- package/src/ngtsc/file_system/src/compiler_host.d.ts +1 -1
- package/src/ngtsc/file_system/src/logical.d.ts +1 -1
- package/src/ngtsc/file_system/src/util.d.ts +1 -1
- package/src/ngtsc/imports/src/alias.d.ts +1 -1
- package/src/ngtsc/imports/src/default.d.ts +1 -1
- package/src/ngtsc/imports/src/emitter.d.ts +1 -1
- package/src/ngtsc/imports/src/find_export.d.ts +1 -1
- package/src/ngtsc/imports/src/references.d.ts +1 -1
- package/src/ngtsc/imports/src/resolver.d.ts +1 -1
- package/src/ngtsc/incremental/api.d.ts +1 -1
- package/src/ngtsc/incremental/src/dependency_tracking.d.ts +1 -1
- package/src/ngtsc/incremental/src/incremental.d.ts +1 -1
- package/src/ngtsc/incremental/src/state.d.ts +1 -1
- package/src/ngtsc/incremental/src/strategy.d.ts +1 -1
- package/src/ngtsc/metadata/src/api.d.ts +1 -1
- package/src/ngtsc/metadata/src/dts.d.ts +1 -1
- package/src/ngtsc/metadata/src/resource_registry.d.ts +1 -1
- package/src/ngtsc/metadata/src/util.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/index.d.ts +1 -0
- package/src/ngtsc/partial_evaluator/src/builtin.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/diagnostics.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/dynamic.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/interface.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/interpreter.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/result.d.ts +1 -1
- package/src/ngtsc/partial_evaluator/src/ts_helpers.d.ts +1 -1
- package/src/ngtsc/program.d.ts +1 -1
- package/src/ngtsc/program_driver/src/api.d.ts +1 -1
- package/src/ngtsc/program_driver/src/ts_create_program_driver.d.ts +1 -1
- package/src/ngtsc/reflection/src/host.d.ts +1 -1
- package/src/ngtsc/reflection/src/type_to_value.d.ts +1 -1
- package/src/ngtsc/reflection/src/typescript.d.ts +1 -1
- package/src/ngtsc/reflection/src/util.d.ts +1 -1
- package/src/ngtsc/resource/src/loader.d.ts +1 -1
- package/src/ngtsc/scope/src/local.d.ts +1 -1
- package/src/ngtsc/scope/src/typecheck.d.ts +1 -1
- package/src/ngtsc/shims/api.d.ts +1 -1
- package/src/ngtsc/shims/src/adapter.d.ts +1 -1
- package/src/ngtsc/shims/src/expando.d.ts +1 -1
- package/src/ngtsc/shims/src/factory_generator.d.ts +1 -1
- package/src/ngtsc/shims/src/reference_tagger.d.ts +1 -1
- package/src/ngtsc/shims/src/summary_generator.d.ts +1 -1
- package/src/ngtsc/switch/src/switch.d.ts +1 -1
- package/src/ngtsc/transform/src/alias.d.ts +1 -1
- package/src/ngtsc/transform/src/api.d.ts +1 -1
- package/src/ngtsc/transform/src/compilation.d.ts +1 -1
- package/src/ngtsc/transform/src/declaration.d.ts +1 -1
- package/src/ngtsc/transform/src/trait.d.ts +1 -1
- package/src/ngtsc/transform/src/transform.d.ts +1 -1
- package/src/ngtsc/transform/src/utils.d.ts +1 -1
- package/src/ngtsc/translator/src/import_manager.d.ts +1 -1
- package/src/ngtsc/translator/src/type_translator.d.ts +1 -1
- package/src/ngtsc/translator/src/typescript_ast_factory.d.ts +1 -1
- package/src/ngtsc/translator/src/typescript_translator.d.ts +1 -1
- package/src/ngtsc/tsc_plugin.d.ts +1 -1
- package/src/ngtsc/typecheck/api/api.d.ts +1 -1
- package/src/ngtsc/typecheck/api/checker.d.ts +3 -4
- package/src/ngtsc/typecheck/api/context.d.ts +1 -1
- package/src/ngtsc/typecheck/api/scope.d.ts +1 -1
- package/src/ngtsc/typecheck/api/symbols.d.ts +1 -1
- package/src/ngtsc/typecheck/diagnostics/src/diagnostic.d.ts +1 -1
- package/src/ngtsc/typecheck/extended/api/api.d.ts +1 -1
- package/src/ngtsc/typecheck/extended/api/extended_template_checker.d.ts +1 -1
- package/src/ngtsc/typecheck/extended/checks/invalid_banana_in_box/index.d.ts +1 -1
- package/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.d.ts +1 -1
- package/src/ngtsc/typecheck/extended/src/extended_template_checker.d.ts +1 -1
- package/src/ngtsc/typecheck/src/checker.d.ts +3 -4
- package/src/ngtsc/typecheck/src/comments.d.ts +1 -1
- package/src/ngtsc/typecheck/src/completion.d.ts +3 -5
- package/src/ngtsc/typecheck/src/context.d.ts +1 -1
- package/src/ngtsc/typecheck/src/diagnostics.d.ts +1 -1
- package/src/ngtsc/typecheck/src/environment.d.ts +1 -1
- package/src/ngtsc/typecheck/src/expression.d.ts +1 -1
- package/src/ngtsc/typecheck/src/oob.d.ts +3 -4
- package/src/ngtsc/typecheck/src/shim.d.ts +1 -1
- package/src/ngtsc/typecheck/src/source.d.ts +1 -1
- package/src/ngtsc/typecheck/src/tcb_util.d.ts +1 -1
- package/src/ngtsc/typecheck/src/template_symbol_builder.d.ts +1 -1
- package/src/ngtsc/typecheck/src/ts_util.d.ts +1 -1
- package/src/ngtsc/typecheck/src/type_check_block.d.ts +1 -1
- package/src/ngtsc/typecheck/src/type_check_file.d.ts +1 -1
- package/src/ngtsc/typecheck/src/type_constructor.d.ts +1 -1
- package/src/ngtsc/typecheck/src/type_emitter.d.ts +1 -1
- package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +1 -1
- package/src/ngtsc/util/src/typescript.d.ts +1 -1
- package/src/ngtsc/util/src/visitor.d.ts +1 -1
- package/src/perform_compile.d.ts +1 -2
- package/src/perform_watch.d.ts +1 -1
- package/src/transformers/api.d.ts +1 -1
- package/src/transformers/compiler_host.d.ts +1 -1
- package/src/transformers/{downlevel_decorators_transform.d.ts → downlevel_decorators_transform/downlevel_decorators_transform.d.ts} +3 -3
- package/src/transformers/downlevel_decorators_transform/index.d.ts +9 -0
- package/src/transformers/{patch_alias_reference_resolution.d.ts → downlevel_decorators_transform/patch_alias_reference_resolution.d.ts} +2 -2
- package/src/transformers/i18n.d.ts +1 -1
- package/src/transformers/inline_resources.d.ts +1 -1
- package/src/transformers/lower_expressions.d.ts +1 -1
- package/src/transformers/metadata_cache.d.ts +1 -1
- package/src/transformers/node_emitter.d.ts +1 -1
- package/src/transformers/node_emitter_transform.d.ts +1 -1
- package/src/transformers/program.d.ts +1 -1
- package/src/transformers/r3_metadata_transform.d.ts +1 -1
- package/src/transformers/r3_transform.d.ts +1 -1
- package/src/transformers/util.d.ts +1 -1
- package/index.js +0 -40
- package/linker/babel/index.js +0 -25
- package/linker/babel/src/ast/babel_ast_factory.js +0 -153
- package/linker/babel/src/ast/babel_ast_host.js +0 -181
- package/linker/babel/src/babel_declaration_scope.js +0 -67
- package/linker/babel/src/babel_plugin.js +0 -38
- package/linker/babel/src/es2015_linker_plugin.js +0 -183
- package/linker/babel/src/linker_plugin_options.js +0 -13
- package/linker/index.js +0 -27
- package/linker/src/ast/ast_host.js +0 -20
- package/linker/src/ast/ast_value.js +0 -299
- package/linker/src/ast/typescript/typescript_ast_host.js +0 -183
- package/linker/src/ast/utils.js +0 -31
- package/linker/src/fatal_linker_error.js +0 -49
- package/linker/src/file_linker/declaration_scope.js +0 -20
- package/linker/src/file_linker/emit_scopes/emit_scope.js +0 -57
- package/linker/src/file_linker/emit_scopes/iife_emit_scope.js +0 -51
- package/linker/src/file_linker/file_linker.js +0 -97
- package/linker/src/file_linker/get_source_file.js +0 -42
- package/linker/src/file_linker/linker_environment.js +0 -38
- package/linker/src/file_linker/linker_options.js +0 -29
- package/linker/src/file_linker/needs_linking.js +0 -41
- package/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.js +0 -47
- package/linker/src/file_linker/partial_linkers/partial_component_linker_1.js +0 -210
- package/linker/src/file_linker/partial_linkers/partial_directive_linker_1.js +0 -154
- package/linker/src/file_linker/partial_linkers/partial_factory_linker_1.js +0 -70
- package/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.js +0 -74
- package/linker/src/file_linker/partial_linkers/partial_injector_linker_1.js +0 -56
- package/linker/src/file_linker/partial_linkers/partial_linker.js +0 -13
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +0 -194
- package/linker/src/file_linker/partial_linkers/partial_ng_module_linker_1.js +0 -126
- package/linker/src/file_linker/partial_linkers/partial_pipe_linker_1.js +0 -59
- package/linker/src/file_linker/partial_linkers/util.js +0 -95
- package/linker/src/file_linker/translator.js +0 -40
- package/linker/src/linker_import_generator.js +0 -43
- package/ngcc/index.js +0 -33
- package/ngcc/main-ivy-ngcc.js +0 -12
- package/ngcc/main-ngcc.js +0 -54
- package/ngcc/src/analysis/decoration_analyzer.js +0 -268
- package/ngcc/src/analysis/migration_host.js +0 -108
- package/ngcc/src/analysis/module_with_providers_analyzer.js +0 -197
- package/ngcc/src/analysis/ngcc_references_registry.js +0 -65
- package/ngcc/src/analysis/ngcc_trait_compiler.js +0 -117
- package/ngcc/src/analysis/private_declarations_analyzer.js +0 -63
- package/ngcc/src/analysis/switch_marker_analyzer.js +0 -50
- package/ngcc/src/analysis/types.js +0 -15
- package/ngcc/src/analysis/util.js +0 -36
- package/ngcc/src/command_line_options.js +0 -156
- package/ngcc/src/constants.js +0 -23
- package/ngcc/src/dependencies/commonjs_dependency_host.js +0 -129
- package/ngcc/src/dependencies/dependency_host.js +0 -143
- package/ngcc/src/dependencies/dependency_resolver.js +0 -180
- package/ngcc/src/dependencies/dts_dependency_host.js +0 -35
- package/ngcc/src/dependencies/esm_dependency_host.js +0 -307
- package/ngcc/src/dependencies/module_resolver.js +0 -269
- package/ngcc/src/dependencies/umd_dependency_host.js +0 -53
- package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js +0 -70
- package/ngcc/src/entry_point_finder/entry_point_collector.js +0 -157
- package/ngcc/src/entry_point_finder/interface.js +0 -13
- package/ngcc/src/entry_point_finder/program_based_entry_point_finder.js +0 -132
- package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +0 -268
- package/ngcc/src/entry_point_finder/tracing_entry_point_finder.js +0 -78
- package/ngcc/src/entry_point_finder/utils.js +0 -234
- package/ngcc/src/execution/analyze_entry_points.js +0 -197
- package/ngcc/src/execution/api.js +0 -13
- package/ngcc/src/execution/cluster/api.js +0 -20
- package/ngcc/src/execution/cluster/executor.js +0 -52
- package/ngcc/src/execution/cluster/master.js +0 -311
- package/ngcc/src/execution/cluster/package_json_updater.js +0 -79
- package/ngcc/src/execution/cluster/utils.js +0 -77
- package/ngcc/src/execution/cluster/worker.js +0 -123
- package/ngcc/src/execution/create_compile_function.js +0 -76
- package/ngcc/src/execution/single_process_executor.js +0 -91
- package/ngcc/src/execution/tasks/api.js +0 -35
- package/ngcc/src/execution/tasks/completion.js +0 -79
- package/ngcc/src/execution/tasks/queues/base_task_queue.js +0 -120
- package/ngcc/src/execution/tasks/queues/parallel_task_queue.js +0 -87
- package/ngcc/src/execution/tasks/queues/serial_task_queue.js +0 -49
- package/ngcc/src/execution/tasks/utils.js +0 -167
- package/ngcc/src/host/commonjs_host.js +0 -261
- package/ngcc/src/host/commonjs_umd_utils.js +0 -210
- package/ngcc/src/host/delegating_host.js +0 -156
- package/ngcc/src/host/esm2015_host.js +0 -2441
- package/ngcc/src/host/esm5_host.js +0 -745
- package/ngcc/src/host/ngcc_host.js +0 -29
- package/ngcc/src/host/umd_host.js +0 -539
- package/ngcc/src/host/utils.js +0 -26
- package/ngcc/src/locking/async_locker.js +0 -121
- package/ngcc/src/locking/lock_file.js +0 -18
- package/ngcc/src/locking/lock_file_with_child_process/index.js +0 -93
- package/ngcc/src/locking/lock_file_with_child_process/unlocker.js +0 -46
- package/ngcc/src/locking/lock_file_with_child_process/util.js +0 -43
- package/ngcc/src/locking/sync_locker.js +0 -67
- package/ngcc/src/main.js +0 -163
- package/ngcc/src/migrations/migration.js +0 -13
- package/ngcc/src/migrations/missing_injectable_migration.js +0 -227
- package/ngcc/src/migrations/undecorated_child_migration.js +0 -90
- package/ngcc/src/migrations/undecorated_parent_migration.js +0 -103
- package/ngcc/src/migrations/utils.js +0 -137
- package/ngcc/src/ngcc_options.js +0 -135
- package/ngcc/src/packages/build_marker.js +0 -124
- package/ngcc/src/packages/bundle_program.js +0 -80
- package/ngcc/src/packages/configuration.js +0 -334
- package/ngcc/src/packages/entry_point.js +0 -267
- package/ngcc/src/packages/entry_point_bundle.js +0 -96
- package/ngcc/src/packages/entry_point_manifest.js +0 -207
- package/ngcc/src/packages/ngcc_compiler_host.js +0 -101
- package/ngcc/src/packages/patch_ts_expando_initializer.js +0 -174
- package/ngcc/src/packages/source_file_cache.js +0 -207
- package/ngcc/src/packages/transformer.js +0 -157
- package/ngcc/src/path_mappings.js +0 -27
- package/ngcc/src/rendering/commonjs_rendering_formatter.js +0 -106
- package/ngcc/src/rendering/dts_renderer.js +0 -170
- package/ngcc/src/rendering/esm5_rendering_formatter.js +0 -70
- package/ngcc/src/rendering/esm_rendering_formatter.js +0 -291
- package/ngcc/src/rendering/ngcc_import_rewriter.js +0 -49
- package/ngcc/src/rendering/renderer.js +0 -204
- package/ngcc/src/rendering/rendering_formatter.js +0 -15
- package/ngcc/src/rendering/source_maps.js +0 -68
- package/ngcc/src/rendering/umd_rendering_formatter.js +0 -326
- package/ngcc/src/rendering/utils.js +0 -35
- package/ngcc/src/utils.js +0 -182
- package/ngcc/src/writing/cleaning/cleaning_strategies.js +0 -80
- package/ngcc/src/writing/cleaning/package_cleaner.js +0 -126
- package/ngcc/src/writing/cleaning/utils.js +0 -30
- package/ngcc/src/writing/file_writer.js +0 -13
- package/ngcc/src/writing/in_place_file_writer.js +0 -90
- package/ngcc/src/writing/new_entry_point_file_writer.js +0 -214
- package/ngcc/src/writing/package_json_updater.js +0 -182
- package/src/diagnostics/translate_diagnostics.js +0 -61
- package/src/diagnostics/typescript_version.js +0 -96
- package/src/extract_i18n.js +0 -62
- package/src/language_services.js +0 -34
- package/src/main.js +0 -210
- package/src/metadata/bundle_index_host.js +0 -133
- package/src/metadata/bundler.js +0 -624
- package/src/metadata/collector.js +0 -799
- package/src/metadata/evaluator.js +0 -677
- package/src/metadata/index.js +0 -24
- package/src/metadata/index_writer.js +0 -80
- package/src/metadata/schema.js +0 -136
- package/src/metadata/symbols.js +0 -149
- package/src/ngtsc/annotations/index.js +0 -35
- package/src/ngtsc/annotations/src/api.js +0 -20
- package/src/ngtsc/annotations/src/component.js +0 -1338
- package/src/ngtsc/annotations/src/diagnostics.js +0 -174
- package/src/ngtsc/annotations/src/directive.js +0 -724
- package/src/ngtsc/annotations/src/factory.js +0 -32
- package/src/ngtsc/annotations/src/injectable.js +0 -284
- package/src/ngtsc/annotations/src/metadata.js +0 -160
- package/src/ngtsc/annotations/src/ng_module.js +0 -671
- package/src/ngtsc/annotations/src/pipe.js +0 -171
- package/src/ngtsc/annotations/src/references_registry.js +0 -38
- package/src/ngtsc/annotations/src/util.js +0 -566
- package/src/ngtsc/core/api/index.js +0 -25
- package/src/ngtsc/core/api/src/adapter.js +0 -20
- package/src/ngtsc/core/api/src/interfaces.js +0 -20
- package/src/ngtsc/core/api/src/options.js +0 -20
- package/src/ngtsc/core/api/src/public_options.js +0 -20
- package/src/ngtsc/core/index.js +0 -25
- package/src/ngtsc/core/src/compiler.js +0 -1105
- package/src/ngtsc/core/src/host.js +0 -273
- package/src/ngtsc/cycles/index.js +0 -26
- package/src/ngtsc/cycles/src/analyzer.js +0 -163
- package/src/ngtsc/cycles/src/imports.js +0 -175
- package/src/ngtsc/diagnostics/index.js +0 -33
- package/src/ngtsc/diagnostics/src/error.js +0 -69
- package/src/ngtsc/diagnostics/src/error_code.js +0 -235
- package/src/ngtsc/diagnostics/src/util.js +0 -35
- package/src/ngtsc/entry_point/index.js +0 -29
- package/src/ngtsc/entry_point/src/generator.js +0 -45
- package/src/ngtsc/entry_point/src/logic.js +0 -61
- package/src/ngtsc/entry_point/src/private_export_checker.js +0 -137
- package/src/ngtsc/entry_point/src/reference_graph.js +0 -91
- package/src/ngtsc/file_system/index.js +0 -45
- package/src/ngtsc/file_system/src/compiler_host.js +0 -80
- package/src/ngtsc/file_system/src/helpers.js +0 -135
- package/src/ngtsc/file_system/src/invalid_file_system.js +0 -120
- package/src/ngtsc/file_system/src/logical.js +0 -100
- package/src/ngtsc/file_system/src/node_js_file_system.js +0 -179
- package/src/ngtsc/file_system/src/types.js +0 -20
- package/src/ngtsc/file_system/src/util.js +0 -38
- package/src/ngtsc/file_system/testing/index.d.ts +0 -13
- package/src/ngtsc/file_system/testing/index.js +0 -32
- package/src/ngtsc/file_system/testing/src/mock_file_system.d.ts +0 -72
- package/src/ngtsc/file_system/testing/src/mock_file_system.js +0 -333
- package/src/ngtsc/file_system/testing/src/mock_file_system_native.d.ts +0 -16
- package/src/ngtsc/file_system/testing/src/mock_file_system_native.js +0 -85
- package/src/ngtsc/file_system/testing/src/mock_file_system_posix.d.ts +0 -13
- package/src/ngtsc/file_system/testing/src/mock_file_system_posix.js +0 -68
- package/src/ngtsc/file_system/testing/src/mock_file_system_windows.d.ts +0 -13
- package/src/ngtsc/file_system/testing/src/mock_file_system_windows.js +0 -68
- package/src/ngtsc/file_system/testing/src/test_helper.d.ts +0 -17
- package/src/ngtsc/file_system/testing/src/test_helper.js +0 -143
- package/src/ngtsc/imports/index.js +0 -43
- package/src/ngtsc/imports/src/alias.js +0 -158
- package/src/ngtsc/imports/src/core.js +0 -98
- package/src/ngtsc/imports/src/default.js +0 -153
- package/src/ngtsc/imports/src/emitter.js +0 -317
- package/src/ngtsc/imports/src/find_export.js +0 -82
- package/src/ngtsc/imports/src/reexport.js +0 -20
- package/src/ngtsc/imports/src/references.js +0 -171
- package/src/ngtsc/imports/src/resolver.js +0 -39
- package/src/ngtsc/incremental/api.js +0 -20
- package/src/ngtsc/incremental/index.js +0 -29
- package/src/ngtsc/incremental/semantic_graph/index.js +0 -34
- package/src/ngtsc/incremental/semantic_graph/src/api.js +0 -51
- package/src/ngtsc/incremental/semantic_graph/src/graph.js +0 -302
- package/src/ngtsc/incremental/semantic_graph/src/type_parameters.js +0 -55
- package/src/ngtsc/incremental/semantic_graph/src/util.js +0 -111
- package/src/ngtsc/incremental/src/dependency_tracking.js +0 -165
- package/src/ngtsc/incremental/src/incremental.js +0 -393
- package/src/ngtsc/incremental/src/noop.js +0 -26
- package/src/ngtsc/incremental/src/state.js +0 -30
- package/src/ngtsc/incremental/src/strategy.js +0 -99
- package/src/ngtsc/indexer/index.js +0 -27
- package/src/ngtsc/indexer/src/api.js +0 -45
- package/src/ngtsc/indexer/src/context.js +0 -40
- package/src/ngtsc/indexer/src/template.js +0 -324
- package/src/ngtsc/indexer/src/transform.js +0 -66
- package/src/ngtsc/logging/index.js +0 -25
- package/src/ngtsc/logging/src/console_logger.js +0 -75
- package/src/ngtsc/logging/src/logger.js +0 -28
- package/src/ngtsc/logging/testing/index.js +0 -23
- package/src/ngtsc/logging/testing/src/mock_logger.d.ts +0 -20
- package/src/ngtsc/logging/testing/src/mock_logger.js +0 -64
- package/src/ngtsc/metadata/index.js +0 -39
- package/src/ngtsc/metadata/src/api.js +0 -26
- package/src/ngtsc/metadata/src/dts.js +0 -168
- package/src/ngtsc/metadata/src/inheritance.js +0 -122
- package/src/ngtsc/metadata/src/property_mapping.js +0 -244
- package/src/ngtsc/metadata/src/registry.js +0 -133
- package/src/ngtsc/metadata/src/resource_registry.js +0 -109
- package/src/ngtsc/metadata/src/util.js +0 -275
- package/src/ngtsc/partial_evaluator/index.js +0 -31
- package/src/ngtsc/partial_evaluator/src/builtin.js +0 -125
- package/src/ngtsc/partial_evaluator/src/diagnostics.js +0 -193
- package/src/ngtsc/partial_evaluator/src/dynamic.js +0 -109
- package/src/ngtsc/partial_evaluator/src/interface.js +0 -42
- package/src/ngtsc/partial_evaluator/src/interpreter.js +0 -780
- package/src/ngtsc/partial_evaluator/src/known_declaration.js +0 -57
- package/src/ngtsc/partial_evaluator/src/result.js +0 -72
- package/src/ngtsc/partial_evaluator/src/ts_helpers.js +0 -121
- package/src/ngtsc/perf/index.js +0 -28
- package/src/ngtsc/perf/src/api.js +0 -291
- package/src/ngtsc/perf/src/clock.js +0 -31
- package/src/ngtsc/perf/src/noop.js +0 -37
- package/src/ngtsc/perf/src/recorder.js +0 -143
- package/src/ngtsc/program.js +0 -360
- package/src/ngtsc/program_driver/index.js +0 -25
- package/src/ngtsc/program_driver/src/api.js +0 -36
- package/src/ngtsc/program_driver/src/ts_create_program_driver.js +0 -200
- package/src/ngtsc/reflection/index.js +0 -36
- package/src/ngtsc/reflection/src/host.js +0 -88
- package/src/ngtsc/reflection/src/type_to_value.js +0 -259
- package/src/ngtsc/reflection/src/typescript.js +0 -640
- package/src/ngtsc/reflection/src/util.js +0 -37
- package/src/ngtsc/resource/index.js +0 -23
- package/src/ngtsc/resource/src/loader.js +0 -285
- package/src/ngtsc/scope/index.js +0 -29
- package/src/ngtsc/scope/src/api.js +0 -20
- package/src/ngtsc/scope/src/component_scope.js +0 -69
- package/src/ngtsc/scope/src/dependency.js +0 -201
- package/src/ngtsc/scope/src/local.js +0 -665
- package/src/ngtsc/scope/src/typecheck.js +0 -120
- package/src/ngtsc/shims/api.js +0 -13
- package/src/ngtsc/shims/index.js +0 -39
- package/src/ngtsc/shims/src/adapter.js +0 -266
- package/src/ngtsc/shims/src/expando.js +0 -147
- package/src/ngtsc/shims/src/factory_generator.js +0 -292
- package/src/ngtsc/shims/src/reference_tagger.js +0 -94
- package/src/ngtsc/shims/src/summary_generator.js +0 -101
- package/src/ngtsc/shims/src/util.js +0 -41
- package/src/ngtsc/sourcemaps/index.js +0 -27
- package/src/ngtsc/sourcemaps/src/content_origin.js +0 -48
- package/src/ngtsc/sourcemaps/src/raw_source_map.js +0 -13
- package/src/ngtsc/sourcemaps/src/segment_marker.js +0 -55
- package/src/ngtsc/sourcemaps/src/source_file.js +0 -519
- package/src/ngtsc/sourcemaps/src/source_file_loader.js +0 -234
- package/src/ngtsc/switch/index.js +0 -23
- package/src/ngtsc/switch/src/switch.js +0 -141
- package/src/ngtsc/transform/index.js +0 -36
- package/src/ngtsc/transform/src/alias.js +0 -46
- package/src/ngtsc/transform/src/api.js +0 -76
- package/src/ngtsc/transform/src/compilation.js +0 -862
- package/src/ngtsc/transform/src/declaration.js +0 -234
- package/src/ngtsc/transform/src/trait.js +0 -111
- package/src/ngtsc/transform/src/transform.js +0 -333
- package/src/ngtsc/transform/src/utils.js +0 -73
- package/src/ngtsc/translator/index.js +0 -37
- package/src/ngtsc/translator/src/api/ast_factory.js +0 -20
- package/src/ngtsc/translator/src/api/import_generator.js +0 -20
- package/src/ngtsc/translator/src/context.js +0 -47
- package/src/ngtsc/translator/src/import_manager.js +0 -77
- package/src/ngtsc/translator/src/translator.js +0 -347
- package/src/ngtsc/translator/src/type_translator.js +0 -220
- package/src/ngtsc/translator/src/typescript_ast_factory.js +0 -251
- package/src/ngtsc/translator/src/typescript_translator.js +0 -34
- package/src/ngtsc/tsc_plugin.js +0 -129
- package/src/ngtsc/typecheck/api/api.js +0 -20
- package/src/ngtsc/typecheck/api/checker.js +0 -44
- package/src/ngtsc/typecheck/api/completion.js +0 -29
- package/src/ngtsc/typecheck/api/context.js +0 -20
- package/src/ngtsc/typecheck/api/index.js +0 -27
- package/src/ngtsc/typecheck/api/scope.js +0 -20
- package/src/ngtsc/typecheck/api/symbols.js +0 -35
- package/src/ngtsc/typecheck/diagnostics/index.js +0 -23
- package/src/ngtsc/typecheck/diagnostics/src/diagnostic.js +0 -141
- package/src/ngtsc/typecheck/diagnostics/src/id.js +0 -37
- package/src/ngtsc/typecheck/extended/api/api.js +0 -124
- package/src/ngtsc/typecheck/extended/api/extended_template_checker.js +0 -20
- package/src/ngtsc/typecheck/extended/api/index.js +0 -23
- package/src/ngtsc/typecheck/extended/checks/invalid_banana_in_box/index.js +0 -52
- package/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.js +0 -64
- package/src/ngtsc/typecheck/extended/index.js +0 -23
- package/src/ngtsc/typecheck/extended/src/extended_template_checker.js +0 -55
- package/src/ngtsc/typecheck/index.js +0 -29
- package/src/ngtsc/typecheck/src/checker.js +0 -767
- package/src/ngtsc/typecheck/src/comments.js +0 -181
- package/src/ngtsc/typecheck/src/completion.js +0 -230
- package/src/ngtsc/typecheck/src/context.js +0 -424
- package/src/ngtsc/typecheck/src/diagnostics.js +0 -114
- package/src/ngtsc/typecheck/src/dom.js +0 -87
- package/src/ngtsc/typecheck/src/environment.js +0 -160
- package/src/ngtsc/typecheck/src/expression.js +0 -417
- package/src/ngtsc/typecheck/src/line_mappings.js +0 -77
- package/src/ngtsc/typecheck/src/oob.js +0 -181
- package/src/ngtsc/typecheck/src/shim.js +0 -52
- package/src/ngtsc/typecheck/src/source.js +0 -91
- package/src/ngtsc/typecheck/src/tcb_util.js +0 -165
- package/src/ngtsc/typecheck/src/template_semantics.js +0 -52
- package/src/ngtsc/typecheck/src/template_symbol_builder.js +0 -551
- package/src/ngtsc/typecheck/src/ts_util.js +0 -202
- package/src/ngtsc/typecheck/src/type_check_block.js +0 -2212
- package/src/ngtsc/typecheck/src/type_check_file.js +0 -115
- package/src/ngtsc/typecheck/src/type_constructor.js +0 -255
- package/src/ngtsc/typecheck/src/type_emitter.js +0 -164
- package/src/ngtsc/typecheck/src/type_parameter_emitter.js +0 -115
- package/src/ngtsc/util/src/path.js +0 -33
- package/src/ngtsc/util/src/typescript.js +0 -176
- package/src/ngtsc/util/src/visitor.js +0 -119
- package/src/ngtsc/xi18n/index.js +0 -22
- package/src/ngtsc/xi18n/src/context.js +0 -20
- package/src/perform_compile.js +0 -322
- package/src/perform_watch.js +0 -263
- package/src/tooling.js +0 -47
- package/src/transformers/api.js +0 -42
- package/src/transformers/compiler_host.js +0 -623
- package/src/transformers/downlevel_decorators_transform.js +0 -611
- package/src/transformers/entry_points.js +0 -25
- package/src/transformers/i18n.js +0 -76
- package/src/transformers/inline_resources.js +0 -287
- package/src/transformers/lower_expressions.js +0 -365
- package/src/transformers/metadata_cache.js +0 -96
- package/src/transformers/metadata_reader.js +0 -120
- package/src/transformers/node_emitter.js +0 -637
- package/src/transformers/node_emitter_transform.js +0 -88
- package/src/transformers/patch_alias_reference_resolution.js +0 -129
- package/src/transformers/program.js +0 -998
- package/src/transformers/r3_metadata_transform.js +0 -73
- package/src/transformers/r3_transform.js +0 -44
- package/src/transformers/util.js +0 -122
- package/src/typescript_support.js +0 -74
- package/src/version.js +0 -28
|
@@ -1,261 +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
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/ngcc/src/host/commonjs_host", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/compiler-cli/ngcc/src/utils", "@angular/compiler-cli/ngcc/src/host/commonjs_umd_utils", "@angular/compiler-cli/ngcc/src/host/esm2015_host", "@angular/compiler-cli/ngcc/src/host/esm5_host"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.CommonJsReflectionHost = void 0;
|
|
20
|
-
var tslib_1 = require("tslib");
|
|
21
|
-
var ts = require("typescript");
|
|
22
|
-
var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
|
|
23
|
-
var utils_1 = require("@angular/compiler-cli/ngcc/src/utils");
|
|
24
|
-
var commonjs_umd_utils_1 = require("@angular/compiler-cli/ngcc/src/host/commonjs_umd_utils");
|
|
25
|
-
var esm2015_host_1 = require("@angular/compiler-cli/ngcc/src/host/esm2015_host");
|
|
26
|
-
var esm5_host_1 = require("@angular/compiler-cli/ngcc/src/host/esm5_host");
|
|
27
|
-
var CommonJsReflectionHost = /** @class */ (function (_super) {
|
|
28
|
-
(0, tslib_1.__extends)(CommonJsReflectionHost, _super);
|
|
29
|
-
function CommonJsReflectionHost(logger, isCore, src, dts) {
|
|
30
|
-
if (dts === void 0) { dts = null; }
|
|
31
|
-
var _this = _super.call(this, logger, isCore, src, dts) || this;
|
|
32
|
-
_this.commonJsExports = new utils_1.FactoryMap(function (sf) { return _this.computeExportsOfCommonJsModule(sf); });
|
|
33
|
-
_this.topLevelHelperCalls = new utils_1.FactoryMap(function (helperName) { return new utils_1.FactoryMap(function (sf) { return sf.statements.map(function (stmt) { return _this.getHelperCall(stmt, [helperName]); })
|
|
34
|
-
.filter(utils_1.isDefined); }); });
|
|
35
|
-
_this.program = src.program;
|
|
36
|
-
_this.compilerHost = src.host;
|
|
37
|
-
return _this;
|
|
38
|
-
}
|
|
39
|
-
CommonJsReflectionHost.prototype.getImportOfIdentifier = function (id) {
|
|
40
|
-
var requireCall = this.findCommonJsImport(id);
|
|
41
|
-
if (requireCall === null) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
return { from: requireCall.arguments[0].text, name: id.text };
|
|
45
|
-
};
|
|
46
|
-
CommonJsReflectionHost.prototype.getDeclarationOfIdentifier = function (id) {
|
|
47
|
-
return this.getCommonJsModuleDeclaration(id) || _super.prototype.getDeclarationOfIdentifier.call(this, id);
|
|
48
|
-
};
|
|
49
|
-
CommonJsReflectionHost.prototype.getExportsOfModule = function (module) {
|
|
50
|
-
return _super.prototype.getExportsOfModule.call(this, module) || this.commonJsExports.get(module.getSourceFile());
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Search statements related to the given class for calls to the specified helper.
|
|
54
|
-
*
|
|
55
|
-
* In CommonJS these helper calls can be outside the class's IIFE at the top level of the
|
|
56
|
-
* source file. Searching the top level statements for helpers can be expensive, so we
|
|
57
|
-
* try to get helpers from the IIFE first and only fall back on searching the top level if
|
|
58
|
-
* no helpers are found.
|
|
59
|
-
*
|
|
60
|
-
* @param classSymbol the class whose helper calls we are interested in.
|
|
61
|
-
* @param helperNames the names of the helpers (e.g. `__decorate`) whose calls we are interested
|
|
62
|
-
* in.
|
|
63
|
-
* @returns an array of nodes of calls to the helper with the given name.
|
|
64
|
-
*/
|
|
65
|
-
CommonJsReflectionHost.prototype.getHelperCallsForClass = function (classSymbol, helperNames) {
|
|
66
|
-
var esm5HelperCalls = _super.prototype.getHelperCallsForClass.call(this, classSymbol, helperNames);
|
|
67
|
-
if (esm5HelperCalls.length > 0) {
|
|
68
|
-
return esm5HelperCalls;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
var sourceFile = classSymbol.declaration.valueDeclaration.getSourceFile();
|
|
72
|
-
return this.getTopLevelHelperCalls(sourceFile, helperNames);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* Find all the helper calls at the top level of a source file.
|
|
77
|
-
*
|
|
78
|
-
* We cache the helper calls per source file so that we don't have to keep parsing the code for
|
|
79
|
-
* each class in a file.
|
|
80
|
-
*
|
|
81
|
-
* @param sourceFile the source who may contain helper calls.
|
|
82
|
-
* @param helperNames the names of the helpers (e.g. `__decorate`) whose calls we are interested
|
|
83
|
-
* in.
|
|
84
|
-
* @returns an array of nodes of calls to the helper with the given name.
|
|
85
|
-
*/
|
|
86
|
-
CommonJsReflectionHost.prototype.getTopLevelHelperCalls = function (sourceFile, helperNames) {
|
|
87
|
-
var _this = this;
|
|
88
|
-
var calls = [];
|
|
89
|
-
helperNames.forEach(function (helperName) {
|
|
90
|
-
var helperCallsMap = _this.topLevelHelperCalls.get(helperName);
|
|
91
|
-
calls.push.apply(calls, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(helperCallsMap.get(sourceFile)), false));
|
|
92
|
-
});
|
|
93
|
-
return calls;
|
|
94
|
-
};
|
|
95
|
-
CommonJsReflectionHost.prototype.computeExportsOfCommonJsModule = function (sourceFile) {
|
|
96
|
-
var e_1, _a, e_2, _b;
|
|
97
|
-
var moduleMap = new Map();
|
|
98
|
-
try {
|
|
99
|
-
for (var _c = (0, tslib_1.__values)(this.getModuleStatements(sourceFile)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
100
|
-
var statement = _d.value;
|
|
101
|
-
if ((0, commonjs_umd_utils_1.isExportsStatement)(statement)) {
|
|
102
|
-
var exportDeclaration = this.extractBasicCommonJsExportDeclaration(statement);
|
|
103
|
-
moduleMap.set(exportDeclaration.name, exportDeclaration.declaration);
|
|
104
|
-
}
|
|
105
|
-
else if ((0, commonjs_umd_utils_1.isWildcardReexportStatement)(statement)) {
|
|
106
|
-
var reexports = this.extractCommonJsWildcardReexports(statement, sourceFile);
|
|
107
|
-
try {
|
|
108
|
-
for (var reexports_1 = (e_2 = void 0, (0, tslib_1.__values)(reexports)), reexports_1_1 = reexports_1.next(); !reexports_1_1.done; reexports_1_1 = reexports_1.next()) {
|
|
109
|
-
var reexport = reexports_1_1.value;
|
|
110
|
-
moduleMap.set(reexport.name, reexport.declaration);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
114
|
-
finally {
|
|
115
|
-
try {
|
|
116
|
-
if (reexports_1_1 && !reexports_1_1.done && (_b = reexports_1.return)) _b.call(reexports_1);
|
|
117
|
-
}
|
|
118
|
-
finally { if (e_2) throw e_2.error; }
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else if ((0, commonjs_umd_utils_1.isDefinePropertyReexportStatement)(statement)) {
|
|
122
|
-
var exportDeclaration = this.extractCommonJsDefinePropertyExportDeclaration(statement);
|
|
123
|
-
if (exportDeclaration !== null) {
|
|
124
|
-
moduleMap.set(exportDeclaration.name, exportDeclaration.declaration);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
130
|
-
finally {
|
|
131
|
-
try {
|
|
132
|
-
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
133
|
-
}
|
|
134
|
-
finally { if (e_1) throw e_1.error; }
|
|
135
|
-
}
|
|
136
|
-
return moduleMap;
|
|
137
|
-
};
|
|
138
|
-
CommonJsReflectionHost.prototype.extractBasicCommonJsExportDeclaration = function (statement) {
|
|
139
|
-
var _a;
|
|
140
|
-
var exportExpression = (0, commonjs_umd_utils_1.skipAliases)(statement.expression.right);
|
|
141
|
-
var node = statement.expression.left;
|
|
142
|
-
var declaration = (_a = this.getDeclarationOfExpression(exportExpression)) !== null && _a !== void 0 ? _a : {
|
|
143
|
-
kind: 1 /* Inline */,
|
|
144
|
-
node: node,
|
|
145
|
-
implementation: exportExpression,
|
|
146
|
-
known: null,
|
|
147
|
-
viaModule: null,
|
|
148
|
-
};
|
|
149
|
-
return { name: node.name.text, declaration: declaration };
|
|
150
|
-
};
|
|
151
|
-
CommonJsReflectionHost.prototype.extractCommonJsWildcardReexports = function (statement, containingFile) {
|
|
152
|
-
var reexportArg = statement.expression.arguments[0];
|
|
153
|
-
var requireCall = (0, commonjs_umd_utils_1.isRequireCall)(reexportArg) ?
|
|
154
|
-
reexportArg :
|
|
155
|
-
ts.isIdentifier(reexportArg) ? (0, commonjs_umd_utils_1.findRequireCallReference)(reexportArg, this.checker) : null;
|
|
156
|
-
if (requireCall === null) {
|
|
157
|
-
return [];
|
|
158
|
-
}
|
|
159
|
-
var importPath = requireCall.arguments[0].text;
|
|
160
|
-
var importedFile = this.resolveModuleName(importPath, containingFile);
|
|
161
|
-
if (importedFile === undefined) {
|
|
162
|
-
return [];
|
|
163
|
-
}
|
|
164
|
-
var importedExports = this.getExportsOfModule(importedFile);
|
|
165
|
-
if (importedExports === null) {
|
|
166
|
-
return [];
|
|
167
|
-
}
|
|
168
|
-
var viaModule = (0, commonjs_umd_utils_1.isExternalImport)(importPath) ? importPath : null;
|
|
169
|
-
var reexports = [];
|
|
170
|
-
importedExports.forEach(function (declaration, name) {
|
|
171
|
-
if (viaModule !== null && declaration.viaModule === null) {
|
|
172
|
-
declaration = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, declaration), { viaModule: viaModule });
|
|
173
|
-
}
|
|
174
|
-
reexports.push({ name: name, declaration: declaration });
|
|
175
|
-
});
|
|
176
|
-
return reexports;
|
|
177
|
-
};
|
|
178
|
-
CommonJsReflectionHost.prototype.extractCommonJsDefinePropertyExportDeclaration = function (statement) {
|
|
179
|
-
var args = statement.expression.arguments;
|
|
180
|
-
var name = args[1].text;
|
|
181
|
-
var getterFnExpression = (0, commonjs_umd_utils_1.extractGetterFnExpression)(statement);
|
|
182
|
-
if (getterFnExpression === null) {
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
var declaration = this.getDeclarationOfExpression(getterFnExpression);
|
|
186
|
-
if (declaration !== null) {
|
|
187
|
-
return { name: name, declaration: declaration };
|
|
188
|
-
}
|
|
189
|
-
return {
|
|
190
|
-
name: name,
|
|
191
|
-
declaration: {
|
|
192
|
-
kind: 1 /* Inline */,
|
|
193
|
-
node: args[1],
|
|
194
|
-
implementation: getterFnExpression,
|
|
195
|
-
known: null,
|
|
196
|
-
viaModule: null,
|
|
197
|
-
},
|
|
198
|
-
};
|
|
199
|
-
};
|
|
200
|
-
CommonJsReflectionHost.prototype.findCommonJsImport = function (id) {
|
|
201
|
-
// Is `id` a namespaced property access, e.g. `Directive` in `core.Directive`?
|
|
202
|
-
// If so capture the symbol of the namespace, e.g. `core`.
|
|
203
|
-
var nsIdentifier = (0, commonjs_umd_utils_1.findNamespaceOfIdentifier)(id);
|
|
204
|
-
return nsIdentifier && (0, commonjs_umd_utils_1.findRequireCallReference)(nsIdentifier, this.checker);
|
|
205
|
-
};
|
|
206
|
-
/**
|
|
207
|
-
* Handle the case where the identifier represents a reference to a whole CommonJS
|
|
208
|
-
* module, i.e. the result of a call to `require(...)`.
|
|
209
|
-
*
|
|
210
|
-
* @param id the identifier whose declaration we are looking for.
|
|
211
|
-
* @returns a declaration if `id` refers to a CommonJS module, or `null` otherwise.
|
|
212
|
-
*/
|
|
213
|
-
CommonJsReflectionHost.prototype.getCommonJsModuleDeclaration = function (id) {
|
|
214
|
-
var requireCall = (0, commonjs_umd_utils_1.findRequireCallReference)(id, this.checker);
|
|
215
|
-
if (requireCall === null) {
|
|
216
|
-
return null;
|
|
217
|
-
}
|
|
218
|
-
var importPath = requireCall.arguments[0].text;
|
|
219
|
-
var module = this.resolveModuleName(importPath, id.getSourceFile());
|
|
220
|
-
if (module === undefined) {
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
var viaModule = (0, commonjs_umd_utils_1.isExternalImport)(importPath) ? importPath : null;
|
|
224
|
-
return { node: module, known: null, viaModule: viaModule, identity: null, kind: 0 /* Concrete */ };
|
|
225
|
-
};
|
|
226
|
-
/**
|
|
227
|
-
* If this is an IFE then try to grab the outer and inner classes otherwise fallback on the super
|
|
228
|
-
* class.
|
|
229
|
-
*/
|
|
230
|
-
CommonJsReflectionHost.prototype.getDeclarationOfExpression = function (expression) {
|
|
231
|
-
var inner = (0, esm2015_host_1.getInnerClassDeclaration)(expression);
|
|
232
|
-
if (inner !== null) {
|
|
233
|
-
var outer = (0, esm2015_host_1.getOuterNodeFromInnerDeclaration)(inner);
|
|
234
|
-
if (outer !== null && (0, commonjs_umd_utils_1.isExportsAssignment)(outer)) {
|
|
235
|
-
return {
|
|
236
|
-
kind: 1 /* Inline */,
|
|
237
|
-
node: outer.left,
|
|
238
|
-
implementation: inner,
|
|
239
|
-
known: null,
|
|
240
|
-
viaModule: null,
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return _super.prototype.getDeclarationOfExpression.call(this, expression);
|
|
245
|
-
};
|
|
246
|
-
CommonJsReflectionHost.prototype.resolveModuleName = function (moduleName, containingFile) {
|
|
247
|
-
if (this.compilerHost.resolveModuleNames) {
|
|
248
|
-
var moduleInfo = this.compilerHost.resolveModuleNames([moduleName], containingFile.fileName, undefined, undefined, this.program.getCompilerOptions())[0];
|
|
249
|
-
return moduleInfo && this.program.getSourceFile((0, file_system_1.absoluteFrom)(moduleInfo.resolvedFileName));
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
var moduleInfo = ts.resolveModuleName(moduleName, containingFile.fileName, this.program.getCompilerOptions(), this.compilerHost);
|
|
253
|
-
return moduleInfo.resolvedModule &&
|
|
254
|
-
this.program.getSourceFile((0, file_system_1.absoluteFrom)(moduleInfo.resolvedModule.resolvedFileName));
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
|
-
return CommonJsReflectionHost;
|
|
258
|
-
}(esm5_host_1.Esm5ReflectionHost));
|
|
259
|
-
exports.CommonJsReflectionHost = CommonJsReflectionHost;
|
|
260
|
-
});
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uanNfaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9uZ2NjL3NyYy9ob3N0L2NvbW1vbmpzX2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQywyRUFBNEQ7SUFJNUQsOERBQStDO0lBRS9DLDZGQUF5WDtJQUN6WCxpRkFBMEY7SUFDMUYsMkVBQStDO0lBRy9DO1FBQTRDLHVEQUFrQjtRQVU1RCxnQ0FBWSxNQUFjLEVBQUUsTUFBZSxFQUFFLEdBQWtCLEVBQUUsR0FBOEI7WUFBOUIsb0JBQUEsRUFBQSxVQUE4QjtZQUEvRixZQUNFLGtCQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxTQUdoQztZQWJTLHFCQUFlLEdBQUcsSUFBSSxrQkFBVSxDQUN0QyxVQUFBLEVBQUUsSUFBSSxPQUFBLEtBQUksQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUMsRUFBdkMsQ0FBdUMsQ0FBQyxDQUFDO1lBQ3pDLHlCQUFtQixHQUN6QixJQUFJLGtCQUFVLENBQ1YsVUFBQSxVQUFVLElBQUksT0FBQSxJQUFJLGtCQUFVLENBQ3hCLFVBQUEsRUFBRSxJQUFJLE9BQUEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQXRDLENBQXNDLENBQUM7aUJBQzVELE1BQU0sQ0FBQyxpQkFBUyxDQUFDLEVBRHRCLENBQ3NCLENBQUMsRUFGbkIsQ0FFbUIsQ0FBQyxDQUFDO1lBS3pDLEtBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUMzQixLQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENB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QixDQUFDO2lCQUNIO2FBQ0Y7WUFDRCxPQUFPLGlCQUFNLDBCQUEwQixZQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFTyxrREFBaUIsR0FBekIsVUFBMEIsVUFBa0IsRUFBRSxjQUE2QjtZQUV6RSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3hDLElBQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQ25ELENBQUMsVUFBVSxDQUFDLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBQSwwQkFBWSxFQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7YUFDNUY7aUJBQU07Z0JBQ0wsSUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUNuQyxVQUFVLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxVQUFVLENBQUMsY0FBYztvQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBQSwwQkFBWSxFQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2FBQzFGO1FBQ0gsQ0FBQztRQUNILDZCQUFDO0lBQUQsQ0FBQyxBQTFPRCxDQUE0Qyw4QkFBa0IsR0EwTzdEO0lBMU9ZLHdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHthYnNvbHV0ZUZyb219IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9maWxlX3N5c3RlbSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2xvZ2dpbmcnO1xuaW1wb3J0IHtEZWNsYXJhdGlvbiwgRGVjbGFyYXRpb25LaW5kLCBJbXBvcnR9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCB7QnVuZGxlUHJvZ3JhbX0gZnJvbSAnLi4vcGFja2FnZXMvYnVuZGxlX3Byb2dyYW0nO1xuaW1wb3J0IHtGYWN0b3J5TWFwLCBpc0RlZmluZWR9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHtEZWZpbmVQcm9wZXJ0eVJlZXhwb3J0U3RhdGVtZW50LCBFeHBvcnREZWNsYXJhdGlvbiwgRXhwb3J0c1N0YXRlbWVudCwgZXh0cmFjdEdldHRlckZuRXhwcmVzc2lvbiwgZmluZE5hbWVzcGFjZU9mSWRlbnRpZmllciwgZmluZFJlcXVpcmVDYWxsUmVmZXJlbmNlLCBpc0RlZmluZVByb3BlcnR5UmVleHBvcnRTdGF0ZW1lbnQsIGlzRXhwb3J0c0Fzc2lnbm1lbnQsIGlzRXhwb3J0c1N0YXRlbWVudCwgaXNFeHRlcm5hbEltcG9ydCwgaXNSZXF1aXJlQ2FsbCwgaXNXaWxkY2FyZFJlZXhwb3J0U3RhdGVtZW50LCBSZXF1aXJlQ2FsbCwgc2tpcEFsaWFzZXMsIFdpbGRjYXJkUmVleHBvcnRTdGF0ZW1lbnR9IGZyb20gJy4vY29tbW9uanNfdW1kX3V0aWxzJztcbmltcG9ydCB7Z2V0SW5uZXJDbGFzc0RlY2xhcmF0aW9uLCBnZXRPdXRlck5vZGVGcm9tSW5uZXJEZWNsYXJhdGlvbn0gZnJvbSAnLi9lc20yMDE1X2hvc3QnO1xuaW1wb3J0IHtFc201UmVmbGVjdGlvbkhvc3R9IGZyb20gJy4vZXNtNV9ob3N0JztcbmltcG9ydCB7TmdjY0NsYXNzU3ltYm9sfSBmcm9tICcuL25nY2NfaG9zdCc7XG5cbmV4cG9ydCBjbGFzcyBDb21tb25Kc1JlZmxlY3Rpb25Ib3N0IGV4dGVuZHMgRXNtNVJlZmxlY3Rpb25Ib3N0IHtcbiAgcHJvdGVjdGVkIGNvbW1vbkpzRXhwb3J0cyA9IG5ldyBGYWN0b3J5TWFwPHRzLlNvdXJjZUZpbGUsIE1hcDxzdHJpbmcsIERlY2xhcmF0aW9uPnxudWxsPihcbiAgICAgIHNmID0+IHRoaXMuY29tcHV0ZUV4cG9ydHNPZkNvbW1vbkpzTW9kdWxlKHNmKSk7XG4gIHByb3RlY3RlZCB0b3BMZXZlbEhlbHBlckNhbGxzID1cbiAgICAgIG5ldyBGYWN0b3J5TWFwPHN0cmluZywgRmFjdG9yeU1hcDx0cy5Tb3VyY2VGaWxlLCB0cy5DYWxsRXhwcmVzc2lvbltdPj4oXG4gICAgICAgICAgaGVscGVyTmFtZSA9PiBuZXcgRmFjdG9yeU1hcDx0cy5Tb3VyY2VGaWxlLCB0cy5DYWxsRXhwcmVzc2lvbltdPihcbiAgICAgICAgICAgICAgc2YgPT4gc2Yuc3RhdGVtZW50cy5tYXAoc3RtdCA9PiB0aGlzLmdldEhlbHBlckNhbGwoc3RtdCwgW2hlbHBlck5hbWVdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNEZWZpbmVkKSkpO1xuICBwcm90ZWN0ZWQgcHJvZ3JhbTogdHMuUHJvZ3JhbTtcbiAgcHJvdGVjdGVkIGNvbXBpbGVySG9zdDogdHMuQ29tcGlsZXJIb3N0O1xuICBjb25zdHJ1Y3Rvcihsb2dnZXI6IExvZ2dlciwgaXNDb3JlOiBib29sZWFuLCBzcmM6IEJ1bmRsZVByb2dyYW0sIGR0czogQnVuZGxlUHJvZ3JhbXxudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKGxvZ2dlciwgaXNDb3JlLCBzcmMsIGR0cyk7XG4gICAgdGhpcy5wcm9ncmFtID0gc3JjLnByb2dyYW07XG4gICAgdGhpcy5jb21waWxlckhvc3QgPSBzcmMuaG9zdDtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEltcG9ydE9mSWRlbnRpZmllcihpZDogdHMuSWRlbnRpZmllcik6IEltcG9ydHxudWxsIHtcbiAgICBjb25zdCByZXF1aXJlQ2FsbCA9IHRoaXMuZmluZENvbW1vbkpzSW1wb3J0KGlkKTtcbiAgICBpZiAocmVxdWlyZUNhbGwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4ge2Zyb206IHJlcXVpcmVDYWxsLmFyZ3VtZW50c1swXS50ZXh0LCBuYW1lOiBpZC50ZXh0fTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldERlY2xhcmF0aW9uT2ZJZGVudGlmaWVyKGlkOiB0cy5JZGVudGlmaWVyKTogRGVjbGFyYXRpb258bnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29tbW9uSnNNb2R1bGVEZWNsYXJhdGlvbihpZCkgfHwgc3VwZXIuZ2V0RGVjbGFyYXRpb25PZklkZW50aWZpZXIoaWQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0RXhwb3J0c09mTW9kdWxlKG1vZHVsZTogdHMuTm9kZSk6IE1hcDxzdHJpbmcsIERlY2xhcmF0aW9uPnxudWxsIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0RXhwb3J0c09mTW9kdWxlKG1vZHVsZSkgfHwgdGhpcy5jb21tb25Kc0V4cG9ydHMuZ2V0KG1vZHVsZS5nZXRTb3VyY2VGaWxlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBzdGF0ZW1lbnRzIHJlbGF0ZWQgdG8gdGhlIGdpdmVuIGNsYXNzIGZvciBjYWxscyB0byB0aGUgc3BlY2lmaWVkIGhlbHBlci5cbiAgICpcbiAgICogSW4gQ29tbW9uSlMgdGhlc2UgaGVscGVyIGNhbGxzIGNhbiBiZSBvdXRzaWRlIHRoZSBjbGFzcydzIElJRkUgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGVcbiAgICogc291cmNlIGZpbGUuIFNlYXJjaGluZyB0aGUgdG9wIGxldmVsIHN0YXRlbWVudHMgZm9yIGhlbHBlcnMgY2FuIGJlIGV4cGVuc2l2ZSwgc28gd2VcbiAgICogdHJ5IHRvIGdldCBoZWxwZXJzIGZyb20gdGhlIElJRkUgZmlyc3QgYW5kIG9ubHkgZmFsbCBiYWNrIG9uIHNlYXJjaGluZyB0aGUgdG9wIGxldmVsIGlmXG4gICAqIG5vIGhlbHBlcnMgYXJlIGZvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NTeW1ib2wgdGhlIGNsYXNzIHdob3NlIGhlbHBlciBjYWxscyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cbiAgICogQHBhcmFtIGhlbHBlck5hbWVzIHRoZSBuYW1lcyBvZiB0aGUgaGVscGVycyAoZS5nLiBgX19kZWNvcmF0ZWApIHdob3NlIGNhbGxzIHdlIGFyZSBpbnRlcmVzdGVkXG4gICAqIGluLlxuICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiBub2RlcyBvZiBjYWxscyB0byB0aGUgaGVscGVyIHdpdGggdGhlIGdpdmVuIG5hbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0SGVscGVyQ2FsbHNGb3JDbGFzcyhjbGFzc1N5bWJvbDogTmdjY0NsYXNzU3ltYm9sLCBoZWxwZXJOYW1lczogc3RyaW5nW10pOlxuICAgICAgdHMuQ2FsbEV4cHJlc3Npb25bXSB7XG4gICAgY29uc3QgZXNtNUhlbHBlckNhbGxzID0gc3VwZXIuZ2V0SGVscGVyQ2FsbHNGb3JDbGFzcyhjbGFzc1N5bWJvbCwgaGVscGVyTmFtZXMpO1xuICAgIGlmIChlc201SGVscGVyQ2FsbHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGVzbTVIZWxwZXJDYWxscztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc291cmNlRmlsZSA9IGNsYXNzU3ltYm9sLmRlY2xhcmF0aW9uLnZhbHVlRGVjbGFyYXRpb24uZ2V0U291cmNlRmlsZSgpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9wTGV2ZWxIZWxwZXJDYWxscyhzb3VyY2VGaWxlLCBoZWxwZXJOYW1lcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYWxsIHRoZSBoZWxwZXIgY2FsbHMgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIHNvdXJjZSBmaWxlLlxuICAgKlxuICAgKiBXZSBjYWNoZSB0aGUgaGVscGVyIGNhbGxzIHBlciBzb3VyY2UgZmlsZSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8ga2VlcCBwYXJzaW5nIHRoZSBjb2RlIGZvclxuICAgKiBlYWNoIGNsYXNzIGluIGEgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZUZpbGUgdGhlIHNvdXJjZSB3aG8gbWF5IGNvbnRhaW4gaGVscGVyIGNhbGxzLlxuICAgKiBAcGFyYW0gaGVscGVyTmFtZXMgdGhlIG5hbWVzIG9mIHRoZSBoZWxwZXJzIChlLmcuIGBfX2RlY29yYXRlYCkgd2hvc2UgY2FsbHMgd2UgYXJlIGludGVyZXN0ZWRcbiAgICogaW4uXG4gICAqIEByZXR1cm5zIGFuIGFycmF5IG9mIG5vZGVzIG9mIGNhbGxzIHRvIHRoZSBoZWxwZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0VG9wTGV2ZWxIZWxwZXJDYWxscyhzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBoZWxwZXJOYW1lczogc3RyaW5nW10pOlxuICAgICAgdHMuQ2FsbEV4cHJlc3Npb25bXSB7XG4gICAgY29uc3QgY2FsbHM6IHRzLkNhbGxFeHByZXNzaW9uW10gPSBbXTtcbiAgICBoZWxwZXJOYW1lcy5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgICAgY29uc3QgaGVscGVyQ2FsbHNNYXAgPSB0aGlzLnRvcExldmVsSGVscGVyQ2FsbHMuZ2V0KGhlbHBlck5hbWUpO1xuICAgICAgY2FsbHMucHVzaCguLi5oZWxwZXJDYWxsc01hcC5nZXQoc291cmNlRmlsZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBjYWxscztcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUV4cG9ydHNPZkNvbW1vbkpzTW9kdWxlKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpOiBNYXA8c3RyaW5nLCBEZWNsYXJhdGlvbj4ge1xuICAgIGNvbnN0IG1vZHVsZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBEZWNsYXJhdGlvbj4oKTtcbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLmdldE1vZHVsZVN0YXRlbWVudHMoc291cmNlRmlsZSkpIHtcbiAgICAgIGlmIChpc0V4cG9ydHNTdGF0ZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICBjb25zdCBleHBvcnREZWNsYXJhdGlvbiA9IHRoaXMuZXh0cmFjdEJhc2ljQ29tbW9uSnNFeHBvcnREZWNsYXJhdGlvbihzdGF0ZW1lbnQpO1xuICAgICAgICBtb2R1bGVNYXAuc2V0KGV4cG9ydERlY2xhcmF0aW9uLm5hbWUsIGV4cG9ydERlY2xhcmF0aW9uLmRlY2xhcmF0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNXaWxkY2FyZFJlZXhwb3J0U3RhdGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgY29uc3QgcmVleHBvcnRzID0gdGhpcy5leHRyYWN0Q29tbW9uSnNXaWxkY2FyZFJlZXhwb3J0cyhzdGF0ZW1lbnQsIHNvdXJjZUZpbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IHJlZXhwb3J0IG9mIHJlZXhwb3J0cykge1xuICAgICAgICAgIG1vZHVsZU1hcC5zZXQocmVleHBvcnQubmFtZSwgcmVleHBvcnQuZGVjbGFyYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmaW5lUHJvcGVydHlSZWV4cG9ydFN0YXRlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydERlY2xhcmF0aW9uID0gdGhpcy5leHRyYWN0Q29tbW9uSnNEZWZpbmVQcm9wZXJ0eUV4cG9ydERlY2xhcmF0aW9uKHN0YXRlbWVudCk7XG4gICAgICAgIGlmIChleHBvcnREZWNsYXJhdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgIG1vZHVsZU1hcC5zZXQoZXhwb3J0RGVjbGFyYXRpb24ubmFtZSwgZXhwb3J0RGVjbGFyYXRpb24uZGVjbGFyYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2R1bGVNYXA7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RCYXNpY0NvbW1vbkpzRXhwb3J0RGVjbGFyYXRpb24oc3RhdGVtZW50OiBFeHBvcnRzU3RhdGVtZW50KTogRXhwb3J0RGVjbGFyYXRpb24ge1xuICAgIGNvbnN0IGV4cG9ydEV4cHJlc3Npb24gPSBza2lwQWxpYXNlcyhzdGF0ZW1lbnQuZXhwcmVzc2lvbi5yaWdodCk7XG4gICAgY29uc3Qgbm9kZSA9IHN0YXRlbWVudC5leHByZXNzaW9uLmxlZnQ7XG4gICAgY29uc3QgZGVjbGFyYXRpb24gPSB0aGlzLmdldERlY2xhcmF0aW9uT2ZFeHByZXNzaW9uKGV4cG9ydEV4cHJlc3Npb24pID8/IHtcbiAgICAgIGtpbmQ6IERlY2xhcmF0aW9uS2luZC5JbmxpbmUsXG4gICAgICBub2RlLFxuICAgICAgaW1wbGVtZW50YXRpb246IGV4cG9ydEV4cHJlc3Npb24sXG4gICAgICBrbm93bjogbnVsbCxcbiAgICAgIHZpYU1vZHVsZTogbnVsbCxcbiAgICB9O1xuICAgIHJldHVybiB7bmFtZTogbm9kZS5uYW1lLnRleHQsIGRlY2xhcmF0aW9ufTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdENvbW1vbkpzV2lsZGNhcmRSZWV4cG9ydHMoXG4gICAgICBzdGF0ZW1lbnQ6IFdpbGRjYXJkUmVleHBvcnRTdGF0ZW1lbnQsIGNvbnRhaW5pbmdGaWxlOiB0cy5Tb3VyY2VGaWxlKTogRXhwb3J0RGVjbGFyYXRpb25bXSB7XG4gICAgY29uc3QgcmVleHBvcnRBcmcgPSBzdGF0ZW1lbnQuZXhwcmVzc2lvbi5hcmd1bWVudHNbMF07XG5cbiAgICBjb25zdCByZXF1aXJlQ2FsbCA9IGlzUmVxdWlyZUNhbGwocmVleHBvcnRBcmcpID9cbiAgICAgICAgcmVleHBvcnRBcmcgOlxuICAgICAgICB0cy5pc0lkZW50aWZpZXIocmVleHBvcnRBcmcpID8gZmluZFJlcXVpcmVDYWxsUmVmZXJlbmNlKHJlZXhwb3J0QXJnLCB0aGlzLmNoZWNrZXIpIDogbnVsbDtcbiAgICBpZiAocmVxdWlyZUNhbGwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRQYXRoID0gcmVxdWlyZUNhbGwuYXJndW1lbnRzWzBdLnRleHQ7XG4gICAgY29uc3QgaW1wb3J0ZWRGaWxlID0gdGhpcy5yZXNvbHZlTW9kdWxlTmFtZShpbXBvcnRQYXRoLCBjb250YWluaW5nRmlsZSk7XG4gICAgaWYgKGltcG9ydGVkRmlsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0ZWRFeHBvcnRzID0gdGhpcy5nZXRFeHBvcnRzT2ZNb2R1bGUoaW1wb3J0ZWRGaWxlKTtcbiAgICBpZiAoaW1wb3J0ZWRFeHBvcnRzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgdmlhTW9kdWxlID0gaXNFeHRlcm5hbEltcG9ydChpbXBvcnRQYXRoKSA/IGltcG9ydFBhdGggOiBudWxsO1xuICAgIGNvbnN0IHJlZXhwb3J0czogRXhwb3J0RGVjbGFyYXRpb25bXSA9IFtdO1xuICAgIGltcG9ydGVkRXhwb3J0cy5mb3JFYWNoKChkZWNsYXJhdGlvbiwgbmFtZSkgPT4ge1xuICAgICAgaWYgKHZpYU1vZHVsZSAhPT0gbnVsbCAmJiBkZWNsYXJhdGlvbi52aWFNb2R1bGUgPT09IG51bGwpIHtcbiAgICAgICAgZGVjbGFyYXRpb24gPSB7Li4uZGVjbGFyYXRpb24sIHZpYU1vZHVsZX07XG4gICAgICB9XG4gICAgICByZWV4cG9ydHMucHVzaCh7bmFtZSwgZGVjbGFyYXRpb259KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVleHBvcnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0Q29tbW9uSnNEZWZpbmVQcm9wZXJ0eUV4cG9ydERlY2xhcmF0aW9uKFxuICAgICAgc3RhdGVtZW50OiBEZWZpbmVQcm9wZXJ0eVJlZXhwb3J0U3RhdGVtZW50KTogRXhwb3J0RGVjbGFyYXRpb258bnVsbCB7XG4gICAgY29uc3QgYXJncyA9IHN0YXRlbWVudC5leHByZXNzaW9uLmFyZ3VtZW50cztcbiAgICBjb25zdCBuYW1lID0gYXJnc1sxXS50ZXh0O1xuICAgIGNvbnN0IGdldHRlckZuRXhwcmVzc2lvbiA9IGV4dHJhY3RHZXR0ZXJGbkV4cHJlc3Npb24oc3RhdGVtZW50KTtcbiAgICBpZiAoZ2V0dGVyRm5FeHByZXNzaW9uID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHRoaXMuZ2V0RGVjbGFyYXRpb25PZkV4cHJlc3Npb24oZ2V0dGVyRm5FeHByZXNzaW9uKTtcbiAgICBpZiAoZGVjbGFyYXRpb24gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7bmFtZSwgZGVjbGFyYXRpb259O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZGVjbGFyYXRpb246IHtcbiAgICAgICAga2luZDogRGVjbGFyYXRpb25LaW5kLklubGluZSxcbiAgICAgICAgbm9kZTogYXJnc1sxXSxcbiAgICAgICAgaW1wbGVtZW50YXRpb246IGdldHRlckZuRXhwcmVzc2lvbixcbiAgICAgICAga25vd246IG51bGwsXG4gICAgICAgIHZpYU1vZHVsZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZENvbW1vbkpzSW1wb3J0KGlkOiB0cy5JZGVudGlmaWVyKTogUmVxdWlyZUNhbGx8bnVsbCB7XG4gICAgLy8gSXMgYGlkYCBhIG5hbWVzcGFjZWQgcHJvcGVydHkgYWNjZXNzLCBlLmcuIGBEaXJlY3RpdmVgIGluIGBjb3JlLkRpcmVjdGl2ZWA/XG4gICAgLy8gSWYgc28gY2FwdHVyZSB0aGUgc3ltYm9sIG9mIHRoZSBuYW1lc3BhY2UsIGUuZy4gYGNvcmVgLlxuICAgIGNvbnN0IG5zSWRlbnRpZmllciA9IGZpbmROYW1lc3BhY2VPZklkZW50aWZpZXIoaWQpO1xuICAgIHJldHVybiBuc0lkZW50aWZpZXIgJiYgZmluZFJlcXVpcmVDYWxsUmVmZXJlbmNlKG5zSWRlbnRpZmllciwgdGhpcy5jaGVja2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGlkZW50aWZpZXIgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byBhIHdob2xlIENvbW1vbkpTXG4gICAqIG1vZHVsZSwgaS5lLiB0aGUgcmVzdWx0IG9mIGEgY2FsbCB0byBgcmVxdWlyZSguLi4pYC5cbiAgICpcbiAgICogQHBhcmFtIGlkIHRoZSBpZGVudGlmaWVyIHdob3NlIGRlY2xhcmF0aW9uIHdlIGFyZSBsb29raW5nIGZvci5cbiAgICogQHJldHVybnMgYSBkZWNsYXJhdGlvbiBpZiBgaWRgIHJlZmVycyB0byBhIENvbW1vbkpTIG1vZHVsZSwgb3IgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0Q29tbW9uSnNNb2R1bGVEZWNsYXJhdGlvbihpZDogdHMuSWRlbnRpZmllcik6IERlY2xhcmF0aW9ufG51bGwge1xuICAgIGNvbnN0IHJlcXVpcmVDYWxsID0gZmluZFJlcXVpcmVDYWxsUmVmZXJlbmNlKGlkLCB0aGlzLmNoZWNrZXIpO1xuICAgIGlmIChyZXF1aXJlQ2FsbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGltcG9ydFBhdGggPSByZXF1aXJlQ2FsbC5hcmd1bWVudHNbMF0udGV4dDtcbiAgICBjb25zdCBtb2R1bGUgPSB0aGlzLnJlc29sdmVNb2R1bGVOYW1lKGltcG9ydFBhdGgsIGlkLmdldFNvdXJjZUZpbGUoKSk7XG4gICAgaWYgKG1vZHVsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdmlhTW9kdWxlID0gaXNFeHRlcm5hbEltcG9ydChpbXBvcnRQYXRoKSA/IGltcG9ydFBhdGggOiBudWxsO1xuICAgIHJldHVybiB7bm9kZTogbW9kdWxlLCBrbm93bjogbnVsbCwgdmlhTW9kdWxlLCBpZGVudGl0eTogbnVsbCwga2luZDogRGVjbGFyYXRpb25LaW5kLkNvbmNyZXRlfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGFuIElGRSB0aGVuIHRyeSB0byBncmFiIHRoZSBvdXRlciBhbmQgaW5uZXIgY2xhc3NlcyBvdGhlcndpc2UgZmFsbGJhY2sgb24gdGhlIHN1cGVyXG4gICAqIGNsYXNzLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldERlY2xhcmF0aW9uT2ZFeHByZXNzaW9uKGV4cHJlc3Npb246IHRzLkV4cHJlc3Npb24pOiBEZWNsYXJhdGlvbnxudWxsIHtcbiAgICBjb25zdCBpbm5lciA9IGdldElubmVyQ2xhc3NEZWNsYXJhdGlvbihleHByZXNzaW9uKTtcbiAgICBpZiAoaW5uZXIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG91dGVyID0gZ2V0T3V0ZXJOb2RlRnJvbUlubmVyRGVjbGFyYXRpb24oaW5uZXIpO1xuICAgICAgaWYgKG91dGVyICE9PSBudWxsICYmIGlzRXhwb3J0c0Fzc2lnbm1lbnQob3V0ZXIpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2luZDogRGVjbGFyYXRpb25LaW5kLklubGluZSxcbiAgICAgICAgICBub2RlOiBvdXRlci5sZWZ0LFxuICAgICAgICAgIGltcGxlbWVudGF0aW9uOiBpbm5lcixcbiAgICAgICAgICBrbm93bjogbnVsbCxcbiAgICAgICAgICB2aWFNb2R1bGU6IG51bGwsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5nZXREZWNsYXJhdGlvbk9mRXhwcmVzc2lvbihleHByZXNzaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1vZHVsZU5hbWUobW9kdWxlTmFtZTogc3RyaW5nLCBjb250YWluaW5nRmlsZTogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGVcbiAgICAgIHx1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmNvbXBpbGVySG9zdC5yZXNvbHZlTW9kdWxlTmFtZXMpIHtcbiAgICAgIGNvbnN0IG1vZHVsZUluZm8gPSB0aGlzLmNvbXBpbGVySG9zdC5yZXNvbHZlTW9kdWxlTmFtZXMoXG4gICAgICAgICAgW21vZHVsZU5hbWVdLCBjb250YWluaW5nRmlsZS5maWxlTmFtZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsXG4gICAgICAgICAgdGhpcy5wcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpKVswXTtcbiAgICAgIHJldHVybiBtb2R1bGVJbmZvICYmIHRoaXMucHJvZ3JhbS5nZXRTb3VyY2VGaWxlKGFic29sdXRlRnJvbShtb2R1bGVJbmZvLnJlc29sdmVkRmlsZU5hbWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbW9kdWxlSW5mbyA9IHRzLnJlc29sdmVNb2R1bGVOYW1lKFxuICAgICAgICAgIG1vZHVsZU5hbWUsIGNvbnRhaW5pbmdGaWxlLmZpbGVOYW1lLCB0aGlzLnByb2dyYW0uZ2V0Q29tcGlsZXJPcHRpb25zKCksXG4gICAgICAgICAgdGhpcy5jb21waWxlckhvc3QpO1xuICAgICAgcmV0dXJuIG1vZHVsZUluZm8ucmVzb2x2ZWRNb2R1bGUgJiZcbiAgICAgICAgICB0aGlzLnByb2dyYW0uZ2V0U291cmNlRmlsZShhYnNvbHV0ZUZyb20obW9kdWxlSW5mby5yZXNvbHZlZE1vZHVsZS5yZXNvbHZlZEZpbGVOYW1lKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,210 +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
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/ngcc/src/host/commonjs_umd_utils", ["require", "exports", "typescript", "@angular/compiler-cli/src/ngtsc/util/src/typescript"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.skipAliases = exports.isExportsStatement = exports.isExportsAssignment = exports.isExportsDeclaration = exports.isExternalImport = exports.isRequireCall = exports.extractGetterFnExpression = exports.isDefinePropertyReexportStatement = exports.isWildcardReexportStatement = exports.findRequireCallReference = exports.findNamespaceOfIdentifier = void 0;
|
|
20
|
-
var ts = require("typescript");
|
|
21
|
-
var typescript_1 = require("@angular/compiler-cli/src/ngtsc/util/src/typescript");
|
|
22
|
-
/**
|
|
23
|
-
* Return the "namespace" of the specified `ts.Identifier` if the identifier is the RHS of a
|
|
24
|
-
* property access expression, i.e. an expression of the form `<namespace>.<id>` (in which case a
|
|
25
|
-
* `ts.Identifier` corresponding to `<namespace>` will be returned). Otherwise return `null`.
|
|
26
|
-
*/
|
|
27
|
-
function findNamespaceOfIdentifier(id) {
|
|
28
|
-
return id.parent && ts.isPropertyAccessExpression(id.parent) && id.parent.name === id &&
|
|
29
|
-
ts.isIdentifier(id.parent.expression) ?
|
|
30
|
-
id.parent.expression :
|
|
31
|
-
null;
|
|
32
|
-
}
|
|
33
|
-
exports.findNamespaceOfIdentifier = findNamespaceOfIdentifier;
|
|
34
|
-
/**
|
|
35
|
-
* Return the `RequireCall` that is used to initialize the specified `ts.Identifier`, if the
|
|
36
|
-
* specified indentifier was indeed initialized with a require call in a declaration of the form:
|
|
37
|
-
* `var <id> = require('...')`
|
|
38
|
-
*/
|
|
39
|
-
function findRequireCallReference(id, checker) {
|
|
40
|
-
var _a, _b;
|
|
41
|
-
var symbol = checker.getSymbolAtLocation(id) || null;
|
|
42
|
-
var declaration = (_a = symbol === null || symbol === void 0 ? void 0 : symbol.valueDeclaration) !== null && _a !== void 0 ? _a : (_b = symbol === null || symbol === void 0 ? void 0 : symbol.declarations) === null || _b === void 0 ? void 0 : _b[0];
|
|
43
|
-
var initializer = declaration && ts.isVariableDeclaration(declaration) && declaration.initializer || null;
|
|
44
|
-
return initializer && isRequireCall(initializer) ? initializer : null;
|
|
45
|
-
}
|
|
46
|
-
exports.findRequireCallReference = findRequireCallReference;
|
|
47
|
-
/**
|
|
48
|
-
* Check whether the specified `ts.Statement` is a wildcard re-export statement.
|
|
49
|
-
* I.E. an expression statement of one of the following forms:
|
|
50
|
-
* - `__export(<foo>)`
|
|
51
|
-
* - `__exportStar(<foo>)`
|
|
52
|
-
* - `tslib.__export(<foo>, exports)`
|
|
53
|
-
* - `tslib.__exportStar(<foo>, exports)`
|
|
54
|
-
*/
|
|
55
|
-
function isWildcardReexportStatement(stmt) {
|
|
56
|
-
// Ensure it is a call expression statement.
|
|
57
|
-
if (!ts.isExpressionStatement(stmt) || !ts.isCallExpression(stmt.expression)) {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
// Get the called function identifier.
|
|
61
|
-
// NOTE: Currently, it seems that `__export()` is used when emitting helpers inline and
|
|
62
|
-
// `__exportStar()` when importing them
|
|
63
|
-
// ([source](https://github.com/microsoft/TypeScript/blob/d7c83f023/src/compiler/transformers/module/module.ts#L1796-L1797)).
|
|
64
|
-
// So, theoretically, we only care about the formats `__export(<foo>)` and
|
|
65
|
-
// `tslib.__exportStar(<foo>, exports)`.
|
|
66
|
-
// The current implementation accepts the other two formats (`__exportStar(...)` and
|
|
67
|
-
// `tslib.__export(...)`) as well to be more future-proof (given that it is unlikely that
|
|
68
|
-
// they will introduce false positives).
|
|
69
|
-
var fnName = null;
|
|
70
|
-
if (ts.isIdentifier(stmt.expression.expression)) {
|
|
71
|
-
// Statement of the form `someFn(...)`.
|
|
72
|
-
fnName = stmt.expression.expression.text;
|
|
73
|
-
}
|
|
74
|
-
else if (ts.isPropertyAccessExpression(stmt.expression.expression) &&
|
|
75
|
-
ts.isIdentifier(stmt.expression.expression.name)) {
|
|
76
|
-
// Statement of the form `tslib.someFn(...)`.
|
|
77
|
-
fnName = stmt.expression.expression.name.text;
|
|
78
|
-
}
|
|
79
|
-
// Ensure the called function is either `__export()` or `__exportStar()`.
|
|
80
|
-
if ((fnName !== '__export') && (fnName !== '__exportStar')) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
// Ensure there is at least one argument.
|
|
84
|
-
// (The first argument is the exported thing and there will be a second `exports` argument in the
|
|
85
|
-
// case of imported helpers).
|
|
86
|
-
return stmt.expression.arguments.length > 0;
|
|
87
|
-
}
|
|
88
|
-
exports.isWildcardReexportStatement = isWildcardReexportStatement;
|
|
89
|
-
/**
|
|
90
|
-
* Check whether the statement is a re-export of the form:
|
|
91
|
-
*
|
|
92
|
-
* ```
|
|
93
|
-
* Object.defineProperty(exports, "<export-name>",
|
|
94
|
-
* { enumerable: true, get: function () { return <import-name>; } });
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
function isDefinePropertyReexportStatement(stmt) {
|
|
98
|
-
if (!ts.isExpressionStatement(stmt) || !ts.isCallExpression(stmt.expression)) {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
// Check for Object.defineProperty
|
|
102
|
-
if (!ts.isPropertyAccessExpression(stmt.expression.expression) ||
|
|
103
|
-
!ts.isIdentifier(stmt.expression.expression.expression) ||
|
|
104
|
-
stmt.expression.expression.expression.text !== 'Object' ||
|
|
105
|
-
!ts.isIdentifier(stmt.expression.expression.name) ||
|
|
106
|
-
stmt.expression.expression.name.text !== 'defineProperty') {
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
var args = stmt.expression.arguments;
|
|
110
|
-
if (args.length !== 3) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
var exportsObject = args[0];
|
|
114
|
-
if (!ts.isIdentifier(exportsObject) || exportsObject.text !== 'exports') {
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
var propertyKey = args[1];
|
|
118
|
-
if (!ts.isStringLiteral(propertyKey)) {
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
var propertyDescriptor = args[2];
|
|
122
|
-
if (!ts.isObjectLiteralExpression(propertyDescriptor)) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
return (propertyDescriptor.properties.some(function (prop) { return prop.name !== undefined && ts.isIdentifier(prop.name) && prop.name.text === 'get'; }));
|
|
126
|
-
}
|
|
127
|
-
exports.isDefinePropertyReexportStatement = isDefinePropertyReexportStatement;
|
|
128
|
-
/**
|
|
129
|
-
* Extract the "value" of the getter in a `defineProperty` statement.
|
|
130
|
-
*
|
|
131
|
-
* This will return the `ts.Expression` value of a single `return` statement in the `get` method
|
|
132
|
-
* of the property definition object, or `null` if that is not possible.
|
|
133
|
-
*/
|
|
134
|
-
function extractGetterFnExpression(statement) {
|
|
135
|
-
var args = statement.expression.arguments;
|
|
136
|
-
var getterFn = args[2].properties.find(function (prop) { return prop.name !== undefined && ts.isIdentifier(prop.name) && prop.name.text === 'get'; });
|
|
137
|
-
if (getterFn === undefined || !ts.isPropertyAssignment(getterFn) ||
|
|
138
|
-
!ts.isFunctionExpression(getterFn.initializer)) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
var returnStatement = getterFn.initializer.body.statements[0];
|
|
142
|
-
if (!ts.isReturnStatement(returnStatement) || returnStatement.expression === undefined) {
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
return returnStatement.expression;
|
|
146
|
-
}
|
|
147
|
-
exports.extractGetterFnExpression = extractGetterFnExpression;
|
|
148
|
-
/**
|
|
149
|
-
* Check whether the specified `ts.Node` represents a `require()` call, i.e. an call expression of
|
|
150
|
-
* the form: `require('<foo>')`
|
|
151
|
-
*/
|
|
152
|
-
function isRequireCall(node) {
|
|
153
|
-
return ts.isCallExpression(node) && ts.isIdentifier(node.expression) &&
|
|
154
|
-
node.expression.text === 'require' && node.arguments.length === 1 &&
|
|
155
|
-
ts.isStringLiteral(node.arguments[0]);
|
|
156
|
-
}
|
|
157
|
-
exports.isRequireCall = isRequireCall;
|
|
158
|
-
/**
|
|
159
|
-
* Check whether the specified `path` is an "external" import.
|
|
160
|
-
* In other words, that it comes from a entry-point outside the current one.
|
|
161
|
-
*/
|
|
162
|
-
function isExternalImport(path) {
|
|
163
|
-
return !/^\.\.?(\/|$)/.test(path);
|
|
164
|
-
}
|
|
165
|
-
exports.isExternalImport = isExternalImport;
|
|
166
|
-
/**
|
|
167
|
-
* Check whether the specified `node` is a property access expression of the form
|
|
168
|
-
* `exports.<foo>`.
|
|
169
|
-
*/
|
|
170
|
-
function isExportsDeclaration(expr) {
|
|
171
|
-
return expr.parent && isExportsAssignment(expr.parent);
|
|
172
|
-
}
|
|
173
|
-
exports.isExportsDeclaration = isExportsDeclaration;
|
|
174
|
-
/**
|
|
175
|
-
* Check whether the specified `node` is an assignment expression of the form
|
|
176
|
-
* `exports.<foo> = <bar>`.
|
|
177
|
-
*/
|
|
178
|
-
function isExportsAssignment(expr) {
|
|
179
|
-
return (0, typescript_1.isAssignment)(expr) && ts.isPropertyAccessExpression(expr.left) &&
|
|
180
|
-
ts.isIdentifier(expr.left.expression) && expr.left.expression.text === 'exports' &&
|
|
181
|
-
ts.isIdentifier(expr.left.name);
|
|
182
|
-
}
|
|
183
|
-
exports.isExportsAssignment = isExportsAssignment;
|
|
184
|
-
/**
|
|
185
|
-
* Check whether the specified `stmt` is an expression statement of the form
|
|
186
|
-
* `exports.<foo> = <bar>;`.
|
|
187
|
-
*/
|
|
188
|
-
function isExportsStatement(stmt) {
|
|
189
|
-
return ts.isExpressionStatement(stmt) && isExportsAssignment(stmt.expression);
|
|
190
|
-
}
|
|
191
|
-
exports.isExportsStatement = isExportsStatement;
|
|
192
|
-
/**
|
|
193
|
-
* Find the far right hand side of a sequence of aliased assignements of the form
|
|
194
|
-
*
|
|
195
|
-
* ```
|
|
196
|
-
* exports.MyClass = alias1 = alias2 = <<declaration>>
|
|
197
|
-
* ```
|
|
198
|
-
*
|
|
199
|
-
* @param node the expression to parse
|
|
200
|
-
* @returns the original `node` or the far right expression of a series of assignments.
|
|
201
|
-
*/
|
|
202
|
-
function skipAliases(node) {
|
|
203
|
-
while ((0, typescript_1.isAssignment)(node)) {
|
|
204
|
-
node = node.right;
|
|
205
|
-
}
|
|
206
|
-
return node;
|
|
207
|
-
}
|
|
208
|
-
exports.skipAliases = skipAliases;
|
|
209
|
-
});
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uanNfdW1kX3V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2hvc3QvY29tbW9uanNfdW1kX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQyxrRkFBb0U7SUFrRHBFOzs7O09BSUc7SUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxFQUFpQjtRQUN6RCxPQUFPLEVBQUUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO1lBQzdFLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzNDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUxELDhEQUtDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQWdCLHdCQUF3QixDQUFDLEVBQWlCLEVBQUUsT0FBdUI7O1FBRWpGLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBTSxXQUFXLEdBQUcsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZ0JBQWdCLG1DQUFJLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFlBQVksMENBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBTSxXQUFXLEdBQ2IsV0FBVyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztRQUM1RixPQUFPLFdBQVcs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UUFDL0MsT0FBTyxJQUFBLHlCQUFZLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDakUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ2hGLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBSkQsa0RBSUM7SUFTRDs7O09BR0c7SUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxJQUFhO1FBQzlDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRkQsZ0RBRUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxTQUFnQixXQUFXLENBQUMsSUFBbUI7UUFDN0MsT0FBTyxJQUFBLHlCQUFZLEVBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFMRCxrQ0FLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7RGVjbGFyYXRpb259IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCB7aXNBc3NpZ25tZW50fSBmcm9tICcuLi8uLi8uLi9zcmMvbmd0c2MvdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0RGVjbGFyYXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvbjtcbn1cblxuLyoqXG4gKiBBIENvbW1vbkpTIG9yIFVNRCB3aWxkY2FyZCByZS1leHBvcnQgc3RhdGVtZW50LlxuICpcbiAqIFRoZSBDb21tb25KUyBvciBVTUQgdmVyc2lvbiBvZiBgZXhwb3J0ICogZnJvbSAnYmxhaCc7YC5cbiAqXG4gKiBUaGVzZSBzdGF0ZW1lbnRzIGNhbiBoYXZlIHNldmVyYWwgZm9ybXMgKGRlcGVuZGluZywgZm9yIGV4YW1wbGUsIG9uIHdoZXRoZXJcbiAqIHRoZSBUeXBlU2NyaXB0IGhlbHBlcnMgYXJlIGltcG9ydGVkIG9yIGVtaXR0ZWQgaW5saW5lKS4gVGhlIGV4cHJlc3Npb24gY2FuIGhhdmUgb25lIG9mIHRoZVxuICogZm9sbG93aW5nIGZvcm1zOlxuICogLSBgX19leHBvcnQoZmlyc3RBcmcpYFxuICogLSBgX19leHBvcnRTdGFyKGZpcnN0QXJnKWBcbiAqIC0gYHRzbGliLl9fZXhwb3J0KGZpcnN0QXJnLCBleHBvcnRzKWBcbiAqIC0gYHRzbGliLl9fZXhwb3J0U3RhcihmaXJzdEFyZywgZXhwb3J0cylgXG4gKlxuICogSW4gYWxsIGNhc2VzLCB3ZSBvbmx5IGNhcmUgYWJvdXQgYGZpcnN0QXJnYCwgd2hpY2ggaXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSByZS1leHBvcnQgY2FsbFxuICogZXhwcmVzc2lvbiBhbmQgY2FuIGJlIGVpdGhlciBhIGByZXF1aXJlKCcuLi4nKWAgY2FsbCBvciBhbiBpZGVudGlmaWVyIChpbml0aWFsaXplZCB2aWEgYVxuICogYHJlcXVpcmUoJy4uLicpYCBjYWxsKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaWxkY2FyZFJlZXhwb3J0U3RhdGVtZW50IGV4dGVuZHMgdHMuRXhwcmVzc2lvblN0YXRlbWVudCB7XG4gIGV4cHJlc3Npb246IHRzLkNhbGxFeHByZXNzaW9uO1xufVxuXG4vKipcbiAqIEEgQ29tbW9uSlMgb3IgVU1EIHJlLWV4cG9ydCBzdGF0ZW1lbnQgdXNpbmcgYW4gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgpYCBjYWxsLlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgXG4gKiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCI8ZXhwb3J0ZWQtaWQ+XCIsXG4gKiAgICAgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDxpbXBvcnRlZC1pZD47IH0gfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbmVQcm9wZXJ0eVJlZXhwb3J0U3RhdGVtZW50IGV4dGVuZHMgdHMuRXhwcmVzc2lvblN0YXRlbWVudCB7XG4gIGV4cHJlc3Npb246IHRzLkNhbGxFeHByZXNzaW9uJlxuICAgICAge2FyZ3VtZW50czogW3RzLklkZW50aWZpZXIsIHRzLlN0cmluZ0xpdGVyYWwsIHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uXX07XG59XG5cbi8qKlxuICogQSBjYWxsIGV4cHJlc3Npb24gdGhhdCBoYXMgYSBzdHJpbmcgbGl0ZXJhbCBmb3IgaXRzIGZpcnN0IGFyZ3VtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVpcmVDYWxsIGV4dGVuZHMgdHMuQ2FsbEV4cHJlc3Npb24ge1xuICBhcmd1bWVudHM6IHRzLkNhbGxFeHByZXNzaW9uWydhcmd1bWVudHMnXSZbdHMuU3RyaW5nTGl0ZXJhbF07XG59XG5cblxuLyoqXG4gKiBSZXR1cm4gdGhlIFwibmFtZXNwYWNlXCIgb2YgdGhlIHNwZWNpZmllZCBgdHMuSWRlbnRpZmllcmAgaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIFJIUyBvZiBhXG4gKiBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbiwgaS5lLiBhbiBleHByZXNzaW9uIG9mIHRoZSBmb3JtIGA8bmFtZXNwYWNlPi48aWQ+YCAoaW4gd2hpY2ggY2FzZSBhXG4gKiBgdHMuSWRlbnRpZmllcmAgY29ycmVzcG9uZGluZyB0byBgPG5hbWVzcGFjZT5gIHdpbGwgYmUgcmV0dXJuZWQpLiBPdGhlcndpc2UgcmV0dXJuIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmROYW1lc3BhY2VPZklkZW50aWZpZXIoaWQ6IHRzLklkZW50aWZpZXIpOiB0cy5JZGVudGlmaWVyfG51bGwge1xuICByZXR1cm4gaWQucGFyZW50ICYmIHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGlkLnBhcmVudCkgJiYgaWQucGFyZW50Lm5hbWUgPT09IGlkICYmXG4gICAgICAgICAgdHMuaXNJZGVudGlmaWVyKGlkLnBhcmVudC5leHByZXNzaW9uKSA/XG4gICAgICBpZC5wYXJlbnQuZXhwcmVzc2lvbiA6XG4gICAgICBudWxsO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgYFJlcXVpcmVDYWxsYCB0aGF0IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3BlY2lmaWVkIGB0cy5JZGVudGlmaWVyYCwgaWYgdGhlXG4gKiBzcGVjaWZpZWQgaW5kZW50aWZpZXIgd2FzIGluZGVlZCBpbml0aWFsaXplZCB3aXRoIGEgcmVxdWlyZSBjYWxsIGluIGEgZGVjbGFyYXRpb24gb2YgdGhlIGZvcm06XG4gKiBgdmFyIDxpZD4gPSByZXF1aXJlKCcuLi4nKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRSZXF1aXJlQ2FsbFJlZmVyZW5jZShpZDogdHMuSWRlbnRpZmllciwgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiBSZXF1aXJlQ2FsbHxcbiAgICBudWxsIHtcbiAgY29uc3Qgc3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKGlkKSB8fCBudWxsO1xuICBjb25zdCBkZWNsYXJhdGlvbiA9IHN5bWJvbD8udmFsdWVEZWNsYXJhdGlvbiA/PyBzeW1ib2w/LmRlY2xhcmF0aW9ucz8uWzBdO1xuICBjb25zdCBpbml0aWFsaXplciA9XG4gICAgICBkZWNsYXJhdGlvbiAmJiB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb24pICYmIGRlY2xhcmF0aW9uLmluaXRpYWxpemVyIHx8IG51bGw7XG4gIHJldHVybiBpbml0aWFsaXplciAmJiBpc1JlcXVpcmVDYWxsKGluaXRpYWxpemVyKSA/IGluaXRpYWxpemVyIDogbnVsbDtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgYHRzLlN0YXRlbWVudGAgaXMgYSB3aWxkY2FyZCByZS1leHBvcnQgc3RhdGVtZW50LlxuICogSS5FLiBhbiBleHByZXNzaW9uIHN0YXRlbWVudCBvZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczpcbiAqIC0gYF9fZXhwb3J0KDxmb28+KWBcbiAqIC0gYF9fZXhwb3J0U3Rhcig8Zm9vPilgXG4gKiAtIGB0c2xpYi5fX2V4cG9ydCg8Zm9vPiwgZXhwb3J0cylgXG4gKiAtIGB0c2xpYi5fX2V4cG9ydFN0YXIoPGZvbz4sIGV4cG9ydHMpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXaWxkY2FyZFJlZXhwb3J0U3RhdGVtZW50KHN0bXQ6IHRzLlN0YXRlbWVudCk6IHN0bXQgaXMgV2lsZGNhcmRSZWV4cG9ydFN0YXRlbWVudCB7XG4gIC8vIEVuc3VyZSBpdCBpcyBhIGNhbGwgZXhwcmVzc2lvbiBzdGF0ZW1lbnQuXG4gIGlmICghdHMuaXNFeHByZXNzaW9uU3RhdGVtZW50KHN0bXQpIHx8ICF0cy5pc0NhbGxFeHByZXNzaW9uKHN0bXQuZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBHZXQgdGhlIGNhbGxlZCBmdW5jdGlvbiBpZGVudGlmaWVyLlxuICAvLyBOT1RFOiBDdXJyZW50bHksIGl0IHNlZW1zIHRoYXQgYF9fZXhwb3J0KClgIGlzIHVzZWQgd2hlbiBlbWl0dGluZyBoZWxwZXJzIGlubGluZSBhbmRcbiAgLy8gICAgICAgYF9fZXhwb3J0U3RhcigpYCB3aGVuIGltcG9ydGluZyB0aGVtXG4gIC8vICAgICAgIChbc291cmNlXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9kN2M4M2YwMjMvc3JjL2NvbXBpbGVyL3RyYW5zZm9ybWVycy9tb2R1bGUvbW9kdWxlLnRzI0wxNzk2LUwxNzk3KSkuXG4gIC8vICAgICAgIFNvLCB0aGVvcmV0aWNhbGx5LCB3ZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGZvcm1hdHMgYF9fZXhwb3J0KDxmb28+KWAgYW5kXG4gIC8vICAgICAgIGB0c2xpYi5fX2V4cG9ydFN0YXIoPGZvbz4sIGV4cG9ydHMpYC5cbiAgLy8gICAgICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYWNjZXB0cyB0aGUgb3RoZXIgdHdvIGZvcm1hdHMgKGBfX2V4cG9ydFN0YXIoLi4uKWAgYW5kXG4gIC8vICAgICAgIGB0c2xpYi5fX2V4cG9ydCguLi4pYCkgYXMgd2VsbCB0byBiZSBtb3JlIGZ1dHVyZS1wcm9vZiAoZ2l2ZW4gdGhhdCBpdCBpcyB1bmxpa2VseSB0aGF0XG4gIC8vICAgICAgIHRoZXkgd2lsbCBpbnRyb2R1Y2UgZmFsc2UgcG9zaXRpdmVzKS5cbiAgbGV0IGZuTmFtZTogc3RyaW5nfG51bGwgPSBudWxsO1xuICBpZiAodHMuaXNJZGVudGlmaWVyKHN0bXQuZXhwcmVzc2lvbi5leHByZXNzaW9uKSkge1xuICAgIC8vIFN0YXRlbWVudCBvZiB0aGUgZm9ybSBgc29tZUZuKC4uLilgLlxuICAgIGZuTmFtZSA9IHN0bXQuZXhwcmVzc2lvbi5leHByZXNzaW9uLnRleHQ7XG4gIH0gZWxzZSBpZiAoXG4gICAgICB0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihzdG10LmV4cHJlc3Npb24uZXhwcmVzc2lvbikgJiZcbiAgICAgIHRzLmlzSWRlbnRpZmllcihzdG10LmV4cHJlc3Npb24uZXhwcmVzc2lvbi5uYW1lKSkge1xuICAgIC8vIFN0YXRlbWVudCBvZiB0aGUgZm9ybSBgdHNsaWIuc29tZUZuKC4uLilgLlxuICAgIGZuTmFtZSA9IHN0bXQuZXhwcmVzc2lvbi5leHByZXNzaW9uLm5hbWUudGV4dDtcbiAgfVxuXG4gIC8vIEVuc3VyZSB0aGUgY2FsbGVkIGZ1bmN0aW9uIGlzIGVpdGhlciBgX19leHBvcnQoKWAgb3IgYF9fZXhwb3J0U3RhcigpYC5cbiAgaWYgKChmbk5hbWUgIT09ICdfX2V4cG9ydCcpICYmIChmbk5hbWUgIT09ICdfX2V4cG9ydFN0YXInKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuXG4gIC8vIChUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGV4cG9ydGVkIHRoaW5nIGFuZCB0aGVyZSB3aWxsIGJlIGEgc2Vjb25kIGBleHBvcnRzYCBhcmd1bWVudCBpbiB0aGVcbiAgLy8gY2FzZSBvZiBpbXBvcnRlZCBoZWxwZXJzKS5cbiAgcmV0dXJuIHN0bXQuZXhwcmVzc2lvbi5hcmd1bWVudHMubGVuZ3RoID4gMDtcbn1cblxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHN0YXRlbWVudCBpcyBhIHJlLWV4cG9ydCBvZiB0aGUgZm9ybTpcbiAqXG4gKiBgYGBcbiAqIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIjxleHBvcnQtbmFtZT5cIixcbiAqICAgICB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gPGltcG9ydC1uYW1lPjsgfSB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEZWZpbmVQcm9wZXJ0eVJlZXhwb3J0U3RhdGVtZW50KHN0bXQ6IHRzLlN0YXRlbWVudCk6XG4gICAgc3RtdCBpcyBEZWZpbmVQcm9wZXJ0eVJlZXhwb3J0U3RhdGVtZW50IHtcbiAgaWYgKCF0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoc3RtdCkgfHwgIXRzLmlzQ2FsbEV4cHJlc3Npb24oc3RtdC5leHByZXNzaW9uKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBPYmplY3QuZGVmaW5lUHJvcGVydHlcbiAgaWYgKCF0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihzdG10LmV4cHJlc3Npb24uZXhwcmVzc2lvbikgfHxcbiAgICAgICF0cy5pc0lkZW50aWZpZXIoc3RtdC5leHByZXNzaW9uLmV4cHJlc3Npb24uZXhwcmVzc2lvbikgfHxcbiAgICAgIHN0bXQuZXhwcmVzc2lvbi5leHByZXNzaW9uLmV4cHJlc3Npb24udGV4dCAhPT0gJ09iamVjdCcgfHxcbiAgICAgICF0cy5pc0lkZW50aWZpZXIoc3RtdC5leHByZXNzaW9uLmV4cHJlc3Npb24ubmFtZSkgfHxcbiAgICAgIHN0bXQuZXhwcmVzc2lvbi5leHByZXNzaW9uLm5hbWUudGV4dCAhPT0gJ2RlZmluZVByb3BlcnR5Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFyZ3MgPSBzdG10LmV4cHJlc3Npb24uYXJndW1lbnRzO1xuICBpZiAoYXJncy5sZW5ndGggIT09IDMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZXhwb3J0c09iamVjdCA9IGFyZ3NbMF07XG4gIGlmICghdHMuaXNJZGVudGlmaWVyKGV4cG9ydHNPYmplY3QpIHx8IGV4cG9ydHNPYmplY3QudGV4dCAhPT0gJ2V4cG9ydHMnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcHJvcGVydHlLZXkgPSBhcmdzWzFdO1xuICBpZiAoIXRzLmlzU3RyaW5nTGl0ZXJhbChwcm9wZXJ0eUtleSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwcm9wZXJ0eURlc2NyaXB0b3IgPSBhcmdzWzJdO1xuICBpZiAoIXRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24ocHJvcGVydHlEZXNjcmlwdG9yKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAocHJvcGVydHlEZXNjcmlwdG9yLnByb3BlcnRpZXMuc29tZShcbiAgICAgIHByb3AgPT4gcHJvcC5uYW1lICE9PSB1bmRlZmluZWQgJiYgdHMuaXNJZGVudGlmaWVyKHByb3AubmFtZSkgJiYgcHJvcC5uYW1lLnRleHQgPT09ICdnZXQnKSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgXCJ2YWx1ZVwiIG9mIHRoZSBnZXR0ZXIgaW4gYSBgZGVmaW5lUHJvcGVydHlgIHN0YXRlbWVudC5cbiAqXG4gKiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBgdHMuRXhwcmVzc2lvbmAgdmFsdWUgb2YgYSBzaW5nbGUgYHJldHVybmAgc3RhdGVtZW50IGluIHRoZSBgZ2V0YCBtZXRob2RcbiAqIG9mIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uIG9iamVjdCwgb3IgYG51bGxgIGlmIHRoYXQgaXMgbm90IHBvc3NpYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEdldHRlckZuRXhwcmVzc2lvbihzdGF0ZW1lbnQ6IERlZmluZVByb3BlcnR5UmVleHBvcnRTdGF0ZW1lbnQpOlxuICAgIHRzLkV4cHJlc3Npb258bnVsbCB7XG4gIGNvbnN0IGFyZ3MgPSBzdGF0ZW1lbnQuZXhwcmVzc2lvbi5hcmd1bWVudHM7XG4gIGNvbnN0IGdldHRlckZuID0gYXJnc1syXS5wcm9wZXJ0aWVzLmZpbmQoXG4gICAgICBwcm9wID0+IHByb3AubmFtZSAhPT0gdW5kZWZpbmVkICYmIHRzLmlzSWRlbnRpZmllcihwcm9wLm5hbWUpICYmIHByb3AubmFtZS50ZXh0ID09PSAnZ2V0Jyk7XG4gIGlmIChnZXR0ZXJGbiA9PT0gdW5kZWZpbmVkIHx8ICF0cy5pc1Byb3BlcnR5QXNzaWdubWVudChnZXR0ZXJGbikgfHxcbiAgICAgICF0cy5pc0Z1bmN0aW9uRXhwcmVzc2lvbihnZXR0ZXJGbi5pbml0aWFsaXplcikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCByZXR1cm5TdGF0ZW1lbnQgPSBnZXR0ZXJGbi5pbml0aWFsaXplci5ib2R5LnN0YXRlbWVudHNbMF07XG4gIGlmICghdHMuaXNSZXR1cm5TdGF0ZW1lbnQocmV0dXJuU3RhdGVtZW50KSB8fCByZXR1cm5TdGF0ZW1lbnQuZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHJldHVyblN0YXRlbWVudC5leHByZXNzaW9uO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBgdHMuTm9kZWAgcmVwcmVzZW50cyBhIGByZXF1aXJlKClgIGNhbGwsIGkuZS4gYW4gY2FsbCBleHByZXNzaW9uIG9mXG4gKiB0aGUgZm9ybTogYHJlcXVpcmUoJzxmb28+JylgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcXVpcmVDYWxsKG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIFJlcXVpcmVDYWxsIHtcbiAgcmV0dXJuIHRzLmlzQ2FsbEV4cHJlc3Npb24obm9kZSkgJiYgdHMuaXNJZGVudGlmaWVyKG5vZGUuZXhwcmVzc2lvbikgJiZcbiAgICAgIG5vZGUuZXhwcmVzc2lvbi50ZXh0ID09PSAncmVxdWlyZScgJiYgbm9kZS5hcmd1bWVudHMubGVuZ3RoID09PSAxICYmXG4gICAgICB0cy5pc1N0cmluZ0xpdGVyYWwobm9kZS5hcmd1bWVudHNbMF0pO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBgcGF0aGAgaXMgYW4gXCJleHRlcm5hbFwiIGltcG9ydC5cbiAqIEluIG90aGVyIHdvcmRzLCB0aGF0IGl0IGNvbWVzIGZyb20gYSBlbnRyeS1wb2ludCBvdXRzaWRlIHRoZSBjdXJyZW50IG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxJbXBvcnQocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhL15cXC5cXC4/KFxcL3wkKS8udGVzdChwYXRoKTtcbn1cblxuLyoqXG4gKiBBIFVNRC9Db21tb25KUyBzdHlsZSBleHBvcnQgZGVjbGFyYXRpb24gb2YgdGhlIGZvcm0gYGV4cG9ydHMuPG5hbWU+YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBvcnRzRGVjbGFyYXRpb24gZXh0ZW5kcyB0cy5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ge1xuICBuYW1lOiB0cy5JZGVudGlmaWVyO1xuICBleHByZXNzaW9uOiB0cy5JZGVudGlmaWVyO1xuICBwYXJlbnQ6IEV4cG9ydHNBc3NpZ25tZW50O1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBgbm9kZWAgaXMgYSBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuICogYGV4cG9ydHMuPGZvbz5gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBvcnRzRGVjbGFyYXRpb24oZXhwcjogdHMuTm9kZSk6IGV4cHIgaXMgRXhwb3J0c0RlY2xhcmF0aW9uIHtcbiAgcmV0dXJuIGV4cHIucGFyZW50ICYmIGlzRXhwb3J0c0Fzc2lnbm1lbnQoZXhwci5wYXJlbnQpO1xufVxuXG4vKipcbiAqIEEgVU1EL0NvbW1vbkpTIHN0eWxlIGV4cG9ydCBhc3NpZ25tZW50IG9mIHRoZSBmb3JtIGBleHBvcnRzLjxmb28+ID0gPGJhcj5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydHNBc3NpZ25tZW50IGV4dGVuZHMgdHMuQmluYXJ5RXhwcmVzc2lvbiB7XG4gIGxlZnQ6IEV4cG9ydHNEZWNsYXJhdGlvbjtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgYG5vZGVgIGlzIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuICogYGV4cG9ydHMuPGZvbz4gPSA8YmFyPmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cG9ydHNBc3NpZ25tZW50KGV4cHI6IHRzLk5vZGUpOiBleHByIGlzIEV4cG9ydHNBc3NpZ25tZW50IHtcbiAgcmV0dXJuIGlzQXNzaWdubWVudChleHByKSAmJiB0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihleHByLmxlZnQpICYmXG4gICAgICB0cy5pc0lkZW50aWZpZXIoZXhwci5sZWZ0LmV4cHJlc3Npb24pICYmIGV4cHIubGVmdC5leHByZXNzaW9uLnRleHQgPT09ICdleHBvcnRzJyAmJlxuICAgICAgdHMuaXNJZGVudGlmaWVyKGV4cHIubGVmdC5uYW1lKTtcbn1cblxuLyoqXG4gKiBBbiBleHByZXNzaW9uIHN0YXRlbWVudCBvZiB0aGUgZm9ybSBgZXhwb3J0cy48Zm9vPiA9IDxiYXI+O2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0c1N0YXRlbWVudCBleHRlbmRzIHRzLkV4cHJlc3Npb25TdGF0ZW1lbnQge1xuICBleHByZXNzaW9uOiBFeHBvcnRzQXNzaWdubWVudDtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgYHN0bXRgIGlzIGFuIGV4cHJlc3Npb24gc3RhdGVtZW50IG9mIHRoZSBmb3JtXG4gKiBgZXhwb3J0cy48Zm9vPiA9IDxiYXI+O2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cG9ydHNTdGF0ZW1lbnQoc3RtdDogdHMuTm9kZSk6IHN0bXQgaXMgRXhwb3J0c1N0YXRlbWVudCB7XG4gIHJldHVybiB0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoc3RtdCkgJiYgaXNFeHBvcnRzQXNzaWdubWVudChzdG10LmV4cHJlc3Npb24pO1xufVxuXG4vKipcbiAqIEZpbmQgdGhlIGZhciByaWdodCBoYW5kIHNpZGUgb2YgYSBzZXF1ZW5jZSBvZiBhbGlhc2VkIGFzc2lnbmVtZW50cyBvZiB0aGUgZm9ybVxuICpcbiAqIGBgYFxuICogZXhwb3J0cy5NeUNsYXNzID0gYWxpYXMxID0gYWxpYXMyID0gPDxkZWNsYXJhdGlvbj4+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gbm9kZSB0aGUgZXhwcmVzc2lvbiB0byBwYXJzZVxuICogQHJldHVybnMgdGhlIG9yaWdpbmFsIGBub2RlYCBvciB0aGUgZmFyIHJpZ2h0IGV4cHJlc3Npb24gb2YgYSBzZXJpZXMgb2YgYXNzaWdubWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBza2lwQWxpYXNlcyhub2RlOiB0cy5FeHByZXNzaW9uKTogdHMuRXhwcmVzc2lvbiB7XG4gIHdoaWxlIChpc0Fzc2lnbm1lbnQobm9kZSkpIHtcbiAgICBub2RlID0gbm9kZS5yaWdodDtcbiAgfVxuICByZXR1cm4gbm9kZTtcbn1cbiJdfQ==
|