@aalis/plugin-process-local 0.5.1 → 0.6.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.
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +134 -20
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import type { ExecResult, ProcessService, SpawnHandle, SpawnOptions, TempDirHandle } from '@aalis/api-process';
|
|
2
2
|
import type { StorageService } from '@aalis/api-storage';
|
|
3
|
-
import type { Context
|
|
3
|
+
import type { Context } from '@aalis/core';
|
|
4
4
|
export declare const name = "@aalis/plugin-process-local";
|
|
5
5
|
export declare const provides: string[];
|
|
6
6
|
export declare class LocalProcessService implements ProcessService {
|
|
7
7
|
private readonly storage;
|
|
8
|
+
/**
|
|
9
|
+
* 存活进程组登记表(键 = 直接子进程 pid = pgid)。detached 后终端 Ctrl+C 不再直达子进程,改由 killAll
|
|
10
|
+
* 在停机时统一收尸;`cmd &` 留下的孙进程在直接子进程退出后仍占着这个组,所以按组而非按子进程登记。
|
|
11
|
+
*/
|
|
12
|
+
private readonly groups;
|
|
8
13
|
constructor(storage: StorageService);
|
|
14
|
+
/** 宿主停机时把仍有成员的进程组整组杀掉,维持「Aalis 退出,工具子进程一起退出」。 */
|
|
15
|
+
killAll(): void;
|
|
9
16
|
spawn(cmd: string, args: readonly string[], opts?: SpawnOptions): SpawnHandle;
|
|
10
17
|
execFile(cmd: string, args: readonly string[], opts?: SpawnOptions): Promise<ExecResult>;
|
|
11
18
|
makeTempDir(prefix: string): Promise<TempDirHandle>;
|
|
12
19
|
readExternalFile(path: string): Promise<Uint8Array>;
|
|
13
20
|
}
|
|
14
21
|
export declare function apply(ctx: Context): Promise<void>;
|
|
15
|
-
declare const plugin: PluginModule;
|
|
16
|
-
export default plugin;
|
|
17
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,IAAI,gCAAgC,CAAC;AAClD,eAAO,MAAM,QAAQ,UAAc,CAAC;AAuEpC,qBAAa,mBAAoB,YAAW,cAAc;IAO5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAE7B,OAAO,EAAE,cAAc;IAEpD,iDAAiD;IACjD,OAAO,IAAI,IAAI;IAKf,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,GAAE,YAAiB,GAAG,WAAW;IAkH3E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAa5F,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAInD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAI1D;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CASvD"}
|
package/dist/index.js
CHANGED
|
@@ -9,19 +9,111 @@ export const name = '@aalis/plugin-process-local';
|
|
|
9
9
|
export const provides = ['process'];
|
|
10
10
|
/** wait() 默认累计缓冲上限(stdout+stderr 合计):10MB,足够正常输出,又防失控输出 OOM。 */
|
|
11
11
|
const DEFAULT_MAX_BUFFER = 10 * 1024 * 1024;
|
|
12
|
+
/**
|
|
13
|
+
* wait() 在子进程 'exit' 之后等 'close' 的宽限(毫秒)。
|
|
14
|
+
* 孙进程继承同一对 pipe,只要它还活着 'close' 就永远不来(`sh -c 'sleep 20 & echo hi'`
|
|
15
|
+
* 实测要等满 20 秒,`npm run dev &` 则永不返回)。宽限到点即用已收集的输出返回。
|
|
16
|
+
*/
|
|
17
|
+
const CLOSE_GRACE_MS = 200;
|
|
18
|
+
const isWindows = process.platform === 'win32';
|
|
19
|
+
/**
|
|
20
|
+
* 对子进程所在的**整个进程组**发信号(POSIX)。子进程 spawn 时 detached,自身即进程组组长,
|
|
21
|
+
* 负 pid 才能打到它 fork 出的孙进程——只打子进程(`/bin/sh`)杀不掉 `sh -c 'cmd &'` 的后台任务。
|
|
22
|
+
* 组已不存在(ESRCH)/无权限时回落到只打子进程本身。
|
|
23
|
+
*/
|
|
24
|
+
function killGroup(child, signal) {
|
|
25
|
+
const pid = child.pid;
|
|
26
|
+
if (pid === undefined)
|
|
27
|
+
return false;
|
|
28
|
+
try {
|
|
29
|
+
process.kill(-pid, signal);
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
try {
|
|
34
|
+
return child.kill(signal);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 强制收尾(超时 / 宿主停机)。POSIX 打整个进程组 SIGKILL;
|
|
43
|
+
* Windows 无进程组与负 pid 语义,改用 `taskkill /T /F` 杀整棵进程树。
|
|
44
|
+
*/
|
|
45
|
+
function killTree(child) {
|
|
46
|
+
const pid = child.pid;
|
|
47
|
+
if (pid === undefined)
|
|
48
|
+
return;
|
|
49
|
+
if (isWindows) {
|
|
50
|
+
const fallback = () => {
|
|
51
|
+
try {
|
|
52
|
+
child.kill('SIGKILL');
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
/* ignore */
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
try {
|
|
59
|
+
const killer = nodeSpawn('taskkill', ['/PID', String(pid), '/T', '/F'], { stdio: 'ignore' });
|
|
60
|
+
killer.on('error', fallback); // spawn 失败(ENOENT 等)是异步 'error',无监听器会崩宿主
|
|
61
|
+
killer.unref();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
fallback();
|
|
65
|
+
}
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
killGroup(child, 'SIGKILL');
|
|
69
|
+
}
|
|
70
|
+
/** 进程组是否还有成员:负 pid 发 0 号信号只探测不打(组已空则 ESRCH)。 */
|
|
71
|
+
function groupAlive(pid) {
|
|
72
|
+
try {
|
|
73
|
+
process.kill(-pid, 0);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
12
80
|
export class LocalProcessService {
|
|
13
81
|
storage;
|
|
82
|
+
/**
|
|
83
|
+
* 存活进程组登记表(键 = 直接子进程 pid = pgid)。detached 后终端 Ctrl+C 不再直达子进程,改由 killAll
|
|
84
|
+
* 在停机时统一收尸;`cmd &` 留下的孙进程在直接子进程退出后仍占着这个组,所以按组而非按子进程登记。
|
|
85
|
+
*/
|
|
86
|
+
groups = new Map();
|
|
14
87
|
constructor(storage) {
|
|
15
88
|
this.storage = storage;
|
|
16
89
|
}
|
|
90
|
+
/** 宿主停机时把仍有成员的进程组整组杀掉,维持「Aalis 退出,工具子进程一起退出」。 */
|
|
91
|
+
killAll() {
|
|
92
|
+
for (const child of this.groups.values())
|
|
93
|
+
killTree(child);
|
|
94
|
+
this.groups.clear();
|
|
95
|
+
}
|
|
17
96
|
spawn(cmd, args, opts = {}) {
|
|
18
97
|
const stdioMode = opts.stdio ?? 'pipe';
|
|
19
98
|
const child = nodeSpawn(cmd, [...args], {
|
|
20
99
|
cwd: opts.cwd,
|
|
21
100
|
env: { ...process.env, ...(opts.env ?? {}) },
|
|
22
101
|
stdio: stdioMode === 'pipe' ? ['pipe', 'pipe', 'pipe'] : stdioMode,
|
|
23
|
-
|
|
102
|
+
// POSIX 一律 detached:让子进程自成进程组组长,超时/停机才能对整组发信号(见 killGroup)。
|
|
103
|
+
// opts.detached 的 fire-and-forget 语义仍由调用方的 stdio:'ignore' + unref() 兑现。
|
|
104
|
+
detached: isWindows ? opts.detached === true : true,
|
|
24
105
|
});
|
|
106
|
+
// 调用方显式 detached 的(fire-and-forget,如拉起浏览器)不登记:它本就该独立于宿主生存
|
|
107
|
+
if (child.pid !== undefined && opts.detached !== true) {
|
|
108
|
+
const pid = child.pid;
|
|
109
|
+
this.groups.set(pid, child);
|
|
110
|
+
// 直接子进程退了不等于组空:孙进程还在就留到停机收尸。pgid 被占用期间该 pid 不会被复用,
|
|
111
|
+
// 负 pid 只会指向我们自己建的这个组。
|
|
112
|
+
child.on('exit', () => {
|
|
113
|
+
if (isWindows || !groupAlive(pid))
|
|
114
|
+
this.groups.delete(pid);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
25
117
|
if (opts.input != null && stdioMode === 'pipe') {
|
|
26
118
|
// stdin 写入的 EPIPE 等是异步 'error' 事件;无监听器会 uncaughtException 崩整个宿主进程。
|
|
27
119
|
child.stdin?.on('error', () => { });
|
|
@@ -34,21 +126,20 @@ export class LocalProcessService {
|
|
|
34
126
|
}
|
|
35
127
|
let timer;
|
|
36
128
|
if (opts.timeout && opts.timeout > 0) {
|
|
37
|
-
timer = setTimeout(() =>
|
|
38
|
-
try {
|
|
39
|
-
child.kill('SIGKILL');
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
/* ignore */
|
|
43
|
-
}
|
|
44
|
-
}, opts.timeout);
|
|
129
|
+
timer = setTimeout(() => killTree(child), opts.timeout);
|
|
45
130
|
}
|
|
131
|
+
// 契约不要求调用方 wait():子进程自己退了也要清掉定时器,免得到点对可能已被复用的组发 SIGKILL
|
|
132
|
+
child.on('exit', () => {
|
|
133
|
+
if (timer)
|
|
134
|
+
clearTimeout(timer);
|
|
135
|
+
});
|
|
46
136
|
const handle = {
|
|
47
137
|
pid: child.pid,
|
|
48
138
|
stdin: child.stdin,
|
|
49
139
|
stdout: child.stdout,
|
|
50
140
|
stderr: child.stderr,
|
|
51
|
-
|
|
141
|
+
// POSIX 打整个进程组(孙进程同死);Windows 无此语义,维持只打子进程本身。
|
|
142
|
+
kill: signal => (isWindows ? child.kill(signal) : killGroup(child, signal)),
|
|
52
143
|
unref: () => {
|
|
53
144
|
try {
|
|
54
145
|
child.unref();
|
|
@@ -66,9 +157,10 @@ export class LocalProcessService {
|
|
|
66
157
|
const chunksErr = [];
|
|
67
158
|
let total = 0;
|
|
68
159
|
let truncated = false;
|
|
160
|
+
let settled = false;
|
|
69
161
|
const collect = (arr, d) => {
|
|
70
|
-
if (truncated)
|
|
71
|
-
return;
|
|
162
|
+
if (truncated || settled)
|
|
163
|
+
return; // settled:宽限已过,管道保持打开但之后的输出丢弃
|
|
72
164
|
const b = Buffer.from(d);
|
|
73
165
|
const room = maxBuffer - total;
|
|
74
166
|
if (b.length >= room) {
|
|
@@ -83,14 +175,18 @@ export class LocalProcessService {
|
|
|
83
175
|
};
|
|
84
176
|
child.stdout?.on('data', d => collect(chunksOut, d));
|
|
85
177
|
child.stderr?.on('data', d => collect(chunksErr, d));
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
clearTimeout(timer);
|
|
89
|
-
reject(err);
|
|
90
|
-
});
|
|
91
|
-
child.on('close', (code, signal) => {
|
|
178
|
+
let graceTimer;
|
|
179
|
+
const clearTimers = () => {
|
|
92
180
|
if (timer)
|
|
93
181
|
clearTimeout(timer);
|
|
182
|
+
if (graceTimer)
|
|
183
|
+
clearTimeout(graceTimer);
|
|
184
|
+
};
|
|
185
|
+
const finish = (code, signal) => {
|
|
186
|
+
if (settled)
|
|
187
|
+
return;
|
|
188
|
+
settled = true;
|
|
189
|
+
clearTimers();
|
|
94
190
|
resolve({
|
|
95
191
|
code,
|
|
96
192
|
signal,
|
|
@@ -98,6 +194,23 @@ export class LocalProcessService {
|
|
|
98
194
|
stderr: Buffer.concat(chunksErr).toString('utf-8'),
|
|
99
195
|
...(truncated ? { truncated: true } : {}),
|
|
100
196
|
});
|
|
197
|
+
};
|
|
198
|
+
child.on('error', err => {
|
|
199
|
+
if (settled)
|
|
200
|
+
return;
|
|
201
|
+
settled = true;
|
|
202
|
+
clearTimers();
|
|
203
|
+
reject(err);
|
|
204
|
+
});
|
|
205
|
+
// 正常情况 'close'(pipe 全关)先于宽限到点,输出完整。
|
|
206
|
+
child.on('close', (code, signal) => finish(code, signal));
|
|
207
|
+
child.on('exit', (code, signal) => {
|
|
208
|
+
if (settled)
|
|
209
|
+
return;
|
|
210
|
+
// 子进程已死但 'close' 未到 = 孙进程扣着 pipe 不放。给一个短宽限收尾,到点仍不来就用已收集的输出返回。
|
|
211
|
+
// 不销毁读端:销毁会让 `npm run dev &` 这类后台进程在下次写日志时吃 EPIPE 死掉;
|
|
212
|
+
// 管道保持打开、之后的输出经 collect 丢弃,该进程组留待停机收尸。
|
|
213
|
+
graceTimer = setTimeout(() => finish(code, signal), CLOSE_GRACE_MS);
|
|
101
214
|
});
|
|
102
215
|
}),
|
|
103
216
|
};
|
|
@@ -126,8 +239,9 @@ export async function apply(ctx) {
|
|
|
126
239
|
const storage = createStorageGateway(ctx);
|
|
127
240
|
const service = new LocalProcessService(storage);
|
|
128
241
|
ctx.provide('process', service);
|
|
242
|
+
// detached 让子进程脱离宿主进程组,终端 Ctrl+C 不再直达它们——停机时在此补杀。
|
|
243
|
+
// 挂 app:stopping 而非插件 dispose:本插件被 bounce 时,别的插件正在跑的子进程(ffmpeg 等)不该陪葬。
|
|
244
|
+
ctx.on('app:stopping', () => service.killAll());
|
|
129
245
|
logger.info('process-local 就绪');
|
|
130
246
|
}
|
|
131
|
-
const plugin = { name, apply };
|
|
132
|
-
export default plugin;
|
|
133
247
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kDAAkD;AAClD,+DAA+D;AAE/D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-process-local",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^22.0.0",
|
|
32
32
|
"typescript": "^5.7.0",
|
|
33
|
-
"@aalis/core": "0.
|
|
33
|
+
"@aalis/core": "0.12.1"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"@aalis/core": ">=0.2.0 <1.0.0"
|