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
|
|
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
|
|
100
|
-
var
|
|
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
|
-
},
|
|
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:
|
|
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(
|
|
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
|
|
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(
|
|
173
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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:
|
|
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(
|
|
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
|
|
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(
|
|
98
|
-
|
|
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
|
|
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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"}
|