@excitedjs/dreamux-utils 0.3.4 → 0.4.0-beta.142
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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/supervised-child.d.ts +49 -0
- package/dist/supervised-child.d.ts.map +1 -0
- package/dist/supervised-child.js +151 -0
- package/dist/supervised-child.js.map +1 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type ChildProcess, type ForkOptions, type SpawnOptions } from 'node:child_process';
|
|
2
|
+
export interface SupervisedChildExit {
|
|
3
|
+
code: number | null;
|
|
4
|
+
signal: NodeJS.Signals | null;
|
|
5
|
+
}
|
|
6
|
+
export type SupervisedChildLaunch = {
|
|
7
|
+
kind: 'spawn';
|
|
8
|
+
command: string;
|
|
9
|
+
args?: readonly string[];
|
|
10
|
+
options?: Omit<SpawnOptions, 'detached'>;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'fork';
|
|
13
|
+
modulePath: string;
|
|
14
|
+
args?: readonly string[];
|
|
15
|
+
options?: Omit<ForkOptions, 'detached'>;
|
|
16
|
+
};
|
|
17
|
+
export interface SupervisedChildOptions {
|
|
18
|
+
stopTimeoutMs?: number;
|
|
19
|
+
pollIntervalMs?: number;
|
|
20
|
+
}
|
|
21
|
+
type ExitHandler = (exit: SupervisedChildExit) => void;
|
|
22
|
+
type ErrorHandler = (error: Error) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Neutral owner for one detached child process group. Domain wrappers keep
|
|
25
|
+
* readiness probes, transports, and cleanup policy; this class owns only
|
|
26
|
+
* launch, unexpected-exit observation, and two-stage group termination.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SupervisedChild {
|
|
29
|
+
private readonly launch;
|
|
30
|
+
private readonly options;
|
|
31
|
+
private child_;
|
|
32
|
+
private pid_;
|
|
33
|
+
private stopping;
|
|
34
|
+
private stopPromise;
|
|
35
|
+
private readonly exitHandlers;
|
|
36
|
+
private readonly errorHandlers;
|
|
37
|
+
constructor(launch: SupervisedChildLaunch, options?: SupervisedChildOptions);
|
|
38
|
+
get child(): ChildProcess | null;
|
|
39
|
+
get pid(): number | null;
|
|
40
|
+
onExit(handler: ExitHandler): () => void;
|
|
41
|
+
onError(handler: ErrorHandler): () => void;
|
|
42
|
+
start(): Promise<ChildProcess>;
|
|
43
|
+
stop(): Promise<void>;
|
|
44
|
+
private doStop;
|
|
45
|
+
private notifyExit;
|
|
46
|
+
private notifyError;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=supervised-child.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervised-child.d.ts","sourceRoot":"","sources":["../src/supervised-child.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;CAC1C,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;CACzC,CAAC;AAEN,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;AACvD,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAE3C;;;;GAIG;AACH,qBAAa,eAAe;IASxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;gBAGtC,MAAM,EAAE,qBAAqB,EAC7B,OAAO,GAAE,sBAA2B;IAGvD,IAAI,KAAK,IAAI,YAAY,GAAG,IAAI,CAE/B;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,IAAI;IAKxC,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAKpC,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAuCpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAKP,MAAM;IAmBpB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,WAAW;CASpB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { fork, spawn, } from 'node:child_process';
|
|
2
|
+
import { isProcessAlive, killProcessGroup } from './os.js';
|
|
3
|
+
/**
|
|
4
|
+
* Neutral owner for one detached child process group. Domain wrappers keep
|
|
5
|
+
* readiness probes, transports, and cleanup policy; this class owns only
|
|
6
|
+
* launch, unexpected-exit observation, and two-stage group termination.
|
|
7
|
+
*/
|
|
8
|
+
export class SupervisedChild {
|
|
9
|
+
launch;
|
|
10
|
+
options;
|
|
11
|
+
child_ = null;
|
|
12
|
+
pid_ = null;
|
|
13
|
+
stopping = false;
|
|
14
|
+
stopPromise = null;
|
|
15
|
+
exitHandlers = new Set();
|
|
16
|
+
errorHandlers = new Set();
|
|
17
|
+
constructor(launch, options = {}) {
|
|
18
|
+
this.launch = launch;
|
|
19
|
+
this.options = options;
|
|
20
|
+
}
|
|
21
|
+
get child() {
|
|
22
|
+
return this.child_;
|
|
23
|
+
}
|
|
24
|
+
get pid() {
|
|
25
|
+
return this.pid_;
|
|
26
|
+
}
|
|
27
|
+
onExit(handler) {
|
|
28
|
+
this.exitHandlers.add(handler);
|
|
29
|
+
return () => this.exitHandlers.delete(handler);
|
|
30
|
+
}
|
|
31
|
+
onError(handler) {
|
|
32
|
+
this.errorHandlers.add(handler);
|
|
33
|
+
return () => this.errorHandlers.delete(handler);
|
|
34
|
+
}
|
|
35
|
+
async start() {
|
|
36
|
+
if (this.child_ !== null) {
|
|
37
|
+
throw new Error('SupervisedChild.start: already started');
|
|
38
|
+
}
|
|
39
|
+
if (this.stopping) {
|
|
40
|
+
throw new Error('SupervisedChild.start: already stopped');
|
|
41
|
+
}
|
|
42
|
+
const child = launchChild(this.launch);
|
|
43
|
+
this.child_ = child;
|
|
44
|
+
// Node assigns pid synchronously for a successfully launched child. Publish
|
|
45
|
+
// it before the first await so a concurrent stop can never miss the group.
|
|
46
|
+
if (child.pid !== undefined)
|
|
47
|
+
this.pid_ = child.pid;
|
|
48
|
+
child.on('error', (error) => this.notifyError(error));
|
|
49
|
+
child.once('exit', (code, signal) => {
|
|
50
|
+
if (this.stopping)
|
|
51
|
+
return;
|
|
52
|
+
this.notifyExit({ code, signal });
|
|
53
|
+
});
|
|
54
|
+
try {
|
|
55
|
+
await waitForSpawn(child);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
this.child_ = null;
|
|
59
|
+
this.pid_ = null;
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
if (child.pid === undefined) {
|
|
63
|
+
this.child_ = null;
|
|
64
|
+
this.pid_ = null;
|
|
65
|
+
throw new Error('supervised child spawned without a pid');
|
|
66
|
+
}
|
|
67
|
+
this.pid_ = child.pid;
|
|
68
|
+
if (this.stopping) {
|
|
69
|
+
await this.stopPromise;
|
|
70
|
+
throw new Error('SupervisedChild.start: stopped during start');
|
|
71
|
+
}
|
|
72
|
+
return child;
|
|
73
|
+
}
|
|
74
|
+
stop() {
|
|
75
|
+
this.stopPromise ??= this.doStop();
|
|
76
|
+
return this.stopPromise;
|
|
77
|
+
}
|
|
78
|
+
async doStop() {
|
|
79
|
+
this.stopping = true;
|
|
80
|
+
const pid = this.pid_;
|
|
81
|
+
if (pid !== null) {
|
|
82
|
+
if (isProcessAlive(pid)) {
|
|
83
|
+
killProcessGroup(pid, 'SIGTERM');
|
|
84
|
+
const deadline = Date.now() + (this.options.stopTimeoutMs ?? 1_000);
|
|
85
|
+
const pollIntervalMs = this.options.pollIntervalMs ?? 25;
|
|
86
|
+
while (Date.now() < deadline) {
|
|
87
|
+
if (!isProcessAlive(pid))
|
|
88
|
+
break;
|
|
89
|
+
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Always signal the group: a grandchild may outlive an exited leader.
|
|
93
|
+
killProcessGroup(pid, 'SIGKILL');
|
|
94
|
+
}
|
|
95
|
+
this.child_ = null;
|
|
96
|
+
}
|
|
97
|
+
notifyExit(exit) {
|
|
98
|
+
for (const handler of this.exitHandlers) {
|
|
99
|
+
try {
|
|
100
|
+
handler(exit);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Observers must not poison child-process event dispatch.
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
notifyError(error) {
|
|
108
|
+
for (const handler of this.errorHandlers) {
|
|
109
|
+
try {
|
|
110
|
+
handler(error);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Observers must not poison child-process event dispatch.
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function launchChild(launch) {
|
|
119
|
+
if (launch.kind === 'fork') {
|
|
120
|
+
return fork(launch.modulePath, [...(launch.args ?? [])], {
|
|
121
|
+
...launch.options,
|
|
122
|
+
detached: true,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return spawn(launch.command, [...(launch.args ?? [])], {
|
|
126
|
+
...launch.options,
|
|
127
|
+
detached: true,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
async function waitForSpawn(child) {
|
|
131
|
+
await new Promise((resolve, reject) => {
|
|
132
|
+
let settled = false;
|
|
133
|
+
const onError = (error) => {
|
|
134
|
+
if (settled)
|
|
135
|
+
return;
|
|
136
|
+
settled = true;
|
|
137
|
+
child.off('spawn', onSpawn);
|
|
138
|
+
reject(error);
|
|
139
|
+
};
|
|
140
|
+
const onSpawn = () => {
|
|
141
|
+
if (settled)
|
|
142
|
+
return;
|
|
143
|
+
settled = true;
|
|
144
|
+
child.off('error', onError);
|
|
145
|
+
resolve();
|
|
146
|
+
};
|
|
147
|
+
child.once('error', onError);
|
|
148
|
+
child.once('spawn', onSpawn);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=supervised-child.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervised-child.js","sourceRoot":"","sources":["../src/supervised-child.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@excitedjs/dreamux-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-beta.142",
|
|
4
4
|
"description": "Pure shared utilities for Dreamux providers and host: neutral config-validation primitives, OS/filesystem helpers, completion-body resolution, and inbound-turn render helpers. Depends on @excitedjs/dreamux-types only, never on @excitedjs/dreamux core (issue excitedjs/dreamux#209).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"LICENSE"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@excitedjs/dreamux-types": "0.
|
|
30
|
+
"@excitedjs/dreamux-types": "0.8.0-beta.142"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^22.10.0",
|