spawn-term 0.1.6 → 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.
@@ -94,21 +94,23 @@ var POINTERS = {
94
94
  color: "yellow"
95
95
  }, _figures.default.pointer)
96
96
  };
97
- function Content(param) {
98
- var item = param.item;
99
- var title = item.title, state = item.state, lines = item.lines, expanded = item.expanded;
100
- var icon = ICONS[state];
101
- var output = state === 'running' && lines.length ? lines[lines.length - 1] : undefined;
102
- var errors = state !== 'running' ? lines.filter(function(line) {
103
- return line.type === _types.LineType.stderr;
104
- }) : [];
105
- return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__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, {
106
100
  marginRight: 1
107
- }, /*#__PURE__*/ _react.default.createElement(_ink.Text, null, icon)), /*#__PURE__*/ _react.default.createElement(_ink.Text, null, title)), output ? /*#__PURE__*/ _react.default.createElement(_ink.Box, {
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, {
108
106
  marginLeft: 2
109
107
  }, /*#__PURE__*/ _react.default.createElement(_ink.Text, {
110
108
  color: "gray"
111
- }, "".concat(_figures.default.arrowRight, " ").concat(output.text))) : undefined, expanded && /*#__PURE__*/ _react.default.createElement(_ink.Box, {
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, {
112
114
  flexDirection: "column",
113
115
  marginLeft: 2
114
116
  }, lines.map(function(line, index) {
@@ -120,19 +122,55 @@ function Content(param) {
120
122
  }, /*#__PURE__*/ _react.default.createElement(_ink.Text, {
121
123
  color: line.type === _types.LineType.stderr ? 'red' : 'black'
122
124
  }, line.text)));
123
- })), !expanded && errors.length > 0 && /*#__PURE__*/ _react.default.createElement(_ink.Box, {
124
- flexDirection: "column",
125
- marginLeft: 2
126
- }, errors.map(function(line, index) {
127
- return(// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
128
- /*#__PURE__*/ _react.default.createElement(_ink.Box, {
129
- key: index,
130
- flexDirection: "column",
131
- height: 1
132
- }, /*#__PURE__*/ _react.default.createElement(_ink.Text, {
133
- color: line.type === _types.LineType.stderr ? 'red' : 'black'
134
- }, line.text)));
135
- })));
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
+ }));
136
174
  }
137
175
  function ChildProcess(param) {
138
176
  var id = param.id;
@@ -141,17 +179,13 @@ function ChildProcess(param) {
141
179
  var item = appState.processes.find(function(x) {
142
180
  return x.id === id;
143
181
  });
144
- var state = item.state, group = item.group;
145
- var pointer = POINTERS[state] || POINTERS.default;
182
+ var group = item.group;
183
+ if (group) return /*#__PURE__*/ _react.default.createElement(Group, {
184
+ item: item
185
+ });
146
186
  return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
147
187
  flexDirection: "column"
148
- }, group && /*#__PURE__*/ _react.default.createElement(_ink.Box, {
149
- flexDirection: "column"
150
- }, /*#__PURE__*/ _react.default.createElement(_ink.Box, null, /*#__PURE__*/ _react.default.createElement(_ink.Box, {
151
- marginRight: 1
152
- }, /*#__PURE__*/ _react.default.createElement(_ink.Text, null, pointer)), /*#__PURE__*/ _react.default.createElement(_ink.Text, null, group)), /*#__PURE__*/ _react.default.createElement(Content, {
153
- item: item
154
- })), !group && /*#__PURE__*/ _react.default.createElement(Content, {
188
+ }, /*#__PURE__*/ _react.default.createElement(Content, {
155
189
  item: item
156
190
  }));
157
191
  }
@@ -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\nfunction Content({ item }) {\n const { title, state, lines, expanded } = item;\n const icon = ICONS[state];\n const output = state === 'running' && lines.length ? lines[lines.length - 1] : undefined;\n const errors = state !== 'running' ? lines.filter((line) => line.type === LineType.stderr) : [];\n\n return (\n <React.Fragment>\n <Box>\n <Box marginRight={1}>\n <Text>{icon}</Text>\n </Box>\n <Text>{title}</Text>\n </Box>\n {output ? (\n <Box marginLeft={2}>\n <Text color=\"gray\">{`${figures.arrowRight} ${output.text}`}</Text>\n </Box>\n ) : undefined}\n {expanded && (\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 {!expanded && errors.length > 0 && (\n <Box flexDirection=\"column\" marginLeft={2}>\n {errors.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 </React.Fragment>\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 { state, group } = item;\n const pointer = POINTERS[state] || POINTERS.default;\n\n return (\n <Box flexDirection=\"column\">\n {group && (\n <Box flexDirection=\"column\">\n <Box>\n <Box marginRight={1}>\n <Text>{pointer}</Text>\n </Box>\n <Text>{group}</Text>\n </Box>\n <Content item={item} />\n </Box>\n )}\n {!group && <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","Content","item","title","state","lines","expanded","icon","output","length","undefined","errors","filter","line","type","LineType","stderr","React","Fragment","Box","marginRight","marginLeft","arrowRight","text","flexDirection","map","index","key","height","id","store","useContext","StoreContext","appState","useStore","processes","find","x","group"],"mappings":"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"}
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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"}
@@ -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":";;;;;;;;;;;IAmBA,OAAsD;eAAtD;;IADoBA,OAAO;eAAPA,gBAAO;;;qBADb;8DACqB;;;;;;;;;;;;;;;;;;;AAhBnC,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;IAIlD,WAAeJ,QAAQ,KAAKb,gBAAgBkB"}
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"}
@@ -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":";;;;;;;;;;;IAmBA,OAAsD;eAAtD;;IADoBA,OAAO;eAAPA,gBAAO;;;6DAlBR;qBAiBL;8DACqB;;;;;;;;;;;;;;;;;;;AAdnC,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;IAIlD,WAAeJ,QAAQ,KAAKZ,gBAAgBiB"}
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"}
@@ -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) {
@@ -154,7 +155,7 @@ function spawnTerminal(command, args, spawnOptions, options, callback) {
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));
@@ -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, 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(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","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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"}
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":"AAAA,aAAa;;;;;+BAgBb;;;eAAwBA;;;oEAf4B;8DACnC;4DACF;8DACG;gEAEI;+DACD;qEACM;sEACC;qBAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzB,IAAMC,WAAWC,IAAAA,kBAAS;AAEX,SAASF,cAAcG,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAwB,EAAEC,QAAQ;IACnI,IAAQC,WAAkCH,aAAlCG,UAAUC,QAAwBJ,aAAxBI,OAAUC,uCAAcL;QAAlCG;QAAUC;;IAElBR,SAASU,MAAM,CAAC,SAACC;QACf,IAAMC,KAAKC,IAAAA,gBAAI;QACfF,MAAMG,QAAQ,GAAGC,UAAU,CAAC;YAAEH,IAAAA;YAAII,OAAO;gBAACd;aAAQ,CAACe,MAAM,CAACC,IAAAA,wBAAe,EAACf,OAAOgB,IAAI,CAAC;YAAMC,OAAO;YAAWC,OAAO,EAAE;WAAKhB;QAE5H,IAAMiB,KAAKC,IAAAA,wBAAU,EAACrB,SAASC,MAAMM;QACrC,IAAMe,UAAU;YAAEC,QAAQ;YAAMC,QAAQ;QAAK;QAE7C,IAAIJ,GAAGG,MAAM,IAAIE,QAAQF,MAAM,CAACG,eAAe,EAAE;YAC/CD,QAAQF,MAAM,CAACI,eAAe,CAACF,QAAQF,MAAM,CAACG,eAAe,KAAK;YAClED,QAAQD,MAAM,CAACG,eAAe,CAACF,QAAQD,MAAM,CAACE,eAAe,KAAK;QACpE;QAEA,IAAME,QAAQ,IAAIC,gBAAK;QACvB,IAAIT,GAAGG,MAAM,EAAE;YACb,IAAIjB,UAAU,WAAW;gBACvBgB,QAAQC,MAAM,GAAGO,IAAAA,iBAAQ,EAAC,SAACC;oBACzB,IAAMC,OAAOvB,MAAMG,QAAQ,GAAGqB,SAAS,CAACC,IAAI,CAAC,SAACC;+BAAMA,EAAEzB,EAAE,KAAKA;;oBAC7D,IAAMS,QAAQa,KAAKb,KAAK,CAACJ,MAAM,CAACgB,MAAMK,GAAG,CAAC,SAACC;+BAAU;4BAAEC,MAAMC,eAAQ,CAAChB,MAAM;4BAAEc,MAAAA;wBAAK;;oBACnF5B,MAAMG,QAAQ,GAAG4B,aAAa,CAAC,wCAAKR;wBAAMb,OAAAA;;gBAC5C;YACF,OAAO;gBACLG,QAAQC,MAAM,GAAGkB,IAAAA,uBAAc,EAAC,SAACC;oBAC/BpB,QAAQC,MAAM,CAACmB,MAAM,GAAGA,OAAOC,QAAQ,CAACtC,YAAY;gBACtD;YACF;YACAuB,MAAMgB,KAAK,CAACC,cAAE,CAACC,IAAI,CAAC,MAAM1B,GAAGG,MAAM,CAACwB,IAAI,CAACzB,QAAQC,MAAM,GAAG;gBAAC;gBAAS;gBAAO;gBAAS;aAAS;QAC/F;QACA,IAAIH,GAAGI,MAAM,EAAE;YACb,IAAIlB,UAAU,WAAW;gBACvBgB,QAAQE,MAAM,GAAGM,IAAAA,iBAAQ,EAAC,SAACC;oBACzB,IAAMC,OAAOvB,MAAMG,QAAQ,GAAGqB,SAAS,CAACC,IAAI,CAAC,SAACC;+BAAMA,EAAEzB,EAAE,KAAKA;;oBAC7D,IAAMS,QAAQa,KAAKb,KAAK,CAACJ,MAAM,CAACgB,MAAMK,GAAG,CAAC,SAACC;+BAAU;4BAAEC,MAAMC,eAAQ,CAACf,MAAM;4BAAEa,MAAAA;wBAAK;;oBACnF5B,MAAMG,QAAQ,GAAG4B,aAAa,CAAC,wCAAKR;wBAAMb,OAAAA;;gBAC5C;YACF,OAAO;gBACLG,QAAQE,MAAM,GAAGiB,IAAAA,uBAAc,EAAC,SAACC;oBAC/BpB,QAAQE,MAAM,CAACkB,MAAM,GAAGA,OAAOC,QAAQ,CAACtC,YAAY;gBACtD;YACF;YACAuB,MAAMgB,KAAK,CAACC,cAAE,CAACC,IAAI,CAAC,MAAM1B,GAAGI,MAAM,CAACuB,IAAI,CAACzB,QAAQE,MAAM,GAAG;gBAAC;gBAAS;gBAAO;gBAAS;aAAS;QAC/F;QACAI,MAAMgB,KAAK,CAACI,qBAAK,CAACC,MAAM,CAACH,IAAI,CAAC,MAAM1B,IAAI,wCAAKb;YAAWF,UAAU;;QAClEuB,MAAMsB,KAAK,CAAC,SAACC;YACX,IAAI/B,GAAGG,MAAM,IAAIE,QAAQF,MAAM,CAACG,eAAe,EAAE;gBAC/CD,QAAQF,MAAM,CAACI,eAAe,CAACF,QAAQF,MAAM,CAACG,eAAe,KAAK;gBAClED,QAAQD,MAAM,CAACG,eAAe,CAACF,QAAQD,MAAM,CAACE,eAAe,KAAK;YACpE;YAEA,IAAM0B,MAAOD,MAAMA,MAAM,CAAC;YAC1BC,IAAI7B,MAAM,GAAGD,QAAQC,MAAM,GAAGD,QAAQC,MAAM,CAACmB,MAAM,GAAG;YACtDU,IAAI5B,MAAM,GAAGF,QAAQE,MAAM,GAAGF,QAAQE,MAAM,CAACkB,MAAM,GAAG;YACtDU,IAAIV,MAAM,GAAG;gBAACU,IAAI7B,MAAM;gBAAE6B,IAAI5B,MAAM;gBAAE;aAAK;YAC3C,IAAMQ,OAAOvB,MAAMG,QAAQ,GAAGqB,SAAS,CAACC,IAAI,CAAC,SAACC;uBAAMA,EAAEzB,EAAE,KAAKA;;YAC7DD,MAAMG,QAAQ,GAAG4B,aAAa,CAAC,wCAAKR;gBAAMd,OAAOiC,MAAM,UAAU;;YAEjE,yBAAyB;YACzBE,WAAW;gBACTvD,SAASwD,OAAO;gBAChBH,MAAM/C,SAAS+C,OAAO/C,SAAS,MAAMgD;YACvC;QACF;IACF;AACF"}
@@ -38,18 +38,20 @@ const POINTERS = {
38
38
  color: "yellow"
39
39
  }, figures.pointer)
40
40
  };
41
- function Content({ item }) {
42
- const { title, state, lines, expanded } = item;
43
- const icon = ICONS[state];
44
- const output = state === 'running' && lines.length ? lines[lines.length - 1] : undefined;
45
- const errors = state !== 'running' ? lines.filter((line)=>line.type === LineType.stderr) : [];
46
- return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__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, {
47
43
  marginRight: 1
48
- }, /*#__PURE__*/ React.createElement(Text, null, icon)), /*#__PURE__*/ React.createElement(Text, null, title)), output ? /*#__PURE__*/ React.createElement(Box, {
44
+ }, /*#__PURE__*/ React.createElement(Text, null, icon)), /*#__PURE__*/ React.createElement(Text, null, title));
45
+ }
46
+ function Output({ output }) {
47
+ return /*#__PURE__*/ React.createElement(Box, {
49
48
  marginLeft: 2
50
49
  }, /*#__PURE__*/ React.createElement(Text, {
51
50
  color: "gray"
52
- }, `${figures.arrowRight} ${output.text}`)) : undefined, expanded && /*#__PURE__*/ React.createElement(Box, {
51
+ }, `${figures.arrowRight} ${output.text}`));
52
+ }
53
+ function Lines({ lines }) {
54
+ return /*#__PURE__*/ React.createElement(Box, {
53
55
  flexDirection: "column",
54
56
  marginLeft: 2
55
57
  }, lines.map((line, index)=>// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
@@ -59,33 +61,61 @@ function Content({ item }) {
59
61
  height: 1
60
62
  }, /*#__PURE__*/ React.createElement(Text, {
61
63
  color: line.type === LineType.stderr ? 'red' : 'black'
62
- }, line.text)))), !expanded && errors.length > 0 && /*#__PURE__*/ React.createElement(Box, {
63
- flexDirection: "column",
64
- marginLeft: 2
65
- }, errors.map((line, index)=>// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
66
- /*#__PURE__*/ React.createElement(Box, {
67
- key: index,
68
- flexDirection: "column",
69
- height: 1
70
- }, /*#__PURE__*/ React.createElement(Text, {
71
- color: line.type === LineType.stderr ? 'red' : 'black'
72
- }, line.text)))));
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
+ }));
73
107
  }
74
108
  export default function ChildProcess({ id }) {
75
109
  const store = useContext(StoreContext);
76
110
  const appState = useStore(store);
77
111
  const item = appState.processes.find((x)=>x.id === id);
78
- const { state, group } = item;
79
- const pointer = POINTERS[state] || POINTERS.default;
112
+ const { group } = item;
113
+ if (group) return /*#__PURE__*/ React.createElement(Group, {
114
+ item: item
115
+ });
80
116
  return /*#__PURE__*/ React.createElement(Box, {
81
117
  flexDirection: "column"
82
- }, group && /*#__PURE__*/ React.createElement(Box, {
83
- flexDirection: "column"
84
- }, /*#__PURE__*/ React.createElement(Box, null, /*#__PURE__*/ React.createElement(Box, {
85
- marginRight: 1
86
- }, /*#__PURE__*/ React.createElement(Text, null, pointer)), /*#__PURE__*/ React.createElement(Text, null, group)), /*#__PURE__*/ React.createElement(Content, {
87
- item: item
88
- })), !group && /*#__PURE__*/ React.createElement(Content, {
118
+ }, /*#__PURE__*/ React.createElement(Content, {
89
119
  item: item
90
120
  }));
91
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\nfunction Content({ item }) {\n const { title, state, lines, expanded } = item;\n const icon = ICONS[state];\n const output = state === 'running' && lines.length ? lines[lines.length - 1] : undefined;\n const errors = state !== 'running' ? lines.filter((line) => line.type === LineType.stderr) : [];\n\n return (\n <React.Fragment>\n <Box>\n <Box marginRight={1}>\n <Text>{icon}</Text>\n </Box>\n <Text>{title}</Text>\n </Box>\n {output ? (\n <Box marginLeft={2}>\n <Text color=\"gray\">{`${figures.arrowRight} ${output.text}`}</Text>\n </Box>\n ) : undefined}\n {expanded && (\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 {!expanded && errors.length > 0 && (\n <Box flexDirection=\"column\" marginLeft={2}>\n {errors.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 </React.Fragment>\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 { state, group } = item;\n const pointer = POINTERS[state] || POINTERS.default;\n\n return (\n <Box flexDirection=\"column\">\n {group && (\n <Box flexDirection=\"column\">\n <Box>\n <Box marginRight={1}>\n <Text>{pointer}</Text>\n </Box>\n <Text>{group}</Text>\n </Box>\n <Content item={item} />\n </Box>\n )}\n {!group && <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","Content","item","title","state","lines","expanded","icon","output","length","undefined","errors","filter","line","type","stderr","Fragment","marginRight","marginLeft","arrowRight","text","flexDirection","map","index","key","height","ChildProcess","id","store","appState","processes","find","x","group"],"mappings":"AAAA,OAAOA,SAASC,UAAU,QAAQ,QAAQ;AAC1C,SAASC,QAAQ,QAAQ,UAAU;AACnC,OAAOC,kBAAkB,oBAAoB;AAC7C,SAASC,GAAG,EAAEC,IAAI,QAAQ,aAAa;AACvC,OAAOC,aAAa,iBAAiB;AACrC,OAAOC,aAAa,YAAY;AAGhC,SAASC,QAAQ,QAAQ,WAAW;AAEpC,oHAAoH;AACpH,MAAMC,UAAU;IACdC,UAAU;IACVC,QAAQ;QAAC;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;KAAI;AAC5D;AAEA,MAAMC,QAAQ;IACZC,qBAAO,oBAACR;QAAKS,OAAM;OAAOR,QAAQS,KAAK;IACvCC,uBAAS,oBAACX;QAAKS,OAAM;OAASR,QAAQW,IAAI;IAC1CC,uBAAS,oBAACX,SAAYE;AACxB;AAEA,MAAMU,WAAW;IACfN,qBAAO,oBAACR;QAAKS,OAAM;OAAOR,QAAQc,OAAO;IACzCC,uBAAS,oBAAChB;QAAKS,OAAM;OAAUR,QAAQc,OAAO;AAChD;AAMA,SAASE,QAAQ,EAAEC,IAAI,EAAE;IACvB,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGJ;IAC1C,MAAMK,OAAOhB,KAAK,CAACa,MAAM;IACzB,MAAMI,SAASJ,UAAU,aAAaC,MAAMI,MAAM,GAAGJ,KAAK,CAACA,MAAMI,MAAM,GAAG,EAAE,GAAGC;IAC/E,MAAMC,SAASP,UAAU,YAAYC,MAAMO,MAAM,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAK3B,SAAS4B,MAAM,IAAI,EAAE;IAE/F,qBACE,oBAACpC,MAAMqC,QAAQ,sBACb,oBAACjC,yBACC,oBAACA;QAAIkC,aAAa;qBAChB,oBAACjC,YAAMuB,sBAET,oBAACvB,YAAMmB,SAERK,uBACC,oBAACzB;QAAImC,YAAY;qBACf,oBAAClC;QAAKS,OAAM;OAAQ,GAAGR,QAAQkC,UAAU,CAAC,CAAC,EAAEX,OAAOY,IAAI,EAAE,KAE1DV,WACHJ,0BACC,oBAACvB;QAAIsC,eAAc;QAASH,YAAY;OACrCb,MAAMiB,GAAG,CAAC,CAACT,MAAMU,QAChB,8DAA8D;sBAC9D,oBAACxC;YAAIyC,KAAKD;YAAOF,eAAc;YAASI,QAAQ;yBAC9C,oBAACzC;YAAKS,OAAOoB,KAAKC,IAAI,KAAK3B,SAAS4B,MAAM,GAAG,QAAQ;WAAUF,KAAKO,IAAI,MAK/E,CAACd,YAAYK,OAAOF,MAAM,GAAG,mBAC5B,oBAAC1B;QAAIsC,eAAc;QAASH,YAAY;OACrCP,OAAOW,GAAG,CAAC,CAACT,MAAMU,QACjB,8DAA8D;sBAC9D,oBAACxC;YAAIyC,KAAKD;YAAOF,eAAc;YAASI,QAAQ;yBAC9C,oBAACzC;YAAKS,OAAOoB,KAAKC,IAAI,KAAK3B,SAAS4B,MAAM,GAAG,QAAQ;WAAUF,KAAKO,IAAI;AAOtF;AAEA,eAAe,SAASM,aAAa,EAAEC,EAAE,EAAqB;IAC5D,MAAMC,QAAQhD,WAAWE;IACzB,MAAM+C,WAAWhD,SAAS+C;IAC1B,MAAM1B,OAAO2B,SAASC,SAAS,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEL,EAAE,KAAKA;IACrD,MAAM,EAAEvB,KAAK,EAAE6B,KAAK,EAAE,GAAG/B;IACzB,MAAMH,UAAUD,QAAQ,CAACM,MAAM,IAAIN,SAASE,OAAO;IAEnD,qBACE,oBAACjB;QAAIsC,eAAc;OAChBY,uBACC,oBAAClD;QAAIsC,eAAc;qBACjB,oBAACtC,yBACC,oBAACA;QAAIkC,aAAa;qBAChB,oBAACjC,YAAMe,yBAET,oBAACf,YAAMiD,uBAET,oBAAChC;QAAQC,MAAMA;SAGlB,CAAC+B,uBAAS,oBAAChC;QAAQC,MAAMA;;AAGhC"}
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":"AAAA,OAAOA,SAASC,UAAU,QAAQ,QAAQ;AAC1C,SAASC,QAAQ,QAAQ,UAAU;AACnC,OAAOC,kBAAkB,oBAAoB;AAC7C,SAASC,GAAG,EAAEC,IAAI,QAAQ,aAAa;AACvC,OAAOC,aAAa,iBAAiB;AACrC,OAAOC,aAAa,YAAY;AAGhC,SAASC,QAAQ,QAAQ,WAAW;AAEpC,oHAAoH;AACpH,MAAMC,UAAU;IACdC,UAAU;IACVC,QAAQ;QAAC;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;KAAI;AAC5D;AAEA,MAAMC,QAAQ;IACZC,qBAAO,oBAACR;QAAKS,OAAM;OAAOR,QAAQS,KAAK;IACvCC,uBAAS,oBAACX;QAAKS,OAAM;OAASR,QAAQW,IAAI;IAC1CC,uBAAS,oBAACX,SAAYE;AACxB;AAEA,MAAMU,WAAW;IACfN,qBAAO,oBAACR;QAAKS,OAAM;OAAOR,QAAQc,OAAO;IACzCC,uBAAS,oBAAChB;QAAKS,OAAM;OAAUR,QAAQc,OAAO;AAChD;AAMA,SAASE,OAAO,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAC7B,qBACE,oBAACpB,yBACC,oBAACA;QAAIqB,aAAa;qBAChB,oBAACpB,YAAMkB,sBAET,oBAAClB,YAAMmB;AAGb;AAEA,SAASE,OAAO,EAAEC,MAAM,EAAE;IACxB,qBACE,oBAACvB;QAAIwB,YAAY;qBACf,oBAACvB;QAAKS,OAAM;OAAQ,GAAGR,QAAQuB,UAAU,CAAC,CAAC,EAAEF,OAAOG,IAAI,EAAE;AAGhE;AAEA,SAASC,MAAM,EAAEC,KAAK,EAAE;IACtB,qBACE,oBAAC5B;QAAI6B,eAAc;QAASL,YAAY;OACrCI,MAAME,GAAG,CAAC,CAACC,MAAMC,QAChB,8DAA8D;sBAC9D,oBAAChC;YAAIiC,KAAKD;YAAOH,eAAc;YAASK,QAAQ;yBAC9C,oBAACjC;YAAKS,OAAOqB,KAAKI,IAAI,KAAK/B,SAASgC,MAAM,GAAG,QAAQ;WAAUL,KAAKL,IAAI;AAKlF;AAEA,SAASW,QAAQ,EAAEC,IAAI,EAAE;IACvB,MAAM,EAAElB,KAAK,EAAEmB,KAAK,EAAEX,KAAK,EAAEY,QAAQ,EAAE,GAAGF;IAC1C,MAAMnB,OAAOX,KAAK,CAAC+B,MAAM;IACzB,MAAMhB,SAASK,MAAMa,MAAM,GAAGb,KAAK,CAACA,MAAMa,MAAM,GAAG,EAAE,GAAGC;IACxD,MAAMC,SAASf,MAAMgB,MAAM,CAAC,CAACb,OAASA,KAAKI,IAAI,KAAK/B,SAASgC,MAAM;IAEnE,qBACE,oBAACxC,MAAMiD,QAAQ,sBACb,oBAAC3B;QAAOC,MAAMA;QAAMC,OAAOA;QAC1BmB,UAAU,aAAahB,wBAAU,oBAACD;QAAOC,QAAQA;QACjDiB,0BAAY,oBAACb;QAAMC,OAAOA;QAC1B,CAACY,YAAYG,OAAOF,MAAM,GAAG,mBAAK,oBAACd;QAAMC,OAAOe;;AAGvD;AACA,SAASG,MAAM,EAAER,IAAI,EAAE;IACrB,MAAM,EAAElB,KAAK,EAAEmB,KAAK,EAAEX,KAAK,EAAEmB,KAAK,EAAEP,QAAQ,EAAE,GAAGF;IACjD,MAAMnB,OAAOX,KAAK,CAAC+B,MAAM;IACzB,MAAMvB,UAAUD,QAAQ,CAACwB,MAAM,IAAIxB,SAASE,OAAO;IACnD,MAAM0B,SAASf,MAAMgB,MAAM,CAAC,CAACb,OAASA,KAAKI,IAAI,KAAK/B,SAASgC,MAAM;IAEnE,IAAIG,UAAU,WAAW;QACvB,qBACE,oBAACvC;YAAI6B,eAAc;yBACjB,oBAACX;YAAOC,MAAMH;YAASI,OAAO2B;0BAC9B,oBAACV;YAAQC,MAAMA;;IAGrB;IAEA,qBACE,oBAACtC;QAAI6B,eAAc;qBACjB,oBAACX;QAAOC,MAAMA;QAAMC,OAAO,GAAG2B,MAAM,EAAE,EAAE3B,OAAO;QAC9CoB,0BAAY,oBAACb;QAAMC,OAAOA;QAC1B,CAACY,YAAYG,OAAOF,MAAM,GAAG,mBAAK,oBAACd;QAAMC,OAAOe;;AAGvD;AAEA,eAAe,SAASK,aAAa,EAAEC,EAAE,EAAqB;IAC5D,MAAMC,QAAQrD,WAAWE;IACzB,MAAMoD,WAAWrD,SAASoD;IAC1B,MAAMZ,OAAOa,SAASC,SAAS,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEL,EAAE,KAAKA;IACrD,MAAM,EAAEF,KAAK,EAAE,GAAGT;IAElB,IAAIS,OAAO,qBAAO,oBAACD;QAAMR,MAAMA;;IAE/B,qBACE,oBAACtC;QAAI6B,eAAc;qBACjB,oBAACQ;QAAQC,MAAMA;;AAGrB"}
@@ -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,eAAeN,QAAQ,KAAKb,gBAAgBoB,UAAU"}
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"}
@@ -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,eAAeN,QAAQ,KAAKX,gBAAgBkB,UAAU"}
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"}
@@ -85,6 +85,7 @@ 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
91
  export default function spawnTerminal(command, args, spawnOptions, options, callback) {
@@ -98,7 +99,7 @@ export default function spawnTerminal(command, args, spawnOptions, options, call
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));
@@ -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, 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(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","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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"}
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;
@@ -0,0 +1,2 @@
1
+ declare const _default: (args: any) => any;
2
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spawn-term",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Formats spawn with for terminal grouping",
5
5
  "keywords": [
6
6
  "spawn",