spawn-term 0.1.32 → 0.1.33

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.
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
12
  var _ink = require("../ink.cjs");
13
+ var _ansiRegex = /*#__PURE__*/ _interop_require_default(require("../lib/ansiRegex.cjs"));
13
14
  var _figures = /*#__PURE__*/ _interop_require_default(require("../lib/figures.cjs"));
14
15
  var _Spinner = /*#__PURE__*/ _interop_require_default(require("./Spinner.cjs"));
15
16
  var _types = require("../types.cjs");
@@ -59,7 +60,12 @@ function _interop_require_wildcard(obj, nodeInterop) {
59
60
  }
60
61
  return newObj;
61
62
  }
62
- var NEW_LINE_REGEX = /\r\n|\n/g;
63
+ var REGEX_NEW_LINE = /\r\n|[\n\v\f\r\x85\u2028\u2029]/g;
64
+ var REGEX_ANSI = (0, _ansiRegex.default)();
65
+ var DEFAULT_SUMMARY = {
66
+ type: _types.DataType.stdout,
67
+ text: ''
68
+ };
63
69
  // From: https://github.com/sindresorhus/cli-spinners/blob/00de8fbeee16fa49502fa4f687449f70f2c8ca2c/spinners.json#L2
64
70
  var spinner = {
65
71
  interval: 80,
@@ -96,13 +102,13 @@ var Header = /*#__PURE__*/ (0, _react.memo)(function Header(param) {
96
102
  }, function(a, b) {
97
103
  return a.group === b.group && a.title === b.title && a.state === b.state;
98
104
  });
99
- var Output = /*#__PURE__*/ (0, _react.memo)(function Output(param) {
100
- var output = param.output;
105
+ var RunningSummary = /*#__PURE__*/ (0, _react.memo)(function RunningSummary(param) {
106
+ var line = param.line;
101
107
  return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
102
108
  marginLeft: 2
103
109
  }, /*#__PURE__*/ _react.default.createElement(_ink.Text, {
104
110
  color: "gray"
105
- }, output.text));
111
+ }, line.text.replace(REGEX_ANSI, '')));
106
112
  });
107
113
  var Lines = /*#__PURE__*/ (0, _react.memo)(function Lines(param) {
108
114
  var lines = param.lines;
@@ -120,6 +126,20 @@ var Lines = /*#__PURE__*/ (0, _react.memo)(function Lines(param) {
120
126
  var Expanded = /*#__PURE__*/ (0, _react.memo)(function Expanded(param) {
121
127
  var item = param.item;
122
128
  var data = item.data;
129
+ var lines = (0, _react.useMemo)(function() {
130
+ var lines = [];
131
+ data.forEach(function(x) {
132
+ x.text.split(REGEX_NEW_LINE).forEach(function(text) {
133
+ return lines.push({
134
+ type: x.type,
135
+ text: text
136
+ });
137
+ });
138
+ });
139
+ return lines;
140
+ }, [
141
+ data
142
+ ]);
123
143
  return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
124
144
  flexDirection: "column"
125
145
  }, /*#__PURE__*/ _react.default.createElement(Header, {
@@ -127,7 +147,7 @@ var Expanded = /*#__PURE__*/ (0, _react.memo)(function Expanded(param) {
127
147
  title: item.title,
128
148
  state: item.state
129
149
  }), /*#__PURE__*/ _react.default.createElement(Lines, {
130
- lines: data
150
+ lines: lines
131
151
  }));
132
152
  });
133
153
  var Contracted = /*#__PURE__*/ (0, _react.memo)(function Contracted(param) {
@@ -136,7 +156,7 @@ var Contracted = /*#__PURE__*/ (0, _react.memo)(function Contracted(param) {
136
156
  var lines = (0, _react.useMemo)(function() {
137
157
  var lines = [];
138
158
  data.forEach(function(x) {
139
- x.text.split(NEW_LINE_REGEX).forEach(function(text) {
159
+ x.text.split(REGEX_NEW_LINE).forEach(function(text) {
140
160
  return lines.push({
141
161
  type: x.type,
142
162
  text: text
@@ -155,10 +175,10 @@ var Contracted = /*#__PURE__*/ (0, _react.memo)(function Contracted(param) {
155
175
  }, [
156
176
  lines
157
177
  ]);
158
- var output = (0, _react.useMemo)(function() {
178
+ var summary = (0, _react.useMemo)(function() {
159
179
  return lines.filter(function(line) {
160
180
  return line.text.length > 0 && errors.indexOf(line) < 0;
161
- }).pop() || '';
181
+ }).pop() || DEFAULT_SUMMARY;
162
182
  }, [
163
183
  lines,
164
184
  errors
@@ -169,8 +189,8 @@ var Contracted = /*#__PURE__*/ (0, _react.memo)(function Contracted(param) {
169
189
  group: item.group,
170
190
  title: item.title,
171
191
  state: item.state
172
- }), state === 'running' && /*#__PURE__*/ _react.default.createElement(Output, {
173
- output: output
192
+ }), state === 'running' && /*#__PURE__*/ _react.default.createElement(RunningSummary, {
193
+ line: summary
174
194
  }), errors.length > 0 && /*#__PURE__*/ _react.default.createElement(Lines, {
175
195
  lines: errors
176
196
  }));
@@ -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 figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { ChildProcess as ChildProcessT, Data, State } from '../types';\nimport { DataType } from '../types';\n\nconst NEW_LINE_REGEX = /\\r\\n|\\n/g;\n// const ANSI_REGEX = 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 <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 {/* @ts-ignore */}\n <ink-text>{line.text}</ink-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 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(NEW_LINE_REGEX).forEach((text) => lines.push({ type: x.type, text }));\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":["NEW_LINE_REGEX","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","ink-text","Expanded","item","data","Contracted","useMemo","forEach","x","split","push","type","errors","filter","DataType","stderr","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, Data, State } from '../types';\nimport { DataType } 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: DataType.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: Data;\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: 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 {/* @ts-ignore */}\n <ink-text>{line.text}</ink-text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { data } = item;\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(REGEX_NEW_LINE).forEach((text) => lines.push({ type: x.type, text }));\n });\n return lines;\n }, [data]) as Data[];\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, data } = item;\n\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(REGEX_NEW_LINE).forEach((text) => lines.push({ type: x.type, text }));\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 summary = useMemo(() => lines.filter((line) => line.text.length > 0 && errors.indexOf(line) < 0).pop() || DEFAULT_SUMMARY, [lines, errors]);\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n {state === 'running' && <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","DataType","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","ink-text","Expanded","item","data","useMemo","forEach","x","split","push","Contracted","errors","filter","stderr","summary","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
@@ -1,9 +1,15 @@
1
1
  import React, { memo, useMemo } from 'react';
2
2
  import { Box, Text } from '../ink.mjs';
3
+ import ansiRegex from '../lib/ansiRegex.mjs';
3
4
  import figures from '../lib/figures.mjs';
4
5
  import Spinner from './Spinner.mjs';
5
6
  import { DataType } from '../types.mjs';
6
- const NEW_LINE_REGEX = /\r\n|\n/g;
7
+ const REGEX_NEW_LINE = /\r\n|[\n\v\f\r\x85\u2028\u2029]/g;
8
+ const REGEX_ANSI = ansiRegex();
9
+ const DEFAULT_SUMMARY = {
10
+ type: DataType.stdout,
11
+ text: ''
12
+ };
7
13
  // From: https://github.com/sindresorhus/cli-spinners/blob/00de8fbeee16fa49502fa4f687449f70f2c8ca2c/spinners.json#L2
8
14
  const spinner = {
9
15
  interval: 80,
@@ -37,12 +43,12 @@ const Header = /*#__PURE__*/ memo(function Header({ group, title, state }) {
37
43
  bold: true
38
44
  }, `${group}${figures.pointer} `), /*#__PURE__*/ React.createElement(Text, null, title));
39
45
  }, (a, b)=>a.group === b.group && a.title === b.title && a.state === b.state);
40
- const Output = /*#__PURE__*/ memo(function Output({ output }) {
46
+ const RunningSummary = /*#__PURE__*/ memo(function RunningSummary({ line }) {
41
47
  return /*#__PURE__*/ React.createElement(Box, {
42
48
  marginLeft: 2
43
49
  }, /*#__PURE__*/ React.createElement(Text, {
44
50
  color: "gray"
45
- }, output.text));
51
+ }, line.text.replace(REGEX_ANSI, '')));
46
52
  });
47
53
  const Lines = /*#__PURE__*/ memo(function Lines({ lines }) {
48
54
  return /*#__PURE__*/ React.createElement(Box, {
@@ -56,6 +62,18 @@ const Lines = /*#__PURE__*/ memo(function Lines({ lines }) {
56
62
  });
57
63
  const Expanded = /*#__PURE__*/ memo(function Expanded({ item }) {
58
64
  const { data } = item;
65
+ const lines = useMemo(()=>{
66
+ const lines = [];
67
+ data.forEach((x)=>{
68
+ x.text.split(REGEX_NEW_LINE).forEach((text)=>lines.push({
69
+ type: x.type,
70
+ text
71
+ }));
72
+ });
73
+ return lines;
74
+ }, [
75
+ data
76
+ ]);
59
77
  return /*#__PURE__*/ React.createElement(Box, {
60
78
  flexDirection: "column"
61
79
  }, /*#__PURE__*/ React.createElement(Header, {
@@ -63,7 +81,7 @@ const Expanded = /*#__PURE__*/ memo(function Expanded({ item }) {
63
81
  title: item.title,
64
82
  state: item.state
65
83
  }), /*#__PURE__*/ React.createElement(Lines, {
66
- lines: data
84
+ lines: lines
67
85
  }));
68
86
  });
69
87
  const Contracted = /*#__PURE__*/ memo(function Contracted({ item }) {
@@ -71,7 +89,7 @@ const Contracted = /*#__PURE__*/ memo(function Contracted({ item }) {
71
89
  const lines = useMemo(()=>{
72
90
  const lines = [];
73
91
  data.forEach((x)=>{
74
- x.text.split(NEW_LINE_REGEX).forEach((text)=>lines.push({
92
+ x.text.split(REGEX_NEW_LINE).forEach((text)=>lines.push({
75
93
  type: x.type,
76
94
  text
77
95
  }));
@@ -84,7 +102,7 @@ const Contracted = /*#__PURE__*/ memo(function Contracted({ item }) {
84
102
  const errors = useMemo(()=>lines.filter((line)=>line.type === DataType.stderr), [
85
103
  lines
86
104
  ]);
87
- const output = useMemo(()=>lines.filter((line)=>line.text.length > 0 && errors.indexOf(line) < 0).pop() || '', [
105
+ const summary = useMemo(()=>lines.filter((line)=>line.text.length > 0 && errors.indexOf(line) < 0).pop() || DEFAULT_SUMMARY, [
88
106
  lines,
89
107
  errors
90
108
  ]);
@@ -94,8 +112,8 @@ const Contracted = /*#__PURE__*/ memo(function Contracted({ item }) {
94
112
  group: item.group,
95
113
  title: item.title,
96
114
  state: item.state
97
- }), state === 'running' && /*#__PURE__*/ React.createElement(Output, {
98
- output: output
115
+ }), state === 'running' && /*#__PURE__*/ React.createElement(RunningSummary, {
116
+ line: summary
99
117
  }), errors.length > 0 && /*#__PURE__*/ React.createElement(Lines, {
100
118
  lines: errors
101
119
  }));
@@ -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 figures from '../lib/figures';\nimport Spinner from './Spinner';\n\nimport type { ChildProcess as ChildProcessT, Data, State } from '../types';\nimport { DataType } from '../types';\n\nconst NEW_LINE_REGEX = /\\r\\n|\\n/g;\n// const ANSI_REGEX = 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 <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 {/* @ts-ignore */}\n <ink-text>{line.text}</ink-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 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(NEW_LINE_REGEX).forEach((text) => lines.push({ type: x.type, text }));\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","figures","Spinner","DataType","NEW_LINE_REGEX","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","ink-text","Expanded","item","data","Contracted","forEach","x","split","push","type","errors","filter","stderr","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, Data, State } from '../types';\nimport { DataType } 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: DataType.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: Data;\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: 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 {/* @ts-ignore */}\n <ink-text>{line.text}</ink-text>\n </Box>\n ))}\n </Box>\n );\n});\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { data } = item;\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(REGEX_NEW_LINE).forEach((text) => lines.push({ type: x.type, text }));\n });\n return lines;\n }, [data]) as Data[];\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, data } = item;\n\n const lines = useMemo(() => {\n const lines = [];\n data.forEach((x) => {\n x.text.split(REGEX_NEW_LINE).forEach((text) => lines.push({ type: x.type, text }));\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 summary = useMemo(() => lines.filter((line) => line.text.length > 0 && errors.indexOf(line) < 0).pop() || DEFAULT_SUMMARY, [lines, errors]);\n\n return (\n <Box flexDirection=\"column\">\n <Header group={item.group} title={item.title} state={item.state} />\n {state === 'running' && <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","DataType","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","ink-text","Expanded","item","data","forEach","x","split","push","Contracted","errors","filter","stderr","summary","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.32",
3
+ "version": "0.1.33",
4
4
  "description": "Formats spawn with for terminal grouping",
5
5
  "keywords": [
6
6
  "spawn",