ttsc 0.32.0 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/TtscCompiler.js +1 -1
- package/lib/TtscCompiler.js.map +1 -1
- package/lib/compiler/internal/ResidentCheckProcess.d.ts +74 -96
- package/lib/compiler/internal/ResidentCheckProcess.js +150 -335
- package/lib/compiler/internal/ResidentCheckProcess.js.map +1 -1
- package/lib/compiler/internal/ResidentCheckProcessHost.d.ts +127 -0
- package/lib/compiler/internal/ResidentCheckProcessHost.js +447 -0
- package/lib/compiler/internal/ResidentCheckProcessHost.js.map +1 -0
- package/lib/compiler/internal/ResidentCheckProcessProtocol.d.ts +64 -0
- package/lib/compiler/internal/ResidentCheckProcessProtocol.js +3 -0
- package/lib/compiler/internal/ResidentCheckProcessProtocol.js.map +1 -0
- package/lib/compiler/internal/build/BuildExecution.d.ts +103 -1
- package/lib/compiler/internal/build/BuildExecution.js +91 -11
- package/lib/compiler/internal/build/BuildExecution.js.map +1 -1
- package/lib/compiler/internal/build/ResidentCheckWatchSession.d.ts +16 -11
- package/lib/compiler/internal/build/ResidentCheckWatchSession.js +37 -21
- package/lib/compiler/internal/build/ResidentCheckWatchSession.js.map +1 -1
- package/lib/compiler/internal/build/RunBuildOptions.d.ts +6 -5
- package/lib/compiler/internal/build/WatchInputPublication.d.ts +59 -0
- package/lib/compiler/internal/build/WatchInputPublication.js +93 -0
- package/lib/compiler/internal/build/WatchInputPublication.js.map +1 -0
- package/lib/compiler/internal/build/runBuild.d.ts +29 -2
- package/lib/compiler/internal/build/runBuild.js +45 -19
- package/lib/compiler/internal/build/runBuild.js.map +1 -1
- package/lib/compiler/internal/buildNativeCompiler.d.ts +2 -0
- package/lib/compiler/internal/buildNativeCompiler.js +1 -0
- package/lib/compiler/internal/buildNativeCompiler.js.map +1 -1
- package/lib/compiler/internal/compileProjectInMemory.js +4 -2
- package/lib/compiler/internal/compileProjectInMemory.js.map +1 -1
- package/lib/compiler/internal/project/resolveOwningProjectConfig.d.ts +7 -2
- package/lib/compiler/internal/project/resolveOwningProjectConfig.js +6 -3
- package/lib/compiler/internal/project/resolveOwningProjectConfig.js.map +1 -1
- package/lib/compiler/internal/readEffectiveCompilerOptions.js +1 -1
- package/lib/compiler/internal/readEffectiveCompilerOptions.js.map +1 -1
- package/lib/compiler/internal/resolveBinary.d.ts +1 -0
- package/lib/compiler/internal/resolveBinary.js.map +1 -1
- package/lib/compiler/internal/resolveTsgo.d.ts +6 -0
- package/lib/compiler/internal/resolveTsgo.js.map +1 -1
- package/lib/compiler/internal/runSingleFileEmit.d.ts +28 -1
- package/lib/compiler/internal/runSingleFileEmit.js +120 -86
- package/lib/compiler/internal/runSingleFileEmit.js.map +1 -1
- package/lib/compiler/internal/startResidentTransform.js +8 -2
- package/lib/compiler/internal/startResidentTransform.js.map +1 -1
- package/lib/compiler/internal/transformProjectInMemory.js +11 -3
- package/lib/compiler/internal/transformProjectInMemory.js.map +1 -1
- package/lib/compiler/internal/transformProjectInWorker.d.ts +1 -1
- package/lib/compiler/internal/transformProjectInWorker.js +3 -2
- package/lib/compiler/internal/transformProjectInWorker.js.map +1 -1
- package/lib/internal/workerModuleUrl.d.ts +28 -0
- package/lib/internal/workerModuleUrl.js +40 -0
- package/lib/internal/workerModuleUrl.js.map +1 -0
- package/lib/launcher/internal/buildSingleRootProject.js +2 -1
- package/lib/launcher/internal/buildSingleRootProject.js.map +1 -1
- package/lib/launcher/internal/getCompilerVersionText.js +3 -2
- package/lib/launcher/internal/getCompilerVersionText.js.map +1 -1
- package/lib/launcher/internal/prepareExecution.js +2 -1
- package/lib/launcher/internal/prepareExecution.js.map +1 -1
- package/lib/launcher/internal/runTtsc.js +91 -41
- package/lib/launcher/internal/runTtsc.js.map +1 -1
- package/lib/launcher/internal/runtime/CommonJsRuntimeSource.d.ts +10 -6
- package/lib/launcher/internal/runtime/CommonJsRuntimeSource.js +11 -9
- package/lib/launcher/internal/runtime/CommonJsRuntimeSource.js.map +1 -1
- package/lib/launcher/internal/runtime/advertiseTypeScriptExtensions.d.ts +20 -0
- package/lib/launcher/internal/runtime/advertiseTypeScriptExtensions.js +27 -0
- package/lib/launcher/internal/runtime/advertiseTypeScriptExtensions.js.map +1 -0
- package/lib/launcher/internal/runtime/installRuntimeHooks.d.ts +5 -3
- package/lib/launcher/internal/runtime/installRuntimeHooks.js +7 -3
- package/lib/launcher/internal/runtime/installRuntimeHooks.js.map +1 -1
- package/lib/launcher/internal/watch/AsyncWatchTopology.d.ts +113 -0
- package/lib/launcher/internal/watch/AsyncWatchTopology.js +232 -0
- package/lib/launcher/internal/watch/AsyncWatchTopology.js.map +1 -0
- package/lib/launcher/internal/watch/WatchSettlement.d.ts +49 -0
- package/lib/launcher/internal/watch/WatchSettlement.js +70 -0
- package/lib/launcher/internal/watch/WatchSettlement.js.map +1 -0
- package/lib/launcher/internal/watch/WatchTopology.d.ts +29 -1
- package/lib/launcher/internal/watch/WatchTopology.js +86 -10
- package/lib/launcher/internal/watch/WatchTopology.js.map +1 -1
- package/lib/launcher/internal/watch/WatchTopologyWorkerProtocol.d.ts +121 -0
- package/lib/launcher/internal/watch/WatchTopologyWorkerProtocol.js +3 -0
- package/lib/launcher/internal/watch/WatchTopologyWorkerProtocol.js.map +1 -0
- package/lib/launcher/internal/watch/serveWatchTopologyWorker.d.ts +19 -0
- package/lib/launcher/internal/watch/serveWatchTopologyWorker.js +62 -0
- package/lib/launcher/internal/watch/serveWatchTopologyWorker.js.map +1 -0
- package/lib/launcher/internal/watch/watchTopologyWorker.d.ts +1 -0
- package/lib/launcher/internal/watch/watchTopologyWorker.js +22 -0
- package/lib/launcher/internal/watch/watchTopologyWorker.js.map +1 -0
- package/lib/plugin/CapabilityPluginResolver.d.ts +1 -1
- package/lib/plugin/CapabilityPluginResolver.js +3 -2
- package/lib/plugin/CapabilityPluginResolver.js.map +1 -1
- package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.d.ts +15 -12
- package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.js +13 -11
- package/lib/plugin/internal/load/PluginDescriptorEvaluationCache.js.map +1 -1
- package/lib/plugin/internal/load/PluginPackageResolution.d.ts +2 -2
- package/lib/plugin/internal/load/PluginPackageResolution.js +13 -7
- package/lib/plugin/internal/load/PluginPackageResolution.js.map +1 -1
- package/lib/plugin/internal/load/ProjectPluginEntries.d.ts +23 -7
- package/lib/plugin/internal/load/ProjectPluginEntries.js +36 -14
- package/lib/plugin/internal/load/ProjectPluginEntries.js.map +1 -1
- package/lib/plugin/internal/load/collectProjectHostInputs.d.ts +3 -1
- package/lib/plugin/internal/load/collectProjectHostInputs.js +5 -2
- package/lib/plugin/internal/load/collectProjectHostInputs.js.map +1 -1
- package/lib/plugin/internal/load/hasProjectPluginEntries.d.ts +3 -1
- package/lib/plugin/internal/load/hasProjectPluginEntries.js +4 -2
- package/lib/plugin/internal/load/hasProjectPluginEntries.js.map +1 -1
- package/lib/plugin/internal/load/loadProjectPlugins.d.ts +36 -5
- package/lib/plugin/internal/load/loadProjectPlugins.js +466 -416
- package/lib/plugin/internal/load/loadProjectPlugins.js.map +1 -1
- package/lib/plugin/internal/load/pluginResolutionFailure.d.ts +18 -0
- package/lib/plugin/internal/load/pluginResolutionFailure.js +32 -0
- package/lib/plugin/internal/load/pluginResolutionFailure.js.map +1 -0
- package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.d.ts +1 -1
- package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js +3 -2
- package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js.map +1 -1
- package/lib/structures/ITtscCompilerContext.d.ts +12 -12
- package/lib/structures/ITtscPlugin.d.ts +7 -5
- package/lib/structures/ITtscPluginFactoryContext.d.ts +9 -8
- package/lib/structures/internal/TtscSingleFileEmitOptions.d.ts +12 -6
- package/package.json +9 -9
- package/src/TtscCompiler.ts +1 -1
- package/src/compiler/internal/ResidentCheckProcess.ts +159 -374
- package/src/compiler/internal/ResidentCheckProcessHost.ts +502 -0
- package/src/compiler/internal/ResidentCheckProcessProtocol.ts +53 -0
- package/src/compiler/internal/build/BuildExecution.ts +118 -9
- package/src/compiler/internal/build/ResidentCheckWatchSession.ts +41 -24
- package/src/compiler/internal/build/RunBuildOptions.ts +9 -5
- package/src/compiler/internal/build/WatchInputPublication.ts +106 -0
- package/src/compiler/internal/build/runBuild.ts +58 -34
- package/src/compiler/internal/buildNativeCompiler.ts +4 -0
- package/src/compiler/internal/compileProjectInMemory.ts +8 -2
- package/src/compiler/internal/project/resolveOwningProjectConfig.ts +16 -5
- package/src/compiler/internal/readEffectiveCompilerOptions.ts +1 -1
- package/src/compiler/internal/resolveBinary.ts +4 -1
- package/src/compiler/internal/resolveTsgo.ts +7 -0
- package/src/compiler/internal/runSingleFileEmit.ts +139 -99
- package/src/compiler/internal/startResidentTransform.ts +9 -2
- package/src/compiler/internal/transformProjectInMemory.ts +12 -3
- package/src/compiler/internal/transformProjectInWorker.ts +10 -2
- package/src/internal/workerModuleUrl.ts +34 -0
- package/src/launcher/internal/buildSingleRootProject.ts +2 -0
- package/src/launcher/internal/getCompilerVersionText.ts +3 -2
- package/src/launcher/internal/prepareExecution.ts +2 -0
- package/src/launcher/internal/runTtsc.ts +123 -45
- package/src/launcher/internal/runtime/CommonJsRuntimeSource.ts +11 -9
- package/src/launcher/internal/runtime/advertiseTypeScriptExtensions.ts +25 -0
- package/src/launcher/internal/runtime/installRuntimeHooks.ts +7 -3
- package/src/launcher/internal/watch/AsyncWatchTopology.ts +267 -0
- package/src/launcher/internal/watch/WatchSettlement.ts +67 -0
- package/src/launcher/internal/watch/WatchTopology.ts +84 -13
- package/src/launcher/internal/watch/WatchTopologyWorkerProtocol.ts +106 -0
- package/src/launcher/internal/watch/serveWatchTopologyWorker.ts +75 -0
- package/src/launcher/internal/watch/watchTopologyWorker.ts +29 -0
- package/src/plugin/CapabilityPluginResolver.ts +9 -2
- package/src/plugin/internal/load/PluginDescriptorEvaluationCache.ts +17 -12
- package/src/plugin/internal/load/PluginPackageResolution.ts +14 -9
- package/src/plugin/internal/load/ProjectPluginEntries.ts +40 -15
- package/src/plugin/internal/load/collectProjectHostInputs.ts +7 -1
- package/src/plugin/internal/load/hasProjectPluginEntries.ts +8 -3
- package/src/plugin/internal/load/loadProjectPlugins.ts +672 -594
- package/src/plugin/internal/load/pluginResolutionFailure.ts +37 -0
- package/src/plugin/internal/source/PluginBuildEnvironmentReadings.ts +8 -2
- package/src/structures/ITtscCompilerContext.ts +12 -12
- package/src/structures/ITtscPlugin.ts +7 -5
- package/src/structures/ITtscPluginFactoryContext.ts +9 -8
- package/src/structures/internal/TtscSingleFileEmitOptions.ts +22 -11
|
@@ -1,156 +1,118 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.ResidentCheckProcess = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
9
|
+
const workerModuleUrl_1 = require("../../internal/workerModuleUrl");
|
|
7
10
|
/**
|
|
8
|
-
* FIFO
|
|
11
|
+
* FIFO check client whose worker owns the child and its complete pipe lifetime.
|
|
9
12
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Watch topology can block the launcher's loop after shutdown timers start.
|
|
14
|
+
* Keeping spawn, EOF, signals, output draining and close on one independent
|
|
15
|
+
* loop prevents that work from spending a live child's shutdown grace or
|
|
16
|
+
* overtaking its pending close. An exit code alone never proves pipe closure: a
|
|
17
|
+
* living descendant can retain inherited stdout or stderr (#1758).
|
|
15
18
|
*
|
|
16
|
-
* The caller owns disposal.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* pipes, request listeners, timers and event-loop process reference while
|
|
23
|
-
* keeping joining failed; the client object still holds its ChildProcess. It
|
|
24
|
-
* neither kills unrelated descendants nor certifies their termination. A forced
|
|
25
|
-
* or unjoined process is not a graceful shutdown. These delays are event-loop
|
|
26
|
-
* timer policies, not hard elapsed-time bounds; synchronous blocking or
|
|
27
|
-
* callback starvation can postpone their delivery.
|
|
19
|
+
* The caller owns disposal. Retirement uses the host's one-second input flush,
|
|
20
|
+
* EOF grace and forced-join policies. Only its actual-close receipt authorizes
|
|
21
|
+
* replacement; worker failure leaves joining unknown and rejected. Strict close
|
|
22
|
+
* additionally requires a graceful zero exit. Neither worker nor client claims
|
|
23
|
+
* termination of unrelated descendants. Abrupt process exit can still interrupt
|
|
24
|
+
* cleanup.
|
|
28
25
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* @evidence contracts/
|
|
35
|
-
* @evidence contracts/
|
|
36
|
-
* @evidence contracts/
|
|
26
|
+
* One worker serves one child across requests. Messages copy serialized request
|
|
27
|
+
* and reply bytes; pending request count and reply size have no fixed cap.
|
|
28
|
+
* Retirement rejects pending callers immediately and joins its worker after the
|
|
29
|
+
* terminal receipt. The client retains the Worker object.
|
|
30
|
+
*
|
|
31
|
+
* @evidence contracts/common.md#principled-implementation The independent loop owns every observation needed for retirement, and only its actual child-close receipt permits replacement, keeping parent event-loop blocking outside shutdown timing.
|
|
32
|
+
* @evidence contracts/common.md#clear-and-simple-design The client owns caller serialization and settlement; its worker owns the native transport and shutdown state machine.
|
|
33
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts No elapsed parent deadline, worker exit, signal attempt or exit code fabricates a joined child; unknown worker failure rejects joining.
|
|
34
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose documents the blocking hazard, inherited-pipe authority, disposal, failure effects and unbounded request population.
|
|
35
|
+
* @evidence contracts/portability.md#os-neutral-implementation Node loads a sibling worker using the current source or emitted extension and inherited loader arguments; the host uses native executable argv and pipes without shell commands.
|
|
36
|
+
* @evidence contracts/performance.md#efficient-algorithms Serialization and structured cloning visit message bytes; a request-id map gives constant-time settlement without scanning earlier requests. Worker startup and one thread per active child are additional costs; no speedup is claimed.
|
|
37
|
+
* @evidence contracts/performance.md#reuse-equivalent-work One worker and child serve the startup-selected check process across FIFO requests; each request remains effectful and receives its own result.
|
|
38
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources The client owns one worker and one resolver pair per pending request. Results or retirement remove resolvers; joining waits for the terminal receipt and worker exit. Unexpected worker failure rejects callers and joining and removes worker liveness. Request count and bytes are uncapped, and the client object retains its Worker reference.
|
|
37
39
|
*/
|
|
38
40
|
class ResidentCheckProcess {
|
|
39
|
-
|
|
40
|
-
pending =
|
|
41
|
-
|
|
42
|
-
reader;
|
|
41
|
+
worker;
|
|
42
|
+
pending = new Map();
|
|
43
|
+
ordinal = 0;
|
|
43
44
|
failure;
|
|
44
|
-
|
|
45
|
+
closeError;
|
|
46
|
+
joinError;
|
|
47
|
+
terminal = false;
|
|
45
48
|
exited;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
forced = false;
|
|
49
|
-
flushDeadline;
|
|
50
|
-
terminationTimer;
|
|
51
|
-
terminationDeadline;
|
|
52
|
-
releaseTransport;
|
|
49
|
+
resolveExit;
|
|
50
|
+
rejectExit;
|
|
53
51
|
constructor(options) {
|
|
54
|
-
const nativeArgs = [...options.args];
|
|
55
|
-
const trace = E2ETrace_1.E2ETrace.begin(options.binary, nativeArgs, options, "resident-check");
|
|
56
|
-
this.child = (0, node_child_process_1.spawn)(options.binary, nativeArgs, {
|
|
57
|
-
cwd: options.cwd,
|
|
58
|
-
env: options.env,
|
|
59
|
-
windowsHide: true,
|
|
60
|
-
});
|
|
61
|
-
E2ETrace_1.E2ETrace.asynchronous(trace, this.child);
|
|
62
|
-
let onChildClose;
|
|
63
52
|
this.exited = new Promise((resolve, reject) => {
|
|
64
|
-
|
|
65
|
-
this.didClose = true;
|
|
66
|
-
clearTimeout(this.flushDeadline);
|
|
67
|
-
clearTimeout(this.terminationTimer);
|
|
68
|
-
clearTimeout(this.terminationDeadline);
|
|
69
|
-
this.releaseTransport = undefined;
|
|
70
|
-
this.reader?.close();
|
|
71
|
-
resolve();
|
|
72
|
-
};
|
|
73
|
-
this.child.once("close", onChildClose);
|
|
53
|
+
this.resolveExit = resolve;
|
|
74
54
|
this.rejectExit = reject;
|
|
75
55
|
});
|
|
76
|
-
// Legacy dispose initiates retirement without returning a promise. Keep its
|
|
77
|
-
// rejected join observable to awaiters without an unhandled rejection.
|
|
78
56
|
void this.exited.catch(() => { });
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
this.reader.on("line", onLine);
|
|
97
|
-
this.reader.on("close", onReaderClose);
|
|
98
|
-
this.child.stderr?.on("data", onStderr);
|
|
99
|
-
this.child.on("error", onError);
|
|
100
|
-
stdin.on("error", onError);
|
|
101
|
-
stdout.on("error", onError);
|
|
102
|
-
this.child.stderr?.on("error", ResidentCheckProcess.ignoreTransportError);
|
|
103
|
-
this.releaseTransport = () => {
|
|
104
|
-
clearTimeout(this.flushDeadline);
|
|
105
|
-
clearTimeout(this.terminationTimer);
|
|
106
|
-
clearTimeout(this.terminationDeadline);
|
|
107
|
-
this.reader.off("line", onLine);
|
|
108
|
-
this.reader.off("close", onReaderClose);
|
|
109
|
-
this.reader.close();
|
|
110
|
-
if (onChildClose !== undefined)
|
|
111
|
-
this.child.off("close", onChildClose);
|
|
112
|
-
this.child.off("error", onError);
|
|
113
|
-
this.child.on("error", ResidentCheckProcess.ignoreTransportError);
|
|
114
|
-
this.child.stderr?.off("data", onStderr);
|
|
115
|
-
for (const stream of [stdin, stdout, this.child.stderr]) {
|
|
116
|
-
stream?.off("error", onError);
|
|
117
|
-
stream?.off("error", ResidentCheckProcess.ignoreTransportError);
|
|
118
|
-
stream?.on("error", ResidentCheckProcess.ignoreTransportError);
|
|
119
|
-
stream?.destroy();
|
|
57
|
+
this.worker = new node_worker_threads_1.Worker((0, workerModuleUrl_1.workerModuleUrl)(node_path_1.default.join(__dirname, `ResidentCheckProcessHost${node_path_1.default.extname(__filename)}`)), {
|
|
58
|
+
workerData: {
|
|
59
|
+
...options,
|
|
60
|
+
args: [...options.args],
|
|
61
|
+
env: { ...options.env },
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
this.worker.on("message", (reply) => {
|
|
65
|
+
if (this.terminal)
|
|
66
|
+
return;
|
|
67
|
+
if (reply.kind === "terminal") {
|
|
68
|
+
this.terminal = true;
|
|
69
|
+
this.joinError = reply.joinError;
|
|
70
|
+
this.closeError = reply.closeError;
|
|
71
|
+
this.fail(reply.joinError ??
|
|
72
|
+
reply.closeError ??
|
|
73
|
+
new Error("ttsc: resident check host exited"));
|
|
120
74
|
}
|
|
121
|
-
|
|
122
|
-
|
|
75
|
+
else {
|
|
76
|
+
const pending = this.pending.get(reply.id);
|
|
77
|
+
if (pending === undefined)
|
|
78
|
+
return;
|
|
79
|
+
this.pending.delete(reply.id);
|
|
80
|
+
if (reply.kind === "result")
|
|
81
|
+
pending.resolve(reply.result);
|
|
82
|
+
else {
|
|
83
|
+
pending.reject(reply.error);
|
|
84
|
+
this.fail(reply.error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
this.worker.on("error", (error) => this.workerFailed(asError(error)));
|
|
89
|
+
this.worker.once("exit", (code) => {
|
|
90
|
+
if (!this.terminal)
|
|
91
|
+
this.workerFailed(new Error(`ttsc: resident check process owner exited before child retirement (code ${code})`));
|
|
92
|
+
else if (this.joinError === undefined)
|
|
93
|
+
this.resolveExit();
|
|
94
|
+
else
|
|
95
|
+
this.rejectExit(this.joinError);
|
|
96
|
+
});
|
|
123
97
|
}
|
|
124
98
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* that retired the process, so the caller can fall back to a one-shot check
|
|
130
|
-
* for that cycle.
|
|
99
|
+
* Serialize one cycle before admission and pair its reply with this caller.
|
|
100
|
+
* Serialization failure rejects only this call when its thrown value can be
|
|
101
|
+
* normalized to an Error; normalization itself can throw synchronously. A
|
|
102
|
+
* retired transport rejects all admitted calls and every later request.
|
|
131
103
|
*
|
|
132
|
-
* Serialization precedes
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
* @evidence contracts/
|
|
137
|
-
* @evidence contracts/
|
|
138
|
-
* @evidence contracts/
|
|
139
|
-
* @evidence contracts/
|
|
140
|
-
* @evidence contracts/portability.md#os-neutral-implementation JSON lines pass native change paths as data over Node's stdin stream, without constructing a shell command or converting native separators.
|
|
141
|
-
* @evidence contracts/performance.md#efficient-algorithms Encoding visits supplied properties and output bytes, with caller-defined conversion not bounded by final JSON size; enqueueing and settlement have amortized constant queue work plus reply parsing. Native check work is delegated rather than bounded by transport cost.
|
|
142
|
-
* @evidence contracts/performance.md#reuse-equivalent-work Each cycle is sent to the existing fixed-configuration Program owner; changes are effectful transitions and are not coalesced merely because request values match.
|
|
143
|
-
* @evidence contracts/performance.md#bound-retention-and-release-resources The client retains one resolver pair per outstanding call until reply or retirement; serialization allocates one request line, and live requests wait without an implicit timeout or population limit.
|
|
104
|
+
* @evidence contracts/common.md#principled-implementation Serialization precedes worker admission; identifiers pair results with their admitted callers while the host preserves FIFO check execution.
|
|
105
|
+
* @evidence contracts/common.md#clear-and-simple-design Caller serialization stays in the client, and the host alone validates native replies and retires a failed transport.
|
|
106
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts A failed conversion adds no request slot; worker failure rejects rather than fabricating a check result.
|
|
107
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose distinguishes serialization rejection and synchronous normalization failure from terminal transport failure.
|
|
108
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native input paths remain JSON data across the message and pipe boundaries without shell interpolation.
|
|
109
|
+
* @evidence contracts/performance.md#efficient-algorithms JSON conversion and message copying visit input bytes, caller-defined conversion can add arbitrary work, and map admission and settlement use constant-time key operations.
|
|
110
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Each effectful cycle owns a request and reply even when its payload matches an earlier cycle.
|
|
111
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Each admitted call retains resolver callbacks until its result or shared retirement; request population and serialized bytes have no fixed cap.
|
|
144
112
|
*/
|
|
145
113
|
request(payload) {
|
|
146
114
|
if (this.failure !== undefined)
|
|
147
115
|
return Promise.reject(this.failure);
|
|
148
|
-
const stdin = this.child.stdin;
|
|
149
|
-
if (stdin === null || stdin.destroyed) {
|
|
150
|
-
const error = new Error("ttsc: resident check host stdin is closed");
|
|
151
|
-
this.fail(error);
|
|
152
|
-
return Promise.reject(error);
|
|
153
|
-
}
|
|
154
116
|
let line;
|
|
155
117
|
try {
|
|
156
118
|
line = `${JSON.stringify(payload)}\n`;
|
|
@@ -159,244 +121,97 @@ class ResidentCheckProcess {
|
|
|
159
121
|
return Promise.reject(asError(error));
|
|
160
122
|
}
|
|
161
123
|
return new Promise((resolve, reject) => {
|
|
162
|
-
const
|
|
163
|
-
this.pending.
|
|
124
|
+
const id = ++this.ordinal;
|
|
125
|
+
this.pending.set(id, { resolve, reject });
|
|
164
126
|
try {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
this.fail(error);
|
|
127
|
+
this.worker.postMessage({
|
|
128
|
+
kind: "request",
|
|
129
|
+
id,
|
|
130
|
+
line,
|
|
170
131
|
});
|
|
171
132
|
}
|
|
172
133
|
catch (error) {
|
|
173
|
-
|
|
174
|
-
this.settle(pending, reason);
|
|
175
|
-
this.fail(reason);
|
|
134
|
+
this.workerFailed(asError(error));
|
|
176
135
|
}
|
|
177
136
|
});
|
|
178
137
|
}
|
|
179
138
|
/**
|
|
180
|
-
* Retire
|
|
181
|
-
* Idempotent; a process that already failed is left as is.
|
|
139
|
+
* Retire once and reject pending callers without waiting for native close.
|
|
182
140
|
*
|
|
183
|
-
* @evidence contracts/common.md#principled-implementation
|
|
184
|
-
* @evidence contracts/common.md#clear-and-simple-design Disposal
|
|
185
|
-
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
186
|
-
* @evidence contracts/common.md#meaningful-documentation
|
|
187
|
-
* @evidence contracts/portability.md#os-neutral-implementation
|
|
188
|
-
* @evidence contracts/performance.md#efficient-algorithms
|
|
189
|
-
*
|
|
190
|
-
* @
|
|
191
|
-
*
|
|
192
|
-
* @evidence contracts/performance.md#bound-retention-and-release-resources Disposal clears pending callbacks and requests stdin EOF while preserving output until actual close or a failed join timer. Failed join destroys/unrefs owned transport and removes request listeners without proving child/descendant termination; timer delivery depends on the event loop, and the client object can still retain its ChildProcess.
|
|
141
|
+
* @evidence contracts/common.md#principled-implementation Terminal caller failure is set before rejection, and one retire command delegates EOF and joining to the owner.
|
|
142
|
+
* @evidence contracts/common.md#clear-and-simple-design Disposal initiates the host's existing retirement state machine rather than maintaining parent-side timers.
|
|
143
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Repeated disposal cannot revive a request or authorize replacement before actual joining.
|
|
144
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose identifies immediate rejection and asynchronous native retirement.
|
|
145
|
+
* @evidence contracts/portability.md#os-neutral-implementation A Node message delegates native EOF and signaling without platform-specific PID commands.
|
|
146
|
+
* @evidence contracts/performance.md#efficient-algorithms Rejection visits the outstanding request map once and posts one constant-size retirement command.
|
|
147
|
+
* @evidenceExclude contracts/performance.md#reuse-equivalent-work Disposal invalidates an owner without creating a reusable computation.
|
|
148
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Pending callbacks are released immediately; the referenced worker keeps cleanup alive until its terminal receipt and exit, and unknown ownership remains failure.
|
|
193
149
|
*/
|
|
194
150
|
dispose() {
|
|
151
|
+
if (this.failure !== undefined)
|
|
152
|
+
return;
|
|
195
153
|
this.fail(new Error("ttsc: resident check host disposed"));
|
|
154
|
+
try {
|
|
155
|
+
this.worker.postMessage({
|
|
156
|
+
kind: "retire",
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
this.workerFailed(asError(error));
|
|
161
|
+
}
|
|
196
162
|
}
|
|
197
163
|
/**
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
* retirement.
|
|
164
|
+
* Await actual child close and the owner thread, requiring graceful zero
|
|
165
|
+
* exit. Repeated calls share retirement but retain strict shutdown failure.
|
|
201
166
|
*
|
|
202
|
-
* @evidence contracts/common.md#principled-implementation
|
|
203
|
-
* @evidence contracts/common.md#clear-and-simple-design
|
|
204
|
-
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
205
|
-
* @evidence contracts/common.md#meaningful-documentation Native prose states
|
|
206
|
-
* @evidence contracts/portability.md#os-neutral-implementation
|
|
207
|
-
* @evidence contracts/performance.md#efficient-algorithms Closing
|
|
208
|
-
* @evidence contracts/performance.md#reuse-equivalent-work Repeated closes
|
|
209
|
-
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
167
|
+
* @evidence contracts/common.md#principled-implementation Success requires the host's actual-close receipt, strict status validation and owner-thread exit.
|
|
168
|
+
* @evidence contracts/common.md#clear-and-simple-design Strict shutdown adds status validation to the same joining promise used by recovery.
|
|
169
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Neither worker disappearance nor requested forced termination substitutes for graceful child close.
|
|
170
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states child and thread joining, strict zero exit and repeated failure behavior.
|
|
171
|
+
* @evidence contracts/portability.md#os-neutral-implementation Node worker messages carry the native host's observed close outcome without interpreting a PID or shell status.
|
|
172
|
+
* @evidence contracts/performance.md#efficient-algorithms Closing reuses retirement and performs constant-time outcome validation after its one pending-request traversal.
|
|
173
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Repeated closes await this owner's single terminal promise while retaining strict status independently from recovery joining.
|
|
174
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources The host releases its pipes and timers on actual close or failed joining; the client awaits worker exit, releases pending callbacks, and preserves unknown ownership as rejection.
|
|
210
175
|
*/
|
|
211
176
|
async close() {
|
|
212
177
|
this.dispose();
|
|
213
178
|
await this.exited;
|
|
214
|
-
if (this.
|
|
215
|
-
throw
|
|
216
|
-
if (this.child.exitCode !== 0 || this.child.signalCode !== null)
|
|
217
|
-
throw this.exitError();
|
|
179
|
+
if (this.closeError !== undefined)
|
|
180
|
+
throw this.closeError;
|
|
218
181
|
}
|
|
219
182
|
/**
|
|
220
|
-
*
|
|
221
|
-
*
|
|
183
|
+
* Join a known failed child and its owner before replacement. Waiting alone
|
|
184
|
+
* starts no retirement deadline; unknown ownership rejects.
|
|
222
185
|
*
|
|
223
|
-
* @evidence contracts/common.md#principled-implementation A
|
|
224
|
-
* @evidence contracts/common.md#clear-and-simple-design
|
|
225
|
-
* @evidence contracts/common.md#prohibited-implementation-shortcuts
|
|
226
|
-
* @evidence contracts/common.md#meaningful-documentation Native prose
|
|
227
|
-
* @evidence contracts/portability.md#os-neutral-implementation The
|
|
228
|
-
* @evidence contracts/performance.md#efficient-algorithms
|
|
229
|
-
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
230
|
-
* @evidence contracts/performance.md#bound-retention-and-release-resources
|
|
186
|
+
* @evidence contracts/common.md#principled-implementation A known failed child can be replaced only after its actual-close receipt and worker exit.
|
|
187
|
+
* @evidence contracts/common.md#clear-and-simple-design Recovery consumes joining separately from strict shutdown status.
|
|
188
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Unknown worker or pipe ownership remains rejection rather than successful retirement.
|
|
189
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states replacement authority, passive waiting and unknown failure.
|
|
190
|
+
* @evidence contracts/portability.md#os-neutral-implementation The owner observes native close through Node APIs instead of treating signals or process IDs as portable joining proof.
|
|
191
|
+
* @evidence contracts/performance.md#efficient-algorithms The accessor returns an existing promise without timers, native probes or additional listeners.
|
|
192
|
+
* @evidence contracts/performance.md#reuse-equivalent-work All waiters share the same owner's terminal promise; replacement owns a new worker and promise.
|
|
193
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources Passive waiting can remain pending for a live unretired host; active retirement releases owned resources through its existing deadlines and terminal worker exit.
|
|
231
194
|
*/
|
|
232
195
|
waitForExit() {
|
|
233
196
|
return this.exited;
|
|
234
197
|
}
|
|
235
|
-
rejectExit;
|
|
236
|
-
onLine(line) {
|
|
237
|
-
if (this.failure !== undefined || line.trim().length === 0)
|
|
238
|
-
return;
|
|
239
|
-
const pending = this.pending[this.pendingHead];
|
|
240
|
-
if (pending === undefined) {
|
|
241
|
-
this.fail(new Error("ttsc: resident check host sent an unsolicited reply"));
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
const result = parseResidentCheckResult(line);
|
|
245
|
-
if (result === undefined) {
|
|
246
|
-
const error = new Error(`ttsc: resident check host sent a malformed reply: ${echoLine(line)}`);
|
|
247
|
-
this.settle(pending, error);
|
|
248
|
-
this.fail(error);
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
this.settle(pending, result);
|
|
252
|
-
}
|
|
253
|
-
settle(pending, result) {
|
|
254
|
-
if (pending.settled)
|
|
255
|
-
return;
|
|
256
|
-
pending.settled = true;
|
|
257
|
-
if (this.pending[this.pendingHead] === pending) {
|
|
258
|
-
this.pending[this.pendingHead++] = undefined;
|
|
259
|
-
if (this.pendingHead * 2 >= this.pending.length) {
|
|
260
|
-
this.pending.splice(0, this.pendingHead);
|
|
261
|
-
this.pendingHead = 0;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
if (result instanceof Error)
|
|
265
|
-
pending.reject(result);
|
|
266
|
-
else
|
|
267
|
-
pending.resolve(result);
|
|
268
|
-
}
|
|
269
198
|
fail(error) {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
this.pendingHead = 0;
|
|
275
|
-
for (const request of pending) {
|
|
276
|
-
if (request !== undefined)
|
|
277
|
-
this.settle(request, error);
|
|
278
|
-
}
|
|
279
|
-
this.terminate();
|
|
280
|
-
}
|
|
281
|
-
terminate() {
|
|
282
|
-
if (this.closing)
|
|
283
|
-
return;
|
|
284
|
-
this.closing = true;
|
|
285
|
-
const stdin = this.child.stdin;
|
|
286
|
-
if (stdin !== null && !stdin.destroyed) {
|
|
287
|
-
try {
|
|
288
|
-
// EOF cannot reach the child until the owned writable pipe finishes.
|
|
289
|
-
// A blocked parent event loop must not spend the child's shutdown grace
|
|
290
|
-
// before that delivery can happen.
|
|
291
|
-
stdin.end(() => this.startTerminationGrace());
|
|
292
|
-
// Start delivery's own deadline after the caller gives Node control.
|
|
293
|
-
// This bounds an unread full pipe without charging synchronous caller
|
|
294
|
-
// work against either delivery or the child's later EOF grace.
|
|
295
|
-
queueMicrotask(() => {
|
|
296
|
-
if (this.didClose || this.terminationTimer !== undefined)
|
|
297
|
-
return;
|
|
298
|
-
this.flushDeadline = setTimeout(() => this.forceTerminationAndJoin(), TERMINATION_GRACE_MS);
|
|
299
|
-
});
|
|
300
|
-
return;
|
|
301
|
-
}
|
|
302
|
-
catch {
|
|
303
|
-
stdin.destroy();
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
this.startTerminationGrace();
|
|
307
|
-
}
|
|
308
|
-
startTerminationGrace() {
|
|
309
|
-
clearTimeout(this.flushDeadline);
|
|
310
|
-
// Keep output pipes readable until close: destroying them would discard the
|
|
311
|
-
// last reply and confuse a requested EOF with transport truncation.
|
|
312
|
-
if (this.didClose ||
|
|
313
|
-
this.terminationTimer !== undefined ||
|
|
314
|
-
this.terminationDeadline !== undefined)
|
|
315
|
-
return;
|
|
316
|
-
this.terminationTimer = setTimeout(() => this.forceTerminationAndJoin(), TERMINATION_GRACE_MS);
|
|
199
|
+
this.failure ??= error;
|
|
200
|
+
for (const pending of this.pending.values())
|
|
201
|
+
pending.reject(this.failure);
|
|
202
|
+
this.pending.clear();
|
|
317
203
|
}
|
|
318
|
-
|
|
319
|
-
if (this.
|
|
204
|
+
workerFailed(error) {
|
|
205
|
+
if (this.terminal)
|
|
320
206
|
return;
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
catch {
|
|
327
|
-
// The deadline still requires actual close, even if kill fails.
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
this.terminationDeadline = setTimeout(() => {
|
|
331
|
-
this.rejectExit?.(new Error("ttsc: resident check host did not close after termination"));
|
|
332
|
-
// Reject first: destroying inherited pipes can cause Node's close event,
|
|
333
|
-
// but releasing our handles cannot prove a graceful physical join.
|
|
334
|
-
this.releaseTransport?.();
|
|
335
|
-
this.releaseTransport = undefined;
|
|
336
|
-
}, TERMINATION_GRACE_MS);
|
|
337
|
-
}
|
|
338
|
-
static ignoreTransportError() { }
|
|
339
|
-
exitError() {
|
|
340
|
-
const detail = this.stderr.trim();
|
|
341
|
-
if (detail.length !== 0)
|
|
342
|
-
return new Error(detail);
|
|
343
|
-
const signal = this.child.signalCode === null ? "" : `, signal ${this.child.signalCode}`;
|
|
344
|
-
return new Error(`ttsc: resident check host exited (code ${this.child.exitCode ?? "null"}${signal})`);
|
|
207
|
+
this.terminal = true;
|
|
208
|
+
this.joinError = error;
|
|
209
|
+
this.fail(error);
|
|
210
|
+
this.rejectExit(error);
|
|
211
|
+
this.worker.unref();
|
|
345
212
|
}
|
|
346
213
|
}
|
|
347
214
|
exports.ResidentCheckProcess = ResidentCheckProcess;
|
|
348
|
-
const STDERR_TAIL_LIMIT = 64 * 1024;
|
|
349
|
-
const REPLY_ECHO_LIMIT = 200;
|
|
350
|
-
const TERMINATION_GRACE_MS = 1_000;
|
|
351
|
-
function parseResidentCheckResult(line) {
|
|
352
|
-
let value;
|
|
353
|
-
try {
|
|
354
|
-
value = JSON.parse(line);
|
|
355
|
-
}
|
|
356
|
-
catch {
|
|
357
|
-
return undefined;
|
|
358
|
-
}
|
|
359
|
-
if (!isRecord(value) ||
|
|
360
|
-
typeof value.status !== "number" ||
|
|
361
|
-
!Number.isInteger(value.status)) {
|
|
362
|
-
return undefined;
|
|
363
|
-
}
|
|
364
|
-
if (typeof value.stdout !== "string" || typeof value.stderr !== "string") {
|
|
365
|
-
return undefined;
|
|
366
|
-
}
|
|
367
|
-
const telemetry = value.telemetry;
|
|
368
|
-
if (!isRecord(telemetry) ||
|
|
369
|
-
typeof telemetry.pid !== "number" ||
|
|
370
|
-
!Number.isSafeInteger(telemetry.pid) ||
|
|
371
|
-
typeof telemetry.programLoads !== "number" ||
|
|
372
|
-
!Number.isSafeInteger(telemetry.programLoads) ||
|
|
373
|
-
typeof telemetry.programUpdates !== "number" ||
|
|
374
|
-
!Number.isSafeInteger(telemetry.programUpdates) ||
|
|
375
|
-
typeof telemetry.reused !== "boolean") {
|
|
376
|
-
return undefined;
|
|
377
|
-
}
|
|
378
|
-
return {
|
|
379
|
-
diagnostics: [],
|
|
380
|
-
status: value.status,
|
|
381
|
-
stderr: value.stderr,
|
|
382
|
-
stdout: value.stdout,
|
|
383
|
-
telemetry: {
|
|
384
|
-
pid: telemetry.pid,
|
|
385
|
-
programLoads: telemetry.programLoads,
|
|
386
|
-
programUpdates: telemetry.programUpdates,
|
|
387
|
-
reused: telemetry.reused,
|
|
388
|
-
},
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
function isRecord(value) {
|
|
392
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
393
|
-
}
|
|
394
|
-
function echoLine(line) {
|
|
395
|
-
const trimmed = line.trim();
|
|
396
|
-
return JSON.stringify(trimmed.length <= REPLY_ECHO_LIMIT
|
|
397
|
-
? trimmed
|
|
398
|
-
: `${trimmed.slice(0, REPLY_ECHO_LIMIT)}…`);
|
|
399
|
-
}
|
|
400
215
|
function asError(error) {
|
|
401
216
|
return error instanceof Error ? error : new Error(String(error));
|
|
402
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResidentCheckProcess.js","sourceRoot":"","sources":["../../../src/compiler/internal/ResidentCheckProcess.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResidentCheckProcess.js","sourceRoot":"","sources":["../../../src/compiler/internal/ResidentCheckProcess.ts"],"names":[],"mappings":"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"}
|