ttsc 0.19.2 → 0.20.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 (178) hide show
  1. package/README.md +7 -5
  2. package/cmd/graphdump/main.go +2 -4
  3. package/cmd/ttsc/filter.go +12 -4
  4. package/cmd/ttsc/filter_resolves_flag_names_case_insensitively_test.go +53 -0
  5. package/cmd/ttsc/flags_gen.go +3 -3
  6. package/cmd/ttscgraph/dump.go +5 -7
  7. package/cmd/ttscgraph/run_dump_emits_only_checker_verified_member_relations_test.go +118 -0
  8. package/cmd/ttscgraph/serve.go +58 -308
  9. package/cmd/ttscgraph/serve_session_keeps_base_url_fallback_unchanged_test.go +49 -0
  10. package/cmd/ttscgraph/serve_session_keeps_esm_directory_candidate_unchanged_test.go +61 -0
  11. package/cmd/ttscgraph/serve_session_keeps_exports_blocked_file_candidates_unchanged_test.go +64 -0
  12. package/cmd/ttscgraph/serve_session_keeps_inactive_conditional_export_unchanged_test.go +66 -0
  13. package/cmd/ttscgraph/serve_session_keeps_lower_priority_module_candidate_unchanged_test.go +67 -0
  14. package/cmd/ttscgraph/serve_session_keeps_lower_priority_paths_pattern_unchanged_test.go +58 -0
  15. package/cmd/ttscgraph/serve_session_keeps_nonlongest_root_dirs_candidate_unchanged_test.go +54 -0
  16. package/cmd/ttscgraph/serve_session_reloads_commonjs_package_entry_for_esm_test.go +50 -0
  17. package/cmd/ttscgraph/serve_session_reloads_module_suffix_candidate_test.go +41 -0
  18. package/cmd/ttscgraph/serve_session_reloads_superseding_module_candidates_test.go +216 -0
  19. package/cmd/ttscgraph/serve_session_retries_failed_dump_test.go +103 -0
  20. package/driver/graph.go +12 -6
  21. package/driver/lsp.go +30 -0
  22. package/driver/program.go +37 -1
  23. package/driver/resolution_candidates.go +819 -0
  24. package/driver/windowsjunction/windowsjunction.go +40 -0
  25. package/go.mod +2 -0
  26. package/internal/graph/build.go +45 -11
  27. package/internal/graph/dump.go +312 -108
  28. package/internal/graph/dump_checkout_paths_are_stable_test.go +210 -0
  29. package/internal/graph/dump_diagnostics_ride_the_generation_that_built_it_test.go +9 -3
  30. package/internal/graph/dump_paths.go +172 -0
  31. package/internal/graph/dump_paths_are_portable_and_injective_test.go +93 -0
  32. package/internal/graph/dump_schema_version_matches_the_typescript_client_test.go +1 -1
  33. package/internal/graph/dump_uses_ecma_line_terminators_test.go +87 -0
  34. package/internal/graph/duplicate_variable_object_members_keep_first_declaration_test.go +61 -0
  35. package/internal/graph/edges.go +220 -5
  36. package/internal/graph/enum_members_carry_their_names_on_the_enum_node_test.go +131 -0
  37. package/internal/graph/graph.go +177 -5
  38. package/internal/graph/line_model.go +122 -0
  39. package/internal/graph/literals.go +175 -0
  40. package/internal/graph/literals_are_absent_when_the_type_admits_more_than_it_can_name_test.go +74 -0
  41. package/internal/graph/literals_cover_enum_members_the_graph_has_no_nodes_for_test.go +79 -0
  42. package/internal/graph/literals_do_not_depend_on_declaration_line_wrapping_test.go +84 -0
  43. package/internal/graph/literals_render_every_value_in_typescript_source_form_test.go +77 -0
  44. package/internal/graph/literals_resolve_through_alias_indirection_test.go +64 -0
  45. package/internal/graph/member_relation_edges_follow_checker_validity_test.go +85 -0
  46. package/internal/graph/member_relation_edges_preserve_checker_boundaries_test.go +191 -0
  47. package/internal/graph/member_relation_edges_reject_checker_invalid_pairs_test.go +119 -0
  48. package/internal/graph/node_ids_preserve_hash_bearing_components_test.go +41 -0
  49. package/internal/graph/node_modifiers_emit_union_strings_test.go +4 -1
  50. package/internal/graph/object_literal_members_ride_on_the_snapshot_test.go +192 -0
  51. package/internal/graph/object_member_signatures_preserve_literal_whitespace_test.go +67 -0
  52. package/internal/graph/object_members.go +229 -0
  53. package/internal/graph/provenance.go +88 -30
  54. package/internal/graph/source_texts_cover_every_resident_program_source_test.go +73 -0
  55. package/internal/graphsymbols/position_helpers_follow_ecma_line_terminators_test.go +66 -0
  56. package/internal/graphsymbols/provider.go +26 -91
  57. package/internal/lspserver/lsp_clean_didopen_refreshes_compiler_state_test.go +144 -0
  58. package/internal/lspserver/lsp_completion.go +109 -0
  59. package/internal/lspserver/lsp_completion_gate_never_refuses_a_matching_line_test.go +50 -0
  60. package/internal/lspserver/lsp_completion_hints_longest_trigger_wins_test.go +149 -0
  61. package/internal/lspserver/lsp_completion_hints_nearest_trigger_wins_test.go +37 -0
  62. package/internal/lspserver/lsp_completion_merges_into_upstream_response_test.go +149 -0
  63. package/internal/lspserver/lsp_completion_nearest_hint_replaces_nearest_filter_test.go +43 -0
  64. package/internal/lspserver/lsp_completion_preserves_completion_list_extensions_test.go +99 -0
  65. package/internal/lspserver/lsp_completion_refuses_hints_inside_a_string_literal_test.go +69 -0
  66. package/internal/lspserver/lsp_completion_replaces_full_filter_in_rank_order_test.go +85 -0
  67. package/internal/lspserver/lsp_completion_request.go +455 -0
  68. package/internal/lspserver/lsp_completion_scope.go +530 -0
  69. package/internal/lspserver/lsp_completion_scope_bench_test.go +41 -0
  70. package/internal/lspserver/lsp_completion_scope_classifies_regex_statement_and_operator_boundaries_test.go +39 -0
  71. package/internal/lspserver/lsp_completion_scope_ignores_jsdoc_bytes_in_literals_test.go +108 -0
  72. package/internal/lspserver/lsp_completion_scope_refuses_regex_hints_test.go +52 -0
  73. package/internal/lspserver/lsp_completion_trigger_uses_last_rune_test.go +24 -0
  74. package/internal/lspserver/lsp_deleted_watched_file_withdraws_plugin_diagnostics_test.go +110 -0
  75. package/internal/lspserver/lsp_didsave_keeps_the_incremental_changed_uri_path_test.go +78 -0
  76. package/internal/lspserver/lsp_hints_absence_is_not_an_error_test.go +46 -0
  77. package/internal/lspserver/lsp_hints_refresh_coalesces_concurrent_requests_test.go +82 -0
  78. package/internal/lspserver/lsp_hints_refresh_ignores_a_superseded_generation_test.go +40 -0
  79. package/internal/lspserver/lsp_hints_refresh_keeps_each_producer_isolated_test.go +64 -0
  80. package/internal/lspserver/lsp_hints_refresh_replaces_the_session_snapshot_test.go +66 -0
  81. package/internal/lspserver/lsp_hints_refresh_scheduled_by_editor_events_test.go +90 -0
  82. package/internal/lspserver/lsp_hints_refresh_serves_completion_while_running_test.go +91 -0
  83. package/internal/lspserver/lsp_index_byte_from_bounds_its_search_start_test.go +38 -0
  84. package/internal/lspserver/lsp_initialize_constrains_position_encoding_to_utf16_test.go +205 -0
  85. package/internal/lspserver/lsp_late_completion_trigger_is_reported_once_test.go +105 -0
  86. package/internal/lspserver/lsp_native_completion_hints_decode_flat_lint_wire_test.go +66 -0
  87. package/internal/lspserver/lsp_native_completion_hints_grouped_compatibility_boundary_test.go +60 -0
  88. package/internal/lspserver/lsp_native_plugin_source.go +315 -2
  89. package/internal/lspserver/lsp_native_resident.go +304 -0
  90. package/internal/lspserver/lsp_plugin.go +85 -8
  91. package/internal/lspserver/lsp_plugin_completion_resolve_stays_local_test.go +82 -0
  92. package/internal/lspserver/lsp_position_conversions_span_astral_and_combining_runes_test.go +119 -0
  93. package/internal/lspserver/lsp_proxy.go +601 -9
  94. package/internal/lspserver/lsp_refresh.go +70 -0
  95. package/internal/lspserver/lsp_resident_falls_back_when_serve_unsupported_test.go +43 -0
  96. package/internal/lspserver/lsp_resident_maps_verb_args_test.go +34 -0
  97. package/internal/lspserver/lsp_server.go +13 -1
  98. package/internal/lspserver/lsp_watched_file_changes_reach_compiler_caches_test.go +172 -0
  99. package/lib/TtscCompiler.d.ts +3 -1
  100. package/lib/TtscCompiler.js +5 -1
  101. package/lib/TtscCompiler.js.map +1 -1
  102. package/lib/TtscService.d.ts +13 -3
  103. package/lib/TtscService.js +6 -6
  104. package/lib/TtscService.js.map +1 -1
  105. package/lib/compiler/internal/project/readConfigJson.d.ts +30 -0
  106. package/lib/compiler/internal/project/readConfigJson.js +208 -0
  107. package/lib/compiler/internal/project/readConfigJson.js.map +1 -0
  108. package/lib/compiler/internal/project/readProjectConfig.js +53 -149
  109. package/lib/compiler/internal/project/readProjectConfig.js.map +1 -1
  110. package/lib/compiler/internal/residentTransformProcess.d.ts +15 -2
  111. package/lib/compiler/internal/residentTransformProcess.js +159 -39
  112. package/lib/compiler/internal/residentTransformProcess.js.map +1 -1
  113. package/lib/compiler/internal/runBuild.d.ts +6 -0
  114. package/lib/compiler/internal/runBuild.js +143 -44
  115. package/lib/compiler/internal/runBuild.js.map +1 -1
  116. package/lib/compiler/internal/startResidentTransform.d.ts +5 -1
  117. package/lib/compiler/internal/startResidentTransform.js +3 -1
  118. package/lib/compiler/internal/startResidentTransform.js.map +1 -1
  119. package/lib/compiler/internal/transformProjectInMemory.js +12 -2
  120. package/lib/compiler/internal/transformProjectInMemory.js.map +1 -1
  121. package/lib/flags/parser.d.ts +19 -0
  122. package/lib/flags/parser.js +78 -36
  123. package/lib/flags/parser.js.map +1 -1
  124. package/lib/flags/schema.d.ts +49 -11
  125. package/lib/flags/schema.js +94 -22
  126. package/lib/flags/schema.js.map +1 -1
  127. package/lib/internal/assertSafeExplicitCacheDirectory.d.ts +5 -0
  128. package/lib/internal/assertSafeExplicitCacheDirectory.js +26 -0
  129. package/lib/internal/assertSafeExplicitCacheDirectory.js.map +1 -0
  130. package/lib/launcher/internal/runTtsc.js +107 -69
  131. package/lib/launcher/internal/runTtsc.js.map +1 -1
  132. package/lib/launcher/internal/runTtsx.js +28 -41
  133. package/lib/launcher/internal/runTtsx.js.map +1 -1
  134. package/lib/launcher/internal/runtimeHooks.d.ts +15 -0
  135. package/lib/launcher/internal/runtimeHooks.js +18 -1
  136. package/lib/launcher/internal/runtimeHooks.js.map +1 -1
  137. package/lib/launcher/internal/watchTopology.d.ts +43 -0
  138. package/lib/launcher/internal/watchTopology.js +360 -0
  139. package/lib/launcher/internal/watchTopology.js.map +1 -0
  140. package/lib/plugin/internal/buildSourcePlugin.d.ts +14 -3
  141. package/lib/plugin/internal/buildSourcePlugin.js +247 -61
  142. package/lib/plugin/internal/buildSourcePlugin.js.map +1 -1
  143. package/lib/plugin/internal/loadProjectPlugins.js +63 -2
  144. package/lib/plugin/internal/loadProjectPlugins.js.map +1 -1
  145. package/lib/structures/ITtscCompilerTransformation.d.ts +16 -0
  146. package/lib/structures/internal/ITtscParsedProjectConfig.d.ts +2 -0
  147. package/package.json +8 -8
  148. package/shim/ast/shim.go +48 -3
  149. package/shim/astnav/go.mod +14 -0
  150. package/shim/astnav/go.sum +20 -0
  151. package/shim/astnav/shim.go +15 -0
  152. package/shim/checker/shim.go +113 -0
  153. package/shim/core/shim.go +47 -0
  154. package/shim/diagnosticwriter/lint.go +50 -0
  155. package/src/TtscCompiler.ts +5 -1
  156. package/src/TtscService.ts +37 -10
  157. package/src/compiler/internal/project/readConfigJson.ts +209 -0
  158. package/src/compiler/internal/project/readProjectConfig.ts +62 -158
  159. package/src/compiler/internal/residentTransformProcess.ts +197 -39
  160. package/src/compiler/internal/runBuild.ts +169 -47
  161. package/src/compiler/internal/startResidentTransform.ts +12 -1
  162. package/src/compiler/internal/transformProjectInMemory.ts +12 -1
  163. package/src/flags/parser.ts +113 -42
  164. package/src/flags/schema.ts +113 -31
  165. package/src/internal/assertSafeExplicitCacheDirectory.ts +29 -0
  166. package/src/launcher/internal/runTtsc.ts +117 -68
  167. package/src/launcher/internal/runTtsx.ts +29 -44
  168. package/src/launcher/internal/runtimeHooks.ts +30 -2
  169. package/src/launcher/internal/watchTopology.ts +466 -0
  170. package/src/plugin/internal/buildSourcePlugin.ts +326 -64
  171. package/src/plugin/internal/loadProjectPlugins.ts +80 -2
  172. package/src/structures/ITtscCompilerTransformation.ts +17 -0
  173. package/src/structures/internal/ITtscParsedProjectConfig.ts +2 -0
  174. package/tools/shim_audit/baseline.json +0 -3
  175. package/tools/shim_audit/main.go +42 -14
  176. package/tools/shim_audit/shim_dir_coverage_test.go +25 -0
  177. package/utility/flags_gen.go +3 -3
  178. package/utility/host.go +9 -3
@@ -2,7 +2,7 @@
2
2
  * Subcommands the ttsc CLI dispatches to. The bare `"ttsc"` entry covers the
3
3
  * default lane (no explicit subcommand, e.g. `ttsc -p tsconfig.json`).
4
4
  */
5
- export type TtscSubcommand = "ttsc" | "build" | "check" | "fix" | "format" | "prepare" | "clean";
5
+ export type TtscSubcommand = "ttsc" | "build" | "cache" | "check" | "fix" | "format" | "prepare" | "clean";
6
6
  /**
7
7
  * Subcommands the ttsx CLI dispatches to. ttsx exposes a single lane today but
8
8
  * the schema mirrors ttsc's shape so future subcommands plug in without a
@@ -83,6 +83,24 @@ export interface FlagSpec {
83
83
  * `--showConfig prints twice` bug appeared (RC-2).
84
84
  */
85
85
  readonly terminal?: boolean;
86
+ /**
87
+ * `true` when a `terminal` flag's meaning does not presuppose a resolved
88
+ * project, so ttsc must answer it before project resolution runs (`--init`
89
+ * writes the starter tsconfig, `--all` and `-?` print tsgo's help). Without
90
+ * this split `ttsc --init` failed with "could not find tsconfig.json …" in
91
+ * the only directory where it is useful.
92
+ *
93
+ * `--showConfig` and `--listFilesOnly` are terminal but deliberately NOT
94
+ * project-free: both describe a project, so failing without one is correct.
95
+ */
96
+ readonly projectFree?: boolean;
97
+ /**
98
+ * `true` when every occurrence of a repeated `value` flag counts rather than
99
+ * the last one winning (`ttsx -r a -r b` preloads both). The engine keeps the
100
+ * last value in `ParseResult.values` for callers that want a single answer
101
+ * and records the complete ordered list in `ParseResult.repeated`.
102
+ */
103
+ readonly repeatable?: boolean;
86
104
  /**
87
105
  * `true` when ttsc may add this flag to tsgo internally and post-process the
88
106
  * output. If the user also forwards the same flag, ttsc keeps the
@@ -119,21 +137,41 @@ export interface FlagSpec {
119
137
  */
120
138
  export declare const FLAG_SCHEMA: readonly FlagSpec[];
121
139
  /**
122
- * Lookup of `name` and every alias → its canonical FlagSpec. Built once at
123
- * module load so the parsing engine has O(1) flag resolution.
140
+ * Normalize a CLI token to the identity the compiler ttsc wraps resolves it by:
141
+ * one or two leading dashes removed, the remainder lower-cased.
142
+ *
143
+ * TypeScript's option parser — legacy `tsc` and native tsgo alike — strips a
144
+ * `--` or `-` prefix and matches the rest case-insensitively, so `--noEmit`,
145
+ * `--noemit`, `--NOEMIT`, and `-noEmit` all name the same option to the tool
146
+ * ttsc forwards to. The launcher used to key its index on the exact spelling,
147
+ * so a case variant of a ttsc-owned flag fell through the unknown-flag escape
148
+ * hatch: tsgo honoured it and every ttsc-side consumer of the same flag never
149
+ * fired, with no diagnostic.
150
+ *
151
+ * This is the single normalization. Everything that resolves a token against
152
+ * `FLAG_SCHEMA` — the parsing engine, the terminal / shadow / project-free
153
+ * classifications, and the generated Go allow-lists — keys off this function,
154
+ * so no two layers can disagree about which flag a spelling names.
124
155
  */
125
- export declare const FLAG_BY_NAME: ReadonlyMap<string, FlagSpec>;
156
+ export declare function normalizeFlagToken(token: string): string;
126
157
  /**
127
- * Terminal flags as a derived set. Used by `runBuild.ts` to skip the pre-emit
128
- * pass when one is present.
158
+ * Resolve a raw argv token to the flag it names, or `undefined` when the schema
159
+ * claims no such flag.
160
+ *
161
+ * Accepts every spelling the compiler accepts — any casing, one or two leading
162
+ * dashes — plus the inline `--flag=value` form, whose value is not part of the
163
+ * identity. A token without a leading dash is never a flag: bare tokens are
164
+ * input files and flag values, and resolving them here would let a value like
165
+ * the `all` of `--target all` masquerade as `--all`.
129
166
  */
130
- export declare const TERMINAL_FLAGS: ReadonlySet<string>;
167
+ export declare function resolveFlagSpec(token: string): FlagSpec | undefined;
131
168
  /**
132
- * `internalShadow: true` flags as a derived set. Used by `runBuild.ts` to
133
- * detect a user-forwarded copy of a flag ttsc adds internally so the
134
- * post-processor does not eat the user's output.
169
+ * Lookup of every declared spelling → its canonical FlagSpec, keyed by
170
+ * {@link normalizeFlagToken}. Built once at module load so the parsing engine
171
+ * has O(1) flag resolution. Prefer {@link resolveFlagSpec}, which applies the
172
+ * normalization for the caller.
135
173
  */
136
- export declare const INTERNAL_SHADOW_FLAGS: ReadonlySet<string>;
174
+ export declare const FLAG_BY_TOKEN: ReadonlyMap<string, FlagSpec>;
137
175
  /** Tokens (canonical name + aliases) accepted in `subcommand`. */
138
176
  export declare function flagsForSubcommand(subcommand: AnySubcommand): FlagSpec[];
139
177
  /**
@@ -20,7 +20,9 @@
20
20
  // AGENTS.md §2.1. Editing the generated files by hand is rejected by the
21
21
  // `format` check.
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.INTERNAL_SHADOW_FLAGS = exports.TERMINAL_FLAGS = exports.FLAG_BY_NAME = exports.FLAG_SCHEMA = void 0;
23
+ exports.FLAG_BY_TOKEN = exports.FLAG_SCHEMA = void 0;
24
+ exports.normalizeFlagToken = normalizeFlagToken;
25
+ exports.resolveFlagSpec = resolveFlagSpec;
24
26
  exports.flagsForSubcommand = flagsForSubcommand;
25
27
  exports.buildGoAllowList = buildGoAllowList;
26
28
  /**
@@ -72,6 +74,7 @@ exports.FLAG_SCHEMA = [
72
74
  "ttsc",
73
75
  "ttsx",
74
76
  "build",
77
+ "cache",
75
78
  "check",
76
79
  "fix",
77
80
  "format",
@@ -88,6 +91,7 @@ exports.FLAG_SCHEMA = [
88
91
  "ttsc",
89
92
  "ttsx",
90
93
  "build",
94
+ "cache",
91
95
  "check",
92
96
  "fix",
93
97
  "format",
@@ -183,6 +187,7 @@ exports.FLAG_SCHEMA = [
183
187
  "ttsc",
184
188
  "ttsx",
185
189
  "build",
190
+ "cache",
186
191
  "check",
187
192
  "fix",
188
193
  "format",
@@ -192,6 +197,13 @@ exports.FLAG_SCHEMA = [
192
197
  consumedBy: ["launcher"],
193
198
  description: "Override the runner and source-plugin cache root.",
194
199
  },
200
+ {
201
+ name: "--json",
202
+ kind: "boolean",
203
+ subcommands: ["cache"],
204
+ consumedBy: ["launcher"],
205
+ description: "Print cache paths as JSON.",
206
+ },
195
207
  // -------------------------------------------------------------------------
196
208
  // Threading (tsgo-native; lint host opts in via capability).
197
209
  // -------------------------------------------------------------------------
@@ -219,9 +231,10 @@ exports.FLAG_SCHEMA = [
219
231
  name: "--require",
220
232
  aliases: ["-r"],
221
233
  kind: "value",
234
+ repeatable: true,
222
235
  subcommands: ["ttsx"],
223
236
  consumedBy: ["launcher"],
224
- description: "Preload a module before the entrypoint (ttsx).",
237
+ description: "Preload a module before the entrypoint (ttsx; repeatable).",
225
238
  },
226
239
  {
227
240
  name: "--no-plugins",
@@ -245,8 +258,14 @@ exports.FLAG_SCHEMA = [
245
258
  description: "Print the list of emitted files (forwarded to tsgo; ttsc keeps the lines when forwarded).",
246
259
  },
247
260
  {
261
+ // tsgo declares `--pretty` as `type: boolean`, so it occupies one argv
262
+ // token and consumes a following one only when that token is the literal
263
+ // `true` or `false` — the shape the engine's boolean branch implements.
264
+ // Declaring it `value` made the forwarding path swallow whatever followed,
265
+ // so `ttsc --pretty a.ts` lost its input file and silently switched to
266
+ // project mode.
248
267
  name: "--pretty",
249
- kind: "value",
268
+ kind: "boolean",
250
269
  subcommands: ["ttsc", "ttsx", "build", "check", "fix", "format"],
251
270
  consumedBy: ["tsgo"],
252
271
  forwardTo: "tsgo",
@@ -296,6 +315,7 @@ exports.FLAG_SCHEMA = [
296
315
  consumedBy: ["tsgo"],
297
316
  forwardTo: "tsgo",
298
317
  terminal: true,
318
+ projectFree: true,
299
319
  description: "Print the full tsgo CLI help and exit.",
300
320
  },
301
321
  {
@@ -305,8 +325,24 @@ exports.FLAG_SCHEMA = [
305
325
  consumedBy: ["tsgo"],
306
326
  forwardTo: "tsgo",
307
327
  terminal: true,
328
+ projectFree: true,
308
329
  description: "Write a starter tsconfig.json and exit (forwarded to tsgo).",
309
330
  },
331
+ {
332
+ // tsgo's short synonym for `--help`. ttsc owns `--help` / `-h` itself (the
333
+ // launcher prints its own help), so `-?` is declared as its own tsgo-only
334
+ // row rather than as an alias — that keeps `ttsc -?` printing tsgo's help
335
+ // while putting the token inside the schema, where the terminal and
336
+ // project-free classifications are derived from.
337
+ name: "-?",
338
+ kind: "boolean",
339
+ subcommands: ["ttsc", "build", "check"],
340
+ consumedBy: ["tsgo"],
341
+ forwardTo: "tsgo",
342
+ terminal: true,
343
+ projectFree: true,
344
+ description: "Print the tsgo CLI help and exit (forwarded to tsgo).",
345
+ },
310
346
  // -------------------------------------------------------------------------
311
347
  // `--tsgo-args` — JSON-encoded passthrough envelope the launcher emits on
312
348
  // the way down to native sidecars. The sidecars decode it back into the
@@ -365,10 +401,49 @@ exports.FLAG_SCHEMA = [
365
401
  },
366
402
  ];
367
403
  /**
368
- * Lookup of `name` and every alias → its canonical FlagSpec. Built once at
369
- * module load so the parsing engine has O(1) flag resolution.
404
+ * Normalize a CLI token to the identity the compiler ttsc wraps resolves it by:
405
+ * one or two leading dashes removed, the remainder lower-cased.
406
+ *
407
+ * TypeScript's option parser — legacy `tsc` and native tsgo alike — strips a
408
+ * `--` or `-` prefix and matches the rest case-insensitively, so `--noEmit`,
409
+ * `--noemit`, `--NOEMIT`, and `-noEmit` all name the same option to the tool
410
+ * ttsc forwards to. The launcher used to key its index on the exact spelling,
411
+ * so a case variant of a ttsc-owned flag fell through the unknown-flag escape
412
+ * hatch: tsgo honoured it and every ttsc-side consumer of the same flag never
413
+ * fired, with no diagnostic.
414
+ *
415
+ * This is the single normalization. Everything that resolves a token against
416
+ * `FLAG_SCHEMA` — the parsing engine, the terminal / shadow / project-free
417
+ * classifications, and the generated Go allow-lists — keys off this function,
418
+ * so no two layers can disagree about which flag a spelling names.
370
419
  */
371
- exports.FLAG_BY_NAME = buildFlagIndex();
420
+ function normalizeFlagToken(token) {
421
+ return token.replace(/^--?/, "").toLowerCase();
422
+ }
423
+ /**
424
+ * Resolve a raw argv token to the flag it names, or `undefined` when the schema
425
+ * claims no such flag.
426
+ *
427
+ * Accepts every spelling the compiler accepts — any casing, one or two leading
428
+ * dashes — plus the inline `--flag=value` form, whose value is not part of the
429
+ * identity. A token without a leading dash is never a flag: bare tokens are
430
+ * input files and flag values, and resolving them here would let a value like
431
+ * the `all` of `--target all` masquerade as `--all`.
432
+ */
433
+ function resolveFlagSpec(token) {
434
+ if (!token.startsWith("-"))
435
+ return undefined;
436
+ const equalsIndex = token.indexOf("=");
437
+ const name = equalsIndex === -1 ? token : token.slice(0, equalsIndex);
438
+ return exports.FLAG_BY_TOKEN.get(normalizeFlagToken(name));
439
+ }
440
+ /**
441
+ * Lookup of every declared spelling → its canonical FlagSpec, keyed by
442
+ * {@link normalizeFlagToken}. Built once at module load so the parsing engine
443
+ * has O(1) flag resolution. Prefer {@link resolveFlagSpec}, which applies the
444
+ * normalization for the caller.
445
+ */
446
+ exports.FLAG_BY_TOKEN = buildFlagIndex();
372
447
  function buildFlagIndex() {
373
448
  const index = new Map();
374
449
  for (const flag of exports.FLAG_SCHEMA) {
@@ -379,24 +454,17 @@ function buildFlagIndex() {
379
454
  }
380
455
  return index;
381
456
  }
382
- function register(index, key, flag) {
457
+ function register(index, spelling, flag) {
458
+ // Two spellings that normalize to one identity would make the schema
459
+ // ambiguous, so the collision fails loudly at module load rather than
460
+ // resolving to whichever row was declared last.
461
+ const key = normalizeFlagToken(spelling);
383
462
  const existing = index.get(key);
384
463
  if (existing && existing !== flag) {
385
- throw new Error(`ttsc flag schema: duplicate token ${JSON.stringify(key)} claimed by ${existing.name} and ${flag.name}`);
464
+ throw new Error(`ttsc flag schema: duplicate token ${JSON.stringify(spelling)} claimed by ${existing.name} and ${flag.name}`);
386
465
  }
387
466
  index.set(key, flag);
388
467
  }
389
- /**
390
- * Terminal flags as a derived set. Used by `runBuild.ts` to skip the pre-emit
391
- * pass when one is present.
392
- */
393
- exports.TERMINAL_FLAGS = new Set(exports.FLAG_SCHEMA.flatMap((flag) => flag.terminal === true ? [flag.name, ...(flag.aliases ?? [])] : []));
394
- /**
395
- * `internalShadow: true` flags as a derived set. Used by `runBuild.ts` to
396
- * detect a user-forwarded copy of a flag ttsc adds internally so the
397
- * post-processor does not eat the user's output.
398
- */
399
- exports.INTERNAL_SHADOW_FLAGS = new Set(exports.FLAG_SCHEMA.flatMap((flag) => flag.internalShadow === true ? [flag.name, ...(flag.aliases ?? [])] : []));
400
468
  /** Tokens (canonical name + aliases) accepted in `subcommand`. */
401
469
  function flagsForSubcommand(subcommand) {
402
470
  return exports.FLAG_SCHEMA.filter((flag) => flag.subcommands.includes(subcommand));
@@ -415,9 +483,13 @@ function buildGoAllowList(layer) {
415
483
  continue;
416
484
  const takesValue = flag.kind === "value" || flag.kind === "valueOptional";
417
485
  for (const name of [flag.name, ...(flag.aliases ?? [])]) {
418
- const key = name.replace(/^--?/, "");
419
- // The Go side strips the leading dashes; if two flags collide on the
420
- // stripped key (e.g. `-p` vs `--project`), use the value-taking shape.
486
+ // Keyed by the one normalization the runtime token lookup uses, so the
487
+ // generated allow-lists and `resolveFlagSpec` cannot recognise different
488
+ // spellings. The Go consumers apply the same normalization before the
489
+ // lookup (`strings.ToLower` on the dash-stripped name).
490
+ const key = normalizeFlagToken(name);
491
+ // If two flags collide on the normalized key (e.g. `-p` vs `--project`),
492
+ // use the value-taking shape.
421
493
  const existing = out.get(key);
422
494
  if (existing !== undefined && existing !== takesValue) {
423
495
  throw new Error(`ttsc flag schema: conflicting Go allow-list entry for ${JSON.stringify(key)} on layer ${layer}`);
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/flags/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/flags/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Refuse an explicit cache directory whose wholesale removal could delete the
3
+ * project or an entire filesystem volume.
4
+ */
5
+ export declare function assertSafeExplicitCacheDirectory(projectRoot: string, cacheDirectory: string): void;
@@ -0,0 +1,26 @@
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.assertSafeExplicitCacheDirectory = assertSafeExplicitCacheDirectory;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ /**
9
+ * Refuse an explicit cache directory whose wholesale removal could delete the
10
+ * project or an entire filesystem volume.
11
+ */
12
+ function assertSafeExplicitCacheDirectory(projectRoot, cacheDirectory) {
13
+ const project = node_path_1.default.resolve(projectRoot);
14
+ const cache = node_path_1.default.resolve(cacheDirectory);
15
+ if (cache === node_path_1.default.parse(cache).root) {
16
+ throw new Error(`ttsc: refusing to clean cache directory ${JSON.stringify(cache)} because filesystem roots are never valid cache directories`);
17
+ }
18
+ const relative = node_path_1.default.relative(cache, project);
19
+ if (relative === "" ||
20
+ (relative !== ".." &&
21
+ !relative.startsWith(`..${node_path_1.default.sep}`) &&
22
+ !node_path_1.default.isAbsolute(relative))) {
23
+ throw new Error(`ttsc: refusing to clean cache directory ${JSON.stringify(cache)} because it equals or contains project root ${JSON.stringify(project)}; choose a dedicated cache directory`);
24
+ }
25
+ }
26
+ //# sourceMappingURL=assertSafeExplicitCacheDirectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertSafeExplicitCacheDirectory.js","sourceRoot":"","sources":["../../src/internal/assertSafeExplicitCacheDirectory.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAE7B;;;GAGG;AACH,0CACE,WAAmB,EACnB,cAAsB;IAEtB,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,mBAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,mBAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,6DAA6D,CAC9H,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,IACE,QAAQ,KAAK,EAAE;QACf,CAAC,QAAQ,KAAK,IAAI;YAChB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,mBAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC,mBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sCAAsC,CAC7K,CAAC;IACJ,CAAC;AACH,CAAC"}