spawn-term 0.2.5 → 0.2.6
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 +12 -6
- package/dist/cjs/components/App.js.map +1 -1
- package/dist/cjs/contexts/Store.d.cts +2 -1
- package/dist/cjs/contexts/Store.d.ts +2 -1
- package/dist/cjs/contexts/Store.js.map +1 -1
- package/dist/cjs/createApp.d.cts +3 -2
- package/dist/cjs/createApp.d.ts +3 -2
- package/dist/cjs/createApp.js +26 -8
- package/dist/cjs/createApp.js.map +1 -1
- package/dist/cjs/index-cjs.d.cts +2 -2
- package/dist/cjs/index-cjs.d.ts +2 -2
- package/dist/cjs/index-cjs.js.map +1 -1
- package/dist/cjs/index-esm.d.cts +2 -2
- package/dist/cjs/index-esm.d.ts +2 -2
- package/dist/cjs/index-esm.js +1 -1
- package/dist/cjs/index-esm.js.map +1 -1
- package/dist/cjs/ink.js.map +1 -1
- package/dist/cjs/lib/addLines.d.cts +3 -1
- package/dist/cjs/lib/addLines.d.ts +3 -1
- package/dist/cjs/lib/addLines.js.map +1 -1
- package/dist/cjs/lib/concatWritable.d.cts +3 -1
- package/dist/cjs/lib/concatWritable.d.ts +3 -1
- package/dist/cjs/lib/concatWritable.js.map +1 -1
- package/dist/cjs/lib/formatArguments.d.cts +1 -1
- package/dist/cjs/lib/formatArguments.d.ts +1 -1
- package/dist/cjs/lib/formatArguments.js.map +1 -1
- package/dist/cjs/types.d.cts +10 -2
- package/dist/cjs/types.d.ts +10 -2
- package/dist/cjs/types.js +0 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/worker.d.cts +2 -2
- package/dist/cjs/worker.d.ts +2 -2
- package/dist/cjs/worker.js +2 -3
- package/dist/cjs/worker.js.map +1 -1
- package/dist/esm/components/App.js +12 -6
- package/dist/esm/components/App.js.map +1 -1
- package/dist/esm/contexts/Store.d.ts +2 -1
- package/dist/esm/contexts/Store.js.map +1 -1
- package/dist/esm/createApp.d.ts +3 -2
- package/dist/esm/createApp.js +32 -10
- package/dist/esm/createApp.js.map +1 -1
- package/dist/esm/index-cjs.d.ts +2 -2
- package/dist/esm/index-cjs.js.map +1 -1
- package/dist/esm/index-esm.d.ts +2 -2
- package/dist/esm/index-esm.js +3 -1
- package/dist/esm/index-esm.js.map +1 -1
- package/dist/esm/ink.js.map +1 -1
- package/dist/esm/lib/addLines.d.ts +3 -1
- package/dist/esm/lib/addLines.js.map +1 -1
- package/dist/esm/lib/concatWritable.d.ts +3 -1
- package/dist/esm/lib/concatWritable.js.map +1 -1
- package/dist/esm/lib/formatArguments.d.ts +1 -1
- package/dist/esm/lib/formatArguments.js.map +1 -1
- package/dist/esm/types.d.ts +10 -2
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/worker.d.ts +2 -2
- package/dist/esm/worker.js +2 -3
- package/dist/esm/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -22,12 +22,18 @@ function _interop_require_default(obj) {
|
|
|
22
22
|
function App() {
|
|
23
23
|
var store = (0, _react.useContext)(_Store.default);
|
|
24
24
|
var appState = (0, _zustand.useStore)(store);
|
|
25
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsx)(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Profiler, {
|
|
26
|
+
id: "App",
|
|
27
|
+
onRender: function(_id, phase) {
|
|
28
|
+
if (phase === 'update') store === null || store === void 0 ? void 0 : store.onRender();
|
|
29
|
+
},
|
|
30
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_ink.Box, {
|
|
31
|
+
flexDirection: "column",
|
|
32
|
+
children: appState.processes.map(function(item) {
|
|
33
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_ChildProcess.default, {
|
|
34
|
+
item: item
|
|
35
|
+
}, item.id);
|
|
36
|
+
})
|
|
31
37
|
})
|
|
32
38
|
});
|
|
33
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.js';\nimport { Box } from '../ink.js';\nimport type { AppState, ChildProcess as ChildProcessT } from '../types.js';\nimport ChildProcess from './ChildProcess.js';\n\nexport default function App() {\n const store = useContext(StoreContext);\n const appState = useStore(store) as AppState;\n\n return (\n <Box flexDirection=\"column\">\n
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { Profiler, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.js';\nimport { Box } from '../ink.js';\nimport type { AppState, ChildProcess as ChildProcessT, Store } from '../types.js';\nimport ChildProcess from './ChildProcess.js';\n\nexport default function App() {\n const store = useContext<Store>(StoreContext);\n const appState = useStore(store) as AppState;\n\n return (\n <Profiler\n id=\"App\"\n onRender={(_id, phase) => {\n if (phase === 'update') store?.onRender();\n }}\n >\n <Box flexDirection=\"column\">\n {appState.processes.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} item={item} />\n ))}\n </Box>\n </Profiler>\n );\n}\n"],"names":["App","store","useContext","StoreContext","appState","useStore","Profiler","id","onRender","_id","phase","Box","flexDirection","processes","map","item","ChildProcess"],"mappings":";;;;+BAOA;;;eAAwBA;;;;qBAPa;uBACZ;4DACA;mBACL;mEAEK;;;;;;AAEV,SAASA;IACtB,IAAMC,QAAQC,IAAAA,iBAAU,EAAQC,cAAY;IAC5C,IAAMC,WAAWC,IAAAA,iBAAQ,EAACJ;IAE1B,qBACE,qBAACK,eAAQ;QACPC,IAAG;QACHC,UAAU,SAACC,KAAKC;YACd,IAAIA,UAAU,UAAUT,kBAAAA,4BAAAA,MAAOO,QAAQ;QACzC;kBAEA,cAAA,qBAACG,QAAG;YAACC,eAAc;sBAChBR,SAASS,SAAS,CAACC,GAAG,CAAC,SAACC;qCACvB,qBAACC,qBAAY;oBAAeD,MAAMA;mBAAfA,KAAKR,EAAE;;;;AAKpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/contexts/Store.tsx"],"sourcesContent":["import { createContext } from 'react';\nexport default createContext(undefined);\n"],"names":["createContext","undefined"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/contexts/Store.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport type { Store } from '../types.js';\n\nexport default createContext<Store>(undefined);\n"],"names":["createContext","undefined"],"mappings":";;;;+BAGA;;;eAAA;;;qBAH8B;IAG9B,yBAAeA,IAAAA,oBAAa,EAAQC"}
|
package/dist/cjs/createApp.d.cts
CHANGED
package/dist/cjs/createApp.d.ts
CHANGED
package/dist/cjs/createApp.js
CHANGED
|
@@ -56,7 +56,8 @@ function createApp() {
|
|
|
56
56
|
return {
|
|
57
57
|
processes: [],
|
|
58
58
|
addProcess: function(process1) {
|
|
59
|
-
|
|
59
|
+
store.nextRenders = store.renders + 1;
|
|
60
|
+
set(function(state) {
|
|
60
61
|
return {
|
|
61
62
|
processes: _to_consumable_array(state.processes).concat([
|
|
62
63
|
process1
|
|
@@ -65,7 +66,8 @@ function createApp() {
|
|
|
65
66
|
});
|
|
66
67
|
},
|
|
67
68
|
updateProcess: function(process1) {
|
|
68
|
-
|
|
69
|
+
store.nextRenders = store.renders + 1;
|
|
70
|
+
set(function(state) {
|
|
69
71
|
return {
|
|
70
72
|
processes: state.processes.map(function(x) {
|
|
71
73
|
return x.id === process1.id ? process1 : x;
|
|
@@ -75,6 +77,13 @@ function createApp() {
|
|
|
75
77
|
}
|
|
76
78
|
};
|
|
77
79
|
});
|
|
80
|
+
store.nextRenders = 0;
|
|
81
|
+
store.renders = 0;
|
|
82
|
+
store.waiting = [];
|
|
83
|
+
store.onRender = function() {
|
|
84
|
+
store.renders = store.nextRenders;
|
|
85
|
+
while(store === null || store === void 0 ? void 0 : store.waiting.length)store.waiting.pop()();
|
|
86
|
+
};
|
|
78
87
|
inkApp = (0, _ink.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_Store.default.Provider, {
|
|
79
88
|
value: store,
|
|
80
89
|
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_App.default, {})
|
|
@@ -84,13 +93,22 @@ function createApp() {
|
|
|
84
93
|
return fn(store);
|
|
85
94
|
});
|
|
86
95
|
},
|
|
87
|
-
release: function release() {
|
|
88
|
-
if (--refCount > 0)
|
|
96
|
+
release: function release(cb) {
|
|
97
|
+
if (--refCount > 0) {
|
|
98
|
+
if (store.renders === store.nextRenders) cb();
|
|
99
|
+
else store.waiting.push(cb);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
89
102
|
if (!store) throw new Error('Expecting store');
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
103
|
+
function done() {
|
|
104
|
+
inkApp.unmount();
|
|
105
|
+
inkApp = null;
|
|
106
|
+
store = null;
|
|
107
|
+
process.stdout.write('\x1b[?25h'); // show cursor
|
|
108
|
+
cb();
|
|
109
|
+
}
|
|
110
|
+
if (store.renders === store.nextRenders) done();
|
|
111
|
+
else store.waiting.push(done);
|
|
94
112
|
}
|
|
95
113
|
};
|
|
96
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import { createStore } from 'zustand';\nimport App from './components/App.js';\nimport StoreContext from './contexts/Store.js';\n\n// @ts-ignore\nimport { type Instance, initialize, render } from './ink.js';\nimport type { AppState } from './types.js';\n\nexport default function createApp() {\n let refCount = 0;\n let store = null;\n let inkApp: Instance | null = null;\n\n return {\n retain(fn) {\n initialize(() => {\n if (++refCount > 1) return fn(store);\n if (store) throw new Error('Not expecting store');\n store = createStore<AppState>()((set) => ({\n processes: [],\n addProcess: (process) => set((state) => ({ processes: [...state.processes, process] })),\n updateProcess: (process) => set((state) => ({ processes: state.processes.map((x) => (x.id === process.id ? process : x)) })),\n }));\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\n });\n },\n release() {\n if (--refCount > 0) return;\n if (!store) throw new Error('Expecting store');\n
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import { createStore } from 'zustand';\nimport App from './components/App.js';\nimport StoreContext from './contexts/Store.js';\n\n// @ts-ignore\nimport { type Instance, initialize, render } from './ink.js';\nimport type { AppState, ReleaseCallback, RetainCallback } from './types.js';\n\nexport default function createApp() {\n let refCount = 0;\n let store = null;\n let inkApp: Instance | null = null;\n\n return {\n retain(fn: RetainCallback): undefined {\n initialize(() => {\n if (++refCount > 1) return fn(store);\n if (store) throw new Error('Not expecting store');\n store = createStore<AppState>()((set) => ({\n processes: [],\n addProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: [...state.processes, process] }));\n },\n updateProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: state.processes.map((x) => (x.id === process.id ? process : x)) }));\n },\n }));\n store.nextRenders = 0;\n store.renders = 0;\n store.waiting = [];\n store.onRender = () => {\n store.renders = store.nextRenders;\n while (store?.waiting.length) store.waiting.pop()();\n };\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\n });\n },\n release(cb: ReleaseCallback): undefined {\n if (--refCount > 0) {\n if (store.renders === store.nextRenders) cb();\n else store.waiting.push(cb);\n return;\n }\n if (!store) throw new Error('Expecting store');\n\n function done() {\n inkApp.unmount();\n inkApp = null;\n store = null;\n process.stdout.write('\\x1b[?25h'); // show cursor\n cb();\n }\n if (store.renders === store.nextRenders) done();\n else store.waiting.push(done);\n },\n };\n}\n"],"names":["createApp","refCount","store","inkApp","retain","fn","initialize","Error","createStore","set","processes","addProcess","process","nextRenders","renders","state","updateProcess","map","x","id","waiting","onRender","length","pop","render","StoreContext","Provider","value","App","patchConsole","release","cb","push","done","unmount","stdout","write"],"mappings":";;;;+BAQA;;;eAAwBA;;;;uBARI;0DACZ;4DACS;mBAGyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGnC,SAASA;IACtB,IAAIC,WAAW;IACf,IAAIC,QAAQ;IACZ,IAAIC,SAA0B;IAE9B,OAAO;QACLC,QAAAA,SAAAA,OAAOC,EAAkB;YACvBC,IAAAA,eAAU,EAAC;gBACT,IAAI,EAAEL,WAAW,GAAG,OAAOI,GAAGH;gBAC9B,IAAIA,OAAO,MAAM,IAAIK,MAAM;gBAC3BL,QAAQM,IAAAA,oBAAW,IAAa,SAACC;2BAAS;wBACxCC,WAAW,EAAE;wBACbC,YAAY,SAACC;4BACXV,MAAMW,WAAW,GAAGX,MAAMY,OAAO,GAAG;4BACpCL,IAAI,SAACM;uCAAW;oCAAEL,WAAW,AAAC,qBAAGK,MAAML,SAAS,SAAnB;wCAAqBE;qCAAQ;gCAAC;;wBAC7D;wBACAI,eAAe,SAACJ;4BACdV,MAAMW,WAAW,GAAGX,MAAMY,OAAO,GAAG;4BACpCL,IAAI,SAACM;uCAAW;oCAAEL,WAAWK,MAAML,SAAS,CAACO,GAAG,CAAC,SAACC;+CAAOA,EAAEC,EAAE,KAAKP,SAAQO,EAAE,GAAGP,WAAUM;;gCAAI;;wBAC/F;oBACF;;gBACAhB,MAAMW,WAAW,GAAG;gBACpBX,MAAMY,OAAO,GAAG;gBAChBZ,MAAMkB,OAAO,GAAG,EAAE;gBAClBlB,MAAMmB,QAAQ,GAAG;oBACfnB,MAAMY,OAAO,GAAGZ,MAAMW,WAAW;oBACjC,MAAOX,kBAAAA,4BAAAA,MAAOkB,OAAO,CAACE,MAAM,CAAEpB,MAAMkB,OAAO,CAACG,GAAG;gBACjD;gBACApB,SAASqB,IAAAA,WAAM,gBACb,qBAACC,cAAY,CAACC,QAAQ;oBAACC,OAAOzB;8BAC5B,cAAA,qBAAC0B,YAAG;oBAEN;oBAAEC,cAAc;gBAAM;gBAExB,OAAOxB,GAAGH;YACZ;QACF;QACA4B,SAAAA,SAAAA,QAAQC,EAAmB;YACzB,IAAI,EAAE9B,WAAW,GAAG;gBAClB,IAAIC,MAAMY,OAAO,KAAKZ,MAAMW,WAAW,EAAEkB;qBACpC7B,MAAMkB,OAAO,CAACY,IAAI,CAACD;gBACxB;YACF;YACA,IAAI,CAAC7B,OAAO,MAAM,IAAIK,MAAM;YAE5B,SAAS0B;gBACP9B,OAAO+B,OAAO;gBACd/B,SAAS;gBACTD,QAAQ;gBACRU,QAAQuB,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;gBACjDL;YACF;YACA,IAAI7B,MAAMY,OAAO,KAAKZ,MAAMW,WAAW,EAAEoB;iBACpC/B,MAAMkB,OAAO,CAACY,IAAI,CAACC;QAC1B;IACF;AACF"}
|
package/dist/cjs/index-cjs.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions |
|
|
1
|
+
import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
|
|
3
3
|
export * from './types';
|
|
4
4
|
export { default as figures } from './lib/figures';
|
|
5
5
|
export { default as formatArguments } from './lib/formatArguments';
|
package/dist/cjs/index-cjs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions |
|
|
1
|
+
import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
|
|
3
3
|
export * from './types';
|
|
4
4
|
export { default as figures } from './lib/figures';
|
|
5
5
|
export { default as formatArguments } from './lib/formatArguments';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\n const worker = require('./worker.js');\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);\n return new Promise((resolve, reject) => worker(command, args, spawnOptions, options, (err, result) => (err ? reject(err) : resolve(result))));\n}\n\nconst major = +process.versions.node.split('.')[0];\n\nexport * from './types';\nexport { default as figures } from './lib/figures';\nexport { default as formatArguments } from './lib/formatArguments';\nexport default major > 10 ? spawnTerminal : undefined;\n"],"names":["figures","formatArguments","spawnTerminal","command","args","spawnOptions","options","callback","worker","require","Promise","resolve","reject","err","result","major","process","versions","node","split","undefined"],"mappings":";;;;;;;;;;;QAoBA;eAAA;;QAFoBA;eAAAA,gBAAO;;QACPC;eAAAA,wBAAe;;;qBAFrB;8DACqB;sEACQ;;;;;;;;;;;;;;;;;;;AAjB3C,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC3J,IAAMC,SAASC,QAAQ;IAEvB,IAAI,OAAOH,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOC,OAAOL,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIG,QAAQ,SAACC,SAASC;eAAWJ,OAAOL,SAASC,MAAMC,cAAcC,SAAS,SAACO,KAAKC;mBAAYD,MAAMD,OAAOC,OAAOF,QAAQG;;;AACrI;AAEA,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;IAKlD,WAAeJ,QAAQ,KAAKb,gBAAgBkB"}
|
package/dist/cjs/index-esm.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions |
|
|
1
|
+
import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
|
|
3
3
|
export * from './types.js';
|
|
4
4
|
export { default as figures } from './lib/figures.js';
|
|
5
5
|
export { default as formatArguments } from './lib/formatArguments.js';
|
package/dist/cjs/index-esm.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions |
|
|
1
|
+
import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
|
|
3
3
|
export * from './types.js';
|
|
4
4
|
export { default as figures } from './lib/figures.js';
|
|
5
5
|
export { default as formatArguments } from './lib/formatArguments.js';
|
package/dist/cjs/index-esm.js
CHANGED
|
@@ -50,7 +50,7 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
50
50
|
if (typeof callback === 'function') return (0, _worker.default)(command, args, spawnOptions, options, callback);
|
|
51
51
|
return new Promise(function(resolve, reject) {
|
|
52
52
|
return (0, _worker.default)(command, args, spawnOptions, options, function(err, result) {
|
|
53
|
-
|
|
53
|
+
err ? reject(err) : resolve(result);
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["import worker from './worker.js';\n\nimport type {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["import worker from './worker.js';\n\nimport type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\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\nconst major = +process.versions.node.split('.')[0];\n\nexport * from './types.js';\nexport { default as figures } from './lib/figures.js';\nexport { default as formatArguments } from './lib/formatArguments.js';\nexport default major > 10 ? spawnTerminal : undefined;\n"],"names":["figures","formatArguments","spawnTerminal","command","args","spawnOptions","options","callback","worker","Promise","resolve","reject","err","result","major","process","versions","node","split","undefined"],"mappings":";;;;;;;;;;;QAwBA;eAAA;;QAFoBA;eAAAA,gBAAO;;QACPC;eAAAA,wBAAe;;;6DAvBhB;qBAqBL;8DACqB;sEACQ;;;;;;;;;;;;;;;;;;;AAnB3C,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC3J,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOC,IAAAA,eAAM,EAACL,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIE,QAAQ,SAACC,SAASC;eAC3BH,IAAAA,eAAM,EAACL,SAASC,MAAMC,cAAcC,SAAS,SAACM,KAAKC;YACjDD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;;AAEJ;AAEA,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;IAKlD,WAAeJ,QAAQ,KAAKZ,gBAAgBiB"}
|
package/dist/cjs/ink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/ink.ts"],"sourcesContent":["import 'core-js/actual/array/at.js';\nimport 'core-js/actual/object/has-own.js';\nimport 'core-js/actual/object/values.js';\nimport 'core-js/actual/string/replace-all.js';\nimport 'core-js/actual/string/trim-end.js';\nif (typeof process.stdout.off === 'undefined') process.stdout.off = (name, fn) => process.stdout.removeListener(name, fn);\nif (typeof process.stderr.off === 'undefined') process.stderr.off = (name, fn) => process.stderr.removeListener(name, fn);\n\n// @ts-ignore\nimport * as ink from '../../assets/ink.cjs';\nconst { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize } = ink.default || ink;\nexport { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize };\n"],"names":["Box","Newline","Spacer","Static","Text","Transform","initialize","measureElement","render","useApp","useFocus","useFocusManager","useInput","useStderr","useStdin","useStdout","process","stdout","off","name","fn","removeListener","stderr","ink","default"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/ink.ts"],"sourcesContent":["import 'core-js/actual/array/at.js';\nimport 'core-js/actual/object/has-own.js';\nimport 'core-js/actual/object/values.js';\nimport 'core-js/actual/string/replace-all.js';\nimport 'core-js/actual/string/trim-end.js';\nif (typeof process.stdout.off === 'undefined') process.stdout.off = (name, fn) => process.stdout.removeListener(name, fn);\nif (typeof process.stderr.off === 'undefined') process.stderr.off = (name, fn) => process.stderr.removeListener(name, fn);\n\n// @ts-ignore\nimport * as ink from '../../assets/ink.cjs';\nconst { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize } = ink.default || ink;\n\nexport { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize };\n"],"names":["Box","Newline","Spacer","Static","Text","Transform","initialize","measureElement","render","useApp","useFocus","useFocusManager","useInput","useStderr","useStdin","useStdout","process","stdout","off","name","fn","removeListener","stderr","ink","default"],"mappings":";;;;;;;;;;;QAYSA;eAAAA;;QAAKC;eAAAA;;QAASC;eAAAA;;QAAQC;eAAAA;;QAAQC;eAAAA;;QAAMC;eAAAA;;QAAgHC;eAAAA;;QAArGC;eAAAA;;QAAgBC;eAAAA;;QAAQC;eAAAA;;QAAQC;eAAAA;;QAAUC;eAAAA;;QAAiBC;eAAAA;;QAAUC;eAAAA;;QAAWC;eAAAA;;QAAUC;eAAAA;;;QAZ3I;QACA;QACA;QACA;QACA;8DAKc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAJrB,IAAI,OAAOC,QAAQC,MAAM,CAACC,GAAG,KAAK,aAAaF,QAAQC,MAAM,CAACC,GAAG,GAAG,SAACC,MAAMC;WAAOJ,QAAQC,MAAM,CAACI,cAAc,CAACF,MAAMC;;AACtH,IAAI,OAAOJ,QAAQM,MAAM,CAACJ,GAAG,KAAK,aAAaF,QAAQM,MAAM,CAACJ,GAAG,GAAG,SAACC,MAAMC;WAAOJ,QAAQM,MAAM,CAACD,cAAc,CAACF,MAAMC;;AAItH,IAA2KG,OAAAA,QAAIC,OAAO,IAAID,SAAlLvB,MAAmKuB,KAAnKvB,KAAKC,UAA8JsB,KAA9JtB,SAASC,SAAqJqB,KAArJrB,QAAQC,SAA6IoB,KAA7IpB,QAAQC,OAAqImB,KAArInB,MAAMC,YAA+HkB,KAA/HlB,WAAWE,iBAAoHgB,KAApHhB,gBAAgBC,SAAoGe,KAApGf,QAAQC,SAA4Fc,KAA5Fd,QAAQC,WAAoFa,KAApFb,UAAUC,kBAA0EY,KAA1EZ,iBAAiBC,WAAyDW,KAAzDX,UAAUC,YAA+CU,KAA/CV,WAAWC,WAAoCS,KAApCT,UAAUC,YAA0BQ,KAA1BR,WAAWT,aAAeiB,KAAfjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nconst REGEX_NEW_LINE = /\\r?\\n|\\r/g;\n\nexport default function addLines(fn) {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(REGEX_NEW_LINE);\n last = lines.pop();\n if (lines.length > 0) fn(lines);\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) fn([last]);\n last = '';\n });\n return stream;\n}\n"],"names":["addLines","REGEX_NEW_LINE","fn","last","stream","Writable","write","chunk","_enc","callback","more","toString","lines","split","pop","length","on"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nconst REGEX_NEW_LINE = /\\r?\\n|\\r/g;\n\nexport type Callback = (lines: string[]) => undefined;\n\nexport default function addLines(fn: Callback): Writable {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(REGEX_NEW_LINE);\n last = lines.pop();\n if (lines.length > 0) fn(lines);\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) fn([last]);\n last = '';\n });\n return stream;\n}\n"],"names":["addLines","REGEX_NEW_LINE","fn","last","stream","Writable","write","chunk","_enc","callback","more","toString","lines","split","pop","length","on"],"mappings":";;;;+BAMA;;;eAAwBA;;;8BANC;AAEzB,IAAMC,iBAAiB;AAIR,SAASD,SAASE,EAAY;IAC3C,IAAIC,OAAO;IAEX,IAAMC,SAAS,IAAIC,wBAAQ,CAAC;QAC1BC,OAAAA,SAAAA,MAAMC,KAAK,EAAEC,IAAI,EAAEC,QAAQ;YACzB,IAAMC,OAAOP,OAAOI,MAAMI,QAAQ,CAAC;YACnC,IAAMC,QAAQF,KAAKG,KAAK,CAACZ;YACzBE,OAAOS,MAAME,GAAG;YAChB,IAAIF,MAAMG,MAAM,GAAG,GAAGb,GAAGU;YACzBH;QACF;IACF;IACAL,OAAOY,EAAE,CAAC,UAAU;QAClB,IAAIb,KAAKY,MAAM,EAAEb,GAAG;YAACC;SAAK;QAC1BA,OAAO;IACT;IACA,OAAOC;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nexport default function concatWritable(callback) {\n const chunks = [];\n const stream = new Writable({\n write: (chunk, _encoding, next) => {\n chunks.push(chunk);\n next();\n },\n });\n stream.on('finish', () => callback(Buffer.concat(chunks.splice(0))));\n return stream;\n}\n"],"names":["concatWritable","callback","chunks","stream","Writable","write","chunk","_encoding","next","push","on","Buffer","concat","splice"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nexport type Callback = (lines: Buffer) => undefined;\n\nexport default function concatWritable(callback: Callback): Writable {\n const chunks = [];\n const stream = new Writable({\n write: (chunk, _encoding, next) => {\n chunks.push(chunk);\n next();\n },\n });\n stream.on('finish', () => callback(Buffer.concat(chunks.splice(0))));\n return stream;\n}\n"],"names":["concatWritable","callback","chunks","stream","Writable","write","chunk","_encoding","next","push","on","Buffer","concat","splice"],"mappings":";;;;+BAIA;;;eAAwBA;;;8BAJC;AAIV,SAASA,eAAeC,QAAkB;IACvD,IAAMC,SAAS,EAAE;IACjB,IAAMC,SAAS,IAAIC,wBAAQ,CAAC;QAC1BC,OAAO,SAACC,OAAOC,WAAWC;YACxBN,OAAOO,IAAI,CAACH;YACZE;QACF;IACF;IACAL,OAAOO,EAAE,CAAC,UAAU;eAAMT,SAASU,OAAOC,MAAM,CAACV,OAAOW,MAAM,CAAC;;IAC/D,OAAOV;AACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: (args:
|
|
1
|
+
declare const _default: (args: string[]) => string[];
|
|
2
2
|
export default _default;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: (args:
|
|
1
|
+
declare const _default: (args: string[]) => string[];
|
|
2
2
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/formatArguments.ts"],"sourcesContent":["export default (args) => args.map((text) => (text.indexOf(' ') >= 0 ? `\"${text}\"` : text));\n"],"names":["args","map","text","indexOf"],"mappings":";;;;+BAAA;;;eAAA;;;IAAA,WAAe,SAACA;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/formatArguments.ts"],"sourcesContent":["export default (args: string[]): string[] => args.map((text) => (text.indexOf(' ') >= 0 ? `\"${text}\"` : text));\n"],"names":["args","map","text","indexOf"],"mappings":";;;;+BAAA;;;eAAA;;;IAAA,WAAe,SAACA;WAA6BA,KAAKC,GAAG,CAAC,SAACC;eAAUA,KAAKC,OAAO,CAAC,QAAQ,IAAI,AAAC,IAAQ,OAALD,MAAK,OAAKA"}
|
package/dist/cjs/types.d.cts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { StoreApi } from 'zustand';
|
|
2
|
+
export type { SpawnOptions, SpawnCallback, SpawnResult, SpawnError } from 'cross-spawn-cb';
|
|
3
|
+
import type { SpawnError, SpawnResult } from 'cross-spawn-cb';
|
|
2
4
|
export type TerminalOptions = {
|
|
3
5
|
group?: string;
|
|
4
6
|
expanded?: boolean;
|
|
5
7
|
};
|
|
8
|
+
export type TerminalCallback = (error?: SpawnError, result?: SpawnResult) => undefined;
|
|
6
9
|
export declare const LineType: {
|
|
7
10
|
readonly stdout: 1;
|
|
8
11
|
readonly stderr: 2;
|
|
@@ -18,10 +21,15 @@ export type ChildProcess = {
|
|
|
18
21
|
title: string;
|
|
19
22
|
state: State;
|
|
20
23
|
lines: Line[];
|
|
21
|
-
expanded?:
|
|
24
|
+
expanded?: boolean;
|
|
22
25
|
};
|
|
23
26
|
export interface AppState {
|
|
24
27
|
processes: ChildProcess[];
|
|
25
28
|
addProcess: (process: ChildProcess) => void;
|
|
26
29
|
updateProcess: (process: ChildProcess) => void;
|
|
27
30
|
}
|
|
31
|
+
export interface Store extends StoreApi<AppState> {
|
|
32
|
+
onRender: () => undefined;
|
|
33
|
+
}
|
|
34
|
+
export type RetainCallback = (app: Store) => undefined;
|
|
35
|
+
export type ReleaseCallback = () => undefined;
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { StoreApi } from 'zustand';
|
|
2
|
+
export type { SpawnOptions, SpawnCallback, SpawnResult, SpawnError } from 'cross-spawn-cb';
|
|
3
|
+
import type { SpawnError, SpawnResult } from 'cross-spawn-cb';
|
|
2
4
|
export type TerminalOptions = {
|
|
3
5
|
group?: string;
|
|
4
6
|
expanded?: boolean;
|
|
5
7
|
};
|
|
8
|
+
export type TerminalCallback = (error?: SpawnError, result?: SpawnResult) => undefined;
|
|
6
9
|
export declare const LineType: {
|
|
7
10
|
readonly stdout: 1;
|
|
8
11
|
readonly stderr: 2;
|
|
@@ -18,10 +21,15 @@ export type ChildProcess = {
|
|
|
18
21
|
title: string;
|
|
19
22
|
state: State;
|
|
20
23
|
lines: Line[];
|
|
21
|
-
expanded?:
|
|
24
|
+
expanded?: boolean;
|
|
22
25
|
};
|
|
23
26
|
export interface AppState {
|
|
24
27
|
processes: ChildProcess[];
|
|
25
28
|
addProcess: (process: ChildProcess) => void;
|
|
26
29
|
updateProcess: (process: ChildProcess) => void;
|
|
27
30
|
}
|
|
31
|
+
export interface Store extends StoreApi<AppState> {
|
|
32
|
+
onRender: () => undefined;
|
|
33
|
+
}
|
|
34
|
+
export type RetainCallback = (app: Store) => undefined;
|
|
35
|
+
export type ReleaseCallback = () => undefined;
|
package/dist/cjs/types.js
CHANGED
package/dist/cjs/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["import type { StoreApi } from 'zustand';\nexport type { SpawnOptions, SpawnCallback, SpawnResult, SpawnError } from 'cross-spawn-cb';\nimport type { SpawnError, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n expanded?: boolean;\n};\n\nexport type TerminalCallback = (error?: SpawnError, result?: SpawnResult) => undefined;\n\nexport const LineType = {\n stdout: 1,\n stderr: 2,\n} as const;\n\nexport type Line = {\n type: (typeof LineType)[keyof typeof LineType];\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n group?: string;\n title: string;\n state: State;\n lines: Line[];\n expanded?: boolean;\n};\n\nexport interface AppState {\n processes: ChildProcess[];\n addProcess: (process: ChildProcess) => void;\n updateProcess: (process: ChildProcess) => void;\n}\n\nexport interface Store extends StoreApi<AppState> {\n onRender: () => undefined;\n}\nexport type RetainCallback = (app: Store) => undefined;\nexport type ReleaseCallback = () => undefined;\n"],"names":["LineType","stdout","stderr"],"mappings":";;;;+BAWaA;;;eAAAA;;;AAAN,IAAMA,WAAW;IACtBC,QAAQ;IACRC,QAAQ;AACV"}
|
package/dist/cjs/worker.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { SpawnOptions, TerminalOptions } from './types.js';
|
|
2
|
-
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback:
|
|
1
|
+
import type { SpawnOptions, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined;
|
package/dist/cjs/worker.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { SpawnOptions, TerminalOptions } from './types.js';
|
|
2
|
-
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback:
|
|
1
|
+
import type { SpawnOptions, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined;
|
package/dist/cjs/worker.js
CHANGED
|
@@ -226,9 +226,8 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
226
226
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
|
227
227
|
state: err ? 'error' : 'success'
|
|
228
228
|
}));
|
|
229
|
-
//
|
|
230
|
-
|
|
231
|
-
terminal.release();
|
|
229
|
+
// ensure rendering completes
|
|
230
|
+
terminal.release(function() {
|
|
232
231
|
err ? callback(err) : callback(null, res);
|
|
233
232
|
});
|
|
234
233
|
});
|
package/dist/cjs/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["// @ts-ignore\nimport spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport uuid from 'lil-uuid';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.js';\nimport addLines from './lib/addLines.js';\nimport concatWritable from './lib/concatWritable.js';\nimport formatArguments from './lib/formatArguments.js';\n\nimport type { SpawnOptions, TerminalOptions } from './types.js';\nimport { LineType } from './types.js';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback) {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = uuid();\n store.getState().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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stdout, text }))) });\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stderr, text }))) });\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, encoding: 'utf8' }));\n queue.await((err) => {\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n //
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["// @ts-ignore\nimport spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport uuid from 'lil-uuid';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.js';\nimport addLines from './lib/addLines.js';\nimport concatWritable from './lib/concatWritable.js';\nimport formatArguments from './lib/formatArguments.js';\n\nimport type { SpawnError, SpawnOptions, TerminalCallback, TerminalOptions } from './types.js';\nimport { LineType } from './types.js';\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 terminal.retain((store) => {\n const id = uuid();\n store.getState().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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stdout, text }))) });\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stderr, text }))) });\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, encoding: 'utf8' }));\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // ensure rendering completes\n terminal.release(() => {\n err ? callback(err) : callback(null, res);\n });\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, encoding: encoding || 'utf8' }));\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","retain","store","id","uuid","getState","addProcess","title","concat","formatArguments","join","state","lines","cp","crossSpawn","outputs","stdout","stderr","queue","Queue","addLines","item","processes","find","x","updateProcess","map","text","type","LineType","defer","oo","bind","pipe","spawn","worker","await","err","res","output","release","concatWritable","toString"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useContext } from 'react';
|
|
2
|
+
import { Profiler, useContext } from 'react';
|
|
3
3
|
import { useStore } from 'zustand';
|
|
4
4
|
import StoreContext from '../contexts/Store.js';
|
|
5
5
|
import { Box } from '../ink.js';
|
|
@@ -7,10 +7,16 @@ import ChildProcess from './ChildProcess.js';
|
|
|
7
7
|
export default function App() {
|
|
8
8
|
const store = useContext(StoreContext);
|
|
9
9
|
const appState = useStore(store);
|
|
10
|
-
return /*#__PURE__*/ _jsx(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
return /*#__PURE__*/ _jsx(Profiler, {
|
|
11
|
+
id: "App",
|
|
12
|
+
onRender: (_id, phase)=>{
|
|
13
|
+
if (phase === 'update') store === null || store === void 0 ? void 0 : store.onRender();
|
|
14
|
+
},
|
|
15
|
+
children: /*#__PURE__*/ _jsx(Box, {
|
|
16
|
+
flexDirection: "column",
|
|
17
|
+
children: appState.processes.map((item)=>/*#__PURE__*/ _jsx(ChildProcess, {
|
|
18
|
+
item: item
|
|
19
|
+
}, item.id))
|
|
20
|
+
})
|
|
15
21
|
});
|
|
16
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.js';\nimport { Box } from '../ink.js';\nimport type { AppState, ChildProcess as ChildProcessT } from '../types.js';\nimport ChildProcess from './ChildProcess.js';\n\nexport default function App() {\n const store = useContext(StoreContext);\n const appState = useStore(store) as AppState;\n\n return (\n <Box flexDirection=\"column\">\n
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { Profiler, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.js';\nimport { Box } from '../ink.js';\nimport type { AppState, ChildProcess as ChildProcessT, Store } from '../types.js';\nimport ChildProcess from './ChildProcess.js';\n\nexport default function App() {\n const store = useContext<Store>(StoreContext);\n const appState = useStore(store) as AppState;\n\n return (\n <Profiler\n id=\"App\"\n onRender={(_id, phase) => {\n if (phase === 'update') store?.onRender();\n }}\n >\n <Box flexDirection=\"column\">\n {appState.processes.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} item={item} />\n ))}\n </Box>\n </Profiler>\n );\n}\n"],"names":["Profiler","useContext","useStore","StoreContext","Box","ChildProcess","App","store","appState","id","onRender","_id","phase","flexDirection","processes","map","item"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,UAAU,QAAQ,QAAQ;AAC7C,SAASC,QAAQ,QAAQ,UAAU;AACnC,OAAOC,kBAAkB,uBAAuB;AAChD,SAASC,GAAG,QAAQ,YAAY;AAEhC,OAAOC,kBAAkB,oBAAoB;AAE7C,eAAe,SAASC;IACtB,MAAMC,QAAQN,WAAkBE;IAChC,MAAMK,WAAWN,SAASK;IAE1B,qBACE,KAACP;QACCS,IAAG;QACHC,UAAU,CAACC,KAAKC;YACd,IAAIA,UAAU,UAAUL,kBAAAA,4BAAAA,MAAOG,QAAQ;QACzC;kBAEA,cAAA,KAACN;YAAIS,eAAc;sBAChBL,SAASM,SAAS,CAACC,GAAG,CAAC,CAACC,qBACvB,KAACX;oBAA2BW,MAAMA;mBAAfA,KAAKP,EAAE;;;AAKpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/contexts/Store.tsx"],"sourcesContent":["import { createContext } from 'react';\nexport default createContext(undefined);\n"],"names":["createContext","undefined"],"mappings":"AAAA,SAASA,aAAa,QAAQ,QAAQ;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/contexts/Store.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport type { Store } from '../types.js';\n\nexport default createContext<Store>(undefined);\n"],"names":["createContext","undefined"],"mappings":"AAAA,SAASA,aAAa,QAAQ,QAAQ;AAGtC,6BAAeA,cAAqBC,WAAW"}
|
package/dist/esm/createApp.d.ts
CHANGED
package/dist/esm/createApp.js
CHANGED
|
@@ -15,16 +15,29 @@ export default function createApp() {
|
|
|
15
15
|
if (store) throw new Error('Not expecting store');
|
|
16
16
|
store = createStore()((set)=>({
|
|
17
17
|
processes: [],
|
|
18
|
-
addProcess: (process1)=>
|
|
18
|
+
addProcess: (process1)=>{
|
|
19
|
+
store.nextRenders = store.renders + 1;
|
|
20
|
+
set((state)=>({
|
|
19
21
|
processes: [
|
|
20
22
|
...state.processes,
|
|
21
23
|
process1
|
|
22
24
|
]
|
|
23
|
-
}))
|
|
24
|
-
|
|
25
|
+
}));
|
|
26
|
+
},
|
|
27
|
+
updateProcess: (process1)=>{
|
|
28
|
+
store.nextRenders = store.renders + 1;
|
|
29
|
+
set((state)=>({
|
|
25
30
|
processes: state.processes.map((x)=>x.id === process1.id ? process1 : x)
|
|
26
|
-
}))
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
27
33
|
}));
|
|
34
|
+
store.nextRenders = 0;
|
|
35
|
+
store.renders = 0;
|
|
36
|
+
store.waiting = [];
|
|
37
|
+
store.onRender = ()=>{
|
|
38
|
+
store.renders = store.nextRenders;
|
|
39
|
+
while(store === null || store === void 0 ? void 0 : store.waiting.length)store.waiting.pop()();
|
|
40
|
+
};
|
|
28
41
|
inkApp = render(/*#__PURE__*/ _jsx(StoreContext.Provider, {
|
|
29
42
|
value: store,
|
|
30
43
|
children: /*#__PURE__*/ _jsx(App, {})
|
|
@@ -34,13 +47,22 @@ export default function createApp() {
|
|
|
34
47
|
return fn(store);
|
|
35
48
|
});
|
|
36
49
|
},
|
|
37
|
-
release () {
|
|
38
|
-
if (--refCount > 0)
|
|
50
|
+
release (cb) {
|
|
51
|
+
if (--refCount > 0) {
|
|
52
|
+
if (store.renders === store.nextRenders) cb();
|
|
53
|
+
else store.waiting.push(cb);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
39
56
|
if (!store) throw new Error('Expecting store');
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
57
|
+
function done() {
|
|
58
|
+
inkApp.unmount();
|
|
59
|
+
inkApp = null;
|
|
60
|
+
store = null;
|
|
61
|
+
process.stdout.write('\x1b[?25h'); // show cursor
|
|
62
|
+
cb();
|
|
63
|
+
}
|
|
64
|
+
if (store.renders === store.nextRenders) done();
|
|
65
|
+
else store.waiting.push(done);
|
|
44
66
|
}
|
|
45
67
|
};
|
|
46
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import { createStore } from 'zustand';\nimport App from './components/App.js';\nimport StoreContext from './contexts/Store.js';\n\n// @ts-ignore\nimport { type Instance, initialize, render } from './ink.js';\nimport type { AppState } from './types.js';\n\nexport default function createApp() {\n let refCount = 0;\n let store = null;\n let inkApp: Instance | null = null;\n\n return {\n retain(fn) {\n initialize(() => {\n if (++refCount > 1) return fn(store);\n if (store) throw new Error('Not expecting store');\n store = createStore<AppState>()((set) => ({\n processes: [],\n addProcess: (process) => set((state) => ({ processes: [...state.processes, process] })),\n updateProcess: (process) => set((state) => ({ processes: state.processes.map((x) => (x.id === process.id ? process : x)) })),\n }));\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\n });\n },\n release() {\n if (--refCount > 0) return;\n if (!store) throw new Error('Expecting store');\n
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import { createStore } from 'zustand';\nimport App from './components/App.js';\nimport StoreContext from './contexts/Store.js';\n\n// @ts-ignore\nimport { type Instance, initialize, render } from './ink.js';\nimport type { AppState, ReleaseCallback, RetainCallback } from './types.js';\n\nexport default function createApp() {\n let refCount = 0;\n let store = null;\n let inkApp: Instance | null = null;\n\n return {\n retain(fn: RetainCallback): undefined {\n initialize(() => {\n if (++refCount > 1) return fn(store);\n if (store) throw new Error('Not expecting store');\n store = createStore<AppState>()((set) => ({\n processes: [],\n addProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: [...state.processes, process] }));\n },\n updateProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: state.processes.map((x) => (x.id === process.id ? process : x)) }));\n },\n }));\n store.nextRenders = 0;\n store.renders = 0;\n store.waiting = [];\n store.onRender = () => {\n store.renders = store.nextRenders;\n while (store?.waiting.length) store.waiting.pop()();\n };\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\n });\n },\n release(cb: ReleaseCallback): undefined {\n if (--refCount > 0) {\n if (store.renders === store.nextRenders) cb();\n else store.waiting.push(cb);\n return;\n }\n if (!store) throw new Error('Expecting store');\n\n function done() {\n inkApp.unmount();\n inkApp = null;\n store = null;\n process.stdout.write('\\x1b[?25h'); // show cursor\n cb();\n }\n if (store.renders === store.nextRenders) done();\n else store.waiting.push(done);\n },\n };\n}\n"],"names":["createStore","App","StoreContext","initialize","render","createApp","refCount","store","inkApp","retain","fn","Error","set","processes","addProcess","process","nextRenders","renders","state","updateProcess","map","x","id","waiting","onRender","length","pop","Provider","value","patchConsole","release","cb","push","done","unmount","stdout","write"],"mappings":";AAAA,SAASA,WAAW,QAAQ,UAAU;AACtC,OAAOC,SAAS,sBAAsB;AACtC,OAAOC,kBAAkB,sBAAsB;AAE/C,aAAa;AACb,SAAwBC,UAAU,EAAEC,MAAM,QAAQ,WAAW;AAG7D,eAAe,SAASC;IACtB,IAAIC,WAAW;IACf,IAAIC,QAAQ;IACZ,IAAIC,SAA0B;IAE9B,OAAO;QACLC,QAAOC,EAAkB;YACvBP,WAAW;gBACT,IAAI,EAAEG,WAAW,GAAG,OAAOI,GAAGH;gBAC9B,IAAIA,OAAO,MAAM,IAAII,MAAM;gBAC3BJ,QAAQP,cAAwB,CAACY,MAAS,CAAA;wBACxCC,WAAW,EAAE;wBACbC,YAAY,CAACC;4BACXR,MAAMS,WAAW,GAAGT,MAAMU,OAAO,GAAG;4BACpCL,IAAI,CAACM,QAAW,CAAA;oCAAEL,WAAW;2CAAIK,MAAML,SAAS;wCAAEE;qCAAQ;gCAAC,CAAA;wBAC7D;wBACAI,eAAe,CAACJ;4BACdR,MAAMS,WAAW,GAAGT,MAAMU,OAAO,GAAG;4BACpCL,IAAI,CAACM,QAAW,CAAA;oCAAEL,WAAWK,MAAML,SAAS,CAACO,GAAG,CAAC,CAACC,IAAOA,EAAEC,EAAE,KAAKP,SAAQO,EAAE,GAAGP,WAAUM;gCAAI,CAAA;wBAC/F;oBACF,CAAA;gBACAd,MAAMS,WAAW,GAAG;gBACpBT,MAAMU,OAAO,GAAG;gBAChBV,MAAMgB,OAAO,GAAG,EAAE;gBAClBhB,MAAMiB,QAAQ,GAAG;oBACfjB,MAAMU,OAAO,GAAGV,MAAMS,WAAW;oBACjC,MAAOT,kBAAAA,4BAAAA,MAAOgB,OAAO,CAACE,MAAM,CAAElB,MAAMgB,OAAO,CAACG,GAAG;gBACjD;gBACAlB,SAASJ,qBACP,KAACF,aAAayB,QAAQ;oBAACC,OAAOrB;8BAC5B,cAAA,KAACN;oBAEH;oBAAE4B,cAAc;gBAAM;gBAExB,OAAOnB,GAAGH;YACZ;QACF;QACAuB,SAAQC,EAAmB;YACzB,IAAI,EAAEzB,WAAW,GAAG;gBAClB,IAAIC,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAEe;qBACpCxB,MAAMgB,OAAO,CAACS,IAAI,CAACD;gBACxB;YACF;YACA,IAAI,CAACxB,OAAO,MAAM,IAAII,MAAM;YAE5B,SAASsB;gBACPzB,OAAO0B,OAAO;gBACd1B,SAAS;gBACTD,QAAQ;gBACRQ,QAAQoB,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;gBACjDL;YACF;YACA,IAAIxB,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAEiB;iBACpC1B,MAAMgB,OAAO,CAACS,IAAI,CAACC;QAC1B;IACF;AACF"}
|
package/dist/esm/index-cjs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions |
|
|
1
|
+
import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
|
|
3
3
|
export * from './types';
|
|
4
4
|
export { default as figures } from './lib/figures';
|
|
5
5
|
export { default as formatArguments } from './lib/formatArguments';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\n const worker = require('./worker.js');\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);\n return new Promise((resolve, reject) => worker(command, args, spawnOptions, options, (err, result) => (err ? reject(err) : resolve(result))));\n}\n\nconst major = +process.versions.node.split('.')[0];\n\nexport * from './types';\nexport { default as figures } from './lib/figures';\nexport { default as formatArguments } from './lib/formatArguments';\nexport default major > 10 ? spawnTerminal : undefined;\n"],"names":["spawnTerminal","command","args","spawnOptions","options","callback","worker","require","Promise","resolve","reject","err","result","major","process","versions","node","split","default","figures","formatArguments","undefined"],"mappings":"AAEA,SAASA,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC3J,MAAMC,SAASC,QAAQ;IAEvB,IAAI,OAAOH,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOC,OAAOL,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIG,QAAQ,CAACC,SAASC,SAAWJ,OAAOL,SAASC,MAAMC,cAAcC,SAAS,CAACO,KAAKC,SAAYD,MAAMD,OAAOC,OAAOF,QAAQG;AACrI;AAEA,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAElD,cAAc,UAAU;AACxB,SAASC,WAAWC,OAAO,QAAQ,gBAAgB;AACnD,SAASD,WAAWE,eAAe,QAAQ,wBAAwB;AACnE,eAAeP,QAAQ,KAAKb,gBAAgBqB,UAAU"}
|
package/dist/esm/index-esm.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions |
|
|
1
|
+
import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
|
|
3
3
|
export * from './types.js';
|
|
4
4
|
export { default as figures } from './lib/figures.js';
|
|
5
5
|
export { default as formatArguments } from './lib/formatArguments.js';
|
package/dist/esm/index-esm.js
CHANGED
|
@@ -6,7 +6,9 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
6
6
|
}
|
|
7
7
|
options = options || {};
|
|
8
8
|
if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);
|
|
9
|
-
return new Promise((resolve, reject)=>worker(command, args, spawnOptions, options, (err, result)=>
|
|
9
|
+
return new Promise((resolve, reject)=>worker(command, args, spawnOptions, options, (err, result)=>{
|
|
10
|
+
err ? reject(err) : resolve(result);
|
|
11
|
+
}));
|
|
10
12
|
}
|
|
11
13
|
const major = +process.versions.node.split('.')[0];
|
|
12
14
|
export * from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["import worker from './worker.js';\n\nimport type {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["import worker from './worker.js';\n\nimport type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\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\nconst major = +process.versions.node.split('.')[0];\n\nexport * from './types.js';\nexport { default as figures } from './lib/figures.js';\nexport { default as formatArguments } from './lib/formatArguments.js';\nexport default major > 10 ? spawnTerminal : undefined;\n"],"names":["worker","spawnTerminal","command","args","spawnOptions","options","callback","Promise","resolve","reject","err","result","major","process","versions","node","split","default","figures","formatArguments","undefined"],"mappings":"AAAA,OAAOA,YAAY,cAAc;AAIjC,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC3J,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAON,OAAOE,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BT,OAAOE,SAASC,MAAMC,cAAcC,SAAS,CAACK,KAAKC;YACjDD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;AAEJ;AAEA,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAElD,cAAc,aAAa;AAC3B,SAASC,WAAWC,OAAO,QAAQ,mBAAmB;AACtD,SAASD,WAAWE,eAAe,QAAQ,2BAA2B;AACtE,eAAeP,QAAQ,KAAKX,gBAAgBmB,UAAU"}
|
package/dist/esm/ink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/ink.ts"],"sourcesContent":["import 'core-js/actual/array/at.js';\nimport 'core-js/actual/object/has-own.js';\nimport 'core-js/actual/object/values.js';\nimport 'core-js/actual/string/replace-all.js';\nimport 'core-js/actual/string/trim-end.js';\nif (typeof process.stdout.off === 'undefined') process.stdout.off = (name, fn) => process.stdout.removeListener(name, fn);\nif (typeof process.stderr.off === 'undefined') process.stderr.off = (name, fn) => process.stderr.removeListener(name, fn);\n\n// @ts-ignore\nimport * as ink from '../../assets/ink.cjs';\nconst { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize } = ink.default || ink;\nexport { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize };\n"],"names":["process","stdout","off","name","fn","removeListener","stderr","ink","Box","Newline","Spacer","Static","Text","Transform","measureElement","render","useApp","useFocus","useFocusManager","useInput","useStderr","useStdin","useStdout","initialize","default"],"mappings":"AAAA,OAAO,6BAA6B;AACpC,OAAO,mCAAmC;AAC1C,OAAO,kCAAkC;AACzC,OAAO,uCAAuC;AAC9C,OAAO,oCAAoC;AAC3C,IAAI,OAAOA,QAAQC,MAAM,CAACC,GAAG,KAAK,aAAaF,QAAQC,MAAM,CAACC,GAAG,GAAG,CAACC,MAAMC,KAAOJ,QAAQC,MAAM,CAACI,cAAc,CAACF,MAAMC;AACtH,IAAI,OAAOJ,QAAQM,MAAM,CAACJ,GAAG,KAAK,aAAaF,QAAQM,MAAM,CAACJ,GAAG,GAAG,CAACC,MAAMC,KAAOJ,QAAQM,MAAM,CAACD,cAAc,CAACF,MAAMC;AAEtH,aAAa;AACb,YAAYG,SAAS,uBAAuB;AAC5C,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGhB,IAAIiB,OAAO,IAAIjB;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/ink.ts"],"sourcesContent":["import 'core-js/actual/array/at.js';\nimport 'core-js/actual/object/has-own.js';\nimport 'core-js/actual/object/values.js';\nimport 'core-js/actual/string/replace-all.js';\nimport 'core-js/actual/string/trim-end.js';\nif (typeof process.stdout.off === 'undefined') process.stdout.off = (name, fn) => process.stdout.removeListener(name, fn);\nif (typeof process.stderr.off === 'undefined') process.stderr.off = (name, fn) => process.stderr.removeListener(name, fn);\n\n// @ts-ignore\nimport * as ink from '../../assets/ink.cjs';\nconst { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize } = ink.default || ink;\n\nexport { Box, Newline, Spacer, Static, Text, Transform, measureElement, render, useApp, useFocus, useFocusManager, useInput, useStderr, useStdin, useStdout, initialize };\n"],"names":["process","stdout","off","name","fn","removeListener","stderr","ink","Box","Newline","Spacer","Static","Text","Transform","measureElement","render","useApp","useFocus","useFocusManager","useInput","useStderr","useStdin","useStdout","initialize","default"],"mappings":"AAAA,OAAO,6BAA6B;AACpC,OAAO,mCAAmC;AAC1C,OAAO,kCAAkC;AACzC,OAAO,uCAAuC;AAC9C,OAAO,oCAAoC;AAC3C,IAAI,OAAOA,QAAQC,MAAM,CAACC,GAAG,KAAK,aAAaF,QAAQC,MAAM,CAACC,GAAG,GAAG,CAACC,MAAMC,KAAOJ,QAAQC,MAAM,CAACI,cAAc,CAACF,MAAMC;AACtH,IAAI,OAAOJ,QAAQM,MAAM,CAACJ,GAAG,KAAK,aAAaF,QAAQM,MAAM,CAACJ,GAAG,GAAG,CAACC,MAAMC,KAAOJ,QAAQM,MAAM,CAACD,cAAc,CAACF,MAAMC;AAEtH,aAAa;AACb,YAAYG,SAAS,uBAAuB;AAC5C,MAAM,EAAEC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGhB,IAAIiB,OAAO,IAAIjB;AAE1L,SAASC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nconst REGEX_NEW_LINE = /\\r?\\n|\\r/g;\n\nexport default function addLines(fn) {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(REGEX_NEW_LINE);\n last = lines.pop();\n if (lines.length > 0) fn(lines);\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) fn([last]);\n last = '';\n });\n return stream;\n}\n"],"names":["Writable","REGEX_NEW_LINE","addLines","fn","last","stream","write","chunk","_enc","callback","more","toString","lines","split","pop","length","on"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,kBAAkB;AAE3C,MAAMC,iBAAiB;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nconst REGEX_NEW_LINE = /\\r?\\n|\\r/g;\n\nexport type Callback = (lines: string[]) => undefined;\n\nexport default function addLines(fn: Callback): Writable {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(REGEX_NEW_LINE);\n last = lines.pop();\n if (lines.length > 0) fn(lines);\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) fn([last]);\n last = '';\n });\n return stream;\n}\n"],"names":["Writable","REGEX_NEW_LINE","addLines","fn","last","stream","write","chunk","_enc","callback","more","toString","lines","split","pop","length","on"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,kBAAkB;AAE3C,MAAMC,iBAAiB;AAIvB,eAAe,SAASC,SAASC,EAAY;IAC3C,IAAIC,OAAO;IAEX,MAAMC,SAAS,IAAIL,SAAS;QAC1BM,OAAMC,KAAK,EAAEC,IAAI,EAAEC,QAAQ;YACzB,MAAMC,OAAON,OAAOG,MAAMI,QAAQ,CAAC;YACnC,MAAMC,QAAQF,KAAKG,KAAK,CAACZ;YACzBG,OAAOQ,MAAME,GAAG;YAChB,IAAIF,MAAMG,MAAM,GAAG,GAAGZ,GAAGS;YACzBH;QACF;IACF;IACAJ,OAAOW,EAAE,CAAC,UAAU;QAClB,IAAIZ,KAAKW,MAAM,EAAEZ,GAAG;YAACC;SAAK;QAC1BA,OAAO;IACT;IACA,OAAOC;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nexport default function concatWritable(callback) {\n const chunks = [];\n const stream = new Writable({\n write: (chunk, _encoding, next) => {\n chunks.push(chunk);\n next();\n },\n });\n stream.on('finish', () => callback(Buffer.concat(chunks.splice(0))));\n return stream;\n}\n"],"names":["Writable","concatWritable","callback","chunks","stream","write","chunk","_encoding","next","push","on","Buffer","concat","splice"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nexport type Callback = (lines: Buffer) => undefined;\n\nexport default function concatWritable(callback: Callback): Writable {\n const chunks = [];\n const stream = new Writable({\n write: (chunk, _encoding, next) => {\n chunks.push(chunk);\n next();\n },\n });\n stream.on('finish', () => callback(Buffer.concat(chunks.splice(0))));\n return stream;\n}\n"],"names":["Writable","concatWritable","callback","chunks","stream","write","chunk","_encoding","next","push","on","Buffer","concat","splice"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,kBAAkB;AAI3C,eAAe,SAASC,eAAeC,QAAkB;IACvD,MAAMC,SAAS,EAAE;IACjB,MAAMC,SAAS,IAAIJ,SAAS;QAC1BK,OAAO,CAACC,OAAOC,WAAWC;YACxBL,OAAOM,IAAI,CAACH;YACZE;QACF;IACF;IACAJ,OAAOM,EAAE,CAAC,UAAU,IAAMR,SAASS,OAAOC,MAAM,CAACT,OAAOU,MAAM,CAAC;IAC/D,OAAOT;AACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: (args:
|
|
1
|
+
declare const _default: (args: string[]) => string[];
|
|
2
2
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/formatArguments.ts"],"sourcesContent":["export default (args) => args.map((text) => (text.indexOf(' ') >= 0 ? `\"${text}\"` : text));\n"],"names":["args","map","text","indexOf"],"mappings":"AAAA,eAAe,CAAA,CAACA,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/formatArguments.ts"],"sourcesContent":["export default (args: string[]): string[] => args.map((text) => (text.indexOf(' ') >= 0 ? `\"${text}\"` : text));\n"],"names":["args","map","text","indexOf"],"mappings":"AAAA,eAAe,CAAA,CAACA,OAA6BA,KAAKC,GAAG,CAAC,CAACC,OAAUA,KAAKC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAED,KAAK,CAAC,CAAC,GAAGA,KAAK,EAAE"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { StoreApi } from 'zustand';
|
|
2
|
+
export type { SpawnOptions, SpawnCallback, SpawnResult, SpawnError } from 'cross-spawn-cb';
|
|
3
|
+
import type { SpawnError, SpawnResult } from 'cross-spawn-cb';
|
|
2
4
|
export type TerminalOptions = {
|
|
3
5
|
group?: string;
|
|
4
6
|
expanded?: boolean;
|
|
5
7
|
};
|
|
8
|
+
export type TerminalCallback = (error?: SpawnError, result?: SpawnResult) => undefined;
|
|
6
9
|
export declare const LineType: {
|
|
7
10
|
readonly stdout: 1;
|
|
8
11
|
readonly stderr: 2;
|
|
@@ -18,10 +21,15 @@ export type ChildProcess = {
|
|
|
18
21
|
title: string;
|
|
19
22
|
state: State;
|
|
20
23
|
lines: Line[];
|
|
21
|
-
expanded?:
|
|
24
|
+
expanded?: boolean;
|
|
22
25
|
};
|
|
23
26
|
export interface AppState {
|
|
24
27
|
processes: ChildProcess[];
|
|
25
28
|
addProcess: (process: ChildProcess) => void;
|
|
26
29
|
updateProcess: (process: ChildProcess) => void;
|
|
27
30
|
}
|
|
31
|
+
export interface Store extends StoreApi<AppState> {
|
|
32
|
+
onRender: () => undefined;
|
|
33
|
+
}
|
|
34
|
+
export type RetainCallback = (app: Store) => undefined;
|
|
35
|
+
export type ReleaseCallback = () => undefined;
|
package/dist/esm/types.js
CHANGED
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["import type { StoreApi } from 'zustand';\nexport type { SpawnOptions, SpawnCallback, SpawnResult, SpawnError } from 'cross-spawn-cb';\nimport type { SpawnError, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n expanded?: boolean;\n};\n\nexport type TerminalCallback = (error?: SpawnError, result?: SpawnResult) => undefined;\n\nexport const LineType = {\n stdout: 1,\n stderr: 2,\n} as const;\n\nexport type Line = {\n type: (typeof LineType)[keyof typeof LineType];\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n group?: string;\n title: string;\n state: State;\n lines: Line[];\n expanded?: boolean;\n};\n\nexport interface AppState {\n processes: ChildProcess[];\n addProcess: (process: ChildProcess) => void;\n updateProcess: (process: ChildProcess) => void;\n}\n\nexport interface Store extends StoreApi<AppState> {\n onRender: () => undefined;\n}\nexport type RetainCallback = (app: Store) => undefined;\nexport type ReleaseCallback = () => undefined;\n"],"names":["LineType","stdout","stderr"],"mappings":"AAWA,OAAO,MAAMA,WAAW;IACtBC,QAAQ;IACRC,QAAQ;AACV,EAAW"}
|
package/dist/esm/worker.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { SpawnOptions, TerminalOptions } from './types.js';
|
|
2
|
-
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback:
|
|
1
|
+
import type { SpawnOptions, TerminalCallback, TerminalOptions } from './types.js';
|
|
2
|
+
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined;
|
package/dist/esm/worker.js
CHANGED
|
@@ -160,9 +160,8 @@ export default function spawnTerminal(command, args, spawnOptions, options, call
|
|
|
160
160
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
|
161
161
|
state: err ? 'error' : 'success'
|
|
162
162
|
}));
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
terminal.release();
|
|
163
|
+
// ensure rendering completes
|
|
164
|
+
terminal.release(()=>{
|
|
166
165
|
err ? callback(err) : callback(null, res);
|
|
167
166
|
});
|
|
168
167
|
});
|
package/dist/esm/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["// @ts-ignore\nimport spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport uuid from 'lil-uuid';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.js';\nimport addLines from './lib/addLines.js';\nimport concatWritable from './lib/concatWritable.js';\nimport formatArguments from './lib/formatArguments.js';\n\nimport type { SpawnOptions, TerminalOptions } from './types.js';\nimport { LineType } from './types.js';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback) {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = uuid();\n store.getState().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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stdout, text }))) });\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stderr, text }))) });\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, encoding: 'utf8' }));\n queue.await((err) => {\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n //
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["// @ts-ignore\nimport spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport uuid from 'lil-uuid';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.js';\nimport addLines from './lib/addLines.js';\nimport concatWritable from './lib/concatWritable.js';\nimport formatArguments from './lib/formatArguments.js';\n\nimport type { SpawnError, SpawnOptions, TerminalCallback, TerminalOptions } from './types.js';\nimport { LineType } from './types.js';\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 terminal.retain((store) => {\n const id = uuid();\n store.getState().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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stdout, text }))) });\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stderr, text }))) });\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, encoding: 'utf8' }));\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 const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // ensure rendering completes\n terminal.release(() => {\n err ? callback(err) : callback(null, res);\n });\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, encoding: encoding || 'utf8' }));\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","uuid","oo","Queue","createApp","addLines","concatWritable","formatArguments","LineType","terminal","spawnTerminal","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","retain","store","id","getState","addProcess","title","concat","join","state","lines","cp","outputs","stdout","stderr","queue","item","processes","find","x","updateProcess","map","text","type","defer","bind","pipe","worker","await","err","res","output","release","toString"],"mappings":"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"}
|