ttsc 0.33.1 → 0.34.0
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/README.md +2 -0
- package/cmd/ttsc/api_compile.go +3 -2
- package/cmd/ttsc/api_transform.go +1 -1
- package/cmd/ttsc/build.go +5 -4
- package/cmd/ttsc-cache/account.go +16 -0
- package/cmd/ttsc-cache/account_test.go +91 -0
- package/cmd/ttsc-cache/main.go +1 -1
- package/cmd/ttsc-cache/protocol_test.go +2 -2
- package/cmd/ttsc-cache/publisher_seal_test.go +1 -1
- package/cmd/ttsc-cache/stock_go_failure_test.go +1 -1
- package/cmd/ttsc-cache/stock_go_test.go +2 -2
- package/cmd/ttsc-cache/store.go +5 -0
- package/cmd/ttsc-cache/tuple.go +6 -2
- package/cmd/ttsc-cache/tuple_test.go +1 -1
- package/cmd/ttscgraph/main.go +6 -1
- package/cmd/ttscgraph/run_help_version_and_bad_flags_exit_codes_test.go +6 -1
- package/cmd/ttscgraph/serve.go +22 -20
- package/cmd/ttscgraph/serve_shards.go +26 -15
- package/cmd/ttscgraph/serve_shards_abandoned_generation_converges_on_retry_test.go +2 -2
- package/cmd/ttscgraph/serve_shards_delete_removed_source_test.go +3 -3
- package/cmd/ttscgraph/serve_shards_prune_unreferenced_external_endpoints_test.go +1 -1
- package/cmd/ttscgraph/serve_shards_publish_created_source_test.go +3 -3
- package/cmd/ttscgraph/serve_shards_refresh_cross_file_implementation_test.go +2 -2
- package/cmd/ttscgraph/serve_shards_refresh_dependent_diagnostics_test.go +3 -3
- package/cmd/ttscgraph/serve_shards_rename_moves_source_identity_test.go +5 -5
- package/cmd/ttscgraph/serve_shards_reuse_unaffected_sources_test.go +8 -8
- package/cmd/ttscgraph/serve_source_encoding_test.go +2 -2
- package/driver/build_information_uses_selected_output_identity_test.go +5 -4
- package/driver/check_observations.go +1 -1
- package/driver/config_discovery.go +5 -1
- package/driver/declaration_shape.go +15 -21
- package/driver/diagnostics_preamble.go +2 -2
- package/driver/emit_containment.go +11 -14
- package/driver/emit_plugin.go +51 -43
- package/driver/emit_plugin_output.go +6 -5
- package/driver/emit_provenance.go +12 -15
- package/driver/graph.go +8 -8
- package/driver/host.go +15 -5
- package/driver/input_observation.go +22 -21
- package/driver/input_observation_test.go +11 -10
- package/driver/overlay.go +11 -11
- package/driver/program.go +102 -51
- package/driver/resolution_candidates.go +50 -32
- package/driver/resolution_candidates_test.go +18 -5
- package/driver/rewrite.go +11 -13
- package/driver/session.go +13 -7
- package/driver/target_ts70.go +85 -0
- package/driver/target_ts71.go +97 -0
- package/driver/transform_dependencies.go +1 -1
- package/driver/transform_source_map.go +21 -20
- package/go.mod +3 -3
- package/go.sum +4 -4
- package/internal/graph/alternative_member_declarations_resolve_uses_test.go +9 -9
- package/internal/graph/assigned_implementations_of_declaration_file_symbols_leave_no_edge_source_test.go +2 -2
- package/internal/graph/assigned_implementations_of_node_modules_symbols_leave_no_edge_source_test.go +2 -2
- package/internal/graph/build.go +17 -17
- package/internal/graph/build_files_reuses_committed_cross_file_endpoints_test.go +4 -4
- package/internal/graph/build_records_a_node_per_top_level_declaration_test.go +1 -1
- package/internal/graph/declaration_members.go +1 -1
- package/internal/graph/decorators_capture_name_and_literal_arguments_test.go +3 -3
- package/internal/graph/doc_tags.go +2 -2
- package/internal/graph/dump_paths.go +6 -5
- package/internal/graph/duplicate_variable_object_members_keep_first_declaration_test.go +1 -1
- package/internal/graph/edges.go +49 -38
- package/internal/graph/edges_cover_class_level_references_test.go +5 -5
- package/internal/graph/enum_initializer_calls_are_edges_test.go +2 -2
- package/internal/graph/enum_members_carry_their_names_on_the_enum_node_test.go +6 -6
- package/internal/graph/exports.go +6 -6
- package/internal/graph/file_diagnostics_match_tsgo_code_and_location_test.go +2 -2
- package/internal/graph/file_diagnostics_report_code_column_and_message_test.go +1 -1
- package/internal/graph/function_locals_do_not_collide_test.go +3 -3
- package/internal/graph/heritage_edges_cover_implements_and_interface_extends_test.go +5 -5
- package/internal/graph/heritage_edges_keep_extends_and_implements_to_same_base_test.go +2 -2
- package/internal/graph/heritage_edges_record_extends_versus_implements_origin_test.go +3 -3
- package/internal/graph/heritage_edges_traverse_barrels_and_stop_at_external_leaves_test.go +3 -3
- package/internal/graph/literals.go +3 -3
- package/internal/graph/literals_are_absent_when_the_type_admits_more_than_it_can_name_test.go +2 -2
- package/internal/graph/literals_cover_enum_members_the_graph_has_no_nodes_for_test.go +4 -4
- package/internal/graph/literals_do_not_depend_on_declaration_line_wrapping_test.go +2 -2
- package/internal/graph/literals_render_every_value_in_typescript_source_form_test.go +1 -1
- package/internal/graph/literals_resolve_through_alias_indirection_test.go +3 -3
- package/internal/graph/member_relation_edges_follow_checker_validity_test.go +7 -7
- package/internal/graph/member_relation_edges_preserve_checker_boundaries_test.go +19 -19
- package/internal/graph/member_relation_edges_reject_checker_invalid_pairs_test.go +11 -11
- package/internal/graph/namespace_dotted_form_qualifies_deeply_test.go +2 -2
- package/internal/graph/namespace_members_become_qualified_nodes_and_edges_test.go +7 -7
- package/internal/graph/namespace_private_declarations_keep_lexical_identity_test.go +5 -5
- package/internal/graph/nodes_are_marked_exported_through_the_export_table_test.go +2 -2
- package/internal/graph/object_literal_declarations_resolve_calls_test.go +9 -9
- package/internal/graph/object_literal_members_ride_on_the_snapshot_test.go +1 -1
- package/internal/graph/overload_implementation_replaces_signature_test.go +2 -2
- package/internal/graph/property_member_edges_remain_owner_visible_test.go +6 -6
- package/internal/graph/resolve.go +7 -7
- package/internal/graph/resolve_unwraps_barrel_reexport_to_real_declaration_test.go +6 -6
- package/internal/graph/source.go +1 -1
- package/internal/graph/type_ref_edges_cover_typeof_as_satisfies_test.go +7 -7
- package/internal/graph/type_ref_edges_resolve_named_types_across_files_test.go +2 -2
- package/internal/graph/value_access_edges_cover_properties_test.go +5 -5
- package/internal/graph/value_call_edges_attribute_function_assignments_to_members_test.go +3 -3
- package/internal/graph/value_call_edges_cover_jsx_components_test.go +2 -2
- package/internal/graph/value_call_edges_cover_methods_and_constructors_test.go +3 -3
- package/internal/graph/value_call_edges_cover_variable_bound_callables_test.go +2 -2
- package/internal/graph/value_call_edges_do_not_double_record_invoked_member_access_test.go +4 -4
- package/internal/graph/value_call_edges_record_construct_versus_call_origin_test.go +3 -3
- package/internal/graph/value_call_edges_resolve_across_files_and_dedupe_test.go +2 -2
- package/internal/graph/value_call_edges_skip_self_and_unresolved_test.go +4 -4
- package/internal/graph/value_reads_cover_expression_positions_test.go +6 -6
- package/lib/compiler/internal/buildNativeCompiler.d.ts +5 -2
- package/lib/compiler/internal/buildNativeCompiler.js +12 -4
- package/lib/compiler/internal/buildNativeCompiler.js.map +1 -1
- package/lib/flags/COMPILER_ENUM_WHITESPACE.js +1 -1
- package/lib/flags/COMPILER_ENUM_WHITESPACE.js.map +1 -1
- package/lib/flags/COMPILER_OPTIONS.js +1079 -149
- package/lib/flags/COMPILER_OPTIONS.js.map +1 -1
- package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.js +1 -1
- package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.js.map +1 -1
- package/lib/flags/COMPILER_OPTION_KINDS.js +1 -1
- package/lib/flags/COMPILER_OPTION_KINDS.js.map +1 -1
- package/lib/flags/CompilerOptionSpec.d.ts +9 -2
- package/lib/internal/pluginSource.d.ts +1 -0
- package/lib/internal/pluginSource.js +1 -0
- package/lib/internal/pluginSource.js.map +1 -1
- package/lib/launcher/internal/TypeScriptSyncApi.d.ts +140 -0
- package/lib/launcher/internal/TypeScriptSyncApi.js +99 -0
- package/lib/launcher/internal/TypeScriptSyncApi.js.map +1 -0
- package/lib/launcher/internal/buildSingleRootInMemory.d.ts +80 -0
- package/lib/launcher/internal/buildSingleRootInMemory.js +253 -0
- package/lib/launcher/internal/buildSingleRootInMemory.js.map +1 -0
- package/lib/launcher/internal/buildSingleRootProject.d.ts +22 -18
- package/lib/launcher/internal/buildSingleRootProject.js +27 -18
- package/lib/launcher/internal/buildSingleRootProject.js.map +1 -1
- package/lib/launcher/internal/compilerArgsAsConfigOptions.d.ts +39 -0
- package/lib/launcher/internal/compilerArgsAsConfigOptions.js +115 -0
- package/lib/launcher/internal/compilerArgsAsConfigOptions.js.map +1 -0
- package/lib/plugin/CapabilityPluginResolver.js +3 -0
- package/lib/plugin/CapabilityPluginResolver.js.map +1 -1
- package/lib/plugin/internal/load/loadProjectPlugins.js +6 -2
- package/lib/plugin/internal/load/loadProjectPlugins.js.map +1 -1
- package/lib/plugin/internal/source/CompilerTarget.d.ts +127 -0
- package/lib/plugin/internal/source/CompilerTarget.js +231 -0
- package/lib/plugin/internal/source/CompilerTarget.js.map +1 -0
- package/lib/plugin/internal/source/NativeSourcePackages.js +6 -5
- package/lib/plugin/internal/source/NativeSourcePackages.js.map +1 -1
- package/lib/plugin/internal/source/SourcePluginAdmission.d.ts +18 -1
- package/lib/plugin/internal/source/SourcePluginAdmission.js +24 -2
- package/lib/plugin/internal/source/SourcePluginAdmission.js.map +1 -1
- package/lib/plugin/internal/source/SourcePluginWorkspace.d.ts +6 -3
- package/lib/plugin/internal/source/SourcePluginWorkspace.js +31 -13
- package/lib/plugin/internal/source/SourcePluginWorkspace.js.map +1 -1
- package/lib/plugin/internal/source/buildSourcePlugin.js +3 -1
- package/lib/plugin/internal/source/buildSourcePlugin.js.map +1 -1
- package/lib/plugin/internal/source/hashPluginBuildEnvironment.d.ts +1 -1
- package/lib/plugin/internal/source/hashPluginBuildEnvironment.js +9 -1
- package/lib/plugin/internal/source/hashPluginBuildEnvironment.js.map +1 -1
- package/package.json +14 -9
- package/shim/ast/enums_gen.go +1 -0
- package/shim/ast/go.mod +2 -2
- package/shim/ast/go.sum +4 -4
- package/shim/ast/neutral.go +141 -0
- package/shim/astnav/go.mod +2 -2
- package/shim/astnav/go.sum +4 -4
- package/shim/bundled/go.mod +2 -2
- package/shim/bundled/go.sum +4 -4
- package/shim/checker/go.mod +2 -2
- package/shim/checker/go.sum +4 -4
- package/shim/compiler/go.mod +2 -2
- package/shim/compiler/go.sum +4 -4
- package/shim/compiler/neutral.go +213 -0
- package/shim/core/go.mod +2 -2
- package/shim/core/go.sum +4 -4
- package/shim/diagnosticwriter/go.mod +2 -2
- package/shim/diagnosticwriter/go.sum +4 -4
- package/shim/lsp/go.mod +2 -2
- package/shim/lsp/go.sum +4 -4
- package/shim/parser/go.mod +2 -2
- package/shim/parser/go.sum +4 -4
- package/shim/printer/go.mod +2 -2
- package/shim/printer/go.sum +4 -4
- package/shim/scanner/go.mod +2 -2
- package/shim/scanner/go.sum +4 -4
- package/shim/stringutil/go.mod +1 -1
- package/shim/stringutil/go.sum +2 -2
- package/shim/stringutil/shim.go +15 -0
- package/shim/transformers/go.mod +2 -2
- package/shim/transformers/go.sum +4 -4
- package/shim/tsoptions/go.mod +2 -2
- package/shim/tsoptions/go.sum +4 -4
- package/shim/tsoptions/neutral.go +56 -0
- package/shim/tspath/go.mod +1 -1
- package/shim/tspath/go.sum +2 -2
- package/shim/tspath/neutral.go +150 -0
- package/shim/tspath/typed_paths.go +266 -0
- package/shim/vfs/cachedvfs/go.mod +2 -2
- package/shim/vfs/cachedvfs/go.sum +4 -4
- package/shim/vfs/go.mod +2 -2
- package/shim/vfs/go.sum +4 -4
- package/shim/vfs/neutral.go +20 -0
- package/shim/vfs/osvfs/go.mod +2 -2
- package/shim/vfs/osvfs/go.sum +4 -4
- package/src/compiler/internal/buildNativeCompiler.ts +13 -4
- package/src/flags/COMPILER_ENUM_WHITESPACE.ts +1 -1
- package/src/flags/COMPILER_OPTIONS.ts +1080 -150
- package/src/flags/COMPILER_OPTION_ASCII_FOLDS.ts +1 -1
- package/src/flags/COMPILER_OPTION_KINDS.ts +1 -1
- package/src/flags/CompilerOptionSpec.ts +11 -2
- package/src/internal/pluginSource.ts +1 -0
- package/src/launcher/internal/TypeScriptSyncApi.ts +186 -0
- package/src/launcher/internal/buildSingleRootInMemory.ts +319 -0
- package/src/launcher/internal/buildSingleRootProject.ts +26 -18
- package/src/launcher/internal/compilerArgsAsConfigOptions.ts +112 -0
- package/src/plugin/CapabilityPluginResolver.ts +4 -1
- package/src/plugin/internal/load/loadProjectPlugins.ts +12 -2
- package/src/plugin/internal/source/CompilerTarget.ts +249 -0
- package/src/plugin/internal/source/NativeSourcePackages.ts +10 -4
- package/src/plugin/internal/source/SourcePluginAdmission.ts +28 -2
- package/src/plugin/internal/source/SourcePluginWorkspace.ts +45 -19
- package/src/plugin/internal/source/buildSourcePlugin.ts +3 -1
- package/src/plugin/internal/source/hashPluginBuildEnvironment.ts +9 -1
- package/targets/7.1/bridge/ast/enums_gen.go +174 -0
- package/targets/7.1/bridge/ast/extra-shim.json +4 -0
- package/targets/7.1/bridge/ast/go.mod +14 -0
- package/targets/7.1/bridge/ast/go.sum +20 -0
- package/targets/7.1/bridge/ast/lint.go +1412 -0
- package/targets/7.1/bridge/ast/neutral.go +141 -0
- package/targets/7.1/bridge/ast/parent.go +60 -0
- package/targets/7.1/bridge/ast/safe_text.go +108 -0
- package/targets/7.1/bridge/ast/shim.go +1656 -0
- package/targets/7.1/bridge/ast/surface.go +686 -0
- package/targets/7.1/bridge/ast/test/next_jsdoc_comment_location_reaches_variable_statement_test.go +51 -0
- package/targets/7.1/bridge/ast/test/node_text_joins_multi_hop_qualified_name_test.go +47 -0
- package/targets/7.1/bridge/ast/test/node_text_joins_one_hop_qualified_name_test.go +35 -0
- package/targets/7.1/bridge/ast/test/node_text_returns_empty_for_nil_test.go +31 -0
- package/targets/7.1/bridge/ast/test/node_text_returns_identifier_text_test.go +34 -0
- package/targets/7.1/bridge/ast/test/node_text_skips_empty_qualified_left_test.go +60 -0
- package/targets/7.1/bridge/astnav/go.mod +14 -0
- package/targets/7.1/bridge/astnav/go.sum +22 -0
- package/targets/7.1/bridge/astnav/shim.go +24 -0
- package/targets/7.1/bridge/bundled/extra-shim.json +1 -0
- package/targets/7.1/bridge/bundled/go.mod +10 -0
- package/targets/7.1/bridge/bundled/go.sum +10 -0
- package/targets/7.1/bridge/bundled/shim.go +24 -0
- package/targets/7.1/bridge/checker/enums_gen.go +150 -0
- package/targets/7.1/bridge/checker/extra-shim.json +37 -0
- package/targets/7.1/bridge/checker/go.mod +15 -0
- package/targets/7.1/bridge/checker/go.sum +24 -0
- package/targets/7.1/bridge/checker/node_builder_fields_gen.go +19 -0
- package/targets/7.1/bridge/checker/shim.go +1390 -0
- package/targets/7.1/bridge/compiler/contentmapper_process.go +70 -0
- package/targets/7.1/bridge/compiler/emit_sourcemap.go +296 -0
- package/targets/7.1/bridge/compiler/emitassemble.go +81 -0
- package/targets/7.1/bridge/compiler/emithook.go +44 -0
- package/targets/7.1/bridge/compiler/extra-shim.json +4 -0
- package/targets/7.1/bridge/compiler/go.mod +15 -0
- package/targets/7.1/bridge/compiler/go.sum +24 -0
- package/targets/7.1/bridge/compiler/incremental.go +185 -0
- package/targets/7.1/bridge/compiler/neutral.go +256 -0
- package/targets/7.1/bridge/compiler/resolution.go +571 -0
- package/targets/7.1/bridge/compiler/shim.go +70 -0
- package/targets/7.1/bridge/core/enums_gen.go +15 -0
- package/targets/7.1/bridge/core/extra-shim.json +4 -0
- package/targets/7.1/bridge/core/go.mod +7 -0
- package/targets/7.1/bridge/core/go.sum +8 -0
- package/targets/7.1/bridge/core/modulekind.go +19 -0
- package/targets/7.1/bridge/core/shim.go +272 -0
- package/targets/7.1/bridge/diagnosticwriter/go.mod +14 -0
- package/targets/7.1/bridge/diagnosticwriter/go.sum +20 -0
- package/targets/7.1/bridge/diagnosticwriter/lint.go +411 -0
- package/targets/7.1/bridge/diagnosticwriter/shim.go +56 -0
- package/targets/7.1/bridge/lsp/extra-shim.json +4 -0
- package/targets/7.1/bridge/lsp/go.mod +16 -0
- package/targets/7.1/bridge/lsp/go.sum +26 -0
- package/targets/7.1/bridge/lsp/shim.go +112 -0
- package/targets/7.1/bridge/parser/extra-shim.json +4 -0
- package/targets/7.1/bridge/parser/go.mod +14 -0
- package/targets/7.1/bridge/parser/go.sum +24 -0
- package/targets/7.1/bridge/parser/shim.go +61 -0
- package/targets/7.1/bridge/printer/emithost.go +69 -0
- package/targets/7.1/bridge/printer/go.mod +15 -0
- package/targets/7.1/bridge/printer/go.sum +24 -0
- package/targets/7.1/bridge/printer/shim.go +168 -0
- package/targets/7.1/bridge/printer/sourcemap.go +49 -0
- package/targets/7.1/bridge/scanner/extra-shim.json +4 -0
- package/targets/7.1/bridge/scanner/go.mod +14 -0
- package/targets/7.1/bridge/scanner/go.sum +20 -0
- package/targets/7.1/bridge/scanner/regexp.go +42 -0
- package/targets/7.1/bridge/scanner/shim.go +137 -0
- package/targets/7.1/bridge/stringutil/extra-shim.json +1 -0
- package/targets/7.1/bridge/stringutil/go.mod +5 -0
- package/targets/7.1/bridge/stringutil/go.sum +2 -0
- package/targets/7.1/bridge/stringutil/shim.go +131 -0
- package/targets/7.1/bridge/transformers/go.mod +15 -0
- package/targets/7.1/bridge/transformers/go.sum +24 -0
- package/targets/7.1/bridge/transformers/shim.go +24 -0
- package/targets/7.1/bridge/tsoptions/command_line_raw.go +44 -0
- package/targets/7.1/bridge/tsoptions/extra-shim.json +4 -0
- package/targets/7.1/bridge/tsoptions/go.mod +15 -0
- package/targets/7.1/bridge/tsoptions/go.sum +24 -0
- package/targets/7.1/bridge/tsoptions/neutral.go +47 -0
- package/targets/7.1/bridge/tsoptions/shim.go +193 -0
- package/targets/7.1/bridge/tspath/extra-shim.json +4 -0
- package/targets/7.1/bridge/tspath/go.mod +5 -0
- package/targets/7.1/bridge/tspath/go.sum +6 -0
- package/targets/7.1/bridge/tspath/neutral.go +142 -0
- package/targets/7.1/bridge/tspath/shim.go +382 -0
- package/targets/7.1/bridge/vfs/cachedvfs/extra-shim.json +4 -0
- package/targets/7.1/bridge/vfs/cachedvfs/go.mod +5 -0
- package/targets/7.1/bridge/vfs/cachedvfs/go.sum +10 -0
- package/targets/7.1/bridge/vfs/cachedvfs/shim.go +12 -0
- package/targets/7.1/bridge/vfs/decode.go +26 -0
- package/targets/7.1/bridge/vfs/decode_test.go +42 -0
- package/targets/7.1/bridge/vfs/extra-shim.json +4 -0
- package/targets/7.1/bridge/vfs/go.mod +10 -0
- package/targets/7.1/bridge/vfs/go.sum +10 -0
- package/targets/7.1/bridge/vfs/neutral.go +23 -0
- package/targets/7.1/bridge/vfs/osvfs/extra-shim.json +4 -0
- package/targets/7.1/bridge/vfs/osvfs/go.mod +10 -0
- package/targets/7.1/bridge/vfs/osvfs/go.sum +10 -0
- package/targets/7.1/bridge/vfs/osvfs/shim.go +14 -0
- package/targets/7.1/bridge/vfs/shim.go +27 -0
- package/targets/7.1/facade/ast/facade_gen.go +2691 -0
- package/targets/7.1/facade/ast/go.mod +20 -0
- package/targets/7.1/facade/ast/go.sum +20 -0
- package/targets/7.1/facade/astnav/facade_gen.go +15 -0
- package/targets/7.1/facade/astnav/go.mod +22 -0
- package/targets/7.1/facade/astnav/go.sum +22 -0
- package/targets/7.1/facade/bundled/facade_gen.go +32 -0
- package/targets/7.1/facade/bundled/go.mod +21 -0
- package/targets/7.1/facade/bundled/go.sum +10 -0
- package/targets/7.1/facade/checker/facade_gen.go +563 -0
- package/targets/7.1/facade/checker/go.mod +26 -0
- package/targets/7.1/facade/checker/go.sum +24 -0
- package/targets/7.1/facade/compiler/facade_gen.go +198 -0
- package/targets/7.1/facade/compiler/go.mod +41 -0
- package/targets/7.1/facade/compiler/go.sum +24 -0
- package/targets/7.1/facade/core/facade_gen.go +130 -0
- package/targets/7.1/facade/core/go.mod +12 -0
- package/targets/7.1/facade/core/go.sum +8 -0
- package/targets/7.1/facade/diagnosticwriter/facade_gen.go +36 -0
- package/targets/7.1/facade/diagnosticwriter/go.mod +22 -0
- package/targets/7.1/facade/diagnosticwriter/go.sum +20 -0
- package/targets/7.1/facade/lsp/facade_gen.go +31 -0
- package/targets/7.1/facade/lsp/go.mod +19 -0
- package/targets/7.1/facade/lsp/go.sum +26 -0
- package/targets/7.1/facade/parser/facade_gen.go +102 -0
- package/targets/7.1/facade/parser/go.mod +25 -0
- package/targets/7.1/facade/parser/go.sum +24 -0
- package/targets/7.1/facade/printer/facade_gen.go +74 -0
- package/targets/7.1/facade/printer/go.mod +26 -0
- package/targets/7.1/facade/printer/go.sum +24 -0
- package/targets/7.1/facade/scanner/facade_gen.go +191 -0
- package/targets/7.1/facade/scanner/go.mod +25 -0
- package/targets/7.1/facade/scanner/go.sum +20 -0
- package/targets/7.1/facade/stringutil/facade_gen.go +176 -0
- package/targets/7.1/facade/stringutil/go.mod +9 -0
- package/targets/7.1/facade/stringutil/go.sum +2 -0
- package/targets/7.1/facade/transformers/facade_gen.go +12 -0
- package/targets/7.1/facade/transformers/go.mod +18 -0
- package/targets/7.1/facade/transformers/go.sum +24 -0
- package/targets/7.1/facade/tsoptions/facade_gen.go +274 -0
- package/targets/7.1/facade/tsoptions/go.mod +32 -0
- package/targets/7.1/facade/tsoptions/go.sum +24 -0
- package/targets/7.1/facade/tspath/facade_gen.go +550 -0
- package/targets/7.1/facade/tspath/go.mod +9 -0
- package/targets/7.1/facade/tspath/go.sum +6 -0
- package/targets/7.1/facade/vfs/cachedvfs/facade_gen.go +17 -0
- package/targets/7.1/facade/vfs/cachedvfs/go.mod +18 -0
- package/targets/7.1/facade/vfs/cachedvfs/go.sum +10 -0
- package/targets/7.1/facade/vfs/facade_gen.go +47 -0
- package/targets/7.1/facade/vfs/go.mod +18 -0
- package/targets/7.1/facade/vfs/go.sum +10 -0
- package/targets/7.1/facade/vfs/osvfs/facade_gen.go +20 -0
- package/targets/7.1/facade/vfs/osvfs/go.mod +21 -0
- package/targets/7.1/facade/vfs/osvfs/go.sum +10 -0
- package/tools/gen_facade/committed_facades_match_their_bridges_test.go +57 -0
- package/tools/gen_facade/facade_manifest_points_into_the_bridge_root_test.go +75 -0
- package/tools/gen_facade/facade_spells_internal_types_through_bridge_aliases_test.go +75 -0
- package/tools/gen_facade/facade_types_are_their_bridge_types_test.go +99 -0
- package/tools/gen_facade/go.mod +10 -0
- package/tools/gen_facade/go.sum +8 -0
- package/tools/gen_facade/main.go +734 -0
- package/tools/gen_shims/go.mod +4 -4
- package/tools/gen_shims/go.sum +6 -6
- package/tools/gen_shims/main.go +124 -66
- package/tools/gen_shims/mirror_structs_terminate_on_unexported_cycles_test.go +101 -0
- package/tools/shim_audit/baseline-7.1.json +720 -0
- package/tools/shim_audit/baseline.json +5 -4
- package/tools/shim_audit/go.mod +4 -4
- package/tools/shim_audit/go.sum +6 -6
- package/tools/shim_audit/linkname_signatures.go +178 -0
- package/tools/shim_audit/linkname_signatures_match_their_targets_test.go +64 -0
- package/tools/shim_audit/linkname_targets_follow_the_audited_compiler_test.go +38 -0
- package/tools/shim_audit/main.go +29 -4
- package/tools/shim_audit/neutral_api.go +160 -0
- package/tools/shim_audit/neutral_api_must_match_across_targets_test.go +74 -0
- package/utility/host.go +5 -4
- package/utility/preamble_output.go +15 -15
- package/utility/serve.go +1 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
package compiler
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"errors"
|
|
5
|
+
"io"
|
|
6
|
+
"os/exec"
|
|
7
|
+
"time"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
// spawnContentMapper starts one content-mapper process, the way the tsc
|
|
11
|
+
// command does: command runs in dir, the mapper package's directory, with its
|
|
12
|
+
// stderr written to stderr. The returned value reads the process's stdout and
|
|
13
|
+
// writes its stdin; Close kills and reaps it. The compiler keeps process
|
|
14
|
+
// spawning out of its own packages and leaves it to the host, so ttsc supplies
|
|
15
|
+
// the same behavior as tsc's.
|
|
16
|
+
func spawnContentMapper(command []string, dir string, stderr io.Writer) (io.ReadWriteCloser, error) {
|
|
17
|
+
if len(command) == 0 {
|
|
18
|
+
return nil, errors.New("content mapper declares no command to run")
|
|
19
|
+
}
|
|
20
|
+
cmd := exec.Command(command[0], command[1:]...)
|
|
21
|
+
cmd.Dir = dir
|
|
22
|
+
cmd.Stderr = stderr
|
|
23
|
+
cmd.WaitDelay = time.Second
|
|
24
|
+
stdin, err := cmd.StdinPipe()
|
|
25
|
+
if err != nil {
|
|
26
|
+
return nil, err
|
|
27
|
+
}
|
|
28
|
+
stdout, err := cmd.StdoutPipe()
|
|
29
|
+
if err != nil {
|
|
30
|
+
return nil, err
|
|
31
|
+
}
|
|
32
|
+
if err := cmd.Start(); err != nil {
|
|
33
|
+
return nil, err
|
|
34
|
+
}
|
|
35
|
+
return &contentMapperProcess{cmd: cmd, stdin: stdin, stdout: stdout}, nil
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// contentMapperProcess adapts a mapper's stdout (read) and stdin (write) into
|
|
39
|
+
// one io.ReadWriteCloser.
|
|
40
|
+
type contentMapperProcess struct {
|
|
41
|
+
cmd *exec.Cmd
|
|
42
|
+
stdin io.WriteCloser
|
|
43
|
+
stdout io.Reader
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
func (p *contentMapperProcess) Read(b []byte) (int, error) { return p.stdout.Read(b) }
|
|
47
|
+
func (p *contentMapperProcess) Write(b []byte) (int, error) { return p.stdin.Write(b) }
|
|
48
|
+
|
|
49
|
+
// ExitCode reports the process's exit code once it has been reaped; the
|
|
50
|
+
// mapper host reads it to describe a mapper that exited early.
|
|
51
|
+
func (p *contentMapperProcess) ExitCode() (int, bool) {
|
|
52
|
+
if p.cmd.ProcessState == nil {
|
|
53
|
+
return 0, false
|
|
54
|
+
}
|
|
55
|
+
return p.cmd.ProcessState.ExitCode(), true
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Close kills and reaps the process. Its own exit status is not a close error.
|
|
59
|
+
func (p *contentMapperProcess) Close() error {
|
|
60
|
+
_ = p.stdin.Close()
|
|
61
|
+
_ = p.cmd.Process.Kill()
|
|
62
|
+
err := p.cmd.Wait()
|
|
63
|
+
if _, ok := errors.AsType[*exec.ExitError](err); ok {
|
|
64
|
+
return nil
|
|
65
|
+
}
|
|
66
|
+
if errors.Is(err, exec.ErrWaitDelay) {
|
|
67
|
+
return nil
|
|
68
|
+
}
|
|
69
|
+
return err
|
|
70
|
+
}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
// gen_shims:hand-maintained
|
|
2
|
+
//
|
|
3
|
+
// Source-map emission for the single-file plugin-transform emit path.
|
|
4
|
+
//
|
|
5
|
+
// tsgo's Program.Emit has no hook to inject a custom transformer, so ttsc's
|
|
6
|
+
// driver assembles the per-file emit pipeline by hand (see GetSourceFilesToEmit
|
|
7
|
+
// / GetScriptTransformers / GetOutputPathsFor). That hand-assembly must also
|
|
8
|
+
// reproduce the selected text/map assembly steps: building the printer's
|
|
9
|
+
// options from the compiler options, the source-map branch a bare printer.Write
|
|
10
|
+
// with a nil generator drops entirely, the `emitBOM` byte-order mark, and the
|
|
11
|
+
// trailer position the emitter places in WriteFileData. This file ports
|
|
12
|
+
// internal/compiler/emitter.go's `emitJSFile` PrinterOptions construction and
|
|
13
|
+
// its printing, source-map and BOM assembly policy. The driver owns writing
|
|
14
|
+
// returned artifacts and its metadata; upstream diagnostic/write-result and
|
|
15
|
+
// SourceMaps receipt machinery is not reproduced by this helper. Byte and map
|
|
16
|
+
// compatibility depends on the actual transformed nodes and retained provenance.
|
|
17
|
+
//
|
|
18
|
+
// Keep it in sync with that emitter source when the pin is bumped. Anything
|
|
19
|
+
// `emitJSFile` sets and this file omits takes the Go zero value, which silently
|
|
20
|
+
// turns the option off for every project that emits through a plugin transform,
|
|
21
|
+
// and anything `printSourceFile` does around the printer that this file omits
|
|
22
|
+
// is missing from the plugin lane's output even when the option set matches.
|
|
23
|
+
// `emit_plugin_transform_matches_plain_emit_for_printer_options_test.go` fails
|
|
24
|
+
// when a forwarded option stops matching the plain emit.
|
|
25
|
+
package compiler
|
|
26
|
+
|
|
27
|
+
import (
|
|
28
|
+
innerast "github.com/microsoft/TypeScript/tsc/internal/ast"
|
|
29
|
+
innercore "github.com/microsoft/TypeScript/tsc/internal/core"
|
|
30
|
+
inneroutputpaths "github.com/microsoft/TypeScript/tsc/internal/outputpaths"
|
|
31
|
+
innerprinter "github.com/microsoft/TypeScript/tsc/internal/printer"
|
|
32
|
+
innersourcemap "github.com/microsoft/TypeScript/tsc/internal/sourcemap"
|
|
33
|
+
innerstringutil "github.com/microsoft/TypeScript/tsc/internal/stringutil"
|
|
34
|
+
innertspath "github.com/microsoft/TypeScript/tsc/internal/tspath"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
// PrintedFile is the rendered output of one source file in the plugin-transform
|
|
38
|
+
// emit path. JS is the script text, carrying a sourceMappingURL trailer when
|
|
39
|
+
// its selected URL is nonempty and a leading UTF-8 BOM when emitBOM is on.
|
|
40
|
+
// MapText/MapPath contain external map text and its selected destination only
|
|
41
|
+
// when mapping is enabled, maps are not inline and that destination is nonempty.
|
|
42
|
+
// They are otherwise empty. These are returned artifacts, not write receipts.
|
|
43
|
+
//
|
|
44
|
+
// @evidence contracts/common.md#principled-implementation The record separates emitted script, optional external map and map destination, retaining the pinned emitter's pre-BOM trailer coordinate rather than mixing file bytes with writer positions.
|
|
45
|
+
// @evidence contracts/common.md#clear-and-simple-design One per-file result carries related output artifacts; absent external maps use empty values and absent trailers use the documented negative sentinel.
|
|
46
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The sentinel and pre-BOM coordinate are compiler protocol values, not patched expected answers; no foreign state or consumer-specific output is introduced.
|
|
47
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose explains map absence, inline output and BOM coordinate effects; every member has native documentation separated by blank source lines.
|
|
48
|
+
// @evidence contracts/portability.md#os-neutral-implementation MapPath preserves the host-resolved native output destination while JS contains URI trailer spelling; the fields keep those distinct rather than equating URL and filesystem identity.
|
|
49
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms This record represents output and does not choose the printing algorithm.
|
|
50
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This output record does not coordinate computation across consumers.
|
|
51
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Storage lifetime belongs to the printing operation and its caller, not independently to the result declaration.
|
|
52
|
+
type PrintedFile struct {
|
|
53
|
+
// JS contains emitted script text, optional map trailer and optional BOM.
|
|
54
|
+
JS string
|
|
55
|
+
|
|
56
|
+
// MapText contains the external map JSON, or empty text for inline or absent maps.
|
|
57
|
+
MapText string
|
|
58
|
+
|
|
59
|
+
// MapPath is the destination for MapText, or empty when no external map is emitted.
|
|
60
|
+
MapPath innertspath.RootedFilePath
|
|
61
|
+
|
|
62
|
+
// SourceMapUrlPos is the offset of the `//# sourceMappingURL=` trailer in JS,
|
|
63
|
+
// or -1 when no trailer was written, the value tsgo's emitter reports as
|
|
64
|
+
// WriteFileData.SourceMapUrlPos so a caller can locate and rewrite the
|
|
65
|
+
// trailer without re-scanning the text. Like the emitter's, it is the printer
|
|
66
|
+
// writer's text position, taken BEFORE the `emitBOM` mark is prepended, so a
|
|
67
|
+
// BOM build's offset is three bytes short of the trailer's position in the
|
|
68
|
+
// written file. That is the pinned emitter's own behavior
|
|
69
|
+
// (internal/compiler/emitter.go::printSourceFile computes sourceMapUrlPos
|
|
70
|
+
// from the writer and only then calls AddUTF8ByteOrderMark), and this lane
|
|
71
|
+
// exists to match it: "correcting" the offset here would make a plugin build
|
|
72
|
+
// disagree with the plain build of the same project.
|
|
73
|
+
SourceMapUrlPos int
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// SourceMapHost supplies the directory and path-identity context the
|
|
77
|
+
// compiler's source-map placement reads: the common source directory that a
|
|
78
|
+
// relative mapRoot and a sourceRoot resolve against, the base directory an
|
|
79
|
+
// absolute mapRoot resolves against, and the case policy of path comparison.
|
|
80
|
+
// The compiler's emit host satisfies it.
|
|
81
|
+
//
|
|
82
|
+
// @evidence contracts/common.md#principled-implementation The three methods are exactly the emit-host queries the pinned emitter's source-map directory and URL policy read.
|
|
83
|
+
// @evidence contracts/common.md#clear-and-simple-design A narrow interface lets a driver-owned emit host supply map context without implementing the declaration-emit host.
|
|
84
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Directory context comes from the host's compiler state, not from a guessed process directory.
|
|
85
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names each method's role in map placement, with a blank line before tags.
|
|
86
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources An interface declaration acquires and holds no runtime resource.
|
|
87
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms An interface declaration chooses no processing strategy.
|
|
88
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work An interface declaration computes nothing, so there is no work to share.
|
|
89
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation Implementations own path identity; the declaration names rooted path types and a case policy rather than an OS assumption.
|
|
90
|
+
type SourceMapHost interface {
|
|
91
|
+
// CommonSourceDirectory is the directory a relative mapRoot and a sourceRoot resolve against.
|
|
92
|
+
//
|
|
93
|
+
// @evidence contracts/common.md#principled-implementation The query is the emit-host method the pinned emitter's source-map policy reads for this value.
|
|
94
|
+
// @evidence contracts/common.md#clear-and-simple-design One method supplies one map-placement input without a wider host contract.
|
|
95
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The value comes from the host's compiler state rather than a guessed process directory.
|
|
96
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the value and its role in map placement following the documentation skill.
|
|
97
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources CommonSourceDirectory declares a signature only; the implementation owns acquisition and release of resources.
|
|
98
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms CommonSourceDirectory declares a signature only; the implementation owns the processing strategy.
|
|
99
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work CommonSourceDirectory declares a signature only; the implementation owns any shared work.
|
|
100
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation CommonSourceDirectory is a signature without a body here; path and platform behavior belongs to the implementation that supplies it.
|
|
101
|
+
CommonSourceDirectory() innertspath.RootedDirectoryPath
|
|
102
|
+
|
|
103
|
+
// BaseDirectory is the directory an absolute mapRoot resolves against.
|
|
104
|
+
//
|
|
105
|
+
// @evidence contracts/common.md#principled-implementation The query is the emit-host method the pinned emitter's source-map policy reads for this value.
|
|
106
|
+
// @evidence contracts/common.md#clear-and-simple-design One method supplies one map-placement input without a wider host contract.
|
|
107
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The value comes from the host's compiler state rather than a guessed process directory.
|
|
108
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the value and its role in map placement following the documentation skill.
|
|
109
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources BaseDirectory declares a signature only; the implementation owns acquisition and release of resources.
|
|
110
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms BaseDirectory declares a signature only; the implementation owns the processing strategy.
|
|
111
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work BaseDirectory declares a signature only; the implementation owns any shared work.
|
|
112
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation BaseDirectory is a signature without a body here; path and platform behavior belongs to the implementation that supplies it.
|
|
113
|
+
BaseDirectory() innertspath.RootedDirectoryPath
|
|
114
|
+
|
|
115
|
+
// CaseSensitivity is the case policy of map path comparison.
|
|
116
|
+
//
|
|
117
|
+
// @evidence contracts/common.md#principled-implementation The query is the emit-host method the pinned emitter's source-map policy reads for this value.
|
|
118
|
+
// @evidence contracts/common.md#clear-and-simple-design One method supplies one map-placement input without a wider host contract.
|
|
119
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The value comes from the host's compiler state rather than a guessed process directory.
|
|
120
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the value and its role in map placement following the documentation skill.
|
|
121
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources CaseSensitivity declares a signature only; the implementation owns acquisition and release of resources.
|
|
122
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms CaseSensitivity declares a signature only; the implementation owns the processing strategy.
|
|
123
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work CaseSensitivity declares a signature only; the implementation owns any shared work.
|
|
124
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation CaseSensitivity is a signature without a body here; path and platform behavior belongs to the implementation that supplies it.
|
|
125
|
+
CaseSensitivity() innertspath.CaseSensitivity
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// PrintFileWithSourceMap renders node from sourceFile through a printer built
|
|
129
|
+
// from options and emitContext, optionally generating a source map, mirroring
|
|
130
|
+
// their text/map assembly for the single-file plugin-transform path. It returns
|
|
131
|
+
// artifacts; it does not reproduce upstream writes, diagnostics, SourceMaps
|
|
132
|
+
// receipts or complete WriteFileData. The PrinterOptions below are emitJSFile's, field for
|
|
133
|
+
// field: `removeComments`, `newLine`, `noEmitHelpers`, `sourceMap`,
|
|
134
|
+
// `inlineSourceMap`, `inlineSources`, and `target`. When
|
|
135
|
+
// `sourceMap`/`inlineSourceMap` is enabled (and the file is not JSON) it builds a
|
|
136
|
+
// sourcemap.Generator, feeds it to the printer so positions are recorded,
|
|
137
|
+
// appends the sourceMappingURL trailer, records its offset, and returns the
|
|
138
|
+
// external map text/path (or encodes the map inline). `emitBOM` prepends the
|
|
139
|
+
// UTF-8 byte order mark to the JavaScript afterwards, exactly where
|
|
140
|
+
// printSourceFile does it, outside PrinterOptions, which is why forwarding the
|
|
141
|
+
// whole options struct never reached it. Returned external map text has no BOM,
|
|
142
|
+
// matching the text supplied to upstream's map write.
|
|
143
|
+
// host supplies the same directory/casing context tsgo's emitter reads.
|
|
144
|
+
//
|
|
145
|
+
// The source file, compiler options and host must be nonnil. Original node
|
|
146
|
+
// positions and emitContext provenance determine source-map accuracy.
|
|
147
|
+
//
|
|
148
|
+
// @evidence contracts/common.md#principled-implementation The maintained port follows the pinned emitter's printer options, map eligibility, URI encoding, newline/trailer handling and post-print BOM ordering; upstream printer traversal derives mappings from retained node provenance.
|
|
149
|
+
// @evidence contracts/common.md#clear-and-simple-design One per-file printer/writer/generator owns output assembly, while focused helpers separate source-root, shared map-directory and trailer-URL policy without duplicating output state.
|
|
150
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts JSON map suppression, inline maps and pre-BOM offsets implement actual compiler options and output protocol; they do not select fixtures or patch upstream printer behavior.
|
|
151
|
+
// @evidence contracts/common.md#meaningful-documentation Native paragraphs distinguish printer settings from post-print BOM effects, external from inline maps, path context and provenance requirements; the result documents its coordinate convention explicitly.
|
|
152
|
+
// @evidence contracts/portability.md#os-neutral-implementation Compiler path helpers normalize native output paths, host-provided case sensitivity governs relative identity, and trailer paths are separately URI-encoded; URL spelling is not treated as filesystem casing.
|
|
153
|
+
// @evidence contracts/performance.md#efficient-algorithms Text and mapping collection share one printer invocation; upstream printing can also consult node provenance, semantic helpers, source positions and path text, so this is not a strict one-pass bound over input or output bytes. Map-table copies and JSON serialization, optional base64, trailer writes and a BOM text copy add their own work. The writer's recorded position avoids rescanning emitted text just to locate the trailer.
|
|
154
|
+
// @evidence contracts/performance.md#reuse-equivalent-work Text and source mappings share the printer traversal and EmitContext provenance; no cross-file printer source-index state is reused, and compiler options and transformed nodes determine each output.
|
|
155
|
+
// @evidence contracts/performance.md#bound-retention-and-release-resources Per-call printer, writer and generator hold output buffers, source/name indexes, mapping segments and optional borrowed source text. Map serialization/base64 and BOM assembly can temporarily coexist with those buffers; result strings retain their backing bytes after return. EmitContext and source/semantic graphs remain caller-owned, and this function adds no historical result registry or spawned task. No fixed byte cap is imposed here.
|
|
156
|
+
func PrintFileWithSourceMap(
|
|
157
|
+
emitContext *innerprinter.EmitContext,
|
|
158
|
+
node *innerast.Node,
|
|
159
|
+
sourceFile *innerast.SourceFile,
|
|
160
|
+
options *innercore.CompilerOptions,
|
|
161
|
+
host SourceMapHost,
|
|
162
|
+
jsFilePath innertspath.RootedFilePath,
|
|
163
|
+
sourceMapFilePath innertspath.RootedFilePath,
|
|
164
|
+
) PrintedFile {
|
|
165
|
+
printer := innerprinter.NewPrinter(innerprinter.PrinterOptions{
|
|
166
|
+
RemoveComments: options.RemoveComments.IsTrue(),
|
|
167
|
+
NewLine: options.NewLine,
|
|
168
|
+
NoEmitHelpers: options.NoEmitHelpers.IsTrue(),
|
|
169
|
+
SourceMap: options.SourceMap.IsTrue(),
|
|
170
|
+
InlineSourceMap: options.InlineSourceMap.IsTrue(),
|
|
171
|
+
InlineSources: options.InlineSources.IsTrue(),
|
|
172
|
+
Target: options.Target,
|
|
173
|
+
}, innerprinter.PrintHandlers{}, emitContext)
|
|
174
|
+
writer := innerprinter.NewTextWriter(options.NewLine.GetNewLineCharacter(), 0)
|
|
175
|
+
|
|
176
|
+
shouldEmit := (options.SourceMap.IsTrue() || options.InlineSourceMap.IsTrue()) &&
|
|
177
|
+
!sourceFile.FileName().ExtensionIs(innertspath.ExtensionJson)
|
|
178
|
+
|
|
179
|
+
var generator *innersourcemap.Generator
|
|
180
|
+
if shouldEmit {
|
|
181
|
+
generator = innersourcemap.NewGenerator(
|
|
182
|
+
jsFilePath.BaseName(),
|
|
183
|
+
sourceMapSourceRoot(options),
|
|
184
|
+
SourceMapDirectory(options, host, jsFilePath, sourceFile),
|
|
185
|
+
host.CaseSensitivity(),
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
printer.Write(node, sourceFile, writer, generator)
|
|
190
|
+
|
|
191
|
+
result := PrintedFile{SourceMapUrlPos: -1}
|
|
192
|
+
if generator != nil {
|
|
193
|
+
url := sourceMappingURL(options, generator, host, jsFilePath, sourceMapFilePath, sourceFile)
|
|
194
|
+
if len(url) > 0 {
|
|
195
|
+
if !writer.IsAtStartOfLine() {
|
|
196
|
+
if options.NewLine == innercore.NewLineKindCRLF {
|
|
197
|
+
writer.RawWrite("\r\n")
|
|
198
|
+
} else {
|
|
199
|
+
writer.RawWrite("\n")
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
result.SourceMapUrlPos = writer.GetTextPos()
|
|
203
|
+
writer.WriteComment("//# sourceMappingURL=")
|
|
204
|
+
writer.WriteComment(url)
|
|
205
|
+
}
|
|
206
|
+
if !options.InlineSourceMap.IsTrue() && sourceMapFilePath != "" {
|
|
207
|
+
result.MapText = generator.String()
|
|
208
|
+
result.MapPath = sourceMapFilePath
|
|
209
|
+
}
|
|
210
|
+
} else {
|
|
211
|
+
writer.WriteLine()
|
|
212
|
+
}
|
|
213
|
+
result.JS = writer.String()
|
|
214
|
+
if options.EmitBOM.IsTrue() {
|
|
215
|
+
result.JS = innerstringutil.AddUTF8ByteOrderMark(result.JS)
|
|
216
|
+
}
|
|
217
|
+
return result
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// sourceMapSourceRoot mirrors emitter.getSourceRoot: a normalized sourceRoot
|
|
221
|
+
// with a trailing separator so it composes with the relative source paths.
|
|
222
|
+
func sourceMapSourceRoot(options *innercore.CompilerOptions) string {
|
|
223
|
+
root := options.SourceRoot.AsString()
|
|
224
|
+
if len(root) > 0 {
|
|
225
|
+
root = innertspath.EnsureTrailingDirectorySeparator(root)
|
|
226
|
+
}
|
|
227
|
+
return root
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// SourceMapDirectory returns the directory the pinned compiler's source-map
|
|
231
|
+
// generator uses to resolve source paths. This is the generator's internal
|
|
232
|
+
// directory context, not the map's published sourceRoot field.
|
|
233
|
+
//
|
|
234
|
+
// A nonempty sourceRoot selects the host's common source directory. Otherwise
|
|
235
|
+
// mapRoot selects the map directory, projecting sourceFile's path into that
|
|
236
|
+
// root when sourceFile is present; a relative mapRoot is based on the common
|
|
237
|
+
// source directory and an absolute one on the host's base directory. Without
|
|
238
|
+
// either option, the output file's directory is used.
|
|
239
|
+
// The options and host must be nonnil; sourceFile may be nil.
|
|
240
|
+
//
|
|
241
|
+
// @evidence contracts/common.md#principled-implementation The maintained helper follows pinned emitter.getSourceMapDirectory's sourceRoot precedence, per-source mapRoot projection and relative-root anchoring, returning the exact generator base instead of assuming maps are based on an emitted file directory.
|
|
242
|
+
// @evidence contracts/common.md#clear-and-simple-design One supported public helper owns generator-directory policy for printing and downstream map consumers, avoiding independently implemented path-base rules.
|
|
243
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts Directory selection follows real compiler options and host context, including URL and relative roots, without a consumer-specific map repair or filesystem guessing.
|
|
244
|
+
// @evidence contracts/common.md#meaningful-documentation Native paragraphs distinguish internal generator context from published sourceRoot, describe option precedence and path projection, and state nonnil versus optional inputs.
|
|
245
|
+
// @evidence contracts/portability.md#os-neutral-implementation Compiler path helpers handle native roots and URL spelling separately, while per-source projection uses the host's actual current/common directories and case policy rather than an OS-name assumption.
|
|
246
|
+
// @evidence contracts/performance.md#efficient-algorithms Branching applies sourceRoot/mapRoot precedence and compiler path normalization/remapping over path text. Host CommonSourceDirectory/current-directory/case queries are delegated work and may compute or reuse source metadata; the absence of a local file loop does not bound those host costs. Centralizing this policy avoids separate consumer implementations, not all repeated path work.
|
|
247
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work This pure path-context calculation does not coordinate completed or in-flight work across requests; map consumers own any per-file index of its results.
|
|
248
|
+
// @evidence contracts/performance.md#bound-retention-and-release-resources Intermediate normalized/remapped path strings are invocation-local, and the returned directory string can retain newly allocated or borrowed backing bytes. Host-owned common-directory/source metadata remains with that host. This helper keeps no independent historical result cache, native handle or running task; callers determine the returned string's retention.
|
|
249
|
+
func SourceMapDirectory(options *innercore.CompilerOptions, host SourceMapHost, filePath innertspath.RootedFilePath, sourceFile *innerast.SourceFile) innertspath.RootedDirectoryPath {
|
|
250
|
+
if len(options.SourceRoot) > 0 {
|
|
251
|
+
return host.CommonSourceDirectory()
|
|
252
|
+
}
|
|
253
|
+
if len(options.MapRoot) > 0 {
|
|
254
|
+
return mapRootDirectory(options.MapRoot, host, sourceFile)
|
|
255
|
+
}
|
|
256
|
+
return filePath.Directory()
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// mapRootDirectory mirrors emitter.getMapRootDirectory: mapRoot resolved
|
|
260
|
+
// against the common source directory when relative and the base directory
|
|
261
|
+
// otherwise, then narrowed to sourceFile's projected directory beneath it.
|
|
262
|
+
func mapRootDirectory(mapRoot innertspath.SourceMapLocation, host SourceMapHost, sourceFile *innerast.SourceFile) innertspath.RootedDirectoryPath {
|
|
263
|
+
directory := mapRoot.ResolveDirectory(host.CommonSourceDirectory(), host.BaseDirectory())
|
|
264
|
+
if sourceFile != nil {
|
|
265
|
+
directory = inneroutputpaths.GetSourceFileNameInNewDir(
|
|
266
|
+
sourceFile.FileName(),
|
|
267
|
+
directory,
|
|
268
|
+
host.CommonSourceDirectory(),
|
|
269
|
+
host.CaseSensitivity(),
|
|
270
|
+
).Directory()
|
|
271
|
+
}
|
|
272
|
+
return directory
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// sourceMappingURL mirrors emitter.getSourceMappingURL: the value written after
|
|
276
|
+
// `//# sourceMappingURL=`, either an inline base64 data URL or the encoded path
|
|
277
|
+
// to the external `.js.map` (honoring mapRoot).
|
|
278
|
+
func sourceMappingURL(options *innercore.CompilerOptions, generator *innersourcemap.Generator, host SourceMapHost, filePath innertspath.RootedFilePath, sourceMapFilePath innertspath.RootedFilePath, sourceFile *innerast.SourceFile) string {
|
|
279
|
+
if options.InlineSourceMap.IsTrue() {
|
|
280
|
+
return generator.Base64DataURL()
|
|
281
|
+
}
|
|
282
|
+
sourceMapFile := sourceMapFilePath.BaseName()
|
|
283
|
+
if len(options.MapRoot) > 0 {
|
|
284
|
+
mapFilePath := mapRootDirectory(options.MapRoot, host, sourceFile).ResolveFile(sourceMapFile)
|
|
285
|
+
if options.MapRoot.IsRelative() {
|
|
286
|
+
return innerstringutil.EncodeURI(innertspath.GetRelativePathToDirectoryOrUrl(
|
|
287
|
+
filePath.Directory().AsString(),
|
|
288
|
+
mapFilePath.AsString(),
|
|
289
|
+
true,
|
|
290
|
+
host.CaseSensitivity(),
|
|
291
|
+
))
|
|
292
|
+
}
|
|
293
|
+
return innerstringutil.EncodeURI(mapFilePath.AsString())
|
|
294
|
+
}
|
|
295
|
+
return innerstringutil.EncodeURI(sourceMapFile)
|
|
296
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// gen_shims:hand-maintained
|
|
2
|
+
//
|
|
3
|
+
// Emit-pipeline assembly parts: pick the files tsgo would emit and resolve
|
|
4
|
+
// their output paths, so ttsc's driver can drive emit per file with a plugin
|
|
5
|
+
// transformer inserted ahead of the builtin chain.
|
|
6
|
+
package compiler
|
|
7
|
+
|
|
8
|
+
import (
|
|
9
|
+
_ "unsafe"
|
|
10
|
+
|
|
11
|
+
innerast "github.com/microsoft/TypeScript/tsc/internal/ast"
|
|
12
|
+
innercompiler "github.com/microsoft/TypeScript/tsc/internal/compiler"
|
|
13
|
+
innercore "github.com/microsoft/TypeScript/tsc/internal/core"
|
|
14
|
+
inneroutputpaths "github.com/microsoft/TypeScript/tsc/internal/outputpaths"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
// GetSourceFilesToEmit returns the source files tsgo would emit for the program
|
|
18
|
+
// (excludes .d.ts and external-library files), linked from the internal package.
|
|
19
|
+
// A nil targetSourceFiles selects every program file; forceDtsEmit and
|
|
20
|
+
// forceJsEmit select files whose declaration or script output would otherwise
|
|
21
|
+
// be suppressed.
|
|
22
|
+
//
|
|
23
|
+
// @evidence contracts/common.md#principled-implementation Linking the pinned compiler's own selection helper preserves its target-file, declaration and compiler-option eligibility decisions rather than recreating emit selection.
|
|
24
|
+
// @evidence contracts/common.md#clear-and-simple-design The direct declaration exposes selection independently of output writing, allowing the driver to insert transformers while retaining compiler ownership of eligible files.
|
|
25
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The symbol bridge exposes upstream behavior without replacing it; forceDtsEmit and forceJsEmit are actual compiler controls, not fixture exceptions.
|
|
26
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose describes emitted-file selection and internal linkage, with the acknowledgment separated from the Go linkage directive.
|
|
27
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This exposes upstream emit eligibility and does not choose native path identity or perform filesystem access.
|
|
28
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources GetSourceFilesToEmit declares a signature only; the implementation owns acquisition and release of resources.
|
|
29
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms GetSourceFilesToEmit declares a signature only; the implementation owns the processing strategy.
|
|
30
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work GetSourceFilesToEmit declares a signature only; the implementation owns any shared work.
|
|
31
|
+
//
|
|
32
|
+
//go:linkname GetSourceFilesToEmit github.com/microsoft/TypeScript/tsc/internal/compiler.getSourceFilesToEmit
|
|
33
|
+
func GetSourceFilesToEmit(host innercompiler.SourceFileMayBeEmittedHost, targetSourceFiles []*innerast.SourceFile, forceDtsEmit bool, forceJsEmit bool) []*innerast.SourceFile
|
|
34
|
+
|
|
35
|
+
// OutputPaths holds the resolved output file paths for one source file.
|
|
36
|
+
// Empty fields represent outputs disabled or suppressed by upstream policy,
|
|
37
|
+
// such as a JSON script destination identical to its source location. Resolved
|
|
38
|
+
// destinations do not certify that later emit or writing succeeds.
|
|
39
|
+
//
|
|
40
|
+
// @evidence contracts/common.md#principled-implementation The exact upstream output-path alias preserves separate script, declaration and map destinations, including absent outputs, without losing compiler-resolved path distinctions.
|
|
41
|
+
// @evidence contracts/common.md#clear-and-simple-design One compiler-owned result groups related outputs for a source file, avoiding independently recomputed paths at each sink.
|
|
42
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The alias does not insert consumer-specific filenames or alter output policy.
|
|
43
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose states per-file output ownership and the meaning of empty destinations.
|
|
44
|
+
// @evidence contracts/portability.md#os-neutral-implementation Output fields preserve the compiler's host-resolved native destinations, including absent outputs, rather than imposing URL spelling or an OS-derived case policy.
|
|
45
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
46
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
47
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
48
|
+
type OutputPaths = inneroutputpaths.OutputPaths
|
|
49
|
+
|
|
50
|
+
// ForceEmitPaths selects outputs GetOutputPathsFor resolves even when the
|
|
51
|
+
// compiler options would suppress them: declarations, scripts and declaration
|
|
52
|
+
// maps.
|
|
53
|
+
//
|
|
54
|
+
// @evidence contracts/common.md#principled-implementation The alias preserves upstream's force-selection record, so callers state each forced output class exactly as the emitter does.
|
|
55
|
+
// @evidence contracts/common.md#clear-and-simple-design One upstream record replaces a positional flag per output class.
|
|
56
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The fields are actual compiler emit controls rather than shim-specific overrides.
|
|
57
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names each selected output class, with a blank line before tags.
|
|
58
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources A type declaration acquires and holds no runtime resource.
|
|
59
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms A type declaration chooses no processing strategy.
|
|
60
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work A type declaration computes nothing, so there is no work to share.
|
|
61
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation This type declaration describes a data shape only; it opens no file, builds no path and branches on no platform.
|
|
62
|
+
type ForceEmitPaths = inneroutputpaths.ForceEmitPaths
|
|
63
|
+
|
|
64
|
+
// GetOutputPathsFor resolves script, declaration and map destinations using
|
|
65
|
+
// upstream extension and output-directory policy. The script extension can
|
|
66
|
+
// also be .jsx, .mjs, .cjs or .json; disabled or suppressed outputs are empty.
|
|
67
|
+
// The host supplies the common source directory, current directory and case
|
|
68
|
+
// policy. This is path selection, not proof that emit writes every destination.
|
|
69
|
+
// sourceFile, options and host must satisfy the upstream resolver's premises.
|
|
70
|
+
//
|
|
71
|
+
// @evidence contracts/common.md#principled-implementation The wrapper delegates the same source file, options, host and forced-output selection to the compiler's output-path algorithm, preserving root and output directory semantics.
|
|
72
|
+
// @evidence contracts/common.md#clear-and-simple-design Output placement remains in upstream's owning helper; this adapter only exposes that boundary to the driver.
|
|
73
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts No path is fabricated from a consumer or fixture name, and the upstream output resolver is neither copied nor patched.
|
|
74
|
+
// @evidence contracts/common.md#meaningful-documentation Native prose names the output classes, relevant directory options and host context, with a separate acknowledgment section.
|
|
75
|
+
// @evidence contracts/portability.md#os-neutral-implementation Upstream's output resolver receives the actual host directory and path-identity policy; the shim does not guess separators, drive roots or case sensitivity from an OS name.
|
|
76
|
+
// @evidence contracts/performance.md#bound-retention-and-release-resources Upstream allocates a returned OutputPaths object and constructs or borrows destination strings; their backing storage survives with the caller's result. Host-owned directory and case-policy state remains with the host. This bridge acquires no independent file handle or persistent result registry.
|
|
77
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms Upstream owns extension selection, path normalization, comparison and directory remapping, including work proportional to path text and any host directory lookup. This direct adapter chooses no separate output-path algorithm.
|
|
78
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work Output-path computation and any reusable common-directory or host metadata belong to the upstream resolver and host. This bridge coordinates no independent cache or cross-call producer.
|
|
79
|
+
func GetOutputPathsFor(sourceFile *innerast.SourceFile, options *innercore.CompilerOptions, host inneroutputpaths.OutputPathsHost, force ForceEmitPaths) *inneroutputpaths.OutputPaths {
|
|
80
|
+
return inneroutputpaths.GetOutputPathsFor(sourceFile, options, host, force)
|
|
81
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// gen_shims:hand-maintained
|
|
2
|
+
//
|
|
3
|
+
// Exposes tsgo's emit-stage internals so ttsc can assemble the emit pipeline
|
|
4
|
+
// from real tsgo parts (no tsgo source copy/edit): obtain the builtin
|
|
5
|
+
// transformer chain for a file and prepend a plugin transformer that shares the
|
|
6
|
+
// same EmitContext, so module-transform aliases plugin-generated imports.
|
|
7
|
+
package compiler
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
_ "unsafe"
|
|
11
|
+
|
|
12
|
+
innerast "github.com/microsoft/TypeScript/tsc/internal/ast"
|
|
13
|
+
innerprinter "github.com/microsoft/TypeScript/tsc/internal/printer"
|
|
14
|
+
innertransformers "github.com/microsoft/TypeScript/tsc/internal/transformers"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
// GetScriptTransformers returns tsgo's builtin emit transformer chain
|
|
18
|
+
// (type-erase, import-elision, runtime-syntax, module-transform, ...) for one
|
|
19
|
+
// source file, linked from the internal package via go:linkname.
|
|
20
|
+
// emitResolver must carry the EmitContext the chain transforms in; obtain it
|
|
21
|
+
// from the emit host's NewEmitResolver for that context.
|
|
22
|
+
//
|
|
23
|
+
// `sourceFile` is the marking target, not the file that gets transformed.
|
|
24
|
+
// Upstream reads it for two per-file constants (in-JS-file, JSX language
|
|
25
|
+
// variant) and, unless isolated modules without import elision, JSX transform
|
|
26
|
+
// or decorator metadata makes marking unnecessary, hands it to
|
|
27
|
+
// emitResolver.MarkLinkedReferencesRecursively, whose marks the import-elision
|
|
28
|
+
// transformer later reads back through EmitContext.ParseNode. A caller that runs a plugin pass first must therefore
|
|
29
|
+
// pass the PARSE tree here and the transformed tree to TransformSourceFile;
|
|
30
|
+
// upstream's own emitter passes one file to both only because it has nothing in
|
|
31
|
+
// between. Re-check this when the pin moves: a new use of the parameter inside
|
|
32
|
+
// getScriptTransformers could make the two roles diverge further.
|
|
33
|
+
//
|
|
34
|
+
// @evidence contracts/common.md#principled-implementation Linking the pinned builtin chain preserves compiler transform ordering; the parse-tree argument supplies stable linked-reference marks that transformed nodes retrieve through EmitContext provenance.
|
|
35
|
+
// @evidence contracts/common.md#clear-and-simple-design The helper exposes chain assembly without running transforms, keeping plugin insertion in the driver and builtin ordering in the compiler.
|
|
36
|
+
// @evidence contracts/common.md#prohibited-implementation-shortcuts The source-file distinction follows the pinned helper's marking semantics rather than masking an arbitrary transform failure; linkage exposes the function without replacing its implementation.
|
|
37
|
+
// @evidence contracts/common.md#meaningful-documentation Native paragraphs explain chain contents, marking versus transformation roles and the version-pin premise, with Go linkage retained outside the prose section.
|
|
38
|
+
// @evidenceExclude contracts/performance.md#bound-retention-and-release-resources GetScriptTransformers declares a signature only; the implementation owns acquisition and release of resources.
|
|
39
|
+
// @evidenceExclude contracts/performance.md#efficient-algorithms GetScriptTransformers declares a signature only; the implementation owns the processing strategy.
|
|
40
|
+
// @evidenceExclude contracts/performance.md#reuse-equivalent-work GetScriptTransformers declares a signature only; the implementation owns any shared work.
|
|
41
|
+
// @evidenceExclude contracts/portability.md#os-neutral-implementation GetScriptTransformers is a signature without a body here; path and platform behavior belongs to the implementation that supplies it.
|
|
42
|
+
//
|
|
43
|
+
//go:linkname GetScriptTransformers github.com/microsoft/TypeScript/tsc/internal/compiler.getScriptTransformers
|
|
44
|
+
func GetScriptTransformers(emitResolver innerprinter.EmitResolver, host innerprinter.EmitHost, sourceFile *innerast.SourceFile) []*innertransformers.Transformer
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module github.com/microsoft/TypeScript/tsc/shim/compiler
|
|
2
|
+
|
|
3
|
+
go 1.27
|
|
4
|
+
|
|
5
|
+
require github.com/microsoft/TypeScript/tsc v0.0.0-20261019224239-28534d760906
|
|
6
|
+
|
|
7
|
+
require (
|
|
8
|
+
github.com/Microsoft/go-winio v0.6.2 // indirect
|
|
9
|
+
github.com/klauspost/compress v1.20.0 // indirect
|
|
10
|
+
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
|
|
11
|
+
github.com/zeebo/xxh3 v1.1.0 // indirect
|
|
12
|
+
golang.org/x/sync v0.23.0 // indirect
|
|
13
|
+
golang.org/x/sys v0.48.0 // indirect
|
|
14
|
+
golang.org/x/text v0.42.0 // indirect
|
|
15
|
+
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
|
2
|
+
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
|
3
|
+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
|
4
|
+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
|
5
|
+
github.com/klauspost/compress v1.20.0 h1:a3C1ke2ohxFymNlb2HWAHjDeKCI90scRskErZkR0ezA=
|
|
6
|
+
github.com/klauspost/compress v1.20.0/go.mod h1:LUdAzn7YLVvxLpc7y3V1m40wESHTgc1422pwwBSKYuI=
|
|
7
|
+
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
|
|
8
|
+
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
|
9
|
+
github.com/microsoft/TypeScript/tsc v0.0.0-20261019224239-28534d760906 h1:Wn+Kp4ORyay6jJwvOng7G8pTD6HOP+Fwx8si66Wq7Bk=
|
|
10
|
+
github.com/microsoft/TypeScript/tsc v0.0.0-20261019224239-28534d760906/go.mod h1:28hWKaTYwRARPm0T9Y0XvdvYpU2HtjONzsMqAdYLucY=
|
|
11
|
+
github.com/peter-evans/patience v0.3.0 h1:rX0JdJeepqdQl1Sk9c9uvorjYYzL2TfgLX1adqYm9cA=
|
|
12
|
+
github.com/peter-evans/patience v0.3.0/go.mod h1:Kmxu5sY1NmBLFSStvXjX1wS9mIv7wMcP/ubucyMOAu0=
|
|
13
|
+
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
|
|
14
|
+
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
|
|
15
|
+
github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
|
|
16
|
+
github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
|
|
17
|
+
golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk=
|
|
18
|
+
golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
|
|
19
|
+
golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
|
|
20
|
+
golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
|
|
21
|
+
golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
|
|
22
|
+
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
|
|
23
|
+
gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
|
|
24
|
+
gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
|