spawn-term 0.2.10 → 1.0.1

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.
Files changed (65) hide show
  1. package/dist/cjs/components/App.js +1 -1
  2. package/dist/cjs/components/App.js.map +1 -1
  3. package/dist/cjs/components/ChildProcess.js +1 -1
  4. package/dist/cjs/components/ChildProcess.js.map +1 -1
  5. package/dist/cjs/components/Spinner.js +1 -1
  6. package/dist/cjs/components/Spinner.js.map +1 -1
  7. package/dist/cjs/createApp.js +42 -43
  8. package/dist/cjs/createApp.js.map +1 -1
  9. package/dist/cjs/index-cjs.d.cts +4 -5
  10. package/dist/cjs/index-cjs.d.ts +4 -5
  11. package/dist/cjs/index-cjs.js +4 -19
  12. package/dist/cjs/index-cjs.js.map +1 -1
  13. package/dist/cjs/index-esm.d.cts +1 -2
  14. package/dist/cjs/index-esm.d.ts +1 -2
  15. package/dist/cjs/index-esm.js +2 -15
  16. package/dist/cjs/index-esm.js.map +1 -1
  17. package/dist/cjs/lib/addLines.d.cts +1 -1
  18. package/dist/cjs/lib/addLines.d.ts +1 -1
  19. package/dist/cjs/lib/addLines.js +2 -2
  20. package/dist/cjs/lib/addLines.js.map +1 -1
  21. package/dist/cjs/lib/concatWritable.d.cts +1 -1
  22. package/dist/cjs/lib/concatWritable.d.ts +1 -1
  23. package/dist/cjs/lib/concatWritable.js +2 -2
  24. package/dist/cjs/lib/concatWritable.js.map +1 -1
  25. package/dist/cjs/spawnTerminal.d.cts +2 -0
  26. package/dist/cjs/spawnTerminal.d.ts +2 -0
  27. package/dist/cjs/spawnTerminal.js +72 -0
  28. package/dist/cjs/spawnTerminal.js.map +1 -0
  29. package/dist/cjs/worker.js +2 -3
  30. package/dist/cjs/worker.js.map +1 -1
  31. package/dist/esm/components/App.js +1 -1
  32. package/dist/esm/components/App.js.map +1 -1
  33. package/dist/esm/components/ChildProcess.js +1 -1
  34. package/dist/esm/components/ChildProcess.js.map +1 -1
  35. package/dist/esm/components/Spinner.js +1 -1
  36. package/dist/esm/components/Spinner.js.map +1 -1
  37. package/dist/esm/createApp.js +36 -38
  38. package/dist/esm/createApp.js.map +1 -1
  39. package/dist/esm/index-cjs.d.ts +4 -5
  40. package/dist/esm/index-cjs.js +4 -15
  41. package/dist/esm/index-cjs.js.map +1 -1
  42. package/dist/esm/index-esm.d.ts +1 -2
  43. package/dist/esm/index-esm.js +3 -14
  44. package/dist/esm/index-esm.js.map +1 -1
  45. package/dist/esm/lib/addLines.d.ts +1 -1
  46. package/dist/esm/lib/addLines.js +1 -1
  47. package/dist/esm/lib/addLines.js.map +1 -1
  48. package/dist/esm/lib/concatWritable.d.ts +1 -1
  49. package/dist/esm/lib/concatWritable.js +1 -1
  50. package/dist/esm/lib/concatWritable.js.map +1 -1
  51. package/dist/esm/spawnTerminal.d.ts +2 -0
  52. package/dist/esm/spawnTerminal.js +16 -0
  53. package/dist/esm/spawnTerminal.js.map +1 -0
  54. package/dist/esm/worker.js +2 -3
  55. package/dist/esm/worker.js.map +1 -1
  56. package/package.json +5 -8
  57. package/assets/ink.cjs +0 -31107
  58. package/assets/intl-adapter.cjs +0 -968
  59. package/dist/cjs/ink.d.cts +0 -7
  60. package/dist/cjs/ink.d.ts +0 -7
  61. package/dist/cjs/ink.js +0 -115
  62. package/dist/cjs/ink.js.map +0 -1
  63. package/dist/esm/ink.d.ts +0 -7
  64. package/dist/esm/ink.js +0 -11
  65. package/dist/esm/ink.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box } from 'ink';
2
3
  import { Profiler, useContext } from 'react';
3
4
  import { useStore } from 'zustand';
4
5
  import StoreContext from '../contexts/Store.js';
5
- import { Box } from '../ink.js';
6
6
  import ChildProcess from './ChildProcess.js';
7
7
  export default function App() {
8
8
  const store = useContext(StoreContext);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { Profiler, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.js';\nimport { Box } from '../ink.js';\nimport type { AppState, ChildProcess as ChildProcessT, Store } from '../types.js';\nimport ChildProcess from './ChildProcess.js';\n\nexport default function App() {\n const store = useContext<Store>(StoreContext);\n const appState = useStore(store) as AppState;\n\n return (\n <Profiler\n id=\"App\"\n onRender={(_id, phase) => {\n if (phase === 'update') store?.onRender();\n }}\n >\n <Box flexDirection=\"column\">\n {appState.processes.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} item={item} />\n ))}\n </Box>\n </Profiler>\n );\n}\n"],"names":["Profiler","useContext","useStore","StoreContext","Box","ChildProcess","App","store","appState","id","onRender","_id","phase","flexDirection","processes","map","item"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,UAAU,QAAQ,QAAQ;AAC7C,SAASC,QAAQ,QAAQ,UAAU;AACnC,OAAOC,kBAAkB,uBAAuB;AAChD,SAASC,GAAG,QAAQ,YAAY;AAEhC,OAAOC,kBAAkB,oBAAoB;AAE7C,eAAe,SAASC;IACtB,MAAMC,QAAQN,WAAkBE;IAChC,MAAMK,WAAWN,SAASK;IAE1B,qBACE,KAACP;QACCS,IAAG;QACHC,UAAU,CAACC,KAAKC;YACd,IAAIA,UAAU,UAAUL,kBAAAA,4BAAAA,MAAOG,QAAQ;QACzC;kBAEA,cAAA,KAACN;YAAIS,eAAc;sBAChBL,SAASM,SAAS,CAACC,GAAG,CAAC,CAACC,qBACvB,KAACX;oBAA2BW,MAAMA;mBAAfA,KAAKP,EAAE;;;AAKpC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/App.tsx"],"sourcesContent":["import { Box } from 'ink';\nimport { Profiler, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport StoreContext from '../contexts/Store.js';\nimport type { AppState, ChildProcess as ChildProcessT, Store } from '../types.js';\nimport ChildProcess from './ChildProcess.js';\n\nexport default function App() {\n const store = useContext<Store>(StoreContext);\n const appState = useStore(store) as AppState;\n\n return (\n <Profiler\n id=\"App\"\n onRender={(_id, phase) => {\n if (phase === 'update') store?.onRender();\n }}\n >\n <Box flexDirection=\"column\">\n {appState.processes.map((item: ChildProcessT) => (\n <ChildProcess key={item.id} item={item} />\n ))}\n </Box>\n </Profiler>\n );\n}\n"],"names":["Box","Profiler","useContext","useStore","StoreContext","ChildProcess","App","store","appState","id","onRender","_id","phase","flexDirection","processes","map","item"],"mappings":";AAAA,SAASA,GAAG,QAAQ,MAAM;AAC1B,SAASC,QAAQ,EAAEC,UAAU,QAAQ,QAAQ;AAC7C,SAASC,QAAQ,QAAQ,UAAU;AACnC,OAAOC,kBAAkB,uBAAuB;AAEhD,OAAOC,kBAAkB,oBAAoB;AAE7C,eAAe,SAASC;IACtB,MAAMC,QAAQL,WAAkBE;IAChC,MAAMI,WAAWL,SAASI;IAE1B,qBACE,KAACN;QACCQ,IAAG;QACHC,UAAU,CAACC,KAAKC;YACd,IAAIA,UAAU,UAAUL,kBAAAA,4BAAAA,MAAOG,QAAQ;QACzC;kBAEA,cAAA,KAACV;YAAIa,eAAc;sBAChBL,SAASM,SAAS,CAACC,GAAG,CAAC,CAACC,qBACvB,KAACX;oBAA2BW,MAAMA;mBAAfA,KAAKP,EAAE;;;AAKpC"}
@@ -28,8 +28,8 @@ function _object_spread(target) {
28
28
  }
29
29
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
30
  import c from 'ansi-colors';
31
+ import { Box, Text } from 'ink';
31
32
  import { memo, useMemo } from 'react';
32
- import { Box, Text } from '../ink.js';
33
33
  import ansiRegex from '../lib/ansiRegex.js';
34
34
  import figures from '../lib/figures.js';
35
35
  import { LineType } from '../types.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import c from 'ansi-colors';\nimport { memo, useMemo } from 'react';\nimport { Box, Text } from '../ink.js';\nimport ansiRegex from '../lib/ansiRegex.js';\nimport figures from '../lib/figures.js';\nimport type { ChildProcess as ChildProcessT, Line, State } from '../types.js';\nimport { LineType } from '../types.js';\nimport Spinner from './Spinner.js';\n\nconst REGEX_ANSI = ansiRegex();\nconst BLANK_LINE = { type: LineType.stdout, text: '' };\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-ignore\n error: <ink-text>{c.red(figures.cross)}</ink-text>,\n // @ts-ignore\n success: <ink-text>{c.green(figures.tick)}</ink-text>,\n running: <Spinner {...SPINNER} />,\n};\n\ntype ItemProps = {\n item: ChildProcessT;\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-ignore\n <ink-text key={index} style={{ minHeight: 1 }}>\n {line.text}\n {/* @ts-ignore */}\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' && <RunningSummary line={summary || BLANK_LINE} />}\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","memo","useMemo","Box","Text","ansiRegex","figures","LineType","Spinner","REGEX_ANSI","BLANK_LINE","type","stdout","text","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","replace","renderLine","index","style","minHeight","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","filter","stderr","summary","length","indexOf","pop","ChildProcess","expanded"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,OAAO,cAAc;AAC5B,SAASC,IAAI,EAAEC,OAAO,QAAQ,QAAQ;AACtC,SAASC,GAAG,EAAEC,IAAI,QAAQ,YAAY;AACtC,OAAOC,eAAe,sBAAsB;AAC5C,OAAOC,aAAa,oBAAoB;AAExC,SAASC,QAAQ,QAAQ,cAAc;AACvC,OAAOC,aAAa,eAAe;AAEnC,MAAMC,aAAaJ;AACnB,MAAMK,aAAa;IAAEC,MAAMJ,SAASK,MAAM;IAAEC,MAAM;AAAG;AAErD,oHAAoH;AACpH,MAAMC,UAAU;IACdC,UAAU;IACVC,QAAQ;QAAC;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;KAAI;AAC5D;AAEA,MAAMC,QAAQ;IACZ,aAAa;IACbC,qBAAO,KAACC;kBAAUnB,EAAEoB,GAAG,CAACd,QAAQe,KAAK;;IACrC,aAAa;IACbC,uBAAS,KAACH;kBAAUnB,EAAEuB,KAAK,CAACjB,QAAQkB,IAAI;;IACxCC,uBAAS,KAACjB,4BAAYM;AACxB;AAYA,MAAMY,uBAASzB,KACb,SAASyB,OAAO,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAe;IAClD,MAAMC,OAAOb,KAAK,CAACY,MAAM;IAEzB,qBACE,MAAC1B;;YACE2B;YACAH,uBAAS,KAACvB;gBAAK2B,IAAI;0BAAE,GAAGJ,QAAQrB,QAAQ0B,OAAO,CAAC,CAAC,CAAC;;0BACnD,KAAC5B;0BAAMwB;;;;AAGb,GACA,CAACK,GAAGC,IAAMD,EAAEN,KAAK,KAAKO,EAAEP,KAAK,IAAIM,EAAEL,KAAK,KAAKM,EAAEN,KAAK,IAAIK,EAAEJ,KAAK,KAAKK,EAAEL,KAAK;AAO7E,MAAMM,+BAAiBlC,KAAK,SAASkC,eAAe,EAAEC,IAAI,EAAuB;IAC/E,qBACE,KAACjC;QAAIkC,YAAY;kBACf,cAAA,KAACjC;YAAKkC,OAAM;sBAAQF,KAAKvB,IAAI,CAAC0B,OAAO,CAAC9B,YAAY;;;AAGxD;AAMA,MAAM+B,aAAa,CAACJ,MAAMK;IACxB,OACE,aAAa;kBACb,KAACtB;QAAqBuB,OAAO;YAAEC,WAAW;QAAE;kBACzCP,KAAKvB,IAAI;OADG4B;AAKnB;AAEA,MAAMG,sBAAQ3C,KAAK,SAAS2C,MAAM,EAAEC,KAAK,EAAc;IACrD,qBACE,KAAC1C;QAAI2C,eAAc;QAAST,YAAY;kBACrCQ,MAAME,GAAG,CAACP;;AAGjB;AAEA,MAAMQ,yBAAW/C,KAAK,SAAS+C,SAAS,EAAEC,IAAI,EAAa;IACzD,MAAM,EAAEJ,KAAK,EAAE,GAAGI;IAElB,qBACE,MAAC9C;QAAI2C,eAAc;;0BACjB,KAACpB;gBAAOC,OAAOsB,KAAKtB,KAAK;gBAAEC,OAAOqB,KAAKrB,KAAK;gBAAEC,OAAOoB,KAAKpB,KAAK;;0BAC/D,KAACe;gBAAMC,OAAOA;;;;AAGpB;AAEA,MAAMK,2BAAajD,KAAK,SAASiD,WAAW,EAAED,IAAI,EAAa;IAC7D,MAAM,EAAEpB,KAAK,EAAEgB,KAAK,EAAE,GAAGI;IAEzB,iDAAiD;IACjD,MAAME,SAASjD,QAAQ,IAAM2C,MAAMO,MAAM,CAAC,CAAChB,OAASA,KAAKzB,IAAI,KAAKJ,SAAS8C,MAAM,GAAG;QAACR;KAAM;IAC3F,MAAMS,UAAUpD,QAAQ,IAAM2C,MAAMO,MAAM,CAAC,CAAChB,OAASA,KAAKvB,IAAI,CAAC0C,MAAM,GAAG,KAAKJ,OAAOK,OAAO,CAACpB,QAAQ,GAAGqB,GAAG,IAAI;QAACZ;QAAOM;KAAO;IAE7H,qBACE,MAAChD;QAAI2C,eAAc;;0BACjB,KAACpB;gBAAOC,OAAOsB,KAAKtB,KAAK;gBAAEC,OAAOqB,KAAKrB,KAAK;gBAAEC,OAAOoB,KAAKpB,KAAK;;YAC9DA,UAAU,2BAAa,KAACM;gBAAeC,MAAMkB,WAAW5C;;YACxDyC,OAAOI,MAAM,GAAG,mBAAK,KAACX;gBAAMC,OAAOM;;;;AAG1C;AAEA,6BAAelD,KAAK,SAASyD,aAAa,EAAET,IAAI,EAAa;IAC3D,MAAM,EAAEU,QAAQ,EAAE,GAAGV;IACrB,OAAOU,yBAAW,KAACX;QAASC,MAAMA;uBAAW,KAACC;QAAWD,MAAMA;;AACjE,GAAG"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/ChildProcess.tsx"],"sourcesContent":["import c from 'ansi-colors';\nimport { Box, Text } from 'ink';\nimport { memo, useMemo } from 'react';\nimport ansiRegex from '../lib/ansiRegex.js';\nimport figures from '../lib/figures.js';\nimport type { ChildProcess as ChildProcessT, Line, State } from '../types.js';\nimport { LineType } from '../types.js';\nimport Spinner from './Spinner.js';\n\nconst REGEX_ANSI = ansiRegex();\nconst BLANK_LINE = { type: LineType.stdout, text: '' };\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-ignore\n error: <ink-text>{c.red(figures.cross)}</ink-text>,\n // @ts-ignore\n success: <ink-text>{c.green(figures.tick)}</ink-text>,\n running: <Spinner {...SPINNER} />,\n};\n\ntype ItemProps = {\n item: ChildProcessT;\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-ignore\n <ink-text key={index} style={{ minHeight: 1 }}>\n {line.text}\n {/* @ts-ignore */}\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' && <RunningSummary line={summary || BLANK_LINE} />}\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","Box","Text","memo","useMemo","ansiRegex","figures","LineType","Spinner","REGEX_ANSI","BLANK_LINE","type","stdout","text","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","replace","renderLine","index","style","minHeight","Lines","lines","flexDirection","map","Expanded","item","Contracted","errors","filter","stderr","summary","length","indexOf","pop","ChildProcess","expanded"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
2
3
  import { useEffect, useState } from 'react';
3
- import { Text } from '../ink.js';
4
4
  export default function Spinner({ interval, frames }) {
5
5
  const [index, setIndex] = useState(0);
6
6
  useEffect(()=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/components/Spinner.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { Text } from '../ink.js';\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":["useEffect","useState","Text","Spinner","interval","frames","index","setIndex","timer","setInterval","length","clearInterval"],"mappings":";AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,IAAI,QAAQ,YAAY;AAOjC,eAAe,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAgB;IAChE,MAAM,CAACC,OAAOC,SAAS,GAAGN,SAAS;IAEnCD,UAAU;QACR,MAAMQ,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,KAACH;kBAAM,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 { Text } from 'ink';\nimport { useEffect, useState } from 'react';\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":["Text","useEffect","useState","Spinner","interval","frames","index","setIndex","timer","setInterval","length","clearInterval"],"mappings":";AAAA,SAASA,IAAI,QAAQ,MAAM;AAC3B,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAO5C,eAAe,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAgB;IAChE,MAAM,CAACC,OAAOC,SAAS,GAAGL,SAAS;IAEnCD,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,KAACL;kBAAM,GAAGK,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC;;AACnC"}
@@ -1,53 +1,51 @@
1
+ // @ts-ignore
1
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { render } from 'ink';
2
4
  import { createStore } from 'zustand';
3
5
  import App from './components/App.js';
4
6
  import StoreContext from './contexts/Store.js';
5
- // @ts-ignore
6
- import { initialize, render } from './ink.js';
7
7
  export default function createApp() {
8
8
  let refCount = 0;
9
9
  let store = null;
10
10
  let inkApp = null;
11
11
  return {
12
12
  retain (fn) {
13
- initialize(()=>{
14
- if (++refCount > 1) return fn(store);
15
- if (store) throw new Error('Not expecting store');
16
- store = createStore()((set)=>({
17
- processes: [],
18
- addProcess: (process1)=>{
19
- store.nextRenders = store.renders + 1;
20
- set((state)=>({
21
- processes: [
22
- ...state.processes,
23
- process1
24
- ]
25
- }));
26
- },
27
- updateProcess: (process1)=>{
28
- store.nextRenders = store.renders + 1;
29
- set((state)=>({
30
- processes: state.processes.map((x)=>x.id === process1.id ? process1 : x)
31
- }));
32
- }
33
- }));
34
- store.nextRenders = 0;
35
- store.renders = 0;
36
- store.waiting = [];
37
- store.onRender = ()=>{
38
- store.renders++;
39
- if (store.renders === store.nextRenders) {
40
- while(store === null || store === void 0 ? void 0 : store.waiting.length)store.waiting.pop()();
13
+ if (++refCount > 1) return fn(store);
14
+ if (store) throw new Error('Not expecting store');
15
+ store = createStore()((set)=>({
16
+ processes: [],
17
+ addProcess: (process1)=>{
18
+ store.nextRenders = store.renders + 1;
19
+ set((state)=>({
20
+ processes: [
21
+ ...state.processes,
22
+ process1
23
+ ]
24
+ }));
25
+ },
26
+ updateProcess: (process1)=>{
27
+ store.nextRenders = store.renders + 1;
28
+ set((state)=>({
29
+ processes: state.processes.map((x)=>x.id === process1.id ? process1 : x)
30
+ }));
41
31
  }
42
- };
43
- inkApp = render(/*#__PURE__*/ _jsx(StoreContext.Provider, {
44
- value: store,
45
- children: /*#__PURE__*/ _jsx(App, {})
46
- }), {
47
- patchConsole: false
48
- });
49
- return fn(store);
32
+ }));
33
+ store.nextRenders = 0;
34
+ store.renders = 0;
35
+ store.waiting = [];
36
+ store.onRender = ()=>{
37
+ store.renders++;
38
+ if (store.renders === store.nextRenders) {
39
+ while(store === null || store === void 0 ? void 0 : store.waiting.length)store.waiting.pop()();
40
+ }
41
+ };
42
+ inkApp = render(/*#__PURE__*/ _jsx(StoreContext.Provider, {
43
+ value: store,
44
+ children: /*#__PURE__*/ _jsx(App, {})
45
+ }), {
46
+ patchConsole: false
50
47
  });
48
+ return fn(store);
51
49
  },
52
50
  release (cb) {
53
51
  if (--refCount > 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["import { createStore } from 'zustand';\nimport App from './components/App.js';\nimport StoreContext from './contexts/Store.js';\n\n// @ts-ignore\nimport { type Instance, initialize, render } from './ink.js';\nimport type { AppState, ReleaseCallback, RetainCallback } from './types.js';\n\nexport default function createApp() {\n let refCount = 0;\n let store = null;\n let inkApp: Instance | null = null;\n\n return {\n retain(fn: RetainCallback): undefined {\n initialize(() => {\n if (++refCount > 1) return fn(store);\n if (store) throw new Error('Not expecting store');\n store = createStore<AppState>()((set) => ({\n processes: [],\n addProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: [...state.processes, process] }));\n },\n updateProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: state.processes.map((x) => (x.id === process.id ? process : x)) }));\n },\n }));\n store.nextRenders = 0;\n store.renders = 0;\n store.waiting = [];\n store.onRender = () => {\n store.renders++;\n if (store.renders === store.nextRenders) {\n while (store?.waiting.length) store.waiting.pop()();\n }\n };\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\n });\n },\n release(cb: ReleaseCallback): undefined {\n if (--refCount > 0) {\n if (store.renders === store.nextRenders) cb();\n else store.waiting.push(cb);\n return;\n }\n if (!store) throw new Error('Expecting store');\n\n function done() {\n inkApp.unmount();\n inkApp = null;\n store = null;\n process.stdout.write('\\x1b[?25h'); // show cursor\n cb();\n }\n if (store.renders === store.nextRenders) done();\n else store.waiting.push(done);\n },\n };\n}\n"],"names":["createStore","App","StoreContext","initialize","render","createApp","refCount","store","inkApp","retain","fn","Error","set","processes","addProcess","process","nextRenders","renders","state","updateProcess","map","x","id","waiting","onRender","length","pop","Provider","value","patchConsole","release","cb","push","done","unmount","stdout","write"],"mappings":";AAAA,SAASA,WAAW,QAAQ,UAAU;AACtC,OAAOC,SAAS,sBAAsB;AACtC,OAAOC,kBAAkB,sBAAsB;AAE/C,aAAa;AACb,SAAwBC,UAAU,EAAEC,MAAM,QAAQ,WAAW;AAG7D,eAAe,SAASC;IACtB,IAAIC,WAAW;IACf,IAAIC,QAAQ;IACZ,IAAIC,SAA0B;IAE9B,OAAO;QACLC,QAAOC,EAAkB;YACvBP,WAAW;gBACT,IAAI,EAAEG,WAAW,GAAG,OAAOI,GAAGH;gBAC9B,IAAIA,OAAO,MAAM,IAAII,MAAM;gBAC3BJ,QAAQP,cAAwB,CAACY,MAAS,CAAA;wBACxCC,WAAW,EAAE;wBACbC,YAAY,CAACC;4BACXR,MAAMS,WAAW,GAAGT,MAAMU,OAAO,GAAG;4BACpCL,IAAI,CAACM,QAAW,CAAA;oCAAEL,WAAW;2CAAIK,MAAML,SAAS;wCAAEE;qCAAQ;gCAAC,CAAA;wBAC7D;wBACAI,eAAe,CAACJ;4BACdR,MAAMS,WAAW,GAAGT,MAAMU,OAAO,GAAG;4BACpCL,IAAI,CAACM,QAAW,CAAA;oCAAEL,WAAWK,MAAML,SAAS,CAACO,GAAG,CAAC,CAACC,IAAOA,EAAEC,EAAE,KAAKP,SAAQO,EAAE,GAAGP,WAAUM;gCAAI,CAAA;wBAC/F;oBACF,CAAA;gBACAd,MAAMS,WAAW,GAAG;gBACpBT,MAAMU,OAAO,GAAG;gBAChBV,MAAMgB,OAAO,GAAG,EAAE;gBAClBhB,MAAMiB,QAAQ,GAAG;oBACfjB,MAAMU,OAAO;oBACb,IAAIV,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAE;wBACvC,MAAOT,kBAAAA,4BAAAA,MAAOgB,OAAO,CAACE,MAAM,CAAElB,MAAMgB,OAAO,CAACG,GAAG;oBACjD;gBACF;gBACAlB,SAASJ,qBACP,KAACF,aAAayB,QAAQ;oBAACC,OAAOrB;8BAC5B,cAAA,KAACN;oBAEH;oBAAE4B,cAAc;gBAAM;gBAExB,OAAOnB,GAAGH;YACZ;QACF;QACAuB,SAAQC,EAAmB;YACzB,IAAI,EAAEzB,WAAW,GAAG;gBAClB,IAAIC,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAEe;qBACpCxB,MAAMgB,OAAO,CAACS,IAAI,CAACD;gBACxB;YACF;YACA,IAAI,CAACxB,OAAO,MAAM,IAAII,MAAM;YAE5B,SAASsB;gBACPzB,OAAO0B,OAAO;gBACd1B,SAAS;gBACTD,QAAQ;gBACRQ,QAAQoB,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;gBACjDL;YACF;YACA,IAAIxB,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAEiB;iBACpC1B,MAAMgB,OAAO,CAACS,IAAI,CAACC;QAC1B;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/createApp.tsx"],"sourcesContent":["// @ts-ignore\nimport { type Instance, render } from 'ink';\nimport { createStore } from 'zustand';\nimport App from './components/App.js';\nimport StoreContext from './contexts/Store.js';\nimport type { AppState, ReleaseCallback, RetainCallback } from './types.js';\n\nexport default function createApp() {\n let refCount = 0;\n let store = null;\n let inkApp: Instance | null = null;\n\n return {\n retain(fn: RetainCallback): undefined {\n if (++refCount > 1) return fn(store);\n if (store) throw new Error('Not expecting store');\n store = createStore<AppState>()((set) => ({\n processes: [],\n addProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: [...state.processes, process] }));\n },\n updateProcess: (process) => {\n store.nextRenders = store.renders + 1;\n set((state) => ({ processes: state.processes.map((x) => (x.id === process.id ? process : x)) }));\n },\n }));\n store.nextRenders = 0;\n store.renders = 0;\n store.waiting = [];\n store.onRender = () => {\n store.renders++;\n if (store.renders === store.nextRenders) {\n while (store?.waiting.length) store.waiting.pop()();\n }\n };\n inkApp = render(\n <StoreContext.Provider value={store}>\n <App />\n </StoreContext.Provider>,\n { patchConsole: false }\n );\n return fn(store);\n },\n release(cb: ReleaseCallback): undefined {\n if (--refCount > 0) {\n if (store.renders === store.nextRenders) cb();\n else store.waiting.push(cb);\n return;\n }\n if (!store) throw new Error('Expecting store');\n\n function done() {\n inkApp.unmount();\n inkApp = null;\n store = null;\n process.stdout.write('\\x1b[?25h'); // show cursor\n cb();\n }\n if (store.renders === store.nextRenders) done();\n else store.waiting.push(done);\n },\n };\n}\n"],"names":["render","createStore","App","StoreContext","createApp","refCount","store","inkApp","retain","fn","Error","set","processes","addProcess","process","nextRenders","renders","state","updateProcess","map","x","id","waiting","onRender","length","pop","Provider","value","patchConsole","release","cb","push","done","unmount","stdout","write"],"mappings":"AAAA,aAAa;;AACb,SAAwBA,MAAM,QAAQ,MAAM;AAC5C,SAASC,WAAW,QAAQ,UAAU;AACtC,OAAOC,SAAS,sBAAsB;AACtC,OAAOC,kBAAkB,sBAAsB;AAG/C,eAAe,SAASC;IACtB,IAAIC,WAAW;IACf,IAAIC,QAAQ;IACZ,IAAIC,SAA0B;IAE9B,OAAO;QACLC,QAAOC,EAAkB;YACvB,IAAI,EAAEJ,WAAW,GAAG,OAAOI,GAAGH;YAC9B,IAAIA,OAAO,MAAM,IAAII,MAAM;YAC3BJ,QAAQL,cAAwB,CAACU,MAAS,CAAA;oBACxCC,WAAW,EAAE;oBACbC,YAAY,CAACC;wBACXR,MAAMS,WAAW,GAAGT,MAAMU,OAAO,GAAG;wBACpCL,IAAI,CAACM,QAAW,CAAA;gCAAEL,WAAW;uCAAIK,MAAML,SAAS;oCAAEE;iCAAQ;4BAAC,CAAA;oBAC7D;oBACAI,eAAe,CAACJ;wBACdR,MAAMS,WAAW,GAAGT,MAAMU,OAAO,GAAG;wBACpCL,IAAI,CAACM,QAAW,CAAA;gCAAEL,WAAWK,MAAML,SAAS,CAACO,GAAG,CAAC,CAACC,IAAOA,EAAEC,EAAE,KAAKP,SAAQO,EAAE,GAAGP,WAAUM;4BAAI,CAAA;oBAC/F;gBACF,CAAA;YACAd,MAAMS,WAAW,GAAG;YACpBT,MAAMU,OAAO,GAAG;YAChBV,MAAMgB,OAAO,GAAG,EAAE;YAClBhB,MAAMiB,QAAQ,GAAG;gBACfjB,MAAMU,OAAO;gBACb,IAAIV,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAE;oBACvC,MAAOT,kBAAAA,4BAAAA,MAAOgB,OAAO,CAACE,MAAM,CAAElB,MAAMgB,OAAO,CAACG,GAAG;gBACjD;YACF;YACAlB,SAASP,qBACP,KAACG,aAAauB,QAAQ;gBAACC,OAAOrB;0BAC5B,cAAA,KAACJ;gBAEH;gBAAE0B,cAAc;YAAM;YAExB,OAAOnB,GAAGH;QACZ;QACAuB,SAAQC,EAAmB;YACzB,IAAI,EAAEzB,WAAW,GAAG;gBAClB,IAAIC,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAEe;qBACpCxB,MAAMgB,OAAO,CAACS,IAAI,CAACD;gBACxB;YACF;YACA,IAAI,CAACxB,OAAO,MAAM,IAAII,MAAM;YAE5B,SAASsB;gBACPzB,OAAO0B,OAAO;gBACd1B,SAAS;gBACTD,QAAQ;gBACRQ,QAAQoB,MAAM,CAACC,KAAK,CAAC,cAAc,cAAc;gBACjDL;YACF;YACA,IAAIxB,MAAMU,OAAO,KAAKV,MAAMS,WAAW,EAAEiB;iBACpC1B,MAAMgB,OAAO,CAACS,IAAI,CAACC;QAC1B;IACF;AACF"}
@@ -1,7 +1,6 @@
1
- import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
2
- declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
3
- export { default as figures } from './lib/figures';
4
- export { default as formatArguments } from './lib/formatArguments';
5
- export * from './types';
1
+ export { default as figures } from './lib/figures.js';
2
+ export { default as formatArguments } from './lib/formatArguments.js';
3
+ export * from './types.js';
4
+ import type { default as spawnTerminal } from './spawnTerminal.js';
6
5
  declare const _default: typeof spawnTerminal;
7
6
  export default _default;
@@ -1,15 +1,4 @@
1
- function spawnTerminal(command, args, spawnOptions, options, callback) {
2
- const worker = require('./worker.js');
3
- if (typeof options === 'function') {
4
- callback = options;
5
- options = {};
6
- }
7
- options = options || {};
8
- if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);
9
- return new Promise((resolve, reject)=>worker(command, args, spawnOptions, options, (err, result)=>err ? reject(err) : resolve(result)));
10
- }
11
- const major = +process.versions.node.split('.')[0];
12
- export { default as figures } from './lib/figures';
13
- export { default as formatArguments } from './lib/formatArguments';
14
- export * from './types';
15
- export default major > 10 ? spawnTerminal : undefined;
1
+ export { default as figures } from './lib/figures.js';
2
+ export { default as formatArguments } from './lib/formatArguments.js';
3
+ export * from './types.js';
4
+ export default undefined;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\n const worker = require('./worker.js');\n\n if (typeof options === 'function') {\n callback = options as TerminalCallback;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);\n return new Promise((resolve, reject) => worker(command, args, spawnOptions, options, (err, result) => (err ? reject(err) : resolve(result))));\n}\n\nconst major = +process.versions.node.split('.')[0];\n\nexport { default as figures } from './lib/figures';\nexport { default as formatArguments } from './lib/formatArguments';\nexport * from './types';\nexport default major > 10 ? spawnTerminal : undefined;\n"],"names":["spawnTerminal","command","args","spawnOptions","options","callback","worker","require","Promise","resolve","reject","err","result","major","process","versions","node","split","default","figures","formatArguments","undefined"],"mappings":"AAEA,SAASA,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC3J,MAAMC,SAASC,QAAQ;IAEvB,IAAI,OAAOH,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOC,OAAOL,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIG,QAAQ,CAACC,SAASC,SAAWJ,OAAOL,SAASC,MAAMC,cAAcC,SAAS,CAACO,KAAKC,SAAYD,MAAMD,OAAOC,OAAOF,QAAQG;AACrI;AAEA,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAElD,SAASC,WAAWC,OAAO,QAAQ,gBAAgB;AACnD,SAASD,WAAWE,eAAe,QAAQ,wBAAwB;AACnE,cAAc,UAAU;AACxB,eAAeP,QAAQ,KAAKb,gBAAgBqB,UAAU"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-cjs.ts"],"sourcesContent":["export { default as figures } from './lib/figures.js';\nexport { default as formatArguments } from './lib/formatArguments.js';\nexport * from './types.js';\n\nimport type { default as spawnTerminal } from './spawnTerminal.js';\nexport default undefined as typeof spawnTerminal;\n"],"names":["default","figures","formatArguments","undefined"],"mappings":"AAAA,SAASA,WAAWC,OAAO,QAAQ,mBAAmB;AACtD,SAASD,WAAWE,eAAe,QAAQ,2BAA2B;AACtE,cAAc,aAAa;AAG3B,eAAeC,UAAkC"}
@@ -1,7 +1,6 @@
1
- import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
2
- declare function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
3
1
  export { default as figures } from './lib/figures.js';
4
2
  export { default as formatArguments } from './lib/formatArguments.js';
5
3
  export * from './types.js';
4
+ import { default as spawnTerminal } from './spawnTerminal.js';
6
5
  declare const _default: typeof spawnTerminal;
7
6
  export default _default;
@@ -1,17 +1,6 @@
1
- import worker from './worker.js';
2
- function spawnTerminal(command, args, spawnOptions, options, callback) {
3
- if (typeof options === 'function') {
4
- callback = options;
5
- options = {};
6
- }
7
- options = options || {};
8
- if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);
9
- return new Promise((resolve, reject)=>worker(command, args, spawnOptions, options, (err, result)=>{
10
- err ? reject(err) : resolve(result);
11
- }));
12
- }
13
- const major = +process.versions.node.split('.')[0];
14
1
  export { default as figures } from './lib/figures.js';
15
2
  export { default as formatArguments } from './lib/formatArguments.js';
16
3
  export * from './types.js';
17
- export default major > 10 ? spawnTerminal : undefined;
4
+ const major = +process.versions.node.split('.')[0];
5
+ import { default as spawnTerminal } from './spawnTerminal.js';
6
+ export default major > 14 ? spawnTerminal : undefined;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\nimport worker from './worker.js';\n\nfunction spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\n if (typeof options === 'function') {\n callback = options as TerminalCallback;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback as TerminalCallback);\n return new Promise((resolve, reject) =>\n worker(command, args, spawnOptions, options, (err, result) => {\n err ? reject(err) : resolve(result);\n })\n );\n}\n\nconst major = +process.versions.node.split('.')[0];\n\nexport { default as figures } from './lib/figures.js';\nexport { default as formatArguments } from './lib/formatArguments.js';\nexport * from './types.js';\nexport default major > 10 ? spawnTerminal : undefined;\n"],"names":["worker","spawnTerminal","command","args","spawnOptions","options","callback","Promise","resolve","reject","err","result","major","process","versions","node","split","default","figures","formatArguments","undefined"],"mappings":"AACA,OAAOA,YAAY,cAAc;AAEjC,SAASC,cAAcC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC3J,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAON,OAAOE,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIC,QAAQ,CAACC,SAASC,SAC3BT,OAAOE,SAASC,MAAMC,cAAcC,SAAS,CAACK,KAAKC;YACjDD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;AAEJ;AAEA,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAElD,SAASC,WAAWC,OAAO,QAAQ,mBAAmB;AACtD,SAASD,WAAWE,eAAe,QAAQ,2BAA2B;AACtE,cAAc,aAAa;AAC3B,eAAeP,QAAQ,KAAKX,gBAAgBmB,UAAU"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/index-esm.ts"],"sourcesContent":["export { default as figures } from './lib/figures.js';\nexport { default as formatArguments } from './lib/formatArguments.js';\nexport * from './types.js';\n\nconst major = +process.versions.node.split('.')[0];\n\nimport { default as spawnTerminal } from './spawnTerminal.js';\nexport default major > 14 ? spawnTerminal : (undefined as typeof spawnTerminal);\n"],"names":["default","figures","formatArguments","major","process","versions","node","split","spawnTerminal","undefined"],"mappings":"AAAA,SAASA,WAAWC,OAAO,QAAQ,mBAAmB;AACtD,SAASD,WAAWE,eAAe,QAAQ,2BAA2B;AACtE,cAAc,aAAa;AAE3B,MAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAElD,SAASP,WAAWQ,aAAa,QAAQ,qBAAqB;AAC9D,eAAeL,QAAQ,KAAKK,gBAAiBC,UAAmC"}
@@ -1,3 +1,3 @@
1
- import { Writable } from 'readable-stream';
1
+ import { Writable } from 'stream';
2
2
  export type Callback = (lines: string[]) => undefined;
3
3
  export default function addLines(fn: Callback): Writable;
@@ -1,4 +1,4 @@
1
- import { Writable } from 'readable-stream';
1
+ import { Writable } from 'stream';
2
2
  const REGEX_NEW_LINE = /\r?\n|\r/g;
3
3
  export default function addLines(fn) {
4
4
  let last = '';
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nconst REGEX_NEW_LINE = /\\r?\\n|\\r/g;\n\nexport type Callback = (lines: string[]) => undefined;\n\nexport default function addLines(fn: Callback): Writable {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(REGEX_NEW_LINE);\n last = lines.pop();\n if (lines.length > 0) fn(lines);\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) fn([last]);\n last = '';\n });\n return stream;\n}\n"],"names":["Writable","REGEX_NEW_LINE","addLines","fn","last","stream","write","chunk","_enc","callback","more","toString","lines","split","pop","length","on"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,kBAAkB;AAE3C,MAAMC,iBAAiB;AAIvB,eAAe,SAASC,SAASC,EAAY;IAC3C,IAAIC,OAAO;IAEX,MAAMC,SAAS,IAAIL,SAAS;QAC1BM,OAAMC,KAAK,EAAEC,IAAI,EAAEC,QAAQ;YACzB,MAAMC,OAAON,OAAOG,MAAMI,QAAQ,CAAC;YACnC,MAAMC,QAAQF,KAAKG,KAAK,CAACZ;YACzBG,OAAOQ,MAAME,GAAG;YAChB,IAAIF,MAAMG,MAAM,GAAG,GAAGZ,GAAGS;YACzBH;QACF;IACF;IACAJ,OAAOW,EAAE,CAAC,UAAU;QAClB,IAAIZ,KAAKW,MAAM,EAAEZ,GAAG;YAACC;SAAK;QAC1BA,OAAO;IACT;IACA,OAAOC;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/addLines.ts"],"sourcesContent":["import { Writable } from 'stream';\n\nconst REGEX_NEW_LINE = /\\r?\\n|\\r/g;\n\nexport type Callback = (lines: string[]) => undefined;\n\nexport default function addLines(fn: Callback): Writable {\n let last = '';\n\n const stream = new Writable({\n write(chunk, _enc, callback) {\n const more = last + chunk.toString('utf8');\n const lines = more.split(REGEX_NEW_LINE);\n last = lines.pop();\n if (lines.length > 0) fn(lines);\n callback();\n },\n });\n stream.on('finish', () => {\n if (last.length) fn([last]);\n last = '';\n });\n return stream;\n}\n"],"names":["Writable","REGEX_NEW_LINE","addLines","fn","last","stream","write","chunk","_enc","callback","more","toString","lines","split","pop","length","on"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,SAAS;AAElC,MAAMC,iBAAiB;AAIvB,eAAe,SAASC,SAASC,EAAY;IAC3C,IAAIC,OAAO;IAEX,MAAMC,SAAS,IAAIL,SAAS;QAC1BM,OAAMC,KAAK,EAAEC,IAAI,EAAEC,QAAQ;YACzB,MAAMC,OAAON,OAAOG,MAAMI,QAAQ,CAAC;YACnC,MAAMC,QAAQF,KAAKG,KAAK,CAACZ;YACzBG,OAAOQ,MAAME,GAAG;YAChB,IAAIF,MAAMG,MAAM,GAAG,GAAGZ,GAAGS;YACzBH;QACF;IACF;IACAJ,OAAOW,EAAE,CAAC,UAAU;QAClB,IAAIZ,KAAKW,MAAM,EAAEZ,GAAG;YAACC;SAAK;QAC1BA,OAAO;IACT;IACA,OAAOC;AACT"}
@@ -1,3 +1,3 @@
1
- import { Writable } from 'readable-stream';
1
+ import { Writable } from 'stream';
2
2
  export type Callback = (lines: Buffer) => undefined;
3
3
  export default function concatWritable(callback: Callback): Writable;
@@ -1,4 +1,4 @@
1
- import { Writable } from 'readable-stream';
1
+ import { Writable } from 'stream';
2
2
  export default function concatWritable(callback) {
3
3
  const chunks = [];
4
4
  const stream = new Writable({
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from 'readable-stream';\n\nexport type Callback = (lines: Buffer) => undefined;\n\nexport default function concatWritable(callback: Callback): Writable {\n const chunks = [];\n const stream = new Writable({\n write: (chunk, _encoding, next) => {\n chunks.push(chunk);\n next();\n },\n });\n stream.on('finish', () => callback(Buffer.concat(chunks.splice(0))));\n return stream;\n}\n"],"names":["Writable","concatWritable","callback","chunks","stream","write","chunk","_encoding","next","push","on","Buffer","concat","splice"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,kBAAkB;AAI3C,eAAe,SAASC,eAAeC,QAAkB;IACvD,MAAMC,SAAS,EAAE;IACjB,MAAMC,SAAS,IAAIJ,SAAS;QAC1BK,OAAO,CAACC,OAAOC,WAAWC;YACxBL,OAAOM,IAAI,CAACH;YACZE;QACF;IACF;IACAJ,OAAOM,EAAE,CAAC,UAAU,IAAMR,SAASS,OAAOC,MAAM,CAACT,OAAOU,MAAM,CAAC;IAC/D,OAAOT;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/lib/concatWritable.ts"],"sourcesContent":["import { Writable } from 'stream';\n\nexport type Callback = (lines: Buffer) => undefined;\n\nexport default function concatWritable(callback: Callback): Writable {\n const chunks = [];\n const stream = new Writable({\n write: (chunk, _encoding, next) => {\n chunks.push(chunk);\n next();\n },\n });\n stream.on('finish', () => callback(Buffer.concat(chunks.splice(0))));\n return stream;\n}\n"],"names":["Writable","concatWritable","callback","chunks","stream","write","chunk","_encoding","next","push","on","Buffer","concat","splice"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,SAAS;AAIlC,eAAe,SAASC,eAAeC,QAAkB;IACvD,MAAMC,SAAS,EAAE;IACjB,MAAMC,SAAS,IAAIJ,SAAS;QAC1BK,OAAO,CAACC,OAAOC,WAAWC;YACxBL,OAAOM,IAAI,CAACH;YACZE;QACF;IACF;IACAJ,OAAOM,EAAE,CAAC,UAAU,IAAMR,SAASS,OAAOC,MAAM,CAACT,OAAOU,MAAM,CAAC;IAC/D,OAAOT;AACT"}
@@ -0,0 +1,2 @@
1
+ import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';
2
+ export default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult>;
@@ -0,0 +1,16 @@
1
+ function worker(command, args, spawnOptions, options, callback) {
2
+ import('./worker.js').then((fn)=>{
3
+ fn.default(command, args, spawnOptions, options, callback);
4
+ }).catch(callback);
5
+ }
6
+ export default function spawnTerminal(command, args, spawnOptions, options, callback) {
7
+ if (typeof options === 'function') {
8
+ callback = options;
9
+ options = {};
10
+ }
11
+ options = options || {};
12
+ if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback);
13
+ return new Promise((resolve, reject)=>worker(command, args, spawnOptions, options, (err, result)=>{
14
+ err ? reject(err) : resolve(result);
15
+ }));
16
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/spawnTerminal.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult, TerminalCallback, TerminalOptions } from './types.js';\n\nfunction worker(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined {\n import('./worker.js')\n .then((fn) => {\n fn.default(command, args, spawnOptions, options, callback);\n })\n .catch(callback);\n}\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options?: TerminalOptions | TerminalCallback, callback?: TerminalCallback): undefined | Promise<SpawnResult> {\n if (typeof options === 'function') {\n callback = options as TerminalCallback;\n options = {};\n }\n options = options || {};\n\n if (typeof callback === 'function') return worker(command, args, spawnOptions, options, callback as TerminalCallback);\n return new Promise((resolve, reject) =>\n worker(command, args, spawnOptions, options, (err, result) => {\n err ? reject(err) : resolve(result);\n })\n );\n}\n"],"names":["worker","command","args","spawnOptions","options","callback","then","fn","default","catch","spawnTerminal","Promise","resolve","reject","err","result"],"mappings":"AAEA,SAASA,OAAOC,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAAwB,EAAEC,QAA0B;IAC/H,MAAM,CAAC,eACJC,IAAI,CAAC,CAACC;QACLA,GAAGC,OAAO,CAACP,SAASC,MAAMC,cAAcC,SAASC;IACnD,GACCI,KAAK,CAACJ;AACX;AAEA,eAAe,SAASK,cAAcT,OAAe,EAAEC,IAAc,EAAEC,YAA0B,EAAEC,OAA4C,EAAEC,QAA2B;IAC1K,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU,CAAC;IACb;IACAA,UAAUA,WAAW,CAAC;IAEtB,IAAI,OAAOC,aAAa,YAAY,OAAOL,OAAOC,SAASC,MAAMC,cAAcC,SAASC;IACxF,OAAO,IAAIM,QAAQ,CAACC,SAASC,SAC3Bb,OAAOC,SAASC,MAAMC,cAAcC,SAAS,CAACU,KAAKC;YACjDD,MAAMD,OAAOC,OAAOF,QAAQG;QAC9B;AAEJ"}
@@ -1,4 +1,3 @@
1
- // @ts-ignore
2
1
  function _define_property(obj, key, value) {
3
2
  if (key in obj) {
4
3
  Object.defineProperty(obj, key, {
@@ -79,7 +78,7 @@ function _object_without_properties_loose(source, excluded) {
79
78
  return target;
80
79
  }
81
80
  import spawn, { crossSpawn } from 'cross-spawn-cb';
82
- import uuid from 'lil-uuid';
81
+ import crypto from 'crypto';
83
82
  import oo from 'on-one';
84
83
  import Queue from 'queue-cb';
85
84
  import createApp from './createApp.js';
@@ -95,7 +94,7 @@ export default function spawnTerminal(command, args, spawnOptions, options, call
95
94
  ]);
96
95
  if (stdio === 'inherit') {
97
96
  terminal.retain((store)=>{
98
- const id = uuid();
97
+ const id = crypto.randomUUID();
99
98
  store.getState().addProcess(_object_spread({
100
99
  id,
101
100
  title: [
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["// @ts-ignore\nimport spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport uuid from 'lil-uuid';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.js';\nimport addLines from './lib/addLines.js';\nimport concatWritable from './lib/concatWritable.js';\nimport formatArguments from './lib/formatArguments.js';\n\nimport type { SpawnError, SpawnOptions, TerminalCallback, TerminalOptions } from './types.js';\nimport { LineType } from './types.js';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = uuid();\n store.getState().addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((lines) => {\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stdout, text }))) });\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = addLines((lines) => {\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stderr, text }))) });\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // ensure rendering completes\n terminal.release(() => {\n err ? callback(err) : callback(null, res);\n });\n });\n });\n } else {\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = concatWritable((output) => {\n outputs.stdout.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = concatWritable((output) => {\n outputs.stderr.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: encoding || 'utf8' }));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n err ? callback(err) : callback(null, res);\n });\n }\n}\n"],"names":["spawn","crossSpawn","uuid","oo","Queue","createApp","addLines","concatWritable","formatArguments","LineType","terminal","spawnTerminal","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","retain","store","id","getState","addProcess","title","concat","join","state","lines","cp","outputs","stdout","stderr","queue","item","processes","find","x","updateProcess","map","text","type","defer","bind","pipe","worker","await","err","res","output","release","toString"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/spawn-term/src/worker.ts"],"sourcesContent":["import spawn, { crossSpawn, type SpawnResult } from 'cross-spawn-cb';\nimport crypto from 'crypto';\nimport oo from 'on-one';\nimport Queue from 'queue-cb';\n\nimport createApp from './createApp.js';\nimport addLines from './lib/addLines.js';\nimport concatWritable from './lib/concatWritable.js';\nimport formatArguments from './lib/formatArguments.js';\n\nimport type { SpawnError, SpawnOptions, TerminalCallback, TerminalOptions } from './types.js';\nimport { LineType } from './types.js';\n\nconst terminal = createApp();\n\nexport default function spawnTerminal(command: string, args: string[], spawnOptions: SpawnOptions, options: TerminalOptions, callback: TerminalCallback): undefined {\n const { encoding, stdio, ...csOptions } = spawnOptions;\n\n if (stdio === 'inherit') {\n terminal.retain((store) => {\n const id = crypto.randomUUID();\n store.getState().addProcess({ id, title: [command].concat(formatArguments(args)).join(' '), state: 'running', lines: [], ...options });\n\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = addLines((lines) => {\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stdout, text }))) });\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = addLines((lines) => {\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, lines: item.lines.concat(lines.map((text) => ({ type: LineType.stderr, text }))) });\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: 'utf8' }));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n const item = store.getState().processes.find((x) => x.id === id);\n store.getState().updateProcess({ ...item, state: err ? 'error' : 'success' });\n\n // ensure rendering completes\n terminal.release(() => {\n err ? callback(err) : callback(null, res);\n });\n });\n });\n } else {\n const cp = crossSpawn(command, args, csOptions);\n const outputs = { stdout: null, stderr: null };\n\n const queue = new Queue();\n if (cp.stdout) {\n outputs.stdout = concatWritable((output) => {\n outputs.stdout.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stdout.pipe(outputs.stdout), ['error', 'end', 'close', 'finish']));\n }\n if (cp.stderr) {\n outputs.stderr = concatWritable((output) => {\n outputs.stderr.output = output.toString(encoding || 'utf8');\n });\n queue.defer(oo.bind(null, cp.stderr.pipe(outputs.stderr), ['error', 'end', 'close', 'finish']));\n }\n queue.defer(spawn.worker.bind(null, cp, { ...csOptions, encoding: encoding || 'utf8' }));\n queue.await((err?: SpawnError) => {\n const res = (err ? err : {}) as SpawnResult;\n res.stdout = outputs.stdout ? outputs.stdout.output : null;\n res.stderr = outputs.stderr ? outputs.stderr.output : null;\n res.output = [res.stdout, res.stderr, null];\n err ? callback(err) : callback(null, res);\n });\n }\n}\n"],"names":["spawn","crossSpawn","crypto","oo","Queue","createApp","addLines","concatWritable","formatArguments","LineType","terminal","spawnTerminal","command","args","spawnOptions","options","callback","encoding","stdio","csOptions","retain","store","id","randomUUID","getState","addProcess","title","concat","join","state","lines","cp","outputs","stdout","stderr","queue","item","processes","find","x","updateProcess","map","text","type","defer","bind","pipe","worker","await","err","res","output","release","toString"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spawn-term",
3
- "version": "0.2.10",
3
+ "version": "1.0.1",
4
4
  "description": "Formats spawn with for terminal grouping",
5
5
  "keywords": [
6
6
  "spawn",
@@ -35,20 +35,17 @@
35
35
  "scripts": {
36
36
  "build": "tsds build",
37
37
  "format": "biome check --write --unsafe",
38
- "test": "tsds test:node --no-timeouts",
39
- "test:engines": "nvu engines npm test",
38
+ "test": "mocha --no-timeouts test/**/*.test.*",
39
+ "test:engines": "nvu engines tsds test:node --no-timeouts",
40
40
  "version": "tsds version"
41
41
  },
42
42
  "dependencies": {
43
43
  "ansi-colors": "^4.1.3",
44
- "core-js": "^3.43.0",
45
44
  "cross-spawn-cb": "^2.2.9",
46
- "lil-uuid": "^0.1.1",
45
+ "ink": "^6.0.0",
47
46
  "on-one": "^0.1.8",
48
47
  "queue-cb": "^1.5.3",
49
- "react": "^18.3.1",
50
- "readable-stream": "^2.3.8",
51
- "yoga-wasm-web": "^0.3.3",
48
+ "react": "^19.1.0",
52
49
  "zustand": "^5.0.5"
53
50
  },
54
51
  "devDependencies": {