ttsc 0.20.1 → 0.22.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 (95) hide show
  1. package/cmd/ttscserver/main.go +79 -3
  2. package/cmd/ttscserver/run_lsp_uses_native_plugin_manifest_source_test.go +96 -16
  3. package/driver/lsp.go +4 -0
  4. package/internal/lspserver/lsp_document_diagnostics_omits_cached_project_when_current_result_has_none_test.go +48 -0
  5. package/internal/lspserver/lsp_executable_project_input_change_requests_launcher_restart_test.go +98 -0
  6. package/internal/lspserver/lsp_external_watched_change_retains_program_test.go +53 -0
  7. package/internal/lspserver/lsp_hints_refresh_scheduled_by_editor_events_test.go +9 -0
  8. package/internal/lspserver/lsp_native_plugin_source.go +171 -55
  9. package/internal/lspserver/lsp_native_resident.go +110 -9
  10. package/internal/lspserver/lsp_plugin.go +6 -0
  11. package/internal/lspserver/lsp_project_context_transport_identity_test.go +43 -0
  12. package/internal/lspserver/lsp_project_diagnostics.go +235 -0
  13. package/internal/lspserver/lsp_project_diagnostics_capability_is_independent_test.go +67 -0
  14. package/internal/lspserver/lsp_project_diagnostics_program_input_overlap_refreshes_all_producers_test.go +78 -0
  15. package/internal/lspserver/lsp_project_diagnostics_refresh_accumulates_owner_freshness_test.go +65 -0
  16. package/internal/lspserver/lsp_project_diagnostics_refresh_keeps_each_producer_last_good_test.go +90 -0
  17. package/internal/lspserver/lsp_project_diagnostics_refreshes_only_input_owners_test.go +62 -0
  18. package/internal/lspserver/lsp_project_diagnostics_resident_unsupported_falls_back_test.go +123 -0
  19. package/internal/lspserver/lsp_project_diagnostics_resume_preserves_generation_test.go +52 -0
  20. package/internal/lspserver/lsp_project_diagnostics_translates_relative_client_project_test.go +90 -0
  21. package/internal/lspserver/lsp_project_input_ownership_resolves_declared_spellings_test.go +95 -0
  22. package/internal/lspserver/lsp_project_input_registration.go +504 -0
  23. package/internal/lspserver/lsp_project_input_registration_rechecks_selection_baseline_test.go +71 -0
  24. package/internal/lspserver/lsp_project_input_registration_reconciles_rejected_pending_request_test.go +268 -0
  25. package/internal/lspserver/lsp_project_input_registration_shapes_patterns_test.go +94 -0
  26. package/internal/lspserver/lsp_project_input_watchers_anchor_missing_paths_test.go +48 -0
  27. package/internal/lspserver/lsp_project_inputs.go +944 -0
  28. package/internal/lspserver/lsp_project_inputs_match_missing_exact_and_glob_test.go +129 -0
  29. package/internal/lspserver/lsp_project_inputs_reject_invalid_and_foreign_snapshots_test.go +110 -0
  30. package/internal/lspserver/lsp_proxy.go +591 -28
  31. package/internal/lspserver/lsp_reload_directories_compare_immediate_topology_test.go +188 -0
  32. package/internal/lspserver/lsp_reload_file_fingerprint_preserves_raw_symlink_target_test.go +47 -0
  33. package/internal/lspserver/lsp_resident_falls_back_when_serve_unsupported_test.go +1 -1
  34. package/internal/lspserver/lsp_resident_invalidation_broadcasts_program_input_overlap_test.go +60 -0
  35. package/internal/lspserver/lsp_resident_invalidation_targets_project_input_owners_test.go +51 -0
  36. package/internal/lspserver/lsp_same_transport_entries_are_deduplicated_test.go +66 -0
  37. package/lib/compiler/internal/project/readProjectConfig.d.ts +5 -3
  38. package/lib/compiler/internal/project/readProjectConfig.js +46 -14
  39. package/lib/compiler/internal/project/readProjectConfig.js.map +1 -1
  40. package/lib/compiler/internal/residentCheckProcess.d.ts +46 -0
  41. package/lib/compiler/internal/residentCheckProcess.js +227 -0
  42. package/lib/compiler/internal/residentCheckProcess.js.map +1 -0
  43. package/lib/compiler/internal/resolveEmittedJavaScript.d.ts +2 -1
  44. package/lib/compiler/internal/resolveEmittedJavaScript.js +35 -18
  45. package/lib/compiler/internal/resolveEmittedJavaScript.js.map +1 -1
  46. package/lib/compiler/internal/runBuild.d.ts +64 -1
  47. package/lib/compiler/internal/runBuild.js +484 -7
  48. package/lib/compiler/internal/runBuild.js.map +1 -1
  49. package/lib/compiler/internal/runSingleFileEmit.js +1 -0
  50. package/lib/compiler/internal/runSingleFileEmit.js.map +1 -1
  51. package/lib/flags/parser.js +13 -17
  52. package/lib/flags/parser.js.map +1 -1
  53. package/lib/flags/schema.d.ts +10 -3
  54. package/lib/flags/schema.js +99 -0
  55. package/lib/flags/schema.js.map +1 -1
  56. package/lib/internal/projectInputPathIdentity.d.ts +23 -0
  57. package/lib/internal/projectInputPathIdentity.js +222 -0
  58. package/lib/internal/projectInputPathIdentity.js.map +1 -0
  59. package/lib/launcher/internal/runTtsc.d.ts +17 -0
  60. package/lib/launcher/internal/runTtsc.js +121 -88
  61. package/lib/launcher/internal/runTtsc.js.map +1 -1
  62. package/lib/launcher/internal/runTtscserver.d.ts +13 -1
  63. package/lib/launcher/internal/runTtscserver.js +415 -45
  64. package/lib/launcher/internal/runTtscserver.js.map +1 -1
  65. package/lib/launcher/internal/singleFileOutput.d.ts +16 -0
  66. package/lib/launcher/internal/singleFileOutput.js +103 -0
  67. package/lib/launcher/internal/singleFileOutput.js.map +1 -0
  68. package/lib/launcher/internal/watchTopology.d.ts +214 -2
  69. package/lib/launcher/internal/watchTopology.js +1560 -41
  70. package/lib/launcher/internal/watchTopology.js.map +1 -1
  71. package/lib/plugin/internal/loadProjectPlugins.d.ts +1 -0
  72. package/lib/plugin/internal/loadProjectPlugins.js +5 -0
  73. package/lib/plugin/internal/loadProjectPlugins.js.map +1 -1
  74. package/lib/structures/ITtscPluginCapabilities.d.ts +31 -0
  75. package/lib/structures/internal/ITtscProjectInputSnapshot.d.ts +29 -0
  76. package/lib/structures/internal/ITtscProjectInputSnapshot.js +3 -0
  77. package/lib/structures/internal/ITtscProjectInputSnapshot.js.map +1 -0
  78. package/lib/structures/internal/TtscSingleFileEmitOptions.d.ts +5 -0
  79. package/package.json +8 -8
  80. package/src/compiler/internal/project/readProjectConfig.ts +62 -8
  81. package/src/compiler/internal/residentCheckProcess.ts +279 -0
  82. package/src/compiler/internal/resolveEmittedJavaScript.ts +43 -21
  83. package/src/compiler/internal/runBuild.ts +728 -12
  84. package/src/compiler/internal/runSingleFileEmit.ts +1 -0
  85. package/src/flags/parser.ts +17 -17
  86. package/src/flags/schema.ts +111 -3
  87. package/src/internal/projectInputPathIdentity.ts +273 -0
  88. package/src/launcher/internal/runTtsc.ts +141 -117
  89. package/src/launcher/internal/runTtscserver.ts +561 -54
  90. package/src/launcher/internal/singleFileOutput.ts +133 -0
  91. package/src/launcher/internal/watchTopology.ts +2008 -59
  92. package/src/plugin/internal/loadProjectPlugins.ts +8 -0
  93. package/src/structures/ITtscPluginCapabilities.ts +34 -0
  94. package/src/structures/internal/ITtscProjectInputSnapshot.ts +29 -0
  95. package/src/structures/internal/TtscSingleFileEmitOptions.ts +5 -0
@@ -4,16 +4,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.runTtscserver = runTtscserver;
7
+ exports.materializeLSPPluginManifest = materializeLSPPluginManifest;
8
+ exports.fingerprintInitialLSPProjectInputSnapshot = fingerprintInitialLSPProjectInputSnapshot;
9
+ exports.initialLSPProjectInputSnapshotIsCurrent = initialLSPProjectInputSnapshotIsCurrent;
7
10
  exports.needsStdio = needsStdio;
8
11
  const node_child_process_1 = require("node:child_process");
12
+ const node_crypto_1 = require("node:crypto");
9
13
  const node_fs_1 = __importDefault(require("node:fs"));
10
14
  const node_os_1 = __importDefault(require("node:os"));
11
15
  const node_path_1 = __importDefault(require("node:path"));
16
+ const createNativeProjectContextArgs_1 = require("../../compiler/internal/project/createNativeProjectContextArgs");
12
17
  const readProjectConfig_1 = require("../../compiler/internal/project/readProjectConfig");
13
18
  const resolveBinary_1 = require("../../compiler/internal/resolveBinary");
14
19
  const resolveTsgo_1 = require("../../compiler/internal/resolveTsgo");
20
+ const projectInputPathIdentity_1 = require("../../internal/projectInputPathIdentity");
15
21
  const loadProjectPlugins_1 = require("../../plugin/internal/loadProjectPlugins");
16
22
  const resolveTtscserverBinary_1 = require("./resolveTtscserverBinary");
23
+ const LSP_SELECTION_STABILITY_ATTEMPTS = 3;
24
+ const LSP_PROJECT_INPUT_TIMEOUT_MS = 30_000;
25
+ const LSP_PROJECT_INPUT_MAX_BUFFER = 4 * 1024 * 1024;
17
26
  /**
18
27
  * Drive the ttscserver native binary from a node launcher. The launcher is
19
28
  * deliberately thin: argument parsing, version banners, and help text are owned
@@ -22,7 +31,7 @@ const resolveTtscserverBinary_1 = require("./resolveTtscserverBinary");
22
31
  *
23
32
  * - Resolve the platform binary,
24
33
  * - Resolve the project TypeScript-Go binary for the native wrapper,
25
- * - Resolve the project config and build the LSP plugin manifest environment,
34
+ * - Resolve the project config and materialize the private LSP plugin manifest,
26
35
  * - Inject the Node/ttsx helper paths used by disk-backed LSP sidecars,
27
36
  * - Inject `--stdio` when the first arg is not a meta-command,
28
37
  * - Delegate to the binary with inherited stdio so OS-level signals reach the
@@ -39,19 +48,25 @@ function runTtscserver(argv = process.argv.slice(2)) {
39
48
  }
40
49
  ensureExecutable(binary);
41
50
  const args = needsStdio(argv) ? ["--stdio", ...argv] : [...argv];
42
- let env;
51
+ let execution;
43
52
  try {
44
- env = resolveTtscserverEnv(args);
53
+ execution = resolveTtscserverEnv(args);
45
54
  }
46
55
  catch (error) {
47
56
  process.stderr.write(`ttscserver: ${stripTtscPrefix(formatError(error))}\n`);
48
57
  return 1;
49
58
  }
50
- const result = (0, node_child_process_1.spawnSync)(binary, args, {
51
- stdio: "inherit",
52
- env,
53
- windowsHide: true,
54
- });
59
+ let result;
60
+ try {
61
+ result = (0, node_child_process_1.spawnSync)(binary, [...execution.args, ...args], {
62
+ stdio: "inherit",
63
+ env: execution.env,
64
+ windowsHide: true,
65
+ });
66
+ }
67
+ finally {
68
+ execution.dispose();
69
+ }
55
70
  if (result.error) {
56
71
  process.stderr.write(`ttscserver: ${result.error.message}\n`);
57
72
  return 1;
@@ -71,39 +86,91 @@ function runTtscserver(argv = process.argv.slice(2)) {
71
86
  /**
72
87
  * Build the environment for the native binary. In `--stdio` (LSP) mode the Go
73
88
  * binary needs the project tsgo binary plus any LSP-capable plugin sidecars the
74
- * JS loader resolved from config. Inject those paths through environment
75
- * variables so the native host can stay focused on proxying tsgo and
76
- * dispatching sidecar verbs. Skip `TTSC_TSGO_BINARY` injection when the caller
77
- * already provided the variable or passed an explicit `--tsgo` option.
89
+ * JS loader resolved from config. Pass the manifest through a private temporary
90
+ * file and inject canonical helper paths so the native host and every later
91
+ * sidecar refresh use the same launch context.
78
92
  */
79
93
  function resolveTtscserverEnv(argv) {
80
94
  if (!argv.includes("--stdio")) {
81
95
  // Non-LSP invocations (--version, --help) do not shell out to tsgo.
82
- return process.env;
96
+ return { args: [], dispose() { }, env: process.env };
83
97
  }
84
98
  const context = resolveLspExecutionContext(argv);
99
+ const env = lspSidecarEnvironment({
100
+ pluginConfigOrigin: context.projectContext?.pluginConfigOrigin,
101
+ tsgoBinary: context.tsgoBinary,
102
+ });
103
+ delete env.TTSC_LSP_PLUGINS_JSON;
104
+ delete env.TTSC_LSP_PLUGINS_FILE;
105
+ const lspPlugins = context.nativePlugins.filter((plugin) => plugin.capabilities?.lsp === true);
106
+ if (lspPlugins.length === 0) {
107
+ // Nothing would be lost by an older native host, so keep it startable.
108
+ return { args: [], dispose() { }, env };
109
+ }
110
+ const transport = materializeLSPPluginManifest({
111
+ initialProjectInputs: Object.fromEntries(context.initialProjectInputs),
112
+ plugins: serializeNativePlugins(context.nativePlugins),
113
+ projectContext: context.projectContext,
114
+ lspPlugins: lspPlugins.map((plugin) => ({
115
+ binary: plugin.binary,
116
+ ...(plugin.capabilities?.projectInputs === true
117
+ ? { initialProjectInputKey: lspPluginTransportKey(plugin) }
118
+ : {}),
119
+ name: plugin.name,
120
+ projectDiagnostics: plugin.capabilities?.projectDiagnostics === true,
121
+ projectInputs: plugin.capabilities?.projectInputs === true,
122
+ projectContextArgs: plugin.capabilities?.projectContextArgs === true,
123
+ stage: plugin.stage,
124
+ })),
125
+ });
126
+ // Deliver the manifest as an explicit flag rather than an inherited variable.
127
+ // A native host that predates the flag rejects the invocation instead of
128
+ // starting without the plugins this project declared, and nothing downstream
129
+ // of the host inherits either a path to the manifest or its payload.
130
+ return {
131
+ args: ["--lsp-plugins-file", transport.path],
132
+ dispose: transport.dispose,
133
+ env,
134
+ };
135
+ }
136
+ function materializeLSPPluginManifest(manifest) {
137
+ const directory = node_fs_1.default.mkdtempSync(node_path_1.default.join(node_os_1.default.tmpdir(), "ttsc-lsp-"));
138
+ const location = node_path_1.default.join(directory, "plugins.json");
139
+ try {
140
+ node_fs_1.default.writeFileSync(location, JSON.stringify(manifest), {
141
+ encoding: "utf8",
142
+ flag: "wx",
143
+ mode: 0o600,
144
+ });
145
+ }
146
+ catch (error) {
147
+ node_fs_1.default.rmSync(directory, { force: true, recursive: true });
148
+ throw error;
149
+ }
150
+ let disposed = false;
151
+ return {
152
+ dispose() {
153
+ if (disposed)
154
+ return;
155
+ disposed = true;
156
+ node_fs_1.default.rmSync(directory, { force: true, recursive: true });
157
+ },
158
+ path: location,
159
+ };
160
+ }
161
+ function lspSidecarEnvironment(options) {
85
162
  const env = {
86
163
  ...process.env,
87
164
  TTSC_NODE_BINARY: process.env.TTSC_NODE_BINARY ?? process.execPath,
165
+ TTSC_TSGO_BINARY: options.tsgoBinary,
88
166
  TTSC_TTSX_BINARY: process.env.TTSC_TTSX_BINARY ??
89
167
  node_path_1.default.join(__dirname, "..", "..", "launcher", "ttsx.js"),
90
168
  };
91
- delete env.TTSC_LSP_PLUGINS_JSON;
92
- if (!process.env.TTSC_TSGO_BINARY && !hasTsgoOption(argv)) {
93
- env.TTSC_TSGO_BINARY = context.tsgoBinary;
169
+ if (options.pluginConfigOrigin === undefined) {
170
+ delete env.TTSC_PLUGIN_CONFIG_DIR;
94
171
  }
95
- const lspPlugins = context.nativePlugins.filter((plugin) => plugin.capabilities?.lsp === true);
96
- if (lspPlugins.length > 0) {
97
- env.TTSC_LSP_PLUGINS_JSON = JSON.stringify({
98
- plugins: serializeNativePlugins(context.nativePlugins),
99
- projectContext: context.projectContext,
100
- lspPlugins: lspPlugins.map((plugin) => ({
101
- binary: plugin.binary,
102
- name: plugin.name,
103
- projectContextArgs: plugin.capabilities?.projectContextArgs === true,
104
- stage: plugin.stage,
105
- })),
106
- });
172
+ else {
173
+ env.TTSC_PLUGIN_CONFIG_DIR = options.pluginConfigOrigin;
107
174
  }
108
175
  return env;
109
176
  }
@@ -114,9 +181,9 @@ function resolveLspExecutionContext(argv) {
114
181
  process.env.TTSC_PLUGIN_CONFIG_DIR === ""
115
182
  ? undefined
116
183
  : node_path_1.default.resolve(cwd, process.env.TTSC_PLUGIN_CONFIG_DIR);
117
- let project;
184
+ let initialProject;
118
185
  try {
119
- project = (0, readProjectConfig_1.readProjectConfig)({ cwd, tsconfig });
186
+ initialProject = (0, readProjectConfig_1.readProjectConfig)({ cwd, tsconfig });
120
187
  }
121
188
  catch (error) {
122
189
  if (tsconfig) {
@@ -128,16 +195,60 @@ function resolveLspExecutionContext(argv) {
128
195
  resolveFrom: __filename,
129
196
  });
130
197
  return {
198
+ initialProjectInputs: new Map(),
131
199
  nativePlugins: [],
132
200
  tsgoBinary: tsgo.binary,
133
201
  };
134
202
  }
135
- const tsgo = (0, resolveTsgo_1.resolveTsgo)({
136
- binary: optionValue(argv, "--tsgo"),
137
- cwd: project.root,
138
- resolveFrom: __filename,
139
- });
140
- const loaded = (0, loadProjectPlugins_1.hasProjectPluginEntries)(project)
203
+ let project = initialProject;
204
+ for (let attempt = 1; attempt <= LSP_SELECTION_STABILITY_ATTEMPTS; attempt++) {
205
+ const loaded = loadLSPProjectPlugins(project, cwd, pluginConfigOrigin);
206
+ const selectedProject = loaded.project;
207
+ const tsgo = (0, resolveTsgo_1.resolveTsgo)({
208
+ binary: optionValue(argv, "--tsgo"),
209
+ cwd: selectedProject.root,
210
+ resolveFrom: __filename,
211
+ });
212
+ const initialProjectInputs = captureInitialLSPProjectInputs({
213
+ nativePlugins: loaded.nativePlugins,
214
+ pluginConfigOrigin,
215
+ project: selectedProject,
216
+ tsgoBinary: tsgo.binary,
217
+ });
218
+ const confirmationProject = (0, readProjectConfig_1.readProjectConfig)({ cwd, tsconfig });
219
+ const confirmation = loadLSPProjectPlugins(confirmationProject, cwd, pluginConfigOrigin);
220
+ const confirmedProject = confirmation.project;
221
+ const confirmedTsgo = (0, resolveTsgo_1.resolveTsgo)({
222
+ binary: optionValue(argv, "--tsgo"),
223
+ cwd: confirmedProject.root,
224
+ resolveFrom: __filename,
225
+ });
226
+ const confirmedProjectInputs = captureInitialLSPProjectInputs({
227
+ nativePlugins: confirmation.nativePlugins,
228
+ pluginConfigOrigin,
229
+ project: confirmedProject,
230
+ tsgoBinary: confirmedTsgo.binary,
231
+ });
232
+ if (lspSelectionSignature(selectedProject, loaded.nativePlugins) ===
233
+ lspSelectionSignature(confirmedProject, confirmation.nativePlugins) &&
234
+ initialLSPProjectInputsEqual(initialProjectInputs, confirmedProjectInputs) &&
235
+ [...confirmedProjectInputs.values()].every(initialLSPProjectInputSnapshotIsCurrent)) {
236
+ return {
237
+ initialProjectInputs: confirmedProjectInputs,
238
+ nativePlugins: confirmation.nativePlugins,
239
+ projectContext: {
240
+ ...confirmedProject.identity,
241
+ ...(pluginConfigOrigin === undefined ? {} : { pluginConfigOrigin }),
242
+ },
243
+ tsgoBinary: confirmedTsgo.binary,
244
+ };
245
+ }
246
+ project = confirmedProject;
247
+ }
248
+ throw new Error(`ttscserver: project plugin selection remained unstable across ${LSP_SELECTION_STABILITY_ATTEMPTS} bounded startup attempts`);
249
+ }
250
+ function loadLSPProjectPlugins(project, cwd, pluginConfigOrigin) {
251
+ return (0, loadProjectPlugins_1.hasProjectPluginEntries)(project)
141
252
  ? (0, loadProjectPlugins_1.loadProjectPlugins)({
142
253
  binary: (0, resolveBinary_1.resolveBinary)() ?? "",
143
254
  cwd,
@@ -145,18 +256,277 @@ function resolveLspExecutionContext(argv) {
145
256
  projectRoot: project.root,
146
257
  tsconfig: project.path,
147
258
  })
148
- : { nativePlugins: [] };
259
+ : { nativePlugins: [], project };
260
+ }
261
+ function captureInitialLSPProjectInputs(options) {
262
+ const snapshots = new Map();
263
+ const pluginsJSON = JSON.stringify(serializeNativePlugins(options.nativePlugins));
264
+ for (const plugin of options.nativePlugins) {
265
+ if (plugin.capabilities?.lsp !== true ||
266
+ plugin.capabilities.projectInputs !== true) {
267
+ continue;
268
+ }
269
+ const transportKey = lspPluginTransportKey(plugin);
270
+ if (snapshots.has(transportKey))
271
+ continue;
272
+ const args = [
273
+ "project-inputs",
274
+ "--tsconfig=" + options.project.path,
275
+ "--plugins-json=" + pluginsJSON,
276
+ "--cwd=" + options.project.root,
277
+ ];
278
+ if (plugin.capabilities.projectContextArgs === true) {
279
+ args.push(...(0, createNativeProjectContextArgs_1.createNativeProjectContextArgs)(options.project, options.pluginConfigOrigin));
280
+ }
281
+ const env = lspSidecarEnvironment({
282
+ pluginConfigOrigin: options.pluginConfigOrigin,
283
+ tsgoBinary: options.tsgoBinary,
284
+ });
285
+ const result = (0, node_child_process_1.spawnSync)(plugin.binary, args, {
286
+ cwd: options.project.root,
287
+ encoding: "utf8",
288
+ env,
289
+ maxBuffer: LSP_PROJECT_INPUT_MAX_BUFFER,
290
+ timeout: LSP_PROJECT_INPUT_TIMEOUT_MS,
291
+ windowsHide: true,
292
+ });
293
+ if (result.error) {
294
+ throw new Error(`ttscserver: ${plugin.name ?? plugin.binary} project-inputs failed: ${result.error.message}`);
295
+ }
296
+ const stdout = result.stdout.trim();
297
+ if (result.status !== 0) {
298
+ const detail = result.stderr.trim() || stdout;
299
+ throw new Error(`ttscserver: ${plugin.name ?? plugin.binary} project-inputs failed${detail ? `: ${detail}` : ""}`);
300
+ }
301
+ snapshots.set(transportKey, fingerprintInitialLSPProjectInputSnapshot(parseInitialLSPProjectInputSnapshot(stdout, plugin)));
302
+ }
303
+ return snapshots;
304
+ }
305
+ function lspPluginTransportKey(plugin) {
306
+ return (plugin.binary +
307
+ "\0" +
308
+ (plugin.capabilities?.projectContextArgs === true ? "1" : "0"));
309
+ }
310
+ function initialLSPProjectInputsEqual(left, right) {
311
+ if (left.size !== right.size)
312
+ return false;
313
+ for (const [key, leftSnapshot] of left) {
314
+ const rightSnapshot = right.get(key);
315
+ if (rightSnapshot === undefined ||
316
+ initialLSPProjectInputSnapshotSignature(leftSnapshot) !==
317
+ initialLSPProjectInputSnapshotSignature(rightSnapshot)) {
318
+ return false;
319
+ }
320
+ }
321
+ return true;
322
+ }
323
+ function initialLSPProjectInputSnapshotSignature(snapshot) {
324
+ const sorted = (values) => [...(values ?? [])].sort();
325
+ const reloadDirectories = sorted(snapshot.reloadDirectories);
326
+ const reloadFiles = sorted(snapshot.reloadFiles);
327
+ return JSON.stringify({
328
+ files: sorted(snapshot.files),
329
+ globs: sorted(snapshot.globs),
330
+ reloadDirectories: reloadDirectories.map((directory) => [
331
+ directory,
332
+ snapshot.reloadDirectoryDigests[directory],
333
+ ]),
334
+ reloadFiles: reloadFiles.map((file) => [
335
+ file,
336
+ snapshot.reloadFileDigests[file],
337
+ ]),
338
+ root: snapshot.root,
339
+ });
340
+ }
341
+ function parseInitialLSPProjectInputSnapshot(text, plugin) {
342
+ let value;
343
+ try {
344
+ value = JSON.parse(text);
345
+ }
346
+ catch (error) {
347
+ throw new Error(`ttscserver: ${plugin.name ?? plugin.binary} project-inputs returned invalid JSON: ${error instanceof Error ? error.message : String(error)}`);
348
+ }
349
+ if (value === null ||
350
+ typeof value !== "object" ||
351
+ typeof value.root !== "string" ||
352
+ !Array.isArray(value.files) ||
353
+ !Array.isArray(value.globs) ||
354
+ (value.reloadFiles !== undefined &&
355
+ !Array.isArray(value.reloadFiles)) ||
356
+ (value.reloadDirectories !== undefined &&
357
+ !Array.isArray(value.reloadDirectories))) {
358
+ throw new Error(`ttscserver: ${plugin.name ?? plugin.binary} project-inputs returned a malformed snapshot`);
359
+ }
360
+ return value;
361
+ }
362
+ function fingerprintInitialLSPProjectInputSnapshot(snapshot) {
363
+ const reloadDirectoryDigests = {};
364
+ const reloadFileDigests = {};
365
+ for (const directory of snapshot.reloadDirectories ?? []) {
366
+ reloadDirectoryDigests[directory] = lspProjectInputDirectoryDigest(realLSPProjectInputPath(directory));
367
+ }
368
+ for (const file of snapshot.reloadFiles ?? []) {
369
+ reloadFileDigests[file] = lspProjectInputFileDigest(realLSPProjectInputEntryPath(file));
370
+ }
149
371
  return {
150
- nativePlugins: loaded.nativePlugins,
151
- projectContext: {
152
- ...project.identity,
153
- ...(pluginConfigOrigin === undefined ? {} : { pluginConfigOrigin }),
154
- },
155
- tsgoBinary: tsgo.binary,
372
+ ...snapshot,
373
+ reloadDirectoryDigests,
374
+ reloadFileDigests,
156
375
  };
157
376
  }
158
- function hasTsgoOption(argv) {
159
- return argv.some((arg) => arg === "--tsgo" || arg.startsWith("--tsgo="));
377
+ function initialLSPProjectInputSnapshotIsCurrent(snapshot) {
378
+ return ((snapshot.reloadDirectories ?? []).every((directory) => snapshot.reloadDirectoryDigests[directory] ===
379
+ lspProjectInputDirectoryDigest(realLSPProjectInputPath(directory))) &&
380
+ (snapshot.reloadFiles ?? []).every((file) => snapshot.reloadFileDigests[file] ===
381
+ lspProjectInputFileDigest(realLSPProjectInputEntryPath(file))));
382
+ }
383
+ function lspSelectionSignature(project, plugins) {
384
+ return JSON.stringify({
385
+ identity: project.identity,
386
+ plugins: plugins.map((plugin) => ({
387
+ binary: plugin.binary,
388
+ capabilities: plugin.capabilities,
389
+ config: plugin.config,
390
+ contributors: plugin.contributors,
391
+ kind: plugin.kind,
392
+ name: plugin.name,
393
+ source: plugin.source,
394
+ stage: plugin.stage,
395
+ })),
396
+ });
397
+ }
398
+ function lspProjectInputDirectoryDigest(location) {
399
+ const entries = [];
400
+ try {
401
+ if (process.platform === "win32") {
402
+ for (const entry of node_fs_1.default.readdirSync(location, { withFileTypes: true })) {
403
+ let target = Buffer.alloc(0);
404
+ if (entry.isSymbolicLink()) {
405
+ try {
406
+ target = Buffer.from(node_fs_1.default.readlinkSync(node_path_1.default.join(location, entry.name)), "utf8");
407
+ }
408
+ catch {
409
+ target = Buffer.from("<unreadable>");
410
+ }
411
+ }
412
+ entries.push(lspProjectInputDirectoryRecord(Buffer.from(entry.name), entry, target));
413
+ }
414
+ }
415
+ else {
416
+ for (const entry of node_fs_1.default.readdirSync(location, {
417
+ encoding: "buffer",
418
+ withFileTypes: true,
419
+ })) {
420
+ let target = Buffer.alloc(0);
421
+ if (entry.isSymbolicLink()) {
422
+ try {
423
+ target = node_fs_1.default.readlinkSync(Buffer.concat([
424
+ Buffer.from(location),
425
+ Buffer.from(node_path_1.default.sep),
426
+ entry.name,
427
+ ]), { encoding: "buffer" });
428
+ }
429
+ catch {
430
+ target = Buffer.from("<unreadable>");
431
+ }
432
+ }
433
+ entries.push(lspProjectInputDirectoryRecord(entry.name, entry, target));
434
+ }
435
+ }
436
+ }
437
+ catch {
438
+ return (0, node_crypto_1.createHash)("sha256").update("missing\0").digest("hex");
439
+ }
440
+ entries.sort(Buffer.compare);
441
+ const serialized = Buffer.concat(entries.flatMap((entry, index) => index === 0 ? [entry] : [Buffer.from([0]), entry]));
442
+ return (0, node_crypto_1.createHash)("sha256").update(serialized).digest("hex");
443
+ }
444
+ function lspProjectInputDirectoryRecord(name, entry, target) {
445
+ const kind = entry.isDirectory()
446
+ ? "directory"
447
+ : entry.isFile()
448
+ ? "file"
449
+ : entry.isSymbolicLink()
450
+ ? "symlink"
451
+ : "other";
452
+ return Buffer.concat([name, Buffer.from("\0" + kind + "\0"), target]);
453
+ }
454
+ function lspProjectInputFileDigest(location) {
455
+ try {
456
+ const info = node_fs_1.default.lstatSync(location);
457
+ if (info.isSymbolicLink()) {
458
+ let target = Buffer.from("<unreadable>");
459
+ try {
460
+ target = node_fs_1.default.readlinkSync(Buffer.from(location), {
461
+ encoding: "buffer",
462
+ });
463
+ }
464
+ catch {
465
+ // Preserve the same explicit unreadable state as the Go validator.
466
+ }
467
+ let content = Buffer.from("missing\0");
468
+ try {
469
+ content = Buffer.concat([
470
+ Buffer.from("file\0"),
471
+ node_fs_1.default.readFileSync(location),
472
+ ]);
473
+ }
474
+ catch {
475
+ // A dangling or unreadable target remains part of the symlink state.
476
+ }
477
+ return (0, node_crypto_1.createHash)("sha256")
478
+ .update(Buffer.concat([
479
+ Buffer.from("symlink\0"),
480
+ target,
481
+ Buffer.from([0]),
482
+ content,
483
+ ]))
484
+ .digest("hex");
485
+ }
486
+ if (info.isFile()) {
487
+ return (0, node_crypto_1.createHash)("sha256")
488
+ .update(Buffer.concat([Buffer.from("file\0"), node_fs_1.default.readFileSync(location)]))
489
+ .digest("hex");
490
+ }
491
+ return (0, node_crypto_1.createHash)("sha256").update("other\0").digest("hex");
492
+ }
493
+ catch {
494
+ return (0, node_crypto_1.createHash)("sha256").update("missing\0").digest("hex");
495
+ }
496
+ }
497
+ /**
498
+ * Physical path of a location whose leaf may not exist yet.
499
+ *
500
+ * Both ends go through the shared spelling rule rather than `path.resolve`
501
+ * alone. Windows hands back extended-length paths from a native realpath, and a
502
+ * record written as `\?\C:\project` never matches a lookup for `C:\project`
503
+ * even though one file is meant — the split identity every other consumer on
504
+ * this branch was taught to avoid.
505
+ */
506
+ function realLSPProjectInputPath(location) {
507
+ const absolute = (0, projectInputPathIdentity_1.resolveProjectInputPath)(location);
508
+ let probe = absolute;
509
+ const suffix = [];
510
+ for (;;) {
511
+ try {
512
+ let resolved = (0, projectInputPathIdentity_1.resolveProjectInputPath)(node_fs_1.default.realpathSync.native(probe));
513
+ for (let index = suffix.length - 1; index >= 0; index--) {
514
+ resolved = node_path_1.default.join(resolved, suffix[index]);
515
+ }
516
+ return node_path_1.default.normalize(resolved);
517
+ }
518
+ catch {
519
+ const parent = node_path_1.default.dirname(probe);
520
+ if (parent === probe)
521
+ return node_path_1.default.normalize(absolute);
522
+ suffix.push(node_path_1.default.basename(probe));
523
+ probe = parent;
524
+ }
525
+ }
526
+ }
527
+ function realLSPProjectInputEntryPath(location) {
528
+ const absolute = (0, projectInputPathIdentity_1.resolveProjectInputPath)(location);
529
+ return node_path_1.default.join(realLSPProjectInputPath(node_path_1.default.dirname(absolute)), node_path_1.default.basename(absolute));
160
530
  }
161
531
  function optionValue(argv, name) {
162
532
  for (let i = 0; i < argv.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"runTtscserver.js","sourceRoot":"","sources":["../../../src/launcher/internal/runTtscserver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runTtscserver.js","sourceRoot":"","sources":["../../../src/launcher/internal/runTtscserver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Resolves the only file that positional `ttsc <source>` can materialize in the
3
+ * user's tree.
4
+ *
5
+ * The compiler itself emits into a private temporary directory. The launcher
6
+ * then copies one transformed JavaScript file to this path, so project-mode
7
+ * declaration, map, build-info, outFile, and broad outDir products are not
8
+ * positional outputs.
9
+ */
10
+ export declare function resolveSingleFileOutput(options: {
11
+ cliOutDir?: string;
12
+ cwd: string;
13
+ file: string;
14
+ passthrough?: readonly string[];
15
+ tsconfig?: string;
16
+ }): string;