spawn-term 0.2.9 → 1.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 +1 -1
- package/dist/cjs/components/App.js.map +1 -1
- package/dist/cjs/components/ChildProcess.js +1 -1
- package/dist/cjs/components/ChildProcess.js.map +1 -1
- package/dist/cjs/components/Spinner.js +1 -1
- package/dist/cjs/components/Spinner.js.map +1 -1
- package/dist/cjs/createApp.js +42 -43
- package/dist/cjs/createApp.js.map +1 -1
- package/dist/cjs/index-cjs.d.cts +4 -7
- package/dist/cjs/index-cjs.d.ts +4 -7
- package/dist/cjs/index-cjs.js +4 -19
- package/dist/cjs/index-cjs.js.map +1 -1
- package/dist/cjs/index-esm.js +51 -4
- package/dist/cjs/index-esm.js.map +1 -1
- package/dist/cjs/lib/addLines.d.cts +1 -1
- package/dist/cjs/lib/addLines.d.ts +1 -1
- package/dist/cjs/lib/addLines.js +2 -2
- package/dist/cjs/lib/addLines.js.map +1 -1
- package/dist/cjs/lib/concatWritable.d.cts +1 -1
- package/dist/cjs/lib/concatWritable.d.ts +1 -1
- package/dist/cjs/lib/concatWritable.js +2 -2
- package/dist/cjs/lib/concatWritable.js.map +1 -1
- package/dist/cjs/worker.js +2 -3
- package/dist/cjs/worker.js.map +1 -1
- package/dist/esm/components/App.js +1 -1
- package/dist/esm/components/App.js.map +1 -1
- package/dist/esm/components/ChildProcess.js +1 -1
- package/dist/esm/components/ChildProcess.js.map +1 -1
- package/dist/esm/components/Spinner.js +1 -1
- package/dist/esm/components/Spinner.js.map +1 -1
- package/dist/esm/createApp.js +36 -38
- package/dist/esm/createApp.js.map +1 -1
- package/dist/esm/index-cjs.d.ts +4 -7
- package/dist/esm/index-cjs.js +4 -15
- package/dist/esm/index-cjs.js.map +1 -1
- package/dist/esm/index-esm.js +6 -2
- package/dist/esm/index-esm.js.map +1 -1
- package/dist/esm/lib/addLines.d.ts +1 -1
- package/dist/esm/lib/addLines.js +1 -1
- package/dist/esm/lib/addLines.js.map +1 -1
- package/dist/esm/lib/concatWritable.d.ts +1 -1
- package/dist/esm/lib/concatWritable.js +1 -1
- package/dist/esm/lib/concatWritable.js.map +1 -1
- package/dist/esm/worker.js +2 -3
- package/dist/esm/worker.js.map +1 -1
- package/package.json +6 -9
- package/assets/ink.cjs +0 -31107
- package/assets/intl-adapter.cjs +0 -968
- package/dist/cjs/ink.d.cts +0 -7
- package/dist/cjs/ink.d.ts +0 -7
- package/dist/cjs/ink.js +0 -115
- package/dist/cjs/ink.js.map +0 -1
- package/dist/esm/ink.d.ts +0 -7
- package/dist/esm/ink.js +0 -11
- package/dist/esm/ink.js.map +0 -1
|
@@ -9,10 +9,10 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _jsxruntime = require("react/jsx-runtime");
|
|
12
|
+
var _ink = require("ink");
|
|
12
13
|
var _react = require("react");
|
|
13
14
|
var _zustand = require("zustand");
|
|
14
15
|
var _Store = /*#__PURE__*/ _interop_require_default(require("../contexts/Store.js"));
|
|
15
|
-
var _ink = require("../ink.js");
|
|
16
16
|
var _ChildProcess = /*#__PURE__*/ _interop_require_default(require("./ChildProcess.js"));
|
|
17
17
|
function _interop_require_default(obj) {
|
|
18
18
|
return obj && obj.__esModule ? obj : {
|
|
@@ -1 +1 @@
|
|
|
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
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { Box } from 'ink';\nimport { Profiler, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.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;;;;mBAPJ;qBACiB;uBACZ;4DACA;mEAEA;;;;;;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"}
|
|
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
var _jsxruntime = require("react/jsx-runtime");
|
|
12
12
|
var _ansicolors = /*#__PURE__*/ _interop_require_default(require("ansi-colors"));
|
|
13
|
+
var _ink = require("ink");
|
|
13
14
|
var _react = require("react");
|
|
14
|
-
var _ink = require("../ink.js");
|
|
15
15
|
var _ansiRegex = /*#__PURE__*/ _interop_require_default(require("../lib/ansiRegex.js"));
|
|
16
16
|
var _figures = /*#__PURE__*/ _interop_require_default(require("../lib/figures.js"));
|
|
17
17
|
var _types = require("../types.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import c from 'ansi-colors';\nimport {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import c from 'ansi-colors';\nimport { Box, Text } from 'ink';\nimport { memo, useMemo } from 'react';\nimport ansiRegex from '../lib/ansiRegex.js';\nimport figures from '../lib/figures.js';\nimport type { ChildProcess as ChildProcessT, Line, State } from '../types.js';\nimport { LineType } from '../types.js';\nimport Spinner from './Spinner.js';\n\nconst REGEX_ANSI = ansiRegex();\nconst BLANK_LINE = { type: LineType.stdout, text: '' };\n\n// From: https://github.com/sindresorhus/cli-spinners/blob/00de8fbeee16fa49502fa4f687449f70f2c8ca2c/spinners.json#L2\nconst SPINNER = {\n interval: 80,\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],\n};\n\nconst ICONS = {\n // @ts-ignore\n error: <ink-text>{c.red(figures.cross)}</ink-text>,\n // @ts-ignore\n success: <ink-text>{c.green(figures.tick)}</ink-text>,\n running: <Spinner {...SPINNER} />,\n};\n\ntype ItemProps = {\n item: ChildProcessT;\n};\n\ntype HeaderProps = {\n group?: string;\n title: string;\n state: State;\n};\n\nconst Header = memo(\n function Header({ group, title, state }: HeaderProps) {\n const icon = ICONS[state];\n\n return (\n <Box>\n {icon}\n {group && <Text bold>{`${group}${figures.pointer} `}</Text>}\n <Text>{title}</Text>\n </Box>\n );\n },\n (a, b) => a.group === b.group && a.title === b.title && a.state === b.state\n);\n\ntype RunningSummaryProps = {\n line: Line;\n};\n\nconst RunningSummary = memo(function RunningSummary({ line }: RunningSummaryProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{line.text.replace(REGEX_ANSI, '')}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Line[];\n};\n\nconst renderLine = (line, index) => {\n return (\n // @ts-ignore\n <ink-text key={index} style={{ minHeight: 1 }}>\n {line.text}\n {/* @ts-ignore */}\n </ink-text>\n );\n};\n\nconst Lines = memo(function Lines({ lines }: LinesProps) {\n return (\n <Box flexDirection=\"column\" marginLeft={2}>\n {lines.map(renderLine)}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { lines } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={lines} />\n </Box>\n );\n});\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, lines } = item;\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === LineType.stderr), [lines]);\n const summary = useMemo(() => lines.filter((line) => line.text.length > 0 && errors.indexOf(line) < 0).pop(), [lines, errors]);\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n {state === 'running' && <RunningSummary line={summary || BLANK_LINE} />}\n {errors.length > 0 && <Lines lines={errors} />}\n </Box>\n );\n});\n\nexport default memo(function ChildProcess({ item }: ItemProps) {\n const { expanded } = item;\n return expanded ? <Expanded item={item} /> : <Contracted item={item} />;\n});\n"],"names":["REGEX_ANSI","ansiRegex","BLANK_LINE","type","LineType","stdout","text","SPINNER","interval","frames","ICONS","error","ink-text","c","red","figures","cross","success","green","tick","running","Spinner","Header","memo","group","title","state","icon","Box","Text","bold","pointer","a","b","RunningSummary","line","marginLeft","color","replace","renderLine","index","style","minHeight","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","useMemo","filter","stderr","summary","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _jsxruntime = require("react/jsx-runtime");
|
|
12
|
+
var _ink = require("ink");
|
|
12
13
|
var _react = require("react");
|
|
13
|
-
var _ink = require("../ink.js");
|
|
14
14
|
function _array_like_to_array(arr, len) {
|
|
15
15
|
if (len == null || len > arr.length) len = arr.length;
|
|
16
16
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/Spinner.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/Spinner.tsx"],"sourcesContent":["import { Text } from 'ink';\nimport { useEffect, useState } from 'react';\n\nexport type SpinnerProps = {\n interval: number;\n frames: string[];\n};\n\nexport default function Spinner({ interval, frames }: SpinnerProps) {\n const [index, setIndex] = useState(0);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setIndex((index) => (index === frames.length - 1 ? 0 : index + 1));\n }, interval);\n return () => {\n clearInterval(timer);\n };\n }, [interval, frames]);\n\n return <Text>{`${frames[index]} `}</Text>;\n}\n"],"names":["Spinner","interval","frames","useState","index","setIndex","useEffect","timer","setInterval","length","clearInterval","Text"],"mappings":";;;;+BAQA;;;eAAwBA;;;;mBARH;qBACe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOrB,SAASA,QAAQ,KAAkC;QAAhCC,WAAF,MAAEA,UAAUC,SAAZ,MAAYA;IAC1C,IAA0BC,6BAAAA,IAAAA,eAAQ,EAAC,QAA5BC,QAAmBD,cAAZE,WAAYF;IAE1BG,IAAAA,gBAAS,EAAC;QACR,IAAMC,QAAQC,YAAY;YACxBH,SAAS,SAACD;uBAAWA,UAAUF,OAAOO,MAAM,GAAG,IAAI,IAAIL,QAAQ;;QACjE,GAAGH;QACH,OAAO;YACLS,cAAcH;QAChB;IACF,GAAG;QAACN;QAAUC;KAAO;IAErB,qBAAO,qBAACS,SAAI;kBAAE,AAAC,GAAgB,OAAdT,MAAM,CAACE,MAAM,EAAC;;AACjC"}
|
package/dist/cjs/createApp.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-ignore
|
|
1
2
|
"use strict";
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
4
|
value: true
|
|
@@ -9,10 +10,10 @@ Object.defineProperty(exports, "default", {
|
|
|
9
10
|
}
|
|
10
11
|
});
|
|
11
12
|
var _jsxruntime = require("react/jsx-runtime");
|
|
13
|
+
var _ink = require("ink");
|
|
12
14
|
var _zustand = require("zustand");
|
|
13
15
|
var _App = /*#__PURE__*/ _interop_require_default(require("./components/App.js"));
|
|
14
16
|
var _Store = /*#__PURE__*/ _interop_require_default(require("./contexts/Store.js"));
|
|
15
|
-
var _ink = require("./ink.js");
|
|
16
17
|
function _array_like_to_array(arr, len) {
|
|
17
18
|
if (len == null || len > arr.length) len = arr.length;
|
|
18
19
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
@@ -49,51 +50,49 @@ function createApp() {
|
|
|
49
50
|
var inkApp = null;
|
|
50
51
|
return {
|
|
51
52
|
retain: function retain(fn) {
|
|
52
|
-
(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
store.nextRenders = 0;
|
|
81
|
-
store.renders = 0;
|
|
82
|
-
store.waiting = [];
|
|
83
|
-
store.onRender = function() {
|
|
84
|
-
store.renders++;
|
|
85
|
-
if (store.renders === store.nextRenders) {
|
|
86
|
-
while(store === null || store === void 0 ? void 0 : store.waiting.length)store.waiting.pop()();
|
|
53
|
+
if (++refCount > 1) return fn(store);
|
|
54
|
+
if (store) throw new Error('Not expecting store');
|
|
55
|
+
store = (0, _zustand.createStore)()(function(set) {
|
|
56
|
+
return {
|
|
57
|
+
processes: [],
|
|
58
|
+
addProcess: function(process1) {
|
|
59
|
+
store.nextRenders = store.renders + 1;
|
|
60
|
+
set(function(state) {
|
|
61
|
+
return {
|
|
62
|
+
processes: _to_consumable_array(state.processes).concat([
|
|
63
|
+
process1
|
|
64
|
+
])
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
updateProcess: function(process1) {
|
|
69
|
+
store.nextRenders = store.renders + 1;
|
|
70
|
+
set(function(state) {
|
|
71
|
+
return {
|
|
72
|
+
processes: state.processes.map(function(x) {
|
|
73
|
+
return x.id === process1.id ? process1 : x;
|
|
74
|
+
})
|
|
75
|
+
};
|
|
76
|
+
});
|
|
87
77
|
}
|
|
88
78
|
};
|
|
89
|
-
inkApp = (0, _ink.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_Store.default.Provider, {
|
|
90
|
-
value: store,
|
|
91
|
-
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_App.default, {})
|
|
92
|
-
}), {
|
|
93
|
-
patchConsole: false
|
|
94
|
-
});
|
|
95
|
-
return fn(store);
|
|
96
79
|
});
|
|
80
|
+
store.nextRenders = 0;
|
|
81
|
+
store.renders = 0;
|
|
82
|
+
store.waiting = [];
|
|
83
|
+
store.onRender = function() {
|
|
84
|
+
store.renders++;
|
|
85
|
+
if (store.renders === store.nextRenders) {
|
|
86
|
+
while(store === null || store === void 0 ? void 0 : store.waiting.length)store.waiting.pop()();
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
inkApp = (0, _ink.render)(/*#__PURE__*/ (0, _jsxruntime.jsx)(_Store.default.Provider, {
|
|
90
|
+
value: store,
|
|
91
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_App.default, {})
|
|
92
|
+
}), {
|
|
93
|
+
patchConsole: false
|
|
94
|
+
});
|
|
95
|
+
return fn(store);
|
|
97
96
|
},
|
|
98
97
|
release: function release(cb) {
|
|
99
98
|
if (--refCount > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["// @ts-ignore\nimport { type Instance, render } from 'ink';\nimport { createStore } from 'zustand';\nimport App from './components/App.js';\nimport StoreContext from './contexts/Store.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 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++;\n if (store.renders === store.nextRenders) {\n while (store?.waiting.length) store.waiting.pop()();\n }\n };\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\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","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":"AAAA,aAAa;;;;;+BAOb;;;eAAwBA;;;;mBANc;uBACV;0DACZ;4DACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGV,SAASA;IACtB,IAAIC,WAAW;IACf,IAAIC,QAAQ;IACZ,IAAIC,SAA0B;IAE9B,OAAO;QACLC,QAAAA,SAAAA,OAAOC,EAAkB;YACvB,IAAI,EAAEJ,WAAW,GAAG,OAAOI,GAAGH;YAC9B,IAAIA,OAAO,MAAM,IAAII,MAAM;YAC3BJ,QAAQK,IAAAA,oBAAW,IAAa,SAACC;uBAAS;oBACxCC,WAAW,EAAE;oBACbC,YAAY,SAACC;wBACXT,MAAMU,WAAW,GAAGV,MAAMW,OAAO,GAAG;wBACpCL,IAAI,SAACM;mCAAW;gCAAEL,WAAW,AAAC,qBAAGK,MAAML,SAAS,SAAnB;oCAAqBE;iCAAQ;4BAAC;;oBAC7D;oBACAI,eAAe,SAACJ;wBACdT,MAAMU,WAAW,GAAGV,MAAMW,OAAO,GAAG;wBACpCL,IAAI,SAACM;mCAAW;gCAAEL,WAAWK,MAAML,SAAS,CAACO,GAAG,CAAC,SAACC;2CAAOA,EAAEC,EAAE,KAAKP,SAAQO,EAAE,GAAGP,WAAUM;;4BAAI;;oBAC/F;gBACF;;YACAf,MAAMU,WAAW,GAAG;YACpBV,MAAMW,OAAO,GAAG;YAChBX,MAAMiB,OAAO,GAAG,EAAE;YAClBjB,MAAMkB,QAAQ,GAAG;gBACflB,MAAMW,OAAO;gBACb,IAAIX,MAAMW,OAAO,KAAKX,MAAMU,WAAW,EAAE;oBACvC,MAAOV,kBAAAA,4BAAAA,MAAOiB,OAAO,CAACE,MAAM,CAAEnB,MAAMiB,OAAO,CAACG,GAAG;gBACjD;YACF;YACAnB,SAASoB,IAAAA,WAAM,gBACb,qBAACC,cAAY,CAACC,QAAQ;gBAACC,OAAOxB;0BAC5B,cAAA,qBAACyB,YAAG;gBAEN;gBAAEC,cAAc;YAAM;YAExB,OAAOvB,GAAGH;QACZ;QACA2B,SAAAA,SAAAA,QAAQC,EAAmB;YACzB,IAAI,EAAE7B,WAAW,GAAG;gBAClB,IAAIC,MAAMW,OAAO,KAAKX,MAAMU,WAAW,EAAEkB;qBACpC5B,MAAMiB,OAAO,CAACY,IAAI,CAACD;gBACxB;YACF;YACA,IAAI,CAAC5B,OAAO,MAAM,IAAII,MAAM;YAE5B,SAAS0B;gBACP7B,OAAO8B,OAAO;gBACd9B,SAAS;gBACTD,QAAQ;gBACRS,QAAQuB,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;gBACjDL;YACF;YACA,IAAI5B,MAAMW,OAAO,KAAKX,MAAMU,WAAW,EAAEoB;iBACpC9B,MAAMiB,OAAO,CAACY,IAAI,CAACC;QAC1B;IACF;AACF"}
|
package/dist/cjs/index-cjs.d.cts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export * from './types';
|
|
6
|
-
declare const _default: typeof spawnTerminal;
|
|
7
|
-
export default _default;
|
|
1
|
+
export { default as figures } from './lib/figures.js';
|
|
2
|
+
export { default as formatArguments } from './lib/formatArguments.js';
|
|
3
|
+
export * from './types.js';
|
|
4
|
+
export default undefined;
|
package/dist/cjs/index-cjs.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export * from './types';
|
|
6
|
-
declare const _default: typeof spawnTerminal;
|
|
7
|
-
export default _default;
|
|
1
|
+
export { default as figures } from './lib/figures.js';
|
|
2
|
+
export { default as formatArguments } from './lib/formatArguments.js';
|
|
3
|
+
export * from './types.js';
|
|
4
|
+
export default undefined;
|
package/dist/cjs/index-cjs.js
CHANGED
|
@@ -19,9 +19,9 @@ _export(exports, {
|
|
|
19
19
|
return _formatArguments.default;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
var _figures = /*#__PURE__*/ _interop_require_default(require("./lib/figures"));
|
|
23
|
-
var _formatArguments = /*#__PURE__*/ _interop_require_default(require("./lib/formatArguments"));
|
|
24
|
-
_export_star(require("./types"), exports);
|
|
22
|
+
var _figures = /*#__PURE__*/ _interop_require_default(require("./lib/figures.js"));
|
|
23
|
+
var _formatArguments = /*#__PURE__*/ _interop_require_default(require("./lib/formatArguments.js"));
|
|
24
|
+
_export_star(require("./types.js"), exports);
|
|
25
25
|
function _export_star(from, to) {
|
|
26
26
|
Object.keys(from).forEach(function(k) {
|
|
27
27
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
@@ -40,20 +40,5 @@ function _interop_require_default(obj) {
|
|
|
40
40
|
default: obj
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
var worker = require('./worker.js');
|
|
45
|
-
if (typeof options === 'function') {
|
|
46
|
-
callback = options;
|
|
47
|
-
options = {};
|
|
48
|
-
}
|
|
49
|
-
options = options || {};
|
|
50
|
-
if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);
|
|
51
|
-
return new Promise(function(resolve, reject) {
|
|
52
|
-
return worker(command, args, spawnOptions, options, function(err, result) {
|
|
53
|
-
return err ? reject(err) : resolve(result);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
var major = +process.versions.node.split('.')[0];
|
|
58
|
-
var _default = major > 10 ? spawnTerminal : undefined;
|
|
43
|
+
var _default = undefined;
|
|
59
44
|
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["export { default as figures } from './lib/figures.js';\nexport { default as formatArguments } from './lib/formatArguments.js';\nexport * from './types.js';\nexport default undefined;\n"],"names":["figures","formatArguments","undefined"],"mappings":";;;;;;;;;;;QAGA;eAAA;;QAHoBA;eAAAA,gBAAO;;QACPC;eAAAA,wBAAe;;;8DADA;sEACQ;qBAC7B;;;;;;;;;;;;;;;;;;;IACd,WAAeC"}
|
package/dist/cjs/index-esm.js
CHANGED
|
@@ -19,7 +19,6 @@ _export(exports, {
|
|
|
19
19
|
return _formatArguments.default;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
var _worker = /*#__PURE__*/ _interop_require_default(require("./worker.js"));
|
|
23
22
|
var _figures = /*#__PURE__*/ _interop_require_default(require("./lib/figures.js"));
|
|
24
23
|
var _formatArguments = /*#__PURE__*/ _interop_require_default(require("./lib/formatArguments.js"));
|
|
25
24
|
_export_star(require("./types.js"), exports);
|
|
@@ -41,19 +40,67 @@ function _interop_require_default(obj) {
|
|
|
41
40
|
default: obj
|
|
42
41
|
};
|
|
43
42
|
}
|
|
43
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
44
|
+
if (typeof WeakMap !== "function") return null;
|
|
45
|
+
var cacheBabelInterop = new WeakMap();
|
|
46
|
+
var cacheNodeInterop = new WeakMap();
|
|
47
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
48
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
49
|
+
})(nodeInterop);
|
|
50
|
+
}
|
|
51
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
52
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
53
|
+
return obj;
|
|
54
|
+
}
|
|
55
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
56
|
+
return {
|
|
57
|
+
default: obj
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
61
|
+
if (cache && cache.has(obj)) {
|
|
62
|
+
return cache.get(obj);
|
|
63
|
+
}
|
|
64
|
+
var newObj = {
|
|
65
|
+
__proto__: null
|
|
66
|
+
};
|
|
67
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
68
|
+
for(var key in obj){
|
|
69
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
70
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
71
|
+
if (desc && (desc.get || desc.set)) {
|
|
72
|
+
Object.defineProperty(newObj, key, desc);
|
|
73
|
+
} else {
|
|
74
|
+
newObj[key] = obj[key];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
newObj.default = obj;
|
|
79
|
+
if (cache) {
|
|
80
|
+
cache.set(obj, newObj);
|
|
81
|
+
}
|
|
82
|
+
return newObj;
|
|
83
|
+
}
|
|
84
|
+
function worker(command, args, spawnOptions, options, callback) {
|
|
85
|
+
Promise.resolve().then(function() {
|
|
86
|
+
return /*#__PURE__*/ _interop_require_wildcard(require("./worker.js"));
|
|
87
|
+
}).then(function(fn) {
|
|
88
|
+
fn.default(command, args, spawnOptions, options, callback);
|
|
89
|
+
}).catch(callback);
|
|
90
|
+
}
|
|
44
91
|
function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
45
92
|
if (typeof options === 'function') {
|
|
46
93
|
callback = options;
|
|
47
94
|
options = {};
|
|
48
95
|
}
|
|
49
96
|
options = options || {};
|
|
50
|
-
if (typeof callback === 'function') return (
|
|
97
|
+
if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);
|
|
51
98
|
return new Promise(function(resolve, reject) {
|
|
52
|
-
return (
|
|
99
|
+
return worker(command, args, spawnOptions, options, function(err, result) {
|
|
53
100
|
err ? reject(err) : resolve(result);
|
|
54
101
|
});
|
|
55
102
|
});
|
|
56
103
|
}
|
|
57
104
|
var major = +process.versions.node.split('.')[0];
|
|
58
|
-
var _default = major >
|
|
105
|
+
var _default = major > 14 ? spawnTerminal : undefined;
|
|
59
106
|
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\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\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 { default as figures } from './lib/figures.js';\nexport { default as formatArguments } from './lib/formatArguments.js';\nexport * from './types.js';\nexport default major > 14 ? spawnTerminal : undefined;\n"],"names":["figures","formatArguments","worker","command","args","spawnOptions","options","callback","then","fn","default","catch","spawnTerminal","Promise","resolve","reject","err","result","major","process","versions","node","split","undefined"],"mappings":";;;;;;;;;;;QA8BA;eAAA;;QAHoBA;eAAAA,gBAAO;;QACPC;eAAAA,wBAAe;;;8DADA;sEACQ;qBAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA3Bd,SAASC,OAAOC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAwB,EAAEC,QAA0B;IAC/H;uDAAA,QAAO;OACJC,IAAI,CAAC,SAACC;QACLA,GAAGC,OAAO,CAACP,SAASC,MAAMC,cAAcC,SAASC;IACnD,GACCI,KAAK,CAACJ;AACX;AAEA,SAASK,cAAcT,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,OAAOL,OAAOC,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIM,QAAQ,SAACC,SAASC;eAC3Bb,OAAOC,SAASC,MAAMC,cAAcC,SAAS,SAACU,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,KAAKN,gBAAgBW"}
|
package/dist/cjs/lib/addLines.js
CHANGED
|
@@ -8,11 +8,11 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return addLines;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
var
|
|
11
|
+
var _stream = require("stream");
|
|
12
12
|
var REGEX_NEW_LINE = /\r?\n|\r/g;
|
|
13
13
|
function addLines(fn) {
|
|
14
14
|
var last = '';
|
|
15
|
-
var stream = new
|
|
15
|
+
var stream = new _stream.Writable({
|
|
16
16
|
write: function write(chunk, _enc, callback) {
|
|
17
17
|
var more = last + chunk.toString('utf8');
|
|
18
18
|
var lines = more.split(REGEX_NEW_LINE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from '
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from '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;;;sBANC;AAEzB,IAAMC,iBAAiB;AAIR,SAASD,SAASE,EAAY;IAC3C,IAAIC,OAAO;IAEX,IAAMC,SAAS,IAAIC,gBAAQ,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"}
|
|
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return concatWritable;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
var
|
|
11
|
+
var _stream = require("stream");
|
|
12
12
|
function concatWritable(callback) {
|
|
13
13
|
var chunks = [];
|
|
14
|
-
var stream = new
|
|
14
|
+
var stream = new _stream.Writable({
|
|
15
15
|
write: function(chunk, _encoding, next) {
|
|
16
16
|
chunks.push(chunk);
|
|
17
17
|
next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from '
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from '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;;;sBAJC;AAIV,SAASA,eAAeC,QAAkB;IACvD,IAAMC,SAAS,EAAE;IACjB,IAAMC,SAAS,IAAIC,gBAAQ,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"}
|
package/dist/cjs/worker.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-ignore
|
|
2
1
|
"use strict";
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
3
|
value: true
|
|
@@ -10,7 +9,7 @@ Object.defineProperty(exports, "default", {
|
|
|
10
9
|
}
|
|
11
10
|
});
|
|
12
11
|
var _crossspawncb = /*#__PURE__*/ _interop_require_wildcard(require("cross-spawn-cb"));
|
|
13
|
-
var
|
|
12
|
+
var _crypto = /*#__PURE__*/ _interop_require_default(require("crypto"));
|
|
14
13
|
var _onone = /*#__PURE__*/ _interop_require_default(require("on-one"));
|
|
15
14
|
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
|
|
16
15
|
var _createApp = /*#__PURE__*/ _interop_require_default(require("./createApp.js"));
|
|
@@ -151,7 +150,7 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
151
150
|
]);
|
|
152
151
|
if (stdio === 'inherit') {
|
|
153
152
|
terminal.retain(function(store) {
|
|
154
|
-
var id =
|
|
153
|
+
var id = _crypto.default.randomUUID();
|
|
155
154
|
store.getState().addProcess(_object_spread({
|
|
156
155
|
id: id,
|
|
157
156
|
title: [
|
package/dist/cjs/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["
|
|
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.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 = crypto.randomUUID();\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","crypto","randomUUID","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,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from 'ink';
|
|
2
3
|
import { Profiler, useContext } from 'react';
|
|
3
4
|
import { useStore } from 'zustand';
|
|
4
5
|
import StoreContext from '../contexts/Store.js';
|
|
5
|
-
import { Box } from '../ink.js';
|
|
6
6
|
import ChildProcess from './ChildProcess.js';
|
|
7
7
|
export default function App() {
|
|
8
8
|
const store = useContext(StoreContext);
|
|
@@ -1 +1 @@
|
|
|
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
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { Box } from 'ink';\nimport { Profiler, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.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":["Box","Profiler","useContext","useStore","StoreContext","ChildProcess","App","store","appState","id","onRender","_id","phase","flexDirection","processes","map","item"],"mappings":";AAAA,SAASA,GAAG,QAAQ,MAAM;AAC1B,SAASC,QAAQ,EAAEC,UAAU,QAAQ,QAAQ;AAC7C,SAASC,QAAQ,QAAQ,UAAU;AACnC,OAAOC,kBAAkB,uBAAuB;AAEhD,OAAOC,kBAAkB,oBAAoB;AAE7C,eAAe,SAASC;IACtB,MAAMC,QAAQL,WAAkBE;IAChC,MAAMI,WAAWL,SAASI;IAE1B,qBACE,KAACN;QACCQ,IAAG;QACHC,UAAU,CAACC,KAAKC;YACd,IAAIA,UAAU,UAAUL,kBAAAA,4BAAAA,MAAOG,QAAQ;QACzC;kBAEA,cAAA,KAACV;YAAIa,eAAc;sBAChBL,SAASM,SAAS,CAACC,GAAG,CAAC,CAACC,qBACvB,KAACX;oBAA2BW,MAAMA;mBAAfA,KAAKP,EAAE;;;AAKpC"}
|
|
@@ -28,8 +28,8 @@ function _object_spread(target) {
|
|
|
28
28
|
}
|
|
29
29
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
30
30
|
import c from 'ansi-colors';
|
|
31
|
+
import { Box, Text } from 'ink';
|
|
31
32
|
import { memo, useMemo } from 'react';
|
|
32
|
-
import { Box, Text } from '../ink.js';
|
|
33
33
|
import ansiRegex from '../lib/ansiRegex.js';
|
|
34
34
|
import figures from '../lib/figures.js';
|
|
35
35
|
import { LineType } from '../types.js';
|