spawn-term 2.1.1 → 3.0.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/cjs/components/App.js +62 -46
- package/dist/cjs/components/App.js.map +1 -1
- package/dist/cjs/components/CompactProcessLine.js +3 -2
- package/dist/cjs/components/CompactProcessLine.js.map +1 -1
- package/dist/cjs/index-cjs.js +3 -3
- package/dist/cjs/index-cjs.js.map +1 -1
- package/dist/cjs/index-esm.js +4 -4
- package/dist/cjs/index-esm.js.map +1 -1
- package/dist/cjs/session.js +311 -0
- package/dist/cjs/session.js.map +1 -0
- package/dist/cjs/src/components/App.d.ts +6 -1
- package/dist/cjs/src/index-cjs.d.ts +3 -3
- package/dist/cjs/src/index-esm.d.ts +3 -3
- package/dist/cjs/src/session.d.ts +7 -0
- package/dist/cjs/src/state/StoreContext.d.ts +3 -0
- package/dist/cjs/src/state/processStore.d.ts +6 -4
- package/dist/cjs/src/types.d.ts +5 -6
- package/dist/cjs/state/StoreContext.js +28 -0
- package/dist/cjs/state/StoreContext.js.map +1 -0
- package/dist/cjs/state/processStore.js +15 -17
- package/dist/cjs/state/processStore.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/components/App.js +59 -45
- package/dist/esm/components/App.js.map +1 -1
- package/dist/esm/components/CompactProcessLine.js +3 -2
- package/dist/esm/components/CompactProcessLine.js.map +1 -1
- package/dist/esm/index-cjs.js +1 -1
- package/dist/esm/index-cjs.js.map +1 -1
- package/dist/esm/index-esm.js +2 -2
- package/dist/esm/index-esm.js.map +1 -1
- package/dist/esm/session.js +218 -0
- package/dist/esm/session.js.map +1 -0
- package/dist/esm/src/components/App.d.ts +6 -1
- package/dist/esm/src/index-cjs.d.ts +3 -3
- package/dist/esm/src/index-esm.d.ts +3 -3
- package/dist/esm/src/session.d.ts +7 -0
- package/dist/esm/src/state/StoreContext.d.ts +3 -0
- package/dist/esm/src/state/processStore.d.ts +6 -4
- package/dist/esm/src/types.d.ts +5 -6
- package/dist/esm/state/StoreContext.js +9 -0
- package/dist/esm/state/StoreContext.js.map +1 -0
- package/dist/esm/state/processStore.js +13 -13
- package/dist/esm/state/processStore.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/createApp.js +0 -58
- package/dist/cjs/createApp.js.map +0 -1
- package/dist/cjs/spawnTerminal.js +0 -75
- package/dist/cjs/spawnTerminal.js.map +0 -1
- package/dist/cjs/src/createApp.d.ts +0 -6
- package/dist/cjs/src/spawnTerminal.d.ts +0 -2
- package/dist/cjs/src/worker.d.ts +0 -2
- package/dist/cjs/worker.js +0 -236
- package/dist/cjs/worker.js.map +0 -1
- package/dist/esm/createApp.js +0 -42
- package/dist/esm/createApp.js.map +0 -1
- package/dist/esm/spawnTerminal.js +0 -19
- package/dist/esm/spawnTerminal.js.map +0 -1
- package/dist/esm/src/createApp.d.ts +0 -6
- package/dist/esm/src/spawnTerminal.d.ts +0 -2
- package/dist/esm/src/worker.d.ts +0 -2
- package/dist/esm/worker.js +0 -175
- package/dist/esm/worker.js.map +0 -1
package/dist/cjs/worker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["import spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport crypto from 'crypto';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.ts';\nimport addLines from './lib/addLines.ts';\nimport concatWritable from './lib/concatWritable.ts';\nimport formatArguments from './lib/formatArguments.ts';\n\nimport type { SpawnError, SpawnOptions, TerminalCallback, TerminalOptions } from './types.ts';\nimport { LineType } from './types.ts';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n const store = terminal.retain();\n const id = crypto.randomUUID();\n store.addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((lines) => {\n store.appendLines(\n id,\n lines.map((text) => ({ type: LineType.stdout, text }))\n );\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = addLines((lines) => {\n store.appendLines(\n id,\n lines.map((text) => ({ type: LineType.stderr, text }))\n );\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, csOptions));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n store.updateProcess(id, { state: err ? 'error' : 'success' });\n\n terminal.release(() => {\n err ? callback(err) : callback(null, res);\n });\n });\n } else {\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = concatWritable((output) => {\n outputs.stdout.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = concatWritable((output) => {\n outputs.stderr.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, csOptions));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n err ? callback(err) : callback(null, res);\n });\n }\n}\n"],"names":["spawnTerminal","terminal","createApp","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","store","retain","id","crypto","randomUUID","addProcess","title","concat","formatArguments","join","state","lines","cp","crossSpawn","outputs","stdout","stderr","queue","Queue","addLines","appendLines","map","text","type","LineType","defer","oo","bind","pipe","spawn","worker","await","err","res","output","updateProcess","release","concatWritable","toString"],"mappings":"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"}
|
package/dist/esm/createApp.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render } from 'ink';
|
|
3
|
-
import App from './components/App.js';
|
|
4
|
-
import { DEFAULT_MAX_FPS } from './constants.js';
|
|
5
|
-
import { processStore } from './state/processStore.js';
|
|
6
|
-
export default function createApp() {
|
|
7
|
-
let refCount = 0;
|
|
8
|
-
let inkApp = null;
|
|
9
|
-
return {
|
|
10
|
-
retain () {
|
|
11
|
-
if (++refCount > 1) return processStore;
|
|
12
|
-
// Render once - React handles all subsequent updates via useSyncExternalStore
|
|
13
|
-
inkApp = render(/*#__PURE__*/ _jsx(App, {}), {
|
|
14
|
-
incrementalRendering: false,
|
|
15
|
-
maxFps: DEFAULT_MAX_FPS
|
|
16
|
-
});
|
|
17
|
-
return processStore;
|
|
18
|
-
},
|
|
19
|
-
release (callback) {
|
|
20
|
-
if (--refCount > 0) {
|
|
21
|
-
callback();
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
if (!inkApp) throw new Error('Expecting inkApp');
|
|
25
|
-
// Signal exit to React component
|
|
26
|
-
processStore.signalExit(()=>{
|
|
27
|
-
processStore.reset();
|
|
28
|
-
process.stdout.write('\x1b[?25h'); // show cursor
|
|
29
|
-
callback();
|
|
30
|
-
});
|
|
31
|
-
// Wait for Ink to finish, then call the callback
|
|
32
|
-
inkApp.waitUntilExit().then(()=>{
|
|
33
|
-
const cb = processStore.getExitCallback();
|
|
34
|
-
cb === null || cb === void 0 ? void 0 : cb();
|
|
35
|
-
}).catch(()=>{
|
|
36
|
-
const cb = processStore.getExitCallback();
|
|
37
|
-
cb === null || cb === void 0 ? void 0 : cb();
|
|
38
|
-
});
|
|
39
|
-
inkApp = null;
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import { render } from 'ink';\nimport App from './components/App.ts';\nimport { DEFAULT_MAX_FPS } from './constants.ts';\nimport { type ProcessStore, processStore } from './state/processStore.ts';\n\nexport type ReleaseCallback = () => void;\n\nexport default function createApp() {\n let refCount = 0;\n let inkApp: ReturnType<typeof render> | null = null;\n\n return {\n retain(): ProcessStore {\n if (++refCount > 1) return processStore;\n\n // Render once - React handles all subsequent updates via useSyncExternalStore\n inkApp = render(<App />, {\n incrementalRendering: false,\n maxFps: DEFAULT_MAX_FPS,\n });\n return processStore;\n },\n\n release(callback: ReleaseCallback): void {\n if (--refCount > 0) {\n callback();\n return;\n }\n if (!inkApp) throw new Error('Expecting inkApp');\n\n // Signal exit to React component\n processStore.signalExit(() => {\n processStore.reset();\n process.stdout.write('\\x1b[?25h'); // show cursor\n callback();\n });\n\n // Wait for Ink to finish, then call the callback\n inkApp\n .waitUntilExit()\n .then(() => {\n const cb = processStore.getExitCallback();\n cb?.();\n })\n .catch(() => {\n const cb = processStore.getExitCallback();\n cb?.();\n });\n\n inkApp = null;\n },\n };\n}\n"],"names":["render","App","DEFAULT_MAX_FPS","processStore","createApp","refCount","inkApp","retain","incrementalRendering","maxFps","release","callback","Error","signalExit","reset","process","stdout","write","waitUntilExit","then","cb","getExitCallback","catch"],"mappings":";AAAA,SAASA,MAAM,QAAQ,MAAM;AAC7B,OAAOC,SAAS,sBAAsB;AACtC,SAASC,eAAe,QAAQ,iBAAiB;AACjD,SAA4BC,YAAY,QAAQ,0BAA0B;AAI1E,eAAe,SAASC;IACtB,IAAIC,WAAW;IACf,IAAIC,SAA2C;IAE/C,OAAO;QACLC;YACE,IAAI,EAAEF,WAAW,GAAG,OAAOF;YAE3B,8EAA8E;YAC9EG,SAASN,qBAAO,KAACC,UAAQ;gBACvBO,sBAAsB;gBACtBC,QAAQP;YACV;YACA,OAAOC;QACT;QAEAO,SAAQC,QAAyB;YAC/B,IAAI,EAAEN,WAAW,GAAG;gBAClBM;gBACA;YACF;YACA,IAAI,CAACL,QAAQ,MAAM,IAAIM,MAAM;YAE7B,iCAAiC;YACjCT,aAAaU,UAAU,CAAC;gBACtBV,aAAaW,KAAK;gBAClBC,QAAQC,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;gBACjDN;YACF;YAEA,iDAAiD;YACjDL,OACGY,aAAa,GACbC,IAAI,CAAC;gBACJ,MAAMC,KAAKjB,aAAakB,eAAe;gBACvCD,eAAAA,yBAAAA;YACF,GACCE,KAAK,CAAC;gBACL,MAAMF,KAAKjB,aAAakB,eAAe;gBACvCD,eAAAA,yBAAAA;YACF;YAEFd,SAAS;QACX;IACF;AACF"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
function worker(command, args, spawnOptions, options, callback) {
|
|
2
|
-
import('./worker.js').then((fn)=>{
|
|
3
|
-
fn.default(command, args, spawnOptions, options, callback);
|
|
4
|
-
}).catch(callback);
|
|
5
|
-
}
|
|
6
|
-
export default function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
7
|
-
if (spawnOptions.stdio === 'inherit' && spawnOptions.encoding) {
|
|
8
|
-
throw new Error("Options 'stdio: inherit' and 'encoding' are mutually exclusive. Use 'stdio: inherit' to display output, or 'encoding' to collect output.");
|
|
9
|
-
}
|
|
10
|
-
if (typeof options === 'function') {
|
|
11
|
-
callback = options;
|
|
12
|
-
options = {};
|
|
13
|
-
}
|
|
14
|
-
options = options || {};
|
|
15
|
-
if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);
|
|
16
|
-
return new Promise((resolve, reject)=>worker(command, args, spawnOptions, options, (err, result)=>{
|
|
17
|
-
err ? reject(err) : resolve(result);
|
|
18
|
-
}));
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/spawnTerminal.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.ts';\n\nfunction worker(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined {\n import('./worker.js')\n .then((fn) => {\n fn.default(command, args, spawnOptions, options, callback);\n })\n .catch(callback);\n}\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\n if (spawnOptions.stdio === 'inherit' && spawnOptions.encoding) {\n throw new Error(\"Options 'stdio: inherit' and 'encoding' are mutually exclusive. Use 'stdio: inherit' to display output, or 'encoding' to collect output.\");\n }\n\n if (typeof options === 'function') {\n callback = options as TerminalCallback;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback as TerminalCallback);\n return new Promise((resolve, reject) =>\n worker(command, args, spawnOptions, options, (err, result) => {\n err ? reject(err) : resolve(result);\n })\n );\n}\n"],"names":["worker","command","args","spawnOptions","options","callback","then","fn","default","catch","spawnTerminal","stdio","encoding","Error","Promise","resolve","reject","err","result"],"mappings":"AAEA,SAASA,OAAOC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAwB,EAAEC,QAA0B;IAC/H,MAAM,CAAC,eACJC,IAAI,CAAC,CAACC;QACLA,GAAGC,OAAO,CAACP,SAASC,MAAMC,cAAcC,SAASC;IACnD,GACCI,KAAK,CAACJ;AACX;AAEA,eAAe,SAASK,cAAcT,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC1K,IAAIF,aAAaQ,KAAK,KAAK,aAAaR,aAAaS,QAAQ,EAAE;QAC7D,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAI,OAAOT,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,OAAOC,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIS,QAAQ,CAACC,SAASC,SAC3BhB,OAAOC,SAASC,MAAMC,cAAcC,SAAS,CAACa,KAAKC;YACjDD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;AAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
-
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
|
package/dist/esm/src/worker.d.ts
DELETED
package/dist/esm/worker.js
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
function _define_property(obj, key, value) {
|
|
2
|
-
if (key in obj) {
|
|
3
|
-
Object.defineProperty(obj, key, {
|
|
4
|
-
value: value,
|
|
5
|
-
enumerable: true,
|
|
6
|
-
configurable: true,
|
|
7
|
-
writable: true
|
|
8
|
-
});
|
|
9
|
-
} else {
|
|
10
|
-
obj[key] = value;
|
|
11
|
-
}
|
|
12
|
-
return obj;
|
|
13
|
-
}
|
|
14
|
-
function _object_spread(target) {
|
|
15
|
-
for(var i = 1; i < arguments.length; i++){
|
|
16
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
17
|
-
var ownKeys = Object.keys(source);
|
|
18
|
-
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
19
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
20
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
ownKeys.forEach(function(key) {
|
|
24
|
-
_define_property(target, key, source[key]);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
return target;
|
|
28
|
-
}
|
|
29
|
-
function _object_without_properties(source, excluded) {
|
|
30
|
-
if (source == null) return {};
|
|
31
|
-
var target = _object_without_properties_loose(source, excluded);
|
|
32
|
-
var key, i;
|
|
33
|
-
if (Object.getOwnPropertySymbols) {
|
|
34
|
-
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
35
|
-
for(i = 0; i < sourceSymbolKeys.length; i++){
|
|
36
|
-
key = sourceSymbolKeys[i];
|
|
37
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
38
|
-
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
39
|
-
target[key] = source[key];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return target;
|
|
43
|
-
}
|
|
44
|
-
function _object_without_properties_loose(source, excluded) {
|
|
45
|
-
if (source == null) return {};
|
|
46
|
-
var target = {};
|
|
47
|
-
var sourceKeys = Object.keys(source);
|
|
48
|
-
var key, i;
|
|
49
|
-
for(i = 0; i < sourceKeys.length; i++){
|
|
50
|
-
key = sourceKeys[i];
|
|
51
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
52
|
-
target[key] = source[key];
|
|
53
|
-
}
|
|
54
|
-
return target;
|
|
55
|
-
}
|
|
56
|
-
import spawn, { crossSpawn } from 'cross-spawn-cb';
|
|
57
|
-
import crypto from 'crypto';
|
|
58
|
-
import oo from 'on-one';
|
|
59
|
-
import Queue from 'queue-cb';
|
|
60
|
-
import createApp from './createApp.js';
|
|
61
|
-
import addLines from './lib/addLines.js';
|
|
62
|
-
import concatWritable from './lib/concatWritable.js';
|
|
63
|
-
import formatArguments from './lib/formatArguments.js';
|
|
64
|
-
import { LineType } from './types.js';
|
|
65
|
-
const terminal = createApp();
|
|
66
|
-
export default function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
67
|
-
const { encoding, stdio } = spawnOptions, csOptions = _object_without_properties(spawnOptions, [
|
|
68
|
-
"encoding",
|
|
69
|
-
"stdio"
|
|
70
|
-
]);
|
|
71
|
-
if (stdio === 'inherit') {
|
|
72
|
-
const store = terminal.retain();
|
|
73
|
-
const id = crypto.randomUUID();
|
|
74
|
-
store.addProcess(_object_spread({
|
|
75
|
-
id,
|
|
76
|
-
title: [
|
|
77
|
-
command
|
|
78
|
-
].concat(formatArguments(args)).join(' '),
|
|
79
|
-
state: 'running',
|
|
80
|
-
lines: []
|
|
81
|
-
}, options));
|
|
82
|
-
const cp = crossSpawn(command, args, csOptions);
|
|
83
|
-
const outputs = {
|
|
84
|
-
stdout: null,
|
|
85
|
-
stderr: null
|
|
86
|
-
};
|
|
87
|
-
const queue = new Queue();
|
|
88
|
-
if (cp.stdout) {
|
|
89
|
-
outputs.stdout = addLines((lines)=>{
|
|
90
|
-
store.appendLines(id, lines.map((text)=>({
|
|
91
|
-
type: LineType.stdout,
|
|
92
|
-
text
|
|
93
|
-
})));
|
|
94
|
-
});
|
|
95
|
-
queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), [
|
|
96
|
-
'error',
|
|
97
|
-
'end',
|
|
98
|
-
'close',
|
|
99
|
-
'finish'
|
|
100
|
-
]));
|
|
101
|
-
}
|
|
102
|
-
if (cp.stderr) {
|
|
103
|
-
outputs.stderr = addLines((lines)=>{
|
|
104
|
-
store.appendLines(id, lines.map((text)=>({
|
|
105
|
-
type: LineType.stderr,
|
|
106
|
-
text
|
|
107
|
-
})));
|
|
108
|
-
});
|
|
109
|
-
queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), [
|
|
110
|
-
'error',
|
|
111
|
-
'end',
|
|
112
|
-
'close',
|
|
113
|
-
'finish'
|
|
114
|
-
]));
|
|
115
|
-
}
|
|
116
|
-
queue.defer(spawn.worker.bind(null, cp, csOptions));
|
|
117
|
-
queue.await((err)=>{
|
|
118
|
-
const res = err ? err : {};
|
|
119
|
-
res.stdout = outputs.stdout ? outputs.stdout.output : null;
|
|
120
|
-
res.stderr = outputs.stderr ? outputs.stderr.output : null;
|
|
121
|
-
res.output = [
|
|
122
|
-
res.stdout,
|
|
123
|
-
res.stderr,
|
|
124
|
-
null
|
|
125
|
-
];
|
|
126
|
-
store.updateProcess(id, {
|
|
127
|
-
state: err ? 'error' : 'success'
|
|
128
|
-
});
|
|
129
|
-
terminal.release(()=>{
|
|
130
|
-
err ? callback(err) : callback(null, res);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
} else {
|
|
134
|
-
const cp = crossSpawn(command, args, csOptions);
|
|
135
|
-
const outputs = {
|
|
136
|
-
stdout: null,
|
|
137
|
-
stderr: null
|
|
138
|
-
};
|
|
139
|
-
const queue = new Queue();
|
|
140
|
-
if (cp.stdout) {
|
|
141
|
-
outputs.stdout = concatWritable((output)=>{
|
|
142
|
-
outputs.stdout.output = output.toString(encoding || 'utf8');
|
|
143
|
-
});
|
|
144
|
-
queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), [
|
|
145
|
-
'error',
|
|
146
|
-
'end',
|
|
147
|
-
'close',
|
|
148
|
-
'finish'
|
|
149
|
-
]));
|
|
150
|
-
}
|
|
151
|
-
if (cp.stderr) {
|
|
152
|
-
outputs.stderr = concatWritable((output)=>{
|
|
153
|
-
outputs.stderr.output = output.toString(encoding || 'utf8');
|
|
154
|
-
});
|
|
155
|
-
queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), [
|
|
156
|
-
'error',
|
|
157
|
-
'end',
|
|
158
|
-
'close',
|
|
159
|
-
'finish'
|
|
160
|
-
]));
|
|
161
|
-
}
|
|
162
|
-
queue.defer(spawn.worker.bind(null, cp, csOptions));
|
|
163
|
-
queue.await((err)=>{
|
|
164
|
-
const res = err ? err : {};
|
|
165
|
-
res.stdout = outputs.stdout ? outputs.stdout.output : null;
|
|
166
|
-
res.stderr = outputs.stderr ? outputs.stderr.output : null;
|
|
167
|
-
res.output = [
|
|
168
|
-
res.stdout,
|
|
169
|
-
res.stderr,
|
|
170
|
-
null
|
|
171
|
-
];
|
|
172
|
-
err ? callback(err) : callback(null, res);
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
}
|
package/dist/esm/worker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["import spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport crypto from 'crypto';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.ts';\nimport addLines from './lib/addLines.ts';\nimport concatWritable from './lib/concatWritable.ts';\nimport formatArguments from './lib/formatArguments.ts';\n\nimport type { SpawnError, SpawnOptions, TerminalCallback, TerminalOptions } from './types.ts';\nimport { LineType } from './types.ts';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n const store = terminal.retain();\n const id = crypto.randomUUID();\n store.addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((lines) => {\n store.appendLines(\n id,\n lines.map((text) => ({ type: LineType.stdout, text }))\n );\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = addLines((lines) => {\n store.appendLines(\n id,\n lines.map((text) => ({ type: LineType.stderr, text }))\n );\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, csOptions));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n store.updateProcess(id, { state: err ? 'error' : 'success' });\n\n terminal.release(() => {\n err ? callback(err) : callback(null, res);\n });\n });\n } else {\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = concatWritable((output) => {\n outputs.stdout.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = concatWritable((output) => {\n outputs.stderr.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, csOptions));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n err ? callback(err) : callback(null, res);\n });\n }\n}\n"],"names":["spawn","crossSpawn","crypto","oo","Queue","createApp","addLines","concatWritable","formatArguments","LineType","terminal","spawnTerminal","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","store","retain","id","randomUUID","addProcess","title","concat","join","state","lines","cp","outputs","stdout","stderr","queue","appendLines","map","text","type","defer","bind","pipe","worker","await","err","res","output","updateProcess","release","toString"],"mappings":"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"}
|