spawn-term 0.1.21 → 0.1.22
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/lib/ansiRegex.cjs +22 -0
- package/dist/cjs/lib/ansiRegex.cjs.map +1 -0
- package/dist/cjs/worker.cjs +4 -2
- package/dist/cjs/worker.cjs.map +1 -1
- package/dist/esm/lib/ansiRegex.mjs +10 -0
- package/dist/esm/lib/ansiRegex.mjs.map +1 -0
- package/dist/esm/worker.mjs +4 -2
- package/dist/esm/worker.mjs.map +1 -1
- package/dist/types/lib/ansiRegex.d.ts +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// https://github.com/chalk/ansi-regex/blob/main/index.js
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return ansiRegex;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
function ansiRegex() {
|
|
13
|
+
var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_onlyFirst = _ref.onlyFirst, onlyFirst = _ref_onlyFirst === void 0 ? false : _ref_onlyFirst;
|
|
14
|
+
// Valid string terminator sequences are BEL, ESC\, and 0x9c
|
|
15
|
+
var ST = '(?:\\u0007|\\u001B\\u005C|\\u009C)';
|
|
16
|
+
var pattern = [
|
|
17
|
+
"[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?".concat(ST, ")"),
|
|
18
|
+
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))'
|
|
19
|
+
].join('|');
|
|
20
|
+
return new RegExp(pattern, onlyFirst ? undefined : 'g');
|
|
21
|
+
}
|
|
22
|
+
/* 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/ansiRegex.ts"],"sourcesContent":["// https://github.com/chalk/ansi-regex/blob/main/index.js\nexport default function ansiRegex({ onlyFirst = false } = {}) {\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c\n const ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n const pattern = [`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`, '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))'].join('|');\n\n return new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n"],"names":["ansiRegex","onlyFirst","ST","pattern","join","RegExp","undefined"],"mappings":"AAAA,yDAAyD;;;;;+BACzD;;;eAAwBA;;;AAAT,SAASA;QAAU,OAAA,iEAAwB,CAAC,oBAAzB,KAAEC,WAAAA,wCAAY;IAC9C,4DAA4D;IAC5D,IAAMC,KAAK;IACX,IAAMC,UAAU;QAAE,uHAAyH,OAAHD,IAAG;QAAI;KAA2D,CAACE,IAAI,CAAC;IAEhN,OAAO,IAAIC,OAAOF,SAASF,YAAYK,YAAY;AACrD"}
|
package/dist/cjs/worker.cjs
CHANGED
|
@@ -15,6 +15,7 @@ var _onone = /*#__PURE__*/ _interop_require_default(require("on-one"));
|
|
|
15
15
|
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
|
+
var _ansiRegex = /*#__PURE__*/ _interop_require_default(require("./lib/ansiRegex.cjs"));
|
|
18
19
|
var _concatWritable = /*#__PURE__*/ _interop_require_default(require("./lib/concatWritable.cjs"));
|
|
19
20
|
var _formatArguments = /*#__PURE__*/ _interop_require_default(require("./lib/formatArguments.cjs"));
|
|
20
21
|
var _types = require("./types.cjs");
|
|
@@ -143,6 +144,7 @@ function _object_without_properties_loose(source, excluded) {
|
|
|
143
144
|
}
|
|
144
145
|
return target;
|
|
145
146
|
}
|
|
147
|
+
var ansiRegex = (0, _ansiRegex.default)();
|
|
146
148
|
var terminal = (0, _createApp.default)();
|
|
147
149
|
function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
148
150
|
var encoding = spawnOptions.encoding, stdio = spawnOptions.stdio, csOptions = _object_without_properties(spawnOptions, [
|
|
@@ -174,7 +176,7 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
174
176
|
var lines = item.lines.concat(texts.map(function(text) {
|
|
175
177
|
return {
|
|
176
178
|
type: _types.LineType.stdout,
|
|
177
|
-
text: text
|
|
179
|
+
text: text.replace(ansiRegex, '')
|
|
178
180
|
};
|
|
179
181
|
}));
|
|
180
182
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
|
@@ -196,7 +198,7 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
|
196
198
|
var lines = item.lines.concat(texts.map(function(text) {
|
|
197
199
|
return {
|
|
198
200
|
type: _types.LineType.stderr,
|
|
199
|
-
text: text
|
|
201
|
+
text: text.replace(ansiRegex, '')
|
|
200
202
|
};
|
|
201
203
|
}));
|
|
202
204
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
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';\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 if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = uuid();\n store.getState().addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((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 queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\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 queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // let rendering complete\n setTimeout(() => {\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) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n err ? callback(err) : callback(null, res);\n });\n }\n}\n"],"names":["spawnTerminal","terminal","createApp","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","retain","store","id","uuid","getState","addProcess","title","concat","formatArguments","join","state","lines","cp","crossSpawn","outputs","stdout","stderr","queue","Queue","addLines","texts","item","processes","find","x","map","text","type","LineType","updateProcess","defer","oo","bind","pipe","spawn","worker","await","err","res","output","setTimeout","release","concatWritable","toString"],"mappings":"AAAA,aAAa;;;;;+
|
|
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 _ansiRegex from './lib/ansiRegex';\nimport concatWritable from './lib/concatWritable';\nimport formatArguments from './lib/formatArguments';\n\nimport type { SpawnOptions, TerminalOptions } from './types';\nimport { LineType } from './types';\n\nconst ansiRegex = _ansiRegex();\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback) {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = uuid();\n store.getState().addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((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: text.replace(ansiRegex, '') })));\n store.getState().updateProcess({ ...item, lines });\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((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: text.replace(ansiRegex, '') })));\n store.getState().updateProcess({ ...item, lines });\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // let rendering complete\n setTimeout(() => {\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) => {\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","ansiRegex","_ansiRegex","terminal","createApp","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","retain","store","id","uuid","getState","addProcess","title","concat","formatArguments","join","state","lines","cp","crossSpawn","outputs","stdout","stderr","queue","Queue","addLines","texts","item","processes","find","x","map","text","type","LineType","replace","updateProcess","defer","oo","bind","pipe","spawn","worker","await","err","res","output","setTimeout","release","concatWritable","toString"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// https://github.com/chalk/ansi-regex/blob/main/index.js
|
|
2
|
+
export default function ansiRegex({ onlyFirst = false } = {}) {
|
|
3
|
+
// Valid string terminator sequences are BEL, ESC\, and 0x9c
|
|
4
|
+
const ST = '(?:\\u0007|\\u001B\\u005C|\\u009C)';
|
|
5
|
+
const pattern = [
|
|
6
|
+
`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`,
|
|
7
|
+
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))'
|
|
8
|
+
].join('|');
|
|
9
|
+
return new RegExp(pattern, onlyFirst ? undefined : 'g');
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/ansiRegex.ts"],"sourcesContent":["// https://github.com/chalk/ansi-regex/blob/main/index.js\nexport default function ansiRegex({ onlyFirst = false } = {}) {\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c\n const ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n const pattern = [`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`, '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))'].join('|');\n\n return new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n"],"names":["ansiRegex","onlyFirst","ST","pattern","join","RegExp","undefined"],"mappings":"AAAA,yDAAyD;AACzD,eAAe,SAASA,UAAU,EAAEC,YAAY,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1D,4DAA4D;IAC5D,MAAMC,KAAK;IACX,MAAMC,UAAU;QAAC,CAAC,oHAAoH,EAAED,GAAG,CAAC,CAAC;QAAE;KAA2D,CAACE,IAAI,CAAC;IAEhN,OAAO,IAAIC,OAAOF,SAASF,YAAYK,YAAY;AACrD"}
|
package/dist/esm/worker.mjs
CHANGED
|
@@ -84,9 +84,11 @@ import oo from 'on-one';
|
|
|
84
84
|
import Queue from 'queue-cb';
|
|
85
85
|
import createApp from './createApp.mjs';
|
|
86
86
|
import addLines from './lib/addLines.mjs';
|
|
87
|
+
import _ansiRegex from './lib/ansiRegex.mjs';
|
|
87
88
|
import concatWritable from './lib/concatWritable.mjs';
|
|
88
89
|
import formatArguments from './lib/formatArguments.mjs';
|
|
89
90
|
import { LineType } from './types.mjs';
|
|
91
|
+
const ansiRegex = _ansiRegex();
|
|
90
92
|
const terminal = createApp();
|
|
91
93
|
export default function spawnTerminal(command, args, spawnOptions, options, callback) {
|
|
92
94
|
const { encoding, stdio } = spawnOptions, csOptions = _object_without_properties(spawnOptions, [
|
|
@@ -115,7 +117,7 @@ export default function spawnTerminal(command, args, spawnOptions, options, call
|
|
|
115
117
|
const item = store.getState().processes.find((x)=>x.id === id);
|
|
116
118
|
const lines = item.lines.concat(texts.map((text)=>({
|
|
117
119
|
type: LineType.stdout,
|
|
118
|
-
text
|
|
120
|
+
text: text.replace(ansiRegex, '')
|
|
119
121
|
})));
|
|
120
122
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
|
121
123
|
lines
|
|
@@ -133,7 +135,7 @@ export default function spawnTerminal(command, args, spawnOptions, options, call
|
|
|
133
135
|
const item = store.getState().processes.find((x)=>x.id === id);
|
|
134
136
|
const lines = item.lines.concat(texts.map((text)=>({
|
|
135
137
|
type: LineType.stderr,
|
|
136
|
-
text
|
|
138
|
+
text: text.replace(ansiRegex, '')
|
|
137
139
|
})));
|
|
138
140
|
store.getState().updateProcess(_object_spread_props(_object_spread({}, item), {
|
|
139
141
|
lines
|
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';\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 if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = uuid();\n store.getState().addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((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 queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\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 queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // let rendering complete\n setTimeout(() => {\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) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n err ? callback(err) : callback(null, res);\n });\n }\n}\n"],"names":["spawn","crossSpawn","uuid","oo","Queue","createApp","addLines","concatWritable","formatArguments","LineType","terminal","spawnTerminal","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","retain","store","id","getState","addProcess","title","concat","join","state","lines","cp","outputs","stdout","stderr","queue","texts","item","processes","find","x","map","text","type","updateProcess","defer","bind","pipe","worker","await","err","res","output","setTimeout","release","toString"],"mappings":"AAAA,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACb,OAAOA,SAASC,UAAU,QAA0B,iBAAiB;AACrE,OAAOC,UAAU,WAAW;AAC5B,OAAOC,QAAQ,SAAS;AACxB,OAAOC,WAAW,WAAW;AAE7B,OAAOC,eAAe,cAAc;AACpC,OAAOC,cAAc,iBAAiB;AACtC,OAAOC,oBAAoB,uBAAuB;AAClD,OAAOC,qBAAqB,wBAAwB;AAGpD,SAASC,QAAQ,QAAQ,UAAU;AAEnC,MAAMC,
|
|
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 _ansiRegex from './lib/ansiRegex';\nimport concatWritable from './lib/concatWritable';\nimport formatArguments from './lib/formatArguments';\n\nimport type { SpawnOptions, TerminalOptions } from './types';\nimport { LineType } from './types';\n\nconst ansiRegex = _ansiRegex();\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback) {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = uuid();\n store.getState().addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((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: text.replace(ansiRegex, '') })));\n store.getState().updateProcess({ ...item, lines });\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((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: text.replace(ansiRegex, '') })));\n store.getState().updateProcess({ ...item, lines });\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // let rendering complete\n setTimeout(() => {\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) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n err ? callback(err) : callback(null, res);\n });\n }\n}\n"],"names":["spawn","crossSpawn","uuid","oo","Queue","createApp","addLines","_ansiRegex","concatWritable","formatArguments","LineType","ansiRegex","terminal","spawnTerminal","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","retain","store","id","getState","addProcess","title","concat","join","state","lines","cp","outputs","stdout","stderr","queue","texts","item","processes","find","x","map","text","type","replace","updateProcess","defer","bind","pipe","worker","await","err","res","output","setTimeout","release","toString"],"mappings":"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"}
|