spawn-term 0.1.2 → 0.1.4

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.
@@ -8,50 +8,66 @@ Object.defineProperty(exports, "default", {
8
8
  return App;
9
9
  }
10
10
  });
11
- var _react = /*#__PURE__*/ _interop_require_default(require("react"));
11
+ var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
+ var _zustand = require("zustand");
13
+ var _Store = /*#__PURE__*/ _interop_require_default(require("../contexts/Store.cjs"));
12
14
  var _ink = require("../ink.cjs");
13
15
  var _ChildProcess = /*#__PURE__*/ _interop_require_default(require("./ChildProcess.cjs"));
14
- function _define_property(obj, key, value) {
15
- if (key in obj) {
16
- Object.defineProperty(obj, key, {
17
- value: value,
18
- enumerable: true,
19
- configurable: true,
20
- writable: true
21
- });
22
- } else {
23
- obj[key] = value;
24
- }
25
- return obj;
26
- }
27
16
  function _interop_require_default(obj) {
28
17
  return obj && obj.__esModule ? obj : {
29
18
  default: obj
30
19
  };
31
20
  }
32
- function _object_spread(target) {
33
- for(var i = 1; i < arguments.length; i++){
34
- var source = arguments[i] != null ? arguments[i] : {};
35
- var ownKeys = Object.keys(source);
36
- if (typeof Object.getOwnPropertySymbols === "function") {
37
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
38
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
39
- }));
21
+ function _getRequireWildcardCache(nodeInterop) {
22
+ if (typeof WeakMap !== "function") return null;
23
+ var cacheBabelInterop = new WeakMap();
24
+ var cacheNodeInterop = new WeakMap();
25
+ return (_getRequireWildcardCache = function(nodeInterop) {
26
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
27
+ })(nodeInterop);
28
+ }
29
+ function _interop_require_wildcard(obj, nodeInterop) {
30
+ if (!nodeInterop && obj && obj.__esModule) {
31
+ return obj;
32
+ }
33
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
34
+ return {
35
+ default: obj
36
+ };
37
+ }
38
+ var cache = _getRequireWildcardCache(nodeInterop);
39
+ if (cache && cache.has(obj)) {
40
+ return cache.get(obj);
41
+ }
42
+ var newObj = {
43
+ __proto__: null
44
+ };
45
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
46
+ for(var key in obj){
47
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
48
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
49
+ if (desc && (desc.get || desc.set)) {
50
+ Object.defineProperty(newObj, key, desc);
51
+ } else {
52
+ newObj[key] = obj[key];
53
+ }
40
54
  }
41
- ownKeys.forEach(function(key) {
42
- _define_property(target, key, source[key]);
43
- });
44
55
  }
45
- return target;
56
+ newObj.default = obj;
57
+ if (cache) {
58
+ cache.set(obj, newObj);
59
+ }
60
+ return newObj;
46
61
  }
47
- function App(param) {
48
- var list = param.list;
49
- var running = list.filter(function(x) {
62
+ function App() {
63
+ var store = (0, _react.useContext)(_Store.default);
64
+ var appState = (0, _zustand.useStore)(store);
65
+ var running = appState.processes.filter(function(x) {
50
66
  return [
51
67
  'running'
52
68
  ].indexOf(x.state) >= 0;
53
69
  });
54
- var done = list.filter(function(x) {
70
+ var done = appState.processes.filter(function(x) {
55
71
  return [
56
72
  'error',
57
73
  'success'
@@ -60,9 +76,10 @@ function App(param) {
60
76
  return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_ink.Box, {
61
77
  flexDirection: "column"
62
78
  }, running.map(function(item) {
63
- return /*#__PURE__*/ _react.default.createElement(_ChildProcess.default, _object_spread({
64
- key: item.id
65
- }, item));
79
+ return /*#__PURE__*/ _react.default.createElement(_ChildProcess.default, {
80
+ key: item.id,
81
+ id: item.id
82
+ });
66
83
  })), /*#__PURE__*/ _react.default.createElement(_ink.Box, {
67
84
  flexDirection: "column",
68
85
  borderStyle: "single",
@@ -74,9 +91,10 @@ function App(param) {
74
91
  }), /*#__PURE__*/ _react.default.createElement(_ink.Box, {
75
92
  flexDirection: "column"
76
93
  }, done.map(function(item) {
77
- return /*#__PURE__*/ _react.default.createElement(_ChildProcess.default, _object_spread({
78
- key: item.id
79
- }, item));
94
+ return /*#__PURE__*/ _react.default.createElement(_ChildProcess.default, {
95
+ key: item.id,
96
+ id: item.id
97
+ });
80
98
  })));
81
99
  }
82
100
  /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '../ink.mjs';\nimport type { ChildProcess as ChildProcessT } from '../types';\nimport ChildProcess from './ChildProcess';\n\nexport interface AppProps {\n list: ChildProcessT[];\n}\n\nexport default function App({ list }: AppProps) {\n const running = list.filter((x) => ['running'].indexOf(x.state) >= 0);\n const done = list.filter((x) => ['error', 'success'].indexOf(x.state) >= 0);\n\n return (\n <>\n <Box flexDirection=\"column\">\n {running.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} {...item} />\n ))}\n </Box>\n <Box flexDirection=\"column\" borderStyle=\"single\" borderColor=\"black\" borderBottom={true} borderTop={false} borderLeft={false} borderRight={false} />\n <Box flexDirection=\"column\">\n {done.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} {...item} />\n ))}\n </Box>\n </>\n );\n}\n"],"names":["App","list","running","filter","x","indexOf","state","done","Box","flexDirection","map","item","ChildProcess","key","id","borderStyle","borderColor","borderBottom","borderTop","borderLeft","borderRight"],"mappings":";;;;+BASA;;;eAAwBA;;;4DATN;mBACE;mEAEK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMV,SAASA,IAAI,KAAkB;QAAlB,AAAEC,OAAF,MAAEA;IAC5B,IAAMC,UAAUD,KAAKE,MAAM,CAAC,SAACC;eAAM;YAAC;SAAU,CAACC,OAAO,CAACD,EAAEE,KAAK,KAAK;;IACnE,IAAMC,OAAON,KAAKE,MAAM,CAAC,SAACC;eAAM;YAAC;YAAS;SAAU,CAACC,OAAO,CAACD,EAAEE,KAAK,KAAK;;IAEzE,qBACE,0EACE,6BAACE,QAAG;QAACC,eAAc;OAChBP,QAAQQ,GAAG,CAAC,SAACC;6BACZ,6BAACC,qBAAY;YAACC,KAAKF,KAAKG,EAAE;WAAMH;uBAGpC,6BAACH,QAAG;QAACC,eAAc;QAASM,aAAY;QAASC,aAAY;QAAQC,cAAc;QAAMC,WAAW;QAAOC,YAAY;QAAOC,aAAa;sBAC3I,6BAACZ,QAAG;QAACC,eAAc;OAChBF,KAAKG,GAAG,CAAC,SAACC;6BACT,6BAACC,qBAAY;YAACC,KAAKF,KAAKG,EAAE;WAAMH;;AAK1C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store';\nimport { Box } from '../ink.mjs';\nimport type { AppState, ChildProcess as ChildProcessT } from '../types';\nimport ChildProcess from './ChildProcess';\n\nexport default function App() {\n const store = useContext(StoreContext);\n const appState = useStore(store) as AppState;\n const running = appState.processes.filter((x) => ['running'].indexOf(x.state) >= 0);\n const done = appState.processes.filter((x) => ['error', 'success'].indexOf(x.state) >= 0);\n\n return (\n <>\n <Box flexDirection=\"column\">\n {running.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} id={item.id} />\n ))}\n </Box>\n <Box flexDirection=\"column\" borderStyle=\"single\" borderColor=\"black\" borderBottom={true} borderTop={false} borderLeft={false} borderRight={false} />\n <Box flexDirection=\"column\">\n {done.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} id={item.id} />\n ))}\n </Box>\n </>\n );\n}\n"],"names":["App","store","useContext","StoreContext","appState","useStore","running","processes","filter","x","indexOf","state","done","Box","flexDirection","map","item","ChildProcess","key","id","borderStyle","borderColor","borderBottom","borderTop","borderLeft","borderRight"],"mappings":";;;;+BAOA;;;eAAwBA;;;6DAPU;uBACT;4DACA;mBACL;mEAEK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEV,SAASA;IACtB,IAAMC,QAAQC,IAAAA,iBAAU,EAACC,cAAY;IACrC,IAAMC,WAAWC,IAAAA,iBAAQ,EAACJ;IAC1B,IAAMK,UAAUF,SAASG,SAAS,CAACC,MAAM,CAAC,SAACC;eAAM;YAAC;SAAU,CAACC,OAAO,CAACD,EAAEE,KAAK,KAAK;;IACjF,IAAMC,OAAOR,SAASG,SAAS,CAACC,MAAM,CAAC,SAACC;eAAM;YAAC;YAAS;SAAU,CAACC,OAAO,CAACD,EAAEE,KAAK,KAAK;;IAEvF,qBACE,0EACE,6BAACE,QAAG;QAACC,eAAc;OAChBR,QAAQS,GAAG,CAAC,SAACC;6BACZ,6BAACC,qBAAY;YAACC,KAAKF,KAAKG,EAAE;YAAEA,IAAIH,KAAKG,EAAE;;uBAG3C,6BAACN,QAAG;QAACC,eAAc;QAASM,aAAY;QAASC,aAAY;QAAQC,cAAc;QAAMC,WAAW;QAAOC,YAAY;QAAOC,aAAa;sBAC3I,6BAACZ,QAAG;QAACC,eAAc;OAChBF,KAAKG,GAAG,CAAC,SAACC;6BACT,6BAACC,qBAAY;YAACC,KAAKF,KAAKG,EAAE;YAAEA,IAAIH,KAAKG,EAAE;;;AAKjD"}
@@ -8,7 +8,9 @@ Object.defineProperty(exports, "default", {
8
8
  return ChildProcess;
9
9
  }
10
10
  });
11
- var _react = /*#__PURE__*/ _interop_require_default(require("react"));
11
+ var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
+ var _zustand = require("zustand");
13
+ var _Store = /*#__PURE__*/ _interop_require_default(require("../contexts/Store.cjs"));
12
14
  var _ink = require("../ink.cjs");
13
15
  var _figures = /*#__PURE__*/ _interop_require_default(require("../lib/figures.cjs"));
14
16
  var _Spinner = /*#__PURE__*/ _interop_require_default(require("./Spinner.cjs"));
@@ -18,6 +20,47 @@ function _interop_require_default(obj) {
18
20
  default: obj
19
21
  };
20
22
  }
23
+ function _getRequireWildcardCache(nodeInterop) {
24
+ if (typeof WeakMap !== "function") return null;
25
+ var cacheBabelInterop = new WeakMap();
26
+ var cacheNodeInterop = new WeakMap();
27
+ return (_getRequireWildcardCache = function(nodeInterop) {
28
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
29
+ })(nodeInterop);
30
+ }
31
+ function _interop_require_wildcard(obj, nodeInterop) {
32
+ if (!nodeInterop && obj && obj.__esModule) {
33
+ return obj;
34
+ }
35
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
36
+ return {
37
+ default: obj
38
+ };
39
+ }
40
+ var cache = _getRequireWildcardCache(nodeInterop);
41
+ if (cache && cache.has(obj)) {
42
+ return cache.get(obj);
43
+ }
44
+ var newObj = {
45
+ __proto__: null
46
+ };
47
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
48
+ for(var key in obj){
49
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
50
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
51
+ if (desc && (desc.get || desc.set)) {
52
+ Object.defineProperty(newObj, key, desc);
53
+ } else {
54
+ newObj[key] = obj[key];
55
+ }
56
+ }
57
+ }
58
+ newObj.default = obj;
59
+ if (cache) {
60
+ cache.set(obj, newObj);
61
+ }
62
+ return newObj;
63
+ }
21
64
  // From: https://github.com/sindresorhus/cli-spinners/blob/00de8fbeee16fa49502fa4f687449f70f2c8ca2c/spinners.json#L2
22
65
  var spinner = {
23
66
  interval: 80,
@@ -52,7 +95,13 @@ var POINTERS = {
52
95
  }, _figures.default.pointer)
53
96
  };
54
97
  function ChildProcess(param) {
55
- var title = param.title, state = param.state, lines = param.lines, isExpanded = param.isExpanded;
98
+ var id = param.id;
99
+ var store = (0, _react.useContext)(_Store.default);
100
+ var appState = (0, _zustand.useStore)(store);
101
+ var item = appState.processes.find(function(x) {
102
+ return x.id === id;
103
+ });
104
+ var title = item.title, state = item.state, lines = item.lines, isExpanded = item.isExpanded;
56
105
  var icon = isExpanded ? POINTERS[state] || POINTERS.default : ICONS[state];
57
106
  var output = state === 'running' && lines.length ? lines[lines.length - 1] : undefined;
58
107
  var errors = state !== 'running' ? lines.filter(function(line) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, Text } from '../ink.mjs';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { Line, State } 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 title: string;\n state: State;\n lines: Line[];\n isExpanded?: boolean;\n};\n\nexport default function ChildProcess({ title, state, lines, isExpanded }: ChildProcessProps) {\n const icon = isExpanded ? POINTERS[state] || POINTERS.default : 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 <Box flexDirection=\"column\">\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 {errors.length > 0 && (\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>{line.text}</Text>\n </Box>\n ))}\n </Box>\n )}\n </Box>\n );\n}\n"],"names":["ChildProcess","spinner","interval","frames","ICONS","error","Text","color","figures","cross","success","tick","running","Spinner","POINTERS","pointer","default","title","state","lines","isExpanded","icon","output","length","undefined","errors","filter","line","type","LineType","stderr","Box","flexDirection","marginRight","marginLeft","arrowRight","text","map","index","key","height"],"mappings":";;;;+BAgCA;;;eAAwBA;;;4DAhCN;mBACQ;8DACN;8DACA;qBAGK;;;;;;AAEzB,oHAAoH;AACpH,IAAMC,UAAU;IACdC,UAAU;IACVC,QAAQ;QAAC;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;KAAI;AAC5D;AAEA,IAAMC,QAAQ;IACZC,qBAAO,6BAACC,SAAI;QAACC,OAAM;OAAOC,gBAAO,CAACC,KAAK;IACvCC,uBAAS,6BAACJ,SAAI;QAACC,OAAM;OAASC,gBAAO,CAACG,IAAI;IAC1CC,uBAAS,6BAACC,gBAAO,EAAKZ;AACxB;AAEA,IAAMa,WAAW;IACfT,qBAAO,6BAACC,SAAI;QAACC,OAAM;OAAOC,gBAAO,CAACO,OAAO;IACzCC,uBAAS,6BAACV,SAAI;QAACC,OAAM;OAAUC,gBAAO,CAACO,OAAO;AAChD;AASe,SAASf,aAAa,KAAsD;QAApDiB,QAAF,MAAEA,OAAOC,QAAT,MAASA,OAAOC,QAAhB,MAAgBA,OAAOC,aAAvB,MAAuBA;IAC1D,IAAMC,OAAOD,aAAaN,QAAQ,CAACI,MAAM,IAAIJ,SAASE,OAAO,GAAGZ,KAAK,CAACc,MAAM;IAC5E,IAAMI,SAASJ,UAAU,aAAaC,MAAMI,MAAM,GAAGJ,KAAK,CAACA,MAAMI,MAAM,GAAG,EAAE,GAAGC;IAC/E,IAAMC,SAASP,UAAU,YAAYC,MAAMO,MAAM,CAAC,SAACC;eAASA,KAAKC,IAAI,KAAKC,eAAQ,CAACC,MAAM;SAAI,EAAE;IAE/F,qBACE,6BAACC,QAAG;QAACC,eAAc;qBACjB,6BAACD,QAAG,sBACF,6BAACA,QAAG;QAACE,aAAa;qBAChB,6BAAC3B,SAAI,QAAEe,sBAET,6BAACf,SAAI,QAAEW,SAERK,uBACC,6BAACS,QAAG;QAACG,YAAY;qBACf,6BAAC5B,SAAI;QAACC,OAAM;OAAQ,AAAC,GAAwBe,OAAtBd,gBAAO,CAAC2B,UAAU,EAAC,KAAe,OAAZb,OAAOc,IAAI,MAExDZ,WACHC,OAAOF,MAAM,GAAG,mBACf,6BAACQ,QAAG;QAACC,eAAc;QAASE,YAAY;OACrCf,MAAMkB,GAAG,CAAC,SAACV,MAAMW;eAChB,8DAA8D;sBAC9D,6BAACP,QAAG;YAACQ,KAAKD;YAAON,eAAc;YAASQ,QAAQ;yBAC9C,6BAAClC,SAAI,QAAEqB,KAAKS,IAAI;;AAO9B"}
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\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 { title, state, lines, isExpanded } = item;\n\n const icon = isExpanded ? POINTERS[state] || POINTERS.default : 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 <Box flexDirection=\"column\">\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 {errors.length > 0 && (\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>{line.text}</Text>\n </Box>\n ))}\n </Box>\n )}\n </Box>\n );\n}\n"],"names":["ChildProcess","spinner","interval","frames","ICONS","error","Text","color","figures","cross","success","tick","running","Spinner","POINTERS","pointer","default","id","store","useContext","StoreContext","appState","useStore","item","processes","find","x","title","state","lines","isExpanded","icon","output","length","undefined","errors","filter","line","type","LineType","stderr","Box","flexDirection","marginRight","marginLeft","arrowRight","text","map","index","key","height"],"mappings":";;;;+BA+BA;;;eAAwBA;;;6DA/BU;uBACT;4DACA;mBACC;8DACN;8DACA;qBAGK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzB,oHAAoH;AACpH,IAAMC,UAAU;IACdC,UAAU;IACVC,QAAQ;QAAC;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;KAAI;AAC5D;AAEA,IAAMC,QAAQ;IACZC,qBAAO,6BAACC,SAAI;QAACC,OAAM;OAAOC,gBAAO,CAACC,KAAK;IACvCC,uBAAS,6BAACJ,SAAI;QAACC,OAAM;OAASC,gBAAO,CAACG,IAAI;IAC1CC,uBAAS,6BAACC,gBAAO,EAAKZ;AACxB;AAEA,IAAMa,WAAW;IACfT,qBAAO,6BAACC,SAAI;QAACC,OAAM;OAAOC,gBAAO,CAACO,OAAO;IACzCC,uBAAS,6BAACV,SAAI;QAACC,OAAM;OAAUC,gBAAO,CAACO,OAAO;AAChD;AAMe,SAASf,aAAa,KAAyB;QAAzB,AAAEiB,KAAF,MAAEA;IACrC,IAAMC,QAAQC,IAAAA,iBAAU,EAACC,cAAY;IACrC,IAAMC,WAAWC,IAAAA,iBAAQ,EAACJ;IAC1B,IAAMK,OAAOF,SAASG,SAAS,CAACC,IAAI,CAAC,SAACC;eAAMA,EAAET,EAAE,KAAKA;;IACrD,IAAQU,QAAoCJ,KAApCI,OAAOC,QAA6BL,KAA7BK,OAAOC,QAAsBN,KAAtBM,OAAOC,aAAeP,KAAfO;IAE7B,IAAMC,OAAOD,aAAahB,QAAQ,CAACc,MAAM,IAAId,SAASE,OAAO,GAAGZ,KAAK,CAACwB,MAAM;IAC5E,IAAMI,SAASJ,UAAU,aAAaC,MAAMI,MAAM,GAAGJ,KAAK,CAACA,MAAMI,MAAM,GAAG,EAAE,GAAGC;IAC/E,IAAMC,SAASP,UAAU,YAAYC,MAAMO,MAAM,CAAC,SAACC;eAASA,KAAKC,IAAI,KAAKC,eAAQ,CAACC,MAAM;SAAI,EAAE;IAE/F,qBACE,6BAACC,QAAG;QAACC,eAAc;qBACjB,6BAACD,QAAG,sBACF,6BAACA,QAAG;QAACE,aAAa;qBAChB,6BAACrC,SAAI,QAAEyB,sBAET,6BAACzB,SAAI,QAAEqB,SAERK,uBACC,6BAACS,QAAG;QAACG,YAAY;qBACf,6BAACtC,SAAI;QAACC,OAAM;OAAQ,AAAC,GAAwByB,OAAtBxB,gBAAO,CAACqC,UAAU,EAAC,KAAe,OAAZb,OAAOc,IAAI,MAExDZ,WACHC,OAAOF,MAAM,GAAG,mBACf,6BAACQ,QAAG;QAACC,eAAc;QAASE,YAAY;OACrCf,MAAMkB,GAAG,CAAC,SAACV,MAAMW;eAChB,8DAA8D;sBAC9D,6BAACP,QAAG;YAACQ,KAAKD;YAAON,eAAc;YAASQ,QAAQ;yBAC9C,6BAAC5C,SAAI,QAAE+B,KAAKS,IAAI;;AAO9B"}
@@ -0,0 +1,13 @@
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 _react = require("react");
12
+ var _default = /*#__PURE__*/ (0, _react.createContext)(undefined);
13
+ /* 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/contexts/Store.tsx"],"sourcesContent":["import { createContext } from 'react';\nexport default createContext(undefined);\n"],"names":["createContext","undefined"],"mappings":";;;;+BACA;;;eAAA;;;qBAD8B;IAC9B,yBAAeA,IAAAA,oBAAa,EAACC"}
@@ -8,80 +8,94 @@ Object.defineProperty(exports, "default", {
8
8
  return createApp;
9
9
  }
10
10
  });
11
- var _liluuid = /*#__PURE__*/ _interop_require_default(require("lil-uuid"));
12
11
  var _react = /*#__PURE__*/ _interop_require_default(require("react"));
12
+ var _resolveoncecb = /*#__PURE__*/ _interop_require_default(require("resolve-once-cb"));
13
+ var _zustand = require("zustand");
13
14
  var _App = /*#__PURE__*/ _interop_require_default(require("./components/App.cjs"));
15
+ var _Store = /*#__PURE__*/ _interop_require_default(require("./contexts/Store.cjs"));
14
16
  var _ink = require("./ink.cjs");
15
- function _define_property(obj, key, value) {
16
- if (key in obj) {
17
- Object.defineProperty(obj, key, {
18
- value: value,
19
- enumerable: true,
20
- configurable: true,
21
- writable: true
22
- });
23
- } else {
24
- obj[key] = value;
25
- }
26
- return obj;
17
+ function _array_like_to_array(arr, len) {
18
+ if (len == null || len > arr.length) len = arr.length;
19
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
20
+ return arr2;
21
+ }
22
+ function _array_without_holes(arr) {
23
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
27
24
  }
28
25
  function _interop_require_default(obj) {
29
26
  return obj && obj.__esModule ? obj : {
30
27
  default: obj
31
28
  };
32
29
  }
33
- function _object_spread(target) {
34
- for(var i = 1; i < arguments.length; i++){
35
- var source = arguments[i] != null ? arguments[i] : {};
36
- var ownKeys = Object.keys(source);
37
- if (typeof Object.getOwnPropertySymbols === "function") {
38
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
39
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
40
- }));
41
- }
42
- ownKeys.forEach(function(key) {
43
- _define_property(target, key, source[key]);
44
- });
45
- }
46
- return target;
30
+ function _iterable_to_array(iter) {
31
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
32
+ }
33
+ function _non_iterable_spread() {
34
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
47
35
  }
36
+ function _to_consumable_array(arr) {
37
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
38
+ }
39
+ function _unsupported_iterable_to_array(o, minLen) {
40
+ if (!o) return;
41
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
42
+ var n = Object.prototype.toString.call(o).slice(8, -1);
43
+ if (n === "Object" && o.constructor) n = o.constructor.name;
44
+ if (n === "Map" || n === "Set") return Array.from(n);
45
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
46
+ }
47
+ var initialize = (0, _resolveoncecb.default)(function(cb) {
48
+ return setTimeout(function() {
49
+ return cb();
50
+ }, 0);
51
+ });
48
52
  function createApp() {
49
53
  var refCount = 0;
50
- var list = null;
54
+ var store = null;
51
55
  var inkApp = null;
56
+ var _waiting = [];
52
57
  return {
53
- addItem: function addItem(data) {
54
- if (!list) throw new Error('Expecting list');
55
- var item = _object_spread({
56
- id: (0, _liluuid.default)(),
57
- title: '',
58
- state: 'pending',
59
- lines: []
60
- }, data);
61
- list.push(item);
62
- return item;
63
- },
64
- rerender: function rerender() {
65
- if (inkApp) inkApp.rerender(/*#__PURE__*/ _react.default.createElement(_App.default, {
66
- list: list
67
- }));
68
- },
69
- retain: function retain() {
70
- if (++refCount > 1) return;
71
- if (inkApp) throw new Error('Not expecting app');
72
- list = [];
73
- inkApp = (0, _ink.render)(/*#__PURE__*/ _react.default.createElement(_App.default, {
74
- list: list
75
- }), {
76
- patchConsole: false
58
+ retain: function retain(fn) {
59
+ initialize(function() {
60
+ if (++refCount > 1) return fn(store);
61
+ if (store) throw new Error('Not expecting store');
62
+ store = (0, _zustand.createStore)()(function(set) {
63
+ return {
64
+ processes: [],
65
+ addProcess: function(process1) {
66
+ return set(function(state) {
67
+ return {
68
+ processes: _to_consumable_array(state.processes).concat([
69
+ process1
70
+ ])
71
+ };
72
+ });
73
+ },
74
+ updateProcess: function(process1) {
75
+ return set(function(state) {
76
+ return {
77
+ processes: state.processes.map(function(x) {
78
+ return x.id === process1.id ? process1 : x;
79
+ })
80
+ };
81
+ });
82
+ }
83
+ };
84
+ });
85
+ inkApp = (0, _ink.render)(/*#__PURE__*/ _react.default.createElement(_Store.default.Provider, {
86
+ value: store
87
+ }, /*#__PURE__*/ _react.default.createElement(_App.default, null)), {
88
+ patchConsole: false
89
+ });
90
+ return fn(store);
77
91
  });
78
92
  },
79
93
  release: function release() {
80
94
  if (--refCount > 0) return;
81
- if (!inkApp) throw new Error('Expecting app');
95
+ if (!store) throw new Error('Expecting store');
96
+ store = null;
82
97
  inkApp.unmount();
83
98
  inkApp = null;
84
- list = null;
85
99
  process.stdout.write('\x1b[?25h'); // show cursor
86
100
  }
87
101
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import uuid from 'lil-uuid';\nimport React from 'react';\nimport App from './components/App';\n// @ts-ignore\nimport { type Instance, render } from './ink.mjs';\nimport type { ChildProcess } from './types';\n\nexport default function createApp() {\n let refCount = 0;\n let list: ChildProcess[] | null = null;\n let inkApp: Instance | null = null;\n\n return {\n addItem(data: Partial<ChildProcess>) {\n if (!list) throw new Error('Expecting list');\n const item = { id: uuid(), title: '', state: 'pending', lines: [], ...data } as ChildProcess;\n list.push(item);\n return item;\n },\n rerender() {\n if (inkApp) inkApp.rerender(<App list={list} />);\n },\n retain() {\n if (++refCount > 1) return;\n if (inkApp) throw new Error('Not expecting app');\n list = [];\n inkApp = render(<App list={list} />, { patchConsole: false });\n },\n release() {\n if (--refCount > 0) return;\n if (!inkApp) throw new Error('Expecting app');\n inkApp.unmount();\n inkApp = null;\n list = null;\n process.stdout.write('\\x1b[?25h'); // show cursor\n },\n };\n}\n"],"names":["createApp","refCount","list","inkApp","addItem","data","Error","item","id","uuid","title","state","lines","push","rerender","App","retain","render","patchConsole","release","unmount","process","stdout","write"],"mappings":";;;;+BAOA;;;eAAwBA;;;8DAPP;4DACC;0DACF;mBAEsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGvB,SAASA;IACtB,IAAIC,WAAW;IACf,IAAIC,OAA8B;IAClC,IAAIC,SAA0B;IAE9B,OAAO;QACLC,SAAAA,SAAAA,QAAQC,IAA2B;YACjC,IAAI,CAACH,MAAM,MAAM,IAAII,MAAM;YAC3B,IAAMC,OAAO;gBAAEC,IAAIC,IAAAA,gBAAI;gBAAIC,OAAO;gBAAIC,OAAO;gBAAWC,OAAO,EAAE;eAAKP;YACtEH,KAAKW,IAAI,CAACN;YACV,OAAOA;QACT;QACAO,UAAAA,SAAAA;YACE,IAAIX,QAAQA,OAAOW,QAAQ,eAAC,6BAACC,YAAG;gBAACb,MAAMA;;QACzC;QACAc,QAAAA,SAAAA;YACE,IAAI,EAAEf,WAAW,GAAG;YACpB,IAAIE,QAAQ,MAAM,IAAIG,MAAM;YAC5BJ,OAAO,EAAE;YACTC,SAASc,IAAAA,WAAM,gBAAC,6BAACF,YAAG;gBAACb,MAAMA;gBAAU;gBAAEgB,cAAc;YAAM;QAC7D;QACAC,SAAAA,SAAAA;YACE,IAAI,EAAElB,WAAW,GAAG;YACpB,IAAI,CAACE,QAAQ,MAAM,IAAIG,MAAM;YAC7BH,OAAOiB,OAAO;YACdjB,SAAS;YACTD,OAAO;YACPmB,QAAQC,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;QACnD;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import React from 'react';\nimport resolveOnce from 'resolve-once-cb';\nimport { createStore } from 'zustand';\nimport App from './components/App';\nimport StoreContext from './contexts/Store';\n\n// @ts-ignore\nimport { type Instance, render } from './ink.mjs';\nimport type { AppState } from './types';\n\nconst initialize = resolveOnce((cb) => setTimeout(() => cb(), 0));\n\nexport default function createApp() {\n let refCount = 0;\n let store = null;\n let inkApp: Instance | null = null;\n const _waiting = [];\n\n return {\n retain(fn) {\n initialize(() => {\n if (++refCount > 1) return fn(store);\n if (store) throw new Error('Not expecting store');\n store = createStore<AppState>()((set) => ({\n processes: [],\n addProcess: (process) => set((state) => ({ processes: [...state.processes, process] })),\n updateProcess: (process) => set((state) => ({ processes: state.processes.map((x) => (x.id === process.id ? process : x)) })),\n }));\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\n });\n },\n release() {\n if (--refCount > 0) return;\n if (!store) throw new Error('Expecting store');\n store = null;\n inkApp.unmount();\n inkApp = null;\n process.stdout.write('\\x1b[?25h'); // show cursor\n },\n };\n}\n"],"names":["createApp","initialize","resolveOnce","cb","setTimeout","refCount","store","inkApp","_waiting","retain","fn","Error","createStore","set","processes","addProcess","process","state","updateProcess","map","x","id","render","StoreContext","Provider","value","App","patchConsole","release","unmount","stdout","write"],"mappings":";;;;+BAYA;;;eAAwBA;;;4DAZN;oEACM;uBACI;0DACZ;4DACS;mBAGa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGtC,IAAMC,aAAaC,IAAAA,sBAAW,EAAC,SAACC;WAAOC,WAAW;eAAMD;OAAM;;AAE/C,SAASH;IACtB,IAAIK,WAAW;IACf,IAAIC,QAAQ;IACZ,IAAIC,SAA0B;IAC9B,IAAMC,WAAW,EAAE;IAEnB,OAAO;QACLC,QAAAA,SAAAA,OAAOC,EAAE;YACPT,WAAW;gBACT,IAAI,EAAEI,WAAW,GAAG,OAAOK,GAAGJ;gBAC9B,IAAIA,OAAO,MAAM,IAAIK,MAAM;gBAC3BL,QAAQM,IAAAA,oBAAW,IAAa,SAACC;2BAAS;wBACxCC,WAAW,EAAE;wBACbC,YAAY,SAACC;mCAAYH,IAAI,SAACI;uCAAW;oCAAEH,WAAW,AAAC,qBAAGG,MAAMH,SAAS,SAAnB;wCAAqBE;qCAAQ;gCAAC;;;wBACpFE,eAAe,SAACF;mCAAYH,IAAI,SAACI;uCAAW;oCAAEH,WAAWG,MAAMH,SAAS,CAACK,GAAG,CAAC,SAACC;+CAAOA,EAAEC,EAAE,KAAKL,SAAQK,EAAE,GAAGL,WAAUI;;gCAAI;;;oBAC3H;;gBACAb,SAASe,IAAAA,WAAM,gBACb,6BAACC,cAAY,CAACC,QAAQ;oBAACC,OAAOnB;iCAC5B,6BAACoB,YAAG,UAEN;oBAAEC,cAAc;gBAAM;gBAExB,OAAOjB,GAAGJ;YACZ;QACF;QACAsB,SAAAA,SAAAA;YACE,IAAI,EAAEvB,WAAW,GAAG;YACpB,IAAI,CAACC,OAAO,MAAM,IAAIK,MAAM;YAC5BL,QAAQ;YACRC,OAAOsB,OAAO;YACdtB,SAAS;YACTS,QAAQc,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;QACnD;IACF;AACF"}
@@ -10,21 +10,21 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _readablestream = require("readable-stream");
12
12
  var regEx = /\r\n|[\n\v\f\r\x85\u2028\u2029]/g;
13
- function addLines(addLine) {
13
+ function addLines(fn) {
14
14
  var last = '';
15
15
  var stream = new _readablestream.Writable({
16
16
  write: function write(chunk, _enc, callback) {
17
17
  var more = last + chunk.toString('utf8');
18
18
  var lines = more.split(regEx);
19
19
  last = lines.pop();
20
- lines.forEach(function(line) {
21
- return addLine(line);
22
- });
20
+ if (lines.length) fn(lines);
23
21
  callback();
24
22
  }
25
23
  });
26
24
  stream.on('finish', function() {
27
- if (last.length) addLine(last);
25
+ if (last.length) fn([
26
+ last
27
+ ]);
28
28
  last = '';
29
29
  });
30
30
  return stream;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nconst regEx = /\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g;\n\nexport default function addLines(addLine) {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(regEx);\n last = lines.pop();\n lines.forEach((line) => addLine(line));\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) addLine(last);\n last = '';\n });\n return stream;\n}\n"],"names":["addLines","regEx","addLine","last","stream","Writable","write","chunk","_enc","callback","more","toString","lines","split","pop","forEach","line","on","length"],"mappings":";;;;+BAIA;;;eAAwBA;;;8BAJC;AAEzB,IAAMC,QAAQ;AAEC,SAASD,SAASE,OAAO;IACtC,IAAIC,OAAO;IAEX,IAAMC,SAAS,IAAIC,wBAAQ,CAAC;QAC1BC,OAAAA,SAAAA,MAAMC,KAAK,EAAEC,IAAI,EAAEC,QAAQ;YACzB,IAAMC,OAAOP,OAAOI,MAAMI,QAAQ,CAAC;YACnC,IAAMC,QAAQF,KAAKG,KAAK,CAACZ;YACzBE,OAAOS,MAAME,GAAG;YAChBF,MAAMG,OAAO,CAAC,SAACC;uBAASd,QAAQc;;YAChCP;QACF;IACF;IACAL,OAAOa,EAAE,CAAC,UAAU;QAClB,IAAId,KAAKe,MAAM,EAAEhB,QAAQC;QACzBA,OAAO;IACT;IACA,OAAOC;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nconst regEx = /\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g;\n\nexport default function addLines(fn) {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(regEx);\n last = lines.pop();\n if (lines.length) fn(lines);\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) fn([last]);\n last = '';\n });\n return stream;\n}\n"],"names":["addLines","regEx","fn","last","stream","Writable","write","chunk","_enc","callback","more","toString","lines","split","pop","length","on"],"mappings":";;;;+BAIA;;;eAAwBA;;;8BAJC;AAEzB,IAAMC,QAAQ;AAEC,SAASD,SAASE,EAAE;IACjC,IAAIC,OAAO;IAEX,IAAMC,SAAS,IAAIC,wBAAQ,CAAC;QAC1BC,OAAAA,SAAAA,MAAMC,KAAK,EAAEC,IAAI,EAAEC,QAAQ;YACzB,IAAMC,OAAOP,OAAOI,MAAMI,QAAQ,CAAC;YACnC,IAAMC,QAAQF,KAAKG,KAAK,CAACZ;YACzBE,OAAOS,MAAME,GAAG;YAChB,IAAIF,MAAMG,MAAM,EAAEb,GAAGU;YACrBH;QACF;IACF;IACAL,OAAOY,EAAE,CAAC,UAAU;QAClB,IAAIb,KAAKY,MAAM,EAAEb,GAAG;YAACC;SAAK;QAC1BA,OAAO;IACT;IACA,OAAOC;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["// @ts-ignore\nexport type { SpawnOptions, SpawnCallback, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n};\n\nexport enum LineType {\n stdout = 1,\n stderr = 2,\n}\nexport type Line = {\n type: LineType;\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n title: string;\n state: State;\n lines: Line[];\n};\n"],"names":["LineType"],"mappings":"AAAA,aAAa;;;;;+BAODA;;;eAAAA;;;AAAL,IAAA,AAAKA,kCAAAA;;;WAAAA"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/types.ts"],"sourcesContent":["// @ts-ignore\nexport type { SpawnOptions, SpawnCallback, SpawnResult } from 'cross-spawn-cb';\n\nexport type TerminalOptions = {\n group?: string;\n};\n\nexport enum LineType {\n stdout = 1,\n stderr = 2,\n}\nexport type Line = {\n type: LineType;\n text: string;\n};\n\nexport type State = 'running' | 'error' | 'success';\nexport type ChildProcess = {\n id: string;\n title: string;\n state: State;\n lines: Line[];\n isExpanded: boolean;\n};\n\nexport interface AppState {\n processes: ChildProcess[];\n addProcess: (process: ChildProcess) => void;\n updateProcess: (process: ChildProcess) => void;\n}\n"],"names":["LineType"],"mappings":"AAAA,aAAa;;;;;+BAODA;;;eAAAA;;;AAAL,IAAA,AAAKA,kCAAAA;;;WAAAA"}