spawn-term 0.1.38 → 0.1.40

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.
@@ -60,12 +60,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
60
60
  }
61
61
  return newObj;
62
62
  }
63
- var _REGEX_NEW_LINE = /\r\n|[\n\v\f\r\x85\u2028\u2029]/g;
64
63
  var REGEX_ANSI = (0, _ansiRegex.default)();
65
- var _DEFAULT_SUMMARY = {
66
- type: _types.LineType.stdout,
67
- text: ''
68
- };
69
64
  // From: https://github.com/sindresorhus/cli-spinners/blob/00de8fbeee16fa49502fa4f687449f70f2c8ca2c/spinners.json#L2
70
65
  var spinner = {
71
66
  interval: 80,
@@ -94,9 +89,7 @@ var ICONS = {
94
89
  var Header = /*#__PURE__*/ (0, _react.memo)(function Header(param) {
95
90
  var group = param.group, title = param.title, state = param.state;
96
91
  var icon = ICONS[state];
97
- return /*#__PURE__*/ _react.default.createElement(_ink.Box, null, /*#__PURE__*/ _react.default.createElement(_ink.Box, {
98
- marginRight: 1
99
- }, icon), group && /*#__PURE__*/ _react.default.createElement(_ink.Text, {
92
+ return /*#__PURE__*/ _react.default.createElement(_ink.Box, null, icon, group && /*#__PURE__*/ _react.default.createElement(_ink.Text, {
100
93
  bold: true
101
94
  }, "".concat(group).concat(_figures.default.pointer, " ")), /*#__PURE__*/ _react.default.createElement(_ink.Text, null, title));
102
95
  }, function(a, b) {
@@ -110,18 +103,18 @@ var RunningSummary = /*#__PURE__*/ (0, _react.memo)(function RunningSummary(para
110
103
  color: "gray"
111
104
  }, line.text.replace(REGEX_ANSI, '')));
112
105
  });
106
+ // @ts-ignore
107
+ var renderLine = function(line, index) {
108
+ return /*#__PURE__*/ _react.default.createElement("ink-text", {
109
+ key: index
110
+ }, line.text);
111
+ };
113
112
  var Lines = /*#__PURE__*/ (0, _react.memo)(function Lines(param) {
114
113
  var lines = param.lines;
115
114
  return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
116
115
  flexDirection: "column",
117
116
  marginLeft: 2
118
- }, lines.map(function(line, index) {
119
- return(// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
120
- /*#__PURE__*/ _react.default.createElement(_ink.Box, {
121
- key: index,
122
- flexDirection: "column"
123
- }, /*#__PURE__*/ _react.default.createElement(_ink.Text, null, line.text)));
124
- }));
117
+ }, lines.map(renderLine));
125
118
  });
126
119
  var Expanded = /*#__PURE__*/ (0, _react.memo)(function Expanded(param) {
127
120
  var item = param.item;
@@ -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, Line, State } from '../types';\nimport { LineType } from '../types';\n\nconst _REGEX_NEW_LINE = /\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g;\nconst REGEX_ANSI = ansiRegex();\nconst _DEFAULT_SUMMARY = { type: LineType.stdout, text: '' };\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 RunningSummaryProps = {\n line: Line;\n};\n\nconst RunningSummary = memo(function RunningSummary({ line }: RunningSummaryProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{line.text.replace(REGEX_ANSI, '')}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Line[];\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>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { lines } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={lines} />\n </Box>\n );\n});\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, lines } = item;\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === LineType.stderr), [lines]);\n const summary = 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' && summary && <RunningSummary line={summary} />}\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":["_REGEX_NEW_LINE","REGEX_ANSI","ansiRegex","_DEFAULT_SUMMARY","type","LineType","stdout","text","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","RunningSummary","line","marginLeft","replace","Lines","lines","flexDirection","map","index","key","Expanded","item","Contracted","errors","useMemo","filter","stderr","summary","length","indexOf","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, Line, State } from '../types';\nimport { LineType } from '../types';\n\nconst REGEX_ANSI = ansiRegex();\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 {icon}\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 RunningSummaryProps = {\n line: Line;\n};\n\nconst RunningSummary = memo(function RunningSummary({ line }: RunningSummaryProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{line.text.replace(REGEX_ANSI, '')}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Line[];\n};\n\n// @ts-ignore\nconst renderLine = (line, index) => <ink-text key={index}>{line.text}</ink-text>;\n\nconst Lines = memo(function Lines({ lines }: LinesProps) {\n return (\n <Box flexDirection=\"column\" marginLeft={2}>\n {lines.map(renderLine)}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { lines } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={lines} />\n </Box>\n );\n});\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, lines } = item;\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === LineType.stderr), [lines]);\n const summary = 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' && summary && <RunningSummary line={summary} />}\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":["REGEX_ANSI","ansiRegex","spinner","interval","frames","ICONS","error","Text","color","figures","cross","success","tick","running","Spinner","Header","memo","group","title","state","icon","Box","bold","pointer","a","b","RunningSummary","line","marginLeft","text","replace","renderLine","index","ink-text","key","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","useMemo","filter","type","LineType","stderr","summary","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
@@ -113,6 +113,6 @@ function Spinner(param) {
113
113
  interval,
114
114
  frames
115
115
  ]);
116
- return /*#__PURE__*/ _react.default.createElement(_ink.Text, null, "".concat(frames[index], " "));
116
+ return /*#__PURE__*/ _react.default.createElement(_ink.Text, null, frames[index]);
117
117
  }
118
118
  /* 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/Spinner.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Text } from '../ink.mjs';\n\nexport type SpinnerProps = {\n interval: number;\n frames: string[];\n};\n\nexport default function Spinner({ interval, frames }: SpinnerProps) {\n const [index, setIndex] = useState(0);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setIndex((index) => (index === frames.length - 1 ? 0 : index + 1));\n }, interval);\n return () => {\n clearInterval(timer);\n };\n }, [interval, frames]);\n\n return <Text>{`${frames[index]} `}</Text>;\n}\n"],"names":["Spinner","interval","frames","useState","index","setIndex","useEffect","timer","setInterval","length","clearInterval","Text"],"mappings":";;;;+BAQA;;;eAAwBA;;;6DARmB;mBACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAON,SAASA,QAAQ,KAAkC;QAAhCC,WAAF,MAAEA,UAAUC,SAAZ,MAAYA;IAC1C,IAA0BC,6BAAAA,IAAAA,eAAQ,EAAC,QAA5BC,QAAmBD,cAAZE,WAAYF;IAE1BG,IAAAA,gBAAS,EAAC;QACR,IAAMC,QAAQC,YAAY;YACxBH,SAAS,SAACD;uBAAWA,UAAUF,OAAOO,MAAM,GAAG,IAAI,IAAIL,QAAQ;;QACjE,GAAGH;QACH,OAAO;YACLS,cAAcH;QAChB;IACF,GAAG;QAACN;QAAUC;KAAO;IAErB,qBAAO,6BAACS,SAAI,QAAE,AAAC,GAAgB,OAAdT,MAAM,CAACE,MAAM,EAAC;AACjC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/Spinner.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Text } from '../ink.mjs';\n\nexport type SpinnerProps = {\n interval: number;\n frames: string[];\n};\n\nexport default function Spinner({ interval, frames }: SpinnerProps) {\n const [index, setIndex] = useState(0);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setIndex((index) => (index === frames.length - 1 ? 0 : index + 1));\n }, interval);\n return () => {\n clearInterval(timer);\n };\n }, [interval, frames]);\n\n return <Text>{frames[index]}</Text>;\n}\n"],"names":["Spinner","interval","frames","useState","index","setIndex","useEffect","timer","setInterval","length","clearInterval","Text"],"mappings":";;;;+BAQA;;;eAAwBA;;;6DARmB;mBACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAON,SAASA,QAAQ,KAAkC;QAAhCC,WAAF,MAAEA,UAAUC,SAAZ,MAAYA;IAC1C,IAA0BC,6BAAAA,IAAAA,eAAQ,EAAC,QAA5BC,QAAmBD,cAAZE,WAAYF;IAE1BG,IAAAA,gBAAS,EAAC;QACR,IAAMC,QAAQC,YAAY;YACxBH,SAAS,SAACD;uBAAWA,UAAUF,OAAOO,MAAM,GAAG,IAAI,IAAIL,QAAQ;;QACjE,GAAGH;QACH,OAAO;YACLS,cAAcH;QAChB;IACF,GAAG;QAACN;QAAUC;KAAO;IAErB,qBAAO,6BAACS,SAAI,QAAET,MAAM,CAACE,MAAM;AAC7B"}
@@ -4,12 +4,7 @@ import ansiRegex from '../lib/ansiRegex.mjs';
4
4
  import figures from '../lib/figures.mjs';
5
5
  import Spinner from './Spinner.mjs';
6
6
  import { LineType } from '../types.mjs';
7
- const _REGEX_NEW_LINE = /\r\n|[\n\v\f\r\x85\u2028\u2029]/g;
8
7
  const REGEX_ANSI = ansiRegex();
9
- const _DEFAULT_SUMMARY = {
10
- type: LineType.stdout,
11
- text: ''
12
- };
13
8
  // From: https://github.com/sindresorhus/cli-spinners/blob/00de8fbeee16fa49502fa4f687449f70f2c8ca2c/spinners.json#L2
14
9
  const spinner = {
15
10
  interval: 80,
@@ -37,9 +32,7 @@ const ICONS = {
37
32
  };
38
33
  const Header = /*#__PURE__*/ memo(function Header({ group, title, state }) {
39
34
  const icon = ICONS[state];
40
- return /*#__PURE__*/ React.createElement(Box, null, /*#__PURE__*/ React.createElement(Box, {
41
- marginRight: 1
42
- }, icon), group && /*#__PURE__*/ React.createElement(Text, {
35
+ return /*#__PURE__*/ React.createElement(Box, null, icon, group && /*#__PURE__*/ React.createElement(Text, {
43
36
  bold: true
44
37
  }, `${group}${figures.pointer} `), /*#__PURE__*/ React.createElement(Text, null, title));
45
38
  }, (a, b)=>a.group === b.group && a.title === b.title && a.state === b.state);
@@ -50,15 +43,15 @@ const RunningSummary = /*#__PURE__*/ memo(function RunningSummary({ line }) {
50
43
  color: "gray"
51
44
  }, line.text.replace(REGEX_ANSI, '')));
52
45
  });
46
+ // @ts-ignore
47
+ const renderLine = (line, index)=>/*#__PURE__*/ React.createElement("ink-text", {
48
+ key: index
49
+ }, line.text);
53
50
  const Lines = /*#__PURE__*/ memo(function Lines({ lines }) {
54
51
  return /*#__PURE__*/ React.createElement(Box, {
55
52
  flexDirection: "column",
56
53
  marginLeft: 2
57
- }, lines.map((line, index)=>// biome-ignore lint/suspicious/noArrayIndexKey: <explanation>
58
- /*#__PURE__*/ React.createElement(Box, {
59
- key: index,
60
- flexDirection: "column"
61
- }, /*#__PURE__*/ React.createElement(Text, null, line.text))));
54
+ }, lines.map(renderLine));
62
55
  });
63
56
  const Expanded = /*#__PURE__*/ memo(function Expanded({ item }) {
64
57
  const { lines } = item;
@@ -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, Line, State } from '../types';\nimport { LineType } from '../types';\n\nconst _REGEX_NEW_LINE = /\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g;\nconst REGEX_ANSI = ansiRegex();\nconst _DEFAULT_SUMMARY = { type: LineType.stdout, text: '' };\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 RunningSummaryProps = {\n line: Line;\n};\n\nconst RunningSummary = memo(function RunningSummary({ line }: RunningSummaryProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{line.text.replace(REGEX_ANSI, '')}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Line[];\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>{line.text}</Text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { lines } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={lines} />\n </Box>\n );\n});\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, lines } = item;\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === LineType.stderr), [lines]);\n const summary = 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' && summary && <RunningSummary line={summary} />}\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","LineType","_REGEX_NEW_LINE","REGEX_ANSI","_DEFAULT_SUMMARY","type","stdout","text","spinner","interval","frames","ICONS","error","color","cross","success","tick","running","Header","group","title","state","icon","marginRight","bold","pointer","a","b","RunningSummary","line","marginLeft","replace","Lines","lines","flexDirection","map","index","key","Expanded","item","Contracted","errors","filter","stderr","summary","length","indexOf","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, Line, State } from '../types';\nimport { LineType } from '../types';\n\nconst REGEX_ANSI = ansiRegex();\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 {icon}\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 RunningSummaryProps = {\n line: Line;\n};\n\nconst RunningSummary = memo(function RunningSummary({ line }: RunningSummaryProps) {\n return (\n <Box marginLeft={2}>\n <Text color=\"gray\">{line.text.replace(REGEX_ANSI, '')}</Text>\n </Box>\n );\n});\n\ntype LinesProps = {\n lines: Line[];\n};\n\n// @ts-ignore\nconst renderLine = (line, index) => <ink-text key={index}>{line.text}</ink-text>;\n\nconst Lines = memo(function Lines({ lines }: LinesProps) {\n return (\n <Box flexDirection=\"column\" marginLeft={2}>\n {lines.map(renderLine)}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { lines } = item;\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n <Lines lines={lines} />\n </Box>\n );\n});\n\nconst Contracted = memo(function Contracted({ item }: ItemProps) {\n const { state, lines } = item;\n\n // remove ansi codes when displaying single lines\n const errors = useMemo(() => lines.filter((line) => line.type === LineType.stderr), [lines]);\n const summary = 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' && summary && <RunningSummary line={summary} />}\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","LineType","REGEX_ANSI","spinner","interval","frames","ICONS","error","color","cross","success","tick","running","Header","group","title","state","icon","bold","pointer","a","b","RunningSummary","line","marginLeft","text","replace","renderLine","index","ink-text","key","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","filter","type","stderr","summary","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
@@ -13,5 +13,5 @@ export default function Spinner({ interval, frames }) {
13
13
  interval,
14
14
  frames
15
15
  ]);
16
- return /*#__PURE__*/ React.createElement(Text, null, `${frames[index]} `);
16
+ return /*#__PURE__*/ React.createElement(Text, null, frames[index]);
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/Spinner.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Text } from '../ink.mjs';\n\nexport type SpinnerProps = {\n interval: number;\n frames: string[];\n};\n\nexport default function Spinner({ interval, frames }: SpinnerProps) {\n const [index, setIndex] = useState(0);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setIndex((index) => (index === frames.length - 1 ? 0 : index + 1));\n }, interval);\n return () => {\n clearInterval(timer);\n };\n }, [interval, frames]);\n\n return <Text>{`${frames[index]} `}</Text>;\n}\n"],"names":["React","useState","useEffect","Text","Spinner","interval","frames","index","setIndex","timer","setInterval","length","clearInterval"],"mappings":"AAAA,OAAOA,SAASC,QAAQ,EAAEC,SAAS,QAAQ,QAAQ;AACnD,SAASC,IAAI,QAAQ,aAAa;AAOlC,eAAe,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAgB;IAChE,MAAM,CAACC,OAAOC,SAAS,GAAGP,SAAS;IAEnCC,UAAU;QACR,MAAMO,QAAQC,YAAY;YACxBF,SAAS,CAACD,QAAWA,UAAUD,OAAOK,MAAM,GAAG,IAAI,IAAIJ,QAAQ;QACjE,GAAGF;QACH,OAAO;YACLO,cAAcH;QAChB;IACF,GAAG;QAACJ;QAAUC;KAAO;IAErB,qBAAO,oBAACH,YAAM,GAAGG,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC;AACnC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/Spinner.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Text } from '../ink.mjs';\n\nexport type SpinnerProps = {\n interval: number;\n frames: string[];\n};\n\nexport default function Spinner({ interval, frames }: SpinnerProps) {\n const [index, setIndex] = useState(0);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setIndex((index) => (index === frames.length - 1 ? 0 : index + 1));\n }, interval);\n return () => {\n clearInterval(timer);\n };\n }, [interval, frames]);\n\n return <Text>{frames[index]}</Text>;\n}\n"],"names":["React","useState","useEffect","Text","Spinner","interval","frames","index","setIndex","timer","setInterval","length","clearInterval"],"mappings":"AAAA,OAAOA,SAASC,QAAQ,EAAEC,SAAS,QAAQ,QAAQ;AACnD,SAASC,IAAI,QAAQ,aAAa;AAOlC,eAAe,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAgB;IAChE,MAAM,CAACC,OAAOC,SAAS,GAAGP,SAAS;IAEnCC,UAAU;QACR,MAAMO,QAAQC,YAAY;YACxBF,SAAS,CAACD,QAAWA,UAAUD,OAAOK,MAAM,GAAG,IAAI,IAAIJ,QAAQ;QACjE,GAAGF;QACH,OAAO;YACLO,cAAcH;QAChB;IACF,GAAG;QAACJ;QAAUC;KAAO;IAErB,qBAAO,oBAACH,YAAMG,MAAM,CAACC,MAAM;AAC7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spawn-term",
3
- "version": "0.1.38",
3
+ "version": "0.1.40",
4
4
  "description": "Formats spawn with for terminal grouping",
5
5
  "keywords": [
6
6
  "spawn",