spawn-term 0.1.42 → 0.1.44

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.
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
+ var _ansicolors = /*#__PURE__*/ _interop_require_default(require("ansi-colors"));
11
12
  var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
13
  var _ink = require("../ink.cjs");
13
14
  var _ansiRegex = /*#__PURE__*/ _interop_require_default(require("../lib/ansiRegex.cjs"));
@@ -78,12 +79,10 @@ var spinner = {
78
79
  ]
79
80
  };
80
81
  var ICONS = {
81
- error: /*#__PURE__*/ _react.default.createElement(_ink.Text, {
82
- color: "red"
83
- }, _figures.default.cross),
84
- success: /*#__PURE__*/ _react.default.createElement(_ink.Text, {
85
- color: "green"
86
- }, _figures.default.tick),
82
+ // @ts-expect-error
83
+ error: /*#__PURE__*/ _react.default.createElement("ink-text", null, _ansicolors.default.red(_figures.default.cross)),
84
+ // @ts-expect-error
85
+ success: /*#__PURE__*/ _react.default.createElement("ink-text", null, _ansicolors.default.green(_figures.default.tick)),
87
86
  running: /*#__PURE__*/ _react.default.createElement(_Spinner.default, spinner)
88
87
  };
89
88
  var Header = /*#__PURE__*/ (0, _react.memo)(function Header(param) {
@@ -103,11 +102,14 @@ var RunningSummary = /*#__PURE__*/ (0, _react.memo)(function RunningSummary(para
103
102
  color: "gray"
104
103
  }, line.text.replace(REGEX_ANSI, '')));
105
104
  });
106
- // @ts-ignore
107
105
  var renderLine = function(line, index) {
108
- return /*#__PURE__*/ _react.default.createElement("ink-text", {
109
- key: index
110
- }, line.text.length > 0 ? line.text : '\n');
106
+ return(// @ts-expect-error
107
+ /*#__PURE__*/ _react.default.createElement("ink-text", {
108
+ key: index,
109
+ style: {
110
+ minHeight: 1
111
+ }
112
+ }, line.text));
111
113
  };
112
114
  var Lines = /*#__PURE__*/ (0, _react.memo)(function Lines(param) {
113
115
  var lines = param.lines;
@@ -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_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.length > 0 ? line.text : '\\n'}</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","length","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","useMemo","filter","type","LineType","stderr","summary","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 c from 'ansi-colors';\nimport 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 // @ts-expect-error\n error: <ink-text>{c.red(figures.cross)}</ink-text>,\n // @ts-expect-error\n success: <ink-text>{c.green(figures.tick)}</ink-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\nconst renderLine = (line, index) => {\n return (\n // @ts-expect-error\n <ink-text key={index} style={{ minHeight: 1 }}>\n {line.text}\n {/* @ts-expect-error */}\n </ink-text>\n );\n};\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","ink-text","c","red","figures","cross","success","green","tick","running","Spinner","Header","memo","group","title","state","icon","Box","Text","bold","pointer","a","b","RunningSummary","line","marginLeft","color","text","replace","renderLine","index","key","style","minHeight","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","useMemo","filter","type","LineType","stderr","summary","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import c from 'ansi-colors';
1
2
  import React, { memo, useMemo } from 'react';
2
3
  import { Box, Text } from '../ink.mjs';
3
4
  import ansiRegex from '../lib/ansiRegex.mjs';
@@ -22,12 +23,10 @@ const spinner = {
22
23
  ]
23
24
  };
24
25
  const ICONS = {
25
- error: /*#__PURE__*/ React.createElement(Text, {
26
- color: "red"
27
- }, figures.cross),
28
- success: /*#__PURE__*/ React.createElement(Text, {
29
- color: "green"
30
- }, figures.tick),
26
+ // @ts-expect-error
27
+ error: /*#__PURE__*/ React.createElement("ink-text", null, c.red(figures.cross)),
28
+ // @ts-expect-error
29
+ success: /*#__PURE__*/ React.createElement("ink-text", null, c.green(figures.tick)),
31
30
  running: /*#__PURE__*/ React.createElement(Spinner, spinner)
32
31
  };
33
32
  const Header = /*#__PURE__*/ memo(function Header({ group, title, state }) {
@@ -43,10 +42,15 @@ const RunningSummary = /*#__PURE__*/ memo(function RunningSummary({ line }) {
43
42
  color: "gray"
44
43
  }, line.text.replace(REGEX_ANSI, '')));
45
44
  });
46
- // @ts-ignore
47
- const renderLine = (line, index)=>/*#__PURE__*/ React.createElement("ink-text", {
48
- key: index
49
- }, line.text.length > 0 ? line.text : '\n');
45
+ const renderLine = (line, index)=>{
46
+ return(// @ts-expect-error
47
+ /*#__PURE__*/ React.createElement("ink-text", {
48
+ key: index,
49
+ style: {
50
+ minHeight: 1
51
+ }
52
+ }, line.text));
53
+ };
50
54
  const Lines = /*#__PURE__*/ memo(function Lines({ lines }) {
51
55
  return /*#__PURE__*/ React.createElement(Box, {
52
56
  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, 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.length > 0 ? line.text : '\\n'}</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","length","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","filter","type","stderr","summary","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 c from 'ansi-colors';\nimport 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 // @ts-expect-error\n error: <ink-text>{c.red(figures.cross)}</ink-text>,\n // @ts-expect-error\n success: <ink-text>{c.green(figures.tick)}</ink-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\nconst renderLine = (line, index) => {\n return (\n // @ts-expect-error\n <ink-text key={index} style={{ minHeight: 1 }}>\n {line.text}\n {/* @ts-expect-error */}\n </ink-text>\n );\n};\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":["c","React","memo","useMemo","Box","Text","ansiRegex","figures","Spinner","LineType","REGEX_ANSI","spinner","interval","frames","ICONS","error","ink-text","red","cross","success","green","tick","running","Header","group","title","state","icon","bold","pointer","a","b","RunningSummary","line","marginLeft","color","text","replace","renderLine","index","key","style","minHeight","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","filter","type","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.42",
3
+ "version": "0.1.44",
4
4
  "description": "Formats spawn with for terminal grouping",
5
5
  "keywords": [
6
6
  "spawn",
@@ -39,6 +39,7 @@
39
39
  "version": "tsds version"
40
40
  },
41
41
  "dependencies": {
42
+ "ansi-colors": "^4.1.3",
42
43
  "core-js": "^3.40.0",
43
44
  "cross-spawn-cb": "^2.1.22",
44
45
  "lil-uuid": "^0.1.1",