spawn-term 0.1.5 → 0.1.7
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/ChildProcess.cjs +82 -20
- package/dist/cjs/components/ChildProcess.cjs.map +1 -1
- package/dist/cjs/index.cjs.cjs +4 -0
- package/dist/cjs/index.cjs.cjs.map +1 -1
- package/dist/cjs/index.esm.cjs +4 -0
- package/dist/cjs/index.esm.cjs.map +1 -1
- package/dist/cjs/lib/formatArguments.cjs +16 -0
- package/dist/cjs/lib/formatArguments.cjs.map +1 -0
- package/dist/cjs/types.cjs.map +1 -1
- package/dist/cjs/worker.cjs +10 -6
- package/dist/cjs/worker.cjs.map +1 -1
- package/dist/esm/components/ChildProcess.mjs +69 -14
- package/dist/esm/components/ChildProcess.mjs.map +1 -1
- package/dist/esm/index.cjs.mjs +1 -0
- package/dist/esm/index.cjs.mjs.map +1 -1
- package/dist/esm/index.esm.mjs +1 -0
- package/dist/esm/index.esm.mjs.map +1 -1
- package/dist/esm/lib/formatArguments.mjs +1 -0
- package/dist/esm/lib/formatArguments.mjs.map +1 -0
- package/dist/esm/types.mjs.map +1 -1
- package/dist/esm/worker.mjs +10 -6
- package/dist/esm/worker.mjs.map +1 -1
- package/dist/types/index.cjs.d.ts +1 -0
- package/dist/types/index.esm.d.ts +1 -0
- package/dist/types/lib/formatArguments.d.ts +2 -0
- package/dist/types/types.d.ts +3 -1
- package/dist/types/worker.d.ts +1 -1
- package/package.json +1 -1
|
@@ -94,28 +94,23 @@ var POINTERS = {
|
|
|
94
94
|
color: "yellow"
|
|
95
95
|
}, _figures.default.pointer)
|
|
96
96
|
};
|
|
97
|
-
function
|
|
98
|
-
var
|
|
99
|
-
|
|
100
|
-
var appState = (0, _zustand.useStore)(store);
|
|
101
|
-
var item = appState.processes.find(function(x) {
|
|
102
|
-
return x.id === id;
|
|
103
|
-
});
|
|
104
|
-
var title = item.title, state = item.state, lines = item.lines, isExpanded = item.isExpanded;
|
|
105
|
-
var icon = isExpanded ? POINTERS[state] || POINTERS.default : ICONS[state];
|
|
106
|
-
var output = state === 'running' && lines.length ? lines[lines.length - 1] : undefined;
|
|
107
|
-
var errors = state !== 'running' ? lines.filter(function(line) {
|
|
108
|
-
return line.type === _types.LineType.stderr;
|
|
109
|
-
}) : [];
|
|
110
|
-
return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
111
|
-
flexDirection: "column"
|
|
112
|
-
}, /*#__PURE__*/ _react.default.createElement(_ink.Box, null, /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
97
|
+
function Header(param) {
|
|
98
|
+
var icon = param.icon, title = param.title;
|
|
99
|
+
return /*#__PURE__*/ _react.default.createElement(_ink.Box, null, /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
113
100
|
marginRight: 1
|
|
114
|
-
}, /*#__PURE__*/ _react.default.createElement(_ink.Text, null, icon)), /*#__PURE__*/ _react.default.createElement(_ink.Text, null, title))
|
|
101
|
+
}, /*#__PURE__*/ _react.default.createElement(_ink.Text, null, icon)), /*#__PURE__*/ _react.default.createElement(_ink.Text, null, title));
|
|
102
|
+
}
|
|
103
|
+
function Output(param) {
|
|
104
|
+
var output = param.output;
|
|
105
|
+
return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
115
106
|
marginLeft: 2
|
|
116
107
|
}, /*#__PURE__*/ _react.default.createElement(_ink.Text, {
|
|
117
108
|
color: "gray"
|
|
118
|
-
}, "".concat(_figures.default.arrowRight, " ").concat(output.text)))
|
|
109
|
+
}, "".concat(_figures.default.arrowRight, " ").concat(output.text)));
|
|
110
|
+
}
|
|
111
|
+
function Lines(param) {
|
|
112
|
+
var lines = param.lines;
|
|
113
|
+
return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
119
114
|
flexDirection: "column",
|
|
120
115
|
marginLeft: 2
|
|
121
116
|
}, lines.map(function(line, index) {
|
|
@@ -124,7 +119,74 @@ function ChildProcess(param) {
|
|
|
124
119
|
key: index,
|
|
125
120
|
flexDirection: "column",
|
|
126
121
|
height: 1
|
|
127
|
-
}, /*#__PURE__*/ _react.default.createElement(_ink.Text,
|
|
128
|
-
|
|
122
|
+
}, /*#__PURE__*/ _react.default.createElement(_ink.Text, {
|
|
123
|
+
color: line.type === _types.LineType.stderr ? 'red' : 'black'
|
|
124
|
+
}, line.text)));
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
function Content(param) {
|
|
128
|
+
var item = param.item;
|
|
129
|
+
var title = item.title, state = item.state, lines = item.lines, expanded = item.expanded;
|
|
130
|
+
var icon = ICONS[state];
|
|
131
|
+
var output = lines.length ? lines[lines.length - 1] : undefined;
|
|
132
|
+
var errors = lines.filter(function(line) {
|
|
133
|
+
return line.type === _types.LineType.stderr;
|
|
134
|
+
});
|
|
135
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(Header, {
|
|
136
|
+
icon: icon,
|
|
137
|
+
title: title
|
|
138
|
+
}), state === 'running' && output && /*#__PURE__*/ _react.default.createElement(Output, {
|
|
139
|
+
output: output
|
|
140
|
+
}), expanded && /*#__PURE__*/ _react.default.createElement(Lines, {
|
|
141
|
+
lines: lines
|
|
142
|
+
}), !expanded && errors.length > 0 && /*#__PURE__*/ _react.default.createElement(Lines, {
|
|
143
|
+
lines: errors
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
function Group(param) {
|
|
147
|
+
var item = param.item;
|
|
148
|
+
var title = item.title, state = item.state, lines = item.lines, group = item.group, expanded = item.expanded;
|
|
149
|
+
var icon = ICONS[state];
|
|
150
|
+
var pointer = POINTERS[state] || POINTERS.default;
|
|
151
|
+
var errors = lines.filter(function(line) {
|
|
152
|
+
return line.type === _types.LineType.stderr;
|
|
153
|
+
});
|
|
154
|
+
if (state === 'running') {
|
|
155
|
+
return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
156
|
+
flexDirection: "column"
|
|
157
|
+
}, /*#__PURE__*/ _react.default.createElement(Header, {
|
|
158
|
+
icon: pointer,
|
|
159
|
+
title: group
|
|
160
|
+
}), /*#__PURE__*/ _react.default.createElement(Content, {
|
|
161
|
+
item: item
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
165
|
+
flexDirection: "column"
|
|
166
|
+
}, /*#__PURE__*/ _react.default.createElement(Header, {
|
|
167
|
+
icon: icon,
|
|
168
|
+
title: "".concat(group, ": ").concat(title)
|
|
169
|
+
}), expanded && /*#__PURE__*/ _react.default.createElement(Lines, {
|
|
170
|
+
lines: lines
|
|
171
|
+
}), !expanded && errors.length > 0 && /*#__PURE__*/ _react.default.createElement(Lines, {
|
|
172
|
+
lines: errors
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
function ChildProcess(param) {
|
|
176
|
+
var id = param.id;
|
|
177
|
+
var store = (0, _react.useContext)(_Store.default);
|
|
178
|
+
var appState = (0, _zustand.useStore)(store);
|
|
179
|
+
var item = appState.processes.find(function(x) {
|
|
180
|
+
return x.id === id;
|
|
181
|
+
});
|
|
182
|
+
var group = item.group;
|
|
183
|
+
if (group) return /*#__PURE__*/ _react.default.createElement(Group, {
|
|
184
|
+
item: item
|
|
185
|
+
});
|
|
186
|
+
return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
187
|
+
flexDirection: "column"
|
|
188
|
+
}, /*#__PURE__*/ _react.default.createElement(Content, {
|
|
189
|
+
item: item
|
|
190
|
+
}));
|
|
129
191
|
}
|
|
130
192
|
/* 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/components/ChildProcess.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store';\nimport { Box, Text } from '../ink.mjs';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { AppState } from '../types';\nimport { LineType } from '../types';\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 error: <Text color=\"red\">{figures.cross}</Text>,\n success: <Text color=\"green\">{figures.tick}</Text>,\n running: <Spinner {...spinner} />,\n};\n\nconst POINTERS = {\n error: <Text color=\"red\">{figures.pointer}</Text>,\n default: <Text color=\"yellow\">{figures.pointer}</Text>,\n};\n\ntype ChildProcessProps = {\n id: string;\n};\n\
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store';\nimport { Box, Text } from '../ink.mjs';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { AppState } from '../types';\nimport { LineType } from '../types';\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 error: <Text color=\"red\">{figures.cross}</Text>,\n success: <Text color=\"green\">{figures.tick}</Text>,\n running: <Spinner {...spinner} />,\n};\n\nconst POINTERS = {\n error: <Text color=\"red\">{figures.pointer}</Text>,\n default: <Text color=\"yellow\">{figures.pointer}</Text>,\n};\n\ntype ChildProcessProps = {\n id: string;\n};\n\nfunction Header({ icon, title }) {\n return (\n <Box>\n <Box marginRight={1}>\n <Text>{icon}</Text>\n </Box>\n <Text>{title}</Text>\n </Box>\n );\n}\n\nfunction Output({ output }) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{`${figures.arrowRight} ${output.text}`}</Text>\n </Box>\n );\n}\n\nfunction Lines({ lines }) {\n return (\n <Box flexDirection=\"column\" marginLeft={2}>\n {lines.map((line, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: <explanation>\n <Box key={index} flexDirection=\"column\" height={1}>\n <Text color={line.type === LineType.stderr ? 'red' : 'black'}>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n}\n\nfunction Content({ item }) {\n const { title, state, lines, expanded } = item;\n const icon = ICONS[state];\n const output = lines.length ? lines[lines.length - 1] : undefined;\n const errors = lines.filter((line) => line.type === LineType.stderr);\n\n return (\n <React.Fragment>\n <Header icon={icon} title={title} />\n {state === 'running' && output && <Output output={output} />}\n {expanded && <Lines lines={lines} />}\n {!expanded && errors.length > 0 && <Lines lines={errors} />}\n </React.Fragment>\n );\n}\nfunction Group({ item }) {\n const { title, state, lines, group, expanded } = item;\n const icon = ICONS[state];\n const pointer = POINTERS[state] || POINTERS.default;\n const errors = lines.filter((line) => line.type === LineType.stderr);\n\n if (state === 'running') {\n return (\n <Box flexDirection=\"column\">\n <Header icon={pointer} title={group} />\n <Content item={item} />\n </Box>\n );\n }\n\n return (\n <Box flexDirection=\"column\">\n <Header icon={icon} title={`${group}: ${title}`} />\n {expanded && <Lines lines={lines} />}\n {!expanded && errors.length > 0 && <Lines lines={errors} />}\n </Box>\n );\n}\n\nexport default function ChildProcess({ id }: ChildProcessProps) {\n const store = useContext(StoreContext);\n const appState = useStore(store) as AppState;\n const item = appState.processes.find((x) => x.id === id);\n const { group } = item;\n\n if (group) return <Group item={item} />;\n\n return (\n <Box flexDirection=\"column\">\n <Content item={item} />\n </Box>\n );\n}\n"],"names":["ChildProcess","spinner","interval","frames","ICONS","error","Text","color","figures","cross","success","tick","running","Spinner","POINTERS","pointer","default","Header","icon","title","Box","marginRight","Output","output","marginLeft","arrowRight","text","Lines","lines","flexDirection","map","line","index","key","height","type","LineType","stderr","Content","item","state","expanded","length","undefined","errors","filter","React","Fragment","Group","group","id","store","useContext","StoreContext","appState","useStore","processes","find","x"],"mappings":"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"}
|
package/dist/cjs/index.cjs.cjs
CHANGED
|
@@ -14,10 +14,14 @@ _export(exports, {
|
|
|
14
14
|
},
|
|
15
15
|
figures: function() {
|
|
16
16
|
return _figures.default;
|
|
17
|
+
},
|
|
18
|
+
formatArguments: function() {
|
|
19
|
+
return _formatArguments.default;
|
|
17
20
|
}
|
|
18
21
|
});
|
|
19
22
|
_export_star(require("./types.cjs"), exports);
|
|
20
23
|
var _figures = /*#__PURE__*/ _interop_require_default(require("./lib/figures.cjs"));
|
|
24
|
+
var _formatArguments = /*#__PURE__*/ _interop_require_default(require("./lib/formatArguments.cjs"));
|
|
21
25
|
function _export_star(from, to) {
|
|
22
26
|
Object.keys(from).forEach(function(k) {
|
|
23
27
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.cjs.ts"],"sourcesContent":["import type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n const worker = require('./worker.cjs');\n\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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 major > 10 ? spawnTerminal : undefined;\n"],"names":["figures","spawnTerminal","command","args","spawnOptions","options","callback","worker","require","Promise","resolve","reject","err","result","major","process","versions","node","split","undefined"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.cjs.ts"],"sourcesContent":["import type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n const worker = require('./worker.cjs');\n\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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":";;;;;;;;;;;IAoBA,OAAsD;eAAtD;;IAFoBA,OAAO;eAAPA,gBAAO;;IACPC,eAAe;eAAfA,wBAAe;;;qBAFrB;8DACqB;sEACQ;;;;;;;;;;;;;;;;;;;AAjB3C,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAyC,EAAEC,QAAwB;IACrJ,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.cjs
CHANGED
|
@@ -14,11 +14,15 @@ _export(exports, {
|
|
|
14
14
|
},
|
|
15
15
|
figures: function() {
|
|
16
16
|
return _figures.default;
|
|
17
|
+
},
|
|
18
|
+
formatArguments: function() {
|
|
19
|
+
return _formatArguments.default;
|
|
17
20
|
}
|
|
18
21
|
});
|
|
19
22
|
var _worker = /*#__PURE__*/ _interop_require_default(require("./worker.cjs"));
|
|
20
23
|
_export_star(require("./types.cjs"), exports);
|
|
21
24
|
var _figures = /*#__PURE__*/ _interop_require_default(require("./lib/figures.cjs"));
|
|
25
|
+
var _formatArguments = /*#__PURE__*/ _interop_require_default(require("./lib/formatArguments.cjs"));
|
|
22
26
|
function _export_star(from, to) {
|
|
23
27
|
Object.keys(from).forEach(function(k) {
|
|
24
28
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.esm.ts"],"sourcesContent":["import worker from './worker';\n\nimport type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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 major > 10 ? spawnTerminal : undefined;\n"],"names":["figures","spawnTerminal","command","args","spawnOptions","options","callback","worker","Promise","resolve","reject","err","result","major","process","versions","node","split","undefined"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.esm.ts"],"sourcesContent":["import worker from './worker';\n\nimport type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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","Promise","resolve","reject","err","result","major","process","versions","node","split","undefined"],"mappings":";;;;;;;;;;;IAoBA,OAAsD;eAAtD;;IAFoBA,OAAO;eAAPA,gBAAO;;IACPC,eAAe;eAAfA,wBAAe;;;6DAnBhB;qBAiBL;8DACqB;sEACQ;;;;;;;;;;;;;;;;;;;AAf3C,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAyC,EAAEC,QAAwB;IACrJ,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;eAAWH,IAAAA,eAAM,EAACL,SAASC,MAAMC,cAAcC,SAAS,SAACM,KAAKC;mBAAYD,MAAMD,OAAOC,OAAOF,QAAQG;;;AACrI;AAEA,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;IAKlD,WAAeJ,QAAQ,KAAKZ,gBAAgBiB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _default = function(args) {
|
|
12
|
+
return args.map(function(text) {
|
|
13
|
+
return text.indexOf(' ') >= 0 ? '"'.concat(text, '"') : text;
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
/* 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; }
|
|
@@ -0,0 +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;WAASA,KAAKC,GAAG,CAAC,SAACC;eAAUA,KAAKC,OAAO,CAAC,QAAQ,IAAI,AAAC,IAAQ,OAALD,MAAK,OAAKA"}
|
package/dist/cjs/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["// @ts-ignore\nexport type { SpawnOptions, SpawnCallback, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n};\n\nexport enum LineType {\n stdout = 1,\n stderr = 2,\n}\nexport type Line = {\n type: LineType;\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n title: string;\n state: State;\n lines: Line[];\n
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["// @ts-ignore\nexport type { SpawnOptions, SpawnCallback, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n expanded?: string;\n};\n\nexport enum LineType {\n stdout = 1,\n stderr = 2,\n}\nexport type Line = {\n type: LineType;\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n title: string;\n state: State;\n lines: Line[];\n group?: string;\n expanded?: string;\n};\n\nexport interface AppState {\n processes: ChildProcess[];\n addProcess: (process: ChildProcess) => void;\n updateProcess: (process: ChildProcess) => void;\n}\n"],"names":["LineType"],"mappings":"AAAA,aAAa;;;;;+BAQDA;;;eAAAA;;;AAAL,IAAA,AAAKA,kCAAAA;;;WAAAA"}
|
package/dist/cjs/worker.cjs
CHANGED
|
@@ -16,6 +16,7 @@ var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
|
|
|
16
16
|
var _createApp = /*#__PURE__*/ _interop_require_default(require("./createApp.cjs"));
|
|
17
17
|
var _addLines = /*#__PURE__*/ _interop_require_default(require("./lib/addLines.cjs"));
|
|
18
18
|
var _concatWritable = /*#__PURE__*/ _interop_require_default(require("./lib/concatWritable.cjs"));
|
|
19
|
+
var _formatArguments = /*#__PURE__*/ _interop_require_default(require("./lib/formatArguments.cjs"));
|
|
19
20
|
var _types = require("./types.cjs");
|
|
20
21
|
function _define_property(obj, key, value) {
|
|
21
22
|
if (key in obj) {
|
|
@@ -143,21 +144,21 @@ function _object_without_properties_loose(source, excluded) {
|
|
|
143
144
|
return target;
|
|
144
145
|
}
|
|
145
146
|
var terminal = (0, _createApp.default)();
|
|
146
|
-
function spawnTerminal(command, args, spawnOptions,
|
|
147
|
+
function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
147
148
|
var encoding = spawnOptions.encoding, stdio = spawnOptions.stdio, csOptions = _object_without_properties(spawnOptions, [
|
|
148
149
|
"encoding",
|
|
149
150
|
"stdio"
|
|
150
151
|
]);
|
|
151
152
|
terminal.retain(function(store) {
|
|
152
153
|
var id = (0, _liluuid.default)();
|
|
153
|
-
store.getState().addProcess({
|
|
154
|
+
store.getState().addProcess(_object_spread({
|
|
154
155
|
id: id,
|
|
155
156
|
title: [
|
|
156
157
|
command
|
|
157
|
-
].concat(args).join(' '),
|
|
158
|
+
].concat((0, _formatArguments.default)(args)).join(' '),
|
|
158
159
|
state: 'running',
|
|
159
160
|
lines: []
|
|
160
|
-
});
|
|
161
|
+
}, options));
|
|
161
162
|
var cp = (0, _crossspawncb.crossSpawn)(command, args, csOptions);
|
|
162
163
|
var outputs = {
|
|
163
164
|
stdout: null,
|
|
@@ -246,8 +247,11 @@ function spawnTerminal(command, args, spawnOptions, _options, callback) {
|
|
|
246
247
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
|
247
248
|
state: err ? 'error' : 'success'
|
|
248
249
|
}));
|
|
249
|
-
|
|
250
|
-
|
|
250
|
+
// let rendering complete
|
|
251
|
+
setTimeout(function() {
|
|
252
|
+
terminal.release();
|
|
253
|
+
err ? callback(err) : callback(null, res);
|
|
254
|
+
});
|
|
251
255
|
});
|
|
252
256
|
});
|
|
253
257
|
}
|
package/dist/cjs/worker.cjs.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';\nimport addLines from './lib/addLines';\nimport concatWritable from './lib/concatWritable';\n\nimport type { SpawnOptions, TerminalOptions } from './types';\nimport { LineType } from './types';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions,
|
|
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';\nimport addLines from './lib/addLines';\nimport concatWritable from './lib/concatWritable';\nimport formatArguments from './lib/formatArguments';\n\nimport type { SpawnOptions, TerminalOptions } from './types';\nimport { LineType } from './types';\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 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 if (cp.stdout && process.stdout.getMaxListeners) {\n process.stdout.setMaxListeners(process.stdout.getMaxListeners() + 1);\n process.stderr.setMaxListeners(process.stderr.getMaxListeners() + 1);\n }\n\n const queue = new Queue();\n if (cp.stdout) {\n if (stdio === 'inherit') {\n outputs.stdout = addLines((texts) => {\n const item = store.getState().processes.find((x) => x.id === id);\n const lines = item.lines.concat(texts.map((text) => ({ type: LineType.stdout, text })));\n store.getState().updateProcess({ ...item, lines });\n });\n } else {\n outputs.stdout = concatWritable((output) => {\n outputs.stdout.output = output.toString(encoding || 'utf8');\n });\n }\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n if (stdio === 'inherit') {\n outputs.stderr = addLines((texts) => {\n const item = store.getState().processes.find((x) => x.id === id);\n const lines = item.lines.concat(texts.map((text) => ({ type: LineType.stderr, text })));\n store.getState().updateProcess({ ...item, lines });\n });\n } else {\n outputs.stderr = concatWritable((output) => {\n outputs.stderr.output = output.toString(encoding || 'utf8');\n });\n }\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err) => {\n if (cp.stdout && process.stdout.getMaxListeners) {\n process.stdout.setMaxListeners(process.stdout.getMaxListeners() - 1);\n process.stderr.setMaxListeners(process.stderr.getMaxListeners() - 1);\n }\n\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 // let rendering complete\n setTimeout(() => {\n terminal.release();\n err ? callback(err) : callback(null, res);\n });\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","process","getMaxListeners","setMaxListeners","queue","Queue","addLines","texts","item","processes","find","x","map","text","type","LineType","updateProcess","concatWritable","output","toString","defer","oo","bind","pipe","spawn","worker","await","err","res","setTimeout","release"],"mappings":"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"}
|
|
@@ -38,23 +38,20 @@ const POINTERS = {
|
|
|
38
38
|
color: "yellow"
|
|
39
39
|
}, figures.pointer)
|
|
40
40
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const appState = useStore(store);
|
|
44
|
-
const item = appState.processes.find((x)=>x.id === id);
|
|
45
|
-
const { title, state, lines, isExpanded } = item;
|
|
46
|
-
const icon = isExpanded ? POINTERS[state] || POINTERS.default : ICONS[state];
|
|
47
|
-
const output = state === 'running' && lines.length ? lines[lines.length - 1] : undefined;
|
|
48
|
-
const errors = state !== 'running' ? lines.filter((line)=>line.type === LineType.stderr) : [];
|
|
49
|
-
return /*#__PURE__*/ React.createElement(Box, {
|
|
50
|
-
flexDirection: "column"
|
|
51
|
-
}, /*#__PURE__*/ React.createElement(Box, null, /*#__PURE__*/ React.createElement(Box, {
|
|
41
|
+
function Header({ icon, title }) {
|
|
42
|
+
return /*#__PURE__*/ React.createElement(Box, null, /*#__PURE__*/ React.createElement(Box, {
|
|
52
43
|
marginRight: 1
|
|
53
|
-
}, /*#__PURE__*/ React.createElement(Text, null, icon)), /*#__PURE__*/ React.createElement(Text, null, title))
|
|
44
|
+
}, /*#__PURE__*/ React.createElement(Text, null, icon)), /*#__PURE__*/ React.createElement(Text, null, title));
|
|
45
|
+
}
|
|
46
|
+
function Output({ output }) {
|
|
47
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
54
48
|
marginLeft: 2
|
|
55
49
|
}, /*#__PURE__*/ React.createElement(Text, {
|
|
56
50
|
color: "gray"
|
|
57
|
-
}, `${figures.arrowRight} ${output.text}`))
|
|
51
|
+
}, `${figures.arrowRight} ${output.text}`));
|
|
52
|
+
}
|
|
53
|
+
function Lines({ lines }) {
|
|
54
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
58
55
|
flexDirection: "column",
|
|
59
56
|
marginLeft: 2
|
|
60
57
|
}, lines.map((line, index)=>// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
|
|
@@ -62,5 +59,63 @@ export default function ChildProcess({ id }) {
|
|
|
62
59
|
key: index,
|
|
63
60
|
flexDirection: "column",
|
|
64
61
|
height: 1
|
|
65
|
-
}, /*#__PURE__*/ React.createElement(Text,
|
|
62
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
63
|
+
color: line.type === LineType.stderr ? 'red' : 'black'
|
|
64
|
+
}, line.text))));
|
|
65
|
+
}
|
|
66
|
+
function Content({ item }) {
|
|
67
|
+
const { title, state, lines, expanded } = item;
|
|
68
|
+
const icon = ICONS[state];
|
|
69
|
+
const output = lines.length ? lines[lines.length - 1] : undefined;
|
|
70
|
+
const errors = lines.filter((line)=>line.type === LineType.stderr);
|
|
71
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Header, {
|
|
72
|
+
icon: icon,
|
|
73
|
+
title: title
|
|
74
|
+
}), state === 'running' && output && /*#__PURE__*/ React.createElement(Output, {
|
|
75
|
+
output: output
|
|
76
|
+
}), expanded && /*#__PURE__*/ React.createElement(Lines, {
|
|
77
|
+
lines: lines
|
|
78
|
+
}), !expanded && errors.length > 0 && /*#__PURE__*/ React.createElement(Lines, {
|
|
79
|
+
lines: errors
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
function Group({ item }) {
|
|
83
|
+
const { title, state, lines, group, expanded } = item;
|
|
84
|
+
const icon = ICONS[state];
|
|
85
|
+
const pointer = POINTERS[state] || POINTERS.default;
|
|
86
|
+
const errors = lines.filter((line)=>line.type === LineType.stderr);
|
|
87
|
+
if (state === 'running') {
|
|
88
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
89
|
+
flexDirection: "column"
|
|
90
|
+
}, /*#__PURE__*/ React.createElement(Header, {
|
|
91
|
+
icon: pointer,
|
|
92
|
+
title: group
|
|
93
|
+
}), /*#__PURE__*/ React.createElement(Content, {
|
|
94
|
+
item: item
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
98
|
+
flexDirection: "column"
|
|
99
|
+
}, /*#__PURE__*/ React.createElement(Header, {
|
|
100
|
+
icon: icon,
|
|
101
|
+
title: `${group}: ${title}`
|
|
102
|
+
}), expanded && /*#__PURE__*/ React.createElement(Lines, {
|
|
103
|
+
lines: lines
|
|
104
|
+
}), !expanded && errors.length > 0 && /*#__PURE__*/ React.createElement(Lines, {
|
|
105
|
+
lines: errors
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
export default function ChildProcess({ id }) {
|
|
109
|
+
const store = useContext(StoreContext);
|
|
110
|
+
const appState = useStore(store);
|
|
111
|
+
const item = appState.processes.find((x)=>x.id === id);
|
|
112
|
+
const { group } = item;
|
|
113
|
+
if (group) return /*#__PURE__*/ React.createElement(Group, {
|
|
114
|
+
item: item
|
|
115
|
+
});
|
|
116
|
+
return /*#__PURE__*/ React.createElement(Box, {
|
|
117
|
+
flexDirection: "column"
|
|
118
|
+
}, /*#__PURE__*/ React.createElement(Content, {
|
|
119
|
+
item: item
|
|
120
|
+
}));
|
|
66
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store';\nimport { Box, Text } from '../ink.mjs';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { AppState } from '../types';\nimport { LineType } from '../types';\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 error: <Text color=\"red\">{figures.cross}</Text>,\n success: <Text color=\"green\">{figures.tick}</Text>,\n running: <Spinner {...spinner} />,\n};\n\nconst POINTERS = {\n error: <Text color=\"red\">{figures.pointer}</Text>,\n default: <Text color=\"yellow\">{figures.pointer}</Text>,\n};\n\ntype ChildProcessProps = {\n id: string;\n};\n\
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store';\nimport { Box, Text } from '../ink.mjs';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { AppState } from '../types';\nimport { LineType } from '../types';\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 error: <Text color=\"red\">{figures.cross}</Text>,\n success: <Text color=\"green\">{figures.tick}</Text>,\n running: <Spinner {...spinner} />,\n};\n\nconst POINTERS = {\n error: <Text color=\"red\">{figures.pointer}</Text>,\n default: <Text color=\"yellow\">{figures.pointer}</Text>,\n};\n\ntype ChildProcessProps = {\n id: string;\n};\n\nfunction Header({ icon, title }) {\n return (\n <Box>\n <Box marginRight={1}>\n <Text>{icon}</Text>\n </Box>\n <Text>{title}</Text>\n </Box>\n );\n}\n\nfunction Output({ output }) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{`${figures.arrowRight} ${output.text}`}</Text>\n </Box>\n );\n}\n\nfunction Lines({ lines }) {\n return (\n <Box flexDirection=\"column\" marginLeft={2}>\n {lines.map((line, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: <explanation>\n <Box key={index} flexDirection=\"column\" height={1}>\n <Text color={line.type === LineType.stderr ? 'red' : 'black'}>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n}\n\nfunction Content({ item }) {\n const { title, state, lines, expanded } = item;\n const icon = ICONS[state];\n const output = lines.length ? lines[lines.length - 1] : undefined;\n const errors = lines.filter((line) => line.type === LineType.stderr);\n\n return (\n <React.Fragment>\n <Header icon={icon} title={title} />\n {state === 'running' && output && <Output output={output} />}\n {expanded && <Lines lines={lines} />}\n {!expanded && errors.length > 0 && <Lines lines={errors} />}\n </React.Fragment>\n );\n}\nfunction Group({ item }) {\n const { title, state, lines, group, expanded } = item;\n const icon = ICONS[state];\n const pointer = POINTERS[state] || POINTERS.default;\n const errors = lines.filter((line) => line.type === LineType.stderr);\n\n if (state === 'running') {\n return (\n <Box flexDirection=\"column\">\n <Header icon={pointer} title={group} />\n <Content item={item} />\n </Box>\n );\n }\n\n return (\n <Box flexDirection=\"column\">\n <Header icon={icon} title={`${group}: ${title}`} />\n {expanded && <Lines lines={lines} />}\n {!expanded && errors.length > 0 && <Lines lines={errors} />}\n </Box>\n );\n}\n\nexport default function ChildProcess({ id }: ChildProcessProps) {\n const store = useContext(StoreContext);\n const appState = useStore(store) as AppState;\n const item = appState.processes.find((x) => x.id === id);\n const { group } = item;\n\n if (group) return <Group item={item} />;\n\n return (\n <Box flexDirection=\"column\">\n <Content item={item} />\n </Box>\n );\n}\n"],"names":["React","useContext","useStore","StoreContext","Box","Text","figures","Spinner","LineType","spinner","interval","frames","ICONS","error","color","cross","success","tick","running","POINTERS","pointer","default","Header","icon","title","marginRight","Output","output","marginLeft","arrowRight","text","Lines","lines","flexDirection","map","line","index","key","height","type","stderr","Content","item","state","expanded","length","undefined","errors","filter","Fragment","Group","group","ChildProcess","id","store","appState","processes","find","x"],"mappings":"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"}
|
package/dist/esm/index.cjs.mjs
CHANGED
|
@@ -11,4 +11,5 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
11
11
|
const major = +process.versions.node.split('.')[0];
|
|
12
12
|
export * from './types.mjs';
|
|
13
13
|
export { default as figures } from './lib/figures.mjs';
|
|
14
|
+
export { default as formatArguments } from './lib/formatArguments.mjs';
|
|
14
15
|
export default major > 10 ? spawnTerminal : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.cjs.ts"],"sourcesContent":["import type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n const worker = require('./worker.cjs');\n\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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 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","undefined"],"mappings":"AAEA,SAASA,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAyC,EAAEC,QAAwB;IACrJ,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,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.cjs.ts"],"sourcesContent":["import type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n const worker = require('./worker.cjs');\n\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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,OAAyC,EAAEC,QAAwB;IACrJ,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.mjs
CHANGED
|
@@ -11,4 +11,5 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
11
11
|
const major = +process.versions.node.split('.')[0];
|
|
12
12
|
export * from './types.mjs';
|
|
13
13
|
export { default as figures } from './lib/figures.mjs';
|
|
14
|
+
export { default as formatArguments } from './lib/formatArguments.mjs';
|
|
14
15
|
export default major > 10 ? spawnTerminal : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.esm.ts"],"sourcesContent":["import worker from './worker';\n\nimport type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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 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","undefined"],"mappings":"AAAA,OAAOA,YAAY,WAAW;AAI9B,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAyC,EAAEC,QAAwB;IACrJ,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,SAAWT,OAAOE,SAASC,MAAMC,cAAcC,SAAS,CAACK,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,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index.esm.ts"],"sourcesContent":["import worker from './worker';\n\nimport type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback) {\n if (typeof options === 'function') {\n callback = options as SpawnCallback;\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":["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,WAAW;AAI9B,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAyC,EAAEC,QAAwB;IACrJ,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,SAAWT,OAAOE,SAASC,MAAMC,cAAcC,SAAS,CAACK,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,KAAKX,gBAAgBmB,UAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default ((args)=>args.map((text)=>text.indexOf(' ') >= 0 ? `"${text}"` : text));
|
|
@@ -0,0 +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,OAASA,KAAKC,GAAG,CAAC,CAACC,OAAUA,KAAKC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAED,KAAK,CAAC,CAAC,GAAGA,KAAK,EAAE"}
|
package/dist/esm/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["// @ts-ignore\nexport type { SpawnOptions, SpawnCallback, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n};\n\nexport enum LineType {\n stdout = 1,\n stderr = 2,\n}\nexport type Line = {\n type: LineType;\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n title: string;\n state: State;\n lines: Line[];\n
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["// @ts-ignore\nexport type { SpawnOptions, SpawnCallback, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n expanded?: string;\n};\n\nexport enum LineType {\n stdout = 1,\n stderr = 2,\n}\nexport type Line = {\n type: LineType;\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n title: string;\n state: State;\n lines: Line[];\n group?: string;\n expanded?: string;\n};\n\nexport interface AppState {\n processes: ChildProcess[];\n addProcess: (process: ChildProcess) => void;\n updateProcess: (process: ChildProcess) => void;\n}\n"],"names":["LineType"],"mappings":"AAAA,aAAa;AAQb,OAAO,IAAA,AAAKA,kCAAAA;;;WAAAA;MAGX"}
|
package/dist/esm/worker.mjs
CHANGED
|
@@ -85,23 +85,24 @@ import Queue from 'queue-cb';
|
|
|
85
85
|
import createApp from './createApp.mjs';
|
|
86
86
|
import addLines from './lib/addLines.mjs';
|
|
87
87
|
import concatWritable from './lib/concatWritable.mjs';
|
|
88
|
+
import formatArguments from './lib/formatArguments.mjs';
|
|
88
89
|
import { LineType } from './types.mjs';
|
|
89
90
|
const terminal = createApp();
|
|
90
|
-
export default function spawnTerminal(command, args, spawnOptions,
|
|
91
|
+
export default function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
91
92
|
const { encoding, stdio } = spawnOptions, csOptions = _object_without_properties(spawnOptions, [
|
|
92
93
|
"encoding",
|
|
93
94
|
"stdio"
|
|
94
95
|
]);
|
|
95
96
|
terminal.retain((store)=>{
|
|
96
97
|
const id = uuid();
|
|
97
|
-
store.getState().addProcess({
|
|
98
|
+
store.getState().addProcess(_object_spread({
|
|
98
99
|
id,
|
|
99
100
|
title: [
|
|
100
101
|
command
|
|
101
|
-
].concat(args).join(' '),
|
|
102
|
+
].concat(formatArguments(args)).join(' '),
|
|
102
103
|
state: 'running',
|
|
103
104
|
lines: []
|
|
104
|
-
});
|
|
105
|
+
}, options));
|
|
105
106
|
const cp = crossSpawn(command, args, csOptions);
|
|
106
107
|
const outputs = {
|
|
107
108
|
stdout: null,
|
|
@@ -180,8 +181,11 @@ export default function spawnTerminal(command, args, spawnOptions, _options, cal
|
|
|
180
181
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
|
181
182
|
state: err ? 'error' : 'success'
|
|
182
183
|
}));
|
|
183
|
-
|
|
184
|
-
|
|
184
|
+
// let rendering complete
|
|
185
|
+
setTimeout(()=>{
|
|
186
|
+
terminal.release();
|
|
187
|
+
err ? callback(err) : callback(null, res);
|
|
188
|
+
});
|
|
185
189
|
});
|
|
186
190
|
});
|
|
187
191
|
}
|
package/dist/esm/worker.mjs.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';\nimport addLines from './lib/addLines';\nimport concatWritable from './lib/concatWritable';\n\nimport type { SpawnOptions, TerminalOptions } from './types';\nimport { LineType } from './types';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions,
|
|
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';\nimport addLines from './lib/addLines';\nimport concatWritable from './lib/concatWritable';\nimport formatArguments from './lib/formatArguments';\n\nimport type { SpawnOptions, TerminalOptions } from './types';\nimport { LineType } from './types';\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 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 if (cp.stdout && process.stdout.getMaxListeners) {\n process.stdout.setMaxListeners(process.stdout.getMaxListeners() + 1);\n process.stderr.setMaxListeners(process.stderr.getMaxListeners() + 1);\n }\n\n const queue = new Queue();\n if (cp.stdout) {\n if (stdio === 'inherit') {\n outputs.stdout = addLines((texts) => {\n const item = store.getState().processes.find((x) => x.id === id);\n const lines = item.lines.concat(texts.map((text) => ({ type: LineType.stdout, text })));\n store.getState().updateProcess({ ...item, lines });\n });\n } else {\n outputs.stdout = concatWritable((output) => {\n outputs.stdout.output = output.toString(encoding || 'utf8');\n });\n }\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n if (stdio === 'inherit') {\n outputs.stderr = addLines((texts) => {\n const item = store.getState().processes.find((x) => x.id === id);\n const lines = item.lines.concat(texts.map((text) => ({ type: LineType.stderr, text })));\n store.getState().updateProcess({ ...item, lines });\n });\n } else {\n outputs.stderr = concatWritable((output) => {\n outputs.stderr.output = output.toString(encoding || 'utf8');\n });\n }\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err) => {\n if (cp.stdout && process.stdout.getMaxListeners) {\n process.stdout.setMaxListeners(process.stdout.getMaxListeners() - 1);\n process.stderr.setMaxListeners(process.stderr.getMaxListeners() - 1);\n }\n\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 // let rendering complete\n setTimeout(() => {\n terminal.release();\n err ? callback(err) : callback(null, res);\n });\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","process","getMaxListeners","setMaxListeners","queue","texts","item","processes","find","x","map","text","type","updateProcess","output","toString","defer","bind","pipe","worker","await","err","res","setTimeout","release"],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ import type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';
|
|
|
2
2
|
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback): any;
|
|
3
3
|
export * from './types';
|
|
4
4
|
export { default as figures } from './lib/figures';
|
|
5
|
+
export { default as formatArguments } from './lib/formatArguments';
|
|
5
6
|
declare const _default: typeof spawnTerminal;
|
|
6
7
|
export default _default;
|
|
@@ -2,5 +2,6 @@ import type { SpawnCallback, SpawnOptions, TerminalOptions } from './types';
|
|
|
2
2
|
declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | SpawnCallback, callback?: SpawnCallback): void | Promise<unknown>;
|
|
3
3
|
export * from './types';
|
|
4
4
|
export { default as figures } from './lib/figures';
|
|
5
|
+
export { default as formatArguments } from './lib/formatArguments';
|
|
5
6
|
declare const _default: typeof spawnTerminal;
|
|
6
7
|
export default _default;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type { SpawnOptions, SpawnCallback, SpawnResult } from 'cross-spawn-cb';
|
|
2
2
|
export type TerminalOptions = {
|
|
3
3
|
group?: string;
|
|
4
|
+
expanded?: string;
|
|
4
5
|
};
|
|
5
6
|
export declare enum LineType {
|
|
6
7
|
stdout = 1,
|
|
@@ -16,7 +17,8 @@ export type ChildProcess = {
|
|
|
16
17
|
title: string;
|
|
17
18
|
state: State;
|
|
18
19
|
lines: Line[];
|
|
19
|
-
|
|
20
|
+
group?: string;
|
|
21
|
+
expanded?: string;
|
|
20
22
|
};
|
|
21
23
|
export interface AppState {
|
|
22
24
|
processes: ChildProcess[];
|
package/dist/types/worker.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { SpawnOptions, TerminalOptions } from './types';
|
|
2
|
-
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions,
|
|
2
|
+
export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: any): void;
|