ttsc 0.30.4 → 0.31.1

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.
Files changed (2089) hide show
  1. package/cmd/graphbench/main.go +2 -3
  2. package/cmd/graphdump/main.go +42 -16
  3. package/cmd/graphdump/run_declares_the_capability_its_output_carries_test.go +32 -18
  4. package/cmd/graphdump/run_reports_an_unknown_flag_without_exiting_the_process_test.go +10 -9
  5. package/cmd/graphdump/run_reports_an_unloadable_project_without_printing_a_dump_test.go +8 -7
  6. package/cmd/platform/command_operation_families_test.go +192 -0
  7. package/cmd/platform/main.go +11 -1
  8. package/cmd/ttsc/api_compile.go +166 -46
  9. package/cmd/ttsc/api_compile_branches_test.go +97 -10
  10. package/cmd/ttsc/api_transform.go +134 -46
  11. package/cmd/ttsc/api_transform_branches_test.go +10 -7
  12. package/cmd/ttsc/build.go +177 -68
  13. package/cmd/ttsc/build_branches_test.go +35 -7
  14. package/cmd/ttsc/cli_command_operation_families_test.go +1287 -0
  15. package/cmd/ttsc/cli_contract_helpers_test.go +82 -0
  16. package/cmd/ttsc/compiler_argument_cwd_test.go +57 -0
  17. package/cmd/ttsc/filter.go +31 -14
  18. package/cmd/ttsc/filter_resolves_flag_names_case_insensitively_test.go +10 -13
  19. package/cmd/ttsc/filter_strips_unknown_forwarded_flag_test.go +10 -16
  20. package/cmd/ttsc/flags_gen.go +2 -2
  21. package/cmd/ttsc/helpers_test.go +67 -10
  22. package/cmd/ttsc/main.go +122 -21
  23. package/cmd/ttsc/main_alias_branches_test.go +35 -9
  24. package/cmd/ttsc/testdata/cli_operation_families/TestAPITransformEnvelopeCarriesReferenceGraph/ambient.d.ts +1 -0
  25. package/cmd/ttsc/testdata/cli_operation_families/TestAPITransformEnvelopeCarriesReferenceGraph/main.ts +2 -0
  26. package/cmd/ttsc/testdata/cli_operation_families/TestAPITransformEnvelopeCarriesReferenceGraph/mytype.ts +1 -0
  27. package/cmd/ttsc/testdata/cli_operation_families/TestAPITransformEnvelopeCarriesReferenceGraph/tsconfig.base.json +3 -0
  28. package/cmd/ttsc/testdata/cli_operation_families/TestAPITransformEnvelopeCarriesReferenceGraph/tsconfig.json +5 -0
  29. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/index.ts +1 -0
  30. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/src/decorated/main.ts +10 -0
  31. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/src/decorated/types.ts +3 -0
  32. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/src/helpers.ts +1 -0
  33. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/src/isolated.ts +1 -0
  34. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/src/main.ts +7 -0
  35. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/src/nested/model.ts +1 -0
  36. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPICompileAndTransform/tsconfig.json +14 -0
  37. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPITransformUsesCurrentDirectory/index.ts +1 -0
  38. package/cmd/ttsc/testdata/cli_operation_families/TestCLIAPITransformUsesCurrentDirectory/tsconfig.json +7 -0
  39. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildAllowsUnusedTypeParametersOnOverloadSignatures/index.ts +4 -0
  40. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildAllowsUnusedTypeParametersOnOverloadSignatures/tsconfig.json +11 -0
  41. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildBlocksSemanticDiagnostics/index.ts +2 -0
  42. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildBlocksSemanticDiagnostics/tsconfig.json +9 -0
  43. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildBlocksSyntacticDiagnostics/index.ts +2 -0
  44. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildBlocksSyntacticDiagnostics/tsconfig.json +8 -0
  45. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildBlocksUnusedParameters/index.ts +3 -0
  46. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildBlocksUnusedParameters/tsconfig.json +10 -0
  47. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildEmitErrorRejectsManifest/index.ts +1 -0
  48. package/cmd/ttsc/testdata/cli_operation_families/TestCLIProjectBuildEmitErrorRejectsManifest/tsconfig.json +1 -0
  49. package/cmd/ttsc/testdata/cli_operation_families/TestCLIReportsDiagnosticsWithoutEmit/index.ts +1 -0
  50. package/cmd/ttsc/testdata/cli_operation_families/TestCLIReportsDiagnosticsWithoutEmit/tsconfig.json +8 -0
  51. package/cmd/ttsc/testdata/cli_operation_families/shared-value-one/project/emit.json +8 -0
  52. package/cmd/ttsc/testdata/cli_operation_families/shared-value-one/project/flag-shaped.json +7 -0
  53. package/cmd/ttsc/testdata/cli_operation_families/shared-value-one/project/index.ts +2 -0
  54. package/cmd/ttsc/testdata/cli_operation_families/shared-value-one/project/nested/tsconfig.app.json +11 -0
  55. package/cmd/ttsc/testdata/cli_operation_families/shared-value-one/project/outside.json +8 -0
  56. package/cmd/ttsc/testdata/cli_operation_families/shared-value-one/project/tsconfig.json +8 -0
  57. package/cmd/ttscgraph/auxiliary_identity_state_tracks_retargets_not_source_contents_test.go +26 -15
  58. package/cmd/ttscgraph/disk_realpath_other.go +2 -0
  59. package/cmd/ttscgraph/dump.go +46 -29
  60. package/cmd/ttscgraph/prepared_projection.go +61 -0
  61. package/cmd/ttscgraph/projection_fixture_test.go +96 -0
  62. package/cmd/ttscgraph/run_dump_claims_artifacts_only_when_it_asked_test.go +30 -5
  63. package/cmd/ttscgraph/run_dump_declares_the_capability_its_output_carries_test.go +6 -1
  64. package/cmd/ttscgraph/run_dump_emits_only_checker_verified_member_relations_test.go +12 -5
  65. package/cmd/ttscgraph/run_dump_prints_the_graph_as_json_test.go +17 -12
  66. package/cmd/ttscgraph/run_help_version_and_bad_flags_exit_codes_test.go +8 -3
  67. package/cmd/ttscgraph/serve.go +116 -79
  68. package/cmd/ttscgraph/serve_adopts_a_republished_artifact_set_test.go +16 -167
  69. package/cmd/ttscgraph/serve_adopts_a_republished_set_over_the_shard_protocol_test.go +122 -0
  70. package/cmd/ttscgraph/serve_answers_a_project_that_implements_its_own_ambient_declaration_test.go +35 -7
  71. package/cmd/ttscgraph/serve_early_error_encode_failure_is_observable_test.go +5 -0
  72. package/cmd/ttscgraph/serve_error_response_still_names_its_mode_test.go +10 -5
  73. package/cmd/ttscgraph/serve_git_ignore_projection_test.go +150 -0
  74. package/cmd/ttscgraph/serve_keeps_a_startup_set_a_client_never_mentions_test.go +69 -0
  75. package/cmd/ttscgraph/serve_object_members_refresh_without_identity_collisions_test.go +82 -0
  76. package/cmd/ttscgraph/serve_phase_trace_accounts_for_load_failure_test.go +9 -3
  77. package/cmd/ttscgraph/serve_phase_trace_is_opt_in_and_payload_free_test.go +12 -6
  78. package/cmd/ttscgraph/serve_projects_an_artifact_no_source_owns_test.go +13 -16
  79. package/cmd/ttscgraph/serve_protocol_fails_the_stream_on_an_unaddressable_request_line_test.go +10 -9
  80. package/cmd/ttscgraph/serve_protocol_negotiates_incremental_shards_test.go +37 -2
  81. package/cmd/ttscgraph/serve_protocol_retries_session_creation_test.go +7 -2
  82. package/cmd/ttscgraph/serve_protocol_reuses_session_test.go +13 -3
  83. package/cmd/ttscgraph/serve_session_applies_source_edit_incrementally_test.go +12 -7
  84. package/cmd/ttscgraph/serve_session_fails_closed_on_deleted_config_test.go +12 -7
  85. package/cmd/ttscgraph/serve_session_fails_closed_on_invalid_config_test.go +8 -3
  86. package/cmd/ttscgraph/serve_session_keeps_base_url_fallback_unchanged_test.go +7 -2
  87. package/cmd/ttscgraph/serve_session_keeps_change_detection_live_after_initial_dump_error_test.go +66 -0
  88. package/cmd/ttscgraph/serve_session_keeps_esm_directory_candidate_unchanged_test.go +12 -3
  89. package/cmd/ttscgraph/serve_session_keeps_exports_blocked_file_candidates_unchanged_test.go +8 -3
  90. package/cmd/ttscgraph/serve_session_keeps_inactive_conditional_export_unchanged_test.go +12 -3
  91. package/cmd/ttscgraph/serve_session_keeps_lower_priority_module_candidate_unchanged_test.go +14 -8
  92. package/cmd/ttscgraph/serve_session_keeps_lower_priority_paths_pattern_unchanged_test.go +12 -3
  93. package/cmd/ttscgraph/serve_session_keeps_missing_literal_root_unchanged_test.go +7 -2
  94. package/cmd/ttscgraph/serve_session_keeps_nonlongest_root_dirs_candidate_unchanged_test.go +12 -3
  95. package/cmd/ttscgraph/serve_session_rebuilds_import_graph_change_test.go +17 -8
  96. package/cmd/ttscgraph/serve_session_reloads_commonjs_package_entry_for_esm_test.go +11 -2
  97. package/cmd/ttscgraph/serve_session_reloads_created_literal_root_test.go +7 -2
  98. package/cmd/ttscgraph/serve_session_reloads_extended_config_change_test.go +9 -4
  99. package/cmd/ttscgraph/serve_session_reloads_module_suffix_candidate_test.go +13 -4
  100. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_conditional_export_test.go +13 -8
  101. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_config_types_test.go +7 -2
  102. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_excluded_import_test.go +11 -3
  103. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_package_export_test.go +11 -2
  104. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_package_import_test.go +11 -2
  105. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_path_alias_test.go +11 -2
  106. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_reference_path_test.go +11 -2
  107. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_root_dirs_target_test.go +11 -2
  108. package/cmd/ttscgraph/serve_session_reloads_newly_resolved_type_reference_test.go +11 -2
  109. package/cmd/ttscgraph/serve_session_reloads_root_file_set_test.go +11 -5
  110. package/cmd/ttscgraph/serve_session_reloads_source_deleted_during_load_test.go +16 -9
  111. package/cmd/ttscgraph/serve_session_reloads_superseding_module_candidates_test.go +18 -13
  112. package/cmd/ttscgraph/serve_session_reloads_transitive_project_reference_test.go +14 -5
  113. package/cmd/ttscgraph/serve_session_reloads_when_program_plugin_linked_test.go +13 -8
  114. package/cmd/ttscgraph/serve_session_retries_a_pending_dump_before_unchanged_test.go +62 -0
  115. package/cmd/ttscgraph/serve_session_reuses_unchanged_preamble_source_test.go +21 -0
  116. package/cmd/ttscgraph/serve_session_reuses_unchanged_snapshot_test.go +12 -7
  117. package/cmd/ttscgraph/serve_session_revisits_source_edited_during_load_test.go +18 -8
  118. package/cmd/ttscgraph/serve_session_tolerates_os_invalid_resolution_candidate_test.go +13 -9
  119. package/cmd/ttscgraph/serve_session_tracks_all_module_specifier_forms_test.go +12 -3
  120. package/cmd/ttscgraph/serve_session_tracks_diamond_project_references_once_test.go +12 -8
  121. package/cmd/ttscgraph/serve_shards.go +356 -279
  122. package/cmd/ttscgraph/serve_shards_abandoned_generation_converges_on_retry_test.go +41 -16
  123. package/cmd/ttscgraph/serve_shards_delete_removed_source_test.go +14 -4
  124. package/cmd/ttscgraph/serve_shards_external_endpoints_test.go +18 -2
  125. package/cmd/ttscgraph/serve_shards_keep_source_distributed_dependencies_at_the_boundary_test.go +36 -5
  126. package/cmd/ttscgraph/serve_shards_match_full_dump_oracle_test.go +12 -3
  127. package/cmd/ttscgraph/serve_shards_merge_pending_and_new_edits_test.go +36 -3
  128. package/cmd/ttscgraph/serve_shards_prune_unreferenced_external_endpoints_test.go +18 -2
  129. package/cmd/ttscgraph/serve_shards_publish_created_source_test.go +16 -13
  130. package/cmd/ttscgraph/serve_shards_rebuild_declaration_edit_test.go +14 -4
  131. package/cmd/ttscgraph/serve_shards_refresh_cross_file_implementation_test.go +24 -5
  132. package/cmd/ttscgraph/serve_shards_refresh_dependent_diagnostics_test.go +30 -7
  133. package/cmd/ttscgraph/serve_shards_rename_moves_source_identity_test.go +14 -11
  134. package/cmd/ttscgraph/serve_shards_retry_preserves_committed_generation_test.go +17 -7
  135. package/cmd/ttscgraph/serve_shards_reuse_unaffected_sources_test.go +21 -7
  136. package/cmd/ttscgraph/serve_snapshot_proves_its_program_without_a_second_read_test.go +57 -16
  137. package/cmd/ttscgraph/serve_source_encoding_test.go +133 -0
  138. package/cmd/ttscserver/command_operation_families_test.go +207 -0
  139. package/cmd/ttscserver/main.go +121 -39
  140. package/cmd/ttscserver/resolve_launch_uses_native_flag_authority_test.go +147 -0
  141. package/cmd/ttscserver/run_lsp_forwards_execute_command_advertisement_flags_test.go +7 -0
  142. package/cmd/ttscserver/run_lsp_prefers_tsgo_flag_test.go +13 -1
  143. package/cmd/ttscserver/run_lsp_reports_getwd_error_test.go +5 -0
  144. package/cmd/ttscserver/run_lsp_reports_server_error_test.go +10 -3
  145. package/cmd/ttscserver/run_lsp_uses_native_plugin_manifest_source_test.go +13 -10
  146. package/cmd/ttscserver/run_lsp_uses_tsgo_environment_test.go +10 -3
  147. package/driver/authored_region_maps_positions_around_the_preamble_test.go +95 -0
  148. package/driver/build_information_uses_selected_output_identity_test.go +148 -0
  149. package/driver/check_observations.go +67 -0
  150. package/driver/config_discovery.go +93 -24
  151. package/driver/declaration_shape.go +9 -0
  152. package/driver/diagnostics_preamble.go +8 -7
  153. package/driver/emit_containment.go +29 -8
  154. package/driver/emit_plugin.go +106 -36
  155. package/driver/emit_plugin_output.go +26 -2
  156. package/driver/emit_provenance.go +155 -0
  157. package/driver/graph.go +54 -20
  158. package/driver/host.go +26 -3
  159. package/driver/input_observation.go +78 -16
  160. package/driver/input_observation_test.go +34 -11
  161. package/driver/lsp.go +401 -30
  162. package/driver/overlay.go +69 -2
  163. package/driver/plugins.go +256 -24
  164. package/driver/private_result.go +43 -0
  165. package/driver/program.go +439 -95
  166. package/driver/resolution_candidates.go +63 -14
  167. package/driver/resolution_candidates_test.go +28 -0
  168. package/driver/resolutioninputs/recorder.cjs +1149 -0
  169. package/driver/resolutioninputs/resolutioninputs.go +37 -0
  170. package/driver/rewrite.go +373 -420
  171. package/driver/session.go +80 -12
  172. package/driver/sourcemap_preamble.go +38 -16
  173. package/driver/transform_dependencies.go +38 -10
  174. package/driver/transform_dependencies_declares_every_file_without_a_contributor_test.go +9 -8
  175. package/driver/transform_dependencies_drops_a_self_reported_dependency_test.go +7 -6
  176. package/driver/transform_dependencies_keys_a_reported_path_like_the_envelope_test.go +9 -9
  177. package/driver/transform_dependencies_requires_every_contributor_to_declare_test.go +10 -5
  178. package/driver/transform_dependencies_stays_silent_for_an_undeclared_contributor_test.go +8 -6
  179. package/driver/transform_dependencies_withdraws_completeness_after_an_unusable_dependency_test.go +9 -5
  180. package/driver/transform_source_map.go +388 -0
  181. package/driver/windowsjunction/create_preserves_existing_directory_windows_test.go +48 -0
  182. package/driver/windowsjunction/create_treats_paths_as_data_windows_test.go +55 -0
  183. package/driver/windowsjunction/windowsjunction.go +17 -1
  184. package/go.mod +10 -10
  185. package/go.sum +10 -10
  186. package/internal/cwd/cwd.go +13 -0
  187. package/internal/e2etrace/artifact.go +147 -0
  188. package/internal/e2etrace/completion_hints.go +35 -0
  189. package/internal/e2etrace/completion_hints_test.go +76 -0
  190. package/internal/e2etrace/e2etrace.go +303 -0
  191. package/internal/e2etrace/output.go +50 -0
  192. package/internal/graph/artifacts.go +69 -12
  193. package/internal/graph/artifacts_index_what_a_plugin_published_test.go +19 -8
  194. package/internal/graph/artifacts_survive_a_partial_rebuild_test.go +11 -12
  195. package/internal/graph/assigned_implementations_of_declaration_file_symbols_leave_no_edge_source_test.go +10 -12
  196. package/internal/graph/assigned_implementations_of_node_modules_symbols_leave_no_edge_source_test.go +7 -1
  197. package/internal/graph/build.go +122 -38
  198. package/internal/graph/build_files_reuses_committed_cross_file_endpoints_test.go +9 -3
  199. package/internal/graph/build_keeps_source_distributed_dependencies_at_the_external_boundary_test.go +10 -1
  200. package/internal/graph/build_records_a_node_per_top_level_declaration_test.go +10 -4
  201. package/internal/graph/build_releases_the_scratch_it_no_longer_reads_test.go +22 -15
  202. package/internal/graph/decorators.go +18 -0
  203. package/internal/graph/decorators_capture_name_and_literal_arguments_test.go +9 -4
  204. package/internal/graph/diagnostics.go +21 -8
  205. package/internal/graph/doc_refs_are_the_use_the_checker_already_counts_test.go +25 -13
  206. package/internal/graph/doc_refs_resolve_documentation_links_test.go +19 -15
  207. package/internal/graph/doc_tags.go +28 -19
  208. package/internal/graph/doc_tags_are_claimed_before_they_are_read_test.go +16 -6
  209. package/internal/graph/doc_tags_capture_every_unrecognized_tag_test.go +9 -2
  210. package/internal/graph/doc_tags_read_only_what_the_parser_attached_test.go +12 -8
  211. package/internal/graph/doc_tags_stop_at_the_external_boundary_test.go +11 -1
  212. package/internal/graph/doc_tags_survive_line_endings_and_repeated_blocks_test.go +16 -6
  213. package/internal/graph/dump.go +200 -51
  214. package/internal/graph/dump_checkout_paths_are_stable_test.go +9 -2
  215. package/internal/graph/dump_diagnostics_ride_the_generation_that_built_it_test.go +10 -11
  216. package/internal/graph/dump_evidence_skips_leading_trivia_test.go +8 -2
  217. package/internal/graph/dump_is_a_function_of_the_source_test.go +12 -13
  218. package/internal/graph/dump_never_serializes_a_list_as_null_test.go +9 -9
  219. package/internal/graph/dump_path_mapper_caches_alias_resolution_test.go +10 -2
  220. package/internal/graph/dump_path_mapper_rejects_unportable_roots_and_collisions_test.go +53 -0
  221. package/internal/graph/{dump_paths_are_portable_and_injective_test.go → dump_path_mapper_uses_portable_coordinates_test.go} +8 -43
  222. package/internal/graph/dump_paths.go +61 -25
  223. package/internal/graph/dump_paths_canonicalize_windows_short_root_test.go +45 -8
  224. package/internal/graph/dump_rejects_provenance_only_path_errors_test.go +5 -0
  225. package/internal/graph/dump_serializes_the_full_graph_test.go +13 -19
  226. package/internal/graph/dump_symlink_project_publishes_matching_base_test.go +8 -0
  227. package/internal/graph/dump_uses_ecma_line_terminators_test.go +12 -6
  228. package/internal/graph/duplicate_variable_object_members_keep_first_declaration_test.go +11 -8
  229. package/internal/graph/edge_spans_point_to_resolved_usage_test.go +13 -5
  230. package/internal/graph/edges.go +44 -47
  231. package/internal/graph/edges_cover_class_level_references_test.go +14 -11
  232. package/internal/graph/enum_initializer_calls_are_edges_test.go +13 -3
  233. package/internal/graph/enum_members_carry_their_names_on_the_enum_node_test.go +19 -26
  234. package/internal/graph/exports.go +3 -5
  235. package/internal/graph/file_diagnostics_match_tsgo_code_and_location_test.go +9 -4
  236. package/internal/graph/file_diagnostics_report_code_column_and_message_test.go +11 -5
  237. package/internal/graph/function_locals_do_not_collide_test.go +27 -7
  238. package/internal/graph/gitignore.go +25 -12
  239. package/internal/graph/graph.go +167 -52
  240. package/internal/graph/heritage_edges_cover_implements_and_interface_extends_test.go +11 -3
  241. package/internal/graph/heritage_edges_keep_extends_and_implements_to_same_base_test.go +6 -0
  242. package/internal/graph/heritage_edges_record_extends_versus_implements_origin_test.go +9 -3
  243. package/internal/graph/heritage_edges_traverse_barrels_and_stop_at_external_leaves_test.go +11 -4
  244. package/internal/graph/line_model.go +44 -25
  245. package/internal/graph/literals.go +6 -7
  246. package/internal/graph/literals_are_absent_when_the_type_admits_more_than_it_can_name_test.go +10 -5
  247. package/internal/graph/literals_cover_enum_members_the_graph_has_no_nodes_for_test.go +15 -17
  248. package/internal/graph/literals_do_not_depend_on_declaration_line_wrapping_test.go +10 -9
  249. package/internal/graph/literals_render_every_value_in_typescript_source_form_test.go +11 -11
  250. package/internal/graph/literals_resolve_through_alias_indirection_test.go +11 -11
  251. package/internal/graph/member_relation_edges_follow_checker_validity_test.go +11 -2
  252. package/internal/graph/member_relation_edges_preserve_checker_boundaries_test.go +11 -1
  253. package/internal/graph/member_relation_edges_reject_checker_invalid_pairs_test.go +12 -7
  254. package/internal/graph/namespace_dotted_form_qualifies_deeply_test.go +12 -3
  255. package/internal/graph/namespace_members_become_qualified_nodes_and_edges_test.go +12 -2
  256. package/internal/graph/node_identity_is_position_invariant_test.go +8 -2
  257. package/internal/graph/node_ids_preserve_hash_bearing_components_test.go +10 -2
  258. package/internal/graph/node_modifiers_emit_union_strings_test.go +13 -12
  259. package/internal/graph/nodes_are_marked_exported_through_the_export_table_test.go +12 -14
  260. package/internal/graph/object_literal_declarations_resolve_calls_test.go +170 -0
  261. package/internal/graph/object_literal_members_ride_on_the_snapshot_test.go +14 -13
  262. package/internal/graph/object_member_signatures_preserve_literal_whitespace_test.go +11 -7
  263. package/internal/graph/object_members.go +100 -1
  264. package/internal/graph/overload_implementation_replaces_signature_test.go +13 -2
  265. package/internal/graph/property_member_edges_remain_owner_visible_test.go +9 -3
  266. package/internal/graph/provenance.go +172 -87
  267. package/internal/graph/resolve.go +46 -12
  268. package/internal/graph/resolve_prefers_implementation_declaration_test.go +10 -2
  269. package/internal/graph/resolve_unwraps_barrel_reexport_to_real_declaration_test.go +16 -20
  270. package/internal/graph/source.go +16 -6
  271. package/internal/graph/source_texts_cover_every_resident_program_source_test.go +11 -7
  272. package/internal/graph/type_ref_edges_cover_typeof_as_satisfies_test.go +21 -2
  273. package/internal/graph/type_ref_edges_resolve_named_types_across_files_test.go +8 -3
  274. package/internal/graph/value_access_edges_cover_properties_test.go +11 -3
  275. package/internal/graph/value_call_edges_attribute_function_assignments_to_members_test.go +10 -4
  276. package/internal/graph/value_call_edges_cover_jsx_components_test.go +12 -8
  277. package/internal/graph/value_call_edges_cover_methods_and_constructors_test.go +12 -9
  278. package/internal/graph/value_call_edges_cover_variable_bound_callables_test.go +9 -3
  279. package/internal/graph/value_call_edges_do_not_double_record_invoked_member_access_test.go +10 -3
  280. package/internal/graph/value_call_edges_record_construct_versus_call_origin_test.go +12 -9
  281. package/internal/graph/value_call_edges_resolve_across_files_and_dedupe_test.go +10 -3
  282. package/internal/graph/value_call_edges_skip_self_and_unresolved_test.go +16 -5
  283. package/internal/graph/wire_node_ids_share_alias_resolution_test.go +10 -4
  284. package/internal/graphsymbols/position_helpers_follow_ecma_line_terminators_test.go +16 -4
  285. package/internal/graphsymbols/provider.go +278 -113
  286. package/internal/lspserver/lsp_clean_didopen_refreshes_compiler_state_test.go +14 -12
  287. package/internal/lspserver/lsp_completion_gate_never_refuses_a_matching_line_test.go +7 -1
  288. package/internal/lspserver/lsp_completion_hints_longest_trigger_wins_test.go +30 -5
  289. package/internal/lspserver/lsp_completion_hints_nearest_trigger_wins_test.go +5 -0
  290. package/internal/lspserver/lsp_completion_merges_into_upstream_response_test.go +23 -10
  291. package/internal/lspserver/lsp_completion_nearest_hint_replaces_nearest_filter_test.go +7 -1
  292. package/internal/lspserver/lsp_completion_preserves_completion_list_extensions_test.go +13 -5
  293. package/internal/lspserver/lsp_completion_refuses_hints_inside_a_string_literal_test.go +11 -7
  294. package/internal/lspserver/lsp_completion_replaces_full_filter_in_rank_order_test.go +12 -2
  295. package/internal/lspserver/lsp_completion_request.go +5 -26
  296. package/internal/lspserver/lsp_completion_scope.go +13 -10
  297. package/internal/lspserver/lsp_completion_scope_bench_test.go +11 -5
  298. package/internal/lspserver/lsp_completion_scope_classifies_regex_statement_and_operator_boundaries_test.go +8 -1
  299. package/internal/lspserver/lsp_completion_scope_ignores_jsdoc_bytes_in_literals_test.go +11 -10
  300. package/internal/lspserver/lsp_completion_scope_refuses_regex_hints_test.go +7 -3
  301. package/internal/lspserver/lsp_completion_trigger_uses_last_rune_test.go +6 -0
  302. package/internal/lspserver/lsp_deleted_watched_file_withdraws_plugin_diagnostics_test.go +11 -10
  303. package/internal/lspserver/lsp_didsave_keeps_the_incremental_changed_uri_path_test.go +12 -9
  304. package/internal/lspserver/lsp_document_diagnostics_omits_cached_project_when_current_result_has_none_test.go +17 -5
  305. package/internal/lspserver/lsp_envelope.go +84 -11
  306. package/internal/lspserver/lsp_executable_project_input_change_requests_launcher_restart_test.go +12 -9
  307. package/internal/lspserver/lsp_external_watched_change_retains_program_test.go +8 -2
  308. package/internal/lspserver/lsp_frame.go +42 -10
  309. package/internal/lspserver/lsp_hints_absence_is_not_an_error_test.go +16 -15
  310. package/internal/lspserver/lsp_hints_refresh_coalesces_concurrent_requests_test.go +21 -12
  311. package/internal/lspserver/lsp_hints_refresh_ignores_a_superseded_generation_test.go +20 -12
  312. package/internal/lspserver/lsp_hints_refresh_keeps_each_producer_isolated_test.go +30 -9
  313. package/internal/lspserver/lsp_hints_refresh_replaces_the_session_snapshot_test.go +25 -18
  314. package/internal/lspserver/lsp_hints_refresh_scheduled_by_editor_events_test.go +12 -12
  315. package/internal/lspserver/lsp_hints_refresh_serves_completion_while_running_test.go +21 -8
  316. package/internal/lspserver/lsp_index_byte_from_bounds_its_search_start_test.go +9 -7
  317. package/internal/lspserver/lsp_initialize_constrains_position_encoding_to_utf16_test.go +57 -21
  318. package/internal/lspserver/lsp_late_completion_trigger_is_reported_once_test.go +16 -17
  319. package/internal/lspserver/lsp_native_completion_hints_decode_flat_lint_wire_test.go +8 -2
  320. package/internal/lspserver/lsp_native_completion_hints_grouped_compatibility_boundary_test.go +5 -0
  321. package/internal/lspserver/lsp_native_plugin_source.go +381 -202
  322. package/internal/lspserver/lsp_native_plugin_source_ends_the_session_on_a_selection_input_test.go +234 -0
  323. package/internal/lspserver/lsp_native_reply_policies_test.go +475 -0
  324. package/internal/lspserver/lsp_native_reply_policy.go +232 -0
  325. package/internal/lspserver/lsp_native_resident.go +171 -57
  326. package/internal/lspserver/lsp_plugin.go +372 -68
  327. package/internal/lspserver/lsp_plugin_completion_resolve_stays_local_test.go +13 -4
  328. package/internal/lspserver/lsp_plugin_selection_inputs.go +283 -0
  329. package/internal/lspserver/lsp_plugin_selection_inputs_follow_directory_case_semantics_windows_test.go +81 -0
  330. package/internal/lspserver/lsp_position_conversions_span_astral_and_combining_runes_test.go +33 -11
  331. package/internal/lspserver/lsp_project_context_transport_identity_test.go +14 -2
  332. package/internal/lspserver/lsp_project_diagnostics.go +25 -4
  333. package/internal/lspserver/lsp_project_diagnostics_capability_is_independent_test.go +13 -2
  334. package/internal/lspserver/lsp_project_diagnostics_program_input_overlap_refreshes_all_producers_test.go +14 -4
  335. package/internal/lspserver/lsp_project_diagnostics_refresh_accumulates_owner_freshness_test.go +8 -2
  336. package/internal/lspserver/lsp_project_diagnostics_refresh_keeps_each_producer_last_good_test.go +10 -5
  337. package/internal/lspserver/lsp_project_diagnostics_refreshes_only_input_owners_test.go +14 -2
  338. package/internal/lspserver/lsp_project_diagnostics_resume_preserves_generation_test.go +8 -2
  339. package/internal/lspserver/lsp_project_diagnostics_translates_relative_client_project_test.go +15 -11
  340. package/internal/lspserver/lsp_project_input_ownership_resolves_declared_spellings_test.go +17 -8
  341. package/internal/lspserver/lsp_project_input_path_key_windows.go +16 -16
  342. package/internal/lspserver/lsp_project_input_path_key_windows_test.go +34 -18
  343. package/internal/lspserver/lsp_project_input_registration.go +5 -1
  344. package/internal/lspserver/lsp_project_input_registration_rechecks_selection_baseline_test.go +10 -4
  345. package/internal/lspserver/lsp_project_input_registration_reconciles_rejected_pending_request_test.go +5 -0
  346. package/internal/lspserver/lsp_project_input_registration_shapes_patterns_test.go +9 -3
  347. package/internal/lspserver/lsp_project_input_watchers_anchor_missing_paths_test.go +8 -3
  348. package/internal/lspserver/lsp_project_inputs.go +203 -59
  349. package/internal/lspserver/lsp_project_inputs_match_missing_exact_and_glob_test.go +10 -6
  350. package/internal/lspserver/lsp_project_inputs_reject_invalid_and_foreign_snapshots_test.go +25 -2
  351. package/internal/lspserver/lsp_proxy.go +239 -80
  352. package/internal/lspserver/lsp_refresh.go +16 -1
  353. package/internal/lspserver/lsp_reload_directories_compare_immediate_topology_test.go +66 -19
  354. package/internal/lspserver/lsp_reload_directories_separate_glob_territory_test.go +26 -6
  355. package/internal/lspserver/lsp_reload_file_fingerprint_preserves_raw_symlink_target_test.go +12 -6
  356. package/internal/lspserver/lsp_reload_fingerprints_read_a_junction_as_a_link_test.go +76 -0
  357. package/internal/lspserver/lsp_resident_falls_back_when_serve_unsupported_test.go +20 -13
  358. package/internal/lspserver/lsp_resident_invalidation_broadcasts_program_input_overlap_test.go +9 -4
  359. package/internal/lspserver/lsp_resident_invalidation_targets_project_input_owners_test.go +6 -1
  360. package/internal/lspserver/lsp_resident_maps_verb_args_test.go +5 -0
  361. package/internal/lspserver/lsp_same_transport_entries_are_deduplicated_test.go +10 -1
  362. package/internal/lspserver/lsp_server.go +124 -21
  363. package/internal/lspserver/lsp_symbols.go +92 -13
  364. package/internal/lspserver/lsp_watched_file_changes_reach_compiler_caches_test.go +11 -10
  365. package/internal/sourceprocess/complete_group.go +70 -0
  366. package/internal/sourceprocess/complete_group_preserves_original_wait_and_requires_independent_absence_test.go +145 -0
  367. package/internal/sourceprocess/contain_unix.go +143 -0
  368. package/internal/sourceprocess/contain_windows.go +439 -0
  369. package/internal/sourceprocess/darwin_group_retirement_preserves_phase_evidence_test.go +287 -0
  370. package/internal/sourceprocess/observe_exit_darwin.go +57 -0
  371. package/internal/sourceprocess/observe_exit_linux.go +27 -0
  372. package/internal/sourceprocess/observe_exit_other.go +11 -0
  373. package/internal/sourceprocess/reap_linux.go +31 -0
  374. package/internal/sourceprocess/reap_other.go +10 -0
  375. package/internal/sourceprocess/request_preserves_native_command_inputs_test.go +86 -0
  376. package/internal/sourceprocess/run.go +216 -0
  377. package/internal/sourceprocess/started_windows.go +41 -0
  378. package/internal/sourceprocess/target_windows.go +211 -0
  379. package/internal/sourceprocess/windows_job_accounting_rejects_invalid_boundary_test.go +97 -0
  380. package/internal/sourceprocess/windows_started_publication_distinguishes_pending_from_refusal_test.go +76 -0
  381. package/internal/sourceprocess/windows_target_owns_suspended_admission_test.go +179 -0
  382. package/internal/watchhelper/run.go +42 -0
  383. package/internal/watchhelper/run_linux.go +323 -0
  384. package/internal/watchhelper/run_linux_test.go +418 -0
  385. package/internal/watchhelper/run_other.go +16 -0
  386. package/internal/watchhelper/run_windows.go +471 -0
  387. package/internal/watchhelper/watchhelper.go +106 -0
  388. package/internal/watchhelper/windows_notifications_preserve_mutations_without_access_noise_test.go +506 -0
  389. package/lib/TtscCompiler.d.ts +118 -21
  390. package/lib/TtscCompiler.js +175 -179
  391. package/lib/TtscCompiler.js.map +1 -1
  392. package/lib/TtscService.d.ts +66 -18
  393. package/lib/TtscService.js +81 -24
  394. package/lib/TtscService.js.map +1 -1
  395. package/lib/TtscServiceRequestOptions.d.ts +21 -0
  396. package/lib/TtscServiceRequestOptions.js +3 -0
  397. package/lib/TtscServiceRequestOptions.js.map +1 -0
  398. package/lib/compiler/internal/CapturedProcessOutput.d.ts +61 -0
  399. package/lib/compiler/internal/CapturedProcessOutput.js +3 -0
  400. package/lib/compiler/internal/CapturedProcessOutput.js.map +1 -0
  401. package/lib/compiler/internal/CompilerArgumentsInspection.d.ts +53 -0
  402. package/lib/compiler/internal/CompilerArgumentsInspection.js +173 -0
  403. package/lib/compiler/internal/CompilerArgumentsInspection.js.map +1 -0
  404. package/lib/compiler/internal/EmitOwnershipIndex.d.ts +92 -0
  405. package/lib/compiler/internal/EmitOwnershipIndex.js +215 -0
  406. package/lib/compiler/internal/EmitOwnershipIndex.js.map +1 -0
  407. package/lib/compiler/internal/PrivateCompilerOutput.d.ts +67 -0
  408. package/lib/compiler/internal/PrivateCompilerOutput.js +245 -0
  409. package/lib/compiler/internal/PrivateCompilerOutput.js.map +1 -0
  410. package/lib/compiler/internal/ResidentCheckProcess.d.ts +127 -0
  411. package/lib/compiler/internal/ResidentCheckProcess.js +403 -0
  412. package/lib/compiler/internal/ResidentCheckProcess.js.map +1 -0
  413. package/lib/compiler/internal/ResidentCheckProcessOptions.d.ts +29 -0
  414. package/lib/compiler/internal/ResidentCheckProcessOptions.js +3 -0
  415. package/lib/compiler/internal/ResidentCheckProcessOptions.js.map +1 -0
  416. package/lib/compiler/internal/ResidentCheckRequest.d.ts +37 -0
  417. package/lib/compiler/internal/ResidentCheckRequest.js +3 -0
  418. package/lib/compiler/internal/ResidentCheckRequest.js.map +1 -0
  419. package/lib/compiler/internal/ResidentCheckResult.d.ts +23 -0
  420. package/lib/compiler/internal/ResidentCheckResult.js +3 -0
  421. package/lib/compiler/internal/ResidentCheckResult.js.map +1 -0
  422. package/lib/compiler/internal/ResidentCheckTelemetry.d.ts +33 -0
  423. package/lib/compiler/internal/ResidentCheckTelemetry.js +3 -0
  424. package/lib/compiler/internal/ResidentCheckTelemetry.js.map +1 -0
  425. package/lib/compiler/internal/ResidentReplyKind.d.ts +18 -0
  426. package/lib/compiler/internal/ResidentReplyKind.js +3 -0
  427. package/lib/compiler/internal/ResidentReplyKind.js.map +1 -0
  428. package/lib/compiler/internal/ResidentTransformProcess.d.ts +83 -0
  429. package/lib/compiler/internal/ResidentTransformProcess.js +261 -0
  430. package/lib/compiler/internal/ResidentTransformProcess.js.map +1 -0
  431. package/lib/compiler/internal/ResidentTransformProcessOptions.d.ts +27 -0
  432. package/lib/compiler/internal/ResidentTransformProcessOptions.js +3 -0
  433. package/lib/compiler/internal/ResidentTransformProcessOptions.js.map +1 -0
  434. package/lib/compiler/internal/ResidentTransformReply.d.ts +51 -0
  435. package/lib/compiler/internal/ResidentTransformReply.js +79 -0
  436. package/lib/compiler/internal/ResidentTransformReply.js.map +1 -0
  437. package/lib/compiler/internal/ResidentTransformRequestOptions.d.ts +16 -0
  438. package/lib/compiler/internal/ResidentTransformRequestOptions.js +3 -0
  439. package/lib/compiler/internal/ResidentTransformRequestOptions.js.map +1 -0
  440. package/lib/compiler/internal/ResidentTransformRequests.d.ts +102 -0
  441. package/lib/compiler/internal/ResidentTransformRequests.js +172 -0
  442. package/lib/compiler/internal/ResidentTransformRequests.js.map +1 -0
  443. package/lib/compiler/internal/StartedResidentTransform.d.ts +27 -0
  444. package/lib/compiler/internal/StartedResidentTransform.js +3 -0
  445. package/lib/compiler/internal/StartedResidentTransform.js.map +1 -0
  446. package/lib/compiler/internal/TransformProjectWorkerReply.d.ts +34 -0
  447. package/lib/compiler/internal/TransformProjectWorkerReply.js +3 -0
  448. package/lib/compiler/internal/TransformProjectWorkerReply.js.map +1 -0
  449. package/lib/compiler/internal/TransformProjectWorkerRequest.d.ts +39 -0
  450. package/lib/compiler/internal/TransformProjectWorkerRequest.js +3 -0
  451. package/lib/compiler/internal/TransformProjectWorkerRequest.js.map +1 -0
  452. package/lib/compiler/internal/build/BuildExecution.d.ts +359 -0
  453. package/lib/compiler/internal/build/BuildExecution.js +977 -0
  454. package/lib/compiler/internal/build/BuildExecution.js.map +1 -0
  455. package/lib/compiler/internal/build/BuildTiming.d.ts +99 -0
  456. package/lib/compiler/internal/build/BuildTiming.js +113 -0
  457. package/lib/compiler/internal/build/BuildTiming.js.map +1 -0
  458. package/lib/compiler/internal/build/CompilerDiagnostics.d.ts +82 -0
  459. package/lib/compiler/internal/build/CompilerDiagnostics.js +270 -0
  460. package/lib/compiler/internal/build/CompilerDiagnostics.js.map +1 -0
  461. package/lib/compiler/internal/build/NativePluginArguments.d.ts +114 -0
  462. package/lib/compiler/internal/build/NativePluginArguments.js +255 -0
  463. package/lib/compiler/internal/build/NativePluginArguments.js.map +1 -0
  464. package/lib/compiler/internal/build/PassthroughFlags.d.ts +137 -0
  465. package/lib/compiler/internal/build/PassthroughFlags.js +213 -0
  466. package/lib/compiler/internal/build/PassthroughFlags.js.map +1 -0
  467. package/lib/compiler/internal/build/PluginFailureDiagnostics.d.ts +48 -0
  468. package/lib/compiler/internal/build/PluginFailureDiagnostics.js +68 -0
  469. package/lib/compiler/internal/build/PluginFailureDiagnostics.js.map +1 -0
  470. package/lib/compiler/internal/build/ResidentCheckEntryPlan.d.ts +38 -0
  471. package/lib/compiler/internal/build/ResidentCheckEntryPlan.js +3 -0
  472. package/lib/compiler/internal/build/ResidentCheckEntryPlan.js.map +1 -0
  473. package/lib/compiler/internal/build/ResidentCheckWatchChange.d.ts +30 -0
  474. package/lib/compiler/internal/build/ResidentCheckWatchChange.js +3 -0
  475. package/lib/compiler/internal/build/ResidentCheckWatchChange.js.map +1 -0
  476. package/lib/compiler/internal/build/ResidentCheckWatchSession.d.ts +113 -0
  477. package/lib/compiler/internal/build/ResidentCheckWatchSession.js +378 -0
  478. package/lib/compiler/internal/build/ResidentCheckWatchSession.js.map +1 -0
  479. package/lib/compiler/internal/build/RunBuildOptions.d.ts +130 -0
  480. package/lib/compiler/internal/build/RunBuildOptions.js +3 -0
  481. package/lib/compiler/internal/build/RunBuildOptions.js.map +1 -0
  482. package/lib/compiler/internal/build/TsgoArguments.d.ts +168 -0
  483. package/lib/compiler/internal/build/TsgoArguments.js +324 -0
  484. package/lib/compiler/internal/build/TsgoArguments.js.map +1 -0
  485. package/lib/compiler/internal/build/appendBuildOutput.d.ts +41 -0
  486. package/lib/compiler/internal/build/appendBuildOutput.js +182 -0
  487. package/lib/compiler/internal/build/appendBuildOutput.js.map +1 -0
  488. package/lib/compiler/internal/build/bufferResidentCheckEntryRequests.d.ts +20 -0
  489. package/lib/compiler/internal/build/bufferResidentCheckEntryRequests.js +40 -0
  490. package/lib/compiler/internal/build/bufferResidentCheckEntryRequests.js.map +1 -0
  491. package/lib/compiler/internal/build/createProcessDiagnostic.d.ts +19 -0
  492. package/lib/compiler/internal/build/createProcessDiagnostic.js +30 -0
  493. package/lib/compiler/internal/build/createProcessDiagnostic.js.map +1 -0
  494. package/lib/compiler/internal/build/isAbsoluteLocalProjectInputPath.d.ts +22 -0
  495. package/lib/compiler/internal/build/isAbsoluteLocalProjectInputPath.js +59 -0
  496. package/lib/compiler/internal/build/isAbsoluteLocalProjectInputPath.js.map +1 -0
  497. package/lib/compiler/internal/build/mergeProjectInputSnapshots.d.ts +28 -0
  498. package/lib/compiler/internal/build/mergeProjectInputSnapshots.js +121 -0
  499. package/lib/compiler/internal/build/mergeProjectInputSnapshots.js.map +1 -0
  500. package/lib/compiler/internal/build/normalizeBuildOutput.d.ts +29 -0
  501. package/lib/compiler/internal/build/normalizeBuildOutput.js +72 -0
  502. package/lib/compiler/internal/build/normalizeBuildOutput.js.map +1 -0
  503. package/lib/compiler/internal/build/parseProjectInputSnapshot.d.ts +26 -0
  504. package/lib/compiler/internal/build/parseProjectInputSnapshot.js +68 -0
  505. package/lib/compiler/internal/build/parseProjectInputSnapshot.js.map +1 -0
  506. package/lib/compiler/internal/build/planResidentCheckEntries.d.ts +21 -0
  507. package/lib/compiler/internal/build/planResidentCheckEntries.js +45 -0
  508. package/lib/compiler/internal/build/planResidentCheckEntries.js.map +1 -0
  509. package/lib/compiler/internal/build/privateRuntimeRootDir.d.ts +20 -0
  510. package/lib/compiler/internal/build/privateRuntimeRootDir.js +35 -0
  511. package/lib/compiler/internal/build/privateRuntimeRootDir.js.map +1 -0
  512. package/lib/compiler/internal/build/residentCheckRequest.d.ts +22 -0
  513. package/lib/compiler/internal/build/residentCheckRequest.js +42 -0
  514. package/lib/compiler/internal/build/residentCheckRequest.js.map +1 -0
  515. package/lib/compiler/internal/build/runBuild.d.ts +22 -0
  516. package/lib/compiler/internal/build/runBuild.js +44 -0
  517. package/lib/compiler/internal/build/runBuild.js.map +1 -0
  518. package/lib/compiler/internal/build/runExternalEmitProvenance.d.ts +61 -0
  519. package/lib/compiler/internal/build/runExternalEmitProvenance.js +451 -0
  520. package/lib/compiler/internal/build/runExternalEmitProvenance.js.map +1 -0
  521. package/lib/compiler/internal/build/takeResidentCheckEntryRequest.d.ts +18 -0
  522. package/lib/compiler/internal/build/takeResidentCheckEntryRequest.js +28 -0
  523. package/lib/compiler/internal/build/takeResidentCheckEntryRequest.js.map +1 -0
  524. package/lib/compiler/internal/buildNativeCompiler.d.ts +16 -1
  525. package/lib/compiler/internal/buildNativeCompiler.js +14 -2
  526. package/lib/compiler/internal/buildNativeCompiler.js.map +1 -1
  527. package/lib/compiler/internal/captureProcessOutput.d.ts +23 -23
  528. package/lib/compiler/internal/captureProcessOutput.js +38 -26
  529. package/lib/compiler/internal/captureProcessOutput.js.map +1 -1
  530. package/lib/compiler/internal/compileProjectInMemory.d.ts +30 -7
  531. package/lib/compiler/internal/compileProjectInMemory.js +103 -83
  532. package/lib/compiler/internal/compileProjectInMemory.js.map +1 -1
  533. package/lib/compiler/internal/ensureExecutable.d.ts +15 -0
  534. package/lib/compiler/internal/ensureExecutable.js +40 -0
  535. package/lib/compiler/internal/ensureExecutable.js.map +1 -0
  536. package/lib/compiler/internal/findNearestGoMod.d.ts +23 -0
  537. package/lib/compiler/internal/findNearestGoMod.js +48 -0
  538. package/lib/compiler/internal/findNearestGoMod.js.map +1 -0
  539. package/lib/compiler/internal/isOutsideRelativePath.d.ts +18 -0
  540. package/lib/compiler/internal/isOutsideRelativePath.js +30 -0
  541. package/lib/compiler/internal/isOutsideRelativePath.js.map +1 -0
  542. package/lib/compiler/internal/outputText.d.ts +16 -0
  543. package/lib/compiler/internal/outputText.js +25 -0
  544. package/lib/compiler/internal/outputText.js.map +1 -0
  545. package/lib/compiler/internal/packageRootDir.d.ts +25 -0
  546. package/lib/compiler/internal/packageRootDir.js +47 -0
  547. package/lib/compiler/internal/packageRootDir.js.map +1 -0
  548. package/lib/compiler/internal/parseNativeTransformOutput.d.ts +88 -0
  549. package/lib/compiler/internal/parseNativeTransformOutput.js +552 -0
  550. package/lib/compiler/internal/parseNativeTransformOutput.js.map +1 -0
  551. package/lib/compiler/internal/project/CompilerProjectSelection.d.ts +80 -0
  552. package/lib/compiler/internal/project/CompilerProjectSelection.js +187 -0
  553. package/lib/compiler/internal/project/CompilerProjectSelection.js.map +1 -0
  554. package/lib/compiler/internal/project/ConfigJsonText.d.ts +50 -0
  555. package/lib/compiler/internal/project/ConfigJsonText.js +61 -0
  556. package/lib/compiler/internal/project/ConfigJsonText.js.map +1 -0
  557. package/lib/compiler/internal/project/compilerUsesCaseSensitiveFileNames.d.ts +48 -0
  558. package/lib/compiler/internal/project/compilerUsesCaseSensitiveFileNames.js +119 -0
  559. package/lib/compiler/internal/project/compilerUsesCaseSensitiveFileNames.js.map +1 -0
  560. package/lib/compiler/internal/project/createNativeProjectContextArgs.d.ts +11 -8
  561. package/lib/compiler/internal/project/createNativeProjectContextArgs.js +15 -17
  562. package/lib/compiler/internal/project/createNativeProjectContextArgs.js.map +1 -1
  563. package/lib/compiler/internal/project/createNativeProjectContextJson.d.ts +19 -0
  564. package/lib/compiler/internal/project/createNativeProjectContextJson.js +27 -0
  565. package/lib/compiler/internal/project/createNativeProjectContextJson.js.map +1 -0
  566. package/lib/compiler/internal/project/parseJsonc.d.ts +42 -0
  567. package/lib/compiler/internal/project/parseJsonc.js +317 -0
  568. package/lib/compiler/internal/project/parseJsonc.js.map +1 -0
  569. package/lib/compiler/internal/project/readJsonFile.d.ts +21 -0
  570. package/lib/compiler/internal/project/readJsonFile.js +38 -0
  571. package/lib/compiler/internal/project/readJsonFile.js.map +1 -0
  572. package/lib/compiler/internal/project/readJsoncFile.d.ts +20 -0
  573. package/lib/compiler/internal/project/readJsoncFile.js +47 -0
  574. package/lib/compiler/internal/project/readJsoncFile.js.map +1 -0
  575. package/lib/compiler/internal/project/readProjectConfig.d.ts +29 -2
  576. package/lib/compiler/internal/project/readProjectConfig.js +105 -168
  577. package/lib/compiler/internal/project/readProjectConfig.js.map +1 -1
  578. package/lib/compiler/internal/project/resolveOwningProjectConfig.d.ts +65 -0
  579. package/lib/compiler/internal/project/resolveOwningProjectConfig.js +248 -0
  580. package/lib/compiler/internal/project/resolveOwningProjectConfig.js.map +1 -0
  581. package/lib/compiler/internal/project/resolveProjectConfig.d.ts +17 -14
  582. package/lib/compiler/internal/project/resolveProjectConfig.js +19 -122
  583. package/lib/compiler/internal/project/resolveProjectConfig.js.map +1 -1
  584. package/lib/compiler/internal/project/resolveProjectIdentity.d.ts +32 -0
  585. package/lib/compiler/internal/project/resolveProjectIdentity.js +144 -0
  586. package/lib/compiler/internal/project/resolveProjectIdentity.js.map +1 -0
  587. package/lib/compiler/internal/project/resolveTsconfigExtends.d.ts +38 -0
  588. package/lib/compiler/internal/project/resolveTsconfigExtends.js +163 -0
  589. package/lib/compiler/internal/project/resolveTsconfigExtends.js.map +1 -0
  590. package/lib/compiler/internal/project/selectReferencedProject.d.ts +26 -0
  591. package/lib/compiler/internal/project/selectReferencedProject.js +48 -0
  592. package/lib/compiler/internal/project/selectReferencedProject.js.map +1 -0
  593. package/lib/compiler/internal/project/tsconfigExtendsFileCandidates.d.ts +34 -0
  594. package/lib/compiler/internal/project/tsconfigExtendsFileCandidates.js +55 -0
  595. package/lib/compiler/internal/project/tsconfigExtendsFileCandidates.js.map +1 -0
  596. package/lib/compiler/internal/readEffectiveCompilerOptions.d.ts +54 -0
  597. package/lib/compiler/internal/readEffectiveCompilerOptions.js +116 -0
  598. package/lib/compiler/internal/readEffectiveCompilerOptions.js.map +1 -0
  599. package/lib/compiler/internal/resolveBinary.d.ts +17 -1
  600. package/lib/compiler/internal/resolveBinary.js +24 -9
  601. package/lib/compiler/internal/resolveBinary.js.map +1 -1
  602. package/lib/compiler/internal/resolveTsgo.d.ts +22 -7
  603. package/lib/compiler/internal/resolveTsgo.js +25 -9
  604. package/lib/compiler/internal/resolveTsgo.js.map +1 -1
  605. package/lib/compiler/internal/runNativeCheckWithObservations.d.ts +41 -0
  606. package/lib/compiler/internal/runNativeCheckWithObservations.js +185 -0
  607. package/lib/compiler/internal/runNativeCheckWithObservations.js.map +1 -0
  608. package/lib/compiler/internal/runSingleFileEmit.d.ts +26 -5
  609. package/lib/compiler/internal/runSingleFileEmit.js +82 -27
  610. package/lib/compiler/internal/runSingleFileEmit.js.map +1 -1
  611. package/lib/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.d.ts +2 -0
  612. package/lib/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.js +6 -0
  613. package/lib/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.js.map +1 -0
  614. package/lib/compiler/internal/sharedHost/SidecarEnvironment.d.ts +90 -0
  615. package/lib/compiler/internal/sharedHost/SidecarEnvironment.js +153 -0
  616. package/lib/compiler/internal/sharedHost/SidecarEnvironment.js.map +1 -0
  617. package/lib/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.d.ts +7 -0
  618. package/lib/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.js +11 -0
  619. package/lib/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.js.map +1 -0
  620. package/lib/compiler/internal/sharedHost/TSGO_ARGS_ENV.d.ts +7 -0
  621. package/lib/compiler/internal/sharedHost/TSGO_ARGS_ENV.js +11 -0
  622. package/lib/compiler/internal/sharedHost/TSGO_ARGS_ENV.js.map +1 -0
  623. package/lib/compiler/internal/sharedHost/assertSharedHostCompatibility.d.ts +24 -0
  624. package/lib/compiler/internal/sharedHost/assertSharedHostCompatibility.js +46 -0
  625. package/lib/compiler/internal/sharedHost/assertSharedHostCompatibility.js.map +1 -0
  626. package/lib/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.d.ts +15 -0
  627. package/lib/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.js +23 -0
  628. package/lib/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.js.map +1 -0
  629. package/lib/compiler/internal/sharedHost/clearInheritedTsgoArgs.d.ts +23 -0
  630. package/lib/compiler/internal/sharedHost/clearInheritedTsgoArgs.js +33 -0
  631. package/lib/compiler/internal/sharedHost/clearInheritedTsgoArgs.js.map +1 -0
  632. package/lib/compiler/internal/sharedHost/inheritedSidecarEnv.d.ts +27 -0
  633. package/lib/compiler/internal/sharedHost/inheritedSidecarEnv.js +41 -0
  634. package/lib/compiler/internal/sharedHost/inheritedSidecarEnv.js.map +1 -0
  635. package/lib/compiler/internal/sharedHost/isLinkedTransform.d.ts +16 -0
  636. package/lib/compiler/internal/sharedHost/isLinkedTransform.js +21 -0
  637. package/lib/compiler/internal/sharedHost/isLinkedTransform.js.map +1 -0
  638. package/lib/compiler/internal/sharedHost/linkedTransformPlugins.d.ts +19 -0
  639. package/lib/compiler/internal/sharedHost/linkedTransformPlugins.js +25 -0
  640. package/lib/compiler/internal/sharedHost/linkedTransformPlugins.js.map +1 -0
  641. package/lib/compiler/internal/sharedHost/publishLinkedTransformPlugins.d.ts +25 -0
  642. package/lib/compiler/internal/sharedHost/publishLinkedTransformPlugins.js +35 -0
  643. package/lib/compiler/internal/sharedHost/publishLinkedTransformPlugins.js.map +1 -0
  644. package/lib/compiler/internal/sharedHost/resolvePluginConfigDir.d.ts +26 -0
  645. package/lib/compiler/internal/sharedHost/resolvePluginConfigDir.js +36 -0
  646. package/lib/compiler/internal/sharedHost/resolvePluginConfigDir.js.map +1 -0
  647. package/lib/compiler/internal/sharedHost/selectSharedHostPlugin.d.ts +22 -0
  648. package/lib/compiler/internal/sharedHost/selectSharedHostPlugin.js +32 -0
  649. package/lib/compiler/internal/sharedHost/selectSharedHostPlugin.js.map +1 -0
  650. package/lib/compiler/internal/spawnNative.d.ts +15 -16
  651. package/lib/compiler/internal/spawnNative.js +17 -45
  652. package/lib/compiler/internal/spawnNative.js.map +1 -1
  653. package/lib/compiler/internal/startResidentTransform.d.ts +26 -17
  654. package/lib/compiler/internal/startResidentTransform.js +51 -36
  655. package/lib/compiler/internal/startResidentTransform.js.map +1 -1
  656. package/lib/compiler/internal/transformProjectInMemory.d.ts +42 -5
  657. package/lib/compiler/internal/transformProjectInMemory.js +189 -469
  658. package/lib/compiler/internal/transformProjectInMemory.js.map +1 -1
  659. package/lib/compiler/internal/transformProjectInWorker.d.ts +49 -0
  660. package/lib/compiler/internal/transformProjectInWorker.js +168 -0
  661. package/lib/compiler/internal/transformProjectInWorker.js.map +1 -0
  662. package/lib/compiler/internal/transformProjectWorker.js +37 -0
  663. package/lib/compiler/internal/transformProjectWorker.js.map +1 -0
  664. package/lib/flags/AnySubcommand.d.ts +18 -0
  665. package/lib/flags/AnySubcommand.js +3 -0
  666. package/lib/flags/AnySubcommand.js.map +1 -0
  667. package/lib/flags/COMPILER_ENUM_WHITESPACE.d.ts +2 -0
  668. package/lib/flags/COMPILER_ENUM_WHITESPACE.js +38 -0
  669. package/lib/flags/COMPILER_ENUM_WHITESPACE.js.map +1 -0
  670. package/lib/flags/COMPILER_OPTIONS.d.ts +6 -0
  671. package/lib/flags/COMPILER_OPTIONS.js +509 -0
  672. package/lib/flags/COMPILER_OPTIONS.js.map +1 -0
  673. package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.d.ts +2 -0
  674. package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.js +13 -0
  675. package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.js.map +1 -0
  676. package/lib/flags/COMPILER_OPTION_KINDS.d.ts +2 -0
  677. package/lib/flags/COMPILER_OPTION_KINDS.js +14 -0
  678. package/lib/flags/COMPILER_OPTION_KINDS.js.map +1 -0
  679. package/lib/flags/CompilerOptionSpec.d.ts +27 -0
  680. package/lib/flags/CompilerOptionSpec.js +3 -0
  681. package/lib/flags/CompilerOptionSpec.js.map +1 -0
  682. package/lib/flags/FLAG_BY_TOKEN.d.ts +8 -0
  683. package/lib/flags/FLAG_BY_TOKEN.js +34 -0
  684. package/lib/flags/FLAG_BY_TOKEN.js.map +1 -0
  685. package/lib/flags/FLAG_SCHEMA.d.ts +35 -0
  686. package/lib/flags/{schema.js → FLAG_SCHEMA.js} +47 -153
  687. package/lib/flags/FLAG_SCHEMA.js.map +1 -0
  688. package/lib/flags/FlagKind.d.ts +22 -0
  689. package/lib/flags/FlagKind.js +3 -0
  690. package/lib/flags/FlagKind.js.map +1 -0
  691. package/lib/flags/FlagLayer.d.ts +19 -0
  692. package/lib/flags/FlagLayer.js +3 -0
  693. package/lib/flags/FlagLayer.js.map +1 -0
  694. package/lib/flags/FlagSpec.d.ts +104 -0
  695. package/lib/flags/FlagSpec.js +3 -0
  696. package/lib/flags/FlagSpec.js.map +1 -0
  697. package/lib/flags/ParseOptions.d.ts +92 -0
  698. package/lib/flags/ParseOptions.js +3 -0
  699. package/lib/flags/ParseOptions.js.map +1 -0
  700. package/lib/flags/ParseResult.d.ts +37 -0
  701. package/lib/flags/ParseResult.js +3 -0
  702. package/lib/flags/ParseResult.js.map +1 -0
  703. package/lib/flags/TtscSubcommand.d.ts +14 -0
  704. package/lib/flags/TtscSubcommand.js +3 -0
  705. package/lib/flags/TtscSubcommand.js.map +1 -0
  706. package/lib/flags/TtsxSubcommand.d.ts +13 -0
  707. package/lib/flags/TtsxSubcommand.js +3 -0
  708. package/lib/flags/TtsxSubcommand.js.map +1 -0
  709. package/lib/flags/ValueValidator.d.ts +14 -0
  710. package/lib/flags/ValueValidator.js +3 -0
  711. package/lib/flags/ValueValidator.js.map +1 -0
  712. package/lib/flags/buildGoAllowList.d.ts +18 -0
  713. package/lib/flags/buildGoAllowList.js +45 -0
  714. package/lib/flags/buildGoAllowList.js.map +1 -0
  715. package/lib/flags/flagsForSubcommand.d.ts +18 -0
  716. package/lib/flags/flagsForSubcommand.js +23 -0
  717. package/lib/flags/flagsForSubcommand.js.map +1 -0
  718. package/lib/flags/getBoolean.d.ts +19 -0
  719. package/lib/flags/getBoolean.js +27 -0
  720. package/lib/flags/getBoolean.js.map +1 -0
  721. package/lib/flags/getNumber.d.ts +16 -0
  722. package/lib/flags/getNumber.js +24 -0
  723. package/lib/flags/getNumber.js.map +1 -0
  724. package/lib/flags/getString.d.ts +16 -0
  725. package/lib/flags/getString.js +24 -0
  726. package/lib/flags/getString.js.map +1 -0
  727. package/lib/flags/getStringList.d.ts +19 -0
  728. package/lib/flags/getStringList.js +24 -0
  729. package/lib/flags/getStringList.js.map +1 -0
  730. package/lib/flags/normalizeCompilerEnumValue.d.ts +20 -0
  731. package/lib/flags/normalizeCompilerEnumValue.js +40 -0
  732. package/lib/flags/normalizeCompilerEnumValue.js.map +1 -0
  733. package/lib/flags/normalizeFlagToken.d.ts +28 -0
  734. package/lib/flags/normalizeFlagToken.js +38 -0
  735. package/lib/flags/normalizeFlagToken.js.map +1 -0
  736. package/lib/flags/parseFlags.d.ts +18 -0
  737. package/lib/flags/parseFlags.js +288 -0
  738. package/lib/flags/parseFlags.js.map +1 -0
  739. package/lib/flags/readCompilerOptionOccurrence.d.ts +34 -0
  740. package/lib/flags/readCompilerOptionOccurrence.js +81 -0
  741. package/lib/flags/readCompilerOptionOccurrence.js.map +1 -0
  742. package/lib/flags/readCompilerOptionValues.d.ts +33 -0
  743. package/lib/flags/readCompilerOptionValues.js +58 -0
  744. package/lib/flags/readCompilerOptionValues.js.map +1 -0
  745. package/lib/flags/resolveFlagSpec.d.ts +21 -0
  746. package/lib/flags/resolveFlagSpec.js +32 -0
  747. package/lib/flags/resolveFlagSpec.js.map +1 -0
  748. package/lib/index.d.ts +8 -3
  749. package/lib/index.js +10 -3
  750. package/lib/index.js.map +1 -1
  751. package/lib/internal/CanonicalTempDirectoryOperations.d.ts +73 -0
  752. package/lib/internal/CanonicalTempDirectoryOperations.js +3 -0
  753. package/lib/internal/CanonicalTempDirectoryOperations.js.map +1 -0
  754. package/lib/internal/CompilerContextSnapshot.d.ts +66 -0
  755. package/lib/internal/CompilerContextSnapshot.js +121 -0
  756. package/lib/internal/CompilerContextSnapshot.js.map +1 -0
  757. package/lib/internal/CompilerResultAdapter.d.ts +129 -0
  758. package/lib/internal/CompilerResultAdapter.js +247 -0
  759. package/lib/internal/CompilerResultAdapter.js.map +1 -0
  760. package/lib/internal/E2ETrace.d.ts +219 -0
  761. package/lib/internal/E2ETrace.js +541 -0
  762. package/lib/internal/E2ETrace.js.map +1 -0
  763. package/lib/internal/IJavaScriptRuntimeCapabilities.d.ts +48 -0
  764. package/lib/internal/IJavaScriptRuntimeCapabilities.js +3 -0
  765. package/lib/internal/IJavaScriptRuntimeCapabilities.js.map +1 -0
  766. package/lib/internal/OwnedNativeProcess.d.ts +66 -0
  767. package/lib/internal/OwnedNativeProcess.js +317 -0
  768. package/lib/internal/OwnedNativeProcess.js.map +1 -0
  769. package/lib/internal/OwnedSynchronousProcess.d.ts +158 -0
  770. package/lib/internal/OwnedSynchronousProcess.js +171 -0
  771. package/lib/internal/OwnedSynchronousProcess.js.map +1 -0
  772. package/lib/internal/RetireLockDirectoryOperations.d.ts +77 -0
  773. package/lib/internal/RetireLockDirectoryOperations.js +3 -0
  774. package/lib/internal/RetireLockDirectoryOperations.js.map +1 -0
  775. package/lib/internal/SafeCacheCleanupTarget.d.ts +39 -0
  776. package/lib/internal/SafeCacheCleanupTarget.js +3 -0
  777. package/lib/internal/SafeCacheCleanupTarget.js.map +1 -0
  778. package/lib/internal/SourceNativeRetirement.d.ts +384 -0
  779. package/lib/internal/SourceNativeRetirement.js +892 -0
  780. package/lib/internal/SourceNativeRetirement.js.map +1 -0
  781. package/lib/internal/SpawnSyncOutputFiles.d.ts +28 -0
  782. package/lib/internal/SpawnSyncOutputFiles.js +3 -0
  783. package/lib/internal/SpawnSyncOutputFiles.js.map +1 -0
  784. package/lib/internal/cacheEntryExists.d.ts +13 -0
  785. package/lib/internal/cacheEntryExists.js +32 -0
  786. package/lib/internal/cacheEntryExists.js.map +1 -0
  787. package/lib/internal/createCanonicalTempDirectory.d.ts +23 -13
  788. package/lib/internal/createCanonicalTempDirectory.js +31 -12
  789. package/lib/internal/createCanonicalTempDirectory.js.map +1 -1
  790. package/lib/internal/isContendedCandidateRename.d.ts +27 -0
  791. package/lib/internal/isContendedCandidateRename.js +37 -0
  792. package/lib/internal/isContendedCandidateRename.js.map +1 -0
  793. package/lib/internal/isSpawnSyncFdExhaustion.d.ts +16 -0
  794. package/lib/internal/isSpawnSyncFdExhaustion.js +23 -0
  795. package/lib/internal/isSpawnSyncFdExhaustion.js.map +1 -0
  796. package/lib/internal/javascriptRuntimeCapabilities.d.ts +20 -0
  797. package/lib/internal/javascriptRuntimeCapabilities.js +142 -0
  798. package/lib/internal/javascriptRuntimeCapabilities.js.map +1 -0
  799. package/lib/internal/nativeBinary.d.ts +11 -0
  800. package/lib/internal/nativeBinary.js +16 -0
  801. package/lib/internal/nativeBinary.js.map +1 -0
  802. package/lib/internal/parseWindowsDirectoryCaseSensitivity.d.ts +24 -0
  803. package/lib/internal/parseWindowsDirectoryCaseSensitivity.js +47 -0
  804. package/lib/internal/parseWindowsDirectoryCaseSensitivity.js.map +1 -0
  805. package/lib/internal/pathIdentity/FilesystemPathIdentity.d.ts +43 -0
  806. package/lib/internal/pathIdentity/FilesystemPathIdentity.js +3 -0
  807. package/lib/internal/pathIdentity/FilesystemPathIdentity.js.map +1 -0
  808. package/lib/internal/pathIdentity/FilesystemPathIdentityContext.d.ts +176 -0
  809. package/lib/internal/pathIdentity/FilesystemPathIdentityContext.js +3 -0
  810. package/lib/internal/pathIdentity/FilesystemPathIdentityContext.js.map +1 -0
  811. package/lib/internal/pathIdentity/FilesystemPathIdentityOperations.d.ts +100 -0
  812. package/lib/internal/pathIdentity/FilesystemPathIdentityOperations.js +3 -0
  813. package/lib/internal/pathIdentity/FilesystemPathIdentityOperations.js.map +1 -0
  814. package/lib/internal/pathIdentity/ProjectInputPathIdentity.d.ts +20 -0
  815. package/lib/internal/pathIdentity/ProjectInputPathIdentity.js +3 -0
  816. package/lib/internal/pathIdentity/ProjectInputPathIdentity.js.map +1 -0
  817. package/lib/internal/pathIdentity/ProjectInputPathIdentityContext.d.ts +20 -0
  818. package/lib/internal/pathIdentity/ProjectInputPathIdentityContext.js +3 -0
  819. package/lib/internal/pathIdentity/ProjectInputPathIdentityContext.js.map +1 -0
  820. package/lib/internal/pathIdentity/ProjectInputPathIdentityOperations.d.ts +20 -0
  821. package/lib/internal/pathIdentity/ProjectInputPathIdentityOperations.js +3 -0
  822. package/lib/internal/pathIdentity/ProjectInputPathIdentityOperations.js.map +1 -0
  823. package/lib/internal/pathIdentity/createFilesystemPathIdentityContext.d.ts +25 -0
  824. package/lib/internal/pathIdentity/createFilesystemPathIdentityContext.js +336 -0
  825. package/lib/internal/pathIdentity/createFilesystemPathIdentityContext.js.map +1 -0
  826. package/lib/internal/pathIdentity/createProjectInputPathIdentityContext.d.ts +28 -0
  827. package/lib/internal/pathIdentity/createProjectInputPathIdentityContext.js +33 -0
  828. package/lib/internal/pathIdentity/createProjectInputPathIdentityContext.js.map +1 -0
  829. package/lib/internal/pathIdentity/isFilesystemPathIdentityWithin.d.ts +20 -0
  830. package/lib/internal/pathIdentity/isFilesystemPathIdentityWithin.js +33 -0
  831. package/lib/internal/pathIdentity/isFilesystemPathIdentityWithin.js.map +1 -0
  832. package/lib/internal/pathIdentity/isProjectInputPathIdentityWithin.d.ts +15 -0
  833. package/lib/internal/pathIdentity/isProjectInputPathIdentityWithin.js +22 -0
  834. package/lib/internal/pathIdentity/isProjectInputPathIdentityWithin.js.map +1 -0
  835. package/lib/internal/pathIdentity/resolveFilesystemPath.d.ts +22 -0
  836. package/lib/internal/pathIdentity/resolveFilesystemPath.js +44 -0
  837. package/lib/internal/pathIdentity/resolveFilesystemPath.js.map +1 -0
  838. package/lib/internal/pathIdentity/resolvePhysicalPath.d.ts +21 -0
  839. package/lib/internal/pathIdentity/resolvePhysicalPath.js +35 -0
  840. package/lib/internal/pathIdentity/resolvePhysicalPath.js.map +1 -0
  841. package/lib/internal/pathIdentity/resolveProjectInputPath.d.ts +14 -0
  842. package/lib/internal/pathIdentity/resolveProjectInputPath.js +21 -0
  843. package/lib/internal/pathIdentity/resolveProjectInputPath.js.map +1 -0
  844. package/lib/internal/pluginSource.d.ts +26 -0
  845. package/lib/internal/pluginSource.js +43 -0
  846. package/lib/internal/pluginSource.js.map +1 -0
  847. package/lib/internal/projectInputPathIdentity.d.ts +27 -31
  848. package/lib/internal/projectInputPathIdentity.js +37 -275
  849. package/lib/internal/projectInputPathIdentity.js.map +1 -1
  850. package/lib/internal/resolveNodeBinary.d.ts +9 -7
  851. package/lib/internal/resolveNodeBinary.js +14 -144
  852. package/lib/internal/resolveNodeBinary.js.map +1 -1
  853. package/lib/internal/resolveSafeCacheCleanupTargets.d.ts +27 -8
  854. package/lib/internal/resolveSafeCacheCleanupTargets.js +44 -11
  855. package/lib/internal/resolveSafeCacheCleanupTargets.js.map +1 -1
  856. package/lib/internal/restoreCompilerError.d.ts +21 -0
  857. package/lib/internal/restoreCompilerError.js +164 -0
  858. package/lib/internal/restoreCompilerError.js.map +1 -0
  859. package/lib/internal/retireLockDirectory.d.ts +45 -0
  860. package/lib/internal/retireLockDirectory.js +152 -0
  861. package/lib/internal/retireLockDirectory.js.map +1 -0
  862. package/lib/internal/runHoldingLock.d.ts +30 -0
  863. package/lib/internal/runHoldingLock.js +53 -0
  864. package/lib/internal/runHoldingLock.js.map +1 -0
  865. package/lib/internal/runtimeExecutableIdentity.d.ts +20 -0
  866. package/lib/internal/runtimeExecutableIdentity.js +171 -0
  867. package/lib/internal/runtimeExecutableIdentity.js.map +1 -0
  868. package/lib/internal/serializeCompilerError.d.ts +28 -0
  869. package/lib/internal/serializeCompilerError.js +138 -0
  870. package/lib/internal/serializeCompilerError.js.map +1 -0
  871. package/lib/internal/spawnSyncResilient.d.ts +21 -10
  872. package/lib/internal/spawnSyncResilient.js +31 -147
  873. package/lib/internal/spawnSyncResilient.js.map +1 -1
  874. package/lib/internal/spawnSyncWithLowDescriptors.d.ts +30 -0
  875. package/lib/internal/spawnSyncWithLowDescriptors.js +194 -0
  876. package/lib/internal/spawnSyncWithLowDescriptors.js.map +1 -0
  877. package/lib/internal/tsconfig.d.ts +16 -0
  878. package/lib/internal/tsconfig.js +33 -0
  879. package/lib/internal/tsconfig.js.map +1 -0
  880. package/lib/launcher/internal/PendingResidentCheckWatchChanges.d.ts +56 -0
  881. package/lib/launcher/internal/PendingResidentCheckWatchChanges.js +97 -0
  882. package/lib/launcher/internal/PendingResidentCheckWatchChanges.js.map +1 -0
  883. package/lib/launcher/internal/TtscBuildMode.d.ts +14 -0
  884. package/lib/launcher/internal/TtscBuildMode.js +3 -0
  885. package/lib/launcher/internal/TtscBuildMode.js.map +1 -0
  886. package/lib/launcher/internal/TtsxEntryOptions.d.ts +50 -0
  887. package/lib/launcher/internal/TtsxEntryOptions.js +94 -0
  888. package/lib/launcher/internal/TtsxEntryOptions.js.map +1 -0
  889. package/lib/launcher/internal/assertNoSolutionBuild.d.ts +17 -10
  890. package/lib/launcher/internal/assertNoSolutionBuild.js +16 -9
  891. package/lib/launcher/internal/assertNoSolutionBuild.js.map +1 -1
  892. package/lib/launcher/internal/assertTtsxNoWatch.d.ts +25 -0
  893. package/lib/launcher/internal/assertTtsxNoWatch.js +46 -0
  894. package/lib/launcher/internal/assertTtsxNoWatch.js.map +1 -0
  895. package/lib/launcher/internal/buildSingleRootProject.d.ts +108 -0
  896. package/lib/launcher/internal/buildSingleRootProject.js +229 -0
  897. package/lib/launcher/internal/buildSingleRootProject.js.map +1 -0
  898. package/lib/launcher/internal/getCompilerVersionText.d.ts +14 -1
  899. package/lib/launcher/internal/getCompilerVersionText.js +21 -6
  900. package/lib/launcher/internal/getCompilerVersionText.js.map +1 -1
  901. package/lib/launcher/internal/inlineServedSourceMap.d.ts +35 -0
  902. package/lib/launcher/internal/inlineServedSourceMap.js +255 -0
  903. package/lib/launcher/internal/inlineServedSourceMap.js.map +1 -0
  904. package/lib/launcher/internal/linkVirtualEntry.d.ts +31 -0
  905. package/lib/launcher/internal/linkVirtualEntry.js +87 -0
  906. package/lib/launcher/internal/linkVirtualEntry.js.map +1 -0
  907. package/lib/launcher/internal/parseCommonJsExports.d.ts +17 -0
  908. package/lib/launcher/internal/{commonJsExportMetadata.js → parseCommonJsExports.js} +13 -3
  909. package/lib/launcher/internal/parseCommonJsExports.js.map +1 -0
  910. package/lib/launcher/internal/parseTtscBuildArgs.d.ts +34 -0
  911. package/lib/launcher/internal/parseTtscBuildArgs.js +97 -0
  912. package/lib/launcher/internal/parseTtscBuildArgs.js.map +1 -0
  913. package/lib/launcher/internal/parseTtsxCLI.d.ts +35 -0
  914. package/lib/launcher/internal/parseTtsxCLI.js +187 -0
  915. package/lib/launcher/internal/parseTtsxCLI.js.map +1 -0
  916. package/lib/launcher/internal/prepareExecution.d.ts +49 -5
  917. package/lib/launcher/internal/prepareExecution.js +360 -324
  918. package/lib/launcher/internal/prepareExecution.js.map +1 -1
  919. package/lib/launcher/internal/prepareTtscBuildMode.d.ts +23 -0
  920. package/lib/launcher/internal/prepareTtscBuildMode.js +58 -0
  921. package/lib/launcher/internal/prepareTtscBuildMode.js.map +1 -0
  922. package/lib/launcher/internal/resolveCacheDir.d.ts +12 -3
  923. package/lib/launcher/internal/resolveCacheDir.js +12 -3
  924. package/lib/launcher/internal/resolveCacheDir.js.map +1 -1
  925. package/lib/launcher/internal/resolveSingleFileOutput.d.ts +35 -0
  926. package/lib/launcher/internal/resolveSingleFileOutput.js +115 -0
  927. package/lib/launcher/internal/resolveSingleFileOutput.js.map +1 -0
  928. package/lib/launcher/internal/resolveTtscserverBinary.d.ts +15 -3
  929. package/lib/launcher/internal/resolveTtscserverBinary.js +19 -5
  930. package/lib/launcher/internal/resolveTtscserverBinary.js.map +1 -1
  931. package/lib/launcher/internal/runTtsc.d.ts +23 -23
  932. package/lib/launcher/internal/runTtsc.js +336 -286
  933. package/lib/launcher/internal/runTtsc.js.map +1 -1
  934. package/lib/launcher/internal/runTtsx.d.ts +32 -4
  935. package/lib/launcher/internal/runTtsx.js +286 -138
  936. package/lib/launcher/internal/runTtsx.js.map +1 -1
  937. package/lib/launcher/internal/runtime/CommonJsRuntimeSource.d.ts +92 -0
  938. package/lib/launcher/internal/runtime/CommonJsRuntimeSource.js +354 -0
  939. package/lib/launcher/internal/runtime/CommonJsRuntimeSource.js.map +1 -0
  940. package/lib/launcher/internal/runtime/DependencyBuildAdmission.d.ts +72 -0
  941. package/lib/launcher/internal/runtime/DependencyBuildAdmission.js +120 -0
  942. package/lib/launcher/internal/runtime/DependencyBuildAdmission.js.map +1 -0
  943. package/lib/launcher/internal/runtime/DependencyBuildGeneration.d.ts +185 -0
  944. package/lib/launcher/internal/runtime/DependencyBuildGeneration.js +153 -0
  945. package/lib/launcher/internal/runtime/DependencyBuildGeneration.js.map +1 -0
  946. package/lib/launcher/internal/runtime/DependencyBuildLockFence.d.ts +22 -0
  947. package/lib/launcher/internal/runtime/DependencyBuildLockFence.js +3 -0
  948. package/lib/launcher/internal/runtime/DependencyBuildLockFence.js.map +1 -0
  949. package/lib/launcher/internal/runtime/DependencyBuildLockLease.d.ts +22 -0
  950. package/lib/launcher/internal/runtime/DependencyBuildLockLease.js +3 -0
  951. package/lib/launcher/internal/runtime/DependencyBuildLockLease.js.map +1 -0
  952. package/lib/launcher/internal/runtime/DependencyBuildLockObservation.d.ts +41 -0
  953. package/lib/launcher/internal/runtime/DependencyBuildLockObservation.js +3 -0
  954. package/lib/launcher/internal/runtime/DependencyBuildLockObservation.js.map +1 -0
  955. package/lib/launcher/internal/runtime/DependencyBuildLockProtocol.d.ts +83 -0
  956. package/lib/launcher/internal/runtime/DependencyBuildLockProtocol.js +126 -0
  957. package/lib/launcher/internal/runtime/DependencyBuildLockProtocol.js.map +1 -0
  958. package/lib/launcher/internal/runtime/OwnedProjectSource.d.ts +112 -0
  959. package/lib/launcher/internal/runtime/OwnedProjectSource.js +59 -0
  960. package/lib/launcher/internal/runtime/OwnedProjectSource.js.map +1 -0
  961. package/lib/launcher/internal/runtime/OwningModuleOptions.d.ts +21 -0
  962. package/lib/launcher/internal/runtime/OwningModuleOptions.js +3 -0
  963. package/lib/launcher/internal/runtime/OwningModuleOptions.js.map +1 -0
  964. package/lib/launcher/internal/runtime/PluginDescriptorInputObservation.d.ts +89 -0
  965. package/lib/launcher/internal/runtime/PluginDescriptorInputObservation.js +115 -0
  966. package/lib/launcher/internal/runtime/PluginDescriptorInputObservation.js.map +1 -0
  967. package/lib/launcher/internal/runtime/ProcessOwnedDirectory.d.ts +168 -0
  968. package/lib/launcher/internal/runtime/ProcessOwnedDirectory.js +251 -0
  969. package/lib/launcher/internal/runtime/ProcessOwnedDirectory.js.map +1 -0
  970. package/lib/launcher/internal/runtime/ResolveResult.d.ts +24 -0
  971. package/lib/launcher/internal/runtime/ResolveResult.js +3 -0
  972. package/lib/launcher/internal/runtime/ResolveResult.js.map +1 -0
  973. package/lib/launcher/internal/runtime/RuntimeEmitProvenance.d.ts +38 -0
  974. package/lib/launcher/internal/runtime/RuntimeEmitProvenance.js +60 -0
  975. package/lib/launcher/internal/runtime/RuntimeEmitProvenance.js.map +1 -0
  976. package/lib/launcher/internal/runtime/RuntimeEntryPreparer.d.ts +22 -0
  977. package/lib/launcher/internal/runtime/RuntimeEntryPreparer.js +3 -0
  978. package/lib/launcher/internal/runtime/RuntimeEntryPreparer.js.map +1 -0
  979. package/lib/launcher/internal/runtime/RuntimeFilesystem.d.ts +52 -0
  980. package/lib/launcher/internal/runtime/RuntimeFilesystem.js +73 -0
  981. package/lib/launcher/internal/runtime/RuntimeFilesystem.js.map +1 -0
  982. package/lib/launcher/internal/runtime/RuntimeHookOptions.d.ts +22 -0
  983. package/lib/launcher/internal/runtime/RuntimeHookOptions.js +3 -0
  984. package/lib/launcher/internal/runtime/RuntimeHookOptions.js.map +1 -0
  985. package/lib/launcher/internal/runtime/RuntimeIsolatedEmit.d.ts +53 -0
  986. package/lib/launcher/internal/runtime/RuntimeIsolatedEmit.js +88 -0
  987. package/lib/launcher/internal/runtime/RuntimeIsolatedEmit.js.map +1 -0
  988. package/lib/launcher/internal/runtime/RuntimeLoaderCapabilities.d.ts +78 -0
  989. package/lib/launcher/internal/runtime/RuntimeLoaderCapabilities.js +256 -0
  990. package/lib/launcher/internal/runtime/RuntimeLoaderCapabilities.js.map +1 -0
  991. package/lib/launcher/internal/runtime/RuntimeManifest.d.ts +65 -0
  992. package/lib/launcher/internal/runtime/RuntimeManifest.js +3 -0
  993. package/lib/launcher/internal/runtime/RuntimeManifest.js.map +1 -0
  994. package/lib/launcher/internal/runtime/RuntimeManifestRegistry.d.ts +95 -0
  995. package/lib/launcher/internal/runtime/RuntimeManifestRegistry.js +268 -0
  996. package/lib/launcher/internal/runtime/RuntimeManifestRegistry.js.map +1 -0
  997. package/lib/launcher/internal/runtime/RuntimeModuleFormat.d.ts +60 -0
  998. package/lib/launcher/internal/runtime/RuntimeModuleFormat.js +249 -0
  999. package/lib/launcher/internal/runtime/RuntimeModuleFormat.js.map +1 -0
  1000. package/lib/launcher/internal/runtime/RuntimeProjectOwnership.d.ts +50 -0
  1001. package/lib/launcher/internal/runtime/RuntimeProjectOwnership.js +134 -0
  1002. package/lib/launcher/internal/runtime/RuntimeProjectOwnership.js.map +1 -0
  1003. package/lib/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.d.ts +11 -0
  1004. package/lib/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.js +15 -0
  1005. package/lib/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.js.map +1 -0
  1006. package/lib/launcher/internal/runtime/acquireDependencyBuildLock.d.ts +22 -0
  1007. package/lib/launcher/internal/runtime/acquireDependencyBuildLock.js +74 -0
  1008. package/lib/launcher/internal/runtime/acquireDependencyBuildLock.js.map +1 -0
  1009. package/lib/launcher/internal/runtime/checkNodeRuntimeSupport.d.ts +30 -0
  1010. package/lib/launcher/internal/runtime/checkNodeRuntimeSupport.js +83 -0
  1011. package/lib/launcher/internal/runtime/checkNodeRuntimeSupport.js.map +1 -0
  1012. package/lib/launcher/internal/runtime/claimRuntimeProjectDirectory.d.ts +30 -0
  1013. package/lib/launcher/internal/runtime/claimRuntimeProjectDirectory.js +52 -0
  1014. package/lib/launcher/internal/runtime/claimRuntimeProjectDirectory.js.map +1 -0
  1015. package/lib/launcher/internal/runtime/commonJsExportNames.d.ts +21 -0
  1016. package/lib/launcher/internal/runtime/commonJsExportNames.js +68 -0
  1017. package/lib/launcher/internal/runtime/commonJsExportNames.js.map +1 -0
  1018. package/lib/launcher/internal/runtime/commonJsImportFacade.d.ts +32 -0
  1019. package/lib/launcher/internal/runtime/commonJsImportFacade.js +56 -0
  1020. package/lib/launcher/internal/runtime/commonJsImportFacade.js.map +1 -0
  1021. package/lib/launcher/internal/runtime/dependencyCacheKey.d.ts +36 -0
  1022. package/lib/launcher/internal/runtime/dependencyCacheKey.js +57 -0
  1023. package/lib/launcher/internal/runtime/dependencyCacheKey.js.map +1 -0
  1024. package/lib/launcher/internal/runtime/dependencyCacheRoot.d.ts +32 -0
  1025. package/lib/launcher/internal/runtime/dependencyCacheRoot.js +98 -0
  1026. package/lib/launcher/internal/runtime/dependencyCacheRoot.js.map +1 -0
  1027. package/lib/launcher/internal/runtime/inspectDependencyBuildLock.d.ts +23 -0
  1028. package/lib/launcher/internal/runtime/inspectDependencyBuildLock.js +126 -0
  1029. package/lib/launcher/internal/runtime/inspectDependencyBuildLock.js.map +1 -0
  1030. package/lib/launcher/internal/runtime/installRuntimeHooks.d.ts +58 -0
  1031. package/lib/launcher/internal/runtime/installRuntimeHooks.js +1988 -0
  1032. package/lib/launcher/internal/runtime/installRuntimeHooks.js.map +1 -0
  1033. package/lib/launcher/internal/runtime/interopProbe.d.ts +8 -0
  1034. package/lib/launcher/internal/runtime/interopProbe.js +3 -0
  1035. package/lib/launcher/internal/runtime/interopProbe.js.map +1 -0
  1036. package/lib/launcher/internal/runtime/isLocalProcessGone.d.ts +33 -0
  1037. package/lib/launcher/internal/runtime/isLocalProcessGone.js +60 -0
  1038. package/lib/launcher/internal/runtime/isLocalProcessGone.js.map +1 -0
  1039. package/lib/launcher/internal/runtime/observeMappedDescriptorResolution.d.ts +28 -0
  1040. package/lib/launcher/internal/runtime/observeMappedDescriptorResolution.js +50 -0
  1041. package/lib/launcher/internal/runtime/observeMappedDescriptorResolution.js.map +1 -0
  1042. package/lib/launcher/internal/runtime/projectModuleOptions.d.ts +16 -0
  1043. package/lib/launcher/internal/runtime/projectModuleOptions.js +28 -0
  1044. package/lib/launcher/internal/runtime/projectModuleOptions.js.map +1 -0
  1045. package/lib/launcher/internal/runtime/readDependencyCache.d.ts +28 -0
  1046. package/lib/launcher/internal/runtime/readDependencyCache.js +83 -0
  1047. package/lib/launcher/internal/runtime/readDependencyCache.js.map +1 -0
  1048. package/lib/launcher/internal/runtime/realPath.d.ts +22 -0
  1049. package/lib/launcher/internal/runtime/realPath.js +37 -0
  1050. package/lib/launcher/internal/runtime/realPath.js.map +1 -0
  1051. package/lib/launcher/internal/runtime/reclaimDependencyBuildLock.d.ts +17 -0
  1052. package/lib/launcher/internal/runtime/reclaimDependencyBuildLock.js +23 -0
  1053. package/lib/launcher/internal/runtime/reclaimDependencyBuildLock.js.map +1 -0
  1054. package/lib/launcher/internal/runtime/releaseDependencyBuildLock.d.ts +17 -0
  1055. package/lib/launcher/internal/runtime/releaseDependencyBuildLock.js +23 -0
  1056. package/lib/launcher/internal/runtime/releaseDependencyBuildLock.js.map +1 -0
  1057. package/lib/launcher/internal/runtime/resolveRuntimeCleanTargets.d.ts +34 -0
  1058. package/lib/launcher/internal/runtime/resolveRuntimeCleanTargets.js +88 -0
  1059. package/lib/launcher/internal/runtime/resolveRuntimeCleanTargets.js.map +1 -0
  1060. package/lib/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.d.ts +20 -0
  1061. package/lib/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.js +30 -0
  1062. package/lib/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.js.map +1 -0
  1063. package/lib/launcher/internal/runtime/runtimeRunKey.d.ts +24 -0
  1064. package/lib/launcher/internal/runtime/runtimeRunKey.js +36 -0
  1065. package/lib/launcher/internal/runtime/runtimeRunKey.js.map +1 -0
  1066. package/lib/launcher/internal/runtime/selectRuntimePluginPolicy.d.ts +21 -0
  1067. package/lib/launcher/internal/runtime/selectRuntimePluginPolicy.js +29 -0
  1068. package/lib/launcher/internal/runtime/selectRuntimePluginPolicy.js.map +1 -0
  1069. package/lib/launcher/internal/runtime/withRuntimeDirectoryLock.d.ts +35 -0
  1070. package/lib/launcher/internal/runtime/withRuntimeDirectoryLock.js +76 -0
  1071. package/lib/launcher/internal/runtime/withRuntimeDirectoryLock.js.map +1 -0
  1072. package/lib/launcher/internal/runtimeCompilerArgs.d.ts +35 -6
  1073. package/lib/launcher/internal/runtimeCompilerArgs.js +87 -58
  1074. package/lib/launcher/internal/runtimeCompilerArgs.js.map +1 -1
  1075. package/lib/launcher/internal/runtimeEmitProfile.d.ts +39 -0
  1076. package/lib/launcher/internal/runtimeEmitProfile.js +56 -0
  1077. package/lib/launcher/internal/runtimeEmitProfile.js.map +1 -0
  1078. package/lib/launcher/internal/runtimeHookPreload.js +4 -4
  1079. package/lib/launcher/internal/runtimeHookPreload.js.map +1 -1
  1080. package/lib/launcher/internal/runtimeOwnerPreload.d.ts +1 -0
  1081. package/lib/launcher/internal/runtimeOwnerPreload.js +43 -0
  1082. package/lib/launcher/internal/runtimeOwnerPreload.js.map +1 -0
  1083. package/lib/launcher/internal/singleRootProjectConfig.d.ts +34 -0
  1084. package/lib/launcher/internal/singleRootProjectConfig.js +39 -0
  1085. package/lib/launcher/internal/singleRootProjectConfig.js.map +1 -0
  1086. package/lib/launcher/internal/ttscserver/ILSPPluginSelectionInputs.d.ts +61 -0
  1087. package/lib/launcher/internal/ttscserver/ILSPPluginSelectionInputs.js +3 -0
  1088. package/lib/launcher/internal/ttscserver/ILSPPluginSelectionInputs.js.map +1 -0
  1089. package/lib/launcher/internal/ttscserver/LSPProjectInputDigest.d.ts +95 -0
  1090. package/lib/launcher/internal/ttscserver/LSPProjectInputDigest.js +270 -0
  1091. package/lib/launcher/internal/ttscserver/LSPProjectInputDigest.js.map +1 -0
  1092. package/lib/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.d.ts +46 -0
  1093. package/lib/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.js +91 -0
  1094. package/lib/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.js.map +1 -0
  1095. package/lib/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.d.ts +21 -0
  1096. package/lib/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.js +39 -0
  1097. package/lib/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.js.map +1 -0
  1098. package/lib/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.d.ts +18 -0
  1099. package/lib/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.js +27 -0
  1100. package/lib/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.js.map +1 -0
  1101. package/lib/launcher/internal/ttscserver/materializeLSPPluginManifest.d.ts +26 -0
  1102. package/lib/launcher/internal/ttscserver/materializeLSPPluginManifest.js +62 -0
  1103. package/lib/launcher/internal/ttscserver/materializeLSPPluginManifest.js.map +1 -0
  1104. package/lib/launcher/internal/ttscserver/needsStdio.d.ts +17 -0
  1105. package/lib/launcher/internal/ttscserver/needsStdio.js +36 -0
  1106. package/lib/launcher/internal/ttscserver/needsStdio.js.map +1 -0
  1107. package/lib/launcher/internal/ttscserver/runTtscserver.d.ts +25 -0
  1108. package/lib/launcher/internal/ttscserver/runTtscserver.js +439 -0
  1109. package/lib/launcher/internal/ttscserver/runTtscserver.js.map +1 -0
  1110. package/lib/launcher/internal/watch/CompilerDirectoryWatchEventPlan.d.ts +29 -0
  1111. package/lib/launcher/internal/watch/CompilerDirectoryWatchEventPlan.js +3 -0
  1112. package/lib/launcher/internal/watch/CompilerDirectoryWatchEventPlan.js.map +1 -0
  1113. package/lib/launcher/internal/watch/DirectoryWatcher.d.ts +44 -0
  1114. package/lib/launcher/internal/watch/DirectoryWatcher.js +3 -0
  1115. package/lib/launcher/internal/watch/DirectoryWatcher.js.map +1 -0
  1116. package/lib/launcher/internal/watch/FseventsStreams.d.ts +87 -0
  1117. package/lib/launcher/internal/watch/FseventsStreams.js +266 -0
  1118. package/lib/launcher/internal/watch/FseventsStreams.js.map +1 -0
  1119. package/lib/launcher/internal/watch/ProjectInputWatchRules.d.ts +92 -0
  1120. package/lib/launcher/internal/watch/ProjectInputWatchRules.js +163 -0
  1121. package/lib/launcher/internal/watch/ProjectInputWatchRules.js.map +1 -0
  1122. package/lib/launcher/internal/watch/WatchInputChange.d.ts +29 -0
  1123. package/lib/launcher/internal/watch/WatchInputChange.js +3 -0
  1124. package/lib/launcher/internal/watch/WatchInputChange.js.map +1 -0
  1125. package/lib/launcher/internal/watch/WatchPaths.d.ts +101 -0
  1126. package/lib/launcher/internal/watch/WatchPaths.js +150 -0
  1127. package/lib/launcher/internal/watch/WatchPaths.js.map +1 -0
  1128. package/lib/launcher/internal/watch/WatchTopology.d.ts +384 -0
  1129. package/lib/launcher/internal/{watchTopology.js → watch/WatchTopology.js} +726 -799
  1130. package/lib/launcher/internal/watch/WatchTopology.js.map +1 -0
  1131. package/lib/launcher/internal/watch/literalGlobRoot.d.ts +22 -0
  1132. package/lib/launcher/internal/watch/literalGlobRoot.js +45 -0
  1133. package/lib/launcher/internal/watch/literalGlobRoot.js.map +1 -0
  1134. package/lib/launcher/internal/watch/planCompilerDirectoryWatchEvent.d.ts +40 -0
  1135. package/lib/launcher/internal/watch/planCompilerDirectoryWatchEvent.js +69 -0
  1136. package/lib/launcher/internal/watch/planCompilerDirectoryWatchEvent.js.map +1 -0
  1137. package/lib/launcher/internal/watch/projectInputActiveWatchDirectories.d.ts +19 -0
  1138. package/lib/launcher/internal/watch/projectInputActiveWatchDirectories.js +52 -0
  1139. package/lib/launcher/internal/watch/projectInputActiveWatchDirectories.js.map +1 -0
  1140. package/lib/launcher/internal/watch/projectInputAvailableWatchDirectory.d.ts +21 -0
  1141. package/lib/launcher/internal/watch/projectInputAvailableWatchDirectory.js +55 -0
  1142. package/lib/launcher/internal/watch/projectInputAvailableWatchDirectory.js.map +1 -0
  1143. package/lib/launcher/internal/watch/projectInputEventShouldNotify.d.ts +21 -0
  1144. package/lib/launcher/internal/watch/projectInputEventShouldNotify.js +23 -0
  1145. package/lib/launcher/internal/watch/projectInputEventShouldNotify.js.map +1 -0
  1146. package/lib/launcher/internal/watch/projectInputMembershipInvalidatesProgram.d.ts +27 -0
  1147. package/lib/launcher/internal/watch/projectInputMembershipInvalidatesProgram.js +54 -0
  1148. package/lib/launcher/internal/watch/projectInputMembershipInvalidatesProgram.js.map +1 -0
  1149. package/lib/launcher/internal/watch/projectInputReloadEventShouldNotify.d.ts +26 -0
  1150. package/lib/launcher/internal/watch/projectInputReloadEventShouldNotify.js +100 -0
  1151. package/lib/launcher/internal/watch/projectInputReloadEventShouldNotify.js.map +1 -0
  1152. package/lib/launcher/internal/watch/projectInputReplacementStrandsWatchers.d.ts +37 -0
  1153. package/lib/launcher/internal/watch/projectInputReplacementStrandsWatchers.js +54 -0
  1154. package/lib/launcher/internal/watch/projectInputReplacementStrandsWatchers.js.map +1 -0
  1155. package/lib/launcher/internal/watch/projectInputTopologyMayAffect.d.ts +23 -0
  1156. package/lib/launcher/internal/watch/projectInputTopologyMayAffect.js +67 -0
  1157. package/lib/launcher/internal/watch/projectInputTopologyMayAffect.js.map +1 -0
  1158. package/lib/launcher/internal/watch/projectInputWatchDirectories.d.ts +22 -0
  1159. package/lib/launcher/internal/watch/projectInputWatchDirectories.js +30 -0
  1160. package/lib/launcher/internal/watch/projectInputWatchDirectories.js.map +1 -0
  1161. package/lib/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.d.ts +22 -0
  1162. package/lib/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.js +45 -0
  1163. package/lib/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.js.map +1 -0
  1164. package/lib/launcher/internal/watch/syncWatchers.d.ts +25 -0
  1165. package/lib/launcher/internal/watch/syncWatchers.js +61 -0
  1166. package/lib/launcher/internal/watch/syncWatchers.js.map +1 -0
  1167. package/lib/launcher/internal/watch/watchDirectory.d.ts +28 -0
  1168. package/lib/launcher/internal/watch/watchDirectory.js +46 -0
  1169. package/lib/launcher/internal/watch/watchDirectory.js.map +1 -0
  1170. package/lib/launcher/internal/watch/watchDirectoryThroughFsWatch.d.ts +28 -0
  1171. package/lib/launcher/internal/watch/watchDirectoryThroughFsWatch.js +38 -0
  1172. package/lib/launcher/internal/watch/watchDirectoryThroughFsWatch.js.map +1 -0
  1173. package/lib/launcher/ttscserver.js +1 -1
  1174. package/lib/launcher/ttscserver.js.map +1 -1
  1175. package/lib/launcher/ttsx.js +2 -3
  1176. package/lib/launcher/ttsx.js.map +1 -1
  1177. package/lib/plugin/CapabilityPluginResolver.d.ts +140 -0
  1178. package/lib/plugin/CapabilityPluginResolver.js +400 -0
  1179. package/lib/plugin/CapabilityPluginResolver.js.map +1 -0
  1180. package/lib/plugin/ITtscCapabilityPlugin.d.ts +87 -0
  1181. package/lib/plugin/ITtscCapabilityPlugin.js +3 -0
  1182. package/lib/plugin/ITtscCapabilityPlugin.js.map +1 -0
  1183. package/lib/plugin/internal/CapabilityPluginResult.d.ts +66 -0
  1184. package/lib/plugin/internal/CapabilityPluginResult.js +86 -0
  1185. package/lib/plugin/internal/CapabilityPluginResult.js.map +1 -0
  1186. package/lib/plugin/internal/CapabilityResolutionFormat.d.ts +114 -0
  1187. package/lib/plugin/internal/CapabilityResolutionFormat.js +229 -0
  1188. package/lib/plugin/internal/CapabilityResolutionFormat.js.map +1 -0
  1189. package/lib/plugin/internal/ITtscCapabilityPluginSource.d.ts +35 -0
  1190. package/lib/plugin/internal/ITtscCapabilityPluginSource.js +3 -0
  1191. package/lib/plugin/internal/ITtscCapabilityPluginSource.js.map +1 -0
  1192. package/lib/plugin/internal/ITtscCapabilityResolutionEntry.d.ts +49 -0
  1193. package/lib/plugin/internal/ITtscCapabilityResolutionEntry.js +3 -0
  1194. package/lib/plugin/internal/ITtscCapabilityResolutionEntry.js.map +1 -0
  1195. package/lib/plugin/internal/ITtscCapabilityResolutionPlugin.d.ts +21 -0
  1196. package/lib/plugin/internal/ITtscCapabilityResolutionPlugin.js +3 -0
  1197. package/lib/plugin/internal/ITtscCapabilityResolutionPlugin.js.map +1 -0
  1198. package/lib/plugin/internal/capabilityPluginWorker.d.ts +1 -0
  1199. package/lib/plugin/internal/capabilityPluginWorker.js +178 -0
  1200. package/lib/plugin/internal/capabilityPluginWorker.js.map +1 -0
  1201. package/lib/plugin/internal/decodeCapabilityCommandReply.d.ts +23 -0
  1202. package/lib/plugin/internal/decodeCapabilityCommandReply.js +25 -0
  1203. package/lib/plugin/internal/decodeCapabilityCommandReply.js.map +1 -0
  1204. package/lib/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.d.ts +15 -0
  1205. package/lib/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.js +182 -0
  1206. package/lib/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.js.map +1 -0
  1207. package/lib/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.d.ts +11 -0
  1208. package/lib/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.js +62 -0
  1209. package/lib/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.js.map +1 -0
  1210. package/lib/plugin/internal/load/PluginDescriptorAdmission.d.ts +46 -0
  1211. package/lib/plugin/internal/load/PluginDescriptorAdmission.js +72 -0
  1212. package/lib/plugin/internal/load/PluginDescriptorAdmission.js.map +1 -0
  1213. package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.d.ts +154 -0
  1214. package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.js +317 -0
  1215. package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.js.map +1 -0
  1216. package/lib/plugin/internal/load/PluginPackageResolution.d.ts +208 -0
  1217. package/lib/plugin/internal/load/PluginPackageResolution.js +593 -0
  1218. package/lib/plugin/internal/load/PluginPackageResolution.js.map +1 -0
  1219. package/lib/plugin/internal/load/ProjectPluginEntries.d.ts +60 -0
  1220. package/lib/plugin/internal/load/ProjectPluginEntries.js +164 -0
  1221. package/lib/plugin/internal/load/ProjectPluginEntries.js.map +1 -0
  1222. package/lib/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.d.ts +13 -0
  1223. package/lib/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.js +21 -0
  1224. package/lib/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.js.map +1 -0
  1225. package/lib/plugin/internal/load/collectProjectHostInputs.d.ts +16 -0
  1226. package/lib/plugin/internal/load/collectProjectHostInputs.js +66 -0
  1227. package/lib/plugin/internal/load/collectProjectHostInputs.js.map +1 -0
  1228. package/lib/plugin/internal/load/composePluginSources.d.ts +20 -0
  1229. package/lib/plugin/internal/load/composePluginSources.js +95 -0
  1230. package/lib/plugin/internal/load/composePluginSources.js.map +1 -0
  1231. package/lib/plugin/internal/load/declaresHostInputReads.d.ts +24 -0
  1232. package/lib/plugin/internal/load/declaresHostInputReads.js +48 -0
  1233. package/lib/plugin/internal/load/declaresHostInputReads.js.map +1 -0
  1234. package/lib/plugin/internal/load/hasProjectPluginEntries.d.ts +21 -0
  1235. package/lib/plugin/internal/load/hasProjectPluginEntries.js +29 -0
  1236. package/lib/plugin/internal/load/hasProjectPluginEntries.js.map +1 -0
  1237. package/lib/plugin/internal/load/hashHostInputPaths.d.ts +17 -0
  1238. package/lib/plugin/internal/load/hashHostInputPaths.js +46 -0
  1239. package/lib/plugin/internal/load/hashHostInputPaths.js.map +1 -0
  1240. package/lib/plugin/internal/load/isRelativePluginSpecifier.d.ts +22 -0
  1241. package/lib/plugin/internal/load/isRelativePluginSpecifier.js +33 -0
  1242. package/lib/plugin/internal/load/isRelativePluginSpecifier.js.map +1 -0
  1243. package/lib/plugin/internal/load/loadProjectPlugins.d.ts +112 -0
  1244. package/lib/plugin/internal/load/loadProjectPlugins.js +1640 -0
  1245. package/lib/plugin/internal/load/loadProjectPlugins.js.map +1 -0
  1246. package/lib/plugin/internal/load/moduleResolutionBaseSelects.d.ts +42 -0
  1247. package/lib/plugin/internal/load/moduleResolutionBaseSelects.js +51 -0
  1248. package/lib/plugin/internal/load/moduleResolutionBaseSelects.js.map +1 -0
  1249. package/lib/plugin/internal/load/observeImportSearchRoots.d.ts +29 -0
  1250. package/lib/plugin/internal/load/observeImportSearchRoots.js +38 -0
  1251. package/lib/plugin/internal/load/observeImportSearchRoots.js.map +1 -0
  1252. package/lib/plugin/internal/load/pluginLabel.d.ts +15 -0
  1253. package/lib/plugin/internal/load/pluginLabel.js +25 -0
  1254. package/lib/plugin/internal/load/pluginLabel.js.map +1 -0
  1255. package/lib/plugin/internal/load/realpathHostInput.d.ts +14 -0
  1256. package/lib/plugin/internal/load/realpathHostInput.js +29 -0
  1257. package/lib/plugin/internal/load/realpathHostInput.js.map +1 -0
  1258. package/lib/plugin/internal/load/realpathHostInputPaths.d.ts +17 -0
  1259. package/lib/plugin/internal/load/realpathHostInputPaths.js +28 -0
  1260. package/lib/plugin/internal/load/realpathHostInputPaths.js.map +1 -0
  1261. package/lib/plugin/internal/load/rejectJsTransformFunctions.d.ts +13 -0
  1262. package/lib/plugin/internal/load/rejectJsTransformFunctions.js +22 -0
  1263. package/lib/plugin/internal/load/rejectJsTransformFunctions.js.map +1 -0
  1264. package/lib/plugin/internal/load/requirePluginSource.d.ts +14 -0
  1265. package/lib/plugin/internal/load/requirePluginSource.js +38 -0
  1266. package/lib/plugin/internal/load/requirePluginSource.js.map +1 -0
  1267. package/lib/plugin/internal/load/resolveNativeSource.d.ts +29 -0
  1268. package/lib/plugin/internal/load/resolveNativeSource.js +37 -0
  1269. package/lib/plugin/internal/load/resolveNativeSource.js.map +1 -0
  1270. package/lib/plugin/internal/load/validatePluginContributors.d.ts +22 -0
  1271. package/lib/plugin/internal/load/validatePluginContributors.js +86 -0
  1272. package/lib/plugin/internal/load/validatePluginContributors.js.map +1 -0
  1273. package/lib/plugin/internal/load/validatePluginSource.d.ts +14 -0
  1274. package/lib/plugin/internal/load/validatePluginSource.js +21 -0
  1275. package/lib/plugin/internal/load/validatePluginSource.js.map +1 -0
  1276. package/lib/plugin/internal/load/visitImportMappedCandidates.d.ts +36 -0
  1277. package/lib/plugin/internal/load/visitImportMappedCandidates.js +45 -0
  1278. package/lib/plugin/internal/load/visitImportMappedCandidates.js.map +1 -0
  1279. package/lib/plugin/internal/pluginDescriptorFailureReason.d.ts +23 -0
  1280. package/lib/plugin/internal/pluginDescriptorFailureReason.js +43 -0
  1281. package/lib/plugin/internal/pluginDescriptorFailureReason.js.map +1 -0
  1282. package/lib/plugin/internal/pluginDescriptorProcessFailure.d.ts +28 -0
  1283. package/lib/plugin/internal/pluginDescriptorProcessFailure.js +37 -0
  1284. package/lib/plugin/internal/pluginDescriptorProcessFailure.js.map +1 -0
  1285. package/lib/plugin/internal/readCapabilityResolution.d.ts +42 -0
  1286. package/lib/plugin/internal/readCapabilityResolution.js +158 -0
  1287. package/lib/plugin/internal/readCapabilityResolution.js.map +1 -0
  1288. package/lib/plugin/internal/receiveCapabilityFailure.d.ts +21 -0
  1289. package/lib/plugin/internal/receiveCapabilityFailure.js +28 -0
  1290. package/lib/plugin/internal/receiveCapabilityFailure.js.map +1 -0
  1291. package/lib/plugin/internal/source/CachePrunePolicy.d.ts +42 -0
  1292. package/lib/plugin/internal/source/CachePrunePolicy.js +47 -0
  1293. package/lib/plugin/internal/source/CachePrunePolicy.js.map +1 -0
  1294. package/lib/plugin/internal/source/GoBuildCacheCoordination.d.ts +159 -0
  1295. package/lib/plugin/internal/source/GoBuildCacheCoordination.js +475 -0
  1296. package/lib/plugin/internal/source/GoBuildCacheCoordination.js.map +1 -0
  1297. package/lib/plugin/internal/source/GoEnvironmentReading.d.ts +42 -0
  1298. package/lib/plugin/internal/source/GoEnvironmentReading.js +110 -0
  1299. package/lib/plugin/internal/source/GoEnvironmentReading.js.map +1 -0
  1300. package/lib/plugin/internal/source/GoSourceInputs.d.ts +124 -0
  1301. package/lib/plugin/internal/source/GoSourceInputs.js +180 -0
  1302. package/lib/plugin/internal/source/GoSourceInputs.js.map +1 -0
  1303. package/lib/plugin/internal/source/GoToolResolution.d.ts +125 -0
  1304. package/lib/plugin/internal/source/GoToolResolution.js +278 -0
  1305. package/lib/plugin/internal/source/GoToolResolution.js.map +1 -0
  1306. package/lib/plugin/internal/source/IGoBuildCachePruneOptions.d.ts +30 -0
  1307. package/lib/plugin/internal/source/IGoBuildCachePruneOptions.js +3 -0
  1308. package/lib/plugin/internal/source/IGoBuildCachePruneOptions.js.map +1 -0
  1309. package/lib/plugin/internal/source/IPluginCachePruneOptions.d.ts +33 -0
  1310. package/lib/plugin/internal/source/IPluginCachePruneOptions.js +3 -0
  1311. package/lib/plugin/internal/source/IPluginCachePruneOptions.js.map +1 -0
  1312. package/lib/plugin/internal/source/IPluginModuleReplaceDirectory.d.ts +27 -0
  1313. package/lib/plugin/internal/source/IPluginModuleReplaceDirectory.js +3 -0
  1314. package/lib/plugin/internal/source/IPluginModuleReplaceDirectory.js.map +1 -0
  1315. package/lib/plugin/internal/source/ITtscBuildContributor.d.ts +18 -0
  1316. package/lib/plugin/internal/source/ITtscBuildContributor.js +3 -0
  1317. package/lib/plugin/internal/source/ITtscBuildContributor.js.map +1 -0
  1318. package/lib/plugin/internal/source/ITtscSourceBuildCachePaths.d.ts +25 -0
  1319. package/lib/plugin/internal/source/ITtscSourceBuildCachePaths.js +3 -0
  1320. package/lib/plugin/internal/source/ITtscSourceBuildCachePaths.js.map +1 -0
  1321. package/lib/plugin/internal/source/NativeSourcePackages.d.ts +155 -0
  1322. package/lib/plugin/internal/source/NativeSourcePackages.js +330 -0
  1323. package/lib/plugin/internal/source/NativeSourcePackages.js.map +1 -0
  1324. package/lib/plugin/internal/source/PluginBinaryUse.d.ts +66 -0
  1325. package/lib/plugin/internal/source/PluginBinaryUse.js +163 -0
  1326. package/lib/plugin/internal/source/PluginBinaryUse.js.map +1 -0
  1327. package/lib/plugin/internal/source/PluginBinaryWaitResult.d.ts +34 -0
  1328. package/lib/plugin/internal/source/PluginBinaryWaitResult.js +3 -0
  1329. package/lib/plugin/internal/source/PluginBinaryWaitResult.js.map +1 -0
  1330. package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.d.ts +111 -0
  1331. package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js +243 -0
  1332. package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js.map +1 -0
  1333. package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.d.ts +130 -0
  1334. package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.js +215 -0
  1335. package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.js.map +1 -0
  1336. package/lib/plugin/internal/source/PluginBuildLockFence.d.ts +25 -0
  1337. package/lib/plugin/internal/source/PluginBuildLockFence.js +3 -0
  1338. package/lib/plugin/internal/source/PluginBuildLockFence.js.map +1 -0
  1339. package/lib/plugin/internal/source/PluginBuildLockLease.d.ts +29 -0
  1340. package/lib/plugin/internal/source/PluginBuildLockLease.js +3 -0
  1341. package/lib/plugin/internal/source/PluginBuildLockLease.js.map +1 -0
  1342. package/lib/plugin/internal/source/PluginBuildLockObservation.d.ts +42 -0
  1343. package/lib/plugin/internal/source/PluginBuildLockObservation.js +3 -0
  1344. package/lib/plugin/internal/source/PluginBuildLockObservation.js.map +1 -0
  1345. package/lib/plugin/internal/source/PluginBuildLockOwner.d.ts +126 -0
  1346. package/lib/plugin/internal/source/PluginBuildLockOwner.js +165 -0
  1347. package/lib/plugin/internal/source/PluginBuildLockOwner.js.map +1 -0
  1348. package/lib/plugin/internal/source/PluginBuildLockProtocol.d.ts +234 -0
  1349. package/lib/plugin/internal/source/PluginBuildLockProtocol.js +287 -0
  1350. package/lib/plugin/internal/source/PluginBuildLockProtocol.js.map +1 -0
  1351. package/lib/plugin/internal/source/SourceBuildCacheLayout.d.ts +183 -0
  1352. package/lib/plugin/internal/source/SourceBuildCacheLayout.js +291 -0
  1353. package/lib/plugin/internal/source/SourceBuildCacheLayout.js.map +1 -0
  1354. package/lib/plugin/internal/source/SourceBuildFilesystemOperations.d.ts +32 -0
  1355. package/lib/plugin/internal/source/SourceBuildFilesystemOperations.js +3 -0
  1356. package/lib/plugin/internal/source/SourceBuildFilesystemOperations.js.map +1 -0
  1357. package/lib/plugin/internal/source/SourcePluginAdmission.d.ts +80 -0
  1358. package/lib/plugin/internal/source/SourcePluginAdmission.js +114 -0
  1359. package/lib/plugin/internal/source/SourcePluginAdmission.js.map +1 -0
  1360. package/lib/plugin/internal/source/SourcePluginWorkspace.d.ts +153 -0
  1361. package/lib/plugin/internal/source/SourcePluginWorkspace.js +394 -0
  1362. package/lib/plugin/internal/source/SourcePluginWorkspace.js.map +1 -0
  1363. package/lib/plugin/internal/source/acquirePluginBuildLock.d.ts +35 -0
  1364. package/lib/plugin/internal/source/acquirePluginBuildLock.js +176 -0
  1365. package/lib/plugin/internal/source/acquirePluginBuildLock.js.map +1 -0
  1366. package/lib/plugin/internal/source/autoQuoteGoModToken.d.ts +24 -0
  1367. package/lib/plugin/internal/source/autoQuoteGoModToken.js +110 -0
  1368. package/lib/plugin/internal/source/autoQuoteGoModToken.js.map +1 -0
  1369. package/lib/plugin/internal/source/buildSourcePlugin.d.ts +89 -0
  1370. package/lib/plugin/internal/source/buildSourcePlugin.js +862 -0
  1371. package/lib/plugin/internal/source/buildSourcePlugin.js.map +1 -0
  1372. package/lib/plugin/internal/source/collectPluginSourceDirectories.d.ts +30 -0
  1373. package/lib/plugin/internal/source/collectPluginSourceDirectories.js +77 -0
  1374. package/lib/plugin/internal/source/collectPluginSourceDirectories.js.map +1 -0
  1375. package/lib/plugin/internal/source/collectPluginSourceFiles.d.ts +40 -0
  1376. package/lib/plugin/internal/source/collectPluginSourceFiles.js +95 -0
  1377. package/lib/plugin/internal/source/collectPluginSourceFiles.js.map +1 -0
  1378. package/lib/plugin/internal/source/computeCacheKey.d.ts +75 -0
  1379. package/lib/plugin/internal/source/computeCacheKey.js +122 -0
  1380. package/lib/plugin/internal/source/computeCacheKey.js.map +1 -0
  1381. package/lib/plugin/internal/source/copiesPluginSourceEntry.d.ts +33 -0
  1382. package/lib/plugin/internal/source/copiesPluginSourceEntry.js +57 -0
  1383. package/lib/plugin/internal/source/copiesPluginSourceEntry.js.map +1 -0
  1384. package/lib/plugin/internal/source/createExternalSourceSnapshotLayout.d.ts +22 -0
  1385. package/lib/plugin/internal/source/createExternalSourceSnapshotLayout.js +60 -0
  1386. package/lib/plugin/internal/source/createExternalSourceSnapshotLayout.js.map +1 -0
  1387. package/lib/plugin/internal/source/ensureExecutableGoToolchain.d.ts +25 -0
  1388. package/lib/plugin/internal/source/ensureExecutableGoToolchain.js +96 -0
  1389. package/lib/plugin/internal/source/ensureExecutableGoToolchain.js.map +1 -0
  1390. package/lib/plugin/internal/source/formatDuration.d.ts +18 -0
  1391. package/lib/plugin/internal/source/formatDuration.js +36 -0
  1392. package/lib/plugin/internal/source/formatDuration.js.map +1 -0
  1393. package/lib/plugin/internal/source/formatGoWorkPath.d.ts +35 -0
  1394. package/lib/plugin/internal/source/formatGoWorkPath.js +42 -0
  1395. package/lib/plugin/internal/source/formatGoWorkPath.js.map +1 -0
  1396. package/lib/plugin/internal/source/hashPluginBuildEnvironment.d.ts +47 -0
  1397. package/lib/plugin/internal/source/hashPluginBuildEnvironment.js +597 -0
  1398. package/lib/plugin/internal/source/hashPluginBuildEnvironment.js.map +1 -0
  1399. package/lib/plugin/internal/source/inspectPluginBuildLock.d.ts +29 -0
  1400. package/lib/plugin/internal/source/inspectPluginBuildLock.js +285 -0
  1401. package/lib/plugin/internal/source/inspectPluginBuildLock.js.map +1 -0
  1402. package/lib/plugin/internal/source/isPathWithin.d.ts +16 -0
  1403. package/lib/plugin/internal/source/isPathWithin.js +28 -0
  1404. package/lib/plugin/internal/source/isPathWithin.js.map +1 -0
  1405. package/lib/plugin/internal/source/legacyGlobalCacheTargets.d.ts +24 -0
  1406. package/lib/plugin/internal/source/legacyGlobalCacheTargets.js +60 -0
  1407. package/lib/plugin/internal/source/legacyGlobalCacheTargets.js.map +1 -0
  1408. package/lib/plugin/internal/source/pluginBuildEnvironment.d.ts +31 -0
  1409. package/lib/plugin/internal/source/pluginBuildEnvironment.js +47 -0
  1410. package/lib/plugin/internal/source/pluginBuildEnvironment.js.map +1 -0
  1411. package/lib/plugin/internal/source/pluginBuildEnvironmentWorker.d.ts +1 -0
  1412. package/lib/plugin/internal/source/pluginBuildEnvironmentWorker.js +24 -0
  1413. package/lib/plugin/internal/source/pluginBuildEnvironmentWorker.js.map +1 -0
  1414. package/lib/plugin/internal/source/pluginBuildVersions.d.ts +31 -0
  1415. package/lib/plugin/internal/source/pluginBuildVersions.js +65 -0
  1416. package/lib/plugin/internal/source/pluginBuildVersions.js.map +1 -0
  1417. package/lib/plugin/internal/source/pluginModuleReplaceDirectories.d.ts +41 -0
  1418. package/lib/plugin/internal/source/pluginModuleReplaceDirectories.js +74 -0
  1419. package/lib/plugin/internal/source/pluginModuleReplaceDirectories.js.map +1 -0
  1420. package/lib/plugin/internal/source/pluginSourceCovers.d.ts +32 -0
  1421. package/lib/plugin/internal/source/pluginSourceCovers.js +54 -0
  1422. package/lib/plugin/internal/source/pluginSourceCovers.js.map +1 -0
  1423. package/lib/plugin/internal/source/pluginSourceDigest.d.ts +40 -0
  1424. package/lib/plugin/internal/source/pluginSourceDigest.js +60 -0
  1425. package/lib/plugin/internal/source/pluginSourceDigest.js.map +1 -0
  1426. package/lib/plugin/internal/source/pluginSourceFilesSignature.d.ts +38 -0
  1427. package/lib/plugin/internal/source/pluginSourceFilesSignature.js +53 -0
  1428. package/lib/plugin/internal/source/pluginSourceFilesSignature.js.map +1 -0
  1429. package/lib/plugin/internal/source/pluginSourceState.d.ts +47 -0
  1430. package/lib/plugin/internal/source/pluginSourceState.js +63 -0
  1431. package/lib/plugin/internal/source/pluginSourceState.js.map +1 -0
  1432. package/lib/plugin/internal/source/pluginSourceStateHolds.d.ts +34 -0
  1433. package/lib/plugin/internal/source/pluginSourceStateHolds.js +45 -0
  1434. package/lib/plugin/internal/source/pluginSourceStateHolds.js.map +1 -0
  1435. package/lib/plugin/internal/source/processPluginBuildEnvironment.d.ts +33 -0
  1436. package/lib/plugin/internal/source/processPluginBuildEnvironment.js +40 -0
  1437. package/lib/plugin/internal/source/processPluginBuildEnvironment.js.map +1 -0
  1438. package/lib/plugin/internal/source/pruneCacheFileRoot.d.ts +34 -0
  1439. package/lib/plugin/internal/source/pruneCacheFileRoot.js +120 -0
  1440. package/lib/plugin/internal/source/pruneCacheFileRoot.js.map +1 -0
  1441. package/lib/plugin/internal/source/pruneGoBuildCacheRoot.d.ts +28 -0
  1442. package/lib/plugin/internal/source/pruneGoBuildCacheRoot.js +185 -0
  1443. package/lib/plugin/internal/source/pruneGoBuildCacheRoot.js.map +1 -0
  1444. package/lib/plugin/internal/source/prunePluginCacheRoot.d.ts +46 -0
  1445. package/lib/plugin/internal/source/prunePluginCacheRoot.js +446 -0
  1446. package/lib/plugin/internal/source/prunePluginCacheRoot.js.map +1 -0
  1447. package/lib/plugin/internal/source/prunesPluginSourceDirectory.d.ts +21 -0
  1448. package/lib/plugin/internal/source/prunesPluginSourceDirectory.js +28 -0
  1449. package/lib/plugin/internal/source/prunesPluginSourceDirectory.js.map +1 -0
  1450. package/lib/plugin/internal/source/reclaimPluginBuildLock.d.ts +23 -0
  1451. package/lib/plugin/internal/source/reclaimPluginBuildLock.js +48 -0
  1452. package/lib/plugin/internal/source/reclaimPluginBuildLock.js.map +1 -0
  1453. package/lib/plugin/internal/source/recordCacheFileUse.d.ts +22 -0
  1454. package/lib/plugin/internal/source/recordCacheFileUse.js +43 -0
  1455. package/lib/plugin/internal/source/recordCacheFileUse.js.map +1 -0
  1456. package/lib/plugin/internal/source/releasePluginBuildLock.d.ts +33 -0
  1457. package/lib/plugin/internal/source/releasePluginBuildLock.js +100 -0
  1458. package/lib/plugin/internal/source/releasePluginBuildLock.js.map +1 -0
  1459. package/lib/plugin/internal/source/resolveCleanTargets.d.ts +26 -0
  1460. package/lib/plugin/internal/source/resolveCleanTargets.js +73 -0
  1461. package/lib/plugin/internal/source/resolveCleanTargets.js.map +1 -0
  1462. package/lib/plugin/internal/source/resolveGoCompiler.d.ts +29 -0
  1463. package/lib/plugin/internal/source/resolveGoCompiler.js +62 -0
  1464. package/lib/plugin/internal/source/resolveGoCompiler.js.map +1 -0
  1465. package/lib/plugin/internal/source/resolvePluginCacheRoot.d.ts +21 -0
  1466. package/lib/plugin/internal/source/resolvePluginCacheRoot.js +31 -0
  1467. package/lib/plugin/internal/source/resolvePluginCacheRoot.js.map +1 -0
  1468. package/lib/plugin/internal/source/resolvePluginGoModule.d.ts +34 -0
  1469. package/lib/plugin/internal/source/resolvePluginGoModule.js +65 -0
  1470. package/lib/plugin/internal/source/resolvePluginGoModule.js.map +1 -0
  1471. package/lib/plugin/internal/source/resolveSourceBuildCachePaths.d.ts +21 -0
  1472. package/lib/plugin/internal/source/resolveSourceBuildCachePaths.js +236 -0
  1473. package/lib/plugin/internal/source/resolveSourceBuildCachePaths.js.map +1 -0
  1474. package/lib/plugin/internal/source/selectPluginModuleReplaceDirectories.d.ts +29 -0
  1475. package/lib/plugin/internal/source/selectPluginModuleReplaceDirectories.js +68 -0
  1476. package/lib/plugin/internal/source/selectPluginModuleReplaceDirectories.js.map +1 -0
  1477. package/lib/plugin/internal/source/spawnGoTool.d.ts +22 -0
  1478. package/lib/plugin/internal/source/spawnGoTool.js +164 -0
  1479. package/lib/plugin/internal/source/spawnGoTool.js.map +1 -0
  1480. package/lib/plugin/internal/source/touchPluginCacheEntryInUse.d.ts +27 -0
  1481. package/lib/plugin/internal/source/touchPluginCacheEntryInUse.js +48 -0
  1482. package/lib/plugin/internal/source/touchPluginCacheEntryInUse.js.map +1 -0
  1483. package/lib/plugin/internal/source/waitForPluginBinary.d.ts +36 -0
  1484. package/lib/plugin/internal/source/waitForPluginBinary.js +94 -0
  1485. package/lib/plugin/internal/source/waitForPluginBinary.js.map +1 -0
  1486. package/lib/plugin/internal/source/windowsGoCommandArgs.d.ts +17 -0
  1487. package/lib/plugin/internal/source/windowsGoCommandArgs.js +23 -0
  1488. package/lib/plugin/internal/source/windowsGoCommandArgs.js.map +1 -0
  1489. package/lib/plugin/internal/source/withGoBuildCacheLease.d.ts +37 -0
  1490. package/lib/plugin/internal/source/withGoBuildCacheLease.js +87 -0
  1491. package/lib/plugin/internal/source/withGoBuildCacheLease.js.map +1 -0
  1492. package/lib/plugin/internal/writeCapabilityResolution.d.ts +80 -0
  1493. package/lib/plugin/internal/writeCapabilityResolution.js +196 -0
  1494. package/lib/plugin/internal/writeCapabilityResolution.js.map +1 -0
  1495. package/lib/plugin/resolveCapabilityPlugins.d.ts +53 -32
  1496. package/lib/plugin/resolveCapabilityPlugins.js +209 -38
  1497. package/lib/plugin/resolveCapabilityPlugins.js.map +1 -1
  1498. package/lib/register.js +20 -5
  1499. package/lib/register.js.map +1 -1
  1500. package/lib/structures/ITtscCompilerContext.d.ts +29 -11
  1501. package/lib/structures/ITtscCompilerDiagnostic.d.ts +24 -7
  1502. package/lib/structures/ITtscCompilerResult.d.ts +75 -25
  1503. package/lib/structures/ITtscCompilerTransformation.d.ts +287 -64
  1504. package/lib/structures/ITtscPlugin.d.ts +24 -8
  1505. package/lib/structures/ITtscPluginCapabilities.d.ts +55 -5
  1506. package/lib/structures/ITtscPluginContributor.d.ts +19 -8
  1507. package/lib/structures/ITtscPluginFactoryContext.d.ts +12 -3
  1508. package/lib/structures/ITtscProjectPluginConfig.d.ts +35 -10
  1509. package/lib/structures/TtscPluginStage.d.ts +9 -0
  1510. package/lib/structures/internal/ITtscLoadedNativePlugin.d.ts +19 -5
  1511. package/lib/structures/internal/ITtscParsedProjectConfig.d.ts +29 -3
  1512. package/lib/structures/internal/ITtscProjectIdentity.d.ts +21 -6
  1513. package/lib/structures/internal/ITtscProjectInputSnapshot.d.ts +23 -8
  1514. package/lib/structures/internal/ITtscProjectLocatorOptions.d.ts +18 -4
  1515. package/lib/structures/internal/TtscBuildOptions.d.ts +33 -14
  1516. package/lib/structures/internal/TtscBuildResult.d.ts +63 -4
  1517. package/lib/structures/internal/TtscCommonOptions.d.ts +47 -14
  1518. package/lib/structures/internal/TtscSingleFileEmitOptions.d.ts +46 -5
  1519. package/package.json +26 -12
  1520. package/shim/ast/enums_gen.go +4 -2
  1521. package/shim/ast/go.mod +5 -5
  1522. package/shim/ast/go.sum +10 -10
  1523. package/shim/ast/lint.go +1088 -20
  1524. package/shim/ast/parent.go +38 -22
  1525. package/shim/ast/safe_text.go +48 -26
  1526. package/shim/ast/shim.go +1307 -20
  1527. package/shim/ast/test/next_jsdoc_comment_location_reaches_variable_statement_test.go +51 -0
  1528. package/shim/ast/test/node_text_joins_multi_hop_qualified_name_test.go +24 -9
  1529. package/shim/ast/test/node_text_joins_one_hop_qualified_name_test.go +9 -5
  1530. package/shim/ast/test/node_text_returns_empty_for_nil_test.go +13 -5
  1531. package/shim/ast/test/node_text_returns_identifier_text_test.go +12 -5
  1532. package/shim/ast/test/node_text_skips_empty_qualified_left_test.go +35 -5
  1533. package/shim/astnav/go.mod +5 -5
  1534. package/shim/astnav/go.sum +12 -10
  1535. package/shim/astnav/shim.go +9 -0
  1536. package/shim/bundled/go.mod +7 -1
  1537. package/shim/bundled/go.sum +12 -0
  1538. package/shim/checker/enums_gen.go +4 -2
  1539. package/shim/checker/extra-shim.json +6 -0
  1540. package/shim/checker/go.mod +5 -5
  1541. package/shim/checker/go.sum +10 -10
  1542. package/shim/checker/node_builder_fields_gen.go +19 -0
  1543. package/shim/checker/shim.go +827 -114
  1544. package/shim/compiler/emit_sourcemap.go +68 -29
  1545. package/shim/compiler/emitassemble.go +36 -2
  1546. package/shim/compiler/emithook.go +13 -3
  1547. package/shim/compiler/go.mod +5 -5
  1548. package/shim/compiler/go.sum +10 -10
  1549. package/shim/compiler/incremental.go +56 -20
  1550. package/shim/compiler/resolution.go +92 -9
  1551. package/shim/core/enums_gen.go +2 -2
  1552. package/shim/core/go.mod +6 -1
  1553. package/shim/core/go.sum +10 -0
  1554. package/shim/core/modulekind.go +9 -0
  1555. package/shim/core/shim.go +157 -6
  1556. package/shim/diagnosticwriter/go.mod +10 -1
  1557. package/shim/diagnosticwriter/go.sum +20 -0
  1558. package/shim/diagnosticwriter/lint.go +188 -10
  1559. package/shim/diagnosticwriter/shim.go +14 -0
  1560. package/shim/lsp/go.mod +5 -5
  1561. package/shim/lsp/go.sum +10 -10
  1562. package/shim/lsp/shim.go +78 -2
  1563. package/shim/parser/go.mod +10 -1
  1564. package/shim/parser/go.sum +22 -0
  1565. package/shim/printer/emithost.go +46 -1
  1566. package/shim/printer/go.mod +5 -5
  1567. package/shim/printer/go.sum +10 -10
  1568. package/shim/printer/shim.go +114 -7
  1569. package/shim/printer/sourcemap.go +55 -0
  1570. package/shim/scanner/go.mod +10 -1
  1571. package/shim/scanner/go.sum +20 -0
  1572. package/shim/scanner/regexp.go +19 -4
  1573. package/shim/scanner/shim.go +3 -0
  1574. package/shim/stringutil/extra-shim.json +1 -0
  1575. package/shim/stringutil/go.mod +5 -0
  1576. package/shim/stringutil/go.sum +2 -0
  1577. package/shim/stringutil/shim.go +119 -0
  1578. package/shim/transformers/go.mod +5 -5
  1579. package/shim/transformers/go.sum +12 -10
  1580. package/shim/transformers/shim.go +12 -3
  1581. package/shim/tsoptions/command_line_raw.go +44 -0
  1582. package/shim/tsoptions/go.mod +10 -1
  1583. package/shim/tsoptions/go.sum +22 -0
  1584. package/shim/tsoptions/shim.go +1 -1
  1585. package/shim/tspath/go.mod +1 -1
  1586. package/shim/tspath/go.sum +6 -0
  1587. package/shim/vfs/cachedvfs/go.mod +3 -1
  1588. package/shim/vfs/cachedvfs/go.sum +12 -0
  1589. package/shim/vfs/decode.go +26 -0
  1590. package/shim/vfs/decode_test.go +42 -0
  1591. package/shim/vfs/go.mod +7 -1
  1592. package/shim/vfs/go.sum +12 -0
  1593. package/shim/vfs/osvfs/go.mod +7 -1
  1594. package/shim/vfs/osvfs/go.sum +12 -0
  1595. package/src/TtscCompiler.ts +223 -234
  1596. package/src/TtscService.ts +87 -31
  1597. package/src/TtscServiceRequestOptions.ts +21 -0
  1598. package/src/compiler/internal/CapturedProcessOutput.ts +69 -0
  1599. package/src/compiler/internal/CompilerArgumentsInspection.ts +184 -0
  1600. package/src/compiler/internal/EmitOwnershipIndex.ts +254 -0
  1601. package/src/compiler/internal/PrivateCompilerOutput.ts +330 -0
  1602. package/src/compiler/internal/ResidentCheckProcess.ts +445 -0
  1603. package/src/compiler/internal/ResidentCheckProcessOptions.ts +32 -0
  1604. package/src/compiler/internal/ResidentCheckRequest.ts +39 -0
  1605. package/src/compiler/internal/ResidentCheckResult.ts +24 -0
  1606. package/src/compiler/internal/ResidentCheckTelemetry.ts +36 -0
  1607. package/src/compiler/internal/ResidentReplyKind.ts +18 -0
  1608. package/src/compiler/internal/ResidentTransformProcess.ts +299 -0
  1609. package/src/compiler/internal/ResidentTransformProcessOptions.ts +30 -0
  1610. package/src/compiler/internal/ResidentTransformReply.ts +79 -0
  1611. package/src/compiler/internal/ResidentTransformRequestOptions.ts +16 -0
  1612. package/src/compiler/internal/ResidentTransformRequests.ts +198 -0
  1613. package/src/compiler/internal/StartedResidentTransform.ts +29 -0
  1614. package/src/compiler/internal/TransformProjectWorkerReply.ts +37 -0
  1615. package/src/compiler/internal/TransformProjectWorkerRequest.ts +42 -0
  1616. package/src/compiler/internal/build/BuildExecution.ts +1261 -0
  1617. package/src/compiler/internal/build/BuildTiming.ts +145 -0
  1618. package/src/compiler/internal/build/CompilerDiagnostics.ts +307 -0
  1619. package/src/compiler/internal/build/NativePluginArguments.ts +302 -0
  1620. package/src/compiler/internal/build/PassthroughFlags.ts +229 -0
  1621. package/src/compiler/internal/build/PluginFailureDiagnostics.ts +70 -0
  1622. package/src/compiler/internal/build/ResidentCheckEntryPlan.ts +42 -0
  1623. package/src/compiler/internal/build/ResidentCheckWatchChange.ts +33 -0
  1624. package/src/compiler/internal/build/ResidentCheckWatchSession.ts +501 -0
  1625. package/src/compiler/internal/build/RunBuildOptions.ts +145 -0
  1626. package/src/compiler/internal/build/TsgoArguments.ts +349 -0
  1627. package/src/compiler/internal/build/appendBuildOutput.ts +218 -0
  1628. package/src/compiler/internal/build/bufferResidentCheckEntryRequests.ts +52 -0
  1629. package/src/compiler/internal/build/createProcessDiagnostic.ts +32 -0
  1630. package/src/compiler/internal/build/isAbsoluteLocalProjectInputPath.ts +55 -0
  1631. package/src/compiler/internal/build/mergeProjectInputSnapshots.ts +147 -0
  1632. package/src/compiler/internal/build/normalizeBuildOutput.ts +89 -0
  1633. package/src/compiler/internal/build/parseProjectInputSnapshot.ts +91 -0
  1634. package/src/compiler/internal/build/planResidentCheckEntries.ts +55 -0
  1635. package/src/compiler/internal/build/privateRuntimeRootDir.ts +33 -0
  1636. package/src/compiler/internal/build/residentCheckRequest.ts +41 -0
  1637. package/src/compiler/internal/build/runBuild.ts +61 -0
  1638. package/src/compiler/internal/build/runExternalEmitProvenance.ts +566 -0
  1639. package/src/compiler/internal/build/takeResidentCheckEntryRequest.ts +31 -0
  1640. package/src/compiler/internal/buildNativeCompiler.ts +19 -2
  1641. package/src/compiler/internal/captureProcessOutput.ts +37 -39
  1642. package/src/compiler/internal/compileProjectInMemory.ts +139 -92
  1643. package/src/compiler/internal/ensureExecutable.ts +32 -0
  1644. package/src/compiler/internal/findNearestGoMod.ts +43 -0
  1645. package/src/compiler/internal/isOutsideRelativePath.ts +26 -0
  1646. package/src/compiler/internal/outputText.ts +21 -0
  1647. package/src/compiler/internal/packageRootDir.ts +43 -0
  1648. package/src/compiler/internal/parseNativeTransformOutput.ts +722 -0
  1649. package/src/compiler/internal/project/CompilerProjectSelection.ts +204 -0
  1650. package/src/compiler/internal/project/ConfigJsonText.ts +55 -0
  1651. package/src/compiler/internal/project/compilerUsesCaseSensitiveFileNames.ts +124 -0
  1652. package/src/compiler/internal/project/createNativeProjectContextArgs.ts +14 -19
  1653. package/src/compiler/internal/project/createNativeProjectContextJson.ts +28 -0
  1654. package/src/compiler/internal/project/parseJsonc.ts +318 -0
  1655. package/src/compiler/internal/project/readJsonFile.ts +34 -0
  1656. package/src/compiler/internal/project/readJsoncFile.ts +46 -0
  1657. package/src/compiler/internal/project/readProjectConfig.ts +137 -200
  1658. package/src/compiler/internal/project/resolveOwningProjectConfig.ts +278 -0
  1659. package/src/compiler/internal/project/resolveProjectConfig.ts +18 -127
  1660. package/src/compiler/internal/project/resolveProjectIdentity.ts +153 -0
  1661. package/src/compiler/internal/project/resolveTsconfigExtends.ts +175 -0
  1662. package/src/compiler/internal/project/selectReferencedProject.ts +54 -0
  1663. package/src/compiler/internal/project/tsconfigExtendsFileCandidates.ts +54 -0
  1664. package/src/compiler/internal/readEffectiveCompilerOptions.ts +126 -0
  1665. package/src/compiler/internal/resolveBinary.ts +25 -9
  1666. package/src/compiler/internal/resolveTsgo.ts +31 -11
  1667. package/src/compiler/internal/runNativeCheckWithObservations.ts +211 -0
  1668. package/src/compiler/internal/runSingleFileEmit.ts +92 -27
  1669. package/src/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.ts +2 -0
  1670. package/src/compiler/internal/sharedHost/SidecarEnvironment.ts +151 -0
  1671. package/src/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.ts +7 -0
  1672. package/src/compiler/internal/sharedHost/TSGO_ARGS_ENV.ts +7 -0
  1673. package/src/compiler/internal/sharedHost/assertSharedHostCompatibility.ts +48 -0
  1674. package/src/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.ts +27 -0
  1675. package/src/compiler/internal/sharedHost/clearInheritedTsgoArgs.ts +41 -0
  1676. package/src/compiler/internal/sharedHost/inheritedSidecarEnv.ts +45 -0
  1677. package/src/compiler/internal/sharedHost/isLinkedTransform.ts +19 -0
  1678. package/src/compiler/internal/sharedHost/linkedTransformPlugins.ts +25 -0
  1679. package/src/compiler/internal/sharedHost/publishLinkedTransformPlugins.ts +42 -0
  1680. package/src/compiler/internal/sharedHost/resolvePluginConfigDir.ts +33 -0
  1681. package/src/compiler/internal/sharedHost/selectSharedHostPlugin.ts +35 -0
  1682. package/src/compiler/internal/spawnNative.ts +16 -39
  1683. package/src/compiler/internal/startResidentTransform.ts +66 -53
  1684. package/src/compiler/internal/transformProjectInMemory.ts +347 -635
  1685. package/src/compiler/internal/transformProjectInWorker.ts +170 -0
  1686. package/src/compiler/internal/transformProjectWorker.ts +43 -0
  1687. package/src/flags/AnySubcommand.ts +19 -0
  1688. package/src/flags/COMPILER_ENUM_WHITESPACE.ts +35 -0
  1689. package/src/flags/COMPILER_OPTIONS.ts +512 -0
  1690. package/src/flags/COMPILER_OPTION_ASCII_FOLDS.ts +13 -0
  1691. package/src/flags/COMPILER_OPTION_KINDS.ts +14 -0
  1692. package/src/flags/CompilerOptionSpec.ts +30 -0
  1693. package/src/flags/FLAG_BY_TOKEN.ts +40 -0
  1694. package/src/flags/{schema.ts → FLAG_SCHEMA.ts} +43 -318
  1695. package/src/flags/FlagKind.ts +22 -0
  1696. package/src/flags/FlagLayer.ts +24 -0
  1697. package/src/flags/FlagSpec.ts +118 -0
  1698. package/src/flags/ParseOptions.ts +103 -0
  1699. package/src/flags/ParseResult.ts +44 -0
  1700. package/src/flags/TtscSubcommand.ts +22 -0
  1701. package/src/flags/TtsxSubcommand.ts +13 -0
  1702. package/src/flags/ValueValidator.ts +14 -0
  1703. package/src/flags/buildGoAllowList.ts +43 -0
  1704. package/src/flags/flagsForSubcommand.ts +22 -0
  1705. package/src/flags/getBoolean.ts +27 -0
  1706. package/src/flags/getNumber.ts +24 -0
  1707. package/src/flags/getString.ts +24 -0
  1708. package/src/flags/getStringList.ts +24 -0
  1709. package/src/flags/normalizeCompilerEnumValue.ts +41 -0
  1710. package/src/flags/normalizeFlagToken.ts +38 -0
  1711. package/src/flags/parseFlags.ts +371 -0
  1712. package/src/flags/readCompilerOptionOccurrence.ts +107 -0
  1713. package/src/flags/readCompilerOptionValues.ts +68 -0
  1714. package/src/flags/resolveFlagSpec.ts +29 -0
  1715. package/src/index.ts +9 -3
  1716. package/src/internal/CanonicalTempDirectoryOperations.ts +73 -0
  1717. package/src/internal/CompilerContextSnapshot.ts +139 -0
  1718. package/src/internal/CompilerResultAdapter.ts +320 -0
  1719. package/src/internal/E2ETrace.ts +674 -0
  1720. package/src/internal/IJavaScriptRuntimeCapabilities.ts +50 -0
  1721. package/src/internal/OwnedNativeProcess.ts +417 -0
  1722. package/src/internal/OwnedSynchronousProcess.ts +220 -0
  1723. package/src/internal/RetireLockDirectoryOperations.ts +81 -0
  1724. package/src/internal/SafeCacheCleanupTarget.ts +41 -0
  1725. package/src/internal/SourceNativeRetirement.ts +1109 -0
  1726. package/src/internal/SpawnSyncOutputFiles.ts +29 -0
  1727. package/src/internal/cacheEntryExists.ts +24 -0
  1728. package/src/internal/createCanonicalTempDirectory.ts +35 -18
  1729. package/src/internal/isContendedCandidateRename.ts +35 -0
  1730. package/src/internal/isSpawnSyncFdExhaustion.ts +19 -0
  1731. package/src/internal/javascriptRuntimeCapabilities.ts +166 -0
  1732. package/src/internal/nativeBinary.ts +11 -0
  1733. package/src/internal/parseWindowsDirectoryCaseSensitivity.ts +50 -0
  1734. package/src/internal/pathIdentity/FilesystemPathIdentity.ts +44 -0
  1735. package/src/internal/pathIdentity/FilesystemPathIdentityContext.ts +182 -0
  1736. package/src/internal/pathIdentity/FilesystemPathIdentityOperations.ts +106 -0
  1737. package/src/internal/pathIdentity/ProjectInputPathIdentity.ts +21 -0
  1738. package/src/internal/pathIdentity/ProjectInputPathIdentityContext.ts +21 -0
  1739. package/src/internal/pathIdentity/ProjectInputPathIdentityOperations.ts +22 -0
  1740. package/src/internal/pathIdentity/createFilesystemPathIdentityContext.ts +437 -0
  1741. package/src/internal/pathIdentity/createProjectInputPathIdentityContext.ts +34 -0
  1742. package/src/internal/pathIdentity/isFilesystemPathIdentityWithin.ts +32 -0
  1743. package/src/internal/pathIdentity/isProjectInputPathIdentityWithin.ts +22 -0
  1744. package/src/internal/pathIdentity/resolveFilesystemPath.ts +43 -0
  1745. package/src/internal/pathIdentity/resolvePhysicalPath.ts +31 -0
  1746. package/src/internal/pathIdentity/resolveProjectInputPath.ts +18 -0
  1747. package/src/internal/pluginSource.ts +26 -0
  1748. package/src/internal/projectInputPathIdentity.ts +26 -387
  1749. package/src/internal/resolveNodeBinary.ts +13 -165
  1750. package/src/internal/resolveSafeCacheCleanupTargets.ts +51 -19
  1751. package/src/internal/restoreCompilerError.ts +175 -0
  1752. package/src/internal/retireLockDirectory.ts +166 -0
  1753. package/src/internal/runHoldingLock.ts +55 -0
  1754. package/src/internal/runtimeExecutableIdentity.ts +212 -0
  1755. package/src/internal/serializeCompilerError.ts +145 -0
  1756. package/src/internal/spawnSyncResilient.ts +36 -182
  1757. package/src/internal/spawnSyncWithLowDescriptors.ts +227 -0
  1758. package/src/internal/tsconfig.ts +16 -0
  1759. package/src/launcher/internal/PendingResidentCheckWatchChanges.ts +94 -0
  1760. package/src/launcher/internal/TtscBuildMode.ts +14 -0
  1761. package/src/launcher/internal/TtsxEntryOptions.ts +92 -0
  1762. package/src/launcher/internal/assertNoSolutionBuild.ts +17 -10
  1763. package/src/launcher/internal/assertTtsxNoWatch.ts +49 -0
  1764. package/src/launcher/internal/buildSingleRootProject.ts +303 -0
  1765. package/src/launcher/internal/getCompilerVersionText.ts +20 -5
  1766. package/src/launcher/internal/inlineServedSourceMap.ts +294 -0
  1767. package/src/launcher/internal/linkVirtualEntry.ts +88 -0
  1768. package/src/launcher/internal/{commonJsExportMetadata.ts → parseCommonJsExports.ts} +12 -2
  1769. package/src/launcher/internal/parseTtscBuildArgs.ts +103 -0
  1770. package/src/launcher/internal/parseTtsxCLI.ts +183 -0
  1771. package/src/launcher/internal/prepareExecution.ts +474 -362
  1772. package/src/launcher/internal/prepareTtscBuildMode.ts +64 -0
  1773. package/src/launcher/internal/resolveCacheDir.ts +12 -3
  1774. package/src/launcher/internal/resolveSingleFileOutput.ts +145 -0
  1775. package/src/launcher/internal/resolveTtscserverBinary.ts +20 -5
  1776. package/src/launcher/internal/runTtsc.ts +394 -326
  1777. package/src/launcher/internal/runTtsx.ts +349 -151
  1778. package/src/launcher/internal/runtime/CommonJsRuntimeSource.ts +365 -0
  1779. package/src/launcher/internal/runtime/DependencyBuildAdmission.ts +159 -0
  1780. package/src/launcher/internal/runtime/DependencyBuildGeneration.ts +236 -0
  1781. package/src/launcher/internal/runtime/DependencyBuildLockFence.ts +22 -0
  1782. package/src/launcher/internal/runtime/DependencyBuildLockLease.ts +22 -0
  1783. package/src/launcher/internal/runtime/DependencyBuildLockObservation.ts +49 -0
  1784. package/src/launcher/internal/runtime/DependencyBuildLockProtocol.ts +137 -0
  1785. package/src/launcher/internal/runtime/OwnedProjectSource.ts +140 -0
  1786. package/src/launcher/internal/runtime/OwningModuleOptions.ts +22 -0
  1787. package/src/launcher/internal/runtime/PluginDescriptorInputObservation.ts +112 -0
  1788. package/src/launcher/internal/runtime/ProcessOwnedDirectory.ts +325 -0
  1789. package/src/launcher/internal/runtime/ResolveResult.ts +26 -0
  1790. package/src/launcher/internal/runtime/RuntimeEmitProvenance.ts +58 -0
  1791. package/src/launcher/internal/runtime/RuntimeEntryPreparer.ts +23 -0
  1792. package/src/launcher/internal/runtime/RuntimeFilesystem.ts +64 -0
  1793. package/src/launcher/internal/runtime/RuntimeHookOptions.ts +23 -0
  1794. package/src/launcher/internal/runtime/RuntimeIsolatedEmit.ts +88 -0
  1795. package/src/launcher/internal/runtime/RuntimeLoaderCapabilities.ts +256 -0
  1796. package/src/launcher/internal/runtime/RuntimeManifest.ts +77 -0
  1797. package/src/launcher/internal/runtime/RuntimeManifestRegistry.ts +309 -0
  1798. package/src/launcher/internal/runtime/RuntimeModuleFormat.ts +275 -0
  1799. package/src/launcher/internal/runtime/RuntimeProjectOwnership.ts +139 -0
  1800. package/src/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.ts +11 -0
  1801. package/src/launcher/internal/runtime/acquireDependencyBuildLock.ts +97 -0
  1802. package/src/launcher/internal/runtime/checkNodeRuntimeSupport.ts +94 -0
  1803. package/src/launcher/internal/runtime/claimRuntimeProjectDirectory.ts +54 -0
  1804. package/src/launcher/internal/runtime/commonJsExportNames.ts +57 -0
  1805. package/src/launcher/internal/runtime/commonJsImportFacade.ts +62 -0
  1806. package/src/launcher/internal/runtime/dependencyCacheKey.ts +82 -0
  1807. package/src/launcher/internal/runtime/dependencyCacheRoot.ts +112 -0
  1808. package/src/launcher/internal/runtime/inspectDependencyBuildLock.ts +162 -0
  1809. package/src/launcher/internal/runtime/installRuntimeHooks.ts +2442 -0
  1810. package/src/launcher/internal/runtime/interopProbe.ts +8 -0
  1811. package/src/launcher/internal/runtime/isLocalProcessGone.ts +67 -0
  1812. package/src/launcher/internal/runtime/observeMappedDescriptorResolution.ts +74 -0
  1813. package/src/launcher/internal/runtime/projectModuleOptions.ts +28 -0
  1814. package/src/launcher/internal/runtime/readDependencyCache.ts +89 -0
  1815. package/src/launcher/internal/runtime/realPath.ts +30 -0
  1816. package/src/launcher/internal/runtime/reclaimDependencyBuildLock.ts +27 -0
  1817. package/src/launcher/internal/runtime/releaseDependencyBuildLock.ts +27 -0
  1818. package/src/launcher/internal/runtime/resolveRuntimeCleanTargets.ts +93 -0
  1819. package/src/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.ts +32 -0
  1820. package/src/launcher/internal/runtime/runtimeRunKey.ts +31 -0
  1821. package/src/launcher/internal/runtime/selectRuntimePluginPolicy.ts +28 -0
  1822. package/src/launcher/internal/runtime/withRuntimeDirectoryLock.ts +92 -0
  1823. package/src/launcher/internal/runtimeCompilerArgs.ts +91 -62
  1824. package/src/launcher/internal/runtimeEmitProfile.ts +70 -0
  1825. package/src/launcher/internal/runtimeHookPreload.ts +3 -3
  1826. package/src/launcher/internal/runtimeOwnerPreload.ts +43 -0
  1827. package/src/launcher/internal/singleRootProjectConfig.ts +38 -0
  1828. package/src/launcher/internal/ttscserver/ILSPPluginSelectionInputs.ts +65 -0
  1829. package/src/launcher/internal/ttscserver/LSPProjectInputDigest.ts +331 -0
  1830. package/src/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.ts +107 -0
  1831. package/src/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.ts +41 -0
  1832. package/src/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.ts +36 -0
  1833. package/src/launcher/internal/ttscserver/materializeLSPPluginManifest.ts +60 -0
  1834. package/src/launcher/internal/ttscserver/needsStdio.ts +32 -0
  1835. package/src/launcher/internal/ttscserver/runTtscserver.ts +592 -0
  1836. package/src/launcher/internal/watch/CompilerDirectoryWatchEventPlan.ts +31 -0
  1837. package/src/launcher/internal/watch/DirectoryWatcher.ts +45 -0
  1838. package/src/launcher/internal/watch/FseventsStreams.ts +303 -0
  1839. package/src/launcher/internal/watch/ProjectInputWatchRules.ts +179 -0
  1840. package/src/launcher/internal/watch/WatchInputChange.ts +31 -0
  1841. package/src/launcher/internal/watch/WatchPaths.ts +156 -0
  1842. package/src/launcher/internal/{watchTopology.ts → watch/WatchTopology.ts} +867 -962
  1843. package/src/launcher/internal/watch/literalGlobRoot.ts +40 -0
  1844. package/src/launcher/internal/watch/planCompilerDirectoryWatchEvent.ts +83 -0
  1845. package/src/launcher/internal/watch/projectInputActiveWatchDirectories.ts +47 -0
  1846. package/src/launcher/internal/watch/projectInputAvailableWatchDirectory.ts +56 -0
  1847. package/src/launcher/internal/watch/projectInputEventShouldNotify.ts +23 -0
  1848. package/src/launcher/internal/watch/projectInputMembershipInvalidatesProgram.ts +63 -0
  1849. package/src/launcher/internal/watch/projectInputReloadEventShouldNotify.ts +127 -0
  1850. package/src/launcher/internal/watch/projectInputReplacementStrandsWatchers.ts +57 -0
  1851. package/src/launcher/internal/watch/projectInputTopologyMayAffect.ts +73 -0
  1852. package/src/launcher/internal/watch/projectInputWatchDirectories.ts +33 -0
  1853. package/src/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.ts +49 -0
  1854. package/src/launcher/internal/watch/syncWatchers.ts +64 -0
  1855. package/src/launcher/internal/watch/watchDirectory.ts +53 -0
  1856. package/src/launcher/internal/watch/watchDirectoryThroughFsWatch.ts +47 -0
  1857. package/src/launcher/ttscserver.ts +1 -1
  1858. package/src/launcher/ttsx.ts +2 -3
  1859. package/src/plugin/CapabilityPluginResolver.ts +549 -0
  1860. package/src/plugin/ITtscCapabilityPlugin.ts +93 -0
  1861. package/src/plugin/internal/CapabilityPluginResult.ts +99 -0
  1862. package/src/plugin/internal/CapabilityResolutionFormat.ts +248 -0
  1863. package/src/plugin/internal/ITtscCapabilityPluginSource.ts +37 -0
  1864. package/src/plugin/internal/ITtscCapabilityResolutionEntry.ts +57 -0
  1865. package/src/plugin/internal/ITtscCapabilityResolutionPlugin.ts +22 -0
  1866. package/src/plugin/internal/capabilityPluginWorker.ts +216 -0
  1867. package/src/plugin/internal/decodeCapabilityCommandReply.ts +27 -0
  1868. package/src/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.ts +182 -0
  1869. package/src/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.ts +59 -0
  1870. package/src/plugin/internal/load/PluginDescriptorAdmission.ts +75 -0
  1871. package/src/plugin/internal/load/PluginDescriptorEvaluationCache.ts +432 -0
  1872. package/src/plugin/internal/load/PluginPackageResolution.ts +711 -0
  1873. package/src/plugin/internal/load/ProjectPluginEntries.ts +232 -0
  1874. package/src/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.ts +34 -0
  1875. package/src/plugin/internal/load/collectProjectHostInputs.ts +88 -0
  1876. package/src/plugin/internal/load/composePluginSources.ts +121 -0
  1877. package/src/plugin/internal/load/declaresHostInputReads.ts +52 -0
  1878. package/src/plugin/internal/load/hasProjectPluginEntries.ts +33 -0
  1879. package/src/plugin/internal/load/hashHostInputPaths.ts +44 -0
  1880. package/src/plugin/internal/load/isRelativePluginSpecifier.ts +31 -0
  1881. package/src/plugin/internal/load/loadProjectPlugins.ts +2334 -0
  1882. package/src/plugin/internal/load/moduleResolutionBaseSelects.ts +59 -0
  1883. package/src/plugin/internal/load/observeImportSearchRoots.ts +42 -0
  1884. package/src/plugin/internal/load/pluginLabel.ts +28 -0
  1885. package/src/plugin/internal/load/realpathHostInput.ts +22 -0
  1886. package/src/plugin/internal/load/realpathHostInputPaths.ts +27 -0
  1887. package/src/plugin/internal/load/rejectJsTransformFunctions.ts +23 -0
  1888. package/src/plugin/internal/load/requirePluginSource.ts +34 -0
  1889. package/src/plugin/internal/load/resolveNativeSource.ts +42 -0
  1890. package/src/plugin/internal/load/validatePluginContributors.ts +102 -0
  1891. package/src/plugin/internal/load/validatePluginSource.ts +19 -0
  1892. package/src/plugin/internal/load/visitImportMappedCandidates.ts +63 -0
  1893. package/src/plugin/internal/pluginDescriptorFailureReason.ts +35 -0
  1894. package/src/plugin/internal/pluginDescriptorProcessFailure.ts +48 -0
  1895. package/src/plugin/internal/readCapabilityResolution.ts +193 -0
  1896. package/src/plugin/internal/receiveCapabilityFailure.ts +27 -0
  1897. package/src/plugin/internal/source/CachePrunePolicy.ts +47 -0
  1898. package/src/plugin/internal/source/GoBuildCacheCoordination.ts +588 -0
  1899. package/src/plugin/internal/source/GoEnvironmentReading.ts +109 -0
  1900. package/src/plugin/internal/source/GoSourceInputs.ts +182 -0
  1901. package/src/plugin/internal/source/GoToolResolution.ts +312 -0
  1902. package/src/plugin/internal/source/IGoBuildCachePruneOptions.ts +34 -0
  1903. package/src/plugin/internal/source/IPluginCachePruneOptions.ts +38 -0
  1904. package/src/plugin/internal/source/IPluginModuleReplaceDirectory.ts +30 -0
  1905. package/src/plugin/internal/source/ITtscBuildContributor.ts +19 -0
  1906. package/src/plugin/internal/source/ITtscSourceBuildCachePaths.ts +28 -0
  1907. package/src/plugin/internal/source/NativeSourcePackages.ts +428 -0
  1908. package/src/plugin/internal/source/PluginBinaryUse.ts +159 -0
  1909. package/src/plugin/internal/source/PluginBinaryWaitResult.ts +34 -0
  1910. package/src/plugin/internal/source/PluginBuildEnvironmentReadings.ts +273 -0
  1911. package/src/plugin/internal/source/PluginBuildEnvironmentWitness.ts +243 -0
  1912. package/src/plugin/internal/source/PluginBuildLockFence.ts +26 -0
  1913. package/src/plugin/internal/source/PluginBuildLockLease.ts +31 -0
  1914. package/src/plugin/internal/source/PluginBuildLockObservation.ts +48 -0
  1915. package/src/plugin/internal/source/PluginBuildLockOwner.ts +225 -0
  1916. package/src/plugin/internal/source/PluginBuildLockProtocol.ts +342 -0
  1917. package/src/plugin/internal/source/SourceBuildCacheLayout.ts +303 -0
  1918. package/src/plugin/internal/source/SourceBuildFilesystemOperations.ts +32 -0
  1919. package/src/plugin/internal/source/SourcePluginAdmission.ts +127 -0
  1920. package/src/plugin/internal/source/SourcePluginWorkspace.ts +564 -0
  1921. package/src/plugin/internal/source/acquirePluginBuildLock.ts +222 -0
  1922. package/src/plugin/internal/source/autoQuoteGoModToken.ts +113 -0
  1923. package/src/plugin/internal/source/buildSourcePlugin.ts +1225 -0
  1924. package/src/plugin/internal/source/collectPluginSourceDirectories.ts +70 -0
  1925. package/src/plugin/internal/source/collectPluginSourceFiles.ts +90 -0
  1926. package/src/plugin/internal/source/computeCacheKey.ts +208 -0
  1927. package/src/plugin/internal/source/copiesPluginSourceEntry.ts +52 -0
  1928. package/src/plugin/internal/source/createExternalSourceSnapshotLayout.ts +66 -0
  1929. package/src/plugin/internal/source/ensureExecutableGoToolchain.ts +87 -0
  1930. package/src/plugin/internal/source/formatDuration.ts +32 -0
  1931. package/src/plugin/internal/source/formatGoWorkPath.ts +42 -0
  1932. package/src/plugin/internal/source/hashPluginBuildEnvironment.ts +735 -0
  1933. package/src/plugin/internal/source/inspectPluginBuildLock.ts +330 -0
  1934. package/src/plugin/internal/source/isPathWithin.ts +24 -0
  1935. package/src/plugin/internal/source/legacyGlobalCacheTargets.ts +71 -0
  1936. package/src/plugin/internal/source/pluginBuildEnvironment.ts +59 -0
  1937. package/src/plugin/internal/source/pluginBuildEnvironmentWorker.ts +30 -0
  1938. package/src/plugin/internal/source/pluginBuildVersions.ts +75 -0
  1939. package/src/plugin/internal/source/pluginModuleReplaceDirectories.ts +84 -0
  1940. package/src/plugin/internal/source/pluginSourceCovers.ts +54 -0
  1941. package/src/plugin/internal/source/pluginSourceDigest.ts +55 -0
  1942. package/src/plugin/internal/source/pluginSourceFilesSignature.ts +54 -0
  1943. package/src/plugin/internal/source/pluginSourceState.ts +69 -0
  1944. package/src/plugin/internal/source/pluginSourceStateHolds.ts +45 -0
  1945. package/src/plugin/internal/source/processPluginBuildEnvironment.ts +40 -0
  1946. package/src/plugin/internal/source/pruneCacheFileRoot.ts +134 -0
  1947. package/src/plugin/internal/source/pruneGoBuildCacheRoot.ts +228 -0
  1948. package/src/plugin/internal/source/prunePluginCacheRoot.ts +507 -0
  1949. package/src/plugin/internal/source/prunesPluginSourceDirectory.ts +25 -0
  1950. package/src/plugin/internal/source/reclaimPluginBuildLock.ts +63 -0
  1951. package/src/plugin/internal/source/recordCacheFileUse.ts +35 -0
  1952. package/src/plugin/internal/source/releasePluginBuildLock.ts +125 -0
  1953. package/src/plugin/internal/source/resolveCleanTargets.ts +84 -0
  1954. package/src/plugin/internal/source/resolveGoCompiler.ts +92 -0
  1955. package/src/plugin/internal/source/resolvePluginCacheRoot.ts +32 -0
  1956. package/src/plugin/internal/source/resolvePluginGoModule.ts +69 -0
  1957. package/src/plugin/internal/source/resolveSourceBuildCachePaths.ts +276 -0
  1958. package/src/plugin/internal/source/selectPluginModuleReplaceDirectories.ts +80 -0
  1959. package/src/plugin/internal/source/spawnGoTool.ts +204 -0
  1960. package/src/plugin/internal/source/touchPluginCacheEntryInUse.ts +44 -0
  1961. package/src/plugin/internal/source/waitForPluginBinary.ts +123 -0
  1962. package/src/plugin/internal/source/windowsGoCommandArgs.ts +19 -0
  1963. package/src/plugin/internal/source/withGoBuildCacheLease.ts +101 -0
  1964. package/src/plugin/internal/writeCapabilityResolution.ts +266 -0
  1965. package/src/plugin/resolveCapabilityPlugins.ts +242 -77
  1966. package/src/register.ts +20 -7
  1967. package/src/structures/ITtscCompilerContext.ts +29 -11
  1968. package/src/structures/ITtscCompilerDiagnostic.ts +24 -7
  1969. package/src/structures/ITtscCompilerResult.ts +75 -25
  1970. package/src/structures/ITtscCompilerTransformation.ts +304 -64
  1971. package/src/structures/ITtscPlugin.ts +24 -8
  1972. package/src/structures/ITtscPluginCapabilities.ts +58 -5
  1973. package/src/structures/ITtscPluginContributor.ts +19 -8
  1974. package/src/structures/ITtscPluginFactoryContext.ts +12 -3
  1975. package/src/structures/ITtscProjectPluginConfig.ts +35 -10
  1976. package/src/structures/TtscPluginStage.ts +9 -0
  1977. package/src/structures/internal/ITtscLoadedNativePlugin.ts +27 -5
  1978. package/src/structures/internal/ITtscParsedProjectConfig.ts +37 -3
  1979. package/src/structures/internal/ITtscProjectIdentity.ts +27 -6
  1980. package/src/structures/internal/ITtscProjectInputSnapshot.ts +31 -8
  1981. package/src/structures/internal/ITtscProjectLocatorOptions.ts +21 -4
  1982. package/src/structures/internal/TtscBuildOptions.ts +38 -14
  1983. package/src/structures/internal/TtscBuildResult.ts +74 -4
  1984. package/src/structures/internal/TtscCommonOptions.ts +59 -14
  1985. package/src/structures/internal/TtscSingleFileEmitOptions.ts +55 -5
  1986. package/tools/gen_shims/main.go +124 -11
  1987. package/tools/gen_shims/package_load_admission_rejects_incomplete_results_test.go +61 -0
  1988. package/tools/gen_shims/private_field_support_preserves_upstream_layout_test.go +104 -0
  1989. package/tools/shim_audit/enum_generation_preserves_existing_family_members_test.go +182 -0
  1990. package/tools/shim_audit/enum_generation_refuses_removed_public_members_test.go +93 -0
  1991. package/tools/shim_audit/main.go +166 -31
  1992. package/tools/shim_audit/main_test.go +35 -0
  1993. package/tools/shim_audit/producer_exemptions_require_rationale_test.go +5 -0
  1994. package/tools/shim_audit/producer_surface_includes_exposed_methods_test.go +5 -0
  1995. package/tools/shim_audit/producer_surface_rejects_unproducible_reference_test.go +5 -0
  1996. package/tools/shim_audit/shim_dir_coverage_rejects_unregistered_shims_test.go +71 -0
  1997. package/utility/command.go +48 -0
  1998. package/utility/flags_gen.go +2 -2
  1999. package/utility/host.go +282 -66
  2000. package/utility/preamble_output.go +245 -0
  2001. package/utility/preamble_output_test.go +90 -0
  2002. package/utility/serve.go +61 -18
  2003. package/cmd/ttscgraph/serve_graph_snapshot_version_matches_typescript_client_test.go +0 -32
  2004. package/cmd/ttscgraph/serve_protocol_version_matches_the_typescript_client_test.go +0 -48
  2005. package/cmd/ttscgraph/serve_session_retries_failed_dump_test.go +0 -103
  2006. package/internal/graph/dump_schema_version_matches_the_typescript_client_test.go +0 -48
  2007. package/internal/graph/edge_kinds_names_every_declared_kind_test.go +0 -49
  2008. package/internal/graph/graph_kind_contracts_match_their_producers_test.go +0 -121
  2009. package/internal/lspserver/lsp_launcher_reload_directory_fingerprint_parity_windows_test.go +0 -94
  2010. package/internal/lspserver/lsp_project_diagnostics_resident_unsupported_falls_back_test.go +0 -123
  2011. package/lib/compiler/internal/paths.d.ts +0 -27
  2012. package/lib/compiler/internal/paths.js +0 -70
  2013. package/lib/compiler/internal/paths.js.map +0 -1
  2014. package/lib/compiler/internal/project/readConfigJson.d.ts +0 -30
  2015. package/lib/compiler/internal/project/readConfigJson.js +0 -208
  2016. package/lib/compiler/internal/project/readConfigJson.js.map +0 -1
  2017. package/lib/compiler/internal/residentCheckProcess.d.ts +0 -44
  2018. package/lib/compiler/internal/residentCheckProcess.js +0 -213
  2019. package/lib/compiler/internal/residentCheckProcess.js.map +0 -1
  2020. package/lib/compiler/internal/residentTransformProcess.d.ts +0 -65
  2021. package/lib/compiler/internal/residentTransformProcess.js +0 -330
  2022. package/lib/compiler/internal/residentTransformProcess.js.map +0 -1
  2023. package/lib/compiler/internal/resolveEmittedJavaScript.d.ts +0 -25
  2024. package/lib/compiler/internal/resolveEmittedJavaScript.js +0 -165
  2025. package/lib/compiler/internal/resolveEmittedJavaScript.js.map +0 -1
  2026. package/lib/compiler/internal/runBuild.d.ts +0 -152
  2027. package/lib/compiler/internal/runBuild.js +0 -1694
  2028. package/lib/compiler/internal/runBuild.js.map +0 -1
  2029. package/lib/compiler/internal/sharedHostHelpers.d.ts +0 -79
  2030. package/lib/compiler/internal/sharedHostHelpers.js +0 -134
  2031. package/lib/compiler/internal/sharedHostHelpers.js.map +0 -1
  2032. package/lib/flags/parser.d.ts +0 -97
  2033. package/lib/flags/parser.js +0 -293
  2034. package/lib/flags/parser.js.map +0 -1
  2035. package/lib/flags/schema.d.ts +0 -191
  2036. package/lib/flags/schema.js.map +0 -1
  2037. package/lib/internal/windowsDirectoryCaseSensitivity.d.ts +0 -10
  2038. package/lib/internal/windowsDirectoryCaseSensitivity.js +0 -34
  2039. package/lib/internal/windowsDirectoryCaseSensitivity.js.map +0 -1
  2040. package/lib/launcher/internal/commonJsExportMetadata.d.ts +0 -7
  2041. package/lib/launcher/internal/commonJsExportMetadata.js.map +0 -1
  2042. package/lib/launcher/internal/registerRuntimeHooks.js +0 -59
  2043. package/lib/launcher/internal/registerRuntimeHooks.js.map +0 -1
  2044. package/lib/launcher/internal/runTtscserver.d.ts +0 -35
  2045. package/lib/launcher/internal/runTtscserver.js +0 -661
  2046. package/lib/launcher/internal/runTtscserver.js.map +0 -1
  2047. package/lib/launcher/internal/runtimeHooks.d.ts +0 -198
  2048. package/lib/launcher/internal/runtimeHooks.js +0 -2579
  2049. package/lib/launcher/internal/runtimeHooks.js.map +0 -1
  2050. package/lib/launcher/internal/servedSourceMap.d.ts +0 -25
  2051. package/lib/launcher/internal/servedSourceMap.js +0 -164
  2052. package/lib/launcher/internal/servedSourceMap.js.map +0 -1
  2053. package/lib/launcher/internal/singleFileOutput.d.ts +0 -16
  2054. package/lib/launcher/internal/singleFileOutput.js +0 -103
  2055. package/lib/launcher/internal/singleFileOutput.js.map +0 -1
  2056. package/lib/launcher/internal/watchTopology.d.ts +0 -329
  2057. package/lib/launcher/internal/watchTopology.js.map +0 -1
  2058. package/lib/plugin/internal/buildSourcePlugin.d.ts +0 -298
  2059. package/lib/plugin/internal/buildSourcePlugin.js +0 -3087
  2060. package/lib/plugin/internal/buildSourcePlugin.js.map +0 -1
  2061. package/lib/plugin/internal/capabilityResolutionCache.d.ts +0 -76
  2062. package/lib/plugin/internal/capabilityResolutionCache.js +0 -224
  2063. package/lib/plugin/internal/capabilityResolutionCache.js.map +0 -1
  2064. package/lib/plugin/internal/descriptorProcessFailure.d.ts +0 -36
  2065. package/lib/plugin/internal/descriptorProcessFailure.js +0 -62
  2066. package/lib/plugin/internal/descriptorProcessFailure.js.map +0 -1
  2067. package/lib/plugin/internal/loadProjectPlugins.d.ts +0 -75
  2068. package/lib/plugin/internal/loadProjectPlugins.js +0 -2405
  2069. package/lib/plugin/internal/loadProjectPlugins.js.map +0 -1
  2070. package/src/compiler/internal/paths.ts +0 -68
  2071. package/src/compiler/internal/project/readConfigJson.ts +0 -209
  2072. package/src/compiler/internal/residentCheckProcess.ts +0 -259
  2073. package/src/compiler/internal/residentTransformProcess.ts +0 -406
  2074. package/src/compiler/internal/resolveEmittedJavaScript.ts +0 -197
  2075. package/src/compiler/internal/runBuild.ts +0 -2345
  2076. package/src/compiler/internal/sharedHostHelpers.ts +0 -154
  2077. package/src/flags/parser.ts +0 -459
  2078. package/src/internal/windowsDirectoryCaseSensitivity.ts +0 -33
  2079. package/src/launcher/internal/registerRuntimeHooks.ts +0 -68
  2080. package/src/launcher/internal/runTtscserver.ts +0 -842
  2081. package/src/launcher/internal/runtimeHooks.ts +0 -3197
  2082. package/src/launcher/internal/servedSourceMap.ts +0 -183
  2083. package/src/launcher/internal/singleFileOutput.ts +0 -133
  2084. package/src/plugin/internal/buildSourcePlugin.ts +0 -3993
  2085. package/src/plugin/internal/capabilityResolutionCache.ts +0 -305
  2086. package/src/plugin/internal/descriptorProcessFailure.ts +0 -69
  2087. package/src/plugin/internal/loadProjectPlugins.ts +0 -3073
  2088. package/tools/shim_audit/shim_dir_coverage_test.go +0 -25
  2089. /package/lib/{launcher/internal/registerRuntimeHooks.d.ts → compiler/internal/transformProjectWorker.d.ts} +0 -0
@@ -0,0 +1,2442 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs";
3
+ import {
4
+ createRequire,
5
+ isBuiltin,
6
+ registerHooks,
7
+ stripTypeScriptTypes,
8
+ } from "node:module";
9
+ import path from "node:path";
10
+ import { fileURLToPath, pathToFileURL } from "node:url";
11
+
12
+ import { EmitOwnershipIndex } from "../../../compiler/internal/EmitOwnershipIndex";
13
+ import { privateRuntimeRootDir } from "../../../compiler/internal/build/privateRuntimeRootDir";
14
+ import { runBuild } from "../../../compiler/internal/build/runBuild";
15
+ import { readProjectConfig } from "../../../compiler/internal/project/readProjectConfig";
16
+ import { resolveOwningProjectConfig } from "../../../compiler/internal/project/resolveOwningProjectConfig";
17
+ import { resolveTsgo } from "../../../compiler/internal/resolveTsgo";
18
+ import { spawnNative } from "../../../compiler/internal/spawnNative";
19
+ import { E2ETrace } from "../../../internal/E2ETrace";
20
+ import { createCanonicalTempDirectory } from "../../../internal/createCanonicalTempDirectory";
21
+ import { runtimeExecutableIdentity } from "../../../internal/runtimeExecutableIdentity";
22
+ import { moduleResolutionBaseSelects } from "../../../plugin/internal/load/moduleResolutionBaseSelects";
23
+ import { recordCacheFileUse } from "../../../plugin/internal/source/recordCacheFileUse";
24
+ import { buildSingleRootProject } from "../buildSingleRootProject";
25
+ import { inlineServedSourceMap } from "../inlineServedSourceMap";
26
+ import { runtimeCompilerArgs } from "../runtimeCompilerArgs";
27
+ import { CommonJsRuntimeSource } from "./CommonJsRuntimeSource";
28
+ import { DependencyBuildAdmission } from "./DependencyBuildAdmission";
29
+ import { DependencyBuildGeneration } from "./DependencyBuildGeneration";
30
+ import { OwnedProjectSource } from "./OwnedProjectSource";
31
+ import type { OwningModuleOptions } from "./OwningModuleOptions";
32
+ import { PluginDescriptorInputObservation } from "./PluginDescriptorInputObservation";
33
+ import type { ResolveResult } from "./ResolveResult";
34
+ import { RuntimeEmitProvenance } from "./RuntimeEmitProvenance";
35
+ import { RuntimeFilesystem } from "./RuntimeFilesystem";
36
+ import type { RuntimeHookOptions } from "./RuntimeHookOptions";
37
+ import { RuntimeIsolatedEmit } from "./RuntimeIsolatedEmit";
38
+ import { RuntimeLoaderCapabilities } from "./RuntimeLoaderCapabilities";
39
+ import type { RuntimeManifest } from "./RuntimeManifest";
40
+ import { RuntimeManifestRegistry } from "./RuntimeManifestRegistry";
41
+ import { RuntimeProjectOwnership } from "./RuntimeProjectOwnership";
42
+ import { RuntimeModuleFormat } from "./RuntimeModuleFormat";
43
+ import { checkNodeRuntimeSupport } from "./checkNodeRuntimeSupport";
44
+ import { commonJsExportNames } from "./commonJsExportNames";
45
+ import { commonJsImportFacade } from "./commonJsImportFacade";
46
+ import { dependencyCacheKey } from "./dependencyCacheKey";
47
+ import { dependencyCacheRoot } from "./dependencyCacheRoot";
48
+ import { observeMappedDescriptorResolution } from "./observeMappedDescriptorResolution";
49
+ import { projectModuleOptions } from "./projectModuleOptions";
50
+ import { readDependencyCache } from "./readDependencyCache";
51
+ import { realPath } from "./realPath";
52
+ import { restoreStrippedNodeBuiltinScheme } from "./restoreStrippedNodeBuiltinScheme";
53
+ import { selectRuntimePluginPolicy } from "./selectRuntimePluginPolicy";
54
+
55
+ /**
56
+ * Install the source-loading hooks on the current (main) thread. Idempotent:
57
+ * the preload on `NODE_OPTIONS` installs them in the entry process and in every
58
+ * child process the program spawns, and `ttsc/register` may install them again
59
+ * in a process that already has them.
60
+ *
61
+ * Prepared entries use their owner's build, including its selected transform
62
+ * plugins, under source URLs so `__dirname`/`import.meta.url` keep source-tree
63
+ * coordinates. Callback-prepared and direct prebuilt entry admission are
64
+ * distinct from dependency builds and orphan recovery; this installer does not
65
+ * certify that every dynamically loaded module has passed an entry type-check
66
+ * gate. Three load paths:
67
+ *
68
+ * 1. A `.ts` belonging to the entry project: serve the pre-built emitted JS
69
+ * (transform plugins already applied) under the producer's captured physical
70
+ * source-to-written-output ownership.
71
+ * 2. Any other raw `.ts` dependency (a published or workspace package that ships
72
+ * source): build its own owning `tsconfig.json` once via `runBuild` and
73
+ * serve the emit. A real build (not a type-strip) is required because Node's
74
+ * type-stripping cannot do cross-file type-only elision; a value-shaped
75
+ * import of a type+namespace merge survives stripping and dangles at run
76
+ * time.
77
+ * 3. No owning tsconfig: use an isolated tsgo emit in the runtime module format,
78
+ * lowering standard decorators and CommonJS imports/exports. Type stripping
79
+ * remains recovery when no compiler emit is available.
80
+ *
81
+ * The hooks are synchronous and run on the main thread (not a loader worker):
82
+ * that is what lets a CommonJS `require("./x")` chain reach them and what makes
83
+ * `require.resolve(..., { paths })` inside `runBuild`'s plugin loader behave.
84
+ *
85
+ * Both graphs go through `registerHooks`, the supported customization API. A
86
+ * CommonJS module an ESM `import` reaches may need an ESM facade that loads it
87
+ * through the CommonJS loader (`commonJsImportFacade`): handed to the ESM
88
+ * loader with source, the module's own `require()` bypasses the hooks on some
89
+ * releases, so a nested `require("./x.js")` backed only by `x.ts` failed there.
90
+ * Capability and entry predicates also admit direct CommonJS source lanes. One
91
+ * reach the API lacks on some releases is `require.resolve`, which is probed
92
+ * before installation. Served CommonJS bodies receive an owned require function
93
+ * whose resolve member applies the same source policy on those releases. Its
94
+ * copied extension registry advertises the supported source extensions; foreign
95
+ * resolver methods and global extension registries are never replaced.
96
+ *
97
+ * Direct descriptor evaluation records user preloads after hook installation.
98
+ * Only the generated CommonJS output sibling takes Node's native resolve/load
99
+ * path; its synchronous bootstrap suspends recording of implementation imports.
100
+ * This does not certify startup inputs read before the hooks were installed.
101
+ *
102
+ * @evidence contracts/common.md#principled-implementation Resolution preserves successful Node decisions, rescues source spellings only after documented resolution fails, and serves only outputs whose ownership index names the exact source. CommonJS facades delegate native evaluation and project detected own named exports under the selected namespace capability; an owned module-local require supplies source resolution when native require.resolve bypasses public hooks.
103
+ * @evidence contracts/common.md#clear-and-simple-design One synchronous hook owner coordinates source selection, emission ownership and descriptor observation; the entry, owning-project and orphan lanes remain explicit because they have distinct compilation premises. Private helpers carry those policies without a second foreign-resolver layer.
104
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Public registerHooks handles resolution and loading; installation mutates neither Module._resolveFilename nor require.extensions. Source-extension recovery implements emitted-to-source spelling under the runtime contract, and module-local require adaptation addresses the probed public-hook difference without replacing Node methods.
105
+ * @evidence contracts/common.md#meaningful-documentation Native paragraphs describe the three serving lanes, compile gates, source identity, capability-based local adaptation and extension-registry ownership; helper comments state ownership and failure effects with descriptive prose separated from tags.
106
+ * @evidence contracts/portability.md#os-neutral-implementation Node URL conversion, native filesystem paths and physical resolution preserve OS spelling boundaries. Actual public-hook probes select runtime capabilities, native emit uses executable arguments without shell interpolation, and unresolved filesystem observation refuses reusable descriptor proof.
107
+ * @evidence contracts/performance.md#efficient-algorithms Source ownership indexes replace repeated whole-emit scans with indexed source/native-identity queries. Export discovery processes source/emit bytes, reexport edges, native resolution and Set/name unions under traversal-local seen sets; separate roots can repeat traversal. Config-chain validation reads discovered inputs. Compiler identity brackets and streams executable bytes on valid lookups, refusing failed observations. Native build/name-scan/orphan paths add compilation, path/metadata/IO cost; recursive graphs remain subject to stack limits.
108
+ * @evidence contracts/performance.md#reuse-equivalent-work Entry emits and dependency generations are shared within the current run; project/root keys include the same captured plugin policy compilation consumes, root keys also include source bytes, and orphan keys include source bytes, format, lowering policy and content-proven compiler identity. Nearest-config selection revalidates candidate existence. Project and failed-build memos still use a helper-instance module-evaluation snapshot and do not certify arbitrary mid-run config or dependency edits.
109
+ * @evidence contracts/performance.md#bound-retention-and-release-resources This installed helper retains hooks, callback and memoized module roles/builds, growing with distinct projects, roots and export scans without an eviction cap. Synchronous isolated output/publication staging paths attempt cleanup; failed native removal can propagate or add a causal cleanup error rather than certify release. WeakMap indexes do not independently retain their build keys. Node module caches and cross-process generations have their separate retention owners.
110
+ */
111
+ export function installRuntimeHooks(options: RuntimeHookOptions = {}): void {
112
+ if (options.prepareEntry !== undefined) {
113
+ prepareRuntimeEntry = options.prepareEntry;
114
+ }
115
+ if (installed) {
116
+ return;
117
+ }
118
+ assertNodeRuntimeSupport();
119
+ // Probed before the runtime's hooks exist, so nothing the probes load is
120
+ // served or recorded as an input of the program.
121
+ nativeRequireResolveHooks =
122
+ RuntimeLoaderCapabilities.requireResolveConsultsHooks();
123
+ CommonJsRuntimeSource.configure(
124
+ resolveCommonJsRequest,
125
+ !nativeRequireResolveHooks,
126
+ );
127
+ RuntimeLoaderCapabilities.commonJsNamespaceCarriesModuleExports();
128
+ // Error stacks use the served source maps. This supported switch is applied
129
+ // only after the required public loader capabilities have been established.
130
+ if (typeof process.setSourceMapsEnabled === "function") {
131
+ process.setSourceMapsEnabled(true);
132
+ }
133
+ registerHooks({ load, resolve });
134
+ PluginDescriptorInputObservation.begin(true);
135
+ installed = true;
136
+ }
137
+
138
+ /**
139
+ * Actual public-hook coverage determines whether module-local resolve needs
140
+ * adaptation.
141
+ */
142
+ let nativeRequireResolveHooks = true;
143
+
144
+ /**
145
+ * Preserve native resolution first and apply the existing source policy to an
146
+ * owned require.
147
+ */
148
+ function resolveCommonJsRequest(
149
+ native: NodeJS.RequireResolve,
150
+ specifier: string,
151
+ options: { paths?: string[] } | undefined,
152
+ filename: string,
153
+ ): string {
154
+ if (nativeRequireResolveHooks || typeof specifier !== "string")
155
+ return native(specifier, options);
156
+ const parents = path.isAbsolute(specifier)
157
+ ? [undefined]
158
+ : options?.paths === undefined
159
+ ? [pathToFileURL(filename).href]
160
+ : Array.isArray(options.paths) &&
161
+ options.paths.every((entry) => typeof entry === "string")
162
+ ? options.paths.map(
163
+ (entry) =>
164
+ pathToFileURL(path.join(path.resolve(entry), "index.js")).href,
165
+ )
166
+ : [];
167
+ const observations = parents.map((parent) =>
168
+ observePluginDescriptorResolutionCandidates(specifier, parent),
169
+ );
170
+ let selected: string | undefined;
171
+ try {
172
+ try {
173
+ const resolved = native(specifier, options);
174
+ if (path.isAbsolute(resolved)) selected = pathToFileURL(resolved).href;
175
+ if (selected !== undefined)
176
+ recordPluginDescriptorResolution(specifier, parents[0], selected);
177
+ return resolved;
178
+ } catch (error) {
179
+ for (const parent of parents) {
180
+ const rescued = probeRescuableSpecifier(specifier, parent);
181
+ if (rescued === null) continue;
182
+ selected = rescued;
183
+ recordPluginDescriptorResolution(specifier, parent, rescued);
184
+ return fileURLToPath(rescued);
185
+ }
186
+ throw error;
187
+ }
188
+ } finally {
189
+ for (const observation of observations) observation.commit(selected);
190
+ }
191
+ }
192
+
193
+ /** Source/JS extensions probed when an extensionless relative import fails. */
194
+ const RESOLVABLE_EXTENSIONS = [
195
+ ".ts",
196
+ ".tsx",
197
+ ".mts",
198
+ ".cts",
199
+ ".js",
200
+ ".mjs",
201
+ ".cjs",
202
+ ] as const;
203
+
204
+ /** Union of the ttsx rescue probes and Node's built-in CommonJS probes. */
205
+ const DESCRIPTOR_PROBE_EXTENSIONS = [
206
+ ...RESOLVABLE_EXTENSIONS,
207
+ ".json",
208
+ ".node",
209
+ ] as const;
210
+
211
+ /** TypeScript source extensions these hooks compile. */
212
+ const TYPESCRIPT_EXTENSIONS = [".ts", ".tsx", ".mts", ".cts"] as const;
213
+
214
+ interface ResolveContext {
215
+ readonly parentURL?: string;
216
+ readonly conditions?: string[];
217
+ readonly importAttributes?: Record<string, string | undefined>;
218
+ }
219
+
220
+ interface LoadContext {
221
+ readonly format?: string | null;
222
+ readonly conditions?: string[];
223
+ readonly importAttributes?: Record<string, string | undefined>;
224
+ }
225
+
226
+ interface LoadResult {
227
+ format: string | null | undefined;
228
+ source?: string | ArrayBuffer | NodeJS.TypedArray;
229
+ shortCircuit?: boolean;
230
+ }
231
+
232
+ interface ServedSource {
233
+ source: string;
234
+
235
+ /** Options of the project that emitted this source; `null` when none did. */
236
+ moduleOptions: OwningModuleOptions | null;
237
+ emittedFile?: string;
238
+ sourceFile?: string;
239
+ /** Private observation of actual owning-config/build selection only. */
240
+ selectedTsconfig?: string;
241
+ buildScope?: string;
242
+ }
243
+
244
+ type NextResolve = (
245
+ specifier: string,
246
+ context: ResolveContext,
247
+ ) => ResolveResult;
248
+
249
+ type NextLoad = (url: string, context: LoadContext) => LoadResult;
250
+
251
+ /**
252
+ * Throw an actionable version error when the current Node.js cannot run the
253
+ * ttsx source runtime. Guards the hook-installation boundary directly (a child
254
+ * or grandchild that inherits the runtime preload under an unsupported Node) so
255
+ * the failure is diagnosed here instead of surfacing as a bare `TypeError:
256
+ * registerHooks is not a function`.
257
+ */
258
+ function assertNodeRuntimeSupport(): void {
259
+ const message = checkNodeRuntimeSupport(process.versions.node);
260
+ if (message !== null) {
261
+ throw new Error(message);
262
+ }
263
+ }
264
+
265
+ let installed = false;
266
+
267
+ let prepareRuntimeEntry: ((filename: string) => RuntimeManifest) | undefined;
268
+
269
+ /** TypeScript URLs resolved at a JavaScript-to-TypeScript entry boundary. */
270
+ const runtimeEntryUrls = new Set<string>();
271
+
272
+ /**
273
+ * The process entry, where Node's ESM loader opens it: resolved with no parent
274
+ * and without the `require` condition, as an `--import` preload makes Node run
275
+ * every entry. A CommonJS entry is handed to Node with its source rather than
276
+ * as the facade, so Node loads it as the main module.
277
+ */
278
+ const esmEntryUrls = new Set<string>();
279
+
280
+ /**
281
+ * CommonJS modules the ESM loader evaluates from their source on a runtime
282
+ * whose `require` is then Node's narrower one
283
+ * (`RuntimeLoaderCapabilities.hookedCommonJsImportKeepsRequire`).
284
+ */
285
+ const narrowRequireUrls = new Set<string>();
286
+
287
+ /**
288
+ * Modules a {@link narrowRequireUrls} module asks for. That `require` loads
289
+ * through the ESM loader and accepts only a module Node evaluates as CommonJS,
290
+ * so a CommonJS module it asks for is handed to Node with its source, never as
291
+ * the facade, which is an ES module.
292
+ */
293
+ const narrowRequestedUrls = new Set<string>();
294
+
295
+ /**
296
+ * Rescue an extensionless or directory relative specifier that Node's resolver
297
+ * rejected. Only runs after `nextResolve` throws, so a successful resolution is
298
+ * never perturbed; a genuinely missing module finds no candidate and the
299
+ * original error is rethrown, preserving `ERR_MODULE_NOT_FOUND`.
300
+ */
301
+ function resolve(
302
+ specifier: string,
303
+ context: ResolveContext,
304
+ nextResolve: NextResolve,
305
+ ): ResolveResult {
306
+ // The generated file belongs to the evaluator. Other roots, including user
307
+ // --import preloads, retain ordinary resolution and input observations.
308
+ if (isDescriptorEvaluatorBootstrap(specifier))
309
+ return nextResolve(specifier, context);
310
+ const candidates = observePluginDescriptorResolutionCandidates(
311
+ specifier,
312
+ context.parentURL,
313
+ );
314
+ // The URL the resolution settled on, or `undefined` while it has not: a
315
+ // resolution that throws probed every candidate, so all of them are kept.
316
+ let selected: string | undefined;
317
+ try {
318
+ let result: ResolveResult;
319
+ try {
320
+ result = rememberRuntimeEntry(
321
+ restoreStrippedNodeBuiltinScheme(
322
+ specifier,
323
+ nextResolve(specifier, context),
324
+ ),
325
+ context,
326
+ );
327
+ } catch (error) {
328
+ const rescued = probeRescuableSpecifier(specifier, context.parentURL);
329
+ if (rescued === null) {
330
+ throw error;
331
+ }
332
+ result = rememberRuntimeEntry(
333
+ { shortCircuit: true, url: rescued },
334
+ context,
335
+ );
336
+ }
337
+ selected = result.url;
338
+ recordPluginDescriptorResolution(specifier, context.parentURL, result.url);
339
+ const moduleApi = CommonJsRuntimeSource.moduleSource();
340
+ if (
341
+ !nativeRequireResolveHooks &&
342
+ result.url === "node:module" &&
343
+ context.parentURL !== moduleApi.url &&
344
+ !isDescriptorEvaluatorBootstrap(context.parentURL ?? "")
345
+ )
346
+ return { shortCircuit: true, url: moduleApi.url };
347
+ rememberCommonJsImportRole(result.url, context);
348
+ return result;
349
+ } finally {
350
+ candidates.commit(selected);
351
+ }
352
+ }
353
+
354
+ /**
355
+ * Fingerprint every path whose state can redirect one descriptor import, and
356
+ * report the ones the resolution could have read once it settles.
357
+ *
358
+ * The fingerprints are taken before the real resolver runs. Reporting
359
+ * candidates only after the descriptor finished would pair an earlier
360
+ * descriptor result with later file state when a higher-priority candidate
361
+ * appeared during evaluation. They are reported only when the resolution
362
+ * settles, because a bare specifier's search stops at the first root whose
363
+ * package it selects (`moduleResolutionBaseSelects`): the roots after it were
364
+ * never read, and a missing candidate there, proven absent by the metadata of a
365
+ * directory as busy as a home directory, would cost the descriptor its cache
366
+ * proof for a path that cannot have steered it. A resolution that fails read
367
+ * every root, so `commit(undefined)` reports them all.
368
+ */
369
+ function observePluginDescriptorResolutionCandidates(
370
+ specifier: string,
371
+ parentURL: string | undefined,
372
+ ): { commit(selectedURL: string | undefined): void } {
373
+ const inactive = { commit: () => undefined };
374
+ if (process.env.TTSC_PLUGIN_DESCRIPTOR_INPUTS_ACTIVE !== "1") return inactive;
375
+ if (isBuiltin(specifier) || specifier.startsWith("node:")) return inactive;
376
+ const parent = runtimeFilePath(parentURL);
377
+ if (parent === undefined) return inactive;
378
+ // Mapped targets use the shared recorder's earlier witnesses. A later
379
+ // candidate read cannot replace a proof withdrawn during this window.
380
+ if (specifier.startsWith("#")) {
381
+ const observation = observeMappedDescriptorResolution(
382
+ specifier,
383
+ parent,
384
+ DESCRIPTOR_PROBE_EXTENSIONS,
385
+ );
386
+ return {
387
+ commit: (selectedURL) => {
388
+ appendPluginDescriptorInputs(
389
+ observation
390
+ .commit(
391
+ selectedURL === undefined ? undefined : runtimeFilePath(selectedURL),
392
+ )
393
+ .map((record) => `${JSON.stringify({ parent, ...record })}\n`),
394
+ );
395
+ },
396
+ };
397
+ }
398
+ // Candidates of a relative or absolute specifier, and those of each search
399
+ // root of a bare one, in search order.
400
+ const local: string[] = [];
401
+ const roots: { directory: string; lines: string[] }[] = [];
402
+ let lines = local;
403
+ const recorded = new Set<string>();
404
+ const record = (candidate: string): void => {
405
+ const resolved = path.resolve(candidate);
406
+ if (recorded.has(resolved)) return;
407
+ recorded.add(resolved);
408
+ lines.push(
409
+ ...observePluginDescriptorInput({
410
+ parent,
411
+ resolved,
412
+ }),
413
+ );
414
+ };
415
+ const commit = (selectedURL: string | undefined): void => {
416
+ const selected =
417
+ selectedURL === undefined ? undefined : runtimeFilePath(selectedURL);
418
+ const reached = roots.findIndex((root) =>
419
+ moduleResolutionBaseSelects(
420
+ root.directory,
421
+ selected,
422
+ DESCRIPTOR_PROBE_EXTENSIONS,
423
+ ),
424
+ );
425
+ appendPluginDescriptorInputs([
426
+ ...local,
427
+ ...(reached === -1 ? roots : roots.slice(0, reached + 1)).flatMap(
428
+ (root) => root.lines,
429
+ ),
430
+ ]);
431
+ };
432
+ const recordManifestTargets = (
433
+ value: unknown,
434
+ directory: string,
435
+ allowBare: boolean = false,
436
+ ): void => {
437
+ if (typeof value === "string") {
438
+ if (
439
+ value !== "" &&
440
+ (allowBare || value.startsWith("./") || value.startsWith("../"))
441
+ ) {
442
+ recordBase(path.resolve(directory, value));
443
+ }
444
+ return;
445
+ }
446
+ if (Array.isArray(value)) {
447
+ for (const item of value) {
448
+ recordManifestTargets(item, directory, allowBare);
449
+ }
450
+ return;
451
+ }
452
+ if (value !== null && typeof value === "object") {
453
+ for (const item of Object.values(value)) {
454
+ recordManifestTargets(item, directory, allowBare);
455
+ }
456
+ }
457
+ };
458
+ const recordPackageManifests = (file: string): void => {
459
+ for (
460
+ let directory = path.dirname(file);
461
+ ;
462
+ directory = path.dirname(directory)
463
+ ) {
464
+ const manifest = path.join(directory, "package.json");
465
+ record(manifest);
466
+ if (RuntimeFilesystem.isFile(manifest)) return;
467
+ const parentDirectory = path.dirname(directory);
468
+ if (parentDirectory === directory) return;
469
+ }
470
+ };
471
+ const localBases = (value: string): string[] => {
472
+ if (value.startsWith("file:")) return [fileURLToPath(value)];
473
+ const raw = path.resolve(path.dirname(parent), value);
474
+ const suffixStart = value.search(/[?#]/);
475
+ if (suffixStart === -1) return [raw];
476
+ const pathname = value.slice(0, suffixStart);
477
+ return pathname === ""
478
+ ? [raw]
479
+ : [...new Set([raw, path.resolve(path.dirname(parent), pathname)])];
480
+ };
481
+ const bases = new Set<string>();
482
+ const recordBase = (base: string): void => {
483
+ const resolvedBase = path.resolve(base);
484
+ if (bases.has(resolvedBase)) return;
485
+ bases.add(resolvedBase);
486
+ record(resolvedBase);
487
+ for (const candidate of typescriptSourcesForJavaScriptSpecifier(
488
+ resolvedBase,
489
+ )) {
490
+ record(candidate);
491
+ }
492
+ for (const extension of DESCRIPTOR_PROBE_EXTENSIONS) {
493
+ record(resolvedBase + extension);
494
+ }
495
+ const manifestFile = path.join(resolvedBase, "package.json");
496
+ record(manifestFile);
497
+ for (const extension of DESCRIPTOR_PROBE_EXTENSIONS) {
498
+ record(path.join(resolvedBase, `index${extension}`));
499
+ }
500
+ try {
501
+ const manifest = JSON.parse(
502
+ fs.readFileSync(manifestFile, "utf8").replace(/^\uFEFF/, ""),
503
+ ) as Record<string, unknown>;
504
+ recordManifestTargets(manifest.exports, resolvedBase);
505
+ recordManifestTargets(manifest.module, resolvedBase, true);
506
+ recordManifestTargets(manifest.main, resolvedBase, true);
507
+ } catch {
508
+ // The real resolver owns malformed package diagnostics.
509
+ }
510
+ };
511
+
512
+ if (
513
+ specifier.startsWith(".") ||
514
+ path.isAbsolute(specifier) ||
515
+ specifier.startsWith("file:")
516
+ ) {
517
+ try {
518
+ for (const base of localBases(specifier)) {
519
+ recordPackageManifests(base);
520
+ if (RuntimeFilesystem.isFile(base)) record(base);
521
+ else recordBase(base);
522
+ }
523
+ } catch {
524
+ // The real resolver owns invalid URL spellings.
525
+ }
526
+ return { commit };
527
+ }
528
+
529
+ const parts = specifier.split("/");
530
+ const packageParts = parts[0]?.startsWith("@")
531
+ ? parts.slice(0, 2)
532
+ : parts.slice(0, 1);
533
+ if (packageParts.some((part) => part === undefined || part === "")) {
534
+ return { commit };
535
+ }
536
+ const packageName = packageParts.join("/");
537
+ const subpath = parts.slice(packageParts.length);
538
+ for (const searchPath of createRequire(parent).resolve.paths(specifier) ??
539
+ []) {
540
+ const packageDirectory = path.join(searchPath, packageName);
541
+ const root = { directory: packageDirectory, lines: [] as string[] };
542
+ roots.push(root);
543
+ lines = root.lines;
544
+ recordBase(packageDirectory);
545
+ if (subpath.length !== 0) {
546
+ recordBase(path.join(packageDirectory, ...subpath));
547
+ }
548
+ // CommonJS resolution continues past an existing but unusable package
549
+ // directory. Fingerprint every search root before the resolver runs so a
550
+ // farther selected package retains evaluation-time hashes for its
551
+ // superseding candidates.
552
+ }
553
+ return { commit };
554
+ }
555
+
556
+ /**
557
+ * Report one resolved descriptor edge to the parent loader. The channel is
558
+ * active for direct-evaluator user preloads after hook installation. The exact
559
+ * generated evaluator entry bypasses these hooks and suspends recording only
560
+ * while its synchronous implementation imports load; descriptor imports then
561
+ * resume it.
562
+ */
563
+ function recordPluginDescriptorResolution(
564
+ specifier: string,
565
+ parentURL: string | undefined,
566
+ resolvedURL: string,
567
+ ): void {
568
+ if (process.env.TTSC_PLUGIN_DESCRIPTOR_INPUTS_ACTIVE !== "1") return;
569
+ const resolved = runtimeFilePath(resolvedURL);
570
+ if (resolved === undefined) return;
571
+ const parent = runtimeFilePath(parentURL);
572
+ recordPluginDescriptorInput({
573
+ ...(parent === undefined ? {} : { parent }),
574
+ resolved,
575
+ specifier,
576
+ });
577
+ for (
578
+ let directory = path.dirname(resolved);
579
+ ;
580
+ directory = path.dirname(directory)
581
+ ) {
582
+ const manifest = path.join(directory, "package.json");
583
+ recordPluginDescriptorInput({
584
+ ...(parent === undefined ? {} : { parent }),
585
+ resolved: manifest,
586
+ });
587
+ if (RuntimeFilesystem.isFile(manifest)) break;
588
+ const parentDirectory = path.dirname(directory);
589
+ if (parentDirectory === directory) break;
590
+ }
591
+ }
592
+
593
+ function recordPluginDescriptorInput(record: {
594
+ hash?: string | null;
595
+ parent?: string;
596
+ realpath?: string | null;
597
+ resolved: string;
598
+ signature?: string;
599
+ specifier?: string;
600
+ unstable?: boolean;
601
+ }): void {
602
+ appendPluginDescriptorInputs(observePluginDescriptorInput(record));
603
+ }
604
+
605
+ /**
606
+ * Observe one path and every symbolic link among its lexical ancestors, as the
607
+ * lines `appendPluginDescriptorInputs` reports, without reporting them yet.
608
+ */
609
+ function observePluginDescriptorInput(record: {
610
+ hash?: string | null;
611
+ parent?: string;
612
+ realpath?: string | null;
613
+ resolved: string;
614
+ signature?: string;
615
+ specifier?: string;
616
+ unstable?: boolean;
617
+ }): string[] {
618
+ if (process.env.TTSC_PLUGIN_DESCRIPTOR_INPUTS_ACTIVE !== "1") return [];
619
+ const lines: string[] = [];
620
+ const observe = (line: string | undefined): void => {
621
+ if (line !== undefined) lines.push(line);
622
+ else PluginDescriptorInputObservation.invalidate();
623
+ };
624
+ observe(observePluginDescriptorInputOnce(record));
625
+ const resolved = path.resolve(record.resolved);
626
+ const parsed = path.parse(resolved);
627
+ let current = parsed.root;
628
+ const relative = path.relative(parsed.root, resolved);
629
+ for (const segment of relative.split(path.sep).slice(0, -1)) {
630
+ if (segment === "") continue;
631
+ current = path.join(current, segment);
632
+ try {
633
+ if (fs.lstatSync(current).isSymbolicLink()) {
634
+ observe(observePluginDescriptorInputOnce({ resolved: current }));
635
+ }
636
+ } catch {
637
+ break;
638
+ }
639
+ }
640
+ return lines;
641
+ }
642
+
643
+ /** Report observed lines to the parent loader, in the order given. */
644
+ function appendPluginDescriptorInputs(lines: readonly string[]): void {
645
+ if (lines.length === 0) return;
646
+ if (process.env.TTSC_PLUGIN_DESCRIPTOR_INPUTS_ACTIVE !== "1") return;
647
+ PluginDescriptorInputObservation.record(lines);
648
+ const out = process.env.TTSC_PLUGIN_DESCRIPTOR_INPUTS_OUT;
649
+ if (out === undefined || out.length === 0) {
650
+ PluginDescriptorInputObservation.invalidate();
651
+ return;
652
+ }
653
+ try {
654
+ fs.appendFileSync(out, lines.join(""), "utf8");
655
+ } catch {
656
+ PluginDescriptorInputObservation.invalidate();
657
+ }
658
+ }
659
+
660
+ /** Observe one path without recursively revisiting its lexical ancestors. */
661
+ function observePluginDescriptorInputOnce(record: {
662
+ hash?: string | null;
663
+ parent?: string;
664
+ realpath?: string | null;
665
+ resolved: string;
666
+ signature?: string;
667
+ specifier?: string;
668
+ unstable?: boolean;
669
+ }): string | undefined {
670
+ try {
671
+ const beforeSignature = pluginDescriptorInputMetadataSignature(
672
+ record.resolved,
673
+ );
674
+ const observedHash = pluginDescriptorInputHash(record.resolved);
675
+ const observedRealpath = pluginDescriptorInputRealpath(record.resolved);
676
+ const afterSignature = pluginDescriptorInputMetadataSignature(
677
+ record.resolved,
678
+ );
679
+ const unstable =
680
+ record.unstable === true ||
681
+ beforeSignature === undefined ||
682
+ afterSignature === undefined ||
683
+ beforeSignature !== afterSignature ||
684
+ (record.hash !== undefined && record.hash !== observedHash) ||
685
+ (record.realpath !== undefined && record.realpath !== observedRealpath) ||
686
+ (record.signature !== undefined && record.signature !== afterSignature);
687
+ return `${JSON.stringify({
688
+ ...record,
689
+ hash: observedHash,
690
+ realpath: observedRealpath,
691
+ ...(unstable ? { unstable: true } : { signature: afterSignature }),
692
+ })}\n`;
693
+ } catch {
694
+ // Dependency reporting is advisory to cache reuse; the selected entry is
695
+ // still retained by the parent if this side channel cannot observe it.
696
+ return undefined;
697
+ }
698
+ }
699
+
700
+ function pluginDescriptorInputRealpath(file: string): string | null {
701
+ try {
702
+ return fs.realpathSync.native(file);
703
+ } catch {
704
+ return null;
705
+ }
706
+ }
707
+
708
+ /** Metadata identity that exposes content-preserving A-B-A replacement. */
709
+ function pluginDescriptorInputMetadataSignature(
710
+ file: string,
711
+ ): string | undefined {
712
+ const requested = path.resolve(file);
713
+ let current = requested;
714
+ for (;;) {
715
+ try {
716
+ const link = fs.lstatSync(current, { bigint: true });
717
+ let target = link;
718
+ if (link.isSymbolicLink()) {
719
+ try {
720
+ target = fs.statSync(current, { bigint: true });
721
+ } catch {
722
+ // A broken link's own metadata cannot expose its target appearing
723
+ // and disappearing during evaluation. Decline cache proof instead.
724
+ return undefined;
725
+ }
726
+ }
727
+ return [
728
+ path.relative(current, requested),
729
+ link.dev,
730
+ link.ino,
731
+ link.mode,
732
+ link.size,
733
+ link.mtimeNs,
734
+ link.ctimeNs,
735
+ target.dev,
736
+ target.ino,
737
+ target.mode,
738
+ target.size,
739
+ target.mtimeNs,
740
+ target.ctimeNs,
741
+ ].join(":");
742
+ } catch (error) {
743
+ if (!RuntimeFilesystem.isMissingPathError(error)) return undefined;
744
+ const parent = path.dirname(current);
745
+ if (parent === current) return undefined;
746
+ current = parent;
747
+ }
748
+ }
749
+ }
750
+
751
+ function pluginDescriptorInputHash(file: string): string | null {
752
+ try {
753
+ if (fs.statSync(file).isDirectory()) {
754
+ return pluginDescriptorDirectoryHash();
755
+ }
756
+ return crypto
757
+ .createHash("sha256")
758
+ .update(fs.readFileSync(file))
759
+ .digest("hex");
760
+ } catch {
761
+ return null;
762
+ }
763
+ }
764
+
765
+ /** Stable public fingerprint for an existing directory candidate's kind. */
766
+ function pluginDescriptorDirectoryHash(): string {
767
+ return crypto
768
+ .createHash("sha256")
769
+ .update("ttsc:host-input:directory\0")
770
+ .digest("hex");
771
+ }
772
+
773
+ function runtimeFilePath(value: string | undefined): string | undefined {
774
+ if (value === undefined) return undefined;
775
+ if (value.startsWith("file:")) {
776
+ try {
777
+ return path.resolve(fileURLToPath(value));
778
+ } catch {
779
+ return undefined;
780
+ }
781
+ }
782
+ return path.isAbsolute(value) ? path.resolve(value) : undefined;
783
+ }
784
+
785
+ /**
786
+ * Record what a resolution that did not go through `require()` means for how a
787
+ * CommonJS module it reaches is handed to Node: the process entry, or a module
788
+ * a narrow `require` asked for ({@link narrowRequestedUrls}).
789
+ */
790
+ function rememberCommonJsImportRole(
791
+ url: string,
792
+ context: ResolveContext,
793
+ ): void {
794
+ if (hasCondition(context, "require")) return;
795
+ if (context.parentURL === undefined) esmEntryUrls.add(url);
796
+ else if (narrowRequireUrls.has(context.parentURL))
797
+ narrowRequestedUrls.add(url);
798
+ }
799
+
800
+ /** Remember an ESM root until its synchronous load hook prepares the project. */
801
+ function rememberRuntimeEntry(
802
+ result: ResolveResult,
803
+ context: ResolveContext,
804
+ ): ResolveResult {
805
+ if (
806
+ result.url.startsWith("file:") &&
807
+ isTypeScriptSource(fileURLToPath(result.url)) &&
808
+ (context.parentURL === undefined ||
809
+ !context.parentURL.startsWith("file:") ||
810
+ !isTypeScriptSource(fileURLToPath(context.parentURL)))
811
+ ) {
812
+ runtimeEntryUrls.add(result.url);
813
+ }
814
+ return result;
815
+ }
816
+
817
+ const builtProjects = new Map<string, DependencyBuildGeneration.BuiltProject>();
818
+
819
+ const commonJsNameScanSources = new Map<string, string | null>();
820
+
821
+ function load(
822
+ url: string,
823
+ context: LoadContext,
824
+ nextLoad: NextLoad,
825
+ ): LoadResult {
826
+ const moduleApi = CommonJsRuntimeSource.moduleSource();
827
+ if (url === moduleApi.url)
828
+ return { shortCircuit: true, format: "module", source: moduleApi.source };
829
+ // Preserve Node's file-entry evaluation without facade/export-name scans of
830
+ // the owned bootstrap or observations of its temporary path and manifests.
831
+ if (isDescriptorEvaluatorBootstrap(url)) return nextLoad(url, context);
832
+ if (!url.startsWith("file:")) {
833
+ return nextLoad(url, context);
834
+ }
835
+ const filename = fileURLToPath(url);
836
+ if (!isTypeScriptSource(filename)) {
837
+ return loadJavaScript(url, filename, context, nextLoad);
838
+ }
839
+ const served = resolveServedSource(
840
+ filename,
841
+ url,
842
+ runtimeEntryUrls.delete(url) || isProcessEntry(filename),
843
+ );
844
+ const format = RuntimeModuleFormat.moduleFormat(
845
+ filename,
846
+ served.moduleOptions,
847
+ );
848
+ // An ESM import of a CommonJS source gets the facade, which loads the module
849
+ // through the CommonJS loader, through the selected public CommonJS load boundary
850
+ // (`commonJsImportFacade`); entry predicates can instead admit served source.
851
+ if (format === "commonjs" && !hasCondition(context, "require")) {
852
+ if (servesCommonJsFromSource(url)) {
853
+ E2ETrace.runtimePreparation(
854
+ served.source,
855
+ filename,
856
+ format,
857
+ "ttsx-commonjs-source-import",
858
+ {
859
+ emittedFile: served.emittedFile,
860
+ moduleOptions: served.moduleOptions,
861
+ sourceFile: served.sourceFile,
862
+ selectedTsconfig: served.selectedTsconfig,
863
+ buildScope: served.buildScope,
864
+ },
865
+ );
866
+ return {
867
+ format,
868
+ shortCircuit: true,
869
+ source: CommonJsRuntimeSource.prepare(served.source, filename),
870
+ };
871
+ }
872
+ return {
873
+ format: "module",
874
+ shortCircuit: true,
875
+ source: commonJsImportFacade(
876
+ url,
877
+ filename,
878
+ runtimeCommonJsExportNames(
879
+ served.sourceFile ?? filename,
880
+ served.source,
881
+ ),
882
+ RuntimeLoaderCapabilities.commonJsNamespaceCarriesModuleExports(),
883
+ ),
884
+ };
885
+ }
886
+ if (format === "commonjs")
887
+ E2ETrace.runtimePreparation(
888
+ served.source,
889
+ filename,
890
+ format,
891
+ "ttsx-commonjs-source-load",
892
+ {
893
+ emittedFile: served.emittedFile,
894
+ moduleOptions: served.moduleOptions,
895
+ sourceFile: served.sourceFile,
896
+ selectedTsconfig: served.selectedTsconfig,
897
+ buildScope: served.buildScope,
898
+ },
899
+ );
900
+ else if (process.env.TTSC_E2E_TRACE)
901
+ E2ETrace.runtimePreparation(
902
+ served.source,
903
+ filename,
904
+ format,
905
+ "ttsx-esm-source-load",
906
+ {
907
+ emittedFile: served.emittedFile,
908
+ moduleOptions: served.moduleOptions,
909
+ sourceFile: served.sourceFile,
910
+ selectedTsconfig: served.selectedTsconfig,
911
+ buildScope: served.buildScope,
912
+ },
913
+ );
914
+ return {
915
+ format,
916
+ shortCircuit: true,
917
+ source:
918
+ format === "commonjs"
919
+ ? CommonJsRuntimeSource.prepare(served.source, filename)
920
+ : served.source,
921
+ };
922
+ }
923
+
924
+ /**
925
+ * Load a JavaScript module, handing a CommonJS one an ESM import reaches to the
926
+ * CommonJS loader through the facade where Node would otherwise evaluate it
927
+ * with its narrower `require`. A runtime that gives a hook-served CommonJS
928
+ * module that `require` gives it to every CommonJS module an import reaches
929
+ * once any load hook exists, so without the facade such a module had no
930
+ * `require.cache`, `require.extensions` or `require.resolve.paths`, and could
931
+ * not `require()` a TypeScript source.
932
+ */
933
+ function loadJavaScript(
934
+ url: string,
935
+ filename: string,
936
+ context: LoadContext,
937
+ nextLoad: NextLoad,
938
+ ): LoadResult {
939
+ const loaded = nextLoad(url, context);
940
+ if (loaded.format !== "commonjs") return loaded;
941
+ const source =
942
+ typeof loaded.source === "string"
943
+ ? loaded.source
944
+ : loaded.source !== undefined && loaded.source !== null
945
+ ? Buffer.from(loaded.source as Uint8Array).toString("utf8")
946
+ : readFileOrNull(filename);
947
+ if (source === null) return loaded;
948
+ if (
949
+ hasCondition(context, "require") ||
950
+ RuntimeLoaderCapabilities.hookedCommonJsImportKeepsRequire() ||
951
+ servesCommonJsFromSource(url)
952
+ ) {
953
+ const preparedSource = inlineServedSourceMap(source, filename, filename);
954
+ E2ETrace.runtimePreparation(
955
+ preparedSource,
956
+ filename,
957
+ loaded.format,
958
+ "ttsx-commonjs-javascript-load",
959
+ );
960
+ return {
961
+ ...loaded,
962
+ shortCircuit: true,
963
+ source: CommonJsRuntimeSource.prepare(preparedSource, filename),
964
+ };
965
+ }
966
+ return {
967
+ format: "module",
968
+ shortCircuit: true,
969
+ source: commonJsImportFacade(
970
+ url,
971
+ filename,
972
+ runtimeCommonJsExportNames(filename, source),
973
+ RuntimeLoaderCapabilities.commonJsNamespaceCarriesModuleExports(),
974
+ ),
975
+ };
976
+ }
977
+
978
+ /**
979
+ * Whether a CommonJS module an ESM import reached is handed to Node with its
980
+ * source rather than as the facade: the process entry, which Node then loads as
981
+ * the main module, and a module a narrow `require` asked for. Where the source
982
+ * gets Node's narrower `require`, the module is recorded, so a CommonJS module
983
+ * it asks for is handed over the same way.
984
+ */
985
+ function servesCommonJsFromSource(url: string): boolean {
986
+ if (!esmEntryUrls.has(url) && !narrowRequestedUrls.has(url)) return false;
987
+ if (!RuntimeLoaderCapabilities.hookedCommonJsImportKeepsRequire())
988
+ narrowRequireUrls.add(url);
989
+ return true;
990
+ }
991
+
992
+ /** Scan both facade lanes from source paths using their actual require policy. */
993
+ function runtimeCommonJsExportNames(filename: string, source: string): string[] {
994
+ return commonJsExportNames(
995
+ source,
996
+ filename,
997
+ (target) => isTypeScriptSource(target)
998
+ ? emitCommonJsForNameScan(target)
999
+ : readFileOrNull(target),
1000
+ (parent, specifier) => {
1001
+ const native = createRequire(parent).resolve;
1002
+ return resolveCommonJsRequest(native, specifier, undefined, parent);
1003
+ },
1004
+ );
1005
+ }
1006
+
1007
+ /**
1008
+ * Whether a hook context carries `condition`. The conditions arrive as an array
1009
+ * on some releases and as a set on others.
1010
+ */
1011
+ function hasCondition(
1012
+ context: ResolveContext | LoadContext,
1013
+ condition: string,
1014
+ ): boolean {
1015
+ for (const entry of context.conditions ?? [])
1016
+ if (entry === condition) return true;
1017
+ return false;
1018
+ }
1019
+
1020
+ /**
1021
+ * Identify only the direct evaluator's generated CommonJS output sibling. The
1022
+ * parent supplies an absolute output under a canonical private directory; URL
1023
+ * conversion and native path resolution preserve that exact spelling. No
1024
+ * directory-wide exclusion or user preload/descriptor path is selected. This
1025
+ * comparison performs no filesystem read and retains no additional state.
1026
+ */
1027
+ function isDescriptorEvaluatorBootstrap(value: string): boolean {
1028
+ const out = process.env.TTSC_PLUGIN_DESCRIPTOR_OUT;
1029
+ return (
1030
+ process.env.TTSC_PLUGIN_DESCRIPTOR_LOAD === "1" &&
1031
+ out !== undefined &&
1032
+ path.isAbsolute(out) &&
1033
+ runtimeFilePath(value) === path.resolve(`${out}.cjs`)
1034
+ );
1035
+ }
1036
+
1037
+ /** Whether `filename` is the TypeScript main module named on Node's argv. */
1038
+ function isProcessEntry(filename: string): boolean {
1039
+ const entry = process.argv[1];
1040
+ return (
1041
+ entry !== undefined &&
1042
+ isTypeScriptSource(entry) &&
1043
+ realPath(path.resolve(entry)) === realPath(filename)
1044
+ );
1045
+ }
1046
+
1047
+ /**
1048
+ * Read one owning config while its discovered chain stays unchanged.
1049
+ *
1050
+ * A preliminary read discovers `extends`; an accepted read is bracketed by
1051
+ * equal fingerprints over that exact chain. If churn never settles, ttsx can
1052
+ * still execute the last project but reports every observed config as unstable,
1053
+ * preventing a later snapshot from certifying the torn result.
1054
+ */
1055
+ function readPluginDescriptorProjectConfig(
1056
+ tsconfig: string,
1057
+ ): ReturnType<typeof readProjectConfig> {
1058
+ const read = () =>
1059
+ readProjectConfig({ cwd: path.dirname(tsconfig), tsconfig });
1060
+ if (process.env.TTSC_PLUGIN_DESCRIPTOR_INPUTS_ACTIVE !== "1") return read();
1061
+
1062
+ const observed = new Set<string>([path.resolve(tsconfig)]);
1063
+ let project: ReturnType<typeof readProjectConfig>;
1064
+ try {
1065
+ project = read();
1066
+ } catch (error) {
1067
+ recordPluginDescriptorProjectInputs(observed, true);
1068
+ throw error;
1069
+ }
1070
+ if (!project.configInputsComplete)
1071
+ PluginDescriptorInputObservation.invalidate();
1072
+ let inputs = normalizedProjectConfigPaths(project, tsconfig);
1073
+ for (let attempt = 0; attempt < 3; attempt += 1) {
1074
+ for (const input of inputs) observed.add(input);
1075
+ const before = pluginDescriptorInputHashes(inputs);
1076
+ const beforeRealpaths = pluginDescriptorInputRealpaths(inputs);
1077
+ const beforeSignatures = pluginDescriptorInputMetadataSignatures(inputs);
1078
+ let candidate: ReturnType<typeof readProjectConfig>;
1079
+ try {
1080
+ candidate = read();
1081
+ } catch (error) {
1082
+ recordPluginDescriptorProjectInputs(observed, true);
1083
+ throw error;
1084
+ }
1085
+ if (!candidate.configInputsComplete)
1086
+ PluginDescriptorInputObservation.invalidate();
1087
+ const candidateInputs = normalizedProjectConfigPaths(candidate, tsconfig);
1088
+ for (const input of candidateInputs) observed.add(input);
1089
+ const after = pluginDescriptorInputHashes(candidateInputs);
1090
+ const afterRealpaths = pluginDescriptorInputRealpaths(candidateInputs);
1091
+ const afterSignatures =
1092
+ pluginDescriptorInputMetadataSignatures(candidateInputs);
1093
+ if (
1094
+ equalPluginDescriptorInputLists(inputs, candidateInputs) &&
1095
+ equalPluginDescriptorInputHashes(before, after) &&
1096
+ equalPluginDescriptorInputHashes(beforeRealpaths, afterRealpaths) &&
1097
+ beforeSignatures !== undefined &&
1098
+ afterSignatures !== undefined &&
1099
+ equalPluginDescriptorInputHashes(beforeSignatures, afterSignatures)
1100
+ ) {
1101
+ for (const input of candidateInputs) {
1102
+ recordPluginDescriptorInput({
1103
+ hash: after[input]!,
1104
+ realpath: afterRealpaths[input]!,
1105
+ resolved: input,
1106
+ signature: afterSignatures[input]!,
1107
+ });
1108
+ }
1109
+ return candidate;
1110
+ }
1111
+ project = candidate;
1112
+ inputs = candidateInputs;
1113
+ }
1114
+ recordPluginDescriptorProjectInputs(observed, true);
1115
+ return project;
1116
+ }
1117
+
1118
+ function normalizedProjectConfigPaths(
1119
+ project: ReturnType<typeof readProjectConfig>,
1120
+ requestedConfig: string,
1121
+ ): string[] {
1122
+ return [
1123
+ ...new Set(
1124
+ [
1125
+ requestedConfig,
1126
+ ...project.configPaths,
1127
+ ...(project.configInputs ?? []),
1128
+ ].map((file) => path.resolve(file)),
1129
+ ),
1130
+ ].sort();
1131
+ }
1132
+
1133
+ function pluginDescriptorInputHashes(
1134
+ inputs: readonly string[],
1135
+ ): Record<string, string | null> {
1136
+ return Object.fromEntries(
1137
+ inputs.map((input) => [input, pluginDescriptorInputHash(input)]),
1138
+ );
1139
+ }
1140
+
1141
+ function pluginDescriptorInputRealpaths(
1142
+ inputs: readonly string[],
1143
+ ): Record<string, string | null> {
1144
+ return Object.fromEntries(
1145
+ inputs.map((input) => [input, pluginDescriptorInputRealpath(input)]),
1146
+ );
1147
+ }
1148
+
1149
+ function pluginDescriptorInputMetadataSignatures(
1150
+ inputs: readonly string[],
1151
+ ): Record<string, string> | undefined {
1152
+ const output: Record<string, string> = {};
1153
+ for (const input of inputs) {
1154
+ const signature = pluginDescriptorInputMetadataSignature(input);
1155
+ if (signature === undefined) return undefined;
1156
+ output[path.resolve(input)] = signature;
1157
+ }
1158
+ return output;
1159
+ }
1160
+
1161
+ function equalPluginDescriptorInputLists(
1162
+ first: readonly string[],
1163
+ second: readonly string[],
1164
+ ): boolean {
1165
+ return (
1166
+ first.length === second.length &&
1167
+ first.every((input, index) => input === second[index])
1168
+ );
1169
+ }
1170
+
1171
+ function equalPluginDescriptorInputHashes(
1172
+ first: Readonly<Record<string, string | null>>,
1173
+ second: Readonly<Record<string, string | null>>,
1174
+ ): boolean {
1175
+ return (
1176
+ Object.keys(first).length === Object.keys(second).length &&
1177
+ Object.entries(first).every(([input, hash]) => second[input] === hash)
1178
+ );
1179
+ }
1180
+
1181
+ function recordPluginDescriptorProjectInputs(
1182
+ inputs: Iterable<string>,
1183
+ unstable: boolean = false,
1184
+ ): void {
1185
+ for (const input of inputs) {
1186
+ const resolved = path.resolve(input);
1187
+ recordPluginDescriptorInput({
1188
+ resolved,
1189
+ ...(unstable ? { unstable: true } : {}),
1190
+ });
1191
+ }
1192
+ }
1193
+
1194
+ /**
1195
+ * Resolve the JavaScript to run for a TypeScript source file. Shared by the ESM
1196
+ * `load` hook and the CommonJS `require` handler.
1197
+ *
1198
+ * A file runs only from JavaScript a build provably compiled from that very
1199
+ * file, never from another file's output that shares its name. The lanes, in
1200
+ * order:
1201
+ *
1202
+ * 1. A checked entry build that compiled it (`ttsx`'s entry project, or a root
1203
+ * `ttsc/register` prepared).
1204
+ * 2. At a JavaScript-to-TypeScript boundary under `ttsc/register`, a newly
1205
+ * prepared checked root.
1206
+ * 3. The build of its nearest `tsconfig.json`, when that build compiled it, or
1207
+ * else the file compiled alone through that project's options — see
1208
+ * {@link serveProjectEmit}.
1209
+ * 4. An isolated emit, when no tsconfig owns it at all.
1210
+ */
1211
+ function resolveServedSource(
1212
+ filename: string,
1213
+ url: string = pathToFileURL(filename).href,
1214
+ prepareAsEntry: boolean = false,
1215
+ ): ServedSource {
1216
+ const real = realPath(filename);
1217
+ let served = serveEntryEmit(real);
1218
+ if (served !== null) {
1219
+ return withInlineSourceMap(served);
1220
+ }
1221
+ // Only the public preload can prepare a newly discovered root; direct ttsx
1222
+ // prepared its one entry before the child started.
1223
+ const prepareEntry = prepareAsEntry ? prepareRuntimeEntry : undefined;
1224
+ if (prepareEntry !== undefined) {
1225
+ RuntimeManifestRegistry.registerManifest(prepareEntry(real));
1226
+ served = serveEntryEmit(real);
1227
+ if (served === null) {
1228
+ throw new Error(`ttsx: prepared entry emit not found for ${filename}`);
1229
+ }
1230
+ return withInlineSourceMap(served);
1231
+ }
1232
+ const built = serveProjectEmit(real);
1233
+ if (built !== null) {
1234
+ return withInlineSourceMap(built);
1235
+ }
1236
+ return {
1237
+ moduleOptions: null,
1238
+ sourceFile: filename,
1239
+ source: transformOrphanSource(filename, url),
1240
+ };
1241
+ }
1242
+
1243
+ /**
1244
+ * Inline a served emit's external source map into its text and absolutize the
1245
+ * map's `sources`, so the JavaScript executed under the `.ts` source URL stays
1246
+ * self-describing after the per-run emit directory is deleted. Applied to both
1247
+ * the entry lane (`serveEntryEmit`) and the dependency lane
1248
+ * (`serveBuiltDependency`); the orphan lane inlines its own map before
1249
+ * caching.
1250
+ */
1251
+ function withInlineSourceMap(served: ServedSource): ServedSource {
1252
+ const source = inlineServedSourceMap(
1253
+ served.source,
1254
+ served.emittedFile,
1255
+ served.sourceFile,
1256
+ );
1257
+ return source === served.source ? served : { ...served, source };
1258
+ }
1259
+
1260
+ /**
1261
+ * Transform a TypeScript source file that no tsconfig owns (a published or
1262
+ * vendored package that ships raw `.ts`/`.cts`/`.mts` straight under
1263
+ * `node_modules`), choosing the lowering by the format the file resolves to.
1264
+ *
1265
+ * Both module formats need the compiler: Node's type stripping neither lowers
1266
+ * standard decorators nor rewrites ESM exports for CommonJS. Use the existing
1267
+ * single-file emit with the file's own module format and a standard target.
1268
+ * Retain stripping as recovery when no compiler emit is available.
1269
+ */
1270
+ function transformOrphanSource(filename: string, url: string): string {
1271
+ const format =
1272
+ RuntimeModuleFormat.moduleFormat(filename, null) === "commonjs"
1273
+ ? "commonjs"
1274
+ : "module";
1275
+ const lowered = emitOrphanSource(filename, format);
1276
+ if (lowered !== null) {
1277
+ return lowered;
1278
+ }
1279
+ return stripTypeScriptTypes(fs.readFileSync(filename, "utf8"), {
1280
+ mode: "transform",
1281
+ sourceUrl: url,
1282
+ });
1283
+ }
1284
+
1285
+ /**
1286
+ * Lower a single source file to its runtime module format. Emit-only, no
1287
+ * diagnostic gate (the entry project's up-front check is the type gate),
1288
+ * matching `buildDependency`. Returns `null` when tsgo is unavailable or
1289
+ * produced no output, so the caller can fall back to the in-process strip.
1290
+ */
1291
+ function emitOrphanSource(
1292
+ filename: string,
1293
+ format: "commonjs" | "module",
1294
+ ): string | null {
1295
+ let tsgo: string;
1296
+ try {
1297
+ tsgo = resolveTsgo({ cwd: path.dirname(filename) }).binary;
1298
+ } catch {
1299
+ return null;
1300
+ }
1301
+ // Content-hash cache: an orphan's tsgo single-file emit is lowered
1302
+ // once and reused by every other process in the run, and across runs. Without
1303
+ // it a program that fans out into many processes (the automated test corpus
1304
+ // imports the same vendored `.ts` deps from thousands of generated files) would
1305
+ // re-spawn tsgo per file per process and crawl.
1306
+ const cache = orphanCacheFile(filename, tsgo, format);
1307
+ if (cache !== null) {
1308
+ const hit = readFileOrNull(cache.file);
1309
+ if (hit !== null) {
1310
+ recordCacheFileUse(cache.file);
1311
+ return hit;
1312
+ }
1313
+ }
1314
+ const outDir = createCanonicalTempDirectory("ttsx-orphan-");
1315
+ try {
1316
+ spawnNative(
1317
+ tsgo,
1318
+ RuntimeIsolatedEmit.compilerArgs(filename, outDir, format, "execution"),
1319
+ // The emit names its input by absolute path and reads no config, so it
1320
+ // runs from its own output directory rather than from a dependency's,
1321
+ // which below `node_modules` can pass Windows' MAX_PATH for a working
1322
+ // directory.
1323
+ { cwd: outDir, encoding: "utf8" },
1324
+ );
1325
+ const emitted = isolatedEmitOf(filename, outDir);
1326
+ const source = emitted === null ? null : readFileOrNull(emitted);
1327
+ const lowered =
1328
+ source === null
1329
+ ? null
1330
+ : inlineServedSourceMap(source, emitted!, filename);
1331
+ // The key names the bytes read for it and the compiler it was taken under,
1332
+ // and the emit read the file and ran the compiler again. Only a source that
1333
+ // held still across both reads, lowered by a compiler that is still the
1334
+ // keyed one, is what the key names; otherwise the lowering serves this run
1335
+ // and is not recorded.
1336
+ if (lowered !== null && cache !== null) {
1337
+ const sourceHeld = orphanSourceHeld(filename, cache);
1338
+ const currentCompiler = sourceHeld ? compilerIdentity(tsgo) : undefined;
1339
+ if (sourceHeld && currentCompiler === cache.compiler)
1340
+ writeOrphanCache(cache.file, lowered);
1341
+ E2ETrace.runtimePreparation(
1342
+ "",
1343
+ filename,
1344
+ format,
1345
+ "orphan-cache-admission",
1346
+ {
1347
+ moduleOptions: null,
1348
+ emittedFile: emitted ?? undefined,
1349
+ orphanCache: {
1350
+ file: cache.file,
1351
+ sourceHeld,
1352
+ expectedCompiler: cache.compiler,
1353
+ currentCompiler,
1354
+ },
1355
+ },
1356
+ );
1357
+ } else {
1358
+ E2ETrace.runtimePreparation(
1359
+ "",
1360
+ filename,
1361
+ format,
1362
+ "orphan-cache-unavailable",
1363
+ {
1364
+ moduleOptions: null,
1365
+ emittedFile: emitted ?? undefined,
1366
+ orphanCache: {
1367
+ lowered: lowered !== null,
1368
+ cacheKeyAvailable: cache !== null,
1369
+ },
1370
+ },
1371
+ );
1372
+ }
1373
+ return lowered;
1374
+ } catch (error) {
1375
+ if (error instanceof RuntimeEmitOwnershipError) throw error;
1376
+ return null;
1377
+ } finally {
1378
+ fs.rmSync(outDir, { force: true, recursive: true });
1379
+ }
1380
+ }
1381
+
1382
+ /**
1383
+ * Read actual owned output for CommonJS export-name discovery, falling back to
1384
+ * isolated emission only when no project emitted this source. Project
1385
+ * transforms and const-enum settings decide which names exist at runtime. An
1386
+ * ESM emit is lowered as JavaScript solely to scan its CommonJS names.
1387
+ *
1388
+ * This intentionally does not read or write the runtime orphan cache. Name
1389
+ * discovery may inspect a source dependency without executing it, so sharing
1390
+ * that output with the runtime fallback would let a speculative scan affect a
1391
+ * later load path.
1392
+ */
1393
+ function emitCommonJsForNameScan(filename: string): string | null {
1394
+ const real = realPath(filename);
1395
+ const cached = commonJsNameScanSources.get(real);
1396
+ if (cached !== undefined) {
1397
+ return cached;
1398
+ }
1399
+ // The owned lanes can fail loudly: a root the program reaches outside every
1400
+ // checked build stops the run when its check fails. A name scan only looks
1401
+ // ahead of that load, so it falls back to the isolated emit and leaves the
1402
+ // load itself to report the failure where it happens.
1403
+ let served: ServedSource | null;
1404
+ try {
1405
+ served = serveEntryEmit(real) ?? serveProjectEmit(real);
1406
+ } catch {
1407
+ served = null;
1408
+ }
1409
+ if (
1410
+ served !== null &&
1411
+ RuntimeModuleFormat.moduleFormat(real, served.moduleOptions) === "commonjs"
1412
+ ) {
1413
+ commonJsNameScanSources.set(real, served.source);
1414
+ return served.source;
1415
+ }
1416
+ let tsgo: string;
1417
+ try {
1418
+ tsgo = resolveTsgo({ cwd: path.dirname(real) }).binary;
1419
+ } catch {
1420
+ commonJsNameScanSources.set(real, null);
1421
+ return null;
1422
+ }
1423
+ const outDir = createCanonicalTempDirectory("ttsx-export-scan-");
1424
+ try {
1425
+ // Compile the owned JavaScript, not the original TypeScript whose project
1426
+ // may already have erased or transformed declarations. No source executes.
1427
+ const input = served === null ? real : path.join(outDir, "source.cts");
1428
+ if (served !== null) fs.writeFileSync(input, served.source);
1429
+ spawnNative(
1430
+ tsgo,
1431
+ RuntimeIsolatedEmit.compilerArgs(
1432
+ input,
1433
+ outDir,
1434
+ "commonjs",
1435
+ "export-scan",
1436
+ ),
1437
+ { cwd: outDir, encoding: "utf8" },
1438
+ );
1439
+ const emitted = isolatedEmitOf(input, outDir);
1440
+ const lowered = emitted === null ? null : readFileOrNull(emitted);
1441
+ commonJsNameScanSources.set(real, lowered);
1442
+ return lowered;
1443
+ } catch (error) {
1444
+ if (error instanceof RuntimeEmitOwnershipError) throw error;
1445
+ commonJsNameScanSources.set(real, null);
1446
+ return null;
1447
+ } finally {
1448
+ fs.rmSync(outDir, { force: true, recursive: true });
1449
+ }
1450
+ }
1451
+
1452
+ /**
1453
+ * Cache root for lowered orphan sources.
1454
+ *
1455
+ * A run prepared by ttsx or `ttsc/register` names it in its manifest, under the
1456
+ * run's resolved cache root (`--cache-dir`, `TTSC_CACHE_DIR`, or the default
1457
+ * project-local root), where it outlives the run and is collected and cleaned
1458
+ * with the rest of that root. A runtime without a manifest has no cache root to
1459
+ * name, so its lowerings go where its dependency builds go
1460
+ * (`dependencyCacheRoot`), which is removed with the evaluation or the process
1461
+ * that made them.
1462
+ */
1463
+ function orphanCacheRoot(): string {
1464
+ const owner = RuntimeManifestRegistry.runtimeManifests().find(
1465
+ (candidate) =>
1466
+ typeof candidate.orphanCacheDir === "string" &&
1467
+ candidate.orphanCacheDir.length !== 0,
1468
+ );
1469
+ return owner !== undefined
1470
+ ? owner.orphanCacheDir!
1471
+ : path.join(dependencyCacheRoot(), "orphan");
1472
+ }
1473
+
1474
+ /**
1475
+ * Content-proven identity of the compiler executable. Unreadable or unstable
1476
+ * executable bytes produce a new nonce, so no previous generation can answer
1477
+ * for an executable whose identity could not be established.
1478
+ *
1479
+ * Read afresh at every use, never remembered by path: a long-lived process can
1480
+ * lower orphans before and after the compiler at that path is replaced, and an
1481
+ * entry lowered by the new one must not be recorded under the old one's key for
1482
+ * a later process to adopt.
1483
+ */
1484
+ function compilerIdentity(binary: string): string {
1485
+ return runtimeExecutableIdentity(binary) ?? crypto.randomUUID();
1486
+ }
1487
+
1488
+ /** The version of this ttsc package, which owns the orphan post-processing. */
1489
+ function ownPackageVersion(): string {
1490
+ if (ownPackageVersionCache === undefined) {
1491
+ try {
1492
+ const manifest = JSON.parse(
1493
+ fs.readFileSync(
1494
+ path.resolve(__dirname, "..", "..", "..", "..", "package.json"),
1495
+ "utf8",
1496
+ ),
1497
+ ) as { version?: unknown };
1498
+ ownPackageVersionCache =
1499
+ typeof manifest.version === "string" ? manifest.version : "unknown";
1500
+ } catch {
1501
+ ownPackageVersionCache = "unknown";
1502
+ }
1503
+ }
1504
+ return ownPackageVersionCache;
1505
+ }
1506
+
1507
+ let ownPackageVersionCache: string | undefined;
1508
+
1509
+ /**
1510
+ * Content-addressed cache path for isolated orphan lowering, or `null` when the
1511
+ * source cannot be read.
1512
+ *
1513
+ * The cache outlives the run in its cache root, so a hit has to prove the
1514
+ * current inputs would produce the cached text. The key holds everything that
1515
+ * decides it: the source's bytes and path (the inlined map names the path), the
1516
+ * module format, the emit arguments, the compiler that lowers it, and the ttsc
1517
+ * that post-processes it. The compiler is keyed by what it is, not where it is:
1518
+ * a flat `node_modules` upgrade replaces the binary at the same path, and a key
1519
+ * of the path alone kept serving the old compiler's output.
1520
+ *
1521
+ * The source is read here, and the emit reads it again. The answer carries the
1522
+ * bytes and the file's metadata before they were read, so `orphanSourceHeld`
1523
+ * can prove the emit read the same source.
1524
+ */
1525
+ function orphanCacheFile(
1526
+ filename: string,
1527
+ tsgo: string,
1528
+ format: "commonjs" | "module",
1529
+ ): {
1530
+ compiler: string;
1531
+ file: string;
1532
+ signature: string;
1533
+ source: Buffer;
1534
+ } | null {
1535
+ const signature = orphanSourceSignature(filename);
1536
+ if (signature === undefined) return null;
1537
+ let source: Buffer;
1538
+ try {
1539
+ source = fs.readFileSync(filename);
1540
+ } catch {
1541
+ return null;
1542
+ }
1543
+ const compiler = compilerIdentity(tsgo);
1544
+ const key = crypto
1545
+ .createHash("sha256")
1546
+ .update(compiler)
1547
+ .update(`\0ttsc@${ownPackageVersion()}`)
1548
+ // The emit policy decides the lowering, so it is part of the key: a cache
1549
+ // filled under an earlier policy must not answer for the current one.
1550
+ .update(`\0${RuntimeIsolatedEmit.policyKey()}`)
1551
+ .update("\0isolated-source-map-v1\0")
1552
+ .update(filename)
1553
+ .update("\0" + format)
1554
+ .update("\0")
1555
+ .update(source)
1556
+ .digest("hex")
1557
+ .slice(0, 32);
1558
+ return {
1559
+ compiler,
1560
+ file: path.join(orphanCacheRoot(), `${key}.js`),
1561
+ signature,
1562
+ source,
1563
+ };
1564
+ }
1565
+
1566
+ /**
1567
+ * Whether an orphan source held still from the read that keyed its cache entry
1568
+ * through the emit that lowered it: the same bytes, and the same metadata,
1569
+ * whose change time moves with every write even when the bytes return to what
1570
+ * they were.
1571
+ */
1572
+ function orphanSourceHeld(
1573
+ filename: string,
1574
+ cache: { signature: string; source: Buffer },
1575
+ ): boolean {
1576
+ if (orphanSourceSignature(filename) !== cache.signature) return false;
1577
+ try {
1578
+ return fs.readFileSync(filename).equals(cache.source);
1579
+ } catch {
1580
+ return false;
1581
+ }
1582
+ }
1583
+
1584
+ /** The metadata identity of an orphan source, or `undefined` when unreadable. */
1585
+ function orphanSourceSignature(filename: string): string | undefined {
1586
+ try {
1587
+ const stat = fs.statSync(filename, { bigint: true });
1588
+ return [stat.dev, stat.ino, stat.size, stat.mtimeNs, stat.ctimeNs].join(
1589
+ ":",
1590
+ );
1591
+ } catch {
1592
+ return undefined;
1593
+ }
1594
+ }
1595
+
1596
+ /**
1597
+ * Write the lowered source to its cache path atomically (temp + rename), so a
1598
+ * concurrent reader never sees a half-written file. Best-effort: a failure just
1599
+ * means the next process re-lowers.
1600
+ */
1601
+ function writeOrphanCache(cacheFile: string, lowered: string): void {
1602
+ const tmp = `${cacheFile}.${process.pid}.${crypto.randomUUID()}.tmp`;
1603
+ try {
1604
+ fs.mkdirSync(path.dirname(cacheFile), { recursive: true });
1605
+ fs.writeFileSync(tmp, lowered);
1606
+ fs.renameSync(tmp, cacheFile);
1607
+ } catch (error) {
1608
+ E2ETrace.runtimePreparation(
1609
+ "",
1610
+ cacheFile,
1611
+ "unconsumed",
1612
+ "orphan-cache-write-failed",
1613
+ {
1614
+ moduleOptions: null,
1615
+ orphanCache: { file: cacheFile, error: String(error) },
1616
+ },
1617
+ );
1618
+ // ignore — caching is an optimization, correctness does not depend on it
1619
+ } finally {
1620
+ try {
1621
+ fs.rmSync(tmp, { force: true });
1622
+ } catch {
1623
+ // Cache admission remains optional when the filesystem denies cleanup.
1624
+ }
1625
+ }
1626
+ }
1627
+
1628
+ /**
1629
+ * The JavaScript an isolated single-file emit wrote for `input`, or `null`.
1630
+ *
1631
+ * Both callers pass exactly one positional source with ignoreConfig, noResolve
1632
+ * and isolatedModules to a compiler without plugin injection. Their freshly
1633
+ * acquired private directory contains no earlier JavaScript. The actual
1634
+ * completed output population therefore belongs to that source, independently
1635
+ * of filename or extension priority. A declaration-only input may emit none;
1636
+ * multiple executable outputs contradict this protocol and are an error.
1637
+ */
1638
+ function isolatedEmitOf(input: string, outDir: string): string | null {
1639
+ const outputs = EmitOwnershipIndex.listOutputs(outDir);
1640
+ if (outputs.length === 0) return null;
1641
+ if (outputs.length !== 1) {
1642
+ throw new RuntimeEmitOwnershipError(
1643
+ `ttsx: isolated emit of ${input} produced ${outputs.length} executable outputs; single-input ownership cannot be established`,
1644
+ );
1645
+ }
1646
+ return path.resolve(outDir, outputs[0]!);
1647
+ }
1648
+
1649
+ /** A violated single-input emit authority cannot use the type-strip fallback. */
1650
+ class RuntimeEmitOwnershipError extends Error {}
1651
+
1652
+ /**
1653
+ * Serve the JavaScript a checked entry build emitted from `real`, or `null`
1654
+ * when no such build compiled it.
1655
+ *
1656
+ * The answer comes from the builds' ownership indexes, never from a shared
1657
+ * name. Once a build is proven to own the file its output must be there, so an
1658
+ * unreadable one is an error naming both files rather than a reason to try the
1659
+ * next lane and run something else.
1660
+ */
1661
+ function serveEntryEmit(real: string): ServedSource | null {
1662
+ const owner = RuntimeManifestRegistry.findEntryEmit(real);
1663
+ if (owner === null) {
1664
+ return null;
1665
+ }
1666
+ return {
1667
+ emittedFile: owner.emittedFile,
1668
+ moduleOptions: owner.manifest.moduleOptions ?? {},
1669
+ source: readOwnedEmit(owner.emittedFile, real),
1670
+ sourceFile: real,
1671
+ };
1672
+ }
1673
+
1674
+ /**
1675
+ * Serve `real` through the project that owns it, or `null` when no tsconfig
1676
+ * owns it. An empty project emit can leave this file outside its root set;
1677
+ * other project or root failures retain their original diagnostic instead of
1678
+ * silently discarding the project's compiler and plugin policy.
1679
+ *
1680
+ * The project is built once per run, honouring its own tsconfig (transform
1681
+ * plugins included), so a source-shipping package that needs a transform
1682
+ * behaves correctly at runtime. That build serves the file when it compiled it.
1683
+ * When it did not — the file sits outside the project's `include` or `files` —
1684
+ * the file is a root no build covered, and it is compiled alone through the
1685
+ * same project's options rather than handed another file's output or stripped
1686
+ * of them.
1687
+ *
1688
+ * Whether that root is type-checked follows who wrote it. A file of the user's
1689
+ * own tree is checked, the same gate `ttsc/register` applies to every root it
1690
+ * prepares, so a type error stops the run before the file executes. A file
1691
+ * inside an installed package is emit-only, like every other file of that
1692
+ * package the project build already serves.
1693
+ */
1694
+ function serveProjectEmit(real: string): ServedSource | null {
1695
+ const operations = {
1696
+ owningTsconfig,
1697
+ ensureProjectBuilt,
1698
+ isEmptyProjectEmitError: (error: unknown) =>
1699
+ error instanceof EmptyProjectEmitError,
1700
+ serve: serveBuiltDependency,
1701
+ ensureRootBuilt,
1702
+ };
1703
+ if (!process.env.TTSC_E2E_TRACE)
1704
+ return OwnedProjectSource.serve(real, operations);
1705
+ let selectedTsconfig: string | undefined;
1706
+ let buildScope: string | undefined;
1707
+ const served = OwnedProjectSource.serve(real, {
1708
+ ...operations,
1709
+ owningTsconfig(source) {
1710
+ const selected = owningTsconfig(source);
1711
+ selectedTsconfig = selected ?? undefined;
1712
+ return selected;
1713
+ },
1714
+ ensureProjectBuilt(config) {
1715
+ buildScope = "project";
1716
+ return ensureProjectBuilt(config);
1717
+ },
1718
+ ensureRootBuilt(config, source) {
1719
+ buildScope = "single-root";
1720
+ return ensureRootBuilt(config, source);
1721
+ },
1722
+ });
1723
+ return served === null ? null : { ...served, selectedTsconfig, buildScope };
1724
+ }
1725
+
1726
+ function serveBuiltDependency(
1727
+ built: DependencyBuildGeneration.BuiltProject,
1728
+ real: string,
1729
+ ): ServedSource | null {
1730
+ const emitted = builtProjectIndex(built).find(real);
1731
+ if (emitted === null) {
1732
+ return null;
1733
+ }
1734
+ return {
1735
+ emittedFile: emitted,
1736
+ moduleOptions: built.moduleOptions,
1737
+ source: readOwnedEmit(emitted, real),
1738
+ sourceFile: real,
1739
+ };
1740
+ }
1741
+
1742
+ /** The ownership index of one dependency or root build, created on first use. */
1743
+ function builtProjectIndex(
1744
+ built: DependencyBuildGeneration.BuiltProject,
1745
+ ): EmitOwnershipIndex {
1746
+ let index = builtProjectIndexes.get(built);
1747
+ if (index === undefined) {
1748
+ index = new EmitOwnershipIndex({
1749
+ emitDir: built.emitDir,
1750
+ outputs: built.outputs,
1751
+ emittedSources: built.emittedSources,
1752
+ emittedSourceProofFailures: built.emittedSourceProofFailures,
1753
+ rootDir: built.rootDir,
1754
+ });
1755
+ builtProjectIndexes.set(built, index);
1756
+ }
1757
+ return index;
1758
+ }
1759
+
1760
+ const builtProjectIndexes = new WeakMap<
1761
+ DependencyBuildGeneration.BuiltProject,
1762
+ EmitOwnershipIndex
1763
+ >();
1764
+
1765
+ /** Read an output a build is proven to have emitted from `source`. */
1766
+ function readOwnedEmit(emittedFile: string, source: string): string {
1767
+ const text = readFileOrNull(emittedFile);
1768
+ if (text === null) {
1769
+ throw new Error(
1770
+ `ttsx: the JavaScript emitted for ${source} is missing: ${emittedFile}`,
1771
+ );
1772
+ }
1773
+ return text;
1774
+ }
1775
+
1776
+ /**
1777
+ * Compile one root its owning project's file set does not contain, once per run
1778
+ * for each content of the root, and share the result across every process of
1779
+ * the run exactly like a project build. A failed check publishes nothing, so
1780
+ * every process that reaches the root reports the same diagnostics instead of
1781
+ * reusing a build.
1782
+ *
1783
+ * The root's own bytes are part of the key. A root is often a file the program
1784
+ * wrote itself, and one that rewrites it and loads it again, in this process or
1785
+ * another, must get the new code rather than the build of the old.
1786
+ */
1787
+ function ensureRootBuilt(
1788
+ tsconfig: string,
1789
+ source: string,
1790
+ ): DependencyBuildGeneration.BuiltProject {
1791
+ const identity = `${source}\0${contentDigest(source)}`;
1792
+ const { cacheDir, lockDir, metaPath, root, compilerProof, plugins } =
1793
+ dependencyCachePaths(tsconfig, identity);
1794
+ const memo = cacheDir;
1795
+ const cached = builtRoots.get(memo);
1796
+ if (cached !== undefined) {
1797
+ return cached;
1798
+ }
1799
+ const failed = failedRoots.get(memo);
1800
+ if (failed !== undefined) {
1801
+ throw failed;
1802
+ }
1803
+ const reuse = readDependencyCache(cacheDir, metaPath);
1804
+ if (reuse !== null) {
1805
+ builtRoots.set(memo, reuse);
1806
+ return reuse;
1807
+ }
1808
+ fs.mkdirSync(root, { recursive: true });
1809
+ let built: DependencyBuildGeneration.BuiltProject;
1810
+ try {
1811
+ built = DependencyBuildAdmission.run(cacheDir, metaPath, lockDir, () =>
1812
+ buildRoot(tsconfig, source, cacheDir, metaPath, compilerProof, plugins),
1813
+ );
1814
+ } catch (error) {
1815
+ // The same content fails the same way, so a second reach of this root in
1816
+ // the process (a name scan, then the load) reports without building again.
1817
+ failedRoots.set(memo, error);
1818
+ throw error;
1819
+ }
1820
+ builtRoots.set(memo, built);
1821
+ return built;
1822
+ }
1823
+
1824
+ const builtRoots = new Map<string, DependencyBuildGeneration.BuiltProject>();
1825
+
1826
+ /**
1827
+ * Roots whose build failed in this process, by the same key as
1828
+ * {@link builtRoots}.
1829
+ */
1830
+ const failedRoots = new Map<string, unknown>();
1831
+
1832
+ /** SHA-256 of a file's bytes, or of nothing when it cannot be read. */
1833
+ function contentDigest(file: string): string {
1834
+ const hash = crypto.createHash("sha256");
1835
+ try {
1836
+ hash.update(fs.readFileSync(file));
1837
+ } catch {
1838
+ // The build reports the unreadable file itself; the key only has to exist.
1839
+ }
1840
+ return hash.digest("hex");
1841
+ }
1842
+
1843
+ /**
1844
+ * Compile `source` alone through the options of `tsconfig` into a fresh
1845
+ * generation directory, then publish its completion marker. The generation and
1846
+ * marker protocol is the project build's, so a reader never sees a partial
1847
+ * emit.
1848
+ */
1849
+ function buildRoot(
1850
+ tsconfig: string,
1851
+ source: string,
1852
+ cacheDir: string,
1853
+ metaPath: string,
1854
+ compilerProof?: string,
1855
+ plugins?: false,
1856
+ ): DependencyBuildGeneration.BuiltProject {
1857
+ // Read through the descriptor-input recorder, so a plugin descriptor that
1858
+ // reaches this root reports the config chain it was compiled under.
1859
+ const project = readPluginDescriptorProjectConfig(tsconfig);
1860
+ const generation = DependencyBuildGeneration.newDependencyGeneration();
1861
+ const emitDir = DependencyBuildGeneration.dependencyGenerationDir(
1862
+ cacheDir,
1863
+ generation,
1864
+ );
1865
+ fs.rmSync(emitDir, { force: true, recursive: true });
1866
+ try {
1867
+ const built = buildSingleRootProject({
1868
+ checked: rootIsChecked(source),
1869
+ emitDir,
1870
+ key: `${process.pid}-${generation}`,
1871
+ options: { plugins },
1872
+ projectRoot: project.root,
1873
+ role: "root",
1874
+ source,
1875
+ tsconfig,
1876
+ });
1877
+ const rootDir = DependencyBuildGeneration.resolvePhysicalPath(
1878
+ built.rootDir,
1879
+ );
1880
+ const moduleOptions = projectModuleOptions(built.project.compilerOptions);
1881
+ const outputs = EmitOwnershipIndex.listOutputs(emitDir);
1882
+ const emittedSources = built.emittedSources;
1883
+ const emittedSourceProofFailures = built.emittedSourceProofFailures;
1884
+ if (!RuntimeEmitProvenance.isRecord(emittedSources)) {
1885
+ throw new Error(
1886
+ `ttsx: root build of ${source} did not report authoritative emit provenance`,
1887
+ );
1888
+ }
1889
+ assertCompilerStillCurrent(tsconfig, compilerProof);
1890
+ publishDependencyMeta(metaPath, {
1891
+ generation,
1892
+ moduleOptions,
1893
+ outputs,
1894
+ rootDir,
1895
+ emittedSources,
1896
+ emittedSourceProofFailures,
1897
+ });
1898
+ return {
1899
+ emitDir,
1900
+ moduleOptions,
1901
+ outputs,
1902
+ rootDir,
1903
+ emittedSources,
1904
+ emittedSourceProofFailures,
1905
+ };
1906
+ } catch (error) {
1907
+ throwAfterFailedArtifactCleanup(error, emitDir, true);
1908
+ }
1909
+ }
1910
+
1911
+ /**
1912
+ * The plugin policy a project or root compiled at run time inherits: none while
1913
+ * a plugin descriptor is being loaded, because its own transform would re-enter
1914
+ * plugin loading, and none when the run itself disabled them (`ttsx
1915
+ * --no-plugins`).
1916
+ */
1917
+ function runtimePluginPolicy(): false | undefined {
1918
+ return selectRuntimePluginPolicy(
1919
+ RuntimeManifestRegistry.runtimeManifests(),
1920
+ process.env.TTSC_PLUGIN_DESCRIPTOR_LOAD === "1",
1921
+ );
1922
+ }
1923
+
1924
+ /**
1925
+ * Whether a root no build covered is type-checked before it runs.
1926
+ *
1927
+ * A root of the user's own tree is: it is the user's program. A root inside an
1928
+ * installed package is not, as no other file of that package is. Neither is a
1929
+ * root reached while a plugin descriptor is being loaded: the descriptor is
1930
+ * tooling the compiler runs, evaluated under the consumer's config, whose
1931
+ * `types`, `lib`, and strictness were never chosen for it, and it was never
1932
+ * type-gated before it ran.
1933
+ */
1934
+ function rootIsChecked(real: string): boolean {
1935
+ return (
1936
+ process.env.TTSC_PLUGIN_DESCRIPTOR_LOAD !== "1" &&
1937
+ !RuntimeProjectOwnership.isInstalledPackageSource(real)
1938
+ );
1939
+ }
1940
+
1941
+ /**
1942
+ * Build the project that owns a dependency once per run and share the result
1943
+ * across every process the program spawns.
1944
+ *
1945
+ * A program (a benchmark, a worker pool) can fan out into many child processes,
1946
+ * each of which inherits the runtime manifest and would otherwise rebuild every
1947
+ * dependency from scratch — and worse, several at once into the same directory,
1948
+ * corrupting each other. So the build output is content-keyed under the shared
1949
+ * per-run cache: a finished build leaves a meta marker that any later process
1950
+ * (or a second import in this one) reuses, and concurrent first-builders are
1951
+ * serialised by an atomic lock directory.
1952
+ */
1953
+ function ensureProjectBuilt(
1954
+ tsconfig: string,
1955
+ ): DependencyBuildGeneration.BuiltProject {
1956
+ const { cacheDir, lockDir, metaPath, root, compilerProof, plugins } =
1957
+ dependencyCachePaths(tsconfig);
1958
+ const cached = builtProjects.get(cacheDir);
1959
+ if (cached !== undefined) {
1960
+ return cached;
1961
+ }
1962
+ const failed = failedProjects.get(cacheDir);
1963
+ if (failed !== undefined) {
1964
+ throw failed;
1965
+ }
1966
+
1967
+ const reuse = readDependencyCache(cacheDir, metaPath);
1968
+ if (reuse !== null) {
1969
+ builtProjects.set(cacheDir, reuse);
1970
+ return reuse;
1971
+ }
1972
+
1973
+ fs.mkdirSync(root, { recursive: true });
1974
+ let built: DependencyBuildGeneration.BuiltProject;
1975
+ try {
1976
+ built = DependencyBuildAdmission.run(cacheDir, metaPath, lockDir, () =>
1977
+ buildDependency(tsconfig, cacheDir, metaPath, compilerProof, plugins),
1978
+ );
1979
+ } catch (error) {
1980
+ // Every file the project owns asks for this build before its own root
1981
+ // lane, so a build that produced nothing would otherwise run again for
1982
+ // each of them. It is built once per process either way, like a success.
1983
+ failedProjects.set(cacheDir, error);
1984
+ throw error;
1985
+ }
1986
+ builtProjects.set(cacheDir, built);
1987
+ return built;
1988
+ }
1989
+
1990
+ /**
1991
+ * Project builds that failed in this process, by full cache identity, paired
1992
+ * with {@link builtProjects}.
1993
+ */
1994
+ const failedProjects = new Map<string, unknown>();
1995
+
1996
+ interface DependencyCachePaths {
1997
+ /** Container of this dependency's generation-stamped emit directories. */
1998
+ cacheDir: string;
1999
+
2000
+ /** Fenced cross-process coordination directory (`<key>.lock`). */
2001
+ lockDir: string;
2002
+
2003
+ /** Atomic completion pointer (`<key>.json`) naming the live generation. */
2004
+ metaPath: string;
2005
+
2006
+ /** Executable content proof whose key must still hold before publication. */
2007
+ compilerProof?: string;
2008
+
2009
+ /** Plugin policy captured once for both cache addressing and compilation. */
2010
+ plugins?: false;
2011
+
2012
+ root: string;
2013
+ }
2014
+
2015
+ function dependencyCachePaths(
2016
+ tsconfig: string,
2017
+ rootSource?: string,
2018
+ ): DependencyCachePaths {
2019
+ let compilerProof: string | undefined;
2020
+ try {
2021
+ compilerProof = runtimeExecutableIdentity(
2022
+ resolveTsgo({ cwd: path.dirname(tsconfig) }).binary,
2023
+ );
2024
+ } catch {
2025
+ // An unobservable executable gets a unique, non-reusable generation key.
2026
+ }
2027
+ const plugins = runtimePluginPolicy();
2028
+ const key = dependencyCacheKey(tsconfig, {
2029
+ root: rootSource,
2030
+ compilerIdentity: compilerProof ?? crypto.randomUUID(),
2031
+ plugins,
2032
+ });
2033
+ const root = dependencyCacheRoot();
2034
+ return {
2035
+ cacheDir: path.join(root, key),
2036
+ lockDir: path.join(root, `${key}.lock`),
2037
+ metaPath: path.join(root, `${key}.json`),
2038
+ compilerProof,
2039
+ plugins,
2040
+ root,
2041
+ };
2042
+ }
2043
+
2044
+ /** A runtime build may publish only under the compiler content that keyed it. */
2045
+ function assertCompilerStillCurrent(tsconfig: string, proof?: string): void {
2046
+ if (proof === undefined) return;
2047
+ const binary = resolveTsgo({ cwd: path.dirname(tsconfig) }).binary;
2048
+ const current = runtimeExecutableIdentity(binary);
2049
+ if (current !== proof) {
2050
+ E2ETrace.capabilityResolution("runtime-compiler-publication-refused", {
2051
+ tsconfig,
2052
+ binary,
2053
+ expectedCompiler: proof,
2054
+ currentCompiler: current,
2055
+ });
2056
+ throw new Error(
2057
+ `ttsx: compiler changed while building ${tsconfig}; the runtime generation was not published`,
2058
+ );
2059
+ }
2060
+ }
2061
+
2062
+ /**
2063
+ * Compile a dependency project into a fresh generation directory and publish
2064
+ * its completion marker atomically.
2065
+ *
2066
+ * Under cooperative cache ownership and noncolliding generation ids, emit lands
2067
+ * in a fresh `<cacheDir>/gen-<generation>` rather than replacing a reader's
2068
+ * generation in place. Emit presence and provenance are checked before
2069
+ * temp-and-rename publication. Failure attempts to remove the partial
2070
+ * directory; refused cleanup can leave it behind without publishing a
2071
+ * successful marker.
2072
+ */
2073
+ function buildDependency(
2074
+ tsconfig: string,
2075
+ cacheDir: string,
2076
+ metaPath: string,
2077
+ compilerProof?: string,
2078
+ plugins?: false,
2079
+ ): DependencyBuildGeneration.BuiltProject {
2080
+ const project = readPluginDescriptorProjectConfig(tsconfig);
2081
+ const generation = DependencyBuildGeneration.newDependencyGeneration();
2082
+ const emitDir = DependencyBuildGeneration.dependencyGenerationDir(
2083
+ cacheDir,
2084
+ generation,
2085
+ );
2086
+ fs.rmSync(emitDir, { force: true, recursive: true });
2087
+ try {
2088
+ fs.mkdirSync(emitDir, { recursive: true });
2089
+ const result = runBuild({
2090
+ cwd: project.root,
2091
+ forceEmitProvenance: true,
2092
+ // Emit-only means diagnostics never withhold the emit, so a dependency's
2093
+ // own `noEmitOnError` is switched off: honoured, it would turn any
2094
+ // diagnostic into an empty output and the isolated fallback below.
2095
+ passthrough: [
2096
+ ...runtimeCompilerArgs(project),
2097
+ "--noEmitOnError",
2098
+ "false",
2099
+ ],
2100
+ emit: true,
2101
+ outDir: emitDir,
2102
+ // Every output this build writes stays in ttsx's private directory: a
2103
+ // declared `declarationDir`, `tsBuildInfoFile`, or `outFile`, and any
2104
+ // output location forwarded on the command line, would otherwise land in
2105
+ // the user's tree.
2106
+ isolateOutputsTo: emitDir,
2107
+ // The generation directory is an `outDir` this lane injected, not one the
2108
+ // dependency declared. Private ordinary emit uses a volume-root layout
2109
+ // without restricting imported sources to the config directory; declared
2110
+ // and composite roots keep their compiler containment policy. The same
2111
+ // root is published by resolveDependencySourceRoot below.
2112
+ pinInferredRootDir: true,
2113
+ // Compiler containment uses the same lexical spelling as its inputs;
2114
+ // resolveDependencySourceRoot separately owns physical serving lookup.
2115
+ privateEmitRootDir: privateRuntimeRootDir(
2116
+ project.root,
2117
+ project.compilerOptions.rootDir,
2118
+ project.compilerOptions.composite,
2119
+ ),
2120
+ // Emit a source map on the transient dependency emit (it never reaches the
2121
+ // dependency's published `lib/`) so the serve path can inline it under the
2122
+ // source URL, but only when the dependency configures none itself. Routed
2123
+ // as a dedicated build option, not a forwarded tsgo flag, so it never
2124
+ // reaches a native plugin host's argument parser.
2125
+ forceRuntimeSourceMap:
2126
+ project.compilerOptions.sourceMap !== true &&
2127
+ project.compilerOptions.inlineSourceMap !== true,
2128
+ // Honour the dependency's own transform plugins: a source-shipping package
2129
+ // can itself depend on a transform (e.g. a fixture whose values are built
2130
+ // with `typia.createRandom`), and its runtime behaviour is wrong without it.
2131
+ // `runBuild` runs on this main thread, so its plugin resolution works the
2132
+ // same as the entry build's. A run started with `--no-plugins` keeps that
2133
+ // disabled policy across dependency projects. Loading a plugin descriptor
2134
+ // (`TTSC_PLUGIN_DESCRIPTOR_LOAD`) also disables plugins: its own — possibly
2135
+ // self-hosting — transform must NOT run, or it re-enters plugin loading and
2136
+ // deadlocks, so every dependency in that graph builds with plugins off.
2137
+ plugins,
2138
+ quiet: true,
2139
+ resolvedProject: project,
2140
+ // Emit only: the entry project's up-front check is the type gate. A
2141
+ // dependency build pulls its own transitive sources into the program and
2142
+ // would otherwise fail on type diagnostics that belong to those packages
2143
+ // under their own (laxer) config — e.g. unused-type-parameter warnings in a
2144
+ // transitively imported library. We still want the type-aware emit (for
2145
+ // type-only elision), just not the error gate.
2146
+ skipDiagnosticsCheck: true,
2147
+ tsconfig,
2148
+ });
2149
+ // Success is "the project wrote JavaScript", not the exit status: the build is
2150
+ // emit-only, so diagnostics do not fail it, and a native transform host
2151
+ // (typia, @ttsc/banner, …) writes its output on its own. A genuinely empty
2152
+ // output directory is the real failure; the caller then falls back to
2153
+ // isolated emit of the one file.
2154
+ if (!DependencyBuildGeneration.emittedAnything(emitDir)) {
2155
+ E2ETrace.runtimePreparation(
2156
+ "",
2157
+ tsconfig,
2158
+ "unconsumed",
2159
+ "dependency-project-empty-emit",
2160
+ {
2161
+ moduleOptions: projectModuleOptions(project.compilerOptions),
2162
+ selectedTsconfig: tsconfig,
2163
+ buildScope: "project",
2164
+ nativeBuildFailure: {
2165
+ status: result.status,
2166
+ stdout: result.stdout,
2167
+ stderr: result.stderr,
2168
+ },
2169
+ },
2170
+ );
2171
+ throw new EmptyProjectEmitError(
2172
+ [
2173
+ `ttsx: dependency build produced no output for ${tsconfig}`,
2174
+ result.stderr || result.stdout,
2175
+ ]
2176
+ .filter((line) => line.trim().length !== 0)
2177
+ .join("\n"),
2178
+ );
2179
+ }
2180
+ // Absence above serves and publishes nothing. Every actual emitted byte
2181
+ // still requires the selected producer's authoritative ownership record.
2182
+ const emittedSources = result.emittedSources;
2183
+ const emittedSourceProofFailures = result.emittedSourceProofFailures;
2184
+ if (!RuntimeEmitProvenance.isRecord(emittedSources)) {
2185
+ throw new Error(
2186
+ `ttsx: dependency build of ${tsconfig} did not report authoritative emit provenance`,
2187
+ { cause: result },
2188
+ );
2189
+ }
2190
+ const rootDir = resolveDependencySourceRoot(project);
2191
+ const moduleOptions = projectModuleOptions(project.compilerOptions);
2192
+ const outputs = EmitOwnershipIndex.listOutputs(emitDir);
2193
+ assertCompilerStillCurrent(tsconfig, compilerProof);
2194
+ publishDependencyMeta(metaPath, {
2195
+ generation,
2196
+ moduleOptions,
2197
+ outputs,
2198
+ rootDir,
2199
+ emittedSources,
2200
+ emittedSourceProofFailures,
2201
+ });
2202
+ return {
2203
+ emitDir,
2204
+ moduleOptions,
2205
+ outputs,
2206
+ rootDir,
2207
+ emittedSources,
2208
+ emittedSourceProofFailures,
2209
+ };
2210
+ } catch (error) {
2211
+ throwAfterFailedArtifactCleanup(error, emitDir, true);
2212
+ }
2213
+ }
2214
+
2215
+ /**
2216
+ * Publish the completion marker atomically: write it to a private temp name in
2217
+ * the same directory, then rename onto `metaPath`. Successful native rename
2218
+ * replaces the whole marker rather than writing it in place; refusal propagates
2219
+ * with an attempted temporary-file cleanup. The producer calls this after emit
2220
+ * presence and provenance checks. Stable layout and retained immutable emit
2221
+ * remain cooperative premises, and no fsync establishes crash durability.
2222
+ */
2223
+ function publishDependencyMeta(
2224
+ metaPath: string,
2225
+ meta: DependencyBuildGeneration.DependencyCacheMeta,
2226
+ ): void {
2227
+ const tmp = `${metaPath}.${process.pid}.${Date.now()}.${crypto
2228
+ .randomBytes(6)
2229
+ .toString("hex")}.tmp`;
2230
+ try {
2231
+ fs.writeFileSync(tmp, JSON.stringify(meta), "utf8");
2232
+ fs.renameSync(tmp, metaPath);
2233
+ } catch (error) {
2234
+ throwAfterFailedArtifactCleanup(error, tmp, false);
2235
+ }
2236
+ }
2237
+
2238
+ /**
2239
+ * Remove only the artifact owned by the failed publication. Preserve its
2240
+ * original failure; a refused removal adds a second causal outcome rather than
2241
+ * replacing the compiler or marker error with a filesystem error.
2242
+ */
2243
+ function throwAfterFailedArtifactCleanup(
2244
+ error: unknown,
2245
+ location: string,
2246
+ recursive: boolean,
2247
+ ): never {
2248
+ try {
2249
+ fs.rmSync(location, { force: true, recursive });
2250
+ } catch (cleanupError) {
2251
+ throw new AggregateError(
2252
+ [error, cleanupError],
2253
+ `ttsx: publication failed and its private artifact could not be removed: ${location}`,
2254
+ { cause: error },
2255
+ );
2256
+ }
2257
+ throw error;
2258
+ }
2259
+
2260
+ /**
2261
+ * A complete project build with no JavaScript does not establish root
2262
+ * ownership.
2263
+ */
2264
+ class EmptyProjectEmitError extends Error {}
2265
+
2266
+ /**
2267
+ * The config of the project that owns `real`: its nearest `tsconfig.json`, or,
2268
+ * when that config is a solution that does not contain the file, the referenced
2269
+ * project that does. `null` when no config owns the file at all.
2270
+ */
2271
+ function owningTsconfig(real: string): string | null {
2272
+ const nearest = RuntimeProjectOwnership.nearestTsconfig(
2273
+ real,
2274
+ recordPluginDescriptorProjectInputs,
2275
+ );
2276
+ if (nearest === null) return null;
2277
+ // Config spelling and target identity do not prove that inherited options,
2278
+ // reference roots or directory membership are unchanged. The resolver owns
2279
+ // lookup-scoped reuse; a later import must ask it for a current answer.
2280
+ return resolveOwningProjectConfig({
2281
+ file: real,
2282
+ onConfig: (config) => recordPluginDescriptorProjectInputs([config]),
2283
+ tsconfig: nearest,
2284
+ });
2285
+ }
2286
+
2287
+ function readFileOrNull(file: string | null): string | null {
2288
+ if (file === null) {
2289
+ return null;
2290
+ }
2291
+ try {
2292
+ return fs.readFileSync(file, "utf8");
2293
+ } catch {
2294
+ return null;
2295
+ }
2296
+ }
2297
+
2298
+ /**
2299
+ * The private layout root a dependency's emit mirrors, in physical spelling.
2300
+ * Ordinary undeclared roots use the volume root, while declared and composite
2301
+ * roots retain their compiler containment. Argument composition and serving
2302
+ * metadata use the same selection; the output ledger proves source ownership.
2303
+ *
2304
+ * Both branches need the pass, for different reasons. A declared `rootDir`
2305
+ * arrives from `readProjectConfig` joined against the config that declared it
2306
+ * but never resolved, so a `rootDir` that is itself a symlinked directory stays
2307
+ * unresolved. `project.root` arrives through plain `fs.realpathSync`, which
2308
+ * follows reparse points but leaves a Windows 8.3 component alone — and
2309
+ * {@link realPath} uses `fs.realpathSync.native`, which expands it. The
2310
+ * ownership index resolves both sides itself, so a stale spelling cannot make
2311
+ * it answer wrongly, but a physical one keeps every lookup on its cheap forward
2312
+ * mirror instead of the inverse scan.
2313
+ *
2314
+ * The entry lane applies the same private-root policy and physical-resolution
2315
+ * pass. Volume roots do not enumerate or authorize other source files.
2316
+ */
2317
+ function resolveDependencySourceRoot(
2318
+ project: ReturnType<typeof readProjectConfig>,
2319
+ ): string {
2320
+ const rootDir = project.compilerOptions.rootDir;
2321
+ return DependencyBuildGeneration.resolvePhysicalPath(
2322
+ privateRuntimeRootDir(
2323
+ project.root,
2324
+ rootDir,
2325
+ project.compilerOptions.composite,
2326
+ ),
2327
+ );
2328
+ }
2329
+
2330
+ /**
2331
+ * Map the JavaScript extension a relative `specifier` carries to the TypeScript
2332
+ * source extensions tsgo would have emitted it from. Running from source, a
2333
+ * `"./x.js"` import (whether authored or rewritten from `"./x.ts"` by
2334
+ * `--rewriteRelativeImportExtensions`) has no `.js` on disk — only `./x.ts`.
2335
+ */
2336
+ const JS_TO_TS_EXTENSIONS: ReadonlyMap<string, readonly string[]> = new Map([
2337
+ [".js", [".ts", ".tsx"]],
2338
+ [".jsx", [".tsx"]],
2339
+ [".mjs", [".mts"]],
2340
+ [".cjs", [".cts"]],
2341
+ ]);
2342
+
2343
+ /** Candidate sources that can satisfy one missing JavaScript spelling. */
2344
+ function typescriptSourcesForJavaScriptSpecifier(file: string): string[] {
2345
+ const extension = path.extname(file).toLowerCase();
2346
+ const substitutions = JS_TO_TS_EXTENSIONS.get(extension);
2347
+ if (substitutions === undefined) return [];
2348
+ const stem = file.slice(0, file.length - extension.length);
2349
+ return substitutions.map((candidate) => stem + candidate);
2350
+ }
2351
+
2352
+ /**
2353
+ * Rescue a `specifier` that Node's resolver rejected: map a JavaScript
2354
+ * extension back to its TypeScript source, or probe candidate extensions /
2355
+ * directory indexes for an extensionless form. Returns a `file:` URL for the
2356
+ * first match, or `null` when nothing matches.
2357
+ *
2358
+ * Handles two shapes:
2359
+ *
2360
+ * - A relative specifier (`./x`) resolved against a `file:` parent — a normal
2361
+ * `import`/`require` inside a served module;
2362
+ * - An already-absolute specifier with no parent — the main entry of a
2363
+ * `child_process.fork(__dirname + "/servant.js")`. fork's main module reaches
2364
+ * the resolve hook as an absolute `.js` path with `parentURL` undefined, and
2365
+ * run-from-source ships only the `.ts`, so without this the child dies with
2366
+ * `Cannot find module servant.js` and a tgrid master waits on it forever.
2367
+ */
2368
+ function probeRescuableSpecifier(
2369
+ specifier: string,
2370
+ parentURL: string | undefined,
2371
+ ): string | null {
2372
+ // A `?query` / `#hash` suffix is part of module identity, not the path; strip
2373
+ // it before resolving and re-attach it to the resolved URL so a loader keying
2374
+ // on the suffix (and `import.meta.url`) sees it preserved.
2375
+ const suffixStart = specifier.search(/[?#]/);
2376
+ const suffix = suffixStart === -1 ? "" : specifier.slice(suffixStart);
2377
+ const pathname =
2378
+ suffixStart === -1 ? specifier : specifier.slice(0, suffixStart);
2379
+ let base: string;
2380
+ if (isRelativeSpecifier(specifier)) {
2381
+ if (parentURL === undefined || !parentURL.startsWith("file:")) {
2382
+ return null;
2383
+ }
2384
+ const parentDir = path.dirname(fileURLToPath(parentURL));
2385
+ base = path.resolve(parentDir, pathname);
2386
+ } else if (path.isAbsolute(pathname)) {
2387
+ base = pathname;
2388
+ } else {
2389
+ return null;
2390
+ }
2391
+ const withSuffix = (candidate: string): string =>
2392
+ pathToFileURL(candidate).href + suffix;
2393
+
2394
+ const jsExtension = path.extname(base).toLowerCase();
2395
+ const tsExtensions = JS_TO_TS_EXTENSIONS.get(jsExtension);
2396
+ if (tsExtensions !== undefined) {
2397
+ const stem = base.slice(0, base.length - jsExtension.length);
2398
+ for (const extension of tsExtensions) {
2399
+ const candidate = stem + extension;
2400
+ if (RuntimeFilesystem.isFile(candidate)) {
2401
+ return withSuffix(candidate);
2402
+ }
2403
+ }
2404
+ return null;
2405
+ }
2406
+ if (hasConcreteExtension(pathname)) {
2407
+ return null;
2408
+ }
2409
+ for (const extension of RESOLVABLE_EXTENSIONS) {
2410
+ const candidate = base + extension;
2411
+ if (RuntimeFilesystem.isFile(candidate)) {
2412
+ return withSuffix(candidate);
2413
+ }
2414
+ }
2415
+ for (const extension of RESOLVABLE_EXTENSIONS) {
2416
+ const candidate = path.join(base, `index${extension}`);
2417
+ if (RuntimeFilesystem.isFile(candidate)) {
2418
+ return withSuffix(candidate);
2419
+ }
2420
+ }
2421
+ return null;
2422
+ }
2423
+
2424
+ function isRelativeSpecifier(specifier: string): boolean {
2425
+ return (
2426
+ specifier === "." ||
2427
+ specifier === ".." ||
2428
+ specifier.startsWith("./") ||
2429
+ specifier.startsWith("../")
2430
+ );
2431
+ }
2432
+
2433
+ /** True when `specifier` already carries an extension Node can load directly. */
2434
+ function hasConcreteExtension(specifier: string): boolean {
2435
+ return /\.(?:[cm]?jsx?|json|node|[cm]?tsx?)$/i.test(specifier);
2436
+ }
2437
+
2438
+ function isTypeScriptSource(filename: string): boolean {
2439
+ return TYPESCRIPT_EXTENSIONS.some((extension) =>
2440
+ filename.endsWith(extension),
2441
+ );
2442
+ }