spawn-term 0.1.28 → 0.1.30
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.
- package/dist/cjs/components/ChildProcess.cjs +19 -7
- package/dist/cjs/components/ChildProcess.cjs.map +1 -1
- package/dist/cjs/lib/{ansiRegex.cjs.map → regexANSI.cjs.map} +1 -1
- package/dist/esm/components/ChildProcess.mjs +17 -7
- package/dist/esm/components/ChildProcess.mjs.map +1 -1
- package/dist/esm/lib/{ansiRegex.mjs.map → regexANSI.mjs.map} +1 -1
- package/package.json +1 -1
- /package/dist/cjs/lib/{ansiRegex.cjs → regexANSI.cjs} +0 -0
- /package/dist/esm/lib/{ansiRegex.mjs → regexANSI.mjs} +0 -0
- /package/dist/types/lib/{ansiRegex.d.ts → regexANSI.d.ts} +0 -0
|
@@ -10,8 +10,8 @@ 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"));
|
|
14
13
|
var _figures = /*#__PURE__*/ _interop_require_default(require("../lib/figures.cjs"));
|
|
14
|
+
var _regexANSI = /*#__PURE__*/ _interop_require_default(require("../lib/regexANSI.cjs"));
|
|
15
15
|
var _Spinner = /*#__PURE__*/ _interop_require_default(require("./Spinner.cjs"));
|
|
16
16
|
var _types = require("../types.cjs");
|
|
17
17
|
function _interop_require_default(obj) {
|
|
@@ -114,14 +114,28 @@ 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
|
});
|
|
120
|
+
var linesRegex = /\r\n|[\n\v\f\r\x85\u2028\u2029]/g;
|
|
121
|
+
var ansiRegex = (0, _regexANSI.default)();
|
|
122
122
|
var Expanded = /*#__PURE__*/ (0, _react.memo)(function Expanded(param) {
|
|
123
123
|
var item = param.item;
|
|
124
124
|
var data = item.data;
|
|
125
|
+
var lines = (0, _react.useMemo)(function() {
|
|
126
|
+
var lines = [];
|
|
127
|
+
data.forEach(function(x) {
|
|
128
|
+
x.text.split(linesRegex).forEach(function(text) {
|
|
129
|
+
return lines.push({
|
|
130
|
+
type: x.type,
|
|
131
|
+
text: text.replace(ansiRegex, '')
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
return lines;
|
|
136
|
+
}, [
|
|
137
|
+
data
|
|
138
|
+
]);
|
|
125
139
|
return /*#__PURE__*/ _react.default.createElement(_ink.Box, {
|
|
126
140
|
flexDirection: "column"
|
|
127
141
|
}, /*#__PURE__*/ _react.default.createElement(Header, {
|
|
@@ -129,11 +143,9 @@ var Expanded = /*#__PURE__*/ (0, _react.memo)(function Expanded(param) {
|
|
|
129
143
|
title: item.title,
|
|
130
144
|
state: item.state
|
|
131
145
|
}), /*#__PURE__*/ _react.default.createElement(Lines, {
|
|
132
|
-
lines:
|
|
146
|
+
lines: lines
|
|
133
147
|
}));
|
|
134
148
|
});
|
|
135
|
-
var linesRegex = /\r\n|\n/g;
|
|
136
|
-
var ansiRegex = (0, _ansiRegex.default)();
|
|
137
149
|
var Contracted = /*#__PURE__*/ (0, _react.memo)(function Contracted(param) {
|
|
138
150
|
var item = param.item;
|
|
139
151
|
var state = item.state, data = item.data;
|
|
@@ -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
|
|
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 regexANSI from '../lib/regexANSI';\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 linesRegex = /\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g;\nconst ansiRegex = regexANSI();\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { 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 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(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","linesRegex","ansiRegex","regexANSI","Expanded","item","data","useMemo","forEach","x","split","push","type","replace","Contracted","errors","filter","DataType","stderr","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/regexANSI.ts"],"sourcesContent":["// https://github.com/chalk/ansi-regex/blob/main/index.js\nexport default function ansiRegex({ onlyFirst = false } = {}) {\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c\n const ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n const pattern = [`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`, '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))'].join('|');\n\n return new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n"],"names":["ansiRegex","onlyFirst","ST","pattern","join","RegExp","undefined"],"mappings":"AAAA,yDAAyD;;;;;+BACzD;;;eAAwBA;;;AAAT,SAASA;QAAU,OAAA,iEAAwB,CAAC,oBAAzB,KAAEC,WAAAA,wCAAY;IAC9C,4DAA4D;IAC5D,IAAMC,KAAK;IACX,IAAMC,UAAU;QAAE,uHAAyH,OAAHD,IAAG;QAAI;KAA2D,CAACE,IAAI,CAAC;IAEhN,OAAO,IAAIC,OAAOF,SAASF,YAAYK,YAAY;AACrD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { memo, useMemo } from 'react';
|
|
2
2
|
import { Box, Text } from '../ink.mjs';
|
|
3
|
-
import _ansiRegex from '../lib/ansiRegex.mjs';
|
|
4
3
|
import figures from '../lib/figures.mjs';
|
|
4
|
+
import regexANSI from '../lib/regexANSI.mjs';
|
|
5
5
|
import Spinner from './Spinner.mjs';
|
|
6
6
|
import { DataType } from '../types.mjs';
|
|
7
7
|
// From: https://github.com/sindresorhus/cli-spinners/blob/00de8fbeee16fa49502fa4f687449f70f2c8ca2c/spinners.json#L2
|
|
@@ -52,12 +52,24 @@ 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
|
});
|
|
57
|
+
const linesRegex = /\r\n|[\n\v\f\r\x85\u2028\u2029]/g;
|
|
58
|
+
const ansiRegex = regexANSI();
|
|
59
59
|
const Expanded = /*#__PURE__*/ memo(function Expanded({ item }) {
|
|
60
60
|
const { data } = item;
|
|
61
|
+
const lines = useMemo(()=>{
|
|
62
|
+
const lines = [];
|
|
63
|
+
data.forEach((x)=>{
|
|
64
|
+
x.text.split(linesRegex).forEach((text)=>lines.push({
|
|
65
|
+
type: x.type,
|
|
66
|
+
text: text.replace(ansiRegex, '')
|
|
67
|
+
}));
|
|
68
|
+
});
|
|
69
|
+
return lines;
|
|
70
|
+
}, [
|
|
71
|
+
data
|
|
72
|
+
]);
|
|
61
73
|
return /*#__PURE__*/ React.createElement(Box, {
|
|
62
74
|
flexDirection: "column"
|
|
63
75
|
}, /*#__PURE__*/ React.createElement(Header, {
|
|
@@ -65,11 +77,9 @@ const Expanded = /*#__PURE__*/ memo(function Expanded({ item }) {
|
|
|
65
77
|
title: item.title,
|
|
66
78
|
state: item.state
|
|
67
79
|
}), /*#__PURE__*/ React.createElement(Lines, {
|
|
68
|
-
lines:
|
|
80
|
+
lines: lines
|
|
69
81
|
}));
|
|
70
82
|
});
|
|
71
|
-
const linesRegex = /\r\n|\n/g;
|
|
72
|
-
const ansiRegex = _ansiRegex();
|
|
73
83
|
const Contracted = /*#__PURE__*/ memo(function Contracted({ item }) {
|
|
74
84
|
const { state, data } = item;
|
|
75
85
|
const lines = useMemo(()=>{
|
|
@@ -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
|
|
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 regexANSI from '../lib/regexANSI';\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 linesRegex = /\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g;\nconst ansiRegex = regexANSI();\n\nconst Expanded = memo(function Expanded({ item }: ItemProps) {\n const { 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 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(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","figures","regexANSI","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","linesRegex","ansiRegex","Expanded","item","data","forEach","x","split","push","type","replace","Contracted","errors","filter","stderr","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/regexANSI.ts"],"sourcesContent":["// https://github.com/chalk/ansi-regex/blob/main/index.js\nexport default function ansiRegex({ onlyFirst = false } = {}) {\n // Valid string terminator sequences are BEL, ESC\\, and 0x9c\n const ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n const pattern = [`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`, '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))'].join('|');\n\n return new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n"],"names":["ansiRegex","onlyFirst","ST","pattern","join","RegExp","undefined"],"mappings":"AAAA,yDAAyD;AACzD,eAAe,SAASA,UAAU,EAAEC,YAAY,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1D,4DAA4D;IAC5D,MAAMC,KAAK;IACX,MAAMC,UAAU;QAAC,CAAC,oHAAoH,EAAED,GAAG,CAAC,CAAC;QAAE;KAA2D,CAACE,IAAI,CAAC;IAEhN,OAAO,IAAIC,OAAOF,SAASF,YAAYK,YAAY;AACrD"}
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|