ttsc 0.30.3 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2081) 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 +442 -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/target_windows.go +211 -0
  378. package/internal/sourceprocess/windows_job_accounting_rejects_invalid_boundary_test.go +97 -0
  379. package/internal/sourceprocess/windows_target_owns_suspended_admission_test.go +179 -0
  380. package/internal/watchhelper/run.go +32 -0
  381. package/internal/watchhelper/run_linux.go +323 -0
  382. package/internal/watchhelper/run_linux_test.go +418 -0
  383. package/internal/watchhelper/run_other.go +16 -0
  384. package/internal/watchhelper/watchhelper.go +100 -0
  385. package/lib/TtscCompiler.d.ts +118 -21
  386. package/lib/TtscCompiler.js +175 -179
  387. package/lib/TtscCompiler.js.map +1 -1
  388. package/lib/TtscService.d.ts +66 -18
  389. package/lib/TtscService.js +81 -24
  390. package/lib/TtscService.js.map +1 -1
  391. package/lib/TtscServiceRequestOptions.d.ts +21 -0
  392. package/lib/TtscServiceRequestOptions.js +3 -0
  393. package/lib/TtscServiceRequestOptions.js.map +1 -0
  394. package/lib/compiler/internal/CapturedProcessOutput.d.ts +61 -0
  395. package/lib/compiler/internal/CapturedProcessOutput.js +3 -0
  396. package/lib/compiler/internal/CapturedProcessOutput.js.map +1 -0
  397. package/lib/compiler/internal/CompilerArgumentsInspection.d.ts +53 -0
  398. package/lib/compiler/internal/CompilerArgumentsInspection.js +173 -0
  399. package/lib/compiler/internal/CompilerArgumentsInspection.js.map +1 -0
  400. package/lib/compiler/internal/EmitOwnershipIndex.d.ts +92 -0
  401. package/lib/compiler/internal/EmitOwnershipIndex.js +215 -0
  402. package/lib/compiler/internal/EmitOwnershipIndex.js.map +1 -0
  403. package/lib/compiler/internal/PrivateCompilerOutput.d.ts +67 -0
  404. package/lib/compiler/internal/PrivateCompilerOutput.js +245 -0
  405. package/lib/compiler/internal/PrivateCompilerOutput.js.map +1 -0
  406. package/lib/compiler/internal/ResidentCheckProcess.d.ts +127 -0
  407. package/lib/compiler/internal/ResidentCheckProcess.js +403 -0
  408. package/lib/compiler/internal/ResidentCheckProcess.js.map +1 -0
  409. package/lib/compiler/internal/ResidentCheckProcessOptions.d.ts +29 -0
  410. package/lib/compiler/internal/ResidentCheckProcessOptions.js +3 -0
  411. package/lib/compiler/internal/ResidentCheckProcessOptions.js.map +1 -0
  412. package/lib/compiler/internal/ResidentCheckRequest.d.ts +37 -0
  413. package/lib/compiler/internal/ResidentCheckRequest.js +3 -0
  414. package/lib/compiler/internal/ResidentCheckRequest.js.map +1 -0
  415. package/lib/compiler/internal/ResidentCheckResult.d.ts +23 -0
  416. package/lib/compiler/internal/ResidentCheckResult.js +3 -0
  417. package/lib/compiler/internal/ResidentCheckResult.js.map +1 -0
  418. package/lib/compiler/internal/ResidentCheckTelemetry.d.ts +33 -0
  419. package/lib/compiler/internal/ResidentCheckTelemetry.js +3 -0
  420. package/lib/compiler/internal/ResidentCheckTelemetry.js.map +1 -0
  421. package/lib/compiler/internal/ResidentReplyKind.d.ts +18 -0
  422. package/lib/compiler/internal/ResidentReplyKind.js +3 -0
  423. package/lib/compiler/internal/ResidentReplyKind.js.map +1 -0
  424. package/lib/compiler/internal/ResidentTransformProcess.d.ts +83 -0
  425. package/lib/compiler/internal/ResidentTransformProcess.js +261 -0
  426. package/lib/compiler/internal/ResidentTransformProcess.js.map +1 -0
  427. package/lib/compiler/internal/ResidentTransformProcessOptions.d.ts +27 -0
  428. package/lib/compiler/internal/ResidentTransformProcessOptions.js +3 -0
  429. package/lib/compiler/internal/ResidentTransformProcessOptions.js.map +1 -0
  430. package/lib/compiler/internal/ResidentTransformReply.d.ts +51 -0
  431. package/lib/compiler/internal/ResidentTransformReply.js +79 -0
  432. package/lib/compiler/internal/ResidentTransformReply.js.map +1 -0
  433. package/lib/compiler/internal/ResidentTransformRequestOptions.d.ts +16 -0
  434. package/lib/compiler/internal/ResidentTransformRequestOptions.js +3 -0
  435. package/lib/compiler/internal/ResidentTransformRequestOptions.js.map +1 -0
  436. package/lib/compiler/internal/ResidentTransformRequests.d.ts +102 -0
  437. package/lib/compiler/internal/ResidentTransformRequests.js +172 -0
  438. package/lib/compiler/internal/ResidentTransformRequests.js.map +1 -0
  439. package/lib/compiler/internal/StartedResidentTransform.d.ts +27 -0
  440. package/lib/compiler/internal/StartedResidentTransform.js +3 -0
  441. package/lib/compiler/internal/StartedResidentTransform.js.map +1 -0
  442. package/lib/compiler/internal/TransformProjectWorkerReply.d.ts +34 -0
  443. package/lib/compiler/internal/TransformProjectWorkerReply.js +3 -0
  444. package/lib/compiler/internal/TransformProjectWorkerReply.js.map +1 -0
  445. package/lib/compiler/internal/TransformProjectWorkerRequest.d.ts +39 -0
  446. package/lib/compiler/internal/TransformProjectWorkerRequest.js +3 -0
  447. package/lib/compiler/internal/TransformProjectWorkerRequest.js.map +1 -0
  448. package/lib/compiler/internal/build/BuildExecution.d.ts +359 -0
  449. package/lib/compiler/internal/build/BuildExecution.js +977 -0
  450. package/lib/compiler/internal/build/BuildExecution.js.map +1 -0
  451. package/lib/compiler/internal/build/BuildTiming.d.ts +99 -0
  452. package/lib/compiler/internal/build/BuildTiming.js +113 -0
  453. package/lib/compiler/internal/build/BuildTiming.js.map +1 -0
  454. package/lib/compiler/internal/build/CompilerDiagnostics.d.ts +82 -0
  455. package/lib/compiler/internal/build/CompilerDiagnostics.js +270 -0
  456. package/lib/compiler/internal/build/CompilerDiagnostics.js.map +1 -0
  457. package/lib/compiler/internal/build/NativePluginArguments.d.ts +114 -0
  458. package/lib/compiler/internal/build/NativePluginArguments.js +255 -0
  459. package/lib/compiler/internal/build/NativePluginArguments.js.map +1 -0
  460. package/lib/compiler/internal/build/PassthroughFlags.d.ts +137 -0
  461. package/lib/compiler/internal/build/PassthroughFlags.js +213 -0
  462. package/lib/compiler/internal/build/PassthroughFlags.js.map +1 -0
  463. package/lib/compiler/internal/build/PluginFailureDiagnostics.d.ts +48 -0
  464. package/lib/compiler/internal/build/PluginFailureDiagnostics.js +68 -0
  465. package/lib/compiler/internal/build/PluginFailureDiagnostics.js.map +1 -0
  466. package/lib/compiler/internal/build/ResidentCheckEntryPlan.d.ts +38 -0
  467. package/lib/compiler/internal/build/ResidentCheckEntryPlan.js +3 -0
  468. package/lib/compiler/internal/build/ResidentCheckEntryPlan.js.map +1 -0
  469. package/lib/compiler/internal/build/ResidentCheckWatchChange.d.ts +30 -0
  470. package/lib/compiler/internal/build/ResidentCheckWatchChange.js +3 -0
  471. package/lib/compiler/internal/build/ResidentCheckWatchChange.js.map +1 -0
  472. package/lib/compiler/internal/build/ResidentCheckWatchSession.d.ts +113 -0
  473. package/lib/compiler/internal/build/ResidentCheckWatchSession.js +378 -0
  474. package/lib/compiler/internal/build/ResidentCheckWatchSession.js.map +1 -0
  475. package/lib/compiler/internal/build/RunBuildOptions.d.ts +130 -0
  476. package/lib/compiler/internal/build/RunBuildOptions.js +3 -0
  477. package/lib/compiler/internal/build/RunBuildOptions.js.map +1 -0
  478. package/lib/compiler/internal/build/TsgoArguments.d.ts +168 -0
  479. package/lib/compiler/internal/build/TsgoArguments.js +324 -0
  480. package/lib/compiler/internal/build/TsgoArguments.js.map +1 -0
  481. package/lib/compiler/internal/build/appendBuildOutput.d.ts +41 -0
  482. package/lib/compiler/internal/build/appendBuildOutput.js +182 -0
  483. package/lib/compiler/internal/build/appendBuildOutput.js.map +1 -0
  484. package/lib/compiler/internal/build/bufferResidentCheckEntryRequests.d.ts +20 -0
  485. package/lib/compiler/internal/build/bufferResidentCheckEntryRequests.js +40 -0
  486. package/lib/compiler/internal/build/bufferResidentCheckEntryRequests.js.map +1 -0
  487. package/lib/compiler/internal/build/createProcessDiagnostic.d.ts +19 -0
  488. package/lib/compiler/internal/build/createProcessDiagnostic.js +30 -0
  489. package/lib/compiler/internal/build/createProcessDiagnostic.js.map +1 -0
  490. package/lib/compiler/internal/build/isAbsoluteLocalProjectInputPath.d.ts +22 -0
  491. package/lib/compiler/internal/build/isAbsoluteLocalProjectInputPath.js +59 -0
  492. package/lib/compiler/internal/build/isAbsoluteLocalProjectInputPath.js.map +1 -0
  493. package/lib/compiler/internal/build/mergeProjectInputSnapshots.d.ts +28 -0
  494. package/lib/compiler/internal/build/mergeProjectInputSnapshots.js +121 -0
  495. package/lib/compiler/internal/build/mergeProjectInputSnapshots.js.map +1 -0
  496. package/lib/compiler/internal/build/normalizeBuildOutput.d.ts +29 -0
  497. package/lib/compiler/internal/build/normalizeBuildOutput.js +72 -0
  498. package/lib/compiler/internal/build/normalizeBuildOutput.js.map +1 -0
  499. package/lib/compiler/internal/build/parseProjectInputSnapshot.d.ts +26 -0
  500. package/lib/compiler/internal/build/parseProjectInputSnapshot.js +68 -0
  501. package/lib/compiler/internal/build/parseProjectInputSnapshot.js.map +1 -0
  502. package/lib/compiler/internal/build/planResidentCheckEntries.d.ts +21 -0
  503. package/lib/compiler/internal/build/planResidentCheckEntries.js +45 -0
  504. package/lib/compiler/internal/build/planResidentCheckEntries.js.map +1 -0
  505. package/lib/compiler/internal/build/privateRuntimeRootDir.d.ts +20 -0
  506. package/lib/compiler/internal/build/privateRuntimeRootDir.js +35 -0
  507. package/lib/compiler/internal/build/privateRuntimeRootDir.js.map +1 -0
  508. package/lib/compiler/internal/build/residentCheckRequest.d.ts +22 -0
  509. package/lib/compiler/internal/build/residentCheckRequest.js +42 -0
  510. package/lib/compiler/internal/build/residentCheckRequest.js.map +1 -0
  511. package/lib/compiler/internal/build/runBuild.d.ts +22 -0
  512. package/lib/compiler/internal/build/runBuild.js +44 -0
  513. package/lib/compiler/internal/build/runBuild.js.map +1 -0
  514. package/lib/compiler/internal/build/runExternalEmitProvenance.d.ts +61 -0
  515. package/lib/compiler/internal/build/runExternalEmitProvenance.js +451 -0
  516. package/lib/compiler/internal/build/runExternalEmitProvenance.js.map +1 -0
  517. package/lib/compiler/internal/build/takeResidentCheckEntryRequest.d.ts +18 -0
  518. package/lib/compiler/internal/build/takeResidentCheckEntryRequest.js +28 -0
  519. package/lib/compiler/internal/build/takeResidentCheckEntryRequest.js.map +1 -0
  520. package/lib/compiler/internal/buildNativeCompiler.d.ts +16 -1
  521. package/lib/compiler/internal/buildNativeCompiler.js +14 -2
  522. package/lib/compiler/internal/buildNativeCompiler.js.map +1 -1
  523. package/lib/compiler/internal/captureProcessOutput.d.ts +23 -21
  524. package/lib/compiler/internal/captureProcessOutput.js +40 -26
  525. package/lib/compiler/internal/captureProcessOutput.js.map +1 -1
  526. package/lib/compiler/internal/compileProjectInMemory.d.ts +30 -7
  527. package/lib/compiler/internal/compileProjectInMemory.js +103 -83
  528. package/lib/compiler/internal/compileProjectInMemory.js.map +1 -1
  529. package/lib/compiler/internal/ensureExecutable.d.ts +15 -0
  530. package/lib/compiler/internal/ensureExecutable.js +40 -0
  531. package/lib/compiler/internal/ensureExecutable.js.map +1 -0
  532. package/lib/compiler/internal/findNearestGoMod.d.ts +23 -0
  533. package/lib/compiler/internal/findNearestGoMod.js +48 -0
  534. package/lib/compiler/internal/findNearestGoMod.js.map +1 -0
  535. package/lib/compiler/internal/isOutsideRelativePath.d.ts +18 -0
  536. package/lib/compiler/internal/isOutsideRelativePath.js +30 -0
  537. package/lib/compiler/internal/isOutsideRelativePath.js.map +1 -0
  538. package/lib/compiler/internal/outputText.d.ts +16 -0
  539. package/lib/compiler/internal/outputText.js +25 -0
  540. package/lib/compiler/internal/outputText.js.map +1 -0
  541. package/lib/compiler/internal/packageRootDir.d.ts +25 -0
  542. package/lib/compiler/internal/packageRootDir.js +47 -0
  543. package/lib/compiler/internal/packageRootDir.js.map +1 -0
  544. package/lib/compiler/internal/parseNativeTransformOutput.d.ts +88 -0
  545. package/lib/compiler/internal/parseNativeTransformOutput.js +552 -0
  546. package/lib/compiler/internal/parseNativeTransformOutput.js.map +1 -0
  547. package/lib/compiler/internal/project/CompilerProjectSelection.d.ts +80 -0
  548. package/lib/compiler/internal/project/CompilerProjectSelection.js +187 -0
  549. package/lib/compiler/internal/project/CompilerProjectSelection.js.map +1 -0
  550. package/lib/compiler/internal/project/ConfigJsonText.d.ts +50 -0
  551. package/lib/compiler/internal/project/ConfigJsonText.js +61 -0
  552. package/lib/compiler/internal/project/ConfigJsonText.js.map +1 -0
  553. package/lib/compiler/internal/project/compilerUsesCaseSensitiveFileNames.d.ts +48 -0
  554. package/lib/compiler/internal/project/compilerUsesCaseSensitiveFileNames.js +119 -0
  555. package/lib/compiler/internal/project/compilerUsesCaseSensitiveFileNames.js.map +1 -0
  556. package/lib/compiler/internal/project/createNativeProjectContextArgs.d.ts +11 -8
  557. package/lib/compiler/internal/project/createNativeProjectContextArgs.js +15 -17
  558. package/lib/compiler/internal/project/createNativeProjectContextArgs.js.map +1 -1
  559. package/lib/compiler/internal/project/createNativeProjectContextJson.d.ts +19 -0
  560. package/lib/compiler/internal/project/createNativeProjectContextJson.js +27 -0
  561. package/lib/compiler/internal/project/createNativeProjectContextJson.js.map +1 -0
  562. package/lib/compiler/internal/project/parseJsonc.d.ts +42 -0
  563. package/lib/compiler/internal/project/parseJsonc.js +317 -0
  564. package/lib/compiler/internal/project/parseJsonc.js.map +1 -0
  565. package/lib/compiler/internal/project/readJsonFile.d.ts +21 -0
  566. package/lib/compiler/internal/project/readJsonFile.js +38 -0
  567. package/lib/compiler/internal/project/readJsonFile.js.map +1 -0
  568. package/lib/compiler/internal/project/readJsoncFile.d.ts +20 -0
  569. package/lib/compiler/internal/project/readJsoncFile.js +47 -0
  570. package/lib/compiler/internal/project/readJsoncFile.js.map +1 -0
  571. package/lib/compiler/internal/project/readProjectConfig.d.ts +29 -2
  572. package/lib/compiler/internal/project/readProjectConfig.js +105 -168
  573. package/lib/compiler/internal/project/readProjectConfig.js.map +1 -1
  574. package/lib/compiler/internal/project/resolveOwningProjectConfig.d.ts +65 -0
  575. package/lib/compiler/internal/project/resolveOwningProjectConfig.js +248 -0
  576. package/lib/compiler/internal/project/resolveOwningProjectConfig.js.map +1 -0
  577. package/lib/compiler/internal/project/resolveProjectConfig.d.ts +17 -14
  578. package/lib/compiler/internal/project/resolveProjectConfig.js +19 -122
  579. package/lib/compiler/internal/project/resolveProjectConfig.js.map +1 -1
  580. package/lib/compiler/internal/project/resolveProjectIdentity.d.ts +32 -0
  581. package/lib/compiler/internal/project/resolveProjectIdentity.js +144 -0
  582. package/lib/compiler/internal/project/resolveProjectIdentity.js.map +1 -0
  583. package/lib/compiler/internal/project/resolveTsconfigExtends.d.ts +38 -0
  584. package/lib/compiler/internal/project/resolveTsconfigExtends.js +163 -0
  585. package/lib/compiler/internal/project/resolveTsconfigExtends.js.map +1 -0
  586. package/lib/compiler/internal/project/selectReferencedProject.d.ts +26 -0
  587. package/lib/compiler/internal/project/selectReferencedProject.js +48 -0
  588. package/lib/compiler/internal/project/selectReferencedProject.js.map +1 -0
  589. package/lib/compiler/internal/project/tsconfigExtendsFileCandidates.d.ts +34 -0
  590. package/lib/compiler/internal/project/tsconfigExtendsFileCandidates.js +55 -0
  591. package/lib/compiler/internal/project/tsconfigExtendsFileCandidates.js.map +1 -0
  592. package/lib/compiler/internal/readEffectiveCompilerOptions.d.ts +54 -0
  593. package/lib/compiler/internal/readEffectiveCompilerOptions.js +116 -0
  594. package/lib/compiler/internal/readEffectiveCompilerOptions.js.map +1 -0
  595. package/lib/compiler/internal/resolveBinary.d.ts +17 -1
  596. package/lib/compiler/internal/resolveBinary.js +24 -9
  597. package/lib/compiler/internal/resolveBinary.js.map +1 -1
  598. package/lib/compiler/internal/resolveTsgo.d.ts +22 -7
  599. package/lib/compiler/internal/resolveTsgo.js +25 -9
  600. package/lib/compiler/internal/resolveTsgo.js.map +1 -1
  601. package/lib/compiler/internal/runNativeCheckWithObservations.d.ts +41 -0
  602. package/lib/compiler/internal/runNativeCheckWithObservations.js +185 -0
  603. package/lib/compiler/internal/runNativeCheckWithObservations.js.map +1 -0
  604. package/lib/compiler/internal/runSingleFileEmit.d.ts +26 -5
  605. package/lib/compiler/internal/runSingleFileEmit.js +82 -27
  606. package/lib/compiler/internal/runSingleFileEmit.js.map +1 -1
  607. package/lib/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.d.ts +2 -0
  608. package/lib/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.js +6 -0
  609. package/lib/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.js.map +1 -0
  610. package/lib/compiler/internal/sharedHost/SidecarEnvironment.d.ts +90 -0
  611. package/lib/compiler/internal/sharedHost/SidecarEnvironment.js +153 -0
  612. package/lib/compiler/internal/sharedHost/SidecarEnvironment.js.map +1 -0
  613. package/lib/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.d.ts +7 -0
  614. package/lib/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.js +11 -0
  615. package/lib/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.js.map +1 -0
  616. package/lib/compiler/internal/sharedHost/TSGO_ARGS_ENV.d.ts +7 -0
  617. package/lib/compiler/internal/sharedHost/TSGO_ARGS_ENV.js +11 -0
  618. package/lib/compiler/internal/sharedHost/TSGO_ARGS_ENV.js.map +1 -0
  619. package/lib/compiler/internal/sharedHost/assertSharedHostCompatibility.d.ts +24 -0
  620. package/lib/compiler/internal/sharedHost/assertSharedHostCompatibility.js +46 -0
  621. package/lib/compiler/internal/sharedHost/assertSharedHostCompatibility.js.map +1 -0
  622. package/lib/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.d.ts +15 -0
  623. package/lib/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.js +23 -0
  624. package/lib/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.js.map +1 -0
  625. package/lib/compiler/internal/sharedHost/clearInheritedTsgoArgs.d.ts +23 -0
  626. package/lib/compiler/internal/sharedHost/clearInheritedTsgoArgs.js +33 -0
  627. package/lib/compiler/internal/sharedHost/clearInheritedTsgoArgs.js.map +1 -0
  628. package/lib/compiler/internal/sharedHost/inheritedSidecarEnv.d.ts +27 -0
  629. package/lib/compiler/internal/sharedHost/inheritedSidecarEnv.js +41 -0
  630. package/lib/compiler/internal/sharedHost/inheritedSidecarEnv.js.map +1 -0
  631. package/lib/compiler/internal/sharedHost/isLinkedTransform.d.ts +16 -0
  632. package/lib/compiler/internal/sharedHost/isLinkedTransform.js +21 -0
  633. package/lib/compiler/internal/sharedHost/isLinkedTransform.js.map +1 -0
  634. package/lib/compiler/internal/sharedHost/linkedTransformPlugins.d.ts +19 -0
  635. package/lib/compiler/internal/sharedHost/linkedTransformPlugins.js +25 -0
  636. package/lib/compiler/internal/sharedHost/linkedTransformPlugins.js.map +1 -0
  637. package/lib/compiler/internal/sharedHost/publishLinkedTransformPlugins.d.ts +25 -0
  638. package/lib/compiler/internal/sharedHost/publishLinkedTransformPlugins.js +35 -0
  639. package/lib/compiler/internal/sharedHost/publishLinkedTransformPlugins.js.map +1 -0
  640. package/lib/compiler/internal/sharedHost/resolvePluginConfigDir.d.ts +26 -0
  641. package/lib/compiler/internal/sharedHost/resolvePluginConfigDir.js +36 -0
  642. package/lib/compiler/internal/sharedHost/resolvePluginConfigDir.js.map +1 -0
  643. package/lib/compiler/internal/sharedHost/selectSharedHostPlugin.d.ts +22 -0
  644. package/lib/compiler/internal/sharedHost/selectSharedHostPlugin.js +32 -0
  645. package/lib/compiler/internal/sharedHost/selectSharedHostPlugin.js.map +1 -0
  646. package/lib/compiler/internal/spawnNative.d.ts +15 -16
  647. package/lib/compiler/internal/spawnNative.js +20 -48
  648. package/lib/compiler/internal/spawnNative.js.map +1 -1
  649. package/lib/compiler/internal/startResidentTransform.d.ts +26 -17
  650. package/lib/compiler/internal/startResidentTransform.js +51 -36
  651. package/lib/compiler/internal/startResidentTransform.js.map +1 -1
  652. package/lib/compiler/internal/transformProjectInMemory.d.ts +42 -5
  653. package/lib/compiler/internal/transformProjectInMemory.js +197 -471
  654. package/lib/compiler/internal/transformProjectInMemory.js.map +1 -1
  655. package/lib/compiler/internal/transformProjectInWorker.d.ts +49 -0
  656. package/lib/compiler/internal/transformProjectInWorker.js +168 -0
  657. package/lib/compiler/internal/transformProjectInWorker.js.map +1 -0
  658. package/lib/compiler/internal/transformProjectWorker.js +37 -0
  659. package/lib/compiler/internal/transformProjectWorker.js.map +1 -0
  660. package/lib/flags/AnySubcommand.d.ts +18 -0
  661. package/lib/flags/AnySubcommand.js +3 -0
  662. package/lib/flags/AnySubcommand.js.map +1 -0
  663. package/lib/flags/COMPILER_ENUM_WHITESPACE.d.ts +2 -0
  664. package/lib/flags/COMPILER_ENUM_WHITESPACE.js +38 -0
  665. package/lib/flags/COMPILER_ENUM_WHITESPACE.js.map +1 -0
  666. package/lib/flags/COMPILER_OPTIONS.d.ts +6 -0
  667. package/lib/flags/COMPILER_OPTIONS.js +509 -0
  668. package/lib/flags/COMPILER_OPTIONS.js.map +1 -0
  669. package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.d.ts +2 -0
  670. package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.js +13 -0
  671. package/lib/flags/COMPILER_OPTION_ASCII_FOLDS.js.map +1 -0
  672. package/lib/flags/COMPILER_OPTION_KINDS.d.ts +2 -0
  673. package/lib/flags/COMPILER_OPTION_KINDS.js +14 -0
  674. package/lib/flags/COMPILER_OPTION_KINDS.js.map +1 -0
  675. package/lib/flags/CompilerOptionSpec.d.ts +27 -0
  676. package/lib/flags/CompilerOptionSpec.js +3 -0
  677. package/lib/flags/CompilerOptionSpec.js.map +1 -0
  678. package/lib/flags/FLAG_BY_TOKEN.d.ts +8 -0
  679. package/lib/flags/FLAG_BY_TOKEN.js +34 -0
  680. package/lib/flags/FLAG_BY_TOKEN.js.map +1 -0
  681. package/lib/flags/FLAG_SCHEMA.d.ts +35 -0
  682. package/lib/flags/{schema.js → FLAG_SCHEMA.js} +47 -153
  683. package/lib/flags/FLAG_SCHEMA.js.map +1 -0
  684. package/lib/flags/FlagKind.d.ts +22 -0
  685. package/lib/flags/FlagKind.js +3 -0
  686. package/lib/flags/FlagKind.js.map +1 -0
  687. package/lib/flags/FlagLayer.d.ts +19 -0
  688. package/lib/flags/FlagLayer.js +3 -0
  689. package/lib/flags/FlagLayer.js.map +1 -0
  690. package/lib/flags/FlagSpec.d.ts +104 -0
  691. package/lib/flags/FlagSpec.js +3 -0
  692. package/lib/flags/FlagSpec.js.map +1 -0
  693. package/lib/flags/ParseOptions.d.ts +92 -0
  694. package/lib/flags/ParseOptions.js +3 -0
  695. package/lib/flags/ParseOptions.js.map +1 -0
  696. package/lib/flags/ParseResult.d.ts +37 -0
  697. package/lib/flags/ParseResult.js +3 -0
  698. package/lib/flags/ParseResult.js.map +1 -0
  699. package/lib/flags/TtscSubcommand.d.ts +14 -0
  700. package/lib/flags/TtscSubcommand.js +3 -0
  701. package/lib/flags/TtscSubcommand.js.map +1 -0
  702. package/lib/flags/TtsxSubcommand.d.ts +13 -0
  703. package/lib/flags/TtsxSubcommand.js +3 -0
  704. package/lib/flags/TtsxSubcommand.js.map +1 -0
  705. package/lib/flags/ValueValidator.d.ts +14 -0
  706. package/lib/flags/ValueValidator.js +3 -0
  707. package/lib/flags/ValueValidator.js.map +1 -0
  708. package/lib/flags/buildGoAllowList.d.ts +18 -0
  709. package/lib/flags/buildGoAllowList.js +45 -0
  710. package/lib/flags/buildGoAllowList.js.map +1 -0
  711. package/lib/flags/flagsForSubcommand.d.ts +18 -0
  712. package/lib/flags/flagsForSubcommand.js +23 -0
  713. package/lib/flags/flagsForSubcommand.js.map +1 -0
  714. package/lib/flags/getBoolean.d.ts +19 -0
  715. package/lib/flags/getBoolean.js +27 -0
  716. package/lib/flags/getBoolean.js.map +1 -0
  717. package/lib/flags/getNumber.d.ts +16 -0
  718. package/lib/flags/getNumber.js +24 -0
  719. package/lib/flags/getNumber.js.map +1 -0
  720. package/lib/flags/getString.d.ts +16 -0
  721. package/lib/flags/getString.js +24 -0
  722. package/lib/flags/getString.js.map +1 -0
  723. package/lib/flags/getStringList.d.ts +19 -0
  724. package/lib/flags/getStringList.js +24 -0
  725. package/lib/flags/getStringList.js.map +1 -0
  726. package/lib/flags/normalizeCompilerEnumValue.d.ts +20 -0
  727. package/lib/flags/normalizeCompilerEnumValue.js +40 -0
  728. package/lib/flags/normalizeCompilerEnumValue.js.map +1 -0
  729. package/lib/flags/normalizeFlagToken.d.ts +28 -0
  730. package/lib/flags/normalizeFlagToken.js +38 -0
  731. package/lib/flags/normalizeFlagToken.js.map +1 -0
  732. package/lib/flags/parseFlags.d.ts +18 -0
  733. package/lib/flags/parseFlags.js +288 -0
  734. package/lib/flags/parseFlags.js.map +1 -0
  735. package/lib/flags/readCompilerOptionOccurrence.d.ts +34 -0
  736. package/lib/flags/readCompilerOptionOccurrence.js +81 -0
  737. package/lib/flags/readCompilerOptionOccurrence.js.map +1 -0
  738. package/lib/flags/readCompilerOptionValues.d.ts +33 -0
  739. package/lib/flags/readCompilerOptionValues.js +58 -0
  740. package/lib/flags/readCompilerOptionValues.js.map +1 -0
  741. package/lib/flags/resolveFlagSpec.d.ts +21 -0
  742. package/lib/flags/resolveFlagSpec.js +32 -0
  743. package/lib/flags/resolveFlagSpec.js.map +1 -0
  744. package/lib/index.d.ts +8 -3
  745. package/lib/index.js +10 -3
  746. package/lib/index.js.map +1 -1
  747. package/lib/internal/CanonicalTempDirectoryOperations.d.ts +73 -0
  748. package/lib/internal/CanonicalTempDirectoryOperations.js +3 -0
  749. package/lib/internal/CanonicalTempDirectoryOperations.js.map +1 -0
  750. package/lib/internal/CompilerContextSnapshot.d.ts +66 -0
  751. package/lib/internal/CompilerContextSnapshot.js +121 -0
  752. package/lib/internal/CompilerContextSnapshot.js.map +1 -0
  753. package/lib/internal/CompilerResultAdapter.d.ts +129 -0
  754. package/lib/internal/CompilerResultAdapter.js +247 -0
  755. package/lib/internal/CompilerResultAdapter.js.map +1 -0
  756. package/lib/internal/E2ETrace.d.ts +219 -0
  757. package/lib/internal/E2ETrace.js +541 -0
  758. package/lib/internal/E2ETrace.js.map +1 -0
  759. package/lib/internal/IJavaScriptRuntimeCapabilities.d.ts +48 -0
  760. package/lib/internal/IJavaScriptRuntimeCapabilities.js +3 -0
  761. package/lib/internal/IJavaScriptRuntimeCapabilities.js.map +1 -0
  762. package/lib/internal/OwnedNativeProcess.d.ts +66 -0
  763. package/lib/internal/OwnedNativeProcess.js +317 -0
  764. package/lib/internal/OwnedNativeProcess.js.map +1 -0
  765. package/lib/internal/OwnedSynchronousProcess.d.ts +158 -0
  766. package/lib/internal/OwnedSynchronousProcess.js +171 -0
  767. package/lib/internal/OwnedSynchronousProcess.js.map +1 -0
  768. package/lib/internal/RetireLockDirectoryOperations.d.ts +77 -0
  769. package/lib/internal/RetireLockDirectoryOperations.js +3 -0
  770. package/lib/internal/RetireLockDirectoryOperations.js.map +1 -0
  771. package/lib/internal/SafeCacheCleanupTarget.d.ts +39 -0
  772. package/lib/internal/SafeCacheCleanupTarget.js +3 -0
  773. package/lib/internal/SafeCacheCleanupTarget.js.map +1 -0
  774. package/lib/internal/SourceNativeRetirement.d.ts +384 -0
  775. package/lib/internal/SourceNativeRetirement.js +892 -0
  776. package/lib/internal/SourceNativeRetirement.js.map +1 -0
  777. package/lib/internal/SpawnSyncOutputFiles.d.ts +28 -0
  778. package/lib/internal/SpawnSyncOutputFiles.js +3 -0
  779. package/lib/internal/SpawnSyncOutputFiles.js.map +1 -0
  780. package/lib/internal/cacheEntryExists.d.ts +13 -0
  781. package/lib/internal/cacheEntryExists.js +32 -0
  782. package/lib/internal/cacheEntryExists.js.map +1 -0
  783. package/lib/internal/createCanonicalTempDirectory.d.ts +23 -13
  784. package/lib/internal/createCanonicalTempDirectory.js +31 -12
  785. package/lib/internal/createCanonicalTempDirectory.js.map +1 -1
  786. package/lib/internal/isContendedCandidateRename.d.ts +27 -0
  787. package/lib/internal/isContendedCandidateRename.js +37 -0
  788. package/lib/internal/isContendedCandidateRename.js.map +1 -0
  789. package/lib/internal/isSpawnSyncFdExhaustion.d.ts +16 -0
  790. package/lib/internal/isSpawnSyncFdExhaustion.js +23 -0
  791. package/lib/internal/isSpawnSyncFdExhaustion.js.map +1 -0
  792. package/lib/internal/javascriptRuntimeCapabilities.d.ts +20 -0
  793. package/lib/internal/javascriptRuntimeCapabilities.js +142 -0
  794. package/lib/internal/javascriptRuntimeCapabilities.js.map +1 -0
  795. package/lib/internal/nativeBinary.d.ts +11 -0
  796. package/lib/internal/nativeBinary.js +16 -0
  797. package/lib/internal/nativeBinary.js.map +1 -0
  798. package/lib/internal/parseWindowsDirectoryCaseSensitivity.d.ts +24 -0
  799. package/lib/internal/parseWindowsDirectoryCaseSensitivity.js +47 -0
  800. package/lib/internal/parseWindowsDirectoryCaseSensitivity.js.map +1 -0
  801. package/lib/internal/pathIdentity/FilesystemPathIdentity.d.ts +43 -0
  802. package/lib/internal/pathIdentity/FilesystemPathIdentity.js +3 -0
  803. package/lib/internal/pathIdentity/FilesystemPathIdentity.js.map +1 -0
  804. package/lib/internal/pathIdentity/FilesystemPathIdentityContext.d.ts +176 -0
  805. package/lib/internal/pathIdentity/FilesystemPathIdentityContext.js +3 -0
  806. package/lib/internal/pathIdentity/FilesystemPathIdentityContext.js.map +1 -0
  807. package/lib/internal/pathIdentity/FilesystemPathIdentityOperations.d.ts +100 -0
  808. package/lib/internal/pathIdentity/FilesystemPathIdentityOperations.js +3 -0
  809. package/lib/internal/pathIdentity/FilesystemPathIdentityOperations.js.map +1 -0
  810. package/lib/internal/pathIdentity/ProjectInputPathIdentity.d.ts +20 -0
  811. package/lib/internal/pathIdentity/ProjectInputPathIdentity.js +3 -0
  812. package/lib/internal/pathIdentity/ProjectInputPathIdentity.js.map +1 -0
  813. package/lib/internal/pathIdentity/ProjectInputPathIdentityContext.d.ts +20 -0
  814. package/lib/internal/pathIdentity/ProjectInputPathIdentityContext.js +3 -0
  815. package/lib/internal/pathIdentity/ProjectInputPathIdentityContext.js.map +1 -0
  816. package/lib/internal/pathIdentity/ProjectInputPathIdentityOperations.d.ts +20 -0
  817. package/lib/internal/pathIdentity/ProjectInputPathIdentityOperations.js +3 -0
  818. package/lib/internal/pathIdentity/ProjectInputPathIdentityOperations.js.map +1 -0
  819. package/lib/internal/pathIdentity/createFilesystemPathIdentityContext.d.ts +25 -0
  820. package/lib/internal/pathIdentity/createFilesystemPathIdentityContext.js +336 -0
  821. package/lib/internal/pathIdentity/createFilesystemPathIdentityContext.js.map +1 -0
  822. package/lib/internal/pathIdentity/createProjectInputPathIdentityContext.d.ts +28 -0
  823. package/lib/internal/pathIdentity/createProjectInputPathIdentityContext.js +33 -0
  824. package/lib/internal/pathIdentity/createProjectInputPathIdentityContext.js.map +1 -0
  825. package/lib/internal/pathIdentity/isFilesystemPathIdentityWithin.d.ts +20 -0
  826. package/lib/internal/pathIdentity/isFilesystemPathIdentityWithin.js +33 -0
  827. package/lib/internal/pathIdentity/isFilesystemPathIdentityWithin.js.map +1 -0
  828. package/lib/internal/pathIdentity/isProjectInputPathIdentityWithin.d.ts +15 -0
  829. package/lib/internal/pathIdentity/isProjectInputPathIdentityWithin.js +22 -0
  830. package/lib/internal/pathIdentity/isProjectInputPathIdentityWithin.js.map +1 -0
  831. package/lib/internal/pathIdentity/resolveFilesystemPath.d.ts +22 -0
  832. package/lib/internal/pathIdentity/resolveFilesystemPath.js +44 -0
  833. package/lib/internal/pathIdentity/resolveFilesystemPath.js.map +1 -0
  834. package/lib/internal/pathIdentity/resolvePhysicalPath.d.ts +21 -0
  835. package/lib/internal/pathIdentity/resolvePhysicalPath.js +35 -0
  836. package/lib/internal/pathIdentity/resolvePhysicalPath.js.map +1 -0
  837. package/lib/internal/pathIdentity/resolveProjectInputPath.d.ts +14 -0
  838. package/lib/internal/pathIdentity/resolveProjectInputPath.js +21 -0
  839. package/lib/internal/pathIdentity/resolveProjectInputPath.js.map +1 -0
  840. package/lib/internal/pluginSource.d.ts +26 -0
  841. package/lib/internal/pluginSource.js +43 -0
  842. package/lib/internal/pluginSource.js.map +1 -0
  843. package/lib/internal/projectInputPathIdentity.d.ts +27 -31
  844. package/lib/internal/projectInputPathIdentity.js +37 -275
  845. package/lib/internal/projectInputPathIdentity.js.map +1 -1
  846. package/lib/internal/resolveNodeBinary.d.ts +9 -7
  847. package/lib/internal/resolveNodeBinary.js +14 -120
  848. package/lib/internal/resolveNodeBinary.js.map +1 -1
  849. package/lib/internal/resolveSafeCacheCleanupTargets.d.ts +27 -8
  850. package/lib/internal/resolveSafeCacheCleanupTargets.js +44 -11
  851. package/lib/internal/resolveSafeCacheCleanupTargets.js.map +1 -1
  852. package/lib/internal/restoreCompilerError.d.ts +21 -0
  853. package/lib/internal/restoreCompilerError.js +164 -0
  854. package/lib/internal/restoreCompilerError.js.map +1 -0
  855. package/lib/internal/retireLockDirectory.d.ts +45 -0
  856. package/lib/internal/retireLockDirectory.js +152 -0
  857. package/lib/internal/retireLockDirectory.js.map +1 -0
  858. package/lib/internal/runHoldingLock.d.ts +30 -0
  859. package/lib/internal/runHoldingLock.js +53 -0
  860. package/lib/internal/runHoldingLock.js.map +1 -0
  861. package/lib/internal/runtimeExecutableIdentity.d.ts +20 -0
  862. package/lib/internal/runtimeExecutableIdentity.js +171 -0
  863. package/lib/internal/runtimeExecutableIdentity.js.map +1 -0
  864. package/lib/internal/serializeCompilerError.d.ts +28 -0
  865. package/lib/internal/serializeCompilerError.js +138 -0
  866. package/lib/internal/serializeCompilerError.js.map +1 -0
  867. package/lib/internal/spawnSyncResilient.d.ts +31 -0
  868. package/lib/internal/spawnSyncResilient.js +50 -0
  869. package/lib/internal/spawnSyncResilient.js.map +1 -0
  870. package/lib/internal/spawnSyncWithLowDescriptors.d.ts +30 -0
  871. package/lib/internal/spawnSyncWithLowDescriptors.js +194 -0
  872. package/lib/internal/spawnSyncWithLowDescriptors.js.map +1 -0
  873. package/lib/internal/tsconfig.d.ts +16 -0
  874. package/lib/internal/tsconfig.js +33 -0
  875. package/lib/internal/tsconfig.js.map +1 -0
  876. package/lib/launcher/internal/PendingResidentCheckWatchChanges.d.ts +56 -0
  877. package/lib/launcher/internal/PendingResidentCheckWatchChanges.js +97 -0
  878. package/lib/launcher/internal/PendingResidentCheckWatchChanges.js.map +1 -0
  879. package/lib/launcher/internal/TtscBuildMode.d.ts +14 -0
  880. package/lib/launcher/internal/TtscBuildMode.js +3 -0
  881. package/lib/launcher/internal/TtscBuildMode.js.map +1 -0
  882. package/lib/launcher/internal/TtsxEntryOptions.d.ts +50 -0
  883. package/lib/launcher/internal/TtsxEntryOptions.js +94 -0
  884. package/lib/launcher/internal/TtsxEntryOptions.js.map +1 -0
  885. package/lib/launcher/internal/assertNoSolutionBuild.d.ts +17 -10
  886. package/lib/launcher/internal/assertNoSolutionBuild.js +16 -9
  887. package/lib/launcher/internal/assertNoSolutionBuild.js.map +1 -1
  888. package/lib/launcher/internal/assertTtsxNoWatch.d.ts +25 -0
  889. package/lib/launcher/internal/assertTtsxNoWatch.js +46 -0
  890. package/lib/launcher/internal/assertTtsxNoWatch.js.map +1 -0
  891. package/lib/launcher/internal/buildSingleRootProject.d.ts +108 -0
  892. package/lib/launcher/internal/buildSingleRootProject.js +229 -0
  893. package/lib/launcher/internal/buildSingleRootProject.js.map +1 -0
  894. package/lib/launcher/internal/getCompilerVersionText.d.ts +14 -1
  895. package/lib/launcher/internal/getCompilerVersionText.js +21 -6
  896. package/lib/launcher/internal/getCompilerVersionText.js.map +1 -1
  897. package/lib/launcher/internal/inlineServedSourceMap.d.ts +35 -0
  898. package/lib/launcher/internal/inlineServedSourceMap.js +255 -0
  899. package/lib/launcher/internal/inlineServedSourceMap.js.map +1 -0
  900. package/lib/launcher/internal/linkVirtualEntry.d.ts +31 -0
  901. package/lib/launcher/internal/linkVirtualEntry.js +87 -0
  902. package/lib/launcher/internal/linkVirtualEntry.js.map +1 -0
  903. package/lib/launcher/internal/parseCommonJsExports.d.ts +17 -0
  904. package/lib/launcher/internal/{commonJsExportMetadata.js → parseCommonJsExports.js} +13 -3
  905. package/lib/launcher/internal/parseCommonJsExports.js.map +1 -0
  906. package/lib/launcher/internal/parseTtscBuildArgs.d.ts +34 -0
  907. package/lib/launcher/internal/parseTtscBuildArgs.js +97 -0
  908. package/lib/launcher/internal/parseTtscBuildArgs.js.map +1 -0
  909. package/lib/launcher/internal/parseTtsxCLI.d.ts +35 -0
  910. package/lib/launcher/internal/parseTtsxCLI.js +187 -0
  911. package/lib/launcher/internal/parseTtsxCLI.js.map +1 -0
  912. package/lib/launcher/internal/prepareExecution.d.ts +49 -5
  913. package/lib/launcher/internal/prepareExecution.js +360 -324
  914. package/lib/launcher/internal/prepareExecution.js.map +1 -1
  915. package/lib/launcher/internal/prepareTtscBuildMode.d.ts +23 -0
  916. package/lib/launcher/internal/prepareTtscBuildMode.js +58 -0
  917. package/lib/launcher/internal/prepareTtscBuildMode.js.map +1 -0
  918. package/lib/launcher/internal/resolveCacheDir.d.ts +12 -3
  919. package/lib/launcher/internal/resolveCacheDir.js +12 -3
  920. package/lib/launcher/internal/resolveCacheDir.js.map +1 -1
  921. package/lib/launcher/internal/resolveSingleFileOutput.d.ts +35 -0
  922. package/lib/launcher/internal/resolveSingleFileOutput.js +115 -0
  923. package/lib/launcher/internal/resolveSingleFileOutput.js.map +1 -0
  924. package/lib/launcher/internal/resolveTtscserverBinary.d.ts +15 -3
  925. package/lib/launcher/internal/resolveTtscserverBinary.js +19 -5
  926. package/lib/launcher/internal/resolveTtscserverBinary.js.map +1 -1
  927. package/lib/launcher/internal/runTtsc.d.ts +23 -23
  928. package/lib/launcher/internal/runTtsc.js +336 -286
  929. package/lib/launcher/internal/runTtsc.js.map +1 -1
  930. package/lib/launcher/internal/runTtsx.d.ts +32 -4
  931. package/lib/launcher/internal/runTtsx.js +286 -138
  932. package/lib/launcher/internal/runTtsx.js.map +1 -1
  933. package/lib/launcher/internal/runtime/CommonJsRuntimeSource.d.ts +92 -0
  934. package/lib/launcher/internal/runtime/CommonJsRuntimeSource.js +354 -0
  935. package/lib/launcher/internal/runtime/CommonJsRuntimeSource.js.map +1 -0
  936. package/lib/launcher/internal/runtime/DependencyBuildAdmission.d.ts +72 -0
  937. package/lib/launcher/internal/runtime/DependencyBuildAdmission.js +120 -0
  938. package/lib/launcher/internal/runtime/DependencyBuildAdmission.js.map +1 -0
  939. package/lib/launcher/internal/runtime/DependencyBuildGeneration.d.ts +185 -0
  940. package/lib/launcher/internal/runtime/DependencyBuildGeneration.js +153 -0
  941. package/lib/launcher/internal/runtime/DependencyBuildGeneration.js.map +1 -0
  942. package/lib/launcher/internal/runtime/DependencyBuildLockFence.d.ts +22 -0
  943. package/lib/launcher/internal/runtime/DependencyBuildLockFence.js +3 -0
  944. package/lib/launcher/internal/runtime/DependencyBuildLockFence.js.map +1 -0
  945. package/lib/launcher/internal/runtime/DependencyBuildLockLease.d.ts +22 -0
  946. package/lib/launcher/internal/runtime/DependencyBuildLockLease.js +3 -0
  947. package/lib/launcher/internal/runtime/DependencyBuildLockLease.js.map +1 -0
  948. package/lib/launcher/internal/runtime/DependencyBuildLockObservation.d.ts +41 -0
  949. package/lib/launcher/internal/runtime/DependencyBuildLockObservation.js +3 -0
  950. package/lib/launcher/internal/runtime/DependencyBuildLockObservation.js.map +1 -0
  951. package/lib/launcher/internal/runtime/DependencyBuildLockProtocol.d.ts +83 -0
  952. package/lib/launcher/internal/runtime/DependencyBuildLockProtocol.js +126 -0
  953. package/lib/launcher/internal/runtime/DependencyBuildLockProtocol.js.map +1 -0
  954. package/lib/launcher/internal/runtime/OwnedProjectSource.d.ts +112 -0
  955. package/lib/launcher/internal/runtime/OwnedProjectSource.js +59 -0
  956. package/lib/launcher/internal/runtime/OwnedProjectSource.js.map +1 -0
  957. package/lib/launcher/internal/runtime/OwningModuleOptions.d.ts +21 -0
  958. package/lib/launcher/internal/runtime/OwningModuleOptions.js +3 -0
  959. package/lib/launcher/internal/runtime/OwningModuleOptions.js.map +1 -0
  960. package/lib/launcher/internal/runtime/PluginDescriptorInputObservation.d.ts +89 -0
  961. package/lib/launcher/internal/runtime/PluginDescriptorInputObservation.js +115 -0
  962. package/lib/launcher/internal/runtime/PluginDescriptorInputObservation.js.map +1 -0
  963. package/lib/launcher/internal/runtime/ProcessOwnedDirectory.d.ts +168 -0
  964. package/lib/launcher/internal/runtime/ProcessOwnedDirectory.js +251 -0
  965. package/lib/launcher/internal/runtime/ProcessOwnedDirectory.js.map +1 -0
  966. package/lib/launcher/internal/runtime/ResolveResult.d.ts +24 -0
  967. package/lib/launcher/internal/runtime/ResolveResult.js +3 -0
  968. package/lib/launcher/internal/runtime/ResolveResult.js.map +1 -0
  969. package/lib/launcher/internal/runtime/RuntimeEmitProvenance.d.ts +38 -0
  970. package/lib/launcher/internal/runtime/RuntimeEmitProvenance.js +60 -0
  971. package/lib/launcher/internal/runtime/RuntimeEmitProvenance.js.map +1 -0
  972. package/lib/launcher/internal/runtime/RuntimeEntryPreparer.d.ts +22 -0
  973. package/lib/launcher/internal/runtime/RuntimeEntryPreparer.js +3 -0
  974. package/lib/launcher/internal/runtime/RuntimeEntryPreparer.js.map +1 -0
  975. package/lib/launcher/internal/runtime/RuntimeFilesystem.d.ts +52 -0
  976. package/lib/launcher/internal/runtime/RuntimeFilesystem.js +73 -0
  977. package/lib/launcher/internal/runtime/RuntimeFilesystem.js.map +1 -0
  978. package/lib/launcher/internal/runtime/RuntimeHookOptions.d.ts +22 -0
  979. package/lib/launcher/internal/runtime/RuntimeHookOptions.js +3 -0
  980. package/lib/launcher/internal/runtime/RuntimeHookOptions.js.map +1 -0
  981. package/lib/launcher/internal/runtime/RuntimeIsolatedEmit.d.ts +53 -0
  982. package/lib/launcher/internal/runtime/RuntimeIsolatedEmit.js +88 -0
  983. package/lib/launcher/internal/runtime/RuntimeIsolatedEmit.js.map +1 -0
  984. package/lib/launcher/internal/runtime/RuntimeLoaderCapabilities.d.ts +78 -0
  985. package/lib/launcher/internal/runtime/RuntimeLoaderCapabilities.js +256 -0
  986. package/lib/launcher/internal/runtime/RuntimeLoaderCapabilities.js.map +1 -0
  987. package/lib/launcher/internal/runtime/RuntimeManifest.d.ts +65 -0
  988. package/lib/launcher/internal/runtime/RuntimeManifest.js +3 -0
  989. package/lib/launcher/internal/runtime/RuntimeManifest.js.map +1 -0
  990. package/lib/launcher/internal/runtime/RuntimeManifestRegistry.d.ts +95 -0
  991. package/lib/launcher/internal/runtime/RuntimeManifestRegistry.js +268 -0
  992. package/lib/launcher/internal/runtime/RuntimeManifestRegistry.js.map +1 -0
  993. package/lib/launcher/internal/runtime/RuntimeModuleFormat.d.ts +60 -0
  994. package/lib/launcher/internal/runtime/RuntimeModuleFormat.js +249 -0
  995. package/lib/launcher/internal/runtime/RuntimeModuleFormat.js.map +1 -0
  996. package/lib/launcher/internal/runtime/RuntimeProjectOwnership.d.ts +50 -0
  997. package/lib/launcher/internal/runtime/RuntimeProjectOwnership.js +134 -0
  998. package/lib/launcher/internal/runtime/RuntimeProjectOwnership.js.map +1 -0
  999. package/lib/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.d.ts +11 -0
  1000. package/lib/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.js +15 -0
  1001. package/lib/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.js.map +1 -0
  1002. package/lib/launcher/internal/runtime/acquireDependencyBuildLock.d.ts +22 -0
  1003. package/lib/launcher/internal/runtime/acquireDependencyBuildLock.js +74 -0
  1004. package/lib/launcher/internal/runtime/acquireDependencyBuildLock.js.map +1 -0
  1005. package/lib/launcher/internal/runtime/checkNodeRuntimeSupport.d.ts +30 -0
  1006. package/lib/launcher/internal/runtime/checkNodeRuntimeSupport.js +83 -0
  1007. package/lib/launcher/internal/runtime/checkNodeRuntimeSupport.js.map +1 -0
  1008. package/lib/launcher/internal/runtime/claimRuntimeProjectDirectory.d.ts +30 -0
  1009. package/lib/launcher/internal/runtime/claimRuntimeProjectDirectory.js +52 -0
  1010. package/lib/launcher/internal/runtime/claimRuntimeProjectDirectory.js.map +1 -0
  1011. package/lib/launcher/internal/runtime/commonJsExportNames.d.ts +21 -0
  1012. package/lib/launcher/internal/runtime/commonJsExportNames.js +68 -0
  1013. package/lib/launcher/internal/runtime/commonJsExportNames.js.map +1 -0
  1014. package/lib/launcher/internal/runtime/commonJsImportFacade.d.ts +32 -0
  1015. package/lib/launcher/internal/runtime/commonJsImportFacade.js +56 -0
  1016. package/lib/launcher/internal/runtime/commonJsImportFacade.js.map +1 -0
  1017. package/lib/launcher/internal/runtime/dependencyCacheKey.d.ts +36 -0
  1018. package/lib/launcher/internal/runtime/dependencyCacheKey.js +57 -0
  1019. package/lib/launcher/internal/runtime/dependencyCacheKey.js.map +1 -0
  1020. package/lib/launcher/internal/runtime/dependencyCacheRoot.d.ts +32 -0
  1021. package/lib/launcher/internal/runtime/dependencyCacheRoot.js +98 -0
  1022. package/lib/launcher/internal/runtime/dependencyCacheRoot.js.map +1 -0
  1023. package/lib/launcher/internal/runtime/inspectDependencyBuildLock.d.ts +23 -0
  1024. package/lib/launcher/internal/runtime/inspectDependencyBuildLock.js +126 -0
  1025. package/lib/launcher/internal/runtime/inspectDependencyBuildLock.js.map +1 -0
  1026. package/lib/launcher/internal/runtime/installRuntimeHooks.d.ts +58 -0
  1027. package/lib/launcher/internal/runtime/installRuntimeHooks.js +1988 -0
  1028. package/lib/launcher/internal/runtime/installRuntimeHooks.js.map +1 -0
  1029. package/lib/launcher/internal/runtime/interopProbe.d.ts +8 -0
  1030. package/lib/launcher/internal/runtime/interopProbe.js +3 -0
  1031. package/lib/launcher/internal/runtime/interopProbe.js.map +1 -0
  1032. package/lib/launcher/internal/runtime/isLocalProcessGone.d.ts +33 -0
  1033. package/lib/launcher/internal/runtime/isLocalProcessGone.js +60 -0
  1034. package/lib/launcher/internal/runtime/isLocalProcessGone.js.map +1 -0
  1035. package/lib/launcher/internal/runtime/observeMappedDescriptorResolution.d.ts +28 -0
  1036. package/lib/launcher/internal/runtime/observeMappedDescriptorResolution.js +50 -0
  1037. package/lib/launcher/internal/runtime/observeMappedDescriptorResolution.js.map +1 -0
  1038. package/lib/launcher/internal/runtime/projectModuleOptions.d.ts +16 -0
  1039. package/lib/launcher/internal/runtime/projectModuleOptions.js +28 -0
  1040. package/lib/launcher/internal/runtime/projectModuleOptions.js.map +1 -0
  1041. package/lib/launcher/internal/runtime/readDependencyCache.d.ts +28 -0
  1042. package/lib/launcher/internal/runtime/readDependencyCache.js +83 -0
  1043. package/lib/launcher/internal/runtime/readDependencyCache.js.map +1 -0
  1044. package/lib/launcher/internal/runtime/realPath.d.ts +22 -0
  1045. package/lib/launcher/internal/runtime/realPath.js +37 -0
  1046. package/lib/launcher/internal/runtime/realPath.js.map +1 -0
  1047. package/lib/launcher/internal/runtime/reclaimDependencyBuildLock.d.ts +17 -0
  1048. package/lib/launcher/internal/runtime/reclaimDependencyBuildLock.js +23 -0
  1049. package/lib/launcher/internal/runtime/reclaimDependencyBuildLock.js.map +1 -0
  1050. package/lib/launcher/internal/runtime/releaseDependencyBuildLock.d.ts +17 -0
  1051. package/lib/launcher/internal/runtime/releaseDependencyBuildLock.js +23 -0
  1052. package/lib/launcher/internal/runtime/releaseDependencyBuildLock.js.map +1 -0
  1053. package/lib/launcher/internal/runtime/resolveRuntimeCleanTargets.d.ts +34 -0
  1054. package/lib/launcher/internal/runtime/resolveRuntimeCleanTargets.js +88 -0
  1055. package/lib/launcher/internal/runtime/resolveRuntimeCleanTargets.js.map +1 -0
  1056. package/lib/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.d.ts +20 -0
  1057. package/lib/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.js +30 -0
  1058. package/lib/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.js.map +1 -0
  1059. package/lib/launcher/internal/runtime/runtimeRunKey.d.ts +24 -0
  1060. package/lib/launcher/internal/runtime/runtimeRunKey.js +36 -0
  1061. package/lib/launcher/internal/runtime/runtimeRunKey.js.map +1 -0
  1062. package/lib/launcher/internal/runtime/selectRuntimePluginPolicy.d.ts +21 -0
  1063. package/lib/launcher/internal/runtime/selectRuntimePluginPolicy.js +29 -0
  1064. package/lib/launcher/internal/runtime/selectRuntimePluginPolicy.js.map +1 -0
  1065. package/lib/launcher/internal/runtime/withRuntimeDirectoryLock.d.ts +35 -0
  1066. package/lib/launcher/internal/runtime/withRuntimeDirectoryLock.js +76 -0
  1067. package/lib/launcher/internal/runtime/withRuntimeDirectoryLock.js.map +1 -0
  1068. package/lib/launcher/internal/runtimeCompilerArgs.d.ts +35 -6
  1069. package/lib/launcher/internal/runtimeCompilerArgs.js +87 -58
  1070. package/lib/launcher/internal/runtimeCompilerArgs.js.map +1 -1
  1071. package/lib/launcher/internal/runtimeEmitProfile.d.ts +39 -0
  1072. package/lib/launcher/internal/runtimeEmitProfile.js +56 -0
  1073. package/lib/launcher/internal/runtimeEmitProfile.js.map +1 -0
  1074. package/lib/launcher/internal/runtimeHookPreload.js +4 -4
  1075. package/lib/launcher/internal/runtimeHookPreload.js.map +1 -1
  1076. package/lib/launcher/internal/runtimeOwnerPreload.d.ts +1 -0
  1077. package/lib/launcher/internal/runtimeOwnerPreload.js +43 -0
  1078. package/lib/launcher/internal/runtimeOwnerPreload.js.map +1 -0
  1079. package/lib/launcher/internal/singleRootProjectConfig.d.ts +34 -0
  1080. package/lib/launcher/internal/singleRootProjectConfig.js +39 -0
  1081. package/lib/launcher/internal/singleRootProjectConfig.js.map +1 -0
  1082. package/lib/launcher/internal/ttscserver/ILSPPluginSelectionInputs.d.ts +61 -0
  1083. package/lib/launcher/internal/ttscserver/ILSPPluginSelectionInputs.js +3 -0
  1084. package/lib/launcher/internal/ttscserver/ILSPPluginSelectionInputs.js.map +1 -0
  1085. package/lib/launcher/internal/ttscserver/LSPProjectInputDigest.d.ts +95 -0
  1086. package/lib/launcher/internal/ttscserver/LSPProjectInputDigest.js +270 -0
  1087. package/lib/launcher/internal/ttscserver/LSPProjectInputDigest.js.map +1 -0
  1088. package/lib/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.d.ts +46 -0
  1089. package/lib/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.js +91 -0
  1090. package/lib/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.js.map +1 -0
  1091. package/lib/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.d.ts +21 -0
  1092. package/lib/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.js +39 -0
  1093. package/lib/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.js.map +1 -0
  1094. package/lib/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.d.ts +18 -0
  1095. package/lib/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.js +27 -0
  1096. package/lib/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.js.map +1 -0
  1097. package/lib/launcher/internal/ttscserver/materializeLSPPluginManifest.d.ts +26 -0
  1098. package/lib/launcher/internal/ttscserver/materializeLSPPluginManifest.js +62 -0
  1099. package/lib/launcher/internal/ttscserver/materializeLSPPluginManifest.js.map +1 -0
  1100. package/lib/launcher/internal/ttscserver/needsStdio.d.ts +17 -0
  1101. package/lib/launcher/internal/ttscserver/needsStdio.js +36 -0
  1102. package/lib/launcher/internal/ttscserver/needsStdio.js.map +1 -0
  1103. package/lib/launcher/internal/ttscserver/runTtscserver.d.ts +25 -0
  1104. package/lib/launcher/internal/ttscserver/runTtscserver.js +439 -0
  1105. package/lib/launcher/internal/ttscserver/runTtscserver.js.map +1 -0
  1106. package/lib/launcher/internal/watch/CompilerDirectoryWatchEventPlan.d.ts +29 -0
  1107. package/lib/launcher/internal/watch/CompilerDirectoryWatchEventPlan.js +3 -0
  1108. package/lib/launcher/internal/watch/CompilerDirectoryWatchEventPlan.js.map +1 -0
  1109. package/lib/launcher/internal/watch/DirectoryWatcher.d.ts +44 -0
  1110. package/lib/launcher/internal/watch/DirectoryWatcher.js +3 -0
  1111. package/lib/launcher/internal/watch/DirectoryWatcher.js.map +1 -0
  1112. package/lib/launcher/internal/watch/FseventsStreams.d.ts +87 -0
  1113. package/lib/launcher/internal/watch/FseventsStreams.js +266 -0
  1114. package/lib/launcher/internal/watch/FseventsStreams.js.map +1 -0
  1115. package/lib/launcher/internal/watch/ProjectInputWatchRules.d.ts +92 -0
  1116. package/lib/launcher/internal/watch/ProjectInputWatchRules.js +163 -0
  1117. package/lib/launcher/internal/watch/ProjectInputWatchRules.js.map +1 -0
  1118. package/lib/launcher/internal/watch/WatchInputChange.d.ts +29 -0
  1119. package/lib/launcher/internal/watch/WatchInputChange.js +3 -0
  1120. package/lib/launcher/internal/watch/WatchInputChange.js.map +1 -0
  1121. package/lib/launcher/internal/watch/WatchPaths.d.ts +101 -0
  1122. package/lib/launcher/internal/watch/WatchPaths.js +150 -0
  1123. package/lib/launcher/internal/watch/WatchPaths.js.map +1 -0
  1124. package/lib/launcher/internal/watch/WatchTopology.d.ts +384 -0
  1125. package/lib/launcher/internal/{watchTopology.js → watch/WatchTopology.js} +726 -799
  1126. package/lib/launcher/internal/watch/WatchTopology.js.map +1 -0
  1127. package/lib/launcher/internal/watch/literalGlobRoot.d.ts +22 -0
  1128. package/lib/launcher/internal/watch/literalGlobRoot.js +45 -0
  1129. package/lib/launcher/internal/watch/literalGlobRoot.js.map +1 -0
  1130. package/lib/launcher/internal/watch/planCompilerDirectoryWatchEvent.d.ts +40 -0
  1131. package/lib/launcher/internal/watch/planCompilerDirectoryWatchEvent.js +69 -0
  1132. package/lib/launcher/internal/watch/planCompilerDirectoryWatchEvent.js.map +1 -0
  1133. package/lib/launcher/internal/watch/projectInputActiveWatchDirectories.d.ts +19 -0
  1134. package/lib/launcher/internal/watch/projectInputActiveWatchDirectories.js +52 -0
  1135. package/lib/launcher/internal/watch/projectInputActiveWatchDirectories.js.map +1 -0
  1136. package/lib/launcher/internal/watch/projectInputAvailableWatchDirectory.d.ts +21 -0
  1137. package/lib/launcher/internal/watch/projectInputAvailableWatchDirectory.js +55 -0
  1138. package/lib/launcher/internal/watch/projectInputAvailableWatchDirectory.js.map +1 -0
  1139. package/lib/launcher/internal/watch/projectInputEventShouldNotify.d.ts +21 -0
  1140. package/lib/launcher/internal/watch/projectInputEventShouldNotify.js +23 -0
  1141. package/lib/launcher/internal/watch/projectInputEventShouldNotify.js.map +1 -0
  1142. package/lib/launcher/internal/watch/projectInputMembershipInvalidatesProgram.d.ts +27 -0
  1143. package/lib/launcher/internal/watch/projectInputMembershipInvalidatesProgram.js +54 -0
  1144. package/lib/launcher/internal/watch/projectInputMembershipInvalidatesProgram.js.map +1 -0
  1145. package/lib/launcher/internal/watch/projectInputReloadEventShouldNotify.d.ts +26 -0
  1146. package/lib/launcher/internal/watch/projectInputReloadEventShouldNotify.js +100 -0
  1147. package/lib/launcher/internal/watch/projectInputReloadEventShouldNotify.js.map +1 -0
  1148. package/lib/launcher/internal/watch/projectInputReplacementStrandsWatchers.d.ts +37 -0
  1149. package/lib/launcher/internal/watch/projectInputReplacementStrandsWatchers.js +54 -0
  1150. package/lib/launcher/internal/watch/projectInputReplacementStrandsWatchers.js.map +1 -0
  1151. package/lib/launcher/internal/watch/projectInputTopologyMayAffect.d.ts +23 -0
  1152. package/lib/launcher/internal/watch/projectInputTopologyMayAffect.js +67 -0
  1153. package/lib/launcher/internal/watch/projectInputTopologyMayAffect.js.map +1 -0
  1154. package/lib/launcher/internal/watch/projectInputWatchDirectories.d.ts +22 -0
  1155. package/lib/launcher/internal/watch/projectInputWatchDirectories.js +30 -0
  1156. package/lib/launcher/internal/watch/projectInputWatchDirectories.js.map +1 -0
  1157. package/lib/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.d.ts +22 -0
  1158. package/lib/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.js +45 -0
  1159. package/lib/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.js.map +1 -0
  1160. package/lib/launcher/internal/watch/syncWatchers.d.ts +25 -0
  1161. package/lib/launcher/internal/watch/syncWatchers.js +61 -0
  1162. package/lib/launcher/internal/watch/syncWatchers.js.map +1 -0
  1163. package/lib/launcher/internal/watch/watchDirectory.d.ts +28 -0
  1164. package/lib/launcher/internal/watch/watchDirectory.js +46 -0
  1165. package/lib/launcher/internal/watch/watchDirectory.js.map +1 -0
  1166. package/lib/launcher/internal/watch/watchDirectoryThroughFsWatch.d.ts +28 -0
  1167. package/lib/launcher/internal/watch/watchDirectoryThroughFsWatch.js +38 -0
  1168. package/lib/launcher/internal/watch/watchDirectoryThroughFsWatch.js.map +1 -0
  1169. package/lib/launcher/ttscserver.js +1 -1
  1170. package/lib/launcher/ttscserver.js.map +1 -1
  1171. package/lib/launcher/ttsx.js +2 -3
  1172. package/lib/launcher/ttsx.js.map +1 -1
  1173. package/lib/plugin/CapabilityPluginResolver.d.ts +140 -0
  1174. package/lib/plugin/CapabilityPluginResolver.js +400 -0
  1175. package/lib/plugin/CapabilityPluginResolver.js.map +1 -0
  1176. package/lib/plugin/ITtscCapabilityPlugin.d.ts +87 -0
  1177. package/lib/plugin/ITtscCapabilityPlugin.js +3 -0
  1178. package/lib/plugin/ITtscCapabilityPlugin.js.map +1 -0
  1179. package/lib/plugin/internal/CapabilityPluginResult.d.ts +66 -0
  1180. package/lib/plugin/internal/CapabilityPluginResult.js +86 -0
  1181. package/lib/plugin/internal/CapabilityPluginResult.js.map +1 -0
  1182. package/lib/plugin/internal/CapabilityResolutionFormat.d.ts +114 -0
  1183. package/lib/plugin/internal/CapabilityResolutionFormat.js +229 -0
  1184. package/lib/plugin/internal/CapabilityResolutionFormat.js.map +1 -0
  1185. package/lib/plugin/internal/ITtscCapabilityPluginSource.d.ts +35 -0
  1186. package/lib/plugin/internal/ITtscCapabilityPluginSource.js +3 -0
  1187. package/lib/plugin/internal/ITtscCapabilityPluginSource.js.map +1 -0
  1188. package/lib/plugin/internal/ITtscCapabilityResolutionEntry.d.ts +49 -0
  1189. package/lib/plugin/internal/ITtscCapabilityResolutionEntry.js +3 -0
  1190. package/lib/plugin/internal/ITtscCapabilityResolutionEntry.js.map +1 -0
  1191. package/lib/plugin/internal/ITtscCapabilityResolutionPlugin.d.ts +21 -0
  1192. package/lib/plugin/internal/ITtscCapabilityResolutionPlugin.js +3 -0
  1193. package/lib/plugin/internal/ITtscCapabilityResolutionPlugin.js.map +1 -0
  1194. package/lib/plugin/internal/capabilityPluginWorker.d.ts +1 -0
  1195. package/lib/plugin/internal/capabilityPluginWorker.js +178 -0
  1196. package/lib/plugin/internal/capabilityPluginWorker.js.map +1 -0
  1197. package/lib/plugin/internal/decodeCapabilityCommandReply.d.ts +23 -0
  1198. package/lib/plugin/internal/decodeCapabilityCommandReply.js +25 -0
  1199. package/lib/plugin/internal/decodeCapabilityCommandReply.js.map +1 -0
  1200. package/lib/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.d.ts +15 -0
  1201. package/lib/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.js +182 -0
  1202. package/lib/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.js.map +1 -0
  1203. package/lib/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.d.ts +11 -0
  1204. package/lib/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.js +62 -0
  1205. package/lib/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.js.map +1 -0
  1206. package/lib/plugin/internal/load/PluginDescriptorAdmission.d.ts +46 -0
  1207. package/lib/plugin/internal/load/PluginDescriptorAdmission.js +72 -0
  1208. package/lib/plugin/internal/load/PluginDescriptorAdmission.js.map +1 -0
  1209. package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.d.ts +154 -0
  1210. package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.js +317 -0
  1211. package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.js.map +1 -0
  1212. package/lib/plugin/internal/load/PluginPackageResolution.d.ts +208 -0
  1213. package/lib/plugin/internal/load/PluginPackageResolution.js +593 -0
  1214. package/lib/plugin/internal/load/PluginPackageResolution.js.map +1 -0
  1215. package/lib/plugin/internal/load/ProjectPluginEntries.d.ts +60 -0
  1216. package/lib/plugin/internal/load/ProjectPluginEntries.js +164 -0
  1217. package/lib/plugin/internal/load/ProjectPluginEntries.js.map +1 -0
  1218. package/lib/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.d.ts +13 -0
  1219. package/lib/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.js +21 -0
  1220. package/lib/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.js.map +1 -0
  1221. package/lib/plugin/internal/load/collectProjectHostInputs.d.ts +16 -0
  1222. package/lib/plugin/internal/load/collectProjectHostInputs.js +66 -0
  1223. package/lib/plugin/internal/load/collectProjectHostInputs.js.map +1 -0
  1224. package/lib/plugin/internal/load/composePluginSources.d.ts +20 -0
  1225. package/lib/plugin/internal/load/composePluginSources.js +95 -0
  1226. package/lib/plugin/internal/load/composePluginSources.js.map +1 -0
  1227. package/lib/plugin/internal/load/declaresHostInputReads.d.ts +24 -0
  1228. package/lib/plugin/internal/load/declaresHostInputReads.js +48 -0
  1229. package/lib/plugin/internal/load/declaresHostInputReads.js.map +1 -0
  1230. package/lib/plugin/internal/load/hasProjectPluginEntries.d.ts +21 -0
  1231. package/lib/plugin/internal/load/hasProjectPluginEntries.js +29 -0
  1232. package/lib/plugin/internal/load/hasProjectPluginEntries.js.map +1 -0
  1233. package/lib/plugin/internal/load/hashHostInputPaths.d.ts +17 -0
  1234. package/lib/plugin/internal/load/hashHostInputPaths.js +46 -0
  1235. package/lib/plugin/internal/load/hashHostInputPaths.js.map +1 -0
  1236. package/lib/plugin/internal/load/isRelativePluginSpecifier.d.ts +22 -0
  1237. package/lib/plugin/internal/load/isRelativePluginSpecifier.js +33 -0
  1238. package/lib/plugin/internal/load/isRelativePluginSpecifier.js.map +1 -0
  1239. package/lib/plugin/internal/load/loadProjectPlugins.d.ts +113 -0
  1240. package/lib/plugin/internal/load/loadProjectPlugins.js +1615 -0
  1241. package/lib/plugin/internal/load/loadProjectPlugins.js.map +1 -0
  1242. package/lib/plugin/internal/load/moduleResolutionBaseSelects.d.ts +42 -0
  1243. package/lib/plugin/internal/load/moduleResolutionBaseSelects.js +51 -0
  1244. package/lib/plugin/internal/load/moduleResolutionBaseSelects.js.map +1 -0
  1245. package/lib/plugin/internal/load/observeImportSearchRoots.d.ts +29 -0
  1246. package/lib/plugin/internal/load/observeImportSearchRoots.js +38 -0
  1247. package/lib/plugin/internal/load/observeImportSearchRoots.js.map +1 -0
  1248. package/lib/plugin/internal/load/pluginLabel.d.ts +15 -0
  1249. package/lib/plugin/internal/load/pluginLabel.js +25 -0
  1250. package/lib/plugin/internal/load/pluginLabel.js.map +1 -0
  1251. package/lib/plugin/internal/load/realpathHostInput.d.ts +14 -0
  1252. package/lib/plugin/internal/load/realpathHostInput.js +29 -0
  1253. package/lib/plugin/internal/load/realpathHostInput.js.map +1 -0
  1254. package/lib/plugin/internal/load/realpathHostInputPaths.d.ts +17 -0
  1255. package/lib/plugin/internal/load/realpathHostInputPaths.js +28 -0
  1256. package/lib/plugin/internal/load/realpathHostInputPaths.js.map +1 -0
  1257. package/lib/plugin/internal/load/rejectJsTransformFunctions.d.ts +13 -0
  1258. package/lib/plugin/internal/load/rejectJsTransformFunctions.js +22 -0
  1259. package/lib/plugin/internal/load/rejectJsTransformFunctions.js.map +1 -0
  1260. package/lib/plugin/internal/load/requirePluginSource.d.ts +14 -0
  1261. package/lib/plugin/internal/load/requirePluginSource.js +38 -0
  1262. package/lib/plugin/internal/load/requirePluginSource.js.map +1 -0
  1263. package/lib/plugin/internal/load/resolveNativeSource.d.ts +29 -0
  1264. package/lib/plugin/internal/load/resolveNativeSource.js +37 -0
  1265. package/lib/plugin/internal/load/resolveNativeSource.js.map +1 -0
  1266. package/lib/plugin/internal/load/validatePluginContributors.d.ts +22 -0
  1267. package/lib/plugin/internal/load/validatePluginContributors.js +86 -0
  1268. package/lib/plugin/internal/load/validatePluginContributors.js.map +1 -0
  1269. package/lib/plugin/internal/load/validatePluginSource.d.ts +14 -0
  1270. package/lib/plugin/internal/load/validatePluginSource.js +21 -0
  1271. package/lib/plugin/internal/load/validatePluginSource.js.map +1 -0
  1272. package/lib/plugin/internal/load/visitImportMappedCandidates.d.ts +36 -0
  1273. package/lib/plugin/internal/load/visitImportMappedCandidates.js +45 -0
  1274. package/lib/plugin/internal/load/visitImportMappedCandidates.js.map +1 -0
  1275. package/lib/plugin/internal/pluginDescriptorFailureReason.d.ts +23 -0
  1276. package/lib/plugin/internal/pluginDescriptorFailureReason.js +43 -0
  1277. package/lib/plugin/internal/pluginDescriptorFailureReason.js.map +1 -0
  1278. package/lib/plugin/internal/pluginDescriptorProcessFailure.d.ts +28 -0
  1279. package/lib/plugin/internal/pluginDescriptorProcessFailure.js +37 -0
  1280. package/lib/plugin/internal/pluginDescriptorProcessFailure.js.map +1 -0
  1281. package/lib/plugin/internal/readCapabilityResolution.d.ts +42 -0
  1282. package/lib/plugin/internal/readCapabilityResolution.js +158 -0
  1283. package/lib/plugin/internal/readCapabilityResolution.js.map +1 -0
  1284. package/lib/plugin/internal/receiveCapabilityFailure.d.ts +21 -0
  1285. package/lib/plugin/internal/receiveCapabilityFailure.js +28 -0
  1286. package/lib/plugin/internal/receiveCapabilityFailure.js.map +1 -0
  1287. package/lib/plugin/internal/source/CachePrunePolicy.d.ts +42 -0
  1288. package/lib/plugin/internal/source/CachePrunePolicy.js +47 -0
  1289. package/lib/plugin/internal/source/CachePrunePolicy.js.map +1 -0
  1290. package/lib/plugin/internal/source/GoBuildCacheCoordination.d.ts +159 -0
  1291. package/lib/plugin/internal/source/GoBuildCacheCoordination.js +475 -0
  1292. package/lib/plugin/internal/source/GoBuildCacheCoordination.js.map +1 -0
  1293. package/lib/plugin/internal/source/GoSourceInputs.d.ts +124 -0
  1294. package/lib/plugin/internal/source/GoSourceInputs.js +180 -0
  1295. package/lib/plugin/internal/source/GoSourceInputs.js.map +1 -0
  1296. package/lib/plugin/internal/source/GoToolResolution.d.ts +125 -0
  1297. package/lib/plugin/internal/source/GoToolResolution.js +278 -0
  1298. package/lib/plugin/internal/source/GoToolResolution.js.map +1 -0
  1299. package/lib/plugin/internal/source/IGoBuildCachePruneOptions.d.ts +30 -0
  1300. package/lib/plugin/internal/source/IGoBuildCachePruneOptions.js +3 -0
  1301. package/lib/plugin/internal/source/IGoBuildCachePruneOptions.js.map +1 -0
  1302. package/lib/plugin/internal/source/IPluginCachePruneOptions.d.ts +33 -0
  1303. package/lib/plugin/internal/source/IPluginCachePruneOptions.js +3 -0
  1304. package/lib/plugin/internal/source/IPluginCachePruneOptions.js.map +1 -0
  1305. package/lib/plugin/internal/source/IPluginModuleReplaceDirectory.d.ts +27 -0
  1306. package/lib/plugin/internal/source/IPluginModuleReplaceDirectory.js +3 -0
  1307. package/lib/plugin/internal/source/IPluginModuleReplaceDirectory.js.map +1 -0
  1308. package/lib/plugin/internal/source/ITtscBuildContributor.d.ts +18 -0
  1309. package/lib/plugin/internal/source/ITtscBuildContributor.js +3 -0
  1310. package/lib/plugin/internal/source/ITtscBuildContributor.js.map +1 -0
  1311. package/lib/plugin/internal/source/ITtscSourceBuildCachePaths.d.ts +25 -0
  1312. package/lib/plugin/internal/source/ITtscSourceBuildCachePaths.js +3 -0
  1313. package/lib/plugin/internal/source/ITtscSourceBuildCachePaths.js.map +1 -0
  1314. package/lib/plugin/internal/source/NativeSourcePackages.d.ts +155 -0
  1315. package/lib/plugin/internal/source/NativeSourcePackages.js +317 -0
  1316. package/lib/plugin/internal/source/NativeSourcePackages.js.map +1 -0
  1317. package/lib/plugin/internal/source/PluginBinaryUse.d.ts +66 -0
  1318. package/lib/plugin/internal/source/PluginBinaryUse.js +163 -0
  1319. package/lib/plugin/internal/source/PluginBinaryUse.js.map +1 -0
  1320. package/lib/plugin/internal/source/PluginBinaryWaitResult.d.ts +34 -0
  1321. package/lib/plugin/internal/source/PluginBinaryWaitResult.js +3 -0
  1322. package/lib/plugin/internal/source/PluginBinaryWaitResult.js.map +1 -0
  1323. package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.d.ts +90 -0
  1324. package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js +207 -0
  1325. package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js.map +1 -0
  1326. package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.d.ts +128 -0
  1327. package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.js +209 -0
  1328. package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.js.map +1 -0
  1329. package/lib/plugin/internal/source/PluginBuildLockFence.d.ts +25 -0
  1330. package/lib/plugin/internal/source/PluginBuildLockFence.js +3 -0
  1331. package/lib/plugin/internal/source/PluginBuildLockFence.js.map +1 -0
  1332. package/lib/plugin/internal/source/PluginBuildLockLease.d.ts +29 -0
  1333. package/lib/plugin/internal/source/PluginBuildLockLease.js +3 -0
  1334. package/lib/plugin/internal/source/PluginBuildLockLease.js.map +1 -0
  1335. package/lib/plugin/internal/source/PluginBuildLockObservation.d.ts +42 -0
  1336. package/lib/plugin/internal/source/PluginBuildLockObservation.js +3 -0
  1337. package/lib/plugin/internal/source/PluginBuildLockObservation.js.map +1 -0
  1338. package/lib/plugin/internal/source/PluginBuildLockOwner.d.ts +126 -0
  1339. package/lib/plugin/internal/source/PluginBuildLockOwner.js +165 -0
  1340. package/lib/plugin/internal/source/PluginBuildLockOwner.js.map +1 -0
  1341. package/lib/plugin/internal/source/PluginBuildLockProtocol.d.ts +234 -0
  1342. package/lib/plugin/internal/source/PluginBuildLockProtocol.js +287 -0
  1343. package/lib/plugin/internal/source/PluginBuildLockProtocol.js.map +1 -0
  1344. package/lib/plugin/internal/source/SourceBuildCacheLayout.d.ts +183 -0
  1345. package/lib/plugin/internal/source/SourceBuildCacheLayout.js +291 -0
  1346. package/lib/plugin/internal/source/SourceBuildCacheLayout.js.map +1 -0
  1347. package/lib/plugin/internal/source/SourceBuildFilesystemOperations.d.ts +32 -0
  1348. package/lib/plugin/internal/source/SourceBuildFilesystemOperations.js +3 -0
  1349. package/lib/plugin/internal/source/SourceBuildFilesystemOperations.js.map +1 -0
  1350. package/lib/plugin/internal/source/SourcePluginAdmission.d.ts +80 -0
  1351. package/lib/plugin/internal/source/SourcePluginAdmission.js +114 -0
  1352. package/lib/plugin/internal/source/SourcePluginAdmission.js.map +1 -0
  1353. package/lib/plugin/internal/source/SourcePluginWorkspace.d.ts +122 -0
  1354. package/lib/plugin/internal/source/SourcePluginWorkspace.js +307 -0
  1355. package/lib/plugin/internal/source/SourcePluginWorkspace.js.map +1 -0
  1356. package/lib/plugin/internal/source/acquirePluginBuildLock.d.ts +35 -0
  1357. package/lib/plugin/internal/source/acquirePluginBuildLock.js +176 -0
  1358. package/lib/plugin/internal/source/acquirePluginBuildLock.js.map +1 -0
  1359. package/lib/plugin/internal/source/autoQuoteGoModToken.d.ts +24 -0
  1360. package/lib/plugin/internal/source/autoQuoteGoModToken.js +110 -0
  1361. package/lib/plugin/internal/source/autoQuoteGoModToken.js.map +1 -0
  1362. package/lib/plugin/internal/source/buildSourcePlugin.d.ts +86 -0
  1363. package/lib/plugin/internal/source/buildSourcePlugin.js +857 -0
  1364. package/lib/plugin/internal/source/buildSourcePlugin.js.map +1 -0
  1365. package/lib/plugin/internal/source/collectPluginSourceDirectories.d.ts +30 -0
  1366. package/lib/plugin/internal/source/collectPluginSourceDirectories.js +77 -0
  1367. package/lib/plugin/internal/source/collectPluginSourceDirectories.js.map +1 -0
  1368. package/lib/plugin/internal/source/collectPluginSourceFiles.d.ts +40 -0
  1369. package/lib/plugin/internal/source/collectPluginSourceFiles.js +95 -0
  1370. package/lib/plugin/internal/source/collectPluginSourceFiles.js.map +1 -0
  1371. package/lib/plugin/internal/source/computeCacheKey.d.ts +73 -0
  1372. package/lib/plugin/internal/source/computeCacheKey.js +113 -0
  1373. package/lib/plugin/internal/source/computeCacheKey.js.map +1 -0
  1374. package/lib/plugin/internal/source/copiesPluginSourceEntry.d.ts +33 -0
  1375. package/lib/plugin/internal/source/copiesPluginSourceEntry.js +57 -0
  1376. package/lib/plugin/internal/source/copiesPluginSourceEntry.js.map +1 -0
  1377. package/lib/plugin/internal/source/createExternalSourceSnapshotLayout.d.ts +22 -0
  1378. package/lib/plugin/internal/source/createExternalSourceSnapshotLayout.js +60 -0
  1379. package/lib/plugin/internal/source/createExternalSourceSnapshotLayout.js.map +1 -0
  1380. package/lib/plugin/internal/source/ensureExecutableGoToolchain.d.ts +25 -0
  1381. package/lib/plugin/internal/source/ensureExecutableGoToolchain.js +96 -0
  1382. package/lib/plugin/internal/source/ensureExecutableGoToolchain.js.map +1 -0
  1383. package/lib/plugin/internal/source/formatDuration.d.ts +18 -0
  1384. package/lib/plugin/internal/source/formatDuration.js +36 -0
  1385. package/lib/plugin/internal/source/formatDuration.js.map +1 -0
  1386. package/lib/plugin/internal/source/formatGoWorkPath.d.ts +35 -0
  1387. package/lib/plugin/internal/source/formatGoWorkPath.js +42 -0
  1388. package/lib/plugin/internal/source/formatGoWorkPath.js.map +1 -0
  1389. package/lib/plugin/internal/source/hashPluginBuildEnvironment.d.ts +47 -0
  1390. package/lib/plugin/internal/source/hashPluginBuildEnvironment.js +663 -0
  1391. package/lib/plugin/internal/source/hashPluginBuildEnvironment.js.map +1 -0
  1392. package/lib/plugin/internal/source/inspectPluginBuildLock.d.ts +29 -0
  1393. package/lib/plugin/internal/source/inspectPluginBuildLock.js +285 -0
  1394. package/lib/plugin/internal/source/inspectPluginBuildLock.js.map +1 -0
  1395. package/lib/plugin/internal/source/isPathWithin.d.ts +16 -0
  1396. package/lib/plugin/internal/source/isPathWithin.js +28 -0
  1397. package/lib/plugin/internal/source/isPathWithin.js.map +1 -0
  1398. package/lib/plugin/internal/source/legacyGlobalCacheTargets.d.ts +24 -0
  1399. package/lib/plugin/internal/source/legacyGlobalCacheTargets.js +60 -0
  1400. package/lib/plugin/internal/source/legacyGlobalCacheTargets.js.map +1 -0
  1401. package/lib/plugin/internal/source/pluginBuildEnvironment.d.ts +31 -0
  1402. package/lib/plugin/internal/source/pluginBuildEnvironment.js +47 -0
  1403. package/lib/plugin/internal/source/pluginBuildEnvironment.js.map +1 -0
  1404. package/lib/plugin/internal/source/pluginBuildEnvironmentWorker.d.ts +1 -0
  1405. package/lib/plugin/internal/source/pluginBuildEnvironmentWorker.js +24 -0
  1406. package/lib/plugin/internal/source/pluginBuildEnvironmentWorker.js.map +1 -0
  1407. package/lib/plugin/internal/source/pluginBuildVersions.d.ts +31 -0
  1408. package/lib/plugin/internal/source/pluginBuildVersions.js +65 -0
  1409. package/lib/plugin/internal/source/pluginBuildVersions.js.map +1 -0
  1410. package/lib/plugin/internal/source/pluginModuleReplaceDirectories.d.ts +40 -0
  1411. package/lib/plugin/internal/source/pluginModuleReplaceDirectories.js +81 -0
  1412. package/lib/plugin/internal/source/pluginModuleReplaceDirectories.js.map +1 -0
  1413. package/lib/plugin/internal/source/pluginSourceCovers.d.ts +32 -0
  1414. package/lib/plugin/internal/source/pluginSourceCovers.js +54 -0
  1415. package/lib/plugin/internal/source/pluginSourceCovers.js.map +1 -0
  1416. package/lib/plugin/internal/source/pluginSourceDigest.d.ts +40 -0
  1417. package/lib/plugin/internal/source/pluginSourceDigest.js +60 -0
  1418. package/lib/plugin/internal/source/pluginSourceDigest.js.map +1 -0
  1419. package/lib/plugin/internal/source/pluginSourceFilesSignature.d.ts +38 -0
  1420. package/lib/plugin/internal/source/pluginSourceFilesSignature.js +53 -0
  1421. package/lib/plugin/internal/source/pluginSourceFilesSignature.js.map +1 -0
  1422. package/lib/plugin/internal/source/pluginSourceState.d.ts +47 -0
  1423. package/lib/plugin/internal/source/pluginSourceState.js +63 -0
  1424. package/lib/plugin/internal/source/pluginSourceState.js.map +1 -0
  1425. package/lib/plugin/internal/source/pluginSourceStateHolds.d.ts +34 -0
  1426. package/lib/plugin/internal/source/pluginSourceStateHolds.js +45 -0
  1427. package/lib/plugin/internal/source/pluginSourceStateHolds.js.map +1 -0
  1428. package/lib/plugin/internal/source/processPluginBuildEnvironment.d.ts +33 -0
  1429. package/lib/plugin/internal/source/processPluginBuildEnvironment.js +40 -0
  1430. package/lib/plugin/internal/source/processPluginBuildEnvironment.js.map +1 -0
  1431. package/lib/plugin/internal/source/pruneCacheFileRoot.d.ts +34 -0
  1432. package/lib/plugin/internal/source/pruneCacheFileRoot.js +120 -0
  1433. package/lib/plugin/internal/source/pruneCacheFileRoot.js.map +1 -0
  1434. package/lib/plugin/internal/source/pruneGoBuildCacheRoot.d.ts +28 -0
  1435. package/lib/plugin/internal/source/pruneGoBuildCacheRoot.js +185 -0
  1436. package/lib/plugin/internal/source/pruneGoBuildCacheRoot.js.map +1 -0
  1437. package/lib/plugin/internal/source/prunePluginCacheRoot.d.ts +46 -0
  1438. package/lib/plugin/internal/source/prunePluginCacheRoot.js +446 -0
  1439. package/lib/plugin/internal/source/prunePluginCacheRoot.js.map +1 -0
  1440. package/lib/plugin/internal/source/prunesPluginSourceDirectory.d.ts +21 -0
  1441. package/lib/plugin/internal/source/prunesPluginSourceDirectory.js +28 -0
  1442. package/lib/plugin/internal/source/prunesPluginSourceDirectory.js.map +1 -0
  1443. package/lib/plugin/internal/source/reclaimPluginBuildLock.d.ts +23 -0
  1444. package/lib/plugin/internal/source/reclaimPluginBuildLock.js +48 -0
  1445. package/lib/plugin/internal/source/reclaimPluginBuildLock.js.map +1 -0
  1446. package/lib/plugin/internal/source/recordCacheFileUse.d.ts +22 -0
  1447. package/lib/plugin/internal/source/recordCacheFileUse.js +43 -0
  1448. package/lib/plugin/internal/source/recordCacheFileUse.js.map +1 -0
  1449. package/lib/plugin/internal/source/releasePluginBuildLock.d.ts +33 -0
  1450. package/lib/plugin/internal/source/releasePluginBuildLock.js +100 -0
  1451. package/lib/plugin/internal/source/releasePluginBuildLock.js.map +1 -0
  1452. package/lib/plugin/internal/source/resolveCleanTargets.d.ts +26 -0
  1453. package/lib/plugin/internal/source/resolveCleanTargets.js +73 -0
  1454. package/lib/plugin/internal/source/resolveCleanTargets.js.map +1 -0
  1455. package/lib/plugin/internal/source/resolveGoCompiler.d.ts +29 -0
  1456. package/lib/plugin/internal/source/resolveGoCompiler.js +62 -0
  1457. package/lib/plugin/internal/source/resolveGoCompiler.js.map +1 -0
  1458. package/lib/plugin/internal/source/resolvePluginCacheRoot.d.ts +21 -0
  1459. package/lib/plugin/internal/source/resolvePluginCacheRoot.js +31 -0
  1460. package/lib/plugin/internal/source/resolvePluginCacheRoot.js.map +1 -0
  1461. package/lib/plugin/internal/source/resolvePluginGoModule.d.ts +34 -0
  1462. package/lib/plugin/internal/source/resolvePluginGoModule.js +65 -0
  1463. package/lib/plugin/internal/source/resolvePluginGoModule.js.map +1 -0
  1464. package/lib/plugin/internal/source/resolveSourceBuildCachePaths.d.ts +21 -0
  1465. package/lib/plugin/internal/source/resolveSourceBuildCachePaths.js +236 -0
  1466. package/lib/plugin/internal/source/resolveSourceBuildCachePaths.js.map +1 -0
  1467. package/lib/plugin/internal/source/selectPluginModuleReplaceDirectories.d.ts +29 -0
  1468. package/lib/plugin/internal/source/selectPluginModuleReplaceDirectories.js +68 -0
  1469. package/lib/plugin/internal/source/selectPluginModuleReplaceDirectories.js.map +1 -0
  1470. package/lib/plugin/internal/source/spawnGoTool.d.ts +22 -0
  1471. package/lib/plugin/internal/source/spawnGoTool.js +164 -0
  1472. package/lib/plugin/internal/source/spawnGoTool.js.map +1 -0
  1473. package/lib/plugin/internal/source/touchPluginCacheEntryInUse.d.ts +27 -0
  1474. package/lib/plugin/internal/source/touchPluginCacheEntryInUse.js +48 -0
  1475. package/lib/plugin/internal/source/touchPluginCacheEntryInUse.js.map +1 -0
  1476. package/lib/plugin/internal/source/waitForPluginBinary.d.ts +36 -0
  1477. package/lib/plugin/internal/source/waitForPluginBinary.js +94 -0
  1478. package/lib/plugin/internal/source/waitForPluginBinary.js.map +1 -0
  1479. package/lib/plugin/internal/source/windowsGoCommandArgs.d.ts +17 -0
  1480. package/lib/plugin/internal/source/windowsGoCommandArgs.js +23 -0
  1481. package/lib/plugin/internal/source/windowsGoCommandArgs.js.map +1 -0
  1482. package/lib/plugin/internal/source/withGoBuildCacheLease.d.ts +37 -0
  1483. package/lib/plugin/internal/source/withGoBuildCacheLease.js +87 -0
  1484. package/lib/plugin/internal/source/withGoBuildCacheLease.js.map +1 -0
  1485. package/lib/plugin/internal/writeCapabilityResolution.d.ts +80 -0
  1486. package/lib/plugin/internal/writeCapabilityResolution.js +196 -0
  1487. package/lib/plugin/internal/writeCapabilityResolution.js.map +1 -0
  1488. package/lib/plugin/resolveCapabilityPlugins.d.ts +53 -32
  1489. package/lib/plugin/resolveCapabilityPlugins.js +209 -38
  1490. package/lib/plugin/resolveCapabilityPlugins.js.map +1 -1
  1491. package/lib/register.js +20 -5
  1492. package/lib/register.js.map +1 -1
  1493. package/lib/structures/ITtscCompilerContext.d.ts +29 -11
  1494. package/lib/structures/ITtscCompilerDiagnostic.d.ts +24 -7
  1495. package/lib/structures/ITtscCompilerResult.d.ts +75 -25
  1496. package/lib/structures/ITtscCompilerTransformation.d.ts +287 -64
  1497. package/lib/structures/ITtscPlugin.d.ts +24 -8
  1498. package/lib/structures/ITtscPluginCapabilities.d.ts +55 -5
  1499. package/lib/structures/ITtscPluginContributor.d.ts +19 -8
  1500. package/lib/structures/ITtscPluginFactoryContext.d.ts +12 -3
  1501. package/lib/structures/ITtscProjectPluginConfig.d.ts +35 -10
  1502. package/lib/structures/TtscPluginStage.d.ts +9 -0
  1503. package/lib/structures/internal/ITtscLoadedNativePlugin.d.ts +19 -5
  1504. package/lib/structures/internal/ITtscParsedProjectConfig.d.ts +29 -3
  1505. package/lib/structures/internal/ITtscProjectIdentity.d.ts +21 -6
  1506. package/lib/structures/internal/ITtscProjectInputSnapshot.d.ts +23 -8
  1507. package/lib/structures/internal/ITtscProjectLocatorOptions.d.ts +18 -4
  1508. package/lib/structures/internal/TtscBuildOptions.d.ts +33 -14
  1509. package/lib/structures/internal/TtscBuildResult.d.ts +63 -4
  1510. package/lib/structures/internal/TtscCommonOptions.d.ts +47 -14
  1511. package/lib/structures/internal/TtscSingleFileEmitOptions.d.ts +46 -5
  1512. package/package.json +26 -12
  1513. package/shim/ast/enums_gen.go +4 -2
  1514. package/shim/ast/go.mod +5 -5
  1515. package/shim/ast/go.sum +10 -10
  1516. package/shim/ast/lint.go +1088 -20
  1517. package/shim/ast/parent.go +38 -22
  1518. package/shim/ast/safe_text.go +48 -26
  1519. package/shim/ast/shim.go +1307 -20
  1520. package/shim/ast/test/next_jsdoc_comment_location_reaches_variable_statement_test.go +51 -0
  1521. package/shim/ast/test/node_text_joins_multi_hop_qualified_name_test.go +24 -9
  1522. package/shim/ast/test/node_text_joins_one_hop_qualified_name_test.go +9 -5
  1523. package/shim/ast/test/node_text_returns_empty_for_nil_test.go +13 -5
  1524. package/shim/ast/test/node_text_returns_identifier_text_test.go +12 -5
  1525. package/shim/ast/test/node_text_skips_empty_qualified_left_test.go +35 -5
  1526. package/shim/astnav/go.mod +5 -5
  1527. package/shim/astnav/go.sum +12 -10
  1528. package/shim/astnav/shim.go +9 -0
  1529. package/shim/bundled/go.mod +7 -1
  1530. package/shim/bundled/go.sum +12 -0
  1531. package/shim/checker/enums_gen.go +4 -2
  1532. package/shim/checker/extra-shim.json +6 -0
  1533. package/shim/checker/go.mod +5 -5
  1534. package/shim/checker/go.sum +10 -10
  1535. package/shim/checker/node_builder_fields_gen.go +19 -0
  1536. package/shim/checker/shim.go +827 -114
  1537. package/shim/compiler/emit_sourcemap.go +68 -29
  1538. package/shim/compiler/emitassemble.go +36 -2
  1539. package/shim/compiler/emithook.go +13 -3
  1540. package/shim/compiler/go.mod +5 -5
  1541. package/shim/compiler/go.sum +10 -10
  1542. package/shim/compiler/incremental.go +56 -20
  1543. package/shim/compiler/resolution.go +92 -9
  1544. package/shim/core/enums_gen.go +2 -2
  1545. package/shim/core/go.mod +6 -1
  1546. package/shim/core/go.sum +10 -0
  1547. package/shim/core/modulekind.go +9 -0
  1548. package/shim/core/shim.go +157 -6
  1549. package/shim/diagnosticwriter/go.mod +10 -1
  1550. package/shim/diagnosticwriter/go.sum +20 -0
  1551. package/shim/diagnosticwriter/lint.go +188 -10
  1552. package/shim/diagnosticwriter/shim.go +14 -0
  1553. package/shim/lsp/go.mod +5 -5
  1554. package/shim/lsp/go.sum +10 -10
  1555. package/shim/lsp/shim.go +78 -2
  1556. package/shim/parser/go.mod +10 -1
  1557. package/shim/parser/go.sum +22 -0
  1558. package/shim/printer/emithost.go +46 -1
  1559. package/shim/printer/go.mod +5 -5
  1560. package/shim/printer/go.sum +10 -10
  1561. package/shim/printer/shim.go +114 -7
  1562. package/shim/printer/sourcemap.go +55 -0
  1563. package/shim/scanner/go.mod +10 -1
  1564. package/shim/scanner/go.sum +20 -0
  1565. package/shim/scanner/regexp.go +19 -4
  1566. package/shim/scanner/shim.go +3 -0
  1567. package/shim/stringutil/extra-shim.json +1 -0
  1568. package/shim/stringutil/go.mod +5 -0
  1569. package/shim/stringutil/go.sum +2 -0
  1570. package/shim/stringutil/shim.go +119 -0
  1571. package/shim/transformers/go.mod +5 -5
  1572. package/shim/transformers/go.sum +12 -10
  1573. package/shim/transformers/shim.go +12 -3
  1574. package/shim/tsoptions/command_line_raw.go +44 -0
  1575. package/shim/tsoptions/go.mod +10 -1
  1576. package/shim/tsoptions/go.sum +22 -0
  1577. package/shim/tsoptions/shim.go +1 -1
  1578. package/shim/tspath/go.mod +1 -1
  1579. package/shim/tspath/go.sum +6 -0
  1580. package/shim/vfs/cachedvfs/go.mod +3 -1
  1581. package/shim/vfs/cachedvfs/go.sum +12 -0
  1582. package/shim/vfs/decode.go +26 -0
  1583. package/shim/vfs/decode_test.go +42 -0
  1584. package/shim/vfs/go.mod +7 -1
  1585. package/shim/vfs/go.sum +12 -0
  1586. package/shim/vfs/osvfs/go.mod +7 -1
  1587. package/shim/vfs/osvfs/go.sum +12 -0
  1588. package/src/TtscCompiler.ts +223 -234
  1589. package/src/TtscService.ts +87 -31
  1590. package/src/TtscServiceRequestOptions.ts +21 -0
  1591. package/src/compiler/internal/CapturedProcessOutput.ts +69 -0
  1592. package/src/compiler/internal/CompilerArgumentsInspection.ts +184 -0
  1593. package/src/compiler/internal/EmitOwnershipIndex.ts +254 -0
  1594. package/src/compiler/internal/PrivateCompilerOutput.ts +330 -0
  1595. package/src/compiler/internal/ResidentCheckProcess.ts +445 -0
  1596. package/src/compiler/internal/ResidentCheckProcessOptions.ts +32 -0
  1597. package/src/compiler/internal/ResidentCheckRequest.ts +39 -0
  1598. package/src/compiler/internal/ResidentCheckResult.ts +24 -0
  1599. package/src/compiler/internal/ResidentCheckTelemetry.ts +36 -0
  1600. package/src/compiler/internal/ResidentReplyKind.ts +18 -0
  1601. package/src/compiler/internal/ResidentTransformProcess.ts +299 -0
  1602. package/src/compiler/internal/ResidentTransformProcessOptions.ts +30 -0
  1603. package/src/compiler/internal/ResidentTransformReply.ts +79 -0
  1604. package/src/compiler/internal/ResidentTransformRequestOptions.ts +16 -0
  1605. package/src/compiler/internal/ResidentTransformRequests.ts +198 -0
  1606. package/src/compiler/internal/StartedResidentTransform.ts +29 -0
  1607. package/src/compiler/internal/TransformProjectWorkerReply.ts +37 -0
  1608. package/src/compiler/internal/TransformProjectWorkerRequest.ts +42 -0
  1609. package/src/compiler/internal/build/BuildExecution.ts +1261 -0
  1610. package/src/compiler/internal/build/BuildTiming.ts +145 -0
  1611. package/src/compiler/internal/build/CompilerDiagnostics.ts +307 -0
  1612. package/src/compiler/internal/build/NativePluginArguments.ts +302 -0
  1613. package/src/compiler/internal/build/PassthroughFlags.ts +229 -0
  1614. package/src/compiler/internal/build/PluginFailureDiagnostics.ts +70 -0
  1615. package/src/compiler/internal/build/ResidentCheckEntryPlan.ts +42 -0
  1616. package/src/compiler/internal/build/ResidentCheckWatchChange.ts +33 -0
  1617. package/src/compiler/internal/build/ResidentCheckWatchSession.ts +501 -0
  1618. package/src/compiler/internal/build/RunBuildOptions.ts +145 -0
  1619. package/src/compiler/internal/build/TsgoArguments.ts +349 -0
  1620. package/src/compiler/internal/build/appendBuildOutput.ts +218 -0
  1621. package/src/compiler/internal/build/bufferResidentCheckEntryRequests.ts +52 -0
  1622. package/src/compiler/internal/build/createProcessDiagnostic.ts +32 -0
  1623. package/src/compiler/internal/build/isAbsoluteLocalProjectInputPath.ts +55 -0
  1624. package/src/compiler/internal/build/mergeProjectInputSnapshots.ts +147 -0
  1625. package/src/compiler/internal/build/normalizeBuildOutput.ts +89 -0
  1626. package/src/compiler/internal/build/parseProjectInputSnapshot.ts +91 -0
  1627. package/src/compiler/internal/build/planResidentCheckEntries.ts +55 -0
  1628. package/src/compiler/internal/build/privateRuntimeRootDir.ts +33 -0
  1629. package/src/compiler/internal/build/residentCheckRequest.ts +41 -0
  1630. package/src/compiler/internal/build/runBuild.ts +61 -0
  1631. package/src/compiler/internal/build/runExternalEmitProvenance.ts +566 -0
  1632. package/src/compiler/internal/build/takeResidentCheckEntryRequest.ts +31 -0
  1633. package/src/compiler/internal/buildNativeCompiler.ts +19 -2
  1634. package/src/compiler/internal/captureProcessOutput.ts +39 -37
  1635. package/src/compiler/internal/compileProjectInMemory.ts +139 -92
  1636. package/src/compiler/internal/ensureExecutable.ts +32 -0
  1637. package/src/compiler/internal/findNearestGoMod.ts +43 -0
  1638. package/src/compiler/internal/isOutsideRelativePath.ts +26 -0
  1639. package/src/compiler/internal/outputText.ts +21 -0
  1640. package/src/compiler/internal/packageRootDir.ts +43 -0
  1641. package/src/compiler/internal/parseNativeTransformOutput.ts +722 -0
  1642. package/src/compiler/internal/project/CompilerProjectSelection.ts +204 -0
  1643. package/src/compiler/internal/project/ConfigJsonText.ts +55 -0
  1644. package/src/compiler/internal/project/compilerUsesCaseSensitiveFileNames.ts +124 -0
  1645. package/src/compiler/internal/project/createNativeProjectContextArgs.ts +14 -19
  1646. package/src/compiler/internal/project/createNativeProjectContextJson.ts +28 -0
  1647. package/src/compiler/internal/project/parseJsonc.ts +318 -0
  1648. package/src/compiler/internal/project/readJsonFile.ts +34 -0
  1649. package/src/compiler/internal/project/readJsoncFile.ts +46 -0
  1650. package/src/compiler/internal/project/readProjectConfig.ts +137 -200
  1651. package/src/compiler/internal/project/resolveOwningProjectConfig.ts +278 -0
  1652. package/src/compiler/internal/project/resolveProjectConfig.ts +18 -127
  1653. package/src/compiler/internal/project/resolveProjectIdentity.ts +153 -0
  1654. package/src/compiler/internal/project/resolveTsconfigExtends.ts +175 -0
  1655. package/src/compiler/internal/project/selectReferencedProject.ts +54 -0
  1656. package/src/compiler/internal/project/tsconfigExtendsFileCandidates.ts +54 -0
  1657. package/src/compiler/internal/readEffectiveCompilerOptions.ts +126 -0
  1658. package/src/compiler/internal/resolveBinary.ts +25 -9
  1659. package/src/compiler/internal/resolveTsgo.ts +31 -11
  1660. package/src/compiler/internal/runNativeCheckWithObservations.ts +211 -0
  1661. package/src/compiler/internal/runSingleFileEmit.ts +92 -27
  1662. package/src/compiler/internal/sharedHost/SEMANTIC_CONFIG_PATH_ENV.ts +2 -0
  1663. package/src/compiler/internal/sharedHost/SidecarEnvironment.ts +151 -0
  1664. package/src/compiler/internal/sharedHost/TSGO_ARGS_CWD_ENV.ts +7 -0
  1665. package/src/compiler/internal/sharedHost/TSGO_ARGS_ENV.ts +7 -0
  1666. package/src/compiler/internal/sharedHost/assertSharedHostCompatibility.ts +48 -0
  1667. package/src/compiler/internal/sharedHost/clearInheritedSemanticConfigPath.ts +27 -0
  1668. package/src/compiler/internal/sharedHost/clearInheritedTsgoArgs.ts +41 -0
  1669. package/src/compiler/internal/sharedHost/inheritedSidecarEnv.ts +45 -0
  1670. package/src/compiler/internal/sharedHost/isLinkedTransform.ts +19 -0
  1671. package/src/compiler/internal/sharedHost/linkedTransformPlugins.ts +25 -0
  1672. package/src/compiler/internal/sharedHost/publishLinkedTransformPlugins.ts +42 -0
  1673. package/src/compiler/internal/sharedHost/resolvePluginConfigDir.ts +33 -0
  1674. package/src/compiler/internal/sharedHost/selectSharedHostPlugin.ts +35 -0
  1675. package/src/compiler/internal/spawnNative.ts +20 -41
  1676. package/src/compiler/internal/startResidentTransform.ts +66 -53
  1677. package/src/compiler/internal/transformProjectInMemory.ts +356 -634
  1678. package/src/compiler/internal/transformProjectInWorker.ts +170 -0
  1679. package/src/compiler/internal/transformProjectWorker.ts +43 -0
  1680. package/src/flags/AnySubcommand.ts +19 -0
  1681. package/src/flags/COMPILER_ENUM_WHITESPACE.ts +35 -0
  1682. package/src/flags/COMPILER_OPTIONS.ts +512 -0
  1683. package/src/flags/COMPILER_OPTION_ASCII_FOLDS.ts +13 -0
  1684. package/src/flags/COMPILER_OPTION_KINDS.ts +14 -0
  1685. package/src/flags/CompilerOptionSpec.ts +30 -0
  1686. package/src/flags/FLAG_BY_TOKEN.ts +40 -0
  1687. package/src/flags/{schema.ts → FLAG_SCHEMA.ts} +43 -318
  1688. package/src/flags/FlagKind.ts +22 -0
  1689. package/src/flags/FlagLayer.ts +24 -0
  1690. package/src/flags/FlagSpec.ts +118 -0
  1691. package/src/flags/ParseOptions.ts +103 -0
  1692. package/src/flags/ParseResult.ts +44 -0
  1693. package/src/flags/TtscSubcommand.ts +22 -0
  1694. package/src/flags/TtsxSubcommand.ts +13 -0
  1695. package/src/flags/ValueValidator.ts +14 -0
  1696. package/src/flags/buildGoAllowList.ts +43 -0
  1697. package/src/flags/flagsForSubcommand.ts +22 -0
  1698. package/src/flags/getBoolean.ts +27 -0
  1699. package/src/flags/getNumber.ts +24 -0
  1700. package/src/flags/getString.ts +24 -0
  1701. package/src/flags/getStringList.ts +24 -0
  1702. package/src/flags/normalizeCompilerEnumValue.ts +41 -0
  1703. package/src/flags/normalizeFlagToken.ts +38 -0
  1704. package/src/flags/parseFlags.ts +371 -0
  1705. package/src/flags/readCompilerOptionOccurrence.ts +107 -0
  1706. package/src/flags/readCompilerOptionValues.ts +68 -0
  1707. package/src/flags/resolveFlagSpec.ts +29 -0
  1708. package/src/index.ts +9 -3
  1709. package/src/internal/CanonicalTempDirectoryOperations.ts +73 -0
  1710. package/src/internal/CompilerContextSnapshot.ts +139 -0
  1711. package/src/internal/CompilerResultAdapter.ts +320 -0
  1712. package/src/internal/E2ETrace.ts +674 -0
  1713. package/src/internal/IJavaScriptRuntimeCapabilities.ts +50 -0
  1714. package/src/internal/OwnedNativeProcess.ts +417 -0
  1715. package/src/internal/OwnedSynchronousProcess.ts +220 -0
  1716. package/src/internal/RetireLockDirectoryOperations.ts +81 -0
  1717. package/src/internal/SafeCacheCleanupTarget.ts +41 -0
  1718. package/src/internal/SourceNativeRetirement.ts +1109 -0
  1719. package/src/internal/SpawnSyncOutputFiles.ts +29 -0
  1720. package/src/internal/cacheEntryExists.ts +24 -0
  1721. package/src/internal/createCanonicalTempDirectory.ts +35 -18
  1722. package/src/internal/isContendedCandidateRename.ts +35 -0
  1723. package/src/internal/isSpawnSyncFdExhaustion.ts +19 -0
  1724. package/src/internal/javascriptRuntimeCapabilities.ts +166 -0
  1725. package/src/internal/nativeBinary.ts +11 -0
  1726. package/src/internal/parseWindowsDirectoryCaseSensitivity.ts +50 -0
  1727. package/src/internal/pathIdentity/FilesystemPathIdentity.ts +44 -0
  1728. package/src/internal/pathIdentity/FilesystemPathIdentityContext.ts +182 -0
  1729. package/src/internal/pathIdentity/FilesystemPathIdentityOperations.ts +106 -0
  1730. package/src/internal/pathIdentity/ProjectInputPathIdentity.ts +21 -0
  1731. package/src/internal/pathIdentity/ProjectInputPathIdentityContext.ts +21 -0
  1732. package/src/internal/pathIdentity/ProjectInputPathIdentityOperations.ts +22 -0
  1733. package/src/internal/pathIdentity/createFilesystemPathIdentityContext.ts +437 -0
  1734. package/src/internal/pathIdentity/createProjectInputPathIdentityContext.ts +34 -0
  1735. package/src/internal/pathIdentity/isFilesystemPathIdentityWithin.ts +32 -0
  1736. package/src/internal/pathIdentity/isProjectInputPathIdentityWithin.ts +22 -0
  1737. package/src/internal/pathIdentity/resolveFilesystemPath.ts +43 -0
  1738. package/src/internal/pathIdentity/resolvePhysicalPath.ts +31 -0
  1739. package/src/internal/pathIdentity/resolveProjectInputPath.ts +18 -0
  1740. package/src/internal/pluginSource.ts +26 -0
  1741. package/src/internal/projectInputPathIdentity.ts +26 -387
  1742. package/src/internal/resolveNodeBinary.ts +13 -142
  1743. package/src/internal/resolveSafeCacheCleanupTargets.ts +51 -19
  1744. package/src/internal/restoreCompilerError.ts +175 -0
  1745. package/src/internal/retireLockDirectory.ts +166 -0
  1746. package/src/internal/runHoldingLock.ts +55 -0
  1747. package/src/internal/runtimeExecutableIdentity.ts +212 -0
  1748. package/src/internal/serializeCompilerError.ts +145 -0
  1749. package/src/internal/spawnSyncResilient.ts +62 -0
  1750. package/src/internal/spawnSyncWithLowDescriptors.ts +227 -0
  1751. package/src/internal/tsconfig.ts +16 -0
  1752. package/src/launcher/internal/PendingResidentCheckWatchChanges.ts +94 -0
  1753. package/src/launcher/internal/TtscBuildMode.ts +14 -0
  1754. package/src/launcher/internal/TtsxEntryOptions.ts +92 -0
  1755. package/src/launcher/internal/assertNoSolutionBuild.ts +17 -10
  1756. package/src/launcher/internal/assertTtsxNoWatch.ts +49 -0
  1757. package/src/launcher/internal/buildSingleRootProject.ts +303 -0
  1758. package/src/launcher/internal/getCompilerVersionText.ts +20 -5
  1759. package/src/launcher/internal/inlineServedSourceMap.ts +294 -0
  1760. package/src/launcher/internal/linkVirtualEntry.ts +88 -0
  1761. package/src/launcher/internal/{commonJsExportMetadata.ts → parseCommonJsExports.ts} +12 -2
  1762. package/src/launcher/internal/parseTtscBuildArgs.ts +103 -0
  1763. package/src/launcher/internal/parseTtsxCLI.ts +183 -0
  1764. package/src/launcher/internal/prepareExecution.ts +474 -362
  1765. package/src/launcher/internal/prepareTtscBuildMode.ts +64 -0
  1766. package/src/launcher/internal/resolveCacheDir.ts +12 -3
  1767. package/src/launcher/internal/resolveSingleFileOutput.ts +145 -0
  1768. package/src/launcher/internal/resolveTtscserverBinary.ts +20 -5
  1769. package/src/launcher/internal/runTtsc.ts +394 -326
  1770. package/src/launcher/internal/runTtsx.ts +349 -151
  1771. package/src/launcher/internal/runtime/CommonJsRuntimeSource.ts +365 -0
  1772. package/src/launcher/internal/runtime/DependencyBuildAdmission.ts +159 -0
  1773. package/src/launcher/internal/runtime/DependencyBuildGeneration.ts +236 -0
  1774. package/src/launcher/internal/runtime/DependencyBuildLockFence.ts +22 -0
  1775. package/src/launcher/internal/runtime/DependencyBuildLockLease.ts +22 -0
  1776. package/src/launcher/internal/runtime/DependencyBuildLockObservation.ts +49 -0
  1777. package/src/launcher/internal/runtime/DependencyBuildLockProtocol.ts +137 -0
  1778. package/src/launcher/internal/runtime/OwnedProjectSource.ts +140 -0
  1779. package/src/launcher/internal/runtime/OwningModuleOptions.ts +22 -0
  1780. package/src/launcher/internal/runtime/PluginDescriptorInputObservation.ts +112 -0
  1781. package/src/launcher/internal/runtime/ProcessOwnedDirectory.ts +325 -0
  1782. package/src/launcher/internal/runtime/ResolveResult.ts +26 -0
  1783. package/src/launcher/internal/runtime/RuntimeEmitProvenance.ts +58 -0
  1784. package/src/launcher/internal/runtime/RuntimeEntryPreparer.ts +23 -0
  1785. package/src/launcher/internal/runtime/RuntimeFilesystem.ts +64 -0
  1786. package/src/launcher/internal/runtime/RuntimeHookOptions.ts +23 -0
  1787. package/src/launcher/internal/runtime/RuntimeIsolatedEmit.ts +88 -0
  1788. package/src/launcher/internal/runtime/RuntimeLoaderCapabilities.ts +256 -0
  1789. package/src/launcher/internal/runtime/RuntimeManifest.ts +77 -0
  1790. package/src/launcher/internal/runtime/RuntimeManifestRegistry.ts +309 -0
  1791. package/src/launcher/internal/runtime/RuntimeModuleFormat.ts +275 -0
  1792. package/src/launcher/internal/runtime/RuntimeProjectOwnership.ts +139 -0
  1793. package/src/launcher/internal/runtime/TTSX_MINIMUM_NODE_VERSION.ts +11 -0
  1794. package/src/launcher/internal/runtime/acquireDependencyBuildLock.ts +97 -0
  1795. package/src/launcher/internal/runtime/checkNodeRuntimeSupport.ts +94 -0
  1796. package/src/launcher/internal/runtime/claimRuntimeProjectDirectory.ts +54 -0
  1797. package/src/launcher/internal/runtime/commonJsExportNames.ts +57 -0
  1798. package/src/launcher/internal/runtime/commonJsImportFacade.ts +62 -0
  1799. package/src/launcher/internal/runtime/dependencyCacheKey.ts +82 -0
  1800. package/src/launcher/internal/runtime/dependencyCacheRoot.ts +112 -0
  1801. package/src/launcher/internal/runtime/inspectDependencyBuildLock.ts +162 -0
  1802. package/src/launcher/internal/runtime/installRuntimeHooks.ts +2442 -0
  1803. package/src/launcher/internal/runtime/interopProbe.ts +8 -0
  1804. package/src/launcher/internal/runtime/isLocalProcessGone.ts +67 -0
  1805. package/src/launcher/internal/runtime/observeMappedDescriptorResolution.ts +74 -0
  1806. package/src/launcher/internal/runtime/projectModuleOptions.ts +28 -0
  1807. package/src/launcher/internal/runtime/readDependencyCache.ts +89 -0
  1808. package/src/launcher/internal/runtime/realPath.ts +30 -0
  1809. package/src/launcher/internal/runtime/reclaimDependencyBuildLock.ts +27 -0
  1810. package/src/launcher/internal/runtime/releaseDependencyBuildLock.ts +27 -0
  1811. package/src/launcher/internal/runtime/resolveRuntimeCleanTargets.ts +93 -0
  1812. package/src/launcher/internal/runtime/restoreStrippedNodeBuiltinScheme.ts +32 -0
  1813. package/src/launcher/internal/runtime/runtimeRunKey.ts +31 -0
  1814. package/src/launcher/internal/runtime/selectRuntimePluginPolicy.ts +28 -0
  1815. package/src/launcher/internal/runtime/withRuntimeDirectoryLock.ts +92 -0
  1816. package/src/launcher/internal/runtimeCompilerArgs.ts +91 -62
  1817. package/src/launcher/internal/runtimeEmitProfile.ts +70 -0
  1818. package/src/launcher/internal/runtimeHookPreload.ts +3 -3
  1819. package/src/launcher/internal/runtimeOwnerPreload.ts +43 -0
  1820. package/src/launcher/internal/singleRootProjectConfig.ts +38 -0
  1821. package/src/launcher/internal/ttscserver/ILSPPluginSelectionInputs.ts +65 -0
  1822. package/src/launcher/internal/ttscserver/LSPProjectInputDigest.ts +331 -0
  1823. package/src/launcher/internal/ttscserver/captureLSPPluginSelectionInputs.ts +107 -0
  1824. package/src/launcher/internal/ttscserver/fingerprintInitialLSPProjectInputSnapshot.ts +41 -0
  1825. package/src/launcher/internal/ttscserver/initialLSPProjectInputSnapshotIsCurrent.ts +36 -0
  1826. package/src/launcher/internal/ttscserver/materializeLSPPluginManifest.ts +60 -0
  1827. package/src/launcher/internal/ttscserver/needsStdio.ts +32 -0
  1828. package/src/launcher/internal/ttscserver/runTtscserver.ts +592 -0
  1829. package/src/launcher/internal/watch/CompilerDirectoryWatchEventPlan.ts +31 -0
  1830. package/src/launcher/internal/watch/DirectoryWatcher.ts +45 -0
  1831. package/src/launcher/internal/watch/FseventsStreams.ts +303 -0
  1832. package/src/launcher/internal/watch/ProjectInputWatchRules.ts +179 -0
  1833. package/src/launcher/internal/watch/WatchInputChange.ts +31 -0
  1834. package/src/launcher/internal/watch/WatchPaths.ts +156 -0
  1835. package/src/launcher/internal/{watchTopology.ts → watch/WatchTopology.ts} +867 -962
  1836. package/src/launcher/internal/watch/literalGlobRoot.ts +40 -0
  1837. package/src/launcher/internal/watch/planCompilerDirectoryWatchEvent.ts +83 -0
  1838. package/src/launcher/internal/watch/projectInputActiveWatchDirectories.ts +47 -0
  1839. package/src/launcher/internal/watch/projectInputAvailableWatchDirectory.ts +56 -0
  1840. package/src/launcher/internal/watch/projectInputEventShouldNotify.ts +23 -0
  1841. package/src/launcher/internal/watch/projectInputMembershipInvalidatesProgram.ts +63 -0
  1842. package/src/launcher/internal/watch/projectInputReloadEventShouldNotify.ts +127 -0
  1843. package/src/launcher/internal/watch/projectInputReplacementStrandsWatchers.ts +57 -0
  1844. package/src/launcher/internal/watch/projectInputTopologyMayAffect.ts +73 -0
  1845. package/src/launcher/internal/watch/projectInputWatchDirectories.ts +33 -0
  1846. package/src/launcher/internal/watch/reloadInputsForFailedTopologyRefresh.ts +49 -0
  1847. package/src/launcher/internal/watch/syncWatchers.ts +64 -0
  1848. package/src/launcher/internal/watch/watchDirectory.ts +53 -0
  1849. package/src/launcher/internal/watch/watchDirectoryThroughFsWatch.ts +47 -0
  1850. package/src/launcher/ttscserver.ts +1 -1
  1851. package/src/launcher/ttsx.ts +2 -3
  1852. package/src/plugin/CapabilityPluginResolver.ts +549 -0
  1853. package/src/plugin/ITtscCapabilityPlugin.ts +93 -0
  1854. package/src/plugin/internal/CapabilityPluginResult.ts +99 -0
  1855. package/src/plugin/internal/CapabilityResolutionFormat.ts +248 -0
  1856. package/src/plugin/internal/ITtscCapabilityPluginSource.ts +37 -0
  1857. package/src/plugin/internal/ITtscCapabilityResolutionEntry.ts +57 -0
  1858. package/src/plugin/internal/ITtscCapabilityResolutionPlugin.ts +22 -0
  1859. package/src/plugin/internal/capabilityPluginWorker.ts +216 -0
  1860. package/src/plugin/internal/decodeCapabilityCommandReply.ts +27 -0
  1861. package/src/plugin/internal/load/COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE.ts +182 -0
  1862. package/src/plugin/internal/load/PLUGIN_DESCRIPTOR_SHIM_SOURCE.ts +59 -0
  1863. package/src/plugin/internal/load/PluginDescriptorAdmission.ts +75 -0
  1864. package/src/plugin/internal/load/PluginDescriptorEvaluationCache.ts +432 -0
  1865. package/src/plugin/internal/load/PluginPackageResolution.ts +711 -0
  1866. package/src/plugin/internal/load/ProjectPluginEntries.ts +232 -0
  1867. package/src/plugin/internal/load/RESOLUTION_INPUT_RECORDER_PATH.ts +34 -0
  1868. package/src/plugin/internal/load/collectProjectHostInputs.ts +88 -0
  1869. package/src/plugin/internal/load/composePluginSources.ts +121 -0
  1870. package/src/plugin/internal/load/declaresHostInputReads.ts +52 -0
  1871. package/src/plugin/internal/load/hasProjectPluginEntries.ts +33 -0
  1872. package/src/plugin/internal/load/hashHostInputPaths.ts +44 -0
  1873. package/src/plugin/internal/load/isRelativePluginSpecifier.ts +31 -0
  1874. package/src/plugin/internal/load/loadProjectPlugins.ts +2242 -0
  1875. package/src/plugin/internal/load/moduleResolutionBaseSelects.ts +59 -0
  1876. package/src/plugin/internal/load/observeImportSearchRoots.ts +42 -0
  1877. package/src/plugin/internal/load/pluginLabel.ts +28 -0
  1878. package/src/plugin/internal/load/realpathHostInput.ts +22 -0
  1879. package/src/plugin/internal/load/realpathHostInputPaths.ts +27 -0
  1880. package/src/plugin/internal/load/rejectJsTransformFunctions.ts +23 -0
  1881. package/src/plugin/internal/load/requirePluginSource.ts +34 -0
  1882. package/src/plugin/internal/load/resolveNativeSource.ts +42 -0
  1883. package/src/plugin/internal/load/validatePluginContributors.ts +102 -0
  1884. package/src/plugin/internal/load/validatePluginSource.ts +19 -0
  1885. package/src/plugin/internal/load/visitImportMappedCandidates.ts +63 -0
  1886. package/src/plugin/internal/pluginDescriptorFailureReason.ts +35 -0
  1887. package/src/plugin/internal/pluginDescriptorProcessFailure.ts +48 -0
  1888. package/src/plugin/internal/readCapabilityResolution.ts +193 -0
  1889. package/src/plugin/internal/receiveCapabilityFailure.ts +27 -0
  1890. package/src/plugin/internal/source/CachePrunePolicy.ts +47 -0
  1891. package/src/plugin/internal/source/GoBuildCacheCoordination.ts +588 -0
  1892. package/src/plugin/internal/source/GoSourceInputs.ts +182 -0
  1893. package/src/plugin/internal/source/GoToolResolution.ts +312 -0
  1894. package/src/plugin/internal/source/IGoBuildCachePruneOptions.ts +34 -0
  1895. package/src/plugin/internal/source/IPluginCachePruneOptions.ts +38 -0
  1896. package/src/plugin/internal/source/IPluginModuleReplaceDirectory.ts +30 -0
  1897. package/src/plugin/internal/source/ITtscBuildContributor.ts +19 -0
  1898. package/src/plugin/internal/source/ITtscSourceBuildCachePaths.ts +28 -0
  1899. package/src/plugin/internal/source/NativeSourcePackages.ts +368 -0
  1900. package/src/plugin/internal/source/PluginBinaryUse.ts +159 -0
  1901. package/src/plugin/internal/source/PluginBinaryWaitResult.ts +34 -0
  1902. package/src/plugin/internal/source/PluginBuildEnvironmentReadings.ts +231 -0
  1903. package/src/plugin/internal/source/PluginBuildEnvironmentWitness.ts +233 -0
  1904. package/src/plugin/internal/source/PluginBuildLockFence.ts +26 -0
  1905. package/src/plugin/internal/source/PluginBuildLockLease.ts +31 -0
  1906. package/src/plugin/internal/source/PluginBuildLockObservation.ts +48 -0
  1907. package/src/plugin/internal/source/PluginBuildLockOwner.ts +225 -0
  1908. package/src/plugin/internal/source/PluginBuildLockProtocol.ts +342 -0
  1909. package/src/plugin/internal/source/SourceBuildCacheLayout.ts +303 -0
  1910. package/src/plugin/internal/source/SourceBuildFilesystemOperations.ts +32 -0
  1911. package/src/plugin/internal/source/SourcePluginAdmission.ts +127 -0
  1912. package/src/plugin/internal/source/SourcePluginWorkspace.ts +446 -0
  1913. package/src/plugin/internal/source/acquirePluginBuildLock.ts +222 -0
  1914. package/src/plugin/internal/source/autoQuoteGoModToken.ts +113 -0
  1915. package/src/plugin/internal/source/buildSourcePlugin.ts +1197 -0
  1916. package/src/plugin/internal/source/collectPluginSourceDirectories.ts +70 -0
  1917. package/src/plugin/internal/source/collectPluginSourceFiles.ts +90 -0
  1918. package/src/plugin/internal/source/computeCacheKey.ts +190 -0
  1919. package/src/plugin/internal/source/copiesPluginSourceEntry.ts +52 -0
  1920. package/src/plugin/internal/source/createExternalSourceSnapshotLayout.ts +66 -0
  1921. package/src/plugin/internal/source/ensureExecutableGoToolchain.ts +87 -0
  1922. package/src/plugin/internal/source/formatDuration.ts +32 -0
  1923. package/src/plugin/internal/source/formatGoWorkPath.ts +42 -0
  1924. package/src/plugin/internal/source/hashPluginBuildEnvironment.ts +803 -0
  1925. package/src/plugin/internal/source/inspectPluginBuildLock.ts +330 -0
  1926. package/src/plugin/internal/source/isPathWithin.ts +24 -0
  1927. package/src/plugin/internal/source/legacyGlobalCacheTargets.ts +71 -0
  1928. package/src/plugin/internal/source/pluginBuildEnvironment.ts +59 -0
  1929. package/src/plugin/internal/source/pluginBuildEnvironmentWorker.ts +30 -0
  1930. package/src/plugin/internal/source/pluginBuildVersions.ts +75 -0
  1931. package/src/plugin/internal/source/pluginModuleReplaceDirectories.ts +96 -0
  1932. package/src/plugin/internal/source/pluginSourceCovers.ts +54 -0
  1933. package/src/plugin/internal/source/pluginSourceDigest.ts +55 -0
  1934. package/src/plugin/internal/source/pluginSourceFilesSignature.ts +54 -0
  1935. package/src/plugin/internal/source/pluginSourceState.ts +69 -0
  1936. package/src/plugin/internal/source/pluginSourceStateHolds.ts +45 -0
  1937. package/src/plugin/internal/source/processPluginBuildEnvironment.ts +40 -0
  1938. package/src/plugin/internal/source/pruneCacheFileRoot.ts +134 -0
  1939. package/src/plugin/internal/source/pruneGoBuildCacheRoot.ts +228 -0
  1940. package/src/plugin/internal/source/prunePluginCacheRoot.ts +507 -0
  1941. package/src/plugin/internal/source/prunesPluginSourceDirectory.ts +25 -0
  1942. package/src/plugin/internal/source/reclaimPluginBuildLock.ts +63 -0
  1943. package/src/plugin/internal/source/recordCacheFileUse.ts +35 -0
  1944. package/src/plugin/internal/source/releasePluginBuildLock.ts +125 -0
  1945. package/src/plugin/internal/source/resolveCleanTargets.ts +84 -0
  1946. package/src/plugin/internal/source/resolveGoCompiler.ts +92 -0
  1947. package/src/plugin/internal/source/resolvePluginCacheRoot.ts +32 -0
  1948. package/src/plugin/internal/source/resolvePluginGoModule.ts +69 -0
  1949. package/src/plugin/internal/source/resolveSourceBuildCachePaths.ts +276 -0
  1950. package/src/plugin/internal/source/selectPluginModuleReplaceDirectories.ts +80 -0
  1951. package/src/plugin/internal/source/spawnGoTool.ts +204 -0
  1952. package/src/plugin/internal/source/touchPluginCacheEntryInUse.ts +44 -0
  1953. package/src/plugin/internal/source/waitForPluginBinary.ts +123 -0
  1954. package/src/plugin/internal/source/windowsGoCommandArgs.ts +19 -0
  1955. package/src/plugin/internal/source/withGoBuildCacheLease.ts +101 -0
  1956. package/src/plugin/internal/writeCapabilityResolution.ts +266 -0
  1957. package/src/plugin/resolveCapabilityPlugins.ts +242 -77
  1958. package/src/register.ts +20 -7
  1959. package/src/structures/ITtscCompilerContext.ts +29 -11
  1960. package/src/structures/ITtscCompilerDiagnostic.ts +24 -7
  1961. package/src/structures/ITtscCompilerResult.ts +75 -25
  1962. package/src/structures/ITtscCompilerTransformation.ts +304 -64
  1963. package/src/structures/ITtscPlugin.ts +24 -8
  1964. package/src/structures/ITtscPluginCapabilities.ts +58 -5
  1965. package/src/structures/ITtscPluginContributor.ts +19 -8
  1966. package/src/structures/ITtscPluginFactoryContext.ts +12 -3
  1967. package/src/structures/ITtscProjectPluginConfig.ts +35 -10
  1968. package/src/structures/TtscPluginStage.ts +9 -0
  1969. package/src/structures/internal/ITtscLoadedNativePlugin.ts +27 -5
  1970. package/src/structures/internal/ITtscParsedProjectConfig.ts +37 -3
  1971. package/src/structures/internal/ITtscProjectIdentity.ts +27 -6
  1972. package/src/structures/internal/ITtscProjectInputSnapshot.ts +31 -8
  1973. package/src/structures/internal/ITtscProjectLocatorOptions.ts +21 -4
  1974. package/src/structures/internal/TtscBuildOptions.ts +38 -14
  1975. package/src/structures/internal/TtscBuildResult.ts +74 -4
  1976. package/src/structures/internal/TtscCommonOptions.ts +59 -14
  1977. package/src/structures/internal/TtscSingleFileEmitOptions.ts +55 -5
  1978. package/tools/gen_shims/main.go +124 -11
  1979. package/tools/gen_shims/package_load_admission_rejects_incomplete_results_test.go +61 -0
  1980. package/tools/gen_shims/private_field_support_preserves_upstream_layout_test.go +104 -0
  1981. package/tools/shim_audit/enum_generation_preserves_existing_family_members_test.go +182 -0
  1982. package/tools/shim_audit/enum_generation_refuses_removed_public_members_test.go +93 -0
  1983. package/tools/shim_audit/main.go +166 -31
  1984. package/tools/shim_audit/main_test.go +35 -0
  1985. package/tools/shim_audit/producer_exemptions_require_rationale_test.go +5 -0
  1986. package/tools/shim_audit/producer_surface_includes_exposed_methods_test.go +5 -0
  1987. package/tools/shim_audit/producer_surface_rejects_unproducible_reference_test.go +5 -0
  1988. package/tools/shim_audit/shim_dir_coverage_rejects_unregistered_shims_test.go +71 -0
  1989. package/utility/command.go +48 -0
  1990. package/utility/flags_gen.go +2 -2
  1991. package/utility/host.go +282 -66
  1992. package/utility/preamble_output.go +245 -0
  1993. package/utility/preamble_output_test.go +90 -0
  1994. package/utility/serve.go +61 -18
  1995. package/cmd/ttscgraph/serve_graph_snapshot_version_matches_typescript_client_test.go +0 -32
  1996. package/cmd/ttscgraph/serve_protocol_version_matches_the_typescript_client_test.go +0 -48
  1997. package/cmd/ttscgraph/serve_session_retries_failed_dump_test.go +0 -103
  1998. package/internal/graph/dump_schema_version_matches_the_typescript_client_test.go +0 -48
  1999. package/internal/graph/edge_kinds_names_every_declared_kind_test.go +0 -49
  2000. package/internal/graph/graph_kind_contracts_match_their_producers_test.go +0 -121
  2001. package/internal/lspserver/lsp_launcher_reload_directory_fingerprint_parity_windows_test.go +0 -94
  2002. package/internal/lspserver/lsp_project_diagnostics_resident_unsupported_falls_back_test.go +0 -123
  2003. package/lib/compiler/internal/paths.d.ts +0 -27
  2004. package/lib/compiler/internal/paths.js +0 -70
  2005. package/lib/compiler/internal/paths.js.map +0 -1
  2006. package/lib/compiler/internal/project/readConfigJson.d.ts +0 -30
  2007. package/lib/compiler/internal/project/readConfigJson.js +0 -208
  2008. package/lib/compiler/internal/project/readConfigJson.js.map +0 -1
  2009. package/lib/compiler/internal/residentCheckProcess.d.ts +0 -44
  2010. package/lib/compiler/internal/residentCheckProcess.js +0 -213
  2011. package/lib/compiler/internal/residentCheckProcess.js.map +0 -1
  2012. package/lib/compiler/internal/residentTransformProcess.d.ts +0 -65
  2013. package/lib/compiler/internal/residentTransformProcess.js +0 -330
  2014. package/lib/compiler/internal/residentTransformProcess.js.map +0 -1
  2015. package/lib/compiler/internal/resolveEmittedJavaScript.d.ts +0 -25
  2016. package/lib/compiler/internal/resolveEmittedJavaScript.js +0 -165
  2017. package/lib/compiler/internal/resolveEmittedJavaScript.js.map +0 -1
  2018. package/lib/compiler/internal/runBuild.d.ts +0 -152
  2019. package/lib/compiler/internal/runBuild.js +0 -1694
  2020. package/lib/compiler/internal/runBuild.js.map +0 -1
  2021. package/lib/compiler/internal/sharedHostHelpers.d.ts +0 -79
  2022. package/lib/compiler/internal/sharedHostHelpers.js +0 -134
  2023. package/lib/compiler/internal/sharedHostHelpers.js.map +0 -1
  2024. package/lib/flags/parser.d.ts +0 -97
  2025. package/lib/flags/parser.js +0 -293
  2026. package/lib/flags/parser.js.map +0 -1
  2027. package/lib/flags/schema.d.ts +0 -191
  2028. package/lib/flags/schema.js.map +0 -1
  2029. package/lib/internal/windowsDirectoryCaseSensitivity.d.ts +0 -10
  2030. package/lib/internal/windowsDirectoryCaseSensitivity.js +0 -34
  2031. package/lib/internal/windowsDirectoryCaseSensitivity.js.map +0 -1
  2032. package/lib/launcher/internal/commonJsExportMetadata.d.ts +0 -7
  2033. package/lib/launcher/internal/commonJsExportMetadata.js.map +0 -1
  2034. package/lib/launcher/internal/registerRuntimeHooks.js +0 -59
  2035. package/lib/launcher/internal/registerRuntimeHooks.js.map +0 -1
  2036. package/lib/launcher/internal/runTtscserver.d.ts +0 -35
  2037. package/lib/launcher/internal/runTtscserver.js +0 -660
  2038. package/lib/launcher/internal/runTtscserver.js.map +0 -1
  2039. package/lib/launcher/internal/runtimeHooks.d.ts +0 -198
  2040. package/lib/launcher/internal/runtimeHooks.js +0 -2579
  2041. package/lib/launcher/internal/runtimeHooks.js.map +0 -1
  2042. package/lib/launcher/internal/servedSourceMap.d.ts +0 -25
  2043. package/lib/launcher/internal/servedSourceMap.js +0 -164
  2044. package/lib/launcher/internal/servedSourceMap.js.map +0 -1
  2045. package/lib/launcher/internal/singleFileOutput.d.ts +0 -16
  2046. package/lib/launcher/internal/singleFileOutput.js +0 -103
  2047. package/lib/launcher/internal/singleFileOutput.js.map +0 -1
  2048. package/lib/launcher/internal/watchTopology.d.ts +0 -329
  2049. package/lib/launcher/internal/watchTopology.js.map +0 -1
  2050. package/lib/plugin/internal/buildSourcePlugin.d.ts +0 -298
  2051. package/lib/plugin/internal/buildSourcePlugin.js +0 -3086
  2052. package/lib/plugin/internal/buildSourcePlugin.js.map +0 -1
  2053. package/lib/plugin/internal/capabilityResolutionCache.d.ts +0 -76
  2054. package/lib/plugin/internal/capabilityResolutionCache.js +0 -224
  2055. package/lib/plugin/internal/capabilityResolutionCache.js.map +0 -1
  2056. package/lib/plugin/internal/descriptorProcessFailure.d.ts +0 -36
  2057. package/lib/plugin/internal/descriptorProcessFailure.js +0 -62
  2058. package/lib/plugin/internal/descriptorProcessFailure.js.map +0 -1
  2059. package/lib/plugin/internal/loadProjectPlugins.d.ts +0 -74
  2060. package/lib/plugin/internal/loadProjectPlugins.js +0 -2379
  2061. package/lib/plugin/internal/loadProjectPlugins.js.map +0 -1
  2062. package/src/compiler/internal/paths.ts +0 -68
  2063. package/src/compiler/internal/project/readConfigJson.ts +0 -209
  2064. package/src/compiler/internal/residentCheckProcess.ts +0 -259
  2065. package/src/compiler/internal/residentTransformProcess.ts +0 -406
  2066. package/src/compiler/internal/resolveEmittedJavaScript.ts +0 -197
  2067. package/src/compiler/internal/runBuild.ts +0 -2345
  2068. package/src/compiler/internal/sharedHostHelpers.ts +0 -154
  2069. package/src/flags/parser.ts +0 -459
  2070. package/src/internal/windowsDirectoryCaseSensitivity.ts +0 -33
  2071. package/src/launcher/internal/registerRuntimeHooks.ts +0 -68
  2072. package/src/launcher/internal/runTtscserver.ts +0 -841
  2073. package/src/launcher/internal/runtimeHooks.ts +0 -3197
  2074. package/src/launcher/internal/servedSourceMap.ts +0 -183
  2075. package/src/launcher/internal/singleFileOutput.ts +0 -133
  2076. package/src/plugin/internal/buildSourcePlugin.ts +0 -3990
  2077. package/src/plugin/internal/capabilityResolutionCache.ts +0 -305
  2078. package/src/plugin/internal/descriptorProcessFailure.ts +0 -69
  2079. package/src/plugin/internal/loadProjectPlugins.ts +0 -3044
  2080. package/tools/shim_audit/shim_dir_coverage_test.go +0 -25
  2081. /package/lib/{launcher/internal/registerRuntimeHooks.d.ts → compiler/internal/transformProjectWorker.d.ts} +0 -0
@@ -1,2379 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PLUGIN_DESCRIPTOR_SHIM_SOURCE = exports.COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE = void 0;
7
- exports.loadProjectPlugins = loadProjectPlugins;
8
- exports.hashHostInputPaths = hashHostInputPaths;
9
- exports.realpathHostInput = realpathHostInput;
10
- exports.realpathHostInputPaths = realpathHostInputPaths;
11
- exports.collectProjectHostInputs = collectProjectHostInputs;
12
- exports.hasProjectPluginEntries = hasProjectPluginEntries;
13
- const node_child_process_1 = __importDefault(require("node:child_process"));
14
- const node_crypto_1 = __importDefault(require("node:crypto"));
15
- const node_fs_1 = __importDefault(require("node:fs"));
16
- const node_module_1 = require("node:module");
17
- const node_path_1 = __importDefault(require("node:path"));
18
- const node_url_1 = require("node:url");
19
- const paths_1 = require("../../compiler/internal/paths");
20
- const readConfigJson_1 = require("../../compiler/internal/project/readConfigJson");
21
- const readProjectConfig_1 = require("../../compiler/internal/project/readProjectConfig");
22
- const createCanonicalTempDirectory_1 = require("../../internal/createCanonicalTempDirectory");
23
- const resolveNodeBinary_1 = require("../../internal/resolveNodeBinary");
24
- const buildSourcePlugin_1 = require("./buildSourcePlugin");
25
- const descriptorProcessFailure_1 = require("./descriptorProcessFailure");
26
- const GO_MOD_SEARCH_MAX_DEPTH = 3;
27
- /**
28
- * Resolve, load, and build all native plugin sidecars for a TypeScript project.
29
- *
30
- * Reads the project config, discovers plugin entries (from tsconfig and package
31
- * auto-discovery), validates and composes their descriptors, then invokes
32
- * `buildSourcePlugin` to compile each Go source package into a cached binary.
33
- * Returns the ordered native plugins, parsed project config, and exact
34
- * JavaScript-host files that universally influence the loaded selection.
35
- *
36
- * @param options.binary - Absolute path to the ttsc native helper binary.
37
- * @param options.cacheDir - Override the plugin binary cache directory.
38
- * @param options.cwd - Working directory for resolving relative paths.
39
- * @param options.entries - Explicit plugin entries; `false` disables all
40
- * plugins (skips both tsconfig entries and package auto-discovery).
41
- * @param options.env - Effective environment for source-plugin builds and
42
- * isolated descriptor evaluators, including the `ttsx` fallback (`{
43
- * ...process.env, ...context.env }`). Defaults to `process.env` for CLI
44
- * callers, so ambient behavior is unchanged.
45
- * @param options.file - Path to the tsconfig/jsconfig file.
46
- * @param options.pluginConfigDir - Caller-declared anchor for plugin
47
- * config-file discovery (see `ITtscPluginFactoryContext.pluginConfigDir`).
48
- * @param options.projectRoot - Override the project root directory.
49
- * @param options.tsconfig - Alias for `file`.
50
- */
51
- function loadProjectPlugins(options) {
52
- // Snapshot the caller environment before `withPluginLoaderEnv` injects
53
- // host-owned Node/ttsx locators into process.env. Under a Bun parent the
54
- // direct descriptor evaluator must remain Bun unless the caller explicitly
55
- // selected another runtime.
56
- const effectiveEnv = { ...(options.env ?? process.env) };
57
- const projectSnapshot = readProjectHostInputSnapshot({
58
- cwd: options.cwd,
59
- file: options.file,
60
- includePluginDiscovery: options.entries === undefined,
61
- projectRoot: options.projectRoot,
62
- tsconfig: options.tsconfig,
63
- });
64
- const { project } = projectSnapshot;
65
- const projectHostInputs = projectSnapshot.hostInputs;
66
- const projectHostInputHashes = projectSnapshot.hostInputHashes;
67
- const projectHostInputRealpaths = projectSnapshot.hostInputRealpaths;
68
- const entries = options.entries === false
69
- ? []
70
- : resolvePluginEntries(project, options.entries).filter((entry) => entry.config.enabled !== false);
71
- if (entries.length === 0) {
72
- options.onWatchInputs?.([]);
73
- return {
74
- ...collectHostInputSnapshot(project, {}, [], projectHostInputs, revalidateHostInputHashes(projectHostInputHashes, projectHostInputs), revalidateHostInputRealpaths(projectHostInputRealpaths, projectHostInputs)),
75
- nativePlugins: [],
76
- project,
77
- };
78
- }
79
- const cwd = node_path_1.default.resolve(options.cwd ?? process.cwd());
80
- const context = {
81
- binary: options.binary,
82
- cwd,
83
- ...(options.pluginConfigDir === undefined || options.pluginConfigDir === ""
84
- ? {}
85
- : { pluginConfigDir: node_path_1.default.resolve(cwd, options.pluginConfigDir) }),
86
- projectRoot: project.root,
87
- tsconfig: project.path,
88
- };
89
- const loadedEntries = withPluginLoaderEnv(() => entries.map((entry) => {
90
- const specifier = entry.config.transform;
91
- if (typeof specifier !== "string" || specifier.length === 0) {
92
- throw new Error(`ttsc: plugin entry is missing a string "transform" field`);
93
- }
94
- const entryCandidates = collectModuleResolutionCandidates(specifier, node_path_1.default.join(entry.baseDir, "package.json"), undefined);
95
- // Capture every candidate before resolution chooses the descriptor entry.
96
- // A post-resolution snapshot could bless a higher-priority file created
97
- // after the resolver had already selected the old entry.
98
- const entryCandidateHashes = hashHostInputPaths(entryCandidates);
99
- const entryCandidateRealpaths = realpathHostInputPaths(entryCandidates);
100
- const request = resolvePluginRequest(specifier, entry.baseDir);
101
- const loaded = loadPluginEntry(entry.config, { ...context, plugin: entry.config }, request, effectiveEnv);
102
- const loadedHostInputHashes = mergeObservedHostInputHashes(loaded.hostInputHashes, hashHostInputPaths(Object.keys(loaded.hostInputHashes)));
103
- const loadedHostInputRealpaths = mergeObservedHostInputRealpaths(loaded.hostInputRealpaths, realpathHostInputPaths(Object.keys(loaded.hostInputRealpaths)));
104
- const hostInputHashes = mergeObservedHostInputHashes(entryCandidateHashes, loadedHostInputHashes);
105
- const hostInputRealpaths = mergeObservedHostInputRealpaths(entryCandidateRealpaths, loadedHostInputRealpaths);
106
- for (const input of loaded.hostInputs) {
107
- const absolute = node_path_1.default.resolve(input);
108
- if (!Object.prototype.hasOwnProperty.call(loadedHostInputHashes, absolute)) {
109
- delete hostInputHashes[absolute];
110
- }
111
- }
112
- return {
113
- ...loaded,
114
- hostInputHashes,
115
- hostInputRealpaths,
116
- hostInputs: [...loaded.hostInputs, ...entryCandidates],
117
- request,
118
- };
119
- }));
120
- const plugins = composePluginSources(entries, loadedEntries.map((entry) => entry.plugin));
121
- const ttscVersion = readTtscVersion();
122
- const tsgoVersion = readTsgoVersion(context.projectRoot);
123
- const records = plugins.map((plugin, index) => {
124
- const stage = resolvePluginStage(plugin);
125
- validatePluginSource(plugin);
126
- const contributors = validatePluginContributors(plugin);
127
- const source = resolvePluginSource(plugin.source, context.projectRoot);
128
- const kind = resolveNativeSourceKind(source, plugin, entries[index].config, index);
129
- if (kind === "linked" && stage !== "transform") {
130
- throw new Error(`ttsc: plugin "${pluginLabel(plugin, entries[index].config, index)}" source is a linked Go package, but only transform-stage plugins can be linked into a compiler host`);
131
- }
132
- const linkedContributorName = kind === "linked"
133
- ? `linked_${String(index).padStart(6, "0")}`
134
- : undefined;
135
- const hostInputs = validatePluginHostInputs(plugin, index);
136
- const pluginHostInputHashes = validatePluginHostInputHashes(plugin, index, hostInputs);
137
- const pluginHostInputRealpaths = validatePluginHostInputRealpaths(plugin, index, hostInputs);
138
- return {
139
- capabilities: plugin.capabilities,
140
- contributors,
141
- config: entries[index].config,
142
- kind,
143
- label: pluginLabel(plugin, entries[index].config, index),
144
- linkedContributorName,
145
- name: plugin.name,
146
- reportsTypeScriptDiagnostics: plugin.reportsTypeScriptDiagnostics === true,
147
- request: loadedEntries[index].request,
148
- hostInputHashes: mergePluginHostInputHashes(loadedEntries[index].hostInputHashes, pluginHostInputHashes, loadedEntries[index].hostInputs, hostInputs),
149
- hostInputRealpaths: mergePluginHostInputHashes(loadedEntries[index].hostInputRealpaths, pluginHostInputRealpaths, loadedEntries[index].hostInputs, hostInputs),
150
- hostInputs: [...loadedEntries[index].hostInputs, ...hostInputs],
151
- source,
152
- stage,
153
- };
154
- });
155
- options.onWatchInputs?.(records.flatMap((record) => [
156
- record.source,
157
- ...(record.contributors?.map((contributor) => contributor.source) ?? []),
158
- ]));
159
- const linkedContributors = records
160
- .filter((record) => record.stage === "transform")
161
- .flatMap((record) => record.kind === "linked"
162
- ? [{ name: record.linkedContributorName, source: record.source }]
163
- : []);
164
- const transformHosts = records.filter((record) => record.stage === "transform" && record.kind === "executable");
165
- const hostContributors = linkedContributors.length === 0 ? undefined : linkedContributors;
166
- const builtTransformHosts = new Map();
167
- for (const record of transformHosts) {
168
- builtTransformHosts.set(record, (0, buildSourcePlugin_1.buildSourcePlugin)({
169
- baseDir: context.projectRoot,
170
- cacheDir: options.cacheDir,
171
- contributors: mergeContributors(record.contributors, hostContributors),
172
- env: effectiveEnv,
173
- pluginName: record.label,
174
- source: record.source,
175
- ttscVersion,
176
- tsgoVersion,
177
- }));
178
- }
179
- const fallbackDriverHost = transformHosts.length === 0 && linkedContributors.length !== 0
180
- ? (0, buildSourcePlugin_1.buildSourcePlugin)({
181
- baseDir: context.projectRoot,
182
- cacheDir: options.cacheDir,
183
- contributors: linkedContributors,
184
- env: effectiveEnv,
185
- label: "linked plugin host",
186
- pluginName: "linked-plugin-host",
187
- source: node_path_1.default.join(ttscPackageRoot(), "cmd", "utility-host"),
188
- ttscVersion,
189
- tsgoVersion,
190
- })
191
- : undefined;
192
- const selectedTransformHost = transformHosts.length === 0
193
- ? fallbackDriverHost
194
- : builtTransformHosts.get(transformHosts[0]);
195
- const nativePlugins = records.map((record) => {
196
- const binary = record.stage === "transform" && record.kind === "linked"
197
- ? selectedTransformHost
198
- : record.stage === "transform"
199
- ? builtTransformHosts.get(record)
200
- : (0, buildSourcePlugin_1.buildSourcePlugin)({
201
- baseDir: context.projectRoot,
202
- cacheDir: options.cacheDir,
203
- contributors: record.contributors,
204
- env: effectiveEnv,
205
- pluginName: record.label,
206
- source: record.source,
207
- ttscVersion,
208
- tsgoVersion,
209
- });
210
- if (binary === undefined) {
211
- throw new Error(`ttsc: plugin "${record.label}" is a linked Go package, but no compiler host is available`);
212
- }
213
- return {
214
- binary,
215
- capabilities: record.capabilities,
216
- config: record.config,
217
- contributors: record.contributors,
218
- kind: record.kind,
219
- name: record.name,
220
- reportsTypeScriptDiagnostics: record.reportsTypeScriptDiagnostics,
221
- source: record.source,
222
- stage: record.stage,
223
- };
224
- });
225
- return {
226
- ...collectHostInputSnapshot(project, context, records, projectHostInputs, revalidateHostInputHashes(projectHostInputHashes, projectHostInputs), revalidateHostInputRealpaths(projectHostInputRealpaths, projectHostInputs)),
227
- nativePlugins: orderNativePlugins(nativePlugins),
228
- project,
229
- };
230
- }
231
- /**
232
- * Collect exact JavaScript-host files that universally influence the loaded
233
- * transform. Program files belong to the native reference graph; this list is
234
- * deliberately limited to config ancestry, descriptor entries, the project
235
- * manifest controlling auto-discovery, and explicit plugin config files.
236
- */
237
- function collectHostInputSnapshot(project, context, records, baselineInputs, baselineHashes, baselineRealpaths) {
238
- const inputs = new Set(baselineInputs.map((file) => node_path_1.default.resolve(file)));
239
- const configBase = context.pluginConfigDir ?? node_path_1.default.dirname(project.path);
240
- for (const record of records) {
241
- inputs.add(node_path_1.default.resolve(record.request));
242
- for (const hostInput of record.hostInputs) {
243
- inputs.add(node_path_1.default.resolve(hostInput));
244
- }
245
- const descriptorManifest = findNearestPackageJson(record.request);
246
- if (descriptorManifest !== undefined) {
247
- inputs.add(node_path_1.default.resolve(descriptorManifest));
248
- }
249
- const configFile = record.config.configFile;
250
- if (typeof configFile === "string" && configFile.trim() !== "") {
251
- inputs.add(node_path_1.default.isAbsolute(configFile)
252
- ? node_path_1.default.resolve(configFile)
253
- : node_path_1.default.resolve(configBase, configFile));
254
- }
255
- }
256
- const hostInputs = [...inputs].sort();
257
- const evaluationHashes = mergeObservedHostInputHashes(baselineHashes, ...records.map((record) => record.hostInputHashes));
258
- const evaluationRealpaths = mergeObservedHostInputRealpaths(baselineRealpaths, ...records.map((record) => record.hostInputRealpaths));
259
- for (const record of records) {
260
- for (const input of record.hostInputs) {
261
- const absolute = node_path_1.default.resolve(input);
262
- if (!Object.prototype.hasOwnProperty.call(record.hostInputHashes, absolute)) {
263
- delete evaluationHashes[absolute];
264
- }
265
- if (!Object.prototype.hasOwnProperty.call(record.hostInputRealpaths, absolute)) {
266
- delete evaluationRealpaths[absolute];
267
- }
268
- }
269
- }
270
- const hostInputHashes = Object.fromEntries(hostInputs.flatMap((file) => Object.prototype.hasOwnProperty.call(evaluationHashes, file)
271
- ? [[file, evaluationHashes[file]]]
272
- : []));
273
- const hostInputRealpaths = Object.fromEntries(hostInputs.flatMap((file) => Object.prototype.hasOwnProperty.call(evaluationRealpaths, file)
274
- ? [[file, evaluationRealpaths[file]]]
275
- : []));
276
- return { hostInputHashes, hostInputRealpaths, hostInputs };
277
- }
278
- /**
279
- * Read one project configuration while its complete discovery surface remains
280
- * unchanged. The preliminary read discovers the input set; the accepted read is
281
- * bracketed by equal fingerprints for that same set. A repeatedly changing
282
- * project is still returned so compilation can make progress, but without any
283
- * cache proof for the ambiguous snapshot.
284
- */
285
- function readProjectHostInputSnapshot(options) {
286
- const { includePluginDiscovery, ...projectOptions } = options;
287
- let project = (0, readProjectConfig_1.readProjectConfig)(projectOptions);
288
- let hostInputs = collectProjectHostInputs(project, includePluginDiscovery);
289
- const observedInputs = new Set(hostInputs);
290
- for (let attempt = 0; attempt < 3; attempt++) {
291
- const before = hashHostInputPaths(hostInputs);
292
- const beforeRealpaths = realpathHostInputPaths(hostInputs);
293
- const beforeSignatures = hostInputMetadataSignatures(hostInputs);
294
- const candidateProject = (0, readProjectConfig_1.readProjectConfig)(projectOptions);
295
- const candidateInputs = collectProjectHostInputs(candidateProject, includePluginDiscovery);
296
- for (const input of candidateInputs)
297
- observedInputs.add(input);
298
- const after = hashHostInputPaths(candidateInputs);
299
- const afterRealpaths = realpathHostInputPaths(candidateInputs);
300
- const afterSignatures = hostInputMetadataSignatures(candidateInputs);
301
- if (equalHostInputLists(hostInputs, candidateInputs) &&
302
- equalHostInputHashes(before, after) &&
303
- equalHostInputHashes(beforeRealpaths, afterRealpaths) &&
304
- beforeSignatures !== undefined &&
305
- afterSignatures !== undefined &&
306
- equalHostInputHashes(beforeSignatures, afterSignatures)) {
307
- return {
308
- hostInputHashes: after,
309
- hostInputRealpaths: afterRealpaths,
310
- hostInputs: candidateInputs,
311
- project: candidateProject,
312
- };
313
- }
314
- project = candidateProject;
315
- hostInputs = candidateInputs;
316
- }
317
- return {
318
- hostInputHashes: {},
319
- hostInputRealpaths: {},
320
- hostInputs: [...observedInputs].sort(),
321
- project,
322
- };
323
- }
324
- function equalHostInputLists(first, second) {
325
- return (first.length === second.length &&
326
- first.every((file, index) => node_path_1.default.resolve(file) === node_path_1.default.resolve(second[index])));
327
- }
328
- function equalHostInputHashes(first, second) {
329
- const files = Object.keys(first);
330
- return (files.length === Object.keys(second).length &&
331
- files.every((file) => Object.prototype.hasOwnProperty.call(second, file) &&
332
- first[file] === second[file]));
333
- }
334
- /** Retain proof only for inputs whose initial and final observations agree. */
335
- function revalidateHostInputHashes(initial, inputs) {
336
- const current = hashHostInputPaths(inputs);
337
- const output = {};
338
- for (const input of inputs) {
339
- const absolute = node_path_1.default.resolve(input);
340
- if (Object.prototype.hasOwnProperty.call(initial, absolute) &&
341
- initial[absolute] === current[absolute]) {
342
- output[absolute] = current[absolute];
343
- }
344
- }
345
- return output;
346
- }
347
- /** Keep physical-identity proof only while the same path resolves identically. */
348
- function revalidateHostInputRealpaths(initial, inputs) {
349
- const current = realpathHostInputPaths(inputs);
350
- return Object.fromEntries(inputs.flatMap((input) => {
351
- const absolute = node_path_1.default.resolve(input);
352
- return Object.prototype.hasOwnProperty.call(initial, absolute) &&
353
- initial[absolute] === current[absolute]
354
- ? [[absolute, current[absolute]]]
355
- : [];
356
- }));
357
- }
358
- function hashHostInput(file) {
359
- try {
360
- if (node_fs_1.default.statSync(file).isDirectory()) {
361
- return node_crypto_1.default
362
- .createHash("sha256")
363
- .update("ttsc:host-input:directory\0")
364
- .digest("hex");
365
- }
366
- return node_crypto_1.default
367
- .createHash("sha256")
368
- .update(node_fs_1.default.readFileSync(file))
369
- .digest("hex");
370
- }
371
- catch {
372
- return null;
373
- }
374
- }
375
- function hashHostInputPaths(files) {
376
- return Object.fromEntries(files.map((file) => [node_path_1.default.resolve(file), hashHostInput(file)]));
377
- }
378
- /** Physical path selected by a host input, or null while it is unresolved. */
379
- function realpathHostInput(file) {
380
- try {
381
- return node_fs_1.default.realpathSync.native(file);
382
- }
383
- catch {
384
- return null;
385
- }
386
- }
387
- function realpathHostInputPaths(files) {
388
- return Object.fromEntries(files.map((file) => [node_path_1.default.resolve(file), realpathHostInput(file)]));
389
- }
390
- /**
391
- * Metadata identity that survives content-preserving reads but exposes A-B-A
392
- * replacement. Missing paths are tied to the nearest existing ancestor whose
393
- * directory metadata changes when the missing branch appears or disappears.
394
- */
395
- function hostInputMetadataSignature(file) {
396
- const requested = node_path_1.default.resolve(file);
397
- let current = requested;
398
- for (;;) {
399
- try {
400
- const link = node_fs_1.default.lstatSync(current, { bigint: true });
401
- let target = link;
402
- if (link.isSymbolicLink()) {
403
- try {
404
- target = node_fs_1.default.statSync(current, { bigint: true });
405
- }
406
- catch {
407
- // A broken link's own metadata cannot expose its target appearing
408
- // and disappearing during evaluation. Decline cache proof instead.
409
- return undefined;
410
- }
411
- }
412
- return [
413
- node_path_1.default.relative(current, requested),
414
- link.dev,
415
- link.ino,
416
- link.mode,
417
- link.size,
418
- link.mtimeNs,
419
- link.ctimeNs,
420
- target.dev,
421
- target.ino,
422
- target.mode,
423
- target.size,
424
- target.mtimeNs,
425
- target.ctimeNs,
426
- ].join(":");
427
- }
428
- catch (error) {
429
- if (!isMissingPathError(error))
430
- return undefined;
431
- const parent = node_path_1.default.dirname(current);
432
- if (parent === current)
433
- return undefined;
434
- current = parent;
435
- }
436
- }
437
- }
438
- function hostInputMetadataSignatures(files) {
439
- const output = {};
440
- for (const file of files) {
441
- const signature = hostInputMetadataSignature(file);
442
- if (signature === undefined)
443
- return undefined;
444
- output[node_path_1.default.resolve(file)] = signature;
445
- }
446
- return output;
447
- }
448
- function isMissingPathError(error) {
449
- const code = error?.code;
450
- return code === "ENOENT" || code === "ENOTDIR";
451
- }
452
- /** Return config ancestry and the manifest controlling package discovery. */
453
- function collectProjectHostInputs(project, includePluginDiscovery = true) {
454
- const inputs = new Set(project.configPaths.map((file) => node_path_1.default.resolve(file)));
455
- if (!includePluginDiscovery)
456
- return [...inputs].sort();
457
- const manifestCandidates = collectNearestPackageJsonCandidates(project.root);
458
- for (const candidate of manifestCandidates)
459
- inputs.add(candidate);
460
- const manifest = manifestCandidates.find(existingFile);
461
- if (manifest !== undefined) {
462
- const projectManifest = readPackageManifest(manifest);
463
- if (projectManifest !== undefined) {
464
- const projectRoot = node_path_1.default.dirname(manifest);
465
- for (const dependency of directDependencyNames(projectManifest)) {
466
- const dependencyManifest = resolveDependencyPackageJson(dependency, projectRoot);
467
- for (const candidate of collectDependencyManifestCandidates(dependency, manifest, dependencyManifest)) {
468
- inputs.add(candidate);
469
- }
470
- if (dependencyManifest !== undefined) {
471
- inputs.add(node_path_1.default.resolve(dependencyManifest));
472
- }
473
- }
474
- }
475
- }
476
- return [...inputs].sort();
477
- }
478
- // The direct evaluator preloads ttsx's supported Node hook, whose
479
- // extensionless rescue order includes TypeScript and ESM/CJS spellings in
480
- // addition to Node's ordinary CommonJS probes.
481
- const MODULE_PROBE_EXTENSIONS = [
482
- ".ts",
483
- ".tsx",
484
- ".mts",
485
- ".cts",
486
- ".js",
487
- ".mjs",
488
- ".cjs",
489
- ".json",
490
- ".node",
491
- ];
492
- /** Record every file whose later appearance can change one module resolution. */
493
- function collectModuleResolutionCandidates(specifier, parentFile, resolvedFile) {
494
- const inputs = new Set();
495
- const recordedBases = new Set();
496
- const candidates = (base) => [
497
- base,
498
- ...MODULE_PROBE_EXTENSIONS.map((extension) => base + extension),
499
- node_path_1.default.join(base, "package.json"),
500
- ...MODULE_PROBE_EXTENSIONS.map((extension) => node_path_1.default.join(base, `index${extension}`)),
501
- ];
502
- const recordManifestTargets = (value, directory, allowBare = false) => {
503
- if (typeof value === "string") {
504
- if (value !== "" &&
505
- (allowBare || value.startsWith("./") || value.startsWith("../"))) {
506
- recordBase(node_path_1.default.resolve(directory, value));
507
- }
508
- return;
509
- }
510
- if (Array.isArray(value)) {
511
- for (const item of value) {
512
- recordManifestTargets(item, directory, allowBare);
513
- }
514
- return;
515
- }
516
- if (isRecord(value)) {
517
- for (const item of Object.values(value)) {
518
- recordManifestTargets(item, directory, allowBare);
519
- }
520
- }
521
- };
522
- const recordBase = (base) => {
523
- const resolvedBase = node_path_1.default.resolve(base);
524
- if (recordedBases.has(resolvedBase))
525
- return;
526
- recordedBases.add(resolvedBase);
527
- for (const candidate of candidates(resolvedBase)) {
528
- inputs.add(node_path_1.default.resolve(candidate));
529
- }
530
- try {
531
- const manifest = (0, readConfigJson_1.readJsonFile)(node_path_1.default.join(resolvedBase, "package.json"));
532
- if (isRecord(manifest)) {
533
- recordManifestTargets(manifest.exports, resolvedBase);
534
- recordManifestTargets(manifest.module, resolvedBase, true);
535
- recordManifestTargets(manifest.main, resolvedBase, true);
536
- }
537
- }
538
- catch {
539
- // A malformed selected manifest is reported by normal resolution/load.
540
- }
541
- };
542
- const selectedBy = (base) => {
543
- if (resolvedFile === undefined)
544
- return false;
545
- let selected;
546
- try {
547
- selected = node_fs_1.default.realpathSync.native(resolvedFile);
548
- }
549
- catch {
550
- selected = node_path_1.default.resolve(resolvedFile);
551
- }
552
- for (const candidate of candidates(base)) {
553
- try {
554
- const canonical = node_fs_1.default.realpathSync.native(candidate);
555
- const relative = node_path_1.default.relative(canonical, selected);
556
- if (relative === "" ||
557
- (node_fs_1.default.statSync(canonical).isDirectory() &&
558
- relative !== ".." &&
559
- !relative.startsWith(`..${node_path_1.default.sep}`) &&
560
- !node_path_1.default.isAbsolute(relative))) {
561
- return true;
562
- }
563
- }
564
- catch {
565
- // Missing candidates are the inputs this function intentionally keeps.
566
- }
567
- }
568
- return false;
569
- };
570
- const localBases = () => {
571
- if (specifier.startsWith("file:"))
572
- return [(0, node_url_1.fileURLToPath)(specifier)];
573
- const directory = node_path_1.default.dirname(parentFile);
574
- const raw = node_path_1.default.resolve(directory, specifier);
575
- const suffixStart = specifier.search(/[?#]/);
576
- if (suffixStart === -1)
577
- return [raw];
578
- const pathname = specifier.slice(0, suffixStart);
579
- return pathname === ""
580
- ? [raw]
581
- : [...new Set([raw, node_path_1.default.resolve(directory, pathname)])];
582
- };
583
- if (specifier.startsWith(".") ||
584
- node_path_1.default.isAbsolute(specifier) ||
585
- specifier.startsWith("file:")) {
586
- try {
587
- for (const base of localBases()) {
588
- // An existing exact file wins before extension and directory probes.
589
- // Its own recorded identity is therefore sufficient; siblings cannot
590
- // supersede it while it exists.
591
- if (selectedByExactFile(base, resolvedFile) ||
592
- (resolvedFile === undefined && existingFile(base))) {
593
- inputs.add(node_path_1.default.resolve(base));
594
- }
595
- else {
596
- recordBase(base);
597
- }
598
- }
599
- }
600
- catch {
601
- // Invalid URL spellings are diagnosed by the real resolver.
602
- }
603
- return [...inputs];
604
- }
605
- const parts = specifier.split("/");
606
- const packageParts = parts[0]?.startsWith("@")
607
- ? parts.slice(0, 2)
608
- : parts.slice(0, 1);
609
- if (packageParts.some((part) => part === undefined || part === "")) {
610
- return [...inputs];
611
- }
612
- const packageName = packageParts.join("/");
613
- const subpath = parts.slice(packageParts.length);
614
- const searchPaths = (0, node_module_1.createRequire)(parentFile).resolve.paths(specifier) ?? [];
615
- for (const searchPath of searchPaths) {
616
- const packageDirectory = node_path_1.default.join(searchPath, packageName);
617
- recordBase(packageDirectory);
618
- if (subpath.length !== 0) {
619
- recordBase(node_path_1.default.join(packageDirectory, ...subpath));
620
- }
621
- if (selectedBy(packageDirectory))
622
- break;
623
- }
624
- return [...inputs];
625
- }
626
- function existingFile(file) {
627
- try {
628
- return node_fs_1.default.statSync(file).isFile();
629
- }
630
- catch {
631
- return false;
632
- }
633
- }
634
- function selectedByExactFile(candidate, selected) {
635
- if (selected === undefined)
636
- return false;
637
- try {
638
- return (node_fs_1.default.realpathSync.native(candidate) === node_fs_1.default.realpathSync.native(selected));
639
- }
640
- catch {
641
- return node_path_1.default.resolve(candidate) === node_path_1.default.resolve(selected);
642
- }
643
- }
644
- /** Record package manifests whose later appearance can redirect discovery. */
645
- function collectDependencyManifestCandidates(packageName, parentFile, selectedManifest) {
646
- const out = [];
647
- let selectedDirectory;
648
- if (selectedManifest !== undefined) {
649
- try {
650
- selectedDirectory = node_fs_1.default.realpathSync.native(node_path_1.default.dirname(selectedManifest));
651
- }
652
- catch {
653
- selectedDirectory = node_path_1.default.resolve(node_path_1.default.dirname(selectedManifest));
654
- }
655
- }
656
- for (const searchPath of (0, node_module_1.createRequire)(parentFile).resolve.paths(packageName) ?? []) {
657
- const packageDirectory = node_path_1.default.join(searchPath, ...packageName.split("/"));
658
- out.push(node_path_1.default.join(packageDirectory, "package.json"));
659
- if (selectedDirectory === undefined)
660
- continue;
661
- try {
662
- if (node_fs_1.default.realpathSync.native(packageDirectory) === selectedDirectory)
663
- break;
664
- }
665
- catch {
666
- // Keep searching until the selected package directory is reached.
667
- }
668
- }
669
- return out;
670
- }
671
- function composePluginSources(entries, plugins) {
672
- const aggregates = plugins
673
- .map((plugin, index) => ({ index, plugin }))
674
- .filter(({ plugin }) => Array.isArray(plugin.composes));
675
- if (aggregates.length === 0) {
676
- return [...plugins];
677
- }
678
- for (const { plugin } of aggregates) {
679
- for (const target of plugin.composes) {
680
- if (typeof target !== "string" || target.trim() === "") {
681
- throw new Error(`ttsc: plugin "${plugin.name}" has an invalid "composes" target; ` +
682
- `targets must be non-empty plugin names or transform specifiers`);
683
- }
684
- }
685
- }
686
- // Composition is intentionally one hop only: A.composes=[B] sends B to A's
687
- // binary, but if B.composes=[C] then C uses B's original source and does NOT
688
- // cascade to A. Detect cycles (A.composes=[B] && B.composes=[A]) and throw,
689
- // otherwise the silent reswap below would mis-route both plugins.
690
- for (const { index: i, plugin: a } of aggregates) {
691
- for (const { index: j, plugin: b } of aggregates) {
692
- if (i === j)
693
- continue;
694
- const aTransform = entries[i]?.config.transform;
695
- const bTransform = entries[j]?.config.transform;
696
- const aComposesB = a.composes.some((alias) => matchesPluginAlias(alias, b, bTransform));
697
- const bComposesA = b.composes.some((alias) => matchesPluginAlias(alias, a, aTransform));
698
- if (aComposesB && bComposesA) {
699
- throw new Error(`ttsc: plugin composes cycle detected between "${a.name}" and "${b.name}"; ` +
700
- `each plugin lists the other in its "composes" array — composition is one hop only, not transitive`);
701
- }
702
- }
703
- }
704
- return plugins.map((plugin, index) => {
705
- const transform = entries[index]?.config.transform;
706
- const matchingAggregates = aggregates.filter(({ index: aggregateIndex, plugin: aggregatePlugin }) => aggregateIndex !== index &&
707
- aggregatePlugin.composes.some((alias) => matchesPluginAlias(alias, plugin, transform)));
708
- if (matchingAggregates.length > 1) {
709
- throw new Error(`ttsc: plugin "${plugin.name}" is composed by multiple aggregate plugins; ` +
710
- `each plugin entry can be redirected to only one aggregate native host`);
711
- }
712
- const aggregate = matchingAggregates[0];
713
- if (aggregate === undefined) {
714
- return plugin;
715
- }
716
- // A composed plugin's source is rerouted to the aggregate's binary,
717
- // so its own `contributors` would link into a different host than
718
- // it was authored against. The "one binary" guarantee in the
719
- // protocol doc holds only when the composed plugin defers entirely
720
- // to the aggregate; reject early instead of silently producing two
721
- // diverging binaries.
722
- if (plugin.contributors && plugin.contributors.length > 0) {
723
- throw new Error(`ttsc: plugin "${plugin.name}" is composed by "${aggregate.plugin.name}" but declares its own "contributors"; ` +
724
- `move the contributors onto the aggregate plugin or drop the composes redirect`);
725
- }
726
- return {
727
- ...plugin,
728
- source: aggregate.plugin.source,
729
- contributors: aggregate.plugin.contributors,
730
- // The composed plugin's runtime BINARY is the aggregate's binary,
731
- // so the CLI surface (which flags the sidecar parses) is the
732
- // aggregate's. Inherit `capabilities` from the aggregate so a
733
- // capability the aggregate declares — e.g. threadingArgs — does
734
- // not get silently dropped just because the composed entry's own
735
- // descriptor omitted it. If the aggregate did not set capabilities
736
- // we keep the composed plugin's own as a fallback.
737
- capabilities: aggregate.plugin.capabilities ?? plugin.capabilities,
738
- };
739
- });
740
- }
741
- function matchesPluginAlias(alias, plugin, transform) {
742
- return (alias === plugin.name ||
743
- (typeof transform === "string" && alias === transform));
744
- }
745
- /**
746
- * Return `true` when the project has at least one enabled plugin entry.
747
- *
748
- * Used by callers that need to skip plugin-specific work when no plugins are
749
- * configured, without paying the full cost of `loadProjectPlugins`.
750
- *
751
- * @param entries - Explicit entries; `false` always returns `false`.
752
- */
753
- function hasProjectPluginEntries(project, entries) {
754
- if (entries === false) {
755
- return false;
756
- }
757
- return resolvePluginEntries(project, entries).some((entry) => entry.config.enabled !== false);
758
- }
759
- function resolvePluginEntries(project, entries) {
760
- if (entries !== undefined) {
761
- return entries.map((config) => ({
762
- baseDir: project.root,
763
- config,
764
- }));
765
- }
766
- const configured = project.compilerOptions.plugins.map((config, index) => {
767
- // A bare/package plugin specifier (e.g. "typia/lib/transform") must resolve
768
- // from the project's own node_modules, not from the tsconfig that declared
769
- // it: an `extends`ed base config (a shared `tests/config/tsconfig.json`)
770
- // declares the plugin, but the package is installed under the consuming
771
- // project. Only a relative specifier ("./plugin") is meaningful relative to
772
- // the declaring config's directory. Mirrors discoverPackagePluginEntries.
773
- const declaringDir = project.pluginBaseDirs[index];
774
- const baseDir = typeof config.transform === "string" &&
775
- isRelativePluginSpecifier(config.transform) &&
776
- declaringDir !== undefined
777
- ? declaringDir
778
- : project.root;
779
- return { baseDir, config };
780
- });
781
- return [...configured, ...discoverPackagePluginEntries(project, configured)];
782
- }
783
- function discoverPackagePluginEntries(project, configured) {
784
- const projectPackageJson = findNearestPackageJson(project.root);
785
- if (projectPackageJson === undefined) {
786
- return [];
787
- }
788
- const projectPackageRoot = node_path_1.default.dirname(projectPackageJson);
789
- const projectManifest = readPackageManifest(projectPackageJson);
790
- if (projectManifest === undefined) {
791
- return [];
792
- }
793
- const configuredTransforms = createConfiguredTransformSet(configured);
794
- const out = [];
795
- for (const name of directDependencyNames(projectManifest)) {
796
- const packageJson = resolveDependencyPackageJson(name, projectPackageRoot);
797
- if (packageJson === undefined) {
798
- continue;
799
- }
800
- const manifest = readPackageManifest(packageJson);
801
- const config = readPackagePluginConfig(name, manifest);
802
- if (config === undefined || config.enabled === false) {
803
- continue;
804
- }
805
- const packageRoot = node_path_1.default.dirname(packageJson);
806
- const transform = config.transform;
807
- if (typeof transform !== "string") {
808
- continue;
809
- }
810
- const baseDir = isRelativePluginSpecifier(transform)
811
- ? packageRoot
812
- : projectPackageRoot;
813
- const resolved = resolvePluginRequest(transform, baseDir);
814
- if (hasConfiguredTransform(configuredTransforms, transform, resolved)) {
815
- continue;
816
- }
817
- out.push({
818
- baseDir,
819
- config,
820
- });
821
- addConfiguredTransform(configuredTransforms, transform, resolved);
822
- }
823
- return out;
824
- }
825
- function createConfiguredTransformSet(entries) {
826
- const raw = new Set();
827
- const resolved = new Set();
828
- for (const entry of entries) {
829
- const transform = entry.config.transform;
830
- if (typeof transform !== "string" || transform.length === 0) {
831
- continue;
832
- }
833
- if (!isRelativePluginSpecifier(transform)) {
834
- raw.add(transform);
835
- }
836
- try {
837
- resolved.add(resolvePluginRequest(transform, entry.baseDir));
838
- }
839
- catch {
840
- // Keep the normal plugin loading error path for invalid explicit entries.
841
- }
842
- }
843
- return { raw, resolved };
844
- }
845
- function hasConfiguredTransform(configuredTransforms, transform, resolved) {
846
- return (configuredTransforms.resolved.has(resolved) ||
847
- (!isRelativePluginSpecifier(transform) &&
848
- configuredTransforms.raw.has(transform)));
849
- }
850
- function addConfiguredTransform(configuredTransforms, transform, resolved) {
851
- if (!isRelativePluginSpecifier(transform)) {
852
- configuredTransforms.raw.add(transform);
853
- }
854
- configuredTransforms.resolved.add(resolved);
855
- }
856
- function directDependencyNames(manifest) {
857
- const seen = new Set();
858
- const out = [];
859
- for (const dependencies of [
860
- manifest.dependencies,
861
- manifest.devDependencies,
862
- ]) {
863
- if (!isRecord(dependencies)) {
864
- continue;
865
- }
866
- for (const name of Object.keys(dependencies)) {
867
- if (seen.has(name)) {
868
- continue;
869
- }
870
- seen.add(name);
871
- out.push(name);
872
- }
873
- }
874
- return out;
875
- }
876
- function resolveDependencyPackageJson(name, projectRoot) {
877
- const direct = node_path_1.default.join(projectRoot, "node_modules", ...name.split("/"));
878
- const directManifest = node_path_1.default.join(direct, "package.json");
879
- if (existingFile(directManifest)) {
880
- return resolveRealPath(directManifest);
881
- }
882
- const projectPackage = node_path_1.default.join(projectRoot, "package.json");
883
- const projectRequire = (0, node_module_1.createRequire)(projectPackage);
884
- try {
885
- return resolveRealPath(projectRequire.resolve(`${name}/package.json`));
886
- }
887
- catch {
888
- try {
889
- return findNearestPackageJson(projectRequire.resolve(name));
890
- }
891
- catch {
892
- return undefined;
893
- }
894
- }
895
- }
896
- function findNearestPackageJson(location) {
897
- const selected = collectNearestPackageJsonCandidates(location).find(existingFile);
898
- return selected === undefined ? undefined : resolveRealPath(selected);
899
- }
900
- /** Every package-scope candidate through the first regular manifest file. */
901
- function collectNearestPackageJsonCandidates(location) {
902
- let current = node_fs_1.default.statSync(location).isDirectory()
903
- ? location
904
- : node_path_1.default.dirname(location);
905
- const candidates = [];
906
- while (true) {
907
- const manifest = node_path_1.default.resolve(current, "package.json");
908
- candidates.push(manifest);
909
- if (existingFile(manifest))
910
- return candidates;
911
- const parent = node_path_1.default.dirname(current);
912
- if (parent === current)
913
- return candidates;
914
- current = parent;
915
- }
916
- }
917
- /**
918
- * Read a package manifest, or `undefined` when the file is absent or is not a
919
- * JSON object. A malformed manifest throws naming the file: these are usually
920
- * files the user did not author, which makes an unattributed `JSON.parse`
921
- * message worse here than anywhere else.
922
- */
923
- function readPackageManifest(file) {
924
- if (!existingFile(file)) {
925
- return undefined;
926
- }
927
- const parsed = (0, readConfigJson_1.readJsonFile)(file);
928
- return isRecord(parsed) ? parsed : undefined;
929
- }
930
- function readPackagePluginConfig(packageName, manifest) {
931
- const ttsc = manifest?.ttsc;
932
- if (!isRecord(ttsc) || !("plugin" in ttsc)) {
933
- return undefined;
934
- }
935
- const plugin = ttsc.plugin;
936
- if (!isRecord(plugin) || Array.isArray(plugin)) {
937
- throw new Error(`ttsc: package ${JSON.stringify(packageName)} declares invalid "ttsc.plugin"; expected an object`);
938
- }
939
- if (typeof plugin.transform !== "string" || plugin.transform.length === 0) {
940
- throw new Error(`ttsc: package ${JSON.stringify(packageName)} declares invalid "ttsc.plugin.transform"; expected a non-empty string`);
941
- }
942
- return { ...plugin };
943
- }
944
- function isRecord(value) {
945
- return typeof value === "object" && value !== null;
946
- }
947
- function orderNativePlugins(plugins) {
948
- return [
949
- ...plugins.filter((plugin) => plugin.stage === "check"),
950
- ...plugins.filter((plugin) => plugin.stage === "transform"),
951
- ];
952
- }
953
- function loadPluginEntry(entry, base, request, effectiveEnv) {
954
- const specifier = entry.transform;
955
- if (typeof specifier !== "string" || specifier.length === 0) {
956
- throw new Error(`ttsc: plugin entry is missing a string "transform" field`);
957
- }
958
- // `dirname`/`filename` are per-entry: each plugin entry resolves to its own
959
- // descriptor module, so they are derived here from the resolved `request`
960
- // rather than carried on the shared base context. They give factories a
961
- // load-mode-independent stand-in for `__dirname`/`__filename`, which are
962
- // undefined when a descriptor loads through ttsx or as ESM.
963
- const context = {
964
- ...base,
965
- dirname: node_path_1.default.dirname(request),
966
- filename: request,
967
- };
968
- const loaded = loadPluginDescriptor(request, context, effectiveEnv);
969
- if (isTtscPlugin(loaded.descriptor)) {
970
- rejectJsTransformFunctions(specifier, loaded.descriptor);
971
- return {
972
- hostInputHashes: loaded.hostInputHashes,
973
- hostInputRealpaths: loaded.hostInputRealpaths,
974
- hostInputs: loaded.inputs,
975
- plugin: loaded.descriptor,
976
- };
977
- }
978
- throw new Error(`ttsc: plugin "${specifier}" does not export a valid ttsc plugin`);
979
- }
980
- /**
981
- * Require a plugin descriptor entry, falling back to `ttsx` when Node cannot
982
- * load a `.ts` source entry directly.
983
- *
984
- * A descriptor entry that is `.ts` source — especially a package root that
985
- * re-exports a runtime alongside the descriptor — fails Node's loader on its
986
- * first extensionless import or un-stripped type, and its imports can fan out
987
- * into a whole transitive graph of source packages. Rather than reimplement
988
- * that graph build, run the entry through `ttsx`, which already builds each
989
- * `.ts` dependency on demand. The run is forced plugins-off across the whole
990
- * graph (`--no-plugins` for the entry, `TTSC_PLUGIN_DESCRIPTOR_LOAD` for every
991
- * dependency), so the descriptor's own — possibly self-hosting — transform
992
- * never runs and cannot deadlock. A package that loads directly (a compiled
993
- * descriptor, or Bun's native `.ts`) never reaches the fallback.
994
- */
995
- function loadPluginDescriptor(request, context, effectiveEnv) {
996
- try {
997
- return loadCommonJsDescriptor(request, context, effectiveEnv);
998
- }
999
- catch (error) {
1000
- if (!TS_SOURCE_PATTERN.test(request) ||
1001
- !(error instanceof CommonJsDescriptorLoadError) ||
1002
- !error.retryWithTtsx) {
1003
- throw error;
1004
- }
1005
- const loaded = loadDescriptorViaTtsx(request, context, effectiveEnv);
1006
- if (loaded === undefined) {
1007
- throw error;
1008
- }
1009
- return loaded;
1010
- }
1011
- }
1012
- class CommonJsDescriptorLoadError extends Error {
1013
- retryWithTtsx;
1014
- constructor(message, retryWithTtsx) {
1015
- super(message);
1016
- this.retryWithTtsx = retryWithTtsx;
1017
- this.name = "CommonJsDescriptorLoadError";
1018
- }
1019
- }
1020
- /**
1021
- * Evaluate one CommonJS descriptor in a fresh runtime module-cache generation.
1022
- *
1023
- * Reloading an external descriptor dependency inside this process has no safe
1024
- * cache operation: retaining it serves stale exports, while deleting it splits
1025
- * any application singleton that required the same module first. Isolation
1026
- * gives every descriptor load current bytes without mutating the host's cache.
1027
- * The child invokes the factory before walking its graph, so lazy `require()`
1028
- * calls are included, and a failed first load cannot strand poisoned children.
1029
- */
1030
- function loadCommonJsDescriptor(request, context, effectiveEnv) {
1031
- const runtime = pluginDescriptorRuntimeBinary(effectiveEnv);
1032
- const runtimeCapabilities = (0, resolveNodeBinary_1.javascriptRuntimeCapabilities)(runtime, effectiveEnv, context.projectRoot);
1033
- const node = !runtimeCapabilities.bun &&
1034
- runtimeCapabilities.registerHooks &&
1035
- runtimeCapabilities.executable !== undefined
1036
- ? runtimeCapabilities.executable
1037
- : (0, resolveNodeBinary_1.resolveNodeBinary)(effectiveEnv, context.projectRoot);
1038
- const dir = createEvaluationTempDir();
1039
- const out = node_path_1.default.join(dir, "descriptor.json");
1040
- const inputsOut = node_path_1.default.join(dir, "descriptor-inputs.ndjson");
1041
- const diagnostics = node_path_1.default.join(dir, "descriptor.stderr");
1042
- const bunConfig = node_path_1.default.join(dir, "bunfig.toml");
1043
- const runtimeHookPreload = node_path_1.default.join(__dirname, "..", "..", "launcher", "internal", "runtimeHookPreload.js");
1044
- try {
1045
- if (runtimeCapabilities.bun) {
1046
- // A descriptor receives exactly the environment supplied by its ttsc
1047
- // invocation. Bun otherwise auto-loads project `.env*`, local/global
1048
- // bunfig preloads and loaders, and may install a missing package from the
1049
- // network. Those implicit authorities are neither part of Node's loader
1050
- // contract nor reproducible host inputs, so isolate this evaluator from
1051
- // them while retaining Bun's native TypeScript/module semantics.
1052
- node_fs_1.default.writeFileSync(bunConfig, "", "utf8");
1053
- }
1054
- const diagnosticsFd = node_fs_1.default.openSync(diagnostics, "w");
1055
- let result;
1056
- try {
1057
- result = node_child_process_1.default.spawnSync(runtime, [
1058
- ...(runtimeCapabilities.bun
1059
- ? [
1060
- "--no-env-file",
1061
- "--no-install",
1062
- `--config=${bunConfig}`,
1063
- `--tsconfig-override=${context.tsconfig}`,
1064
- ]
1065
- : []),
1066
- ...(runtimeCapabilities.registerHooks
1067
- ? ["--require", runtimeHookPreload]
1068
- : []),
1069
- "-e",
1070
- exports.COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE,
1071
- ], {
1072
- cwd: context.projectRoot,
1073
- env: {
1074
- ...effectiveEnv,
1075
- // The direct evaluator may be Bun, but ttsx and native config
1076
- // loaders require a real Node runtime with synchronous hooks.
1077
- ...(node === undefined ? {} : { TTSC_NODE_BINARY: node }),
1078
- TTSC_TTSX_BINARY: effectiveEnv.TTSC_TTSX_BINARY ?? process.env.TTSC_TTSX_BINARY,
1079
- TTSC_PLUGIN_CONTEXT: JSON.stringify(context),
1080
- TTSC_PLUGIN_DESCRIPTOR_LOAD: "1",
1081
- TTSC_PLUGIN_DESCRIPTOR_OUT: out,
1082
- TTSC_PLUGIN_DESCRIPTOR_INPUTS_ACTIVE: "1",
1083
- TTSC_PLUGIN_DESCRIPTOR_INPUTS_OUT: inputsOut,
1084
- TTSC_PLUGIN_ENTRY: request,
1085
- },
1086
- // Hold direct-evaluator diagnostics until its retry decision is
1087
- // known. A successful ttsx fallback must not inherit the expected
1088
- // loader stack from the discarded first attempt.
1089
- stdio: ["ignore", diagnosticsFd, diagnosticsFd],
1090
- windowsHide: true,
1091
- });
1092
- }
1093
- finally {
1094
- node_fs_1.default.closeSync(diagnosticsFd);
1095
- }
1096
- const failure = commonJsDescriptorProcessFailure(result, request);
1097
- if (failure !== undefined) {
1098
- const reason = (0, descriptorProcessFailure_1.pluginDescriptorFailureReason)(out);
1099
- const retryWithTtsx = commonJsDescriptorRetryWithTtsx(out);
1100
- if (!retryWithTtsx)
1101
- replayEvaluationDiagnostics(diagnostics);
1102
- throw new CommonJsDescriptorLoadError(reason === "" ? failure.message : `${failure.message}\n${reason}`, retryWithTtsx);
1103
- }
1104
- replayEvaluationDiagnostics(diagnostics);
1105
- if (!node_fs_1.default.existsSync(out)) {
1106
- throw new Error(`ttsc: plugin descriptor "${request}" evaluation in an isolated process produced no descriptor output.`);
1107
- }
1108
- let parsed;
1109
- try {
1110
- parsed = JSON.parse(node_fs_1.default.readFileSync(out, "utf8"));
1111
- }
1112
- catch (error) {
1113
- throw new Error(`ttsc: plugin descriptor "${request}" produced invalid isolated output: ${errorMessage(error)}`);
1114
- }
1115
- if (!isRecord(parsed) || !Array.isArray(parsed.inputs)) {
1116
- throw new Error(`ttsc: plugin descriptor "${request}" produced an invalid isolated result`);
1117
- }
1118
- const parsedHashes = isRecord(parsed.inputHashes)
1119
- ? Object.fromEntries(Object.entries(parsed.inputHashes).flatMap(([file, hash]) => typeof hash === "string" || hash === null
1120
- ? [[node_path_1.default.resolve(file), hash]]
1121
- : []))
1122
- : {};
1123
- const parsedRealpaths = isRecord(parsed.inputRealpaths)
1124
- ? Object.fromEntries(Object.entries(parsed.inputRealpaths).flatMap(([file, realpath]) => (typeof realpath === "string" && node_path_1.default.isAbsolute(realpath)) ||
1125
- realpath === null
1126
- ? [
1127
- [
1128
- node_path_1.default.resolve(file),
1129
- realpath === null ? null : node_path_1.default.resolve(realpath),
1130
- ],
1131
- ]
1132
- : []))
1133
- : {};
1134
- const stableParsedRealpaths = mergeObservedHostInputRealpaths(parsedRealpaths, realpathHostInputPaths(Object.keys(parsedRealpaths)));
1135
- for (const input of parsed.inputs) {
1136
- const absolute = node_path_1.default.resolve(String(input));
1137
- if (!Object.prototype.hasOwnProperty.call(stableParsedRealpaths, absolute)) {
1138
- delete parsedHashes[absolute];
1139
- }
1140
- }
1141
- const runtimeInputs = readTtsxDescriptorInputs(inputsOut, request);
1142
- return {
1143
- descriptor: parsed.descriptor,
1144
- hostInputHashes: omitUnstableHostInputHashes(mergeObservedHostInputHashes(parsedHashes, runtimeInputs.hostInputHashes), runtimeInputs.unstableInputs),
1145
- hostInputRealpaths: mergeObservedHostInputRealpaths(stableParsedRealpaths, runtimeInputs.hostInputRealpaths),
1146
- inputs: [
1147
- ...new Set([
1148
- ...parsed.inputs.map((input) => String(input)),
1149
- ...runtimeInputs.inputs,
1150
- ]),
1151
- ].sort(),
1152
- };
1153
- }
1154
- finally {
1155
- removeEvaluationTempDir(dir);
1156
- }
1157
- }
1158
- /** Validate plugin-declared universal host inputs. */
1159
- function validatePluginHostInputs(plugin, index) {
1160
- const label = plugin.name ?? `#${index + 1}`;
1161
- if (plugin.hostInputs === undefined)
1162
- return [];
1163
- if (!Array.isArray(plugin.hostInputs)) {
1164
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid "hostInputs"; expected an array of absolute paths`);
1165
- }
1166
- return plugin.hostInputs.map((file) => {
1167
- if (typeof file !== "string" || !node_path_1.default.isAbsolute(file)) {
1168
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid "hostInputs" entry ${JSON.stringify(file)}; expected an absolute path`);
1169
- }
1170
- return node_path_1.default.resolve(file);
1171
- });
1172
- }
1173
- /** Validate descriptor-supplied evaluation fingerprints for host inputs. */
1174
- function validatePluginHostInputHashes(plugin, index, hostInputs) {
1175
- const label = plugin.name ?? `#${index + 1}`;
1176
- if (plugin.hostInputHashes === undefined)
1177
- return {};
1178
- if (!isRecord(plugin.hostInputHashes) ||
1179
- Array.isArray(plugin.hostInputHashes)) {
1180
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid "hostInputHashes"; expected an object keyed by absolute hostInputs paths`);
1181
- }
1182
- const allowed = new Set(hostInputs.map((file) => node_path_1.default.resolve(file)));
1183
- const output = {};
1184
- for (const [file, hash] of Object.entries(plugin.hostInputHashes)) {
1185
- if (!node_path_1.default.isAbsolute(file)) {
1186
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid "hostInputHashes" key ${JSON.stringify(file)}; expected an absolute path`);
1187
- }
1188
- const absolute = node_path_1.default.resolve(file);
1189
- if (!allowed.has(absolute)) {
1190
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} fingerprints ${JSON.stringify(file)} without listing it in "hostInputs"`);
1191
- }
1192
- if (hash !== null &&
1193
- (typeof hash !== "string" || !/^[0-9a-f]{64}$/.test(hash))) {
1194
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid fingerprint for ${JSON.stringify(file)}; expected a lowercase SHA-256 digest or null`);
1195
- }
1196
- output[absolute] = hash;
1197
- }
1198
- return output;
1199
- }
1200
- /** Validate descriptor-supplied physical identities for host inputs. */
1201
- function validatePluginHostInputRealpaths(plugin, index, hostInputs) {
1202
- const label = plugin.name ?? `#${index + 1}`;
1203
- if (plugin.hostInputRealpaths === undefined)
1204
- return {};
1205
- if (!isRecord(plugin.hostInputRealpaths) ||
1206
- Array.isArray(plugin.hostInputRealpaths)) {
1207
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid "hostInputRealpaths"; expected an object keyed by absolute hostInputs paths`);
1208
- }
1209
- const allowed = new Set(hostInputs.map((file) => node_path_1.default.resolve(file)));
1210
- const output = {};
1211
- for (const [file, realpath] of Object.entries(plugin.hostInputRealpaths)) {
1212
- if (!node_path_1.default.isAbsolute(file)) {
1213
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid "hostInputRealpaths" key ${JSON.stringify(file)}; expected an absolute path`);
1214
- }
1215
- const absolute = node_path_1.default.resolve(file);
1216
- if (!allowed.has(absolute)) {
1217
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} identifies ${JSON.stringify(file)} without listing it in "hostInputs"`);
1218
- }
1219
- if (realpath !== null &&
1220
- (typeof realpath !== "string" || !node_path_1.default.isAbsolute(realpath))) {
1221
- throw new Error(`ttsc: plugin ${JSON.stringify(label)} has invalid physical identity for ${JSON.stringify(file)}; expected an absolute realpath or null`);
1222
- }
1223
- output[absolute] =
1224
- realpath === null ? null : node_path_1.default.resolve(realpath);
1225
- }
1226
- return output;
1227
- }
1228
- /** Merge snapshots and omit every path observed in contradictory states. */
1229
- function mergeObservedHostInputHashes(...sources) {
1230
- const conflicts = new Set();
1231
- const output = {};
1232
- for (const source of sources) {
1233
- for (const [file, hash] of Object.entries(source)) {
1234
- const absolute = node_path_1.default.resolve(file);
1235
- if (conflicts.has(absolute))
1236
- continue;
1237
- if (Object.prototype.hasOwnProperty.call(output, absolute) &&
1238
- output[absolute] !== hash) {
1239
- delete output[absolute];
1240
- conflicts.add(absolute);
1241
- continue;
1242
- }
1243
- output[absolute] = hash;
1244
- }
1245
- }
1246
- return output;
1247
- }
1248
- const mergeObservedHostInputRealpaths = mergeObservedHostInputHashes;
1249
- /** Prevent a later plugin claim from reviving an unstable loader input. */
1250
- function mergePluginHostInputHashes(first, second, loaderInputs, pluginInputs) {
1251
- const output = { ...first };
1252
- const guarded = new Set(loaderInputs.map((file) => node_path_1.default.resolve(file)));
1253
- for (const input of pluginInputs) {
1254
- const absolute = node_path_1.default.resolve(input);
1255
- if (!Object.prototype.hasOwnProperty.call(second, absolute)) {
1256
- delete output[absolute];
1257
- }
1258
- }
1259
- for (const [file, hash] of Object.entries(second)) {
1260
- const absolute = node_path_1.default.resolve(file);
1261
- if (guarded.has(absolute) &&
1262
- !Object.prototype.hasOwnProperty.call(first, absolute)) {
1263
- continue;
1264
- }
1265
- if (Object.prototype.hasOwnProperty.call(output, absolute) &&
1266
- output[absolute] !== hash) {
1267
- delete output[absolute];
1268
- continue;
1269
- }
1270
- output[absolute] = hash;
1271
- }
1272
- return output;
1273
- }
1274
- function omitUnstableHostInputHashes(hashes, unstableInputs) {
1275
- for (const input of unstableInputs)
1276
- delete hashes[node_path_1.default.resolve(input)];
1277
- return hashes;
1278
- }
1279
- /** CommonJS evaluator emitted into a clean Node process for every load. */
1280
- exports.COMMONJS_PLUGIN_DESCRIPTOR_SHIM_SOURCE = [
1281
- `const crypto = require("node:crypto");`,
1282
- `const fs = require("node:fs");`,
1283
- `const Module = require("node:module");`,
1284
- `const path = require("node:path");`,
1285
- `const { fileURLToPath } = require("node:url");`,
1286
- `const out = process.env.TTSC_PLUGIN_DESCRIPTOR_OUT;`,
1287
- `let retryWithTtsx = false;`,
1288
- `const moduleLoadFailures = new WeakMap();`,
1289
- `const moduleResolutionFailures = new WeakMap();`,
1290
- `function existingFile(file) { try { return fs.statSync(file).isFile(); } catch { return false; } }`,
1291
- `function shouldRetryWithTtsx(error) {`,
1292
- ` const loadFailure = error && (typeof error === "object" || typeof error === "function") ? moduleLoadFailures.get(error) : undefined;`,
1293
- ` if (loadFailure?.retryWithTtsx === true) return true;`,
1294
- ` const failure = error && (typeof error === "object" || typeof error === "function") ? moduleResolutionFailures.get(error) : undefined;`,
1295
- ` return failure?.retryWithTtsx === true;`,
1296
- `}`,
1297
- `try {`,
1298
- ` const request = process.env.TTSC_PLUGIN_ENTRY;`,
1299
- ` const context = JSON.parse(process.env.TTSC_PLUGIN_CONTEXT);`,
1300
- ` const inputs = new Set();`,
1301
- ` const inputHashes = new Map();`,
1302
- ` const inputRealpaths = new Map();`,
1303
- ` const inputSignatures = new Map();`,
1304
- ` const unstableInputHashes = new Set();`,
1305
- ` function missingPathError(error) { return error && (error.code === "ENOENT" || error.code === "ENOTDIR"); }`,
1306
- ` function inputMetadataSignature(file) {`,
1307
- ` const requested = path.resolve(file);`,
1308
- ` let current = requested;`,
1309
- ` for (;;) {`,
1310
- ` try {`,
1311
- ` const link = fs.lstatSync(current, { bigint: true });`,
1312
- ` let target = link;`,
1313
- ` if (link.isSymbolicLink()) {`,
1314
- ` try { target = fs.statSync(current, { bigint: true }); }`,
1315
- ` catch { return undefined; }`,
1316
- ` }`,
1317
- ` return [path.relative(current, requested), link.dev, link.ino, link.mode, link.size, link.mtimeNs, link.ctimeNs, target.dev, target.ino, target.mode, target.size, target.mtimeNs, target.ctimeNs].join(":");`,
1318
- ` } catch (error) {`,
1319
- ` if (!missingPathError(error)) return undefined;`,
1320
- ` const parent = path.dirname(current);`,
1321
- ` if (parent === current) return undefined;`,
1322
- ` current = parent;`,
1323
- ` }`,
1324
- ` }`,
1325
- ` }`,
1326
- ` function recordOneInput(file) {`,
1327
- ` file = path.resolve(file);`,
1328
- ` inputs.add(file);`,
1329
- ` if (unstableInputHashes.has(file)) return;`,
1330
- ` const beforeSignature = inputMetadataSignature(file);`,
1331
- ` let observedRealpath;`,
1332
- ` try { observedRealpath = fs.realpathSync.native(file); } catch { observedRealpath = null; }`,
1333
- ` let observed;`,
1334
- ` try { observed = fs.statSync(file).isDirectory() ? crypto.createHash("sha256").update("ttsc:host-input:directory\\0").digest("hex") : crypto.createHash("sha256").update(fs.readFileSync(file)).digest("hex"); } catch { observed = null; }`,
1335
- ` const afterSignature = inputMetadataSignature(file);`,
1336
- ` if (beforeSignature === undefined || afterSignature === undefined || beforeSignature !== afterSignature || (inputSignatures.has(file) && inputSignatures.get(file) !== afterSignature) || (inputRealpaths.has(file) && inputRealpaths.get(file) !== observedRealpath) || (inputHashes.has(file) && inputHashes.get(file) !== observed)) { inputHashes.delete(file); inputRealpaths.delete(file); inputSignatures.delete(file); unstableInputHashes.add(file); return; }`,
1337
- ` inputSignatures.set(file, afterSignature);`,
1338
- ` inputRealpaths.set(file, observedRealpath);`,
1339
- ` inputHashes.set(file, observed);`,
1340
- ` }`,
1341
- ` function recordInput(file) {`,
1342
- ` file = path.resolve(file);`,
1343
- ` recordOneInput(file);`,
1344
- ` const parsed = path.parse(file);`,
1345
- ` let current = parsed.root;`,
1346
- ` const relative = path.relative(parsed.root, file);`,
1347
- ` for (const segment of relative.split(path.sep).slice(0, -1)) {`,
1348
- ` if (segment === "") continue;`,
1349
- ` current = path.join(current, segment);`,
1350
- ` try {`,
1351
- ` if (fs.lstatSync(current).isSymbolicLink()) recordOneInput(current);`,
1352
- ` } catch {`,
1353
- ` break;`,
1354
- ` }`,
1355
- ` }`,
1356
- ` }`,
1357
- ` function asFile(resolved) {`,
1358
- ` if (typeof resolved !== "string") return undefined;`,
1359
- ` if (!resolved.startsWith("file:")) return path.isAbsolute(resolved) ? path.resolve(resolved) : undefined;`,
1360
- ` try { return path.resolve(fileURLToPath(resolved)); } catch { return undefined; }`,
1361
- ` }`,
1362
- ` function recordFile(resolved) {`,
1363
- ` const file = asFile(resolved);`,
1364
- ` if (file === undefined) return;`,
1365
- ` recordInput(file);`,
1366
- ` for (let directory = path.dirname(file);;) {`,
1367
- ` const manifest = path.join(directory, "package.json");`,
1368
- ` recordInput(manifest);`,
1369
- ` if (existingFile(manifest)) break;`,
1370
- ` const parent = path.dirname(directory);`,
1371
- ` if (parent === directory) break;`,
1372
- ` directory = parent;`,
1373
- ` }`,
1374
- ` }`,
1375
- ` function recordPackageManifests(file) {`,
1376
- ` for (let directory = path.dirname(path.resolve(file));;) {`,
1377
- ` const manifest = path.join(directory, "package.json");`,
1378
- ` recordInput(manifest);`,
1379
- ` if (existingFile(manifest)) return;`,
1380
- ` const parent = path.dirname(directory);`,
1381
- ` if (parent === directory) return;`,
1382
- ` directory = parent;`,
1383
- ` }`,
1384
- ` }`,
1385
- ` recordFile(request);`,
1386
- ` const moduleProbeExtensions = typeof globalThis.Bun === "object" ? [".tsx", ".jsx", ".ts", ".mjs", ".js", ".cjs", ".json"] : [".ts", ".tsx", ".mts", ".cts", ".js", ".mjs", ".cjs", ".json", ".node"];`,
1387
- ` const jsToTsProbeExtensions = new Map([[".js", [".ts", ".tsx"]], [".jsx", [".tsx"]], [".mjs", [".mts"]], [".cjs", [".cts"]]]);`,
1388
- ` function sourceSubstitutionCandidates(base) {`,
1389
- ` const extension = path.extname(base).toLowerCase();`,
1390
- ` const substitutions = jsToTsProbeExtensions.get(extension);`,
1391
- ` if (substitutions === undefined) return [];`,
1392
- ` const stem = base.slice(0, base.length - extension.length);`,
1393
- ` return substitutions.map((candidate) => stem + candidate);`,
1394
- ` }`,
1395
- ` function moduleCandidates(base) {`,
1396
- ` return [base, ...sourceSubstitutionCandidates(base), ...moduleProbeExtensions.map((extension) => base + extension), path.join(base, "package.json"), ...moduleProbeExtensions.map((extension) => path.join(base, "index" + extension))];`,
1397
- ` }`,
1398
- ` const recordedModuleBases = new Set();`,
1399
- ` function recordManifestTargets(value, directory, allowBare = false) {`,
1400
- ` if (typeof value === "string") {`,
1401
- ` if (value !== "" && (allowBare || value.startsWith("./") || value.startsWith("../"))) recordModuleCandidates(path.resolve(directory, value));`,
1402
- ` return;`,
1403
- ` }`,
1404
- ` if (Array.isArray(value)) { for (const item of value) recordManifestTargets(item, directory, allowBare); return; }`,
1405
- ` if (value && typeof value === "object") for (const item of Object.values(value)) recordManifestTargets(item, directory, allowBare);`,
1406
- ` }`,
1407
- ` function recordModuleCandidates(base) {`,
1408
- ` const resolvedBase = path.resolve(base);`,
1409
- ` if (recordedModuleBases.has(resolvedBase)) return;`,
1410
- ` recordedModuleBases.add(resolvedBase);`,
1411
- ` for (const candidate of moduleCandidates(resolvedBase)) recordInput(candidate);`,
1412
- ` try {`,
1413
- ` const manifest = JSON.parse(fs.readFileSync(path.join(resolvedBase, "package.json"), "utf8").replace(/^\uFEFF/, ""));`,
1414
- ` recordManifestTargets(manifest.exports, resolvedBase);`,
1415
- ` recordManifestTargets(manifest.module, resolvedBase, true);`,
1416
- ` recordManifestTargets(manifest.main, resolvedBase, true);`,
1417
- ` } catch {}`,
1418
- ` }`,
1419
- ` function candidateSelected(base, selected) {`,
1420
- ` if (selected === undefined) return false;`,
1421
- ` for (const candidate of moduleCandidates(base)) {`,
1422
- ` try {`,
1423
- ` const canonical = fs.realpathSync.native(candidate);`,
1424
- ` const relative = path.relative(canonical, selected);`,
1425
- ` if (relative === "" || (fs.statSync(canonical).isDirectory() && relative !== ".." && !relative.startsWith(".." + path.sep) && !path.isAbsolute(relative))) return true;`,
1426
- ` } catch {}`,
1427
- ` }`,
1428
- ` return false;`,
1429
- ` }`,
1430
- ` function localBases(specifier, parentFile) {`,
1431
- ` if (specifier.startsWith("file:")) return [fileURLToPath(specifier)];`,
1432
- ` const directory = path.dirname(parentFile);`,
1433
- ` const raw = path.resolve(directory, specifier);`,
1434
- ` const suffixStart = specifier.search(/[?#]/);`,
1435
- ` if (suffixStart === -1) return [raw];`,
1436
- ` const pathname = specifier.slice(0, suffixStart);`,
1437
- ` return pathname === "" ? [raw] : [...new Set([raw, path.resolve(directory, pathname)])];`,
1438
- ` }`,
1439
- ` function recordResolutionCandidates(specifier, parent, resolved) {`,
1440
- ` const parentFile = asFile(parent);`,
1441
- ` if (typeof specifier !== "string" || parentFile === undefined) return;`,
1442
- ` let selected;`,
1443
- ` try { const file = asFile(resolved); selected = file === undefined ? undefined : fs.realpathSync.native(file); } catch {}`,
1444
- ` if (specifier.startsWith(".") || path.isAbsolute(specifier) || specifier.startsWith("file:")) {`,
1445
- ` try {`,
1446
- ` for (const base of localBases(specifier, parentFile)) {`,
1447
- ` recordPackageManifests(base);`,
1448
- ` let exact = false;`,
1449
- ` try { exact = selected === undefined ? fs.statSync(base).isFile() : fs.realpathSync.native(base) === selected; } catch {}`,
1450
- ` if (exact) recordInput(base);`,
1451
- ` if (!exact) recordModuleCandidates(base);`,
1452
- ` }`,
1453
- ` } catch {}`,
1454
- ` return;`,
1455
- ` }`,
1456
- ` if (Module.isBuiltin(specifier) || specifier.startsWith("#")) return;`,
1457
- ` const parts = specifier.split("/");`,
1458
- ` const packageParts = parts[0].startsWith("@") ? parts.slice(0, 2) : parts.slice(0, 1);`,
1459
- ` if (packageParts.some((part) => part === undefined || part === "")) return;`,
1460
- ` const packageName = packageParts.join("/");`,
1461
- ` const subpath = parts.slice(packageParts.length);`,
1462
- ` const searchPaths = Module.createRequire(parentFile).resolve.paths(specifier) ?? [];`,
1463
- ` for (const searchPath of searchPaths) {`,
1464
- ` const packageDirectory = path.join(searchPath, packageName);`,
1465
- ` recordModuleCandidates(packageDirectory);`,
1466
- ` if (subpath.length !== 0) recordModuleCandidates(path.join(packageDirectory, ...subpath));`,
1467
- ` if (candidateSelected(packageDirectory, selected)) break;`,
1468
- ` }`,
1469
- ` }`,
1470
- ` function scanBunModuleGraph(entry) {`,
1471
- ` if (typeof globalThis.Bun !== "object" || typeof globalThis.Bun.Transpiler !== "function") return;`,
1472
- ` const scanned = new Set();`,
1473
- ` function scan(file) {`,
1474
- ` file = asFile(file);`,
1475
- ` if (file === undefined) return;`,
1476
- ` let canonical;`,
1477
- ` try { canonical = fs.realpathSync.native(file); } catch { return; }`,
1478
- ` if (scanned.has(canonical)) return;`,
1479
- ` scanned.add(canonical);`,
1480
- ` const extension = path.extname(canonical).toLowerCase();`,
1481
- ` if (![".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".mts", ".cts"].includes(extension)) return;`,
1482
- ` const loader = extension === ".tsx" ? "tsx" : extension === ".jsx" ? "jsx" : [".ts", ".mts", ".cts"].includes(extension) ? "ts" : "js";`,
1483
- ` let imports;`,
1484
- ` try {`,
1485
- ` const source = fs.readFileSync(canonical, "utf8");`,
1486
- ` imports = new globalThis.Bun.Transpiler({ loader }).scan(source).imports;`,
1487
- ` } catch { return; }`,
1488
- ` for (const imported of imports) {`,
1489
- ` const specifier = imported && imported.path;`,
1490
- ` if (typeof specifier !== "string" || specifier.startsWith("node:") || Module.isBuiltin(specifier)) continue;`,
1491
- ` recordResolutionCandidates(specifier, canonical, undefined);`,
1492
- ` try {`,
1493
- ` const resolved = globalThis.Bun.resolveSync(specifier, path.dirname(canonical));`,
1494
- ` recordResolutionCandidates(specifier, canonical, resolved);`,
1495
- ` recordFile(resolved);`,
1496
- ` scan(resolved);`,
1497
- ` } catch {`,
1498
- ` // The real descriptor load below owns user-facing resolution errors.`,
1499
- ` }`,
1500
- ` }`,
1501
- ` }`,
1502
- ` scan(entry);`,
1503
- ` }`,
1504
- ` if (typeof Module.registerHooks === "function") {`,
1505
- ` Module.registerHooks({`,
1506
- ` load(url, loadContext, nextLoad) {`,
1507
- ` try { return nextLoad(url, loadContext); }`,
1508
- ` catch (error) {`,
1509
- ` if (error && (typeof error === "object" || typeof error === "function")) moduleLoadFailures.set(error, { retryWithTtsx: error.code === "ERR_UNKNOWN_FILE_EXTENSION" });`,
1510
- ` throw error;`,
1511
- ` }`,
1512
- ` },`,
1513
- ` resolve(specifier, resolveContext, nextResolve) {`,
1514
- ` recordResolutionCandidates(specifier, resolveContext.parentURL, undefined);`,
1515
- ` let resolved;`,
1516
- ` try {`,
1517
- ` resolved = nextResolve(specifier, resolveContext);`,
1518
- ` } catch (error) {`,
1519
- ` if (error && (typeof error === "object" || typeof error === "function")) {`,
1520
- ` const parent = asFile(resolveContext.parentURL);`,
1521
- ` const anchor = typeof parent === "string" ? parent : request;`,
1522
- ` const candidate = specifier.startsWith(".") && path.extname(specifier) === "" ? path.resolve(path.dirname(anchor), specifier) : undefined;`,
1523
- ` const retryWithTtsx = candidate !== undefined && [".ts", ".cts", ".mts", ".tsx"].some((extension) => existingFile(candidate + extension) || existingFile(path.join(candidate, "index" + extension)));`,
1524
- ` moduleResolutionFailures.set(error, { retryWithTtsx });`,
1525
- ` }`,
1526
- ` throw error;`,
1527
- ` }`,
1528
- ` const url = typeof resolved === "string" ? resolved : resolved && resolved.url;`,
1529
- ` recordResolutionCandidates(specifier, resolveContext.parentURL, url);`,
1530
- ` recordFile(url);`,
1531
- ` return resolved;`,
1532
- ` },`,
1533
- ` });`,
1534
- ` }`,
1535
- ` if (typeof globalThis.Bun === "object" && typeof globalThis.Bun.plugin === "function") {`,
1536
- ` let insideBunResolve = false;`,
1537
- ` globalThis.Bun.plugin({`,
1538
- ` name: "ttsc-plugin-descriptor-inputs",`,
1539
- ` setup(build) {`,
1540
- ` build.onResolve({ filter: /.*/ }, (args) => {`,
1541
- ` if (insideBunResolve || args.path.startsWith("node:")) return;`,
1542
- ` try {`,
1543
- ` insideBunResolve = true;`,
1544
- ` const importer = args.importer && args.importer.startsWith("file:") ? fileURLToPath(args.importer) : args.importer;`,
1545
- ` const from = importer ? path.dirname(importer) : process.cwd();`,
1546
- ` recordResolutionCandidates(args.path, importer, undefined);`,
1547
- ` const resolved = globalThis.Bun.resolveSync(args.path, from);`,
1548
- ` recordResolutionCandidates(args.path, importer, resolved);`,
1549
- ` recordFile(resolved);`,
1550
- ` } catch {`,
1551
- ` // The real resolver below owns user-facing resolution errors.`,
1552
- ` } finally {`,
1553
- ` insideBunResolve = false;`,
1554
- ` }`,
1555
- ` });`,
1556
- ` },`,
1557
- ` });`,
1558
- ` }`,
1559
- ` scanBunModuleGraph(request);`,
1560
- ` let mod;`,
1561
- ` try {`,
1562
- ` mod = require(request);`,
1563
- ` } catch (error) {`,
1564
- ` retryWithTtsx = shouldRetryWithTtsx(error);`,
1565
- ` throw error;`,
1566
- ` }`,
1567
- ` const candidate = mod.createTtscPlugin ?? mod.default ?? mod.plugin ?? mod;`,
1568
- ` const descriptor = typeof candidate === "function" ? candidate(context) : candidate;`,
1569
- ` if (descriptor && typeof descriptor === "object" && ("transformSource" in descriptor || "transformOutput" in descriptor)) {`,
1570
- ` throw new Error("ttsc: plugin descriptor declares unsupported JS transform functions; declare a native backend instead");`,
1571
- ` }`,
1572
- // Serialize the descriptor while the module-resolution hooks are still
1573
- // collecting. Getters are allowed by JavaScript's object model and can
1574
- // lazily require a config; snapshotting inputs first would silently omit
1575
- // that influence.
1576
- ` const serializedDescriptor = JSON.stringify(descriptor);`,
1577
- ` for (const input of [...inputs]) recordInput(input);`,
1578
- ` const payload = { inputHashes: Object.fromEntries(inputHashes), inputRealpaths: Object.fromEntries(inputRealpaths), inputs: [...inputs].sort() };`,
1579
- ` if (serializedDescriptor !== undefined) payload.descriptor = JSON.parse(serializedDescriptor);`,
1580
- ` fs.writeFileSync(out, JSON.stringify(payload));`,
1581
- `} catch (error) {`,
1582
- ` const message = error instanceof Error ? error.message : String(error);`,
1583
- ` const stack = error instanceof Error && error.stack ? error.stack : String(error);`,
1584
- ` try {`,
1585
- ` fs.writeFileSync(out, JSON.stringify({ __ttscLoaderError: message, __ttscRetryWithTtsx: retryWithTtsx }));`,
1586
- ` } catch {}`,
1587
- ` try { process.stderr.write(stack + "\\n"); } catch {}`,
1588
- ` process.exit(1);`,
1589
- `}`,
1590
- ``,
1591
- ].join("\n");
1592
- /** Read the isolated loader's explicit retry classification. */
1593
- function commonJsDescriptorRetryWithTtsx(file) {
1594
- try {
1595
- const parsed = JSON.parse(node_fs_1.default.readFileSync(file, "utf8"));
1596
- return isRecord(parsed) && parsed.__ttscRetryWithTtsx === true;
1597
- }
1598
- catch {
1599
- return false;
1600
- }
1601
- }
1602
- function commonJsDescriptorProcessFailure(result, request) {
1603
- if (result.error !== undefined) {
1604
- return new Error(`ttsc: failed to launch an isolated process for plugin descriptor "${request}": ${result.error.message}`);
1605
- }
1606
- if (result.signal !== null) {
1607
- return new Error(`ttsc: plugin descriptor "${request}" isolated evaluation was killed by signal ${result.signal}.`);
1608
- }
1609
- if (result.status !== 0) {
1610
- return new Error(`ttsc: plugin descriptor "${request}" isolated evaluation failed with exit code ${String(result.status)}`);
1611
- }
1612
- return undefined;
1613
- }
1614
- const TS_SOURCE_PATTERN = /\.(?:[cm]?ts|tsx)$/i;
1615
- /**
1616
- * The descriptor shim's emitted source.
1617
- *
1618
- * Exported so a regression can inspect the same bytes ttsx executes. This
1619
- * template consumes its own escapes, so reading this file's text instead would
1620
- * check characters no consumer ever sees — and a dropped backslash turns an
1621
- * escape into the character it was escaping: a raw line terminator inside a
1622
- * string literal, which stops the shim parsing and takes every descriptor load
1623
- * with it. Its `@ttsc/lint` twin has carried that guard since the same defect
1624
- * shipped there.
1625
- */
1626
- exports.PLUGIN_DESCRIPTOR_SHIM_SOURCE = [
1627
- `// @ts-nocheck`,
1628
- `import { writeFileSync } from "node:fs";`,
1629
- `import { pathToFileURL } from "node:url";`,
1630
- // The import is inside the try, not above it. A descriptor that cannot be
1631
- // found, or whose module body throws, fails exactly where a descriptor
1632
- // whose factory throws does, and a caller deserves the same reason for
1633
- // both — "Cannot find module ./missing" is as actionable as anything the
1634
- // factory could have said.
1635
- `try {`,
1636
- // Runtime hooks are installed before this shim loads. Arm their internal
1637
- // side channel only for the descriptor import itself, after this shim's own
1638
- // imports have resolved, so ttsc implementation files never become project
1639
- // cache inputs.
1640
- ` process.env.TTSC_PLUGIN_DESCRIPTOR_INPUTS_ACTIVE = "1";`,
1641
- ` const mod = await import(pathToFileURL(process.env.TTSC_PLUGIN_ENTRY).href);`,
1642
- ` const context = JSON.parse(process.env.TTSC_PLUGIN_CONTEXT);`,
1643
- ` const candidate = mod.createTtscPlugin ?? mod.default ?? mod.plugin ?? mod;`,
1644
- ` const descriptor =`,
1645
- ` typeof candidate === "function" ? candidate(context) : candidate;`,
1646
- ` writeFileSync(process.env.TTSC_PLUGIN_DESCRIPTOR_OUT, JSON.stringify(descriptor));`,
1647
- `} catch (error) {`,
1648
- // The stack streams to the user's stderr on its own. This puts the reason
1649
- // a caller can act on into the channel the parent already reads, so the
1650
- // failure is not reduced to a bare exit status.
1651
- // The escape is doubled on purpose: this template consumes one level, so
1652
- // `\\n` here is what puts the two-character escape into the emitted shim.
1653
- // A single `\n` would put a raw line terminator inside a string literal,
1654
- // and the shim would stop parsing — taking every descriptor load with it.
1655
- ` process.stderr.write((error instanceof Error && error.stack ? error.stack : String(error)) + "\\n");`,
1656
- ` try {`,
1657
- ` writeFileSync(process.env.TTSC_PLUGIN_DESCRIPTOR_OUT, JSON.stringify({ __ttscLoaderError: error instanceof Error ? error.message : String(error) }));`,
1658
- ` } catch {}`,
1659
- ` process.exit(1);`,
1660
- `}`,
1661
- ``,
1662
- ].join("\n");
1663
- /**
1664
- * Evaluate a `.ts` plugin descriptor entry in a child `ttsx` process and return
1665
- * the descriptor it produces. A generated shim imports the entry, invokes its
1666
- * factory with `context`, and writes the descriptor as JSON; `ttsx` runs the
1667
- * shim with plugins disabled across the whole graph. Returns `undefined` when
1668
- * `ttsx` is unavailable, so the caller can rethrow the original load error.
1669
- */
1670
- function loadDescriptorViaTtsx(request, context, effectiveEnv) {
1671
- // Binary discovery prefers the instance environment, then the ambient
1672
- // process.env (where `withPluginLoaderEnv` injects ttsc's own node/ttsx paths
1673
- // just before this runs), then the running interpreter.
1674
- const node = (0, resolveNodeBinary_1.resolveNodeBinary)(effectiveEnv, context.projectRoot);
1675
- const ttsx = effectiveEnv.TTSC_TTSX_BINARY ?? process.env.TTSC_TTSX_BINARY;
1676
- if (node === undefined || ttsx === undefined || ttsx.length === 0) {
1677
- return undefined;
1678
- }
1679
- const dir = createEvaluationTempDir();
1680
- const out = node_path_1.default.join(dir, "descriptor.json");
1681
- const inputsOut = node_path_1.default.join(dir, "descriptor-inputs.ndjson");
1682
- const shim = node_path_1.default.join(dir, "load-descriptor.mts");
1683
- // ttsx type-checks and builds the shim's own project, so it needs a tsconfig
1684
- // to anchor on; a minimal one is enough (the shim is `@ts-nocheck`).
1685
- try {
1686
- node_fs_1.default.writeFileSync(node_path_1.default.join(dir, "tsconfig.json"), JSON.stringify({
1687
- compilerOptions: {
1688
- module: "nodenext",
1689
- moduleResolution: "nodenext",
1690
- skipLibCheck: true,
1691
- target: "es2022",
1692
- },
1693
- }));
1694
- node_fs_1.default.writeFileSync(shim, exports.PLUGIN_DESCRIPTOR_SHIM_SOURCE);
1695
- const result = node_child_process_1.default.spawnSync(node, [ttsx, "--no-plugins", shim], {
1696
- cwd: context.projectRoot,
1697
- encoding: "utf8",
1698
- env: {
1699
- ...effectiveEnv,
1700
- // Carry ttsc's own node/ttsx locators explicitly so the child (which
1701
- // may recurse into further descriptor loads) finds them even when the
1702
- // instance-env snapshot predates `withPluginLoaderEnv`.
1703
- TTSC_NODE_BINARY: node,
1704
- TTSC_TTSX_BINARY: ttsx,
1705
- TTSC_PLUGIN_CONTEXT: JSON.stringify({
1706
- binary: context.binary,
1707
- cwd: context.cwd,
1708
- dirname: context.dirname,
1709
- filename: context.filename,
1710
- plugin: context.plugin,
1711
- pluginConfigDir: context.pluginConfigDir,
1712
- projectRoot: context.projectRoot,
1713
- tsconfig: context.tsconfig,
1714
- }),
1715
- TTSC_PLUGIN_DESCRIPTOR_LOAD: "1",
1716
- TTSC_PLUGIN_DESCRIPTOR_OUT: out,
1717
- TTSC_PLUGIN_DESCRIPTOR_INPUTS_OUT: inputsOut,
1718
- TTSC_PLUGIN_ENTRY: request,
1719
- },
1720
- // Both child streams are human output, and they go straight to this
1721
- // process's stderr as they are written. The descriptor itself travels
1722
- // through a file, so nothing here needs collecting — and collecting it
1723
- // only to replay it afterwards is what forced an invented output ceiling.
1724
- stdio: ["ignore", 2, 2],
1725
- windowsHide: true,
1726
- });
1727
- const processFailure = (0, descriptorProcessFailure_1.pluginDescriptorProcessFailure)(result, request);
1728
- if (processFailure) {
1729
- // The descriptor's stack already reached the user's stderr as it ran.
1730
- // What it could not put there is a reason a caller can act on, so that
1731
- // arrives through the result file instead.
1732
- const reason = (0, descriptorProcessFailure_1.pluginDescriptorFailureReason)(out);
1733
- throw reason === ""
1734
- ? processFailure
1735
- : new Error(`${processFailure.message}
1736
- ${reason}`);
1737
- }
1738
- if (!node_fs_1.default.existsSync(out)) {
1739
- throw new Error(`ttsc: plugin descriptor "${request}" evaluation through ttsx produced no descriptor output.`);
1740
- }
1741
- const text = node_fs_1.default.readFileSync(out, "utf8");
1742
- try {
1743
- const inputSnapshot = readTtsxDescriptorInputs(inputsOut, request);
1744
- return {
1745
- descriptor: JSON.parse(text),
1746
- hostInputHashes: omitUnstableHostInputHashes(inputSnapshot.hostInputHashes, inputSnapshot.unstableInputs),
1747
- hostInputRealpaths: inputSnapshot.hostInputRealpaths,
1748
- inputs: inputSnapshot.inputs,
1749
- };
1750
- }
1751
- catch (error) {
1752
- throw new Error(`ttsc: plugin descriptor "${request}" produced invalid JSON: ${errorMessage(error)}`);
1753
- }
1754
- }
1755
- finally {
1756
- removeEvaluationTempDir(dir);
1757
- }
1758
- }
1759
- /**
1760
- * Expand the ttsx runtime's selected module edges into the same exact and
1761
- * missing resolution inputs used by the direct isolated evaluator.
1762
- */
1763
- function readTtsxDescriptorInputs(file, request) {
1764
- const inputs = new Set([node_path_1.default.resolve(request)]);
1765
- const hashes = new Map();
1766
- const realpaths = new Map();
1767
- const signatures = new Map();
1768
- const unstableInputs = new Set();
1769
- let text;
1770
- try {
1771
- text = node_fs_1.default.readFileSync(file, "utf8");
1772
- }
1773
- catch {
1774
- return {
1775
- hostInputHashes: {},
1776
- hostInputRealpaths: {},
1777
- inputs: [...inputs],
1778
- unstableInputs: [],
1779
- };
1780
- }
1781
- for (const line of text.split(/\r?\n/)) {
1782
- if (line.trim() === "")
1783
- continue;
1784
- let record;
1785
- try {
1786
- record = JSON.parse(line);
1787
- }
1788
- catch {
1789
- continue;
1790
- }
1791
- if (typeof record.resolved === "string") {
1792
- const resolved = node_path_1.default.resolve(record.resolved);
1793
- inputs.add(resolved);
1794
- if (record.unstable === true) {
1795
- hashes.delete(resolved);
1796
- realpaths.delete(resolved);
1797
- signatures.delete(resolved);
1798
- unstableInputs.add(resolved);
1799
- continue;
1800
- }
1801
- if (typeof record.signature !== "string" ||
1802
- (signatures.has(resolved) &&
1803
- signatures.get(resolved) !== record.signature)) {
1804
- hashes.delete(resolved);
1805
- realpaths.delete(resolved);
1806
- signatures.delete(resolved);
1807
- unstableInputs.add(resolved);
1808
- continue;
1809
- }
1810
- signatures.set(resolved, record.signature);
1811
- if ((typeof record.realpath === "string" &&
1812
- node_path_1.default.isAbsolute(record.realpath)) ||
1813
- record.realpath === null) {
1814
- const observed = record.realpath === null ? null : node_path_1.default.resolve(record.realpath);
1815
- if (realpaths.has(resolved) && realpaths.get(resolved) !== observed) {
1816
- hashes.delete(resolved);
1817
- realpaths.delete(resolved);
1818
- signatures.delete(resolved);
1819
- unstableInputs.add(resolved);
1820
- continue;
1821
- }
1822
- realpaths.set(resolved, observed);
1823
- }
1824
- if (typeof record.hash === "string" || record.hash === null) {
1825
- if (unstableInputs.has(resolved)) {
1826
- // Keep a previously observed contradiction unstable.
1827
- }
1828
- else if (hashes.has(resolved) &&
1829
- hashes.get(resolved) !== record.hash) {
1830
- hashes.delete(resolved);
1831
- realpaths.delete(resolved);
1832
- signatures.delete(resolved);
1833
- unstableInputs.add(resolved);
1834
- }
1835
- else {
1836
- hashes.set(resolved, record.hash);
1837
- }
1838
- }
1839
- }
1840
- if (typeof record.specifier === "string" &&
1841
- typeof record.parent === "string") {
1842
- for (const candidate of collectModuleResolutionCandidates(record.specifier, record.parent, record.resolved)) {
1843
- inputs.add(node_path_1.default.resolve(candidate));
1844
- }
1845
- }
1846
- }
1847
- for (const [resolved, observed] of realpaths) {
1848
- if (realpathHostInput(resolved) === observed &&
1849
- signatures.get(resolved) === hostInputMetadataSignature(resolved)) {
1850
- continue;
1851
- }
1852
- hashes.delete(resolved);
1853
- realpaths.delete(resolved);
1854
- signatures.delete(resolved);
1855
- unstableInputs.add(resolved);
1856
- }
1857
- return {
1858
- hostInputHashes: Object.fromEntries(hashes),
1859
- hostInputRealpaths: Object.fromEntries(realpaths),
1860
- inputs: [...inputs].sort(),
1861
- unstableInputs: [...unstableInputs],
1862
- };
1863
- }
1864
- function errorMessage(error) {
1865
- return error instanceof Error ? error.message : String(error);
1866
- }
1867
- function withPluginLoaderEnv(run) {
1868
- const previousNode = process.env.TTSC_NODE_BINARY;
1869
- const previousTtsx = process.env.TTSC_TTSX_BINARY;
1870
- const node = (0, resolveNodeBinary_1.resolveNodeBinary)({}, process.cwd());
1871
- if (process.env.TTSC_NODE_BINARY === undefined && node !== undefined) {
1872
- process.env.TTSC_NODE_BINARY = node;
1873
- }
1874
- process.env.TTSC_TTSX_BINARY ??= node_path_1.default.join(__dirname, "..", "..", "launcher", "ttsx.js");
1875
- try {
1876
- return run();
1877
- }
1878
- finally {
1879
- restoreEnv("TTSC_NODE_BINARY", previousNode);
1880
- restoreEnv("TTSC_TTSX_BINARY", previousTtsx);
1881
- }
1882
- }
1883
- /**
1884
- * Select the executable for isolated descriptor evaluation.
1885
- *
1886
- * Under Bun, `process.execPath` names Bun itself. Bun implements enough of the
1887
- * Node module surface to evaluate descriptors natively, but not Node's
1888
- * synchronous `module.registerHooks` preload. The caller therefore recognizes
1889
- * this default and omits the Node-only preload while retaining the fresh
1890
- * process boundary. An explicitly configured Node executable remains
1891
- * authoritative and receives the preload as usual.
1892
- */
1893
- function pluginDescriptorRuntimeBinary(env) {
1894
- if (env.TTSC_NODE_BINARY === undefined &&
1895
- typeof process.versions.bun ===
1896
- "string") {
1897
- return process.execPath;
1898
- }
1899
- return (env.TTSC_NODE_BINARY ?? process.env.TTSC_NODE_BINARY ?? process.execPath);
1900
- }
1901
- /** Replay a child's human output without imposing a fixed output ceiling. */
1902
- function replayEvaluationDiagnostics(file) {
1903
- let fd;
1904
- try {
1905
- fd = node_fs_1.default.openSync(file, "r");
1906
- const buffer = Buffer.allocUnsafe(64 * 1024);
1907
- for (;;) {
1908
- const length = node_fs_1.default.readSync(fd, buffer, 0, buffer.length, null);
1909
- if (length === 0)
1910
- break;
1911
- node_fs_1.default.writeSync(2, buffer, 0, length);
1912
- }
1913
- }
1914
- catch {
1915
- // Diagnostic replay must never replace the descriptor result.
1916
- }
1917
- finally {
1918
- if (fd !== undefined)
1919
- node_fs_1.default.closeSync(fd);
1920
- }
1921
- }
1922
- function restoreEnv(key, value) {
1923
- if (value === undefined) {
1924
- delete process.env[key];
1925
- }
1926
- else {
1927
- process.env[key] = value;
1928
- }
1929
- }
1930
- function isTtscPlugin(value) {
1931
- return typeof value === "object" && value !== null && !Array.isArray(value);
1932
- }
1933
- function rejectJsTransformFunctions(specifier, candidate) {
1934
- if ("transformSource" in candidate || "transformOutput" in candidate) {
1935
- throw new Error(`ttsc: plugin "${specifier}" declares unsupported JS transform functions; ` +
1936
- "declare a native backend instead");
1937
- }
1938
- }
1939
- function resolvePluginStage(plugin) {
1940
- if (plugin.stage === undefined) {
1941
- return "transform";
1942
- }
1943
- if (!isPluginStage(plugin.stage)) {
1944
- if (plugin.stage === "output") {
1945
- throw new Error(`ttsc: plugin "${plugin.name}" requested removed stage "output"; ` +
1946
- "upgrade the plugin to a transform-stage descriptor compatible with this ttsc version");
1947
- }
1948
- throw new Error(`ttsc: plugin "${plugin.name}" requested unsupported stage ${JSON.stringify(plugin.stage)}`);
1949
- }
1950
- return plugin.stage;
1951
- }
1952
- function validatePluginSource(plugin) {
1953
- if (typeof plugin.source !== "string" || plugin.source.length === 0) {
1954
- throw new Error(`ttsc: plugin must declare source`);
1955
- }
1956
- }
1957
- function pluginLabel(plugin, config, index) {
1958
- if (typeof plugin.name === "string" && plugin.name.length !== 0) {
1959
- return plugin.name;
1960
- }
1961
- if (typeof config.transform === "string" && config.transform.length !== 0) {
1962
- return config.transform;
1963
- }
1964
- return `#${index}`;
1965
- }
1966
- function resolvePluginSource(source, projectRoot) {
1967
- return resolveRealPath(node_path_1.default.isAbsolute(source) ? source : node_path_1.default.resolve(projectRoot, source));
1968
- }
1969
- function resolveNativeSourceKind(source, plugin, config, index) {
1970
- const packageDir = resolveGoPackageDir(source, pluginLabel(plugin, config, index));
1971
- if ((0, paths_1.findNearestGoMod)(packageDir, GO_MOD_SEARCH_MAX_DEPTH) === null) {
1972
- throw new Error(`ttsc: plugin "${pluginLabel(plugin, config, index)}" source must be inside a Go module with go.mod within ${GO_MOD_SEARCH_MAX_DEPTH} parent directories: ${source}`);
1973
- }
1974
- const packageName = readGoPackageName(packageDir);
1975
- if (packageName === null) {
1976
- throw new Error(`ttsc: plugin "${pluginLabel(plugin, config, index)}" source must contain at least one non-test ".go" file with a package declaration: ${packageDir}`);
1977
- }
1978
- return packageName === "main" ? "executable" : "linked";
1979
- }
1980
- function resolveGoPackageDir(source, label) {
1981
- if (!node_fs_1.default.existsSync(source)) {
1982
- // A descriptor factory runs without CommonJS globals when ttsc loads it
1983
- // through ttsx or as ESM — `__dirname`/`__filename`/`require` are undefined,
1984
- // so a `source` derived from them mis-resolves (often against cwd) and lands
1985
- // here. Name that failure mode explicitly instead of leaving a bare
1986
- // not-found path: the breakage is otherwise silent. (See #248.)
1987
- throw new Error(`ttsc: plugin "${label}" source does not exist: ${source}\n` +
1988
- ` Plugin descriptors run without CommonJS globals: __dirname, __filename, ` +
1989
- `and require are undefined when ttsc loads a descriptor through ttsx or as ESM. ` +
1990
- `If this path was derived from one of them, use context.dirname / ` +
1991
- `context.filename (the descriptor's own directory and file, populated in ` +
1992
- `every load mode), or resolve it from context.projectRoot, e.g. ` +
1993
- `createRequire(path.join(context.projectRoot, "package.json"))` +
1994
- `.resolve("<your-package>/package.json").`);
1995
- }
1996
- const stat = node_fs_1.default.statSync(source);
1997
- if (stat.isFile() && node_path_1.default.basename(source) === "go.mod") {
1998
- return node_path_1.default.dirname(source);
1999
- }
2000
- if (stat.isDirectory()) {
2001
- return source;
2002
- }
2003
- throw new Error(`ttsc: plugin "${label}" source must be a Go package directory or go.mod file: ${source}`);
2004
- }
2005
- function readGoPackageName(dir) {
2006
- for (const entry of node_fs_1.default.readdirSync(dir, { withFileTypes: true })) {
2007
- if (!entry.isFile() ||
2008
- !entry.name.endsWith(".go") ||
2009
- entry.name.endsWith("_test.go")) {
2010
- continue;
2011
- }
2012
- const file = node_path_1.default.join(dir, entry.name);
2013
- for (const line of node_fs_1.default.readFileSync(file, "utf8").split(/\r?\n/)) {
2014
- const match = /^\s*package\s+([A-Za-z_][A-Za-z0-9_]*)\b/.exec(line);
2015
- if (match) {
2016
- return match[1];
2017
- }
2018
- }
2019
- }
2020
- return null;
2021
- }
2022
- const CONTRIBUTOR_NAME_PATTERN = /^[a-z][a-z0-9_]*$/;
2023
- function validatePluginContributors(plugin) {
2024
- const contributors = plugin.contributors;
2025
- if (contributors === undefined)
2026
- return undefined;
2027
- if (!Array.isArray(contributors)) {
2028
- throw new Error(`ttsc: plugin "${plugin.name}" "contributors" must be an array of { name, source } entries`);
2029
- }
2030
- if (contributors.length === 0)
2031
- return undefined;
2032
- const seen = new Set();
2033
- const out = [];
2034
- for (const [index, entry] of contributors.entries()) {
2035
- if (typeof entry !== "object" || entry === null) {
2036
- throw new Error(`ttsc: plugin "${plugin.name}" contributors[${index}] must be an object`);
2037
- }
2038
- const { name, source } = entry;
2039
- if (typeof name !== "string" || !CONTRIBUTOR_NAME_PATTERN.test(name)) {
2040
- throw new Error(`ttsc: plugin "${plugin.name}" contributors[${index}].name must match /^[a-z][a-z0-9_]*$/; ` +
2041
- `got ${JSON.stringify(name)}`);
2042
- }
2043
- if (seen.has(name)) {
2044
- throw new Error(`ttsc: plugin "${plugin.name}" contributors[${index}] duplicate name ${JSON.stringify(name)}`);
2045
- }
2046
- seen.add(name);
2047
- if (typeof source !== "string" || source.length === 0) {
2048
- throw new Error(`ttsc: plugin "${plugin.name}" contributors[${index}].source must be a non-empty string`);
2049
- }
2050
- if (!node_path_1.default.isAbsolute(source)) {
2051
- throw new Error(`ttsc: plugin "${plugin.name}" contributors[${index}].source must be an absolute path; ` +
2052
- `got ${JSON.stringify(source)}`);
2053
- }
2054
- if (!node_fs_1.default.existsSync(source) || !node_fs_1.default.statSync(source).isDirectory()) {
2055
- throw new Error(`ttsc: plugin "${plugin.name}" contributors[${index}].source must be an existing directory: ${source}`);
2056
- }
2057
- // Pre-flight check that the directory actually carries a buildable
2058
- // contributor package. Without this, an accidentally-empty directory
2059
- // (or a directory containing only `_test.go` files, which `go build`
2060
- // silently skips) reaches the synthesized blank-import step and Go's
2061
- // compile error surfaces with a scratch-tempdir path that doesn't
2062
- // name the contributor entry. Catching it here lets us name the
2063
- // entry the user actually authored.
2064
- if (!hasBuildableGoSource(source)) {
2065
- throw new Error(`ttsc: plugin "${plugin.name}" contributors[${index}].source must contain at least one non-test ".go" file: ${source}`);
2066
- }
2067
- out.push({ name, source: resolveRealPath(source) });
2068
- }
2069
- return out;
2070
- }
2071
- function mergeContributors(first, second) {
2072
- const out = [...(first ?? []), ...(second ?? [])];
2073
- return out.length === 0 ? undefined : out;
2074
- }
2075
- function isPluginStage(value) {
2076
- return value === "transform" || value === "check";
2077
- }
2078
- function hasBuildableGoSource(dir) {
2079
- // `go build` consumes `.go` files but silently ignores `_test.go`. A
2080
- // contributor whose source dir holds only test files would compile to
2081
- // an empty package and surface as an opaque scratch-tempdir error;
2082
- // require at least one production `.go` file so the validator can
2083
- // name the contributor entry instead.
2084
- let entries;
2085
- try {
2086
- entries = node_fs_1.default.readdirSync(dir);
2087
- }
2088
- catch {
2089
- return false;
2090
- }
2091
- return entries.some((name) => name.endsWith(".go") && !name.endsWith("_test.go"));
2092
- }
2093
- function resolvePluginRequest(specifier, projectRoot) {
2094
- if (node_path_1.default.isAbsolute(specifier)) {
2095
- return resolveRealPath(specifier);
2096
- }
2097
- if (isRelativePluginSpecifier(specifier)) {
2098
- return resolveRealPath(node_path_1.default.resolve(projectRoot, specifier));
2099
- }
2100
- // A package whose main `.` entry is a runtime barrel cannot double as a
2101
- // plugin descriptor entry: loading it during plugin bootstrap drags the
2102
- // runtime in (and, for a self-hosting transform like typia, deadlocks —
2103
- // loading the transform would have to build the runtime the transform
2104
- // emits). Such a package opts in with a `ttsc` export condition that points
2105
- // at a runtime-free descriptor; honour it here, scoped to plugin resolution.
2106
- const conditioned = resolvePluginExportCondition(specifier, projectRoot);
2107
- if (conditioned !== null) {
2108
- return conditioned;
2109
- }
2110
- return resolveRealPath(require.resolve(specifier, { paths: [projectRoot] }));
2111
- }
2112
- /**
2113
- * Condition names ttsc activates when resolving a plugin entry's package
2114
- * `exports`.
2115
- */
2116
- const PLUGIN_EXPORT_CONDITIONS = [
2117
- "ttsc",
2118
- "node",
2119
- "require",
2120
- "default",
2121
- ];
2122
- /**
2123
- * Resolve a bare plugin specifier under the dedicated `ttsc` export condition.
2124
- *
2125
- * A package whose `.` entry is a runtime barrel (e.g. `typia`, whose index
2126
- * re-exports the whole validator runtime) cannot serve as the plugin descriptor
2127
- * entry: loading it during plugin bootstrap pulls the runtime in and, for a
2128
- * self-hosting transform, forms a cycle. Such a package opts in by adding a
2129
- * `ttsc` condition to its `exports` that points at a runtime-free descriptor:
2130
- *
2131
- * "exports": { ".": { "ttsc": "./lib/transform.js", "default": "./lib/index.js"
2132
- * } }
2133
- *
2134
- * The condition is honoured ONLY here, scoped to plugin-entry resolution. A
2135
- * process-wide `--conditions=ttsc` would also redirect the package's normal
2136
- * `import`s to the descriptor and break its runtime, so it must not be used.
2137
- *
2138
- * Returns an absolute path when the package opts in, or `null` to fall back to
2139
- * the normal `require.resolve` — no `exports`, no `ttsc` branch for the
2140
- * requested subpath, or an unresolved/missing target — so a package that does
2141
- * not opt in resolves exactly as it did before.
2142
- */
2143
- function resolvePluginExportCondition(specifier, baseDir) {
2144
- const split = splitPackageSpecifier(specifier);
2145
- if (split === null) {
2146
- return null;
2147
- }
2148
- const packageJson = resolveDependencyPackageJson(split.packageName, baseDir);
2149
- if (packageJson === undefined) {
2150
- return null;
2151
- }
2152
- const exportsField = readPackageManifest(packageJson)?.exports;
2153
- if (exportsField === undefined) {
2154
- return null;
2155
- }
2156
- const target = selectExportTarget(exportsField, split.subpath);
2157
- // Only take over when the package actually opts in with a `ttsc` condition
2158
- // for this subpath; otherwise defer so behaviour is unchanged for every
2159
- // package that does not.
2160
- if (target === undefined || !containsCondition(target, "ttsc")) {
2161
- return null;
2162
- }
2163
- const resolved = resolveConditionalTarget(target, PLUGIN_EXPORT_CONDITIONS);
2164
- if (resolved === null || !resolved.startsWith("./")) {
2165
- return null;
2166
- }
2167
- const file = node_path_1.default.resolve(node_path_1.default.dirname(packageJson), resolved);
2168
- return existingFile(file) ? resolveRealPath(file) : null;
2169
- }
2170
- /**
2171
- * Split a bare specifier into its package name and the `.`-prefixed subpath it
2172
- * addresses (`"typia"` → `.`, `"typia/lib/transform"` → `./lib/transform`,
2173
- * `"@scope/pkg/sub"` → `./sub`). Returns `null` for a relative/empty specifier
2174
- * or a malformed scoped name.
2175
- */
2176
- function splitPackageSpecifier(specifier) {
2177
- if (specifier.length === 0 || specifier.startsWith(".")) {
2178
- return null;
2179
- }
2180
- const segments = specifier.split("/");
2181
- const nameSegments = specifier.startsWith("@") ? 2 : 1;
2182
- if (segments.length < nameSegments) {
2183
- return null;
2184
- }
2185
- const rest = segments.slice(nameSegments).join("/");
2186
- return {
2187
- packageName: segments.slice(0, nameSegments).join("/"),
2188
- subpath: rest.length === 0 ? "." : `./${rest}`,
2189
- };
2190
- }
2191
- /**
2192
- * The `exports` entry addressing `subpath`, applying Node's rule that an
2193
- * `exports` value with no `.`-prefixed keys is sugar for the `.` target.
2194
- * Returns `undefined` when no entry addresses the subpath.
2195
- */
2196
- function selectExportTarget(exportsField, subpath) {
2197
- if (typeof exportsField === "string" || Array.isArray(exportsField)) {
2198
- return subpath === "." ? exportsField : undefined;
2199
- }
2200
- if (typeof exportsField !== "object" || exportsField === null) {
2201
- return undefined;
2202
- }
2203
- const record = exportsField;
2204
- const isSubpathMap = Object.keys(record).some((key) => key === "." || key.startsWith("./"));
2205
- if (!isSubpathMap) {
2206
- // Conditions object: the whole value is the `.` target.
2207
- return subpath === "." ? exportsField : undefined;
2208
- }
2209
- if (Object.prototype.hasOwnProperty.call(record, subpath) &&
2210
- !subpath.includes("*") &&
2211
- !subpath.endsWith("/")) {
2212
- return record[subpath];
2213
- }
2214
- const patterns = Object.keys(record)
2215
- .filter((key) => exportPatternReplacement(key, subpath) !== undefined)
2216
- .sort(compareExportPatternKeys);
2217
- if (patterns.length === 0) {
2218
- return undefined;
2219
- }
2220
- const pattern = patterns[0];
2221
- return substituteExportTarget(record[pattern], exportPatternReplacement(pattern, subpath));
2222
- }
2223
- /** Capture the middle of one valid single-star exports key. */
2224
- function exportPatternReplacement(pattern, subpath) {
2225
- const star = pattern.indexOf("*");
2226
- if (!pattern.startsWith("./") ||
2227
- star === -1 ||
2228
- pattern.indexOf("*", star + 1) !== -1) {
2229
- return undefined;
2230
- }
2231
- const prefix = pattern.slice(0, star);
2232
- const suffix = pattern.slice(star + 1);
2233
- if (subpath.length < pattern.length ||
2234
- !subpath.startsWith(prefix) ||
2235
- !subpath.endsWith(suffix)) {
2236
- return undefined;
2237
- }
2238
- return subpath.slice(prefix.length, subpath.length - suffix.length);
2239
- }
2240
- /** Node exports patterns rank longer prefixes, then longer full keys, first. */
2241
- function compareExportPatternKeys(left, right) {
2242
- const leftPrefix = left.indexOf("*");
2243
- const rightPrefix = right.indexOf("*");
2244
- if (leftPrefix !== rightPrefix) {
2245
- return rightPrefix - leftPrefix;
2246
- }
2247
- return right.length - left.length;
2248
- }
2249
- /** Substitute the selected pattern capture into every string target branch. */
2250
- function substituteExportTarget(target, replacement) {
2251
- if (typeof target === "string") {
2252
- return target.split("*").join(replacement);
2253
- }
2254
- if (Array.isArray(target)) {
2255
- return target.map((entry) => substituteExportTarget(entry, replacement));
2256
- }
2257
- if (typeof target !== "object" || target === null) {
2258
- return target;
2259
- }
2260
- return Object.fromEntries(Object.entries(target).map(([condition, value]) => [
2261
- condition,
2262
- substituteExportTarget(value, replacement),
2263
- ]));
2264
- }
2265
- /** True when condition key `condition` appears anywhere in a (nested) target. */
2266
- function containsCondition(target, condition) {
2267
- if (Array.isArray(target)) {
2268
- return target.some((entry) => containsCondition(entry, condition));
2269
- }
2270
- if (typeof target !== "object" || target === null) {
2271
- return false;
2272
- }
2273
- return Object.entries(target).some(([key, value]) => key === condition || containsCondition(value, condition));
2274
- }
2275
- /**
2276
- * Resolve a (possibly conditional) export target to a relative file string,
2277
- * honouring `conditions` — a string is the target, an array is a fallback list,
2278
- * an object picks the first key in the active condition set (package key order
2279
- * wins, as Node does), and an explicit `null` blocks the target.
2280
- */
2281
- function resolveConditionalTarget(target, conditions) {
2282
- if (typeof target === "string") {
2283
- return target;
2284
- }
2285
- if (target === null || target === undefined) {
2286
- return null;
2287
- }
2288
- if (Array.isArray(target)) {
2289
- for (const entry of target) {
2290
- const resolved = resolveConditionalTarget(entry, conditions);
2291
- if (resolved !== null) {
2292
- return resolved;
2293
- }
2294
- }
2295
- return null;
2296
- }
2297
- if (typeof target !== "object") {
2298
- return null;
2299
- }
2300
- const active = new Set(conditions);
2301
- for (const [key, value] of Object.entries(target)) {
2302
- if (active.has(key)) {
2303
- const resolved = resolveConditionalTarget(value, conditions);
2304
- if (resolved !== null) {
2305
- return resolved;
2306
- }
2307
- }
2308
- }
2309
- return null;
2310
- }
2311
- function resolveRealPath(location) {
2312
- try {
2313
- return node_fs_1.default.realpathSync(location);
2314
- }
2315
- catch {
2316
- return location;
2317
- }
2318
- }
2319
- function isRelativePluginSpecifier(specifier) {
2320
- return (specifier === "." ||
2321
- specifier === ".." ||
2322
- specifier.startsWith("./") ||
2323
- specifier.startsWith("../") ||
2324
- specifier.startsWith(".\\") ||
2325
- specifier.startsWith("..\\"));
2326
- }
2327
- let cachedTtscVersion = null;
2328
- function readTtscVersion() {
2329
- if (cachedTtscVersion !== null) {
2330
- return cachedTtscVersion;
2331
- }
2332
- try {
2333
- const file = node_path_1.default.join(ttscPackageRoot(), "package.json");
2334
- const pkg = JSON.parse(node_fs_1.default.readFileSync(file, "utf8"));
2335
- cachedTtscVersion = pkg.version ?? "0.0.0";
2336
- }
2337
- catch {
2338
- cachedTtscVersion = "0.0.0";
2339
- }
2340
- return cachedTtscVersion;
2341
- }
2342
- function ttscPackageRoot() {
2343
- return node_path_1.default.resolve(__dirname, "..", "..", "..");
2344
- }
2345
- function readTsgoVersion(projectRoot) {
2346
- try {
2347
- const projectRequire = (0, node_module_1.createRequire)(node_path_1.default.join(projectRoot, "package.json"));
2348
- const pkgPath = projectRequire.resolve("typescript/package.json");
2349
- const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgPath, "utf8"));
2350
- return pkg.version ?? "unknown";
2351
- }
2352
- catch {
2353
- return "unknown";
2354
- }
2355
- }
2356
- /**
2357
- * Create an evaluator directory whose cleanup path cannot follow a retargeted
2358
- * parent alias.
2359
- */
2360
- function createEvaluationTempDir() {
2361
- return (0, createCanonicalTempDirectory_1.createCanonicalTempDirectory)("ttsc-plugin-descriptor-");
2362
- }
2363
- /**
2364
- * Remove an evaluation temp directory without letting cleanup replace a result.
2365
- *
2366
- * This runs from a `finally`, so a throw here would surface instead of the
2367
- * evaluation's own outcome — and on Windows a grandchild that inherited a
2368
- * handle, or a scanner holding the file, can make removal fail. Leaving bytes
2369
- * in the system temp directory is by far the lesser outcome.
2370
- */
2371
- function removeEvaluationTempDir(directory) {
2372
- try {
2373
- node_fs_1.default.rmSync(directory, { force: true, recursive: true });
2374
- }
2375
- catch {
2376
- // Best effort.
2377
- }
2378
- }
2379
- //# sourceMappingURL=loadProjectPlugins.js.map