spawn-term 0.1.27 → 0.1.29

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.
@@ -114,9 +114,7 @@ var Lines = /*#__PURE__*/ (0, _react.memo)(function Lines(param) {
114
114
  /*#__PURE__*/ _react.default.createElement(_ink.Box, {
115
115
  key: index,
116
116
  flexDirection: "column"
117
- }, /*#__PURE__*/ _react.default.createElement(_ink.Text, {
118
- color: line.type === _types.DataType.stderr ? 'red' : 'black'
119
- }, line.text)));
117
+ }, /*#__PURE__*/ _react.default.createElement(_ink.Text, null, line.text)));
120
118
  }));
121
119
  });
122
120
  var Expanded = /*#__PURE__*/ (0, _react.memo)(function Expanded(param) {
@@ -161,10 +159,11 @@ var Contracted = /*#__PURE__*/ (0, _react.memo)(function Contracted(param) {
161
159
  ]);
162
160
  var output = (0, _react.useMemo)(function() {
163
161
  return lines.filter(function(line) {
164
- return line.text.length > 0;
162
+ return line.text.length > 0 && errors.indexOf(line) < 0;
165
163
  }).pop() || '';
166
164
  }, [
167
- lines
165
+ lines,
166
+ errors
168
167
  ]);
169
168
  return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
170
169
  flexDirection: "column"
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React, { memo, useMemo } from 'react';\nimport { Box, Text } from '../ink.mjs';\nimport _ansiRegex from '../lib/ansiRegex';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { ChildProcess as ChildProcessT, Data, State } from '../types';\nimport { DataType } from '../types';\n\ntype ItemProps = {\n item: ChildProcessT;\n};\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\ntype HeaderProps = {\n group?: string;\n title: string;\n state: State;\n};\n\nconst Header = memo(\n function Header({ group, title, state }: HeaderProps) {\n const icon = ICONS[state];\n\n return (\n <Box>\n <Box marginRight={1}>{icon}</Box>\n {group && <Text bold>{`${group}${figures.pointer} `}</Text>}\n <Text>{title}</Text>\n </Box>\n );\n },\n (a, b) => a.group === b.group && a.title === b.title && a.state === b.state\n);\n\ntype OutputProps = {\n output: Data;\n};\n\nconst Output = memo(function Output({ output }: OutputProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{output.text}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Data[];\n};\n\nconst Lines = memo(function Lines({ lines }: LinesProps) {\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\">\n <Text color={line.type === DataType.stderr ? 'red' : 'black'}>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { data } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={data} />\n </Box>\n );\n});\n\nconst linesRegex = /\\r\\n|\\n/g;\nconst ansiRegex = _ansiRegex();\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, data } = item;\n\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(linesRegex).forEach((text) => lines.push({ type: x.type, text: text.replace(ansiRegex, '') }));\n });\n return lines;\n }, [data]);\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === DataType.stderr), [lines]);\n const output = useMemo(() => lines.filter((line) => line.text.length > 0).pop() || '', [lines]);\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n {state === 'running' && <Output output={output} />}\n {errors.length > 0 && <Lines lines={errors} />}\n </Box>\n );\n});\n\nexport default memo(function ChildProcess({ item }: ItemProps) {\n const { expanded } = item;\n return expanded ? <Expanded item={item} /> : <Contracted item={item} />;\n});\n"],"names":["spinner","interval","frames","ICONS","error","Text","color","figures","cross","success","tick","running","Spinner","Header","memo","group","title","state","icon","Box","marginRight","bold","pointer","a","b","Output","output","marginLeft","text","Lines","lines","flexDirection","map","line","index","key","type","DataType","stderr","Expanded","item","data","linesRegex","ansiRegex","_ansiRegex","Contracted","useMemo","forEach","x","split","push","replace","errors","filter","length","pop","ChildProcess","expanded"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React, { memo, useMemo } from 'react';\nimport { Box, Text } from '../ink.mjs';\nimport _ansiRegex from '../lib/ansiRegex';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { ChildProcess as ChildProcessT, Data, State } from '../types';\nimport { DataType } from '../types';\n\ntype ItemProps = {\n item: ChildProcessT;\n};\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\ntype HeaderProps = {\n group?: string;\n title: string;\n state: State;\n};\n\nconst Header = memo(\n function Header({ group, title, state }: HeaderProps) {\n const icon = ICONS[state];\n\n return (\n <Box>\n <Box marginRight={1}>{icon}</Box>\n {group && <Text bold>{`${group}${figures.pointer} `}</Text>}\n <Text>{title}</Text>\n </Box>\n );\n },\n (a, b) => a.group === b.group && a.title === b.title && a.state === b.state\n);\n\ntype OutputProps = {\n output: Data;\n};\n\nconst Output = memo(function Output({ output }: OutputProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{output.text}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Data[];\n};\n\nconst Lines = memo(function Lines({ lines }: LinesProps) {\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\">\n {/* <Text color={line.type === DataType.stderr ? 'red' : 'black'}>{line.text}</Text> */}\n <Text>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { data } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={data} />\n </Box>\n );\n});\n\nconst linesRegex = /\\r\\n|\\n/g;\nconst ansiRegex = _ansiRegex();\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, data } = item;\n\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(linesRegex).forEach((text) => lines.push({ type: x.type, text: text.replace(ansiRegex, '') }));\n });\n return lines;\n }, [data]);\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === DataType.stderr), [lines]);\n const output = useMemo(() => lines.filter((line) => line.text.length > 0 && errors.indexOf(line) < 0).pop() || '', [lines, errors]);\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n {state === 'running' && <Output output={output} />}\n {errors.length > 0 && <Lines lines={errors} />}\n </Box>\n );\n});\n\nexport default memo(function ChildProcess({ item }: ItemProps) {\n const { expanded } = item;\n return expanded ? <Expanded item={item} /> : <Contracted item={item} />;\n});\n"],"names":["spinner","interval","frames","ICONS","error","Text","color","figures","cross","success","tick","running","Spinner","Header","memo","group","title","state","icon","Box","marginRight","bold","pointer","a","b","Output","output","marginLeft","text","Lines","lines","flexDirection","map","line","index","key","Expanded","item","data","linesRegex","ansiRegex","_ansiRegex","Contracted","useMemo","forEach","x","split","push","type","replace","errors","filter","DataType","stderr","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
@@ -52,9 +52,7 @@ const Lines = /*#__PURE__*/ memo(function Lines({ lines }) {
52
52
  /*#__PURE__*/ React.createElement(Box, {
53
53
  key: index,
54
54
  flexDirection: "column"
55
- }, /*#__PURE__*/ React.createElement(Text, {
56
- color: line.type === DataType.stderr ? 'red' : 'black'
57
- }, line.text))));
55
+ }, /*#__PURE__*/ React.createElement(Text, null, line.text))));
58
56
  });
59
57
  const Expanded = /*#__PURE__*/ memo(function Expanded({ item }) {
60
58
  const { data } = item;
@@ -88,8 +86,9 @@ const Contracted = /*#__PURE__*/ memo(function Contracted({ item }) {
88
86
  const errors = useMemo(()=>lines.filter((line)=>line.type === DataType.stderr), [
89
87
  lines
90
88
  ]);
91
- const output = useMemo(()=>lines.filter((line)=>line.text.length > 0).pop() || '', [
92
- lines
89
+ const output = useMemo(()=>lines.filter((line)=>line.text.length > 0 && errors.indexOf(line) < 0).pop() || '', [
90
+ lines,
91
+ errors
93
92
  ]);
94
93
  return /*#__PURE__*/ React.createElement(Box, {
95
94
  flexDirection: "column"
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React, { memo, useMemo } from 'react';\nimport { Box, Text } from '../ink.mjs';\nimport _ansiRegex from '../lib/ansiRegex';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { ChildProcess as ChildProcessT, Data, State } from '../types';\nimport { DataType } from '../types';\n\ntype ItemProps = {\n item: ChildProcessT;\n};\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\ntype HeaderProps = {\n group?: string;\n title: string;\n state: State;\n};\n\nconst Header = memo(\n function Header({ group, title, state }: HeaderProps) {\n const icon = ICONS[state];\n\n return (\n <Box>\n <Box marginRight={1}>{icon}</Box>\n {group && <Text bold>{`${group}${figures.pointer} `}</Text>}\n <Text>{title}</Text>\n </Box>\n );\n },\n (a, b) => a.group === b.group && a.title === b.title && a.state === b.state\n);\n\ntype OutputProps = {\n output: Data;\n};\n\nconst Output = memo(function Output({ output }: OutputProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{output.text}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Data[];\n};\n\nconst Lines = memo(function Lines({ lines }: LinesProps) {\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\">\n <Text color={line.type === DataType.stderr ? 'red' : 'black'}>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { data } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={data} />\n </Box>\n );\n});\n\nconst linesRegex = /\\r\\n|\\n/g;\nconst ansiRegex = _ansiRegex();\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, data } = item;\n\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(linesRegex).forEach((text) => lines.push({ type: x.type, text: text.replace(ansiRegex, '') }));\n });\n return lines;\n }, [data]);\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === DataType.stderr), [lines]);\n const output = useMemo(() => lines.filter((line) => line.text.length > 0).pop() || '', [lines]);\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n {state === 'running' && <Output output={output} />}\n {errors.length > 0 && <Lines lines={errors} />}\n </Box>\n );\n});\n\nexport default memo(function ChildProcess({ item }: ItemProps) {\n const { expanded } = item;\n return expanded ? <Expanded item={item} /> : <Contracted item={item} />;\n});\n"],"names":["React","memo","useMemo","Box","Text","_ansiRegex","figures","Spinner","DataType","spinner","interval","frames","ICONS","error","color","cross","success","tick","running","Header","group","title","state","icon","marginRight","bold","pointer","a","b","Output","output","marginLeft","text","Lines","lines","flexDirection","map","line","index","key","type","stderr","Expanded","item","data","linesRegex","ansiRegex","Contracted","forEach","x","split","push","replace","errors","filter","length","pop","ChildProcess","expanded"],"mappings":"AAAA,OAAOA,SAASC,IAAI,EAAEC,OAAO,QAAQ,QAAQ;AAC7C,SAASC,GAAG,EAAEC,IAAI,QAAQ,aAAa;AACvC,OAAOC,gBAAgB,mBAAmB;AAC1C,OAAOC,aAAa,iBAAiB;AACrC,OAAOC,aAAa,YAAY;AAGhC,SAASC,QAAQ,QAAQ,WAAW;AAMpC,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,oBAACT;QAAKU,OAAM;OAAOR,QAAQS,KAAK;IACvCC,uBAAS,oBAACZ;QAAKU,OAAM;OAASR,QAAQW,IAAI;IAC1CC,uBAAS,oBAACX,SAAYE;AACxB;AAQA,MAAMU,uBAASlB,KACb,SAASkB,OAAO,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAe;IAClD,MAAMC,OAAOX,KAAK,CAACU,MAAM;IAEzB,qBACE,oBAACnB,yBACC,oBAACA;QAAIqB,aAAa;OAAID,OACrBH,uBAAS,oBAAChB;QAAKqB,MAAAA;OAAM,GAAGL,QAAQd,QAAQoB,OAAO,CAAC,CAAC,CAAC,iBACnD,oBAACtB,YAAMiB;AAGb,GACA,CAACM,GAAGC,IAAMD,EAAEP,KAAK,KAAKQ,EAAER,KAAK,IAAIO,EAAEN,KAAK,KAAKO,EAAEP,KAAK,IAAIM,EAAEL,KAAK,KAAKM,EAAEN,KAAK;AAO7E,MAAMO,uBAAS5B,KAAK,SAAS4B,OAAO,EAAEC,MAAM,EAAe;IACzD,qBACE,oBAAC3B;QAAI4B,YAAY;qBACf,oBAAC3B;QAAKU,OAAM;OAAQgB,OAAOE,IAAI;AAGrC;AAMA,MAAMC,sBAAQhC,KAAK,SAASgC,MAAM,EAAEC,KAAK,EAAc;IACrD,qBACE,oBAAC/B;QAAIgC,eAAc;QAASJ,YAAY;OACrCG,MAAME,GAAG,CAAC,CAACC,MAAMC,QAChB,8DAA8D;sBAC9D,oBAACnC;YAAIoC,KAAKD;YAAOH,eAAc;yBAC7B,oBAAC/B;YAAKU,OAAOuB,KAAKG,IAAI,KAAKhC,SAASiC,MAAM,GAAG,QAAQ;WAAUJ,KAAKL,IAAI;AAKlF;AAEA,MAAMU,yBAAWzC,KAAK,SAASyC,SAAS,EAAEC,IAAI,EAAa;IACzD,MAAM,EAAEC,IAAI,EAAE,GAAGD;IAEjB,qBACE,oBAACxC;QAAIgC,eAAc;qBACjB,oBAAChB;QAAOC,OAAOuB,KAAKvB,KAAK;QAAEC,OAAOsB,KAAKtB,KAAK;QAAEC,OAAOqB,KAAKrB,KAAK;sBAC/D,oBAACW;QAAMC,OAAOU;;AAGpB;AAEA,MAAMC,aAAa;AACnB,MAAMC,YAAYzC;AAElB,MAAM0C,2BAAa9C,KAAK,SAAS8C,WAAW,EAAEJ,IAAI,EAAa;IAC7D,MAAM,EAAErB,KAAK,EAAEsB,IAAI,EAAE,GAAGD;IAExB,MAAMT,QAAQhC,QAAQ;QACpB,MAAMgC,QAAQ,EAAE;QAChBU,KAAKI,OAAO,CAAC,CAACC;YACZA,EAAEjB,IAAI,CAACkB,KAAK,CAACL,YAAYG,OAAO,CAAC,CAAChB,OAASE,MAAMiB,IAAI,CAAC;oBAAEX,MAAMS,EAAET,IAAI;oBAAER,MAAMA,KAAKoB,OAAO,CAACN,WAAW;gBAAI;QAC1G;QACA,OAAOZ;IACT,GAAG;QAACU;KAAK;IAET,iDAAiD;IACjD,MAAMS,SAASnD,QAAQ,IAAMgC,MAAMoB,MAAM,CAAC,CAACjB,OAASA,KAAKG,IAAI,KAAKhC,SAASiC,MAAM,GAAG;QAACP;KAAM;IAC3F,MAAMJ,SAAS5B,QAAQ,IAAMgC,MAAMoB,MAAM,CAAC,CAACjB,OAASA,KAAKL,IAAI,CAACuB,MAAM,GAAG,GAAGC,GAAG,MAAM,IAAI;QAACtB;KAAM;IAE9F,qBACE,oBAAC/B;QAAIgC,eAAc;qBACjB,oBAAChB;QAAOC,OAAOuB,KAAKvB,KAAK;QAAEC,OAAOsB,KAAKtB,KAAK;QAAEC,OAAOqB,KAAKrB,KAAK;QAC9DA,UAAU,2BAAa,oBAACO;QAAOC,QAAQA;QACvCuB,OAAOE,MAAM,GAAG,mBAAK,oBAACtB;QAAMC,OAAOmB;;AAG1C;AAEA,6BAAepD,KAAK,SAASwD,aAAa,EAAEd,IAAI,EAAa;IAC3D,MAAM,EAAEe,QAAQ,EAAE,GAAGf;IACrB,OAAOe,yBAAW,oBAAChB;QAASC,MAAMA;uBAAW,oBAACI;QAAWJ,MAAMA;;AACjE,GAAG"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import React, { memo, useMemo } from 'react';\nimport { Box, Text } from '../ink.mjs';\nimport _ansiRegex from '../lib/ansiRegex';\nimport figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { ChildProcess as ChildProcessT, Data, State } from '../types';\nimport { DataType } from '../types';\n\ntype ItemProps = {\n item: ChildProcessT;\n};\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\ntype HeaderProps = {\n group?: string;\n title: string;\n state: State;\n};\n\nconst Header = memo(\n function Header({ group, title, state }: HeaderProps) {\n const icon = ICONS[state];\n\n return (\n <Box>\n <Box marginRight={1}>{icon}</Box>\n {group && <Text bold>{`${group}${figures.pointer} `}</Text>}\n <Text>{title}</Text>\n </Box>\n );\n },\n (a, b) => a.group === b.group && a.title === b.title && a.state === b.state\n);\n\ntype OutputProps = {\n output: Data;\n};\n\nconst Output = memo(function Output({ output }: OutputProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{output.text}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Data[];\n};\n\nconst Lines = memo(function Lines({ lines }: LinesProps) {\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\">\n {/* <Text color={line.type === DataType.stderr ? 'red' : 'black'}>{line.text}</Text> */}\n <Text>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { data } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={data} />\n </Box>\n );\n});\n\nconst linesRegex = /\\r\\n|\\n/g;\nconst ansiRegex = _ansiRegex();\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, data } = item;\n\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(linesRegex).forEach((text) => lines.push({ type: x.type, text: text.replace(ansiRegex, '') }));\n });\n return lines;\n }, [data]);\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === DataType.stderr), [lines]);\n const output = useMemo(() => lines.filter((line) => line.text.length > 0 && errors.indexOf(line) < 0).pop() || '', [lines, errors]);\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n {state === 'running' && <Output output={output} />}\n {errors.length > 0 && <Lines lines={errors} />}\n </Box>\n );\n});\n\nexport default memo(function ChildProcess({ item }: ItemProps) {\n const { expanded } = item;\n return expanded ? <Expanded item={item} /> : <Contracted item={item} />;\n});\n"],"names":["React","memo","useMemo","Box","Text","_ansiRegex","figures","Spinner","DataType","spinner","interval","frames","ICONS","error","color","cross","success","tick","running","Header","group","title","state","icon","marginRight","bold","pointer","a","b","Output","output","marginLeft","text","Lines","lines","flexDirection","map","line","index","key","Expanded","item","data","linesRegex","ansiRegex","Contracted","forEach","x","split","push","type","replace","errors","filter","stderr","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spawn-term",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "description": "Formats spawn with for terminal grouping",
5
5
  "keywords": [
6
6
  "spawn",