@vscode/component-explorer-cli 0.2.1-58 → 0.2.1-59
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/_virtual/_build-info.js +1 -1
- package/dist/processTree.d.ts +6 -1
- package/dist/processTree.d.ts.map +1 -1
- package/dist/processTree.js +48 -5
- package/dist/processTree.js.map +1 -1
- package/dist/server/httpServer.js +2 -6
- package/dist/server/httpServer.js.map +1 -1
- package/package.json +1 -1
package/dist/processTree.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { type ChildProcess } from 'node:child_process';
|
|
2
2
|
export interface ProcessTree {
|
|
3
3
|
readonly process: ChildProcess;
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Terminates the process and its entire tree. Attempts a graceful shutdown
|
|
6
|
+
* first and escalates to a forceful kill if the tree is still alive after a
|
|
7
|
+
* grace period. Resolves once the tree has exited or has been force-killed.
|
|
8
|
+
*/
|
|
9
|
+
kill(): Promise<void>;
|
|
5
10
|
}
|
|
6
11
|
export declare function spawnShellWithTree(cmd: string, options?: {
|
|
7
12
|
cwd?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processTree.d.ts","sourceRoot":"","sources":["../src/processTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"processTree.d.ts","sourceRoot":"","sources":["../src/processTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAK9D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAMvF"}
|
package/dist/processTree.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
|
|
3
|
+
/** Time to wait for a graceful (SIGTERM) shutdown before forcefully killing the tree. */
|
|
4
|
+
const GRACE_MS = 5_000;
|
|
3
5
|
function spawnShellWithTree(cmd, options) {
|
|
4
6
|
if (process.platform === 'win32') {
|
|
5
7
|
return _spawnWin32(cmd, options);
|
|
@@ -12,30 +14,71 @@ function _spawnWin32(cmd, options) {
|
|
|
12
14
|
const proc = spawn(cmd, { shell: true, stdio: 'pipe', cwd: options?.cwd, windowsHide: true });
|
|
13
15
|
return {
|
|
14
16
|
process: proc,
|
|
15
|
-
kill() {
|
|
17
|
+
async kill() {
|
|
16
18
|
if (proc.killed || proc.pid === undefined) {
|
|
17
19
|
return;
|
|
18
20
|
}
|
|
19
|
-
|
|
21
|
+
const pid = proc.pid;
|
|
22
|
+
const exited = _waitForExit(proc);
|
|
23
|
+
// Request a graceful tree shutdown first.
|
|
24
|
+
_runTaskkill(['/T', '/PID', String(pid)]);
|
|
25
|
+
if (await _raceExit(exited)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Still alive after the grace period: force-kill the whole tree.
|
|
29
|
+
_runTaskkill(['/T', '/F', '/PID', String(pid)]);
|
|
20
30
|
},
|
|
21
31
|
};
|
|
22
32
|
}
|
|
23
33
|
function _spawnUnix(cmd, options) {
|
|
24
|
-
// detached creates a new process group so we can
|
|
34
|
+
// detached creates a new process group so we can signal the entire tree.
|
|
25
35
|
const proc = spawn(cmd, { shell: true, stdio: 'pipe', cwd: options?.cwd, windowsHide: true, detached: true });
|
|
26
36
|
return {
|
|
27
37
|
process: proc,
|
|
28
|
-
kill() {
|
|
38
|
+
async kill() {
|
|
29
39
|
if (proc.killed || proc.pid === undefined) {
|
|
30
40
|
return;
|
|
31
41
|
}
|
|
42
|
+
const pid = proc.pid;
|
|
43
|
+
const exited = _waitForExit(proc);
|
|
44
|
+
// SIGTERM the whole process group; the server may handle it gracefully.
|
|
45
|
+
try {
|
|
46
|
+
process.kill(-pid, 'SIGTERM');
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return; /* already exited */
|
|
50
|
+
}
|
|
51
|
+
if (await _raceExit(exited)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// Still alive after the grace period: SIGKILL cannot be caught or ignored.
|
|
32
55
|
try {
|
|
33
|
-
process.kill(-
|
|
56
|
+
process.kill(-pid, 'SIGKILL');
|
|
34
57
|
}
|
|
35
58
|
catch { /* already exited */ }
|
|
36
59
|
},
|
|
37
60
|
};
|
|
38
61
|
}
|
|
62
|
+
function _runTaskkill(args) {
|
|
63
|
+
spawn('taskkill', args, { windowsHide: true, stdio: 'ignore' });
|
|
64
|
+
}
|
|
65
|
+
function _waitForExit(proc) {
|
|
66
|
+
return new Promise((resolve) => {
|
|
67
|
+
if (proc.exitCode !== null || proc.signalCode !== null) {
|
|
68
|
+
resolve();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
proc.once('exit', () => resolve());
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** Resolves to `true` if the process exited within the grace period, `false` on timeout. */
|
|
75
|
+
function _raceExit(exited) {
|
|
76
|
+
let timer;
|
|
77
|
+
const timeout = new Promise((resolve) => {
|
|
78
|
+
timer = setTimeout(() => resolve(false), GRACE_MS);
|
|
79
|
+
});
|
|
80
|
+
return Promise.race([exited.then(() => true), timeout]).finally(() => clearTimeout(timer));
|
|
81
|
+
}
|
|
39
82
|
|
|
40
83
|
export { spawnShellWithTree };
|
|
41
84
|
//# sourceMappingURL=processTree.js.map
|
package/dist/processTree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processTree.js","sources":["../src/processTree.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"processTree.js","sources":["../src/processTree.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;AACA,MAAM,QAAQ,GAAG,KAAK;AAYhB,SAAU,kBAAkB,CAAC,GAAW,EAAE,OAA0B,EAAA;AACzE,IAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;AACjC,QAAA,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC;IACjC;SAAO;AACN,QAAA,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;IAChC;AACD;AAEA,SAAS,WAAW,CAAC,GAAW,EAAE,OAA0B,EAAA;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7F,OAAO;AACN,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,MAAM,IAAI,GAAA;YACT,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAAE;YAAQ;AACrD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;;AAEjC,YAAA,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,YAAA,IAAI,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE;gBAAE;YAAQ;;AAEvC,YAAA,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;KACD;AACF;AAEA,SAAS,UAAU,CAAC,GAAW,EAAE,OAA0B,EAAA;;AAE1D,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7G,OAAO;AACN,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,MAAM,IAAI,GAAA;YACT,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAAE;YAAQ;AACrD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;;AAEjC,YAAA,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC;YAAE;AAAE,YAAA,MAAM;AAAE,gBAAA,OAAO;YAAsB;AAC5E,YAAA,IAAI,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE;gBAAE;YAAQ;;AAEvC,YAAA,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC;YAAE;AAAE,YAAA,MAAM,uBAAuB;QACrE,CAAC;KACD;AACF;AAEA,SAAS,YAAY,CAAC,IAAc,EAAA;AACnC,IAAA,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAChE;AAEA,SAAS,YAAY,CAAC,IAAkB,EAAA;AACvC,IAAA,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AAAE,YAAA,OAAO,EAAE;YAAE;QAAQ;QAC7E,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,CAAC;AACnC,IAAA,CAAC,CAAC;AACH;AAEA;AACA,SAAS,SAAS,CAAC,MAAqB,EAAA;AACvC,IAAA,IAAI,KAAoC;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,KAAI;AAChD,QAAA,KAAK,GAAG,UAAU,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;AACnD,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3F;;;;"}
|
|
@@ -41,12 +41,8 @@ class HttpComponentExplorerServer {
|
|
|
41
41
|
}
|
|
42
42
|
proc.stdout?.destroy();
|
|
43
43
|
proc.stderr?.destroy();
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
});
|
|
47
|
-
tree.kill();
|
|
48
|
-
const timeout = new Promise((resolve) => setTimeout(resolve, 5_000));
|
|
49
|
-
await Promise.race([exitPromise, timeout]);
|
|
44
|
+
// Gracefully terminate the tree, escalating to a forceful kill if needed.
|
|
45
|
+
await tree.kill();
|
|
50
46
|
}
|
|
51
47
|
}
|
|
52
48
|
function resolveUrlTemplate(template, vars) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpServer.js","sources":["../../src/server/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAiBM,SAAU,gBAAgB,CAAC,WAAmB,EAAE,OAA2B,EAAA;IAChF,OAAO,2BAA2B,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;AAChE;AAEA,MAAM,2BAA2B,CAAA;AAyBtB,IAAA,GAAA;AACQ,IAAA,KAAA;AAzBlB,IAAA,aAAa,MAAM,CAAC,WAAmB,EAAE,OAA2B,EAAA;AACnE,QAAA,IAAI,IAA6B;QACjC,IAAI,IAAI,GAA2B,EAAE;AACrC,QAAA,IAAI,OAAO,EAAE,GAAG,EAAE;AACjB,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU;YACxC,GAAG,CAAC,KAAK,CAAC,CAAA,sBAAA,EAAyB,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;AACjD,YAAA,GAAG,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA,CAAE,CAAC;AAC7D,YAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;YAClE,IAAI,GAAG,IAAI;YACX,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA,2BAAA,EAA8B,CAAC,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;YACnF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;AAEzF,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE;AACjD,gBAAA,IAAI,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YACnE;iBAAO;gBACN,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF;QACD;QACA,MAAM,GAAG,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC;AACjD,QAAA,OAAO,IAAI,2BAA2B,CAAC,GAAG,EAAE,IAAI,CAAC;IAClD;IAEA,WAAA,CACU,GAAW,EACH,KAA8B,EAAA;QADtC,IAAA,CAAA,GAAG,GAAH,GAAG;QACK,IAAA,CAAA,KAAK,GAAL,KAAK;IACnB;AAEJ,IAAA,MAAM,OAAO,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,EAAE,OAAO;AAC1B,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAAE;QAAQ;AAEvE,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"httpServer.js","sources":["../../src/server/httpServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|