@jujulego/jill 1.1.18 → 2.0.0-beta.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 (110) hide show
  1. package/dist/application.context.d.ts +28 -0
  2. package/dist/application.context.d.ts.map +1 -0
  3. package/dist/application.context.js +30 -0
  4. package/dist/application.context.js.map +1 -0
  5. package/dist/application.d.ts +7 -0
  6. package/dist/application.d.ts.map +1 -0
  7. package/dist/application.js +125 -0
  8. package/dist/application.js.map +1 -0
  9. package/dist/command.d.ts +7 -20
  10. package/dist/command.d.ts.map +1 -0
  11. package/dist/command.js +17 -62
  12. package/dist/command.js.map +1 -0
  13. package/dist/commands/each.command.d.ts +14 -13
  14. package/dist/commands/each.command.d.ts.map +1 -0
  15. package/dist/commands/each.command.js +144 -81
  16. package/dist/commands/each.command.js.map +1 -0
  17. package/dist/commands/list.command.d.ts +17 -14
  18. package/dist/commands/list.command.d.ts.map +1 -0
  19. package/dist/commands/list.command.js +199 -122
  20. package/dist/commands/list.command.js.map +1 -0
  21. package/dist/commands/run.command.d.ts +10 -11
  22. package/dist/commands/run.command.d.ts.map +1 -0
  23. package/dist/commands/run.command.js +73 -39
  24. package/dist/commands/run.command.js.map +1 -0
  25. package/dist/commands/tree.command.d.ts +7 -0
  26. package/dist/commands/tree.command.d.ts.map +1 -0
  27. package/dist/commands/tree.command.js +35 -0
  28. package/dist/commands/tree.command.js.map +1 -0
  29. package/dist/components/List.d.ts +9 -0
  30. package/dist/components/List.d.ts.map +1 -0
  31. package/dist/components/List.js +57 -0
  32. package/dist/components/List.js.map +1 -0
  33. package/dist/components/StaticLogs.d.ts +2 -0
  34. package/dist/components/StaticLogs.d.ts.map +1 -0
  35. package/dist/components/StaticLogs.js +77 -0
  36. package/dist/components/StaticLogs.js.map +1 -0
  37. package/dist/components/TaskSetSpinner.d.ts +6 -0
  38. package/dist/components/TaskSetSpinner.d.ts.map +1 -0
  39. package/dist/components/TaskSetSpinner.js +41 -0
  40. package/dist/components/TaskSetSpinner.js.map +1 -0
  41. package/dist/components/TaskSpinner.d.ts +6 -0
  42. package/dist/components/TaskSpinner.d.ts.map +1 -0
  43. package/dist/components/TaskSpinner.js +72 -0
  44. package/dist/components/TaskSpinner.js.map +1 -0
  45. package/dist/components/WorkspaceTree.d.ts +8 -0
  46. package/dist/components/WorkspaceTree.d.ts.map +1 -0
  47. package/dist/components/WorkspaceTree.js +153 -0
  48. package/dist/components/WorkspaceTree.js.map +1 -0
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +8 -8
  52. package/dist/index.js.map +1 -0
  53. package/dist/main.d.ts.map +1 -0
  54. package/dist/main.js +48 -21
  55. package/dist/main.js.map +1 -0
  56. package/dist/wrapper.d.ts +6 -0
  57. package/dist/wrapper.d.ts.map +1 -0
  58. package/dist/wrapper.js +30 -0
  59. package/dist/wrapper.js.map +1 -0
  60. package/dist/wrappers/project.wrapper.d.ts +7 -0
  61. package/dist/wrappers/project.wrapper.d.ts.map +1 -0
  62. package/dist/wrappers/project.wrapper.js +105 -0
  63. package/dist/wrappers/project.wrapper.js.map +1 -0
  64. package/dist/wrappers/workspace.wrapper.d.ts +5 -0
  65. package/dist/wrappers/workspace.wrapper.d.ts.map +1 -0
  66. package/dist/wrappers/workspace.wrapper.js +108 -0
  67. package/dist/wrappers/workspace.wrapper.js.map +1 -0
  68. package/package.json +43 -30
  69. package/dist/base.command.d.ts +0 -8
  70. package/dist/base.command.js +0 -33
  71. package/dist/commands/info.command.d.ts +0 -9
  72. package/dist/commands/info.command.js +0 -83
  73. package/dist/filters/affected.d.ts +0 -10
  74. package/dist/filters/affected.js +0 -80
  75. package/dist/filters/filter.d.ts +0 -8
  76. package/dist/filters/filter.js +0 -36
  77. package/dist/filters/index.d.ts +0 -2
  78. package/dist/filters/index.js +0 -22
  79. package/dist/logger.d.ts +0 -15
  80. package/dist/logger.js +0 -99
  81. package/dist/myr/commands/kill.command.d.ts +0 -11
  82. package/dist/myr/commands/kill.command.js +0 -52
  83. package/dist/myr/commands/list.command.d.ts +0 -18
  84. package/dist/myr/commands/list.command.js +0 -127
  85. package/dist/myr/commands/logs.command.d.ts +0 -11
  86. package/dist/myr/commands/logs.command.js +0 -83
  87. package/dist/myr/commands/spawn.command.d.ts +0 -11
  88. package/dist/myr/commands/spawn.command.js +0 -45
  89. package/dist/myr/commands/stop.command.d.ts +0 -7
  90. package/dist/myr/commands/stop.command.js +0 -43
  91. package/dist/myr/myr-client.d.ts +0 -22
  92. package/dist/myr/myr-client.js +0 -234
  93. package/dist/myr/myr.command.d.ts +0 -8
  94. package/dist/myr/myr.command.js +0 -46
  95. package/dist/myr/myr.process.d.ts +0 -1
  96. package/dist/myr/myr.process.js +0 -43
  97. package/dist/myr/watch.command.d.ts +0 -13
  98. package/dist/myr/watch.command.js +0 -87
  99. package/dist/pipeline.d.ts +0 -9
  100. package/dist/pipeline.js +0 -53
  101. package/dist/plugin.d.ts +0 -11
  102. package/dist/plugin.js +0 -40
  103. package/dist/project.command.d.ts +0 -13
  104. package/dist/project.command.js +0 -58
  105. package/dist/task-logger.d.ts +0 -14
  106. package/dist/task-logger.js +0 -66
  107. package/dist/utils/cli-list.d.ts +0 -15
  108. package/dist/utils/cli-list.js +0 -87
  109. package/dist/workspace.command.d.ts +0 -12
  110. package/dist/workspace.command.js +0 -55
@@ -0,0 +1,7 @@
1
+ export declare const TreeCommand: import("../application.context").CommandComponent<Omit<Omit<{}, "workspace"> & {
2
+ workspace: string | undefined;
3
+ }, "project" | "package-manager"> & {
4
+ project: string | undefined;
5
+ } & {
6
+ "package-manager": import("@jujulego/jill-core").PackageManager | undefined;
7
+ }>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["commands/tree.command.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,WAAW;;;;;;EAOtB,CAAC","file":"tree.command.d.ts","sourcesContent":["import { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { WorkspaceTree } from '../components/WorkspaceTree';\n\n// Command\nconst { wrapper } = withProject(withWorkspace(command({\n name: 'tree',\n description: 'Print workspace dependency tree',\n builder: (yargs) => yargs\n})));\n\n// Component\nexport const TreeCommand = wrapper(function InfoCommand() {\n const wks = useWorkspace();\n\n // Render\n return (\n <WorkspaceTree workspace={wks} />\n );\n});\n"]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TreeCommand = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _command = require("../command");
11
+
12
+ var _project = require("../wrappers/project.wrapper");
13
+
14
+ var _workspace = require("../wrappers/workspace.wrapper");
15
+
16
+ var _WorkspaceTree = require("../components/WorkspaceTree");
17
+
18
+ // Command
19
+ const {
20
+ wrapper
21
+ } = (0, _project.withProject)((0, _workspace.withWorkspace)((0, _command.command)({
22
+ name: 'tree',
23
+ description: 'Print workspace dependency tree',
24
+ builder: yargs => yargs
25
+ }))); // Component
26
+
27
+ const TreeCommand = wrapper(function InfoCommand() {
28
+ const wks = (0, _workspace.useWorkspace)(); // Render
29
+
30
+ return (0, _jsxRuntime.jsx)(_WorkspaceTree.WorkspaceTree, {
31
+ workspace: wks
32
+ });
33
+ });
34
+ exports.TreeCommand = TreeCommand;
35
+ //# sourceMappingURL=tree.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["commands/tree.command.js","commands/tree.command.tsx"],"names":["wrapper","name","description","builder","yargs","TreeCommand","InfoCommand","wks","WorkspaceTree","workspace"],"mappings":";;;;;;;AAAA;;ACAA;;AACA;;AACA;;AACA;;AAEA;AACA,MAAM;AAAEA,EAAAA;AAAF,IAAc,0BAAY,8BAAc,sBAAQ;AACpDC,EAAAA,IAAI,EAAE,MAD8C;AAEpDC,EAAAA,WAAW,EAAE,iCAFuC;AAGpDC,EAAAA,OAAO,EAAGC,KAAD,IAAWA;AAHgC,CAAR,CAAd,CAAZ,CAApB,C,CAMA;;AACO,MAAMC,WAAW,GAAGL,OAAO,CAAC,SAASM,WAAT,GAAoB;AACrD,QAAMC,GAAG,GAAG,8BAAZ,CADqD,CAGrD;;AACA,SACE,qBAACC,4BAAD,EAAc;AAACC,IAAAA,SAAS,EAAEF;AAAZ,GAAd,CADF;AAGD,CAPiC,CAA3B","file":"tree.command.js","sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { WorkspaceTree } from '../components/WorkspaceTree';\n// Command\nconst { wrapper } = withProject(withWorkspace(command({\n name: 'tree',\n description: 'Print workspace dependency tree',\n builder: (yargs) => yargs\n})));\n// Component\nexport const TreeCommand = wrapper(function InfoCommand() {\n const wks = useWorkspace();\n // Render\n return (_jsx(WorkspaceTree, { workspace: wks }));\n});","import { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { WorkspaceTree } from '../components/WorkspaceTree';\n\n// Command\nconst { wrapper } = withProject(withWorkspace(command({\n name: 'tree',\n description: 'Print workspace dependency tree',\n builder: (yargs) => yargs\n})));\n\n// Component\nexport const TreeCommand = wrapper(function InfoCommand() {\n const wks = useWorkspace();\n\n // Render\n return (\n <WorkspaceTree workspace={wks} />\n );\n});\n"]}
@@ -0,0 +1,9 @@
1
+ import { ReactElement } from 'react';
2
+ export declare type ListItem<K extends string> = Partial<Record<K, string | number>> & Record<string, unknown>;
3
+ export interface ListProps<K extends string> {
4
+ attrs: K[];
5
+ data: ListItem<K>[];
6
+ withoutHeaders?: boolean;
7
+ json?: boolean;
8
+ }
9
+ export declare const List: <K extends string>(props: ListProps<K>) => ReactElement | null;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/List.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAGhD,oBAAY,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvG,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM;IAC1C,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAQD,eAAO,MAAM,IAAI,6CAA4C,YAAY,GAAG,IA2B3E,CAAC","file":"List.d.ts","sourcesContent":["import { Box, Text, useStdout } from 'ink';\nimport { ReactElement, useEffect } from 'react';\n\n// Types\nexport type ListItem<K extends string> = Partial<Record<K, string | number>> & Record<string, unknown>;\n\nexport interface ListProps<K extends string> {\n\tattrs: K[];\n\tdata: ListItem<K>[];\n\twithoutHeaders?: boolean;\n\tjson?: boolean;\n}\n\n// Utils\nfunction capitalize(str: string): string {\n\treturn `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;\n}\n\n// Component\nexport const List = <K extends string>(props: ListProps<K>): ReactElement | null => {\n\tconst { attrs, data, withoutHeaders = false, json = false } = props;\n\tconst { stdout } = useStdout();\n\n\t// Effects\n\tuseEffect(() => {\n\t\tif (!json) return;\n\t\tif (!stdout) return;\n\n\t\tstdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));\n\t}, [stdout, data, json]);\n\n\t// Render\n\tif (json) return null;\n\n\treturn (\n\t\t<Box>\n\t\t\t{attrs.map((attr) => (\n\t\t\t\t<Box key={attr} flexDirection=\"column\" marginRight={2}>\n\t\t\t\t\t{!withoutHeaders && <Text bold>{capitalize(attr)}</Text>}\n\t\t\t\t\t{data.map((d, idx) => (\n\t\t\t\t\t\t<Text key={idx} color={d[attr] ? '' : 'grey'}>{d[attr] || 'unset'}</Text>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t))}\n\t\t</Box>\n\t);\n};\n"]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.List = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _ink = require("ink");
11
+
12
+ var _react = require("react");
13
+
14
+ // Utils
15
+ function capitalize(str) {
16
+ return `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;
17
+ } // Component
18
+
19
+
20
+ const List = props => {
21
+ const {
22
+ attrs,
23
+ data,
24
+ withoutHeaders = false,
25
+ json = false
26
+ } = props;
27
+ const {
28
+ stdout
29
+ } = (0, _ink.useStdout)(); // Effects
30
+
31
+ (0, _react.useEffect)(() => {
32
+ if (!json) return;
33
+ if (!stdout) return;
34
+ stdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));
35
+ }, [stdout, data, json]); // Render
36
+
37
+ if (json) return null;
38
+ return (0, _jsxRuntime.jsx)(_ink.Box, {
39
+ children: attrs.map(attr => (0, _jsxRuntime.jsxs)(_ink.Box, Object.assign({
40
+ flexDirection: "column",
41
+ marginRight: 2
42
+ }, {
43
+ children: [!withoutHeaders && (0, _jsxRuntime.jsx)(_ink.Text, Object.assign({
44
+ bold: true
45
+ }, {
46
+ children: capitalize(attr)
47
+ })), data.map((d, idx) => (0, _jsxRuntime.jsx)(_ink.Text, Object.assign({
48
+ color: d[attr] ? '' : 'grey'
49
+ }, {
50
+ children: d[attr] || 'unset'
51
+ }), idx))]
52
+ }), attr))
53
+ });
54
+ };
55
+
56
+ exports.List = List;
57
+ //# sourceMappingURL=List.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/List.js","components/List.tsx"],"names":["capitalize","str","substring","toUpperCase","List","props","attrs","data","withoutHeaders","json","stdout","write","JSON","stringify","isTTY","Box","children","map","attr","Object","assign","flexDirection","marginRight","Text","bold","d","idx","color"],"mappings":";;;;;;;AAAA;;ACAA;;AACA;;AAYA;AACA,SAASA,UAAT,CAAoBC,GAApB,EAA+B;AAC9B,SAAO,GAAGA,GAAG,CAACC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBC,WAApB,EAAiC,GAAGF,GAAG,CAACC,SAAJ,CAAc,CAAd,CAAgB,EAA9D;AACA,C,CAED;;;AACO,MAAME,IAAI,GAAsBC,KAAnB,IAA+D;AAClF,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,IAAT;AAAeC,IAAAA,cAAc,GAAG,KAAhC;AAAuCC,IAAAA,IAAI,GAAG;AAA9C,MAAwDJ,KAA9D;AACA,QAAM;AAAEK,IAAAA;AAAF,MAAa,qBAAnB,CAFkF,CAIlF;;AACA,wBAAU,MAAK;AACd,QAAI,CAACD,IAAL,EAAW;AACX,QAAI,CAACC,MAAL,EAAa;AAEbA,IAAAA,MAAM,CAACC,KAAP,CAAaC,IAAI,CAACC,SAAL,CAAeN,IAAf,EAAqB,IAArB,EAA2BG,MAAM,CAACI,KAAP,GAAe,CAAf,GAAmB,CAA9C,CAAb;AACA,GALD,EAKG,CAACJ,MAAD,EAASH,IAAT,EAAeE,IAAf,CALH,EALkF,CAYlF;;AACA,MAAIA,IAAJ,EAAU,OAAO,IAAP;AAEV,SACC,qBAACM,QAAD,EAAI;AAAAC,IAAAA,QAAA,EACFV,KAAK,CAACW,GAAN,CAAWC,IAAD,IACV,sBAACH,QAAD,EAAII,MAAA,CAAAC,MAAA,CAAA;AAAYC,MAAAA,aAAa,EAAC,QAA1B;AAAmCC,MAAAA,WAAW,EAAE;AAAhD,KAAA,EAAiD;AAAAN,MAAAA,QAAA,EAAA,CACnD,CAACR,cAAD,IAAmB,qBAACe,SAAD,EAAKJ,MAAA,CAAAC,MAAA,CAAA;AAACI,QAAAA,IAAI,EAAA;AAAL,OAAA,EAAK;AAAAR,QAAAA,QAAA,EAAEhB,UAAU,CAACkB,IAAD;AAAZ,OAAL,CAAL,CADgC,EAEnDX,IAAI,CAACU,GAAL,CAAS,CAACQ,CAAD,EAAIC,GAAJ,KACT,qBAACH,SAAD,EAAKJ,MAAA,CAAAC,MAAA,CAAA;AAAWO,QAAAA,KAAK,EAAEF,CAAC,CAACP,IAAD,CAAD,GAAU,EAAV,GAAe;AAAjC,OAAA,EAAuC;AAAAF,QAAAA,QAAA,EAAGS,CAAC,CAACP,IAAD,CAAD,IAAW;AAAd,OAAvC,CAAL,EAAWQ,GAAX,CADA,CAFmD;AAAA,KAAjD,CAAJ,EAAUR,IAAV,CADA;AADE,GAAJ,CADD;AAYA,CA3BM","file":"List.js","sourcesContent":["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Box, Text, useStdout } from 'ink';\nimport { useEffect } from 'react';\n// Utils\nfunction capitalize(str) {\n return `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;\n}\n// Component\nexport const List = (props) => {\n const { attrs, data, withoutHeaders = false, json = false } = props;\n const { stdout } = useStdout();\n // Effects\n useEffect(() => {\n if (!json)\n return;\n if (!stdout)\n return;\n stdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));\n }, [stdout, data, json]);\n // Render\n if (json)\n return null;\n return (_jsx(Box, { children: attrs.map((attr) => (_jsxs(Box, Object.assign({ flexDirection: \"column\", marginRight: 2 }, { children: [!withoutHeaders && _jsx(Text, Object.assign({ bold: true }, { children: capitalize(attr) })), data.map((d, idx) => (_jsx(Text, Object.assign({ color: d[attr] ? '' : 'grey' }, { children: d[attr] || 'unset' }), idx)))] }), attr))) }));\n};","import { Box, Text, useStdout } from 'ink';\nimport { ReactElement, useEffect } from 'react';\n\n// Types\nexport type ListItem<K extends string> = Partial<Record<K, string | number>> & Record<string, unknown>;\n\nexport interface ListProps<K extends string> {\n\tattrs: K[];\n\tdata: ListItem<K>[];\n\twithoutHeaders?: boolean;\n\tjson?: boolean;\n}\n\n// Utils\nfunction capitalize(str: string): string {\n\treturn `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;\n}\n\n// Component\nexport const List = <K extends string>(props: ListProps<K>): ReactElement | null => {\n\tconst { attrs, data, withoutHeaders = false, json = false } = props;\n\tconst { stdout } = useStdout();\n\n\t// Effects\n\tuseEffect(() => {\n\t\tif (!json) return;\n\t\tif (!stdout) return;\n\n\t\tstdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));\n\t}, [stdout, data, json]);\n\n\t// Render\n\tif (json) return null;\n\n\treturn (\n\t\t<Box>\n\t\t\t{attrs.map((attr) => (\n\t\t\t\t<Box key={attr} flexDirection=\"column\" marginRight={2}>\n\t\t\t\t\t{!withoutHeaders && <Text bold>{capitalize(attr)}</Text>}\n\t\t\t\t\t{data.map((d, idx) => (\n\t\t\t\t\t\t<Text key={idx} color={d[attr] ? '' : 'grey'}>{d[attr] || 'unset'}</Text>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t))}\n\t\t</Box>\n\t);\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import { FC } from 'react';
2
+ export declare const StaticLogs: FC;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/StaticLogs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAWhD,eAAO,MAAM,UAAU,EAAE,EAqCxB,CAAC","file":"StaticLogs.d.ts","sourcesContent":["import { logger } from '@jujulego/jill-core';\nimport { Static, Text } from 'ink';\nimport { FC, useEffect, useState } from 'react';\nimport { format } from 'winston';\nimport Transport from 'winston-transport';\n\n// Types\ninterface Log {\n label?: string;\n message: string;\n}\n\n// Components\nexport const StaticLogs: FC = () => {\n // State\n const [logs, setLogs] = useState<Log[]>([]);\n\n // Effects\n useEffect(() => {\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: format.combine(\n format.errors(),\n format.colorize({ message: true, colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' } }),\n )\n });\n }\n\n // Methods\n log(log: Log, next: () => void): void {\n setLogs((old) => [...old, log]);\n next();\n }\n };\n\n logger.add(transport);\n\n return () => void logger.remove(transport);\n }, []);\n\n // Render\n return (\n <Static items={logs} style={{ height: 1 }}>\n { ({ label, message }, idx) => (\n <Text key={idx}><Text color=\"grey\">jill: { label && `[${label}] ` }</Text>{ message }</Text>\n ) }\n </Static>\n );\n};\n"]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StaticLogs = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _jillCore = require("@jujulego/jill-core");
11
+
12
+ var _ink = require("ink");
13
+
14
+ var _react = require("react");
15
+
16
+ var _winston = require("winston");
17
+
18
+ var _winstonTransport = _interopRequireDefault(require("winston-transport"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ // Components
23
+ const StaticLogs = () => {
24
+ // State
25
+ const [logs, setLogs] = (0, _react.useState)([]); // Effects
26
+
27
+ (0, _react.useEffect)(() => {
28
+ const transport = new class extends _winstonTransport.default {
29
+ // Constructor
30
+ constructor() {
31
+ super({
32
+ format: _winston.format.combine(_winston.format.errors(), _winston.format.colorize({
33
+ message: true,
34
+ colors: {
35
+ debug: 'grey',
36
+ verbose: 'blue',
37
+ info: 'white',
38
+ error: 'red'
39
+ }
40
+ }))
41
+ });
42
+ } // Methods
43
+
44
+
45
+ log(log, next) {
46
+ setLogs(old => [...old, log]);
47
+ next();
48
+ }
49
+
50
+ }();
51
+
52
+ _jillCore.logger.add(transport);
53
+
54
+ return () => void _jillCore.logger.remove(transport);
55
+ }, []); // Render
56
+
57
+ return (0, _jsxRuntime.jsx)(_ink.Static, Object.assign({
58
+ items: logs,
59
+ style: {
60
+ height: 1
61
+ }
62
+ }, {
63
+ children: ({
64
+ label,
65
+ message
66
+ }, idx) => (0, _jsxRuntime.jsxs)(_ink.Text, {
67
+ children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
68
+ color: "grey"
69
+ }, {
70
+ children: ["jill: ", label && `[${label}] `]
71
+ })), message]
72
+ }, idx)
73
+ }));
74
+ };
75
+
76
+ exports.StaticLogs = StaticLogs;
77
+ //# sourceMappingURL=StaticLogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/StaticLogs.js","components/StaticLogs.tsx"],"names":["StaticLogs","logs","setLogs","transport","Transport","constructor","format","combine","errors","colorize","message","colors","debug","verbose","info","error","log","next","old","logger","add","remove","Static","Object","assign","items","style","height","children","label","idx","Text","color"],"mappings":";;;;;;;AAAA;;ACAA;;AACA;;AACA;;AACA;;AACA;;;;AAQA;AACO,MAAMA,UAAU,GAAO,MAAK;AACjC;AACA,QAAM,CAACC,IAAD,EAAOC,OAAP,IAAkB,qBAAgB,EAAhB,CAAxB,CAFiC,CAIjC;;AACA,wBAAU,MAAK;AACb,UAAMC,SAAS,GAAG,IAAI,cAAcC,yBAAd,CAAuB;AAC3C;AACAC,MAAAA,WAAA,GAAA;AACE,cAAM;AACJC,UAAAA,MAAM,EAAEA,gBAAOC,OAAP,CACND,gBAAOE,MAAP,EADM,EAENF,gBAAOG,QAAP,CAAgB;AAAEC,YAAAA,OAAO,EAAE,IAAX;AAAiBC,YAAAA,MAAM,EAAE;AAAEC,cAAAA,KAAK,EAAE,MAAT;AAAiBC,cAAAA,OAAO,EAAE,MAA1B;AAAkCC,cAAAA,IAAI,EAAE,OAAxC;AAAiDC,cAAAA,KAAK,EAAE;AAAxD;AAAzB,WAAhB,CAFM;AADJ,SAAN;AAMD,OAT0C,CAW3C;;;AACAC,MAAAA,GAAG,CAACA,GAAD,EAAWC,IAAX,EAA2B;AAC5Bf,QAAAA,OAAO,CAAEgB,GAAD,IAAS,CAAC,GAAGA,GAAJ,EAASF,GAAT,CAAV,CAAP;AACAC,QAAAA,IAAI;AACL;;AAf0C,KAA3B,EAAlB;;AAkBAE,qBAAOC,GAAP,CAAWjB,SAAX;;AAEA,WAAO,MAAM,KAAKgB,iBAAOE,MAAP,CAAclB,SAAd,CAAlB;AACD,GAtBD,EAsBG,EAtBH,EALiC,CA6BjC;;AACA,SACE,qBAACmB,WAAD,EAAOC,MAAA,CAAAC,MAAA,CAAA;AAACC,IAAAA,KAAK,EAAExB,IAAR;AAAcyB,IAAAA,KAAK,EAAE;AAAEC,MAAAA,MAAM,EAAE;AAAV;AAArB,GAAA,EAAkC;AAAAC,IAAAA,QAAA,EACrC,CAAC;AAAEC,MAAAA,KAAF;AAASnB,MAAAA;AAAT,KAAD,EAAqBoB,GAArB,KACA,sBAACC,SAAD,EAAK;AAAAH,MAAAA,QAAA,EAAA,CAAW,sBAACG,SAAD,EAAKR,MAAA,CAAAC,MAAA,CAAA;AAACQ,QAAAA,KAAK,EAAC;AAAP,OAAA,EAAa;AAAAJ,QAAAA,QAAA,EAAA,CAAA,QAAA,EAASC,KAAK,IAAI,IAAIA,KAAK,IAA3B;AAAA,OAAb,CAAL,CAAX,EAAuEnB,OAAvE;AAAA,KAAL,EAAWoB,GAAX;AAFqC,GAAlC,CAAP,CADF;AAOD,CArCM","file":"StaticLogs.js","sourcesContent":["import { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nimport { logger } from '@jujulego/jill-core';\nimport { Static, Text } from 'ink';\nimport { useEffect, useState } from 'react';\nimport { format } from 'winston';\nimport Transport from 'winston-transport';\n// Components\nexport const StaticLogs = () => {\n // State\n const [logs, setLogs] = useState([]);\n // Effects\n useEffect(() => {\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: format.combine(format.errors(), format.colorize({ message: true, colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' } }))\n });\n }\n // Methods\n log(log, next) {\n setLogs((old) => [...old, log]);\n next();\n }\n };\n logger.add(transport);\n return () => void logger.remove(transport);\n }, []);\n // Render\n return (_jsx(Static, Object.assign({ items: logs, style: { height: 1 } }, { children: ({ label, message }, idx) => (_jsxs(Text, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"jill: \", label && `[${label}] `] })), message] }, idx)) })));\n};","import { logger } from '@jujulego/jill-core';\nimport { Static, Text } from 'ink';\nimport { FC, useEffect, useState } from 'react';\nimport { format } from 'winston';\nimport Transport from 'winston-transport';\n\n// Types\ninterface Log {\n label?: string;\n message: string;\n}\n\n// Components\nexport const StaticLogs: FC = () => {\n // State\n const [logs, setLogs] = useState<Log[]>([]);\n\n // Effects\n useEffect(() => {\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: format.combine(\n format.errors(),\n format.colorize({ message: true, colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' } }),\n )\n });\n }\n\n // Methods\n log(log: Log, next: () => void): void {\n setLogs((old) => [...old, log]);\n next();\n }\n };\n\n logger.add(transport);\n\n return () => void logger.remove(transport);\n }, []);\n\n // Render\n return (\n <Static items={logs} style={{ height: 1 }}>\n { ({ label, message }, idx) => (\n <Text key={idx}><Text color=\"grey\">jill: { label && `[${label}] ` }</Text>{ message }</Text>\n ) }\n </Static>\n );\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { TaskSet } from '@jujulego/jill-core';
2
+ import { FC } from 'react';
3
+ export interface TaskSetSpinnerProps {
4
+ taskSet: TaskSet;
5
+ }
6
+ export declare const TaskSetSpinner: FC<TaskSetSpinnerProps>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/TaskSetSpinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAIhD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAGD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAyBlD,CAAC","file":"TaskSetSpinner.d.ts","sourcesContent":["import { Task, TaskSet } from '@jujulego/jill-core';\nimport { FC, useEffect, useState } from 'react';\nimport { TaskSpinner } from './TaskSpinner';\n\n// Types\nexport interface TaskSetSpinnerProps {\n taskSet: TaskSet;\n}\n\n// Component\nexport const TaskSetSpinner: FC<TaskSetSpinnerProps> = (props) => {\n const { taskSet } = props;\n\n // State\n const [tasks, setTasks] = useState<Task[]>([]);\n\n // Effects\n useEffect(() => {\n const handler = (task: Task) => {\n setTasks((old) => [...old, task]);\n };\n\n taskSet.on('started', handler);\n\n return () => {\n taskSet.off('started', handler);\n };\n }, [taskSet]);\n\n // Render\n return (\n <>\n { tasks.map((task, idx) => <TaskSpinner key={idx} task={task} />) }\n </>\n );\n};\n"]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TaskSetSpinner = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _react = require("react");
11
+
12
+ var _TaskSpinner = require("./TaskSpinner");
13
+
14
+ // Component
15
+ const TaskSetSpinner = props => {
16
+ const {
17
+ taskSet
18
+ } = props; // State
19
+
20
+ const [tasks, setTasks] = (0, _react.useState)([]); // Effects
21
+
22
+ (0, _react.useEffect)(() => {
23
+ const handler = task => {
24
+ setTasks(old => [...old, task]);
25
+ };
26
+
27
+ taskSet.on('started', handler);
28
+ return () => {
29
+ taskSet.off('started', handler);
30
+ };
31
+ }, [taskSet]); // Render
32
+
33
+ return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
34
+ children: tasks.map((task, idx) => (0, _jsxRuntime.jsx)(_TaskSpinner.TaskSpinner, {
35
+ task: task
36
+ }, idx))
37
+ });
38
+ };
39
+
40
+ exports.TaskSetSpinner = TaskSetSpinner;
41
+ //# sourceMappingURL=TaskSetSpinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/TaskSetSpinner.js","components/TaskSetSpinner.tsx"],"names":["TaskSetSpinner","props","taskSet","tasks","setTasks","handler","task","old","on","off","_Fragment","children","map","idx","TaskSpinner"],"mappings":";;;;;;;AAAA;;ACCA;;AACA;;AAOA;AACO,MAAMA,cAAc,GAA6BC,KAAD,IAAU;AAC/D,QAAM;AAAEC,IAAAA;AAAF,MAAcD,KAApB,CAD+D,CAG/D;;AACA,QAAM,CAACE,KAAD,EAAQC,QAAR,IAAoB,qBAAiB,EAAjB,CAA1B,CAJ+D,CAM/D;;AACA,wBAAU,MAAK;AACb,UAAMC,OAAO,GAAIC,IAAD,IAAe;AAC7BF,MAAAA,QAAQ,CAAEG,GAAD,IAAS,CAAC,GAAGA,GAAJ,EAASD,IAAT,CAAV,CAAR;AACD,KAFD;;AAIAJ,IAAAA,OAAO,CAACM,EAAR,CAAW,SAAX,EAAsBH,OAAtB;AAEA,WAAO,MAAK;AACVH,MAAAA,OAAO,CAACO,GAAR,CAAY,SAAZ,EAAuBJ,OAAvB;AACD,KAFD;AAGD,GAVD,EAUG,CAACH,OAAD,CAVH,EAP+D,CAmB/D;;AACA,SACE,qBAAAQ,oBAAA,EAAA;AAAAC,IAAAA,QAAA,EACIR,KAAK,CAACS,GAAN,CAAU,CAACN,IAAD,EAAOO,GAAP,KAAe,qBAACC,wBAAD,EAAY;AAAWR,MAAAA,IAAI,EAAEA;AAAjB,KAAZ,EAAkBO,GAAlB,CAAzB;AADJ,GAAA,CADF;AAKD,CAzBM","file":"TaskSetSpinner.js","sourcesContent":["import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useEffect, useState } from 'react';\nimport { TaskSpinner } from './TaskSpinner';\n// Component\nexport const TaskSetSpinner = (props) => {\n const { taskSet } = props;\n // State\n const [tasks, setTasks] = useState([]);\n // Effects\n useEffect(() => {\n const handler = (task) => {\n setTasks((old) => [...old, task]);\n };\n taskSet.on('started', handler);\n return () => {\n taskSet.off('started', handler);\n };\n }, [taskSet]);\n // Render\n return (_jsx(_Fragment, { children: tasks.map((task, idx) => _jsx(TaskSpinner, { task: task }, idx)) }));\n};","import { Task, TaskSet } from '@jujulego/jill-core';\nimport { FC, useEffect, useState } from 'react';\nimport { TaskSpinner } from './TaskSpinner';\n\n// Types\nexport interface TaskSetSpinnerProps {\n taskSet: TaskSet;\n}\n\n// Component\nexport const TaskSetSpinner: FC<TaskSetSpinnerProps> = (props) => {\n const { taskSet } = props;\n\n // State\n const [tasks, setTasks] = useState<Task[]>([]);\n\n // Effects\n useEffect(() => {\n const handler = (task: Task) => {\n setTasks((old) => [...old, task]);\n };\n\n taskSet.on('started', handler);\n\n return () => {\n taskSet.off('started', handler);\n };\n }, [taskSet]);\n\n // Render\n return (\n <>\n { tasks.map((task, idx) => <TaskSpinner key={idx} task={task} />) }\n </>\n );\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { Task } from '@jujulego/jill-core';
2
+ import { FC } from 'react';
3
+ export interface TaskSpinnerProps {
4
+ task: Task;
5
+ }
6
+ export declare const TaskSpinner: FC<TaskSpinnerProps>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/TaskSpinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAI3C,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAGhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;CACZ;AAGD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA0C5C,CAAC","file":"TaskSpinner.d.ts","sourcesContent":["import { Task } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport logSymbols from 'log-symbols';\nimport { FC, useEffect, useState } from 'react';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Component\nexport const TaskSpinner: FC<TaskSpinnerProps> = (props) => {\n const { task } = props;\n const wks = task.context.workspace;\n\n // State\n const [status, setStatus] = useState(task.status);\n\n // Effects\n useEffect(() => {\n task.on('status', setStatus);\n\n return () => {\n task.off('status', setStatus);\n };\n }, [task]);\n\n // Render\n if (status === 'done') {\n return (\n <Text>\n { logSymbols.success }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n } else if (status === 'failed') {\n return (\n <Text>\n { logSymbols.error }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n }\n\n return (\n <Text>\n <Spinner type={status === 'running' ? 'line' : 'simpleDotsScrolling'} />{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n};\n"]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TaskSpinner = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _ink = require("ink");
11
+
12
+ var _inkSpinner = _interopRequireDefault(require("ink-spinner"));
13
+
14
+ var _logSymbols = _interopRequireDefault(require("log-symbols"));
15
+
16
+ var _react = require("react");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ // Component
21
+ const TaskSpinner = props => {
22
+ const {
23
+ task
24
+ } = props;
25
+ const wks = task.context.workspace; // State
26
+
27
+ const [status, setStatus] = (0, _react.useState)(task.status); // Effects
28
+
29
+ (0, _react.useEffect)(() => {
30
+ task.on('status', setStatus);
31
+ return () => {
32
+ task.off('status', setStatus);
33
+ };
34
+ }, [task]); // Render
35
+
36
+ if (status === 'done') {
37
+ return (0, _jsxRuntime.jsxs)(_ink.Text, {
38
+ children: [_logSymbols.default.success, ' ', wks && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
39
+ children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
40
+ color: "grey"
41
+ }, {
42
+ children: ["[", wks.name, "]"]
43
+ })), ' ']
44
+ }), task.name, " is ", status]
45
+ });
46
+ } else if (status === 'failed') {
47
+ return (0, _jsxRuntime.jsxs)(_ink.Text, {
48
+ children: [_logSymbols.default.error, ' ', wks && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
49
+ children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
50
+ color: "grey"
51
+ }, {
52
+ children: ["[", wks.name, "]"]
53
+ })), ' ']
54
+ }), task.name, " is ", status]
55
+ });
56
+ }
57
+
58
+ return (0, _jsxRuntime.jsxs)(_ink.Text, {
59
+ children: [(0, _jsxRuntime.jsx)(_inkSpinner.default, {
60
+ type: status === 'running' ? 'line' : 'simpleDotsScrolling'
61
+ }), ' ', wks && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
62
+ children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
63
+ color: "grey"
64
+ }, {
65
+ children: ["[", wks.name, "]"]
66
+ })), ' ']
67
+ }), task.name, " is ", status]
68
+ });
69
+ };
70
+
71
+ exports.TaskSpinner = TaskSpinner;
72
+ //# sourceMappingURL=TaskSpinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/TaskSpinner.js","components/TaskSpinner.tsx"],"names":["TaskSpinner","props","task","wks","context","workspace","status","setStatus","on","off","Text","children","logSymbols","success","_Fragment","Object","assign","color","name","error","Spinner","type"],"mappings":";;;;;;;AAAA;;ACCA;;AACA;;AACA;;AACA;;;;AAOA;AACO,MAAMA,WAAW,GAA0BC,KAAD,IAAU;AACzD,QAAM;AAAEC,IAAAA;AAAF,MAAWD,KAAjB;AACA,QAAME,GAAG,GAAGD,IAAI,CAACE,OAAL,CAAaC,SAAzB,CAFyD,CAIzD;;AACA,QAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,qBAASL,IAAI,CAACI,MAAd,CAA5B,CALyD,CAOzD;;AACA,wBAAU,MAAK;AACbJ,IAAAA,IAAI,CAACM,EAAL,CAAQ,QAAR,EAAkBD,SAAlB;AAEA,WAAO,MAAK;AACVL,MAAAA,IAAI,CAACO,GAAL,CAAS,QAAT,EAAmBF,SAAnB;AACD,KAFD;AAGD,GAND,EAMG,CAACL,IAAD,CANH,EARyD,CAgBzD;;AACA,MAAII,MAAM,KAAK,MAAf,EAAuB;AACrB,WACE,sBAACI,SAAD,EAAK;AAAAC,MAAAA,QAAA,EAAA,CACDC,oBAAWC,OADV,EACoB,GADpB,EAEDV,GAAG,IAAI,sBAAAW,oBAAA,EAAA;AAAAH,QAAAA,QAAA,EAAA,CAAE,sBAACD,SAAD,EAAKK,MAAA,CAAAC,MAAA,CAAA;AAACC,UAAAA,KAAK,EAAC;AAAP,SAAA,EAAa;AAAAN,UAAAA,QAAA,EAAA,CAAA,GAAA,EAAIR,GAAG,CAACe,IAAR,EAAY,GAAZ;AAAA,SAAb,CAAL,CAAF,EAA2C,GAA3C;AAAA,OAAA,CAFN,EAGDhB,IAAI,CAACgB,IAHJ,EAGQ,MAHR,EAGgBZ,MAHhB;AAAA,KAAL,CADF;AAOD,GARD,MAQO,IAAIA,MAAM,KAAK,QAAf,EAAyB;AAC9B,WACE,sBAACI,SAAD,EAAK;AAAAC,MAAAA,QAAA,EAAA,CACDC,oBAAWO,KADV,EACkB,GADlB,EAEDhB,GAAG,IAAI,sBAAAW,oBAAA,EAAA;AAAAH,QAAAA,QAAA,EAAA,CAAE,sBAACD,SAAD,EAAKK,MAAA,CAAAC,MAAA,CAAA;AAACC,UAAAA,KAAK,EAAC;AAAP,SAAA,EAAa;AAAAN,UAAAA,QAAA,EAAA,CAAA,GAAA,EAAIR,GAAG,CAACe,IAAR,EAAY,GAAZ;AAAA,SAAb,CAAL,CAAF,EAA2C,GAA3C;AAAA,OAAA,CAFN,EAGDhB,IAAI,CAACgB,IAHJ,EAGQ,MAHR,EAGgBZ,MAHhB;AAAA,KAAL,CADF;AAOD;;AAED,SACE,sBAACI,SAAD,EAAK;AAAAC,IAAAA,QAAA,EAAA,CACH,qBAACS,mBAAD,EAAQ;AAACC,MAAAA,IAAI,EAAEf,MAAM,KAAK,SAAX,GAAuB,MAAvB,GAAgC;AAAvC,KAAR,CADG,EACsE,GADtE,EAEDH,GAAG,IAAI,sBAAAW,oBAAA,EAAA;AAAAH,MAAAA,QAAA,EAAA,CAAE,sBAACD,SAAD,EAAKK,MAAA,CAAAC,MAAA,CAAA;AAACC,QAAAA,KAAK,EAAC;AAAP,OAAA,EAAa;AAAAN,QAAAA,QAAA,EAAA,CAAA,GAAA,EAAIR,GAAG,CAACe,IAAR,EAAY,GAAZ;AAAA,OAAb,CAAL,CAAF,EAA2C,GAA3C;AAAA,KAAA,CAFN,EAGDhB,IAAI,CAACgB,IAHJ,EAGQ,MAHR,EAGgBZ,MAHhB;AAAA,GAAL,CADF;AAOD,CA1CM","file":"TaskSpinner.js","sourcesContent":["import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport logSymbols from 'log-symbols';\nimport { useEffect, useState } from 'react';\n// Component\nexport const TaskSpinner = (props) => {\n const { task } = props;\n const wks = task.context.workspace;\n // State\n const [status, setStatus] = useState(task.status);\n // Effects\n useEffect(() => {\n task.on('status', setStatus);\n return () => {\n task.off('status', setStatus);\n };\n }, [task]);\n // Render\n if (status === 'done') {\n return (_jsxs(Text, { children: [logSymbols.success, ' ', wks && _jsxs(_Fragment, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"[\", wks.name, \"]\"] })), ' '] }), task.name, \" is \", status] }));\n }\n else if (status === 'failed') {\n return (_jsxs(Text, { children: [logSymbols.error, ' ', wks && _jsxs(_Fragment, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"[\", wks.name, \"]\"] })), ' '] }), task.name, \" is \", status] }));\n }\n return (_jsxs(Text, { children: [_jsx(Spinner, { type: status === 'running' ? 'line' : 'simpleDotsScrolling' }), ' ', wks && _jsxs(_Fragment, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"[\", wks.name, \"]\"] })), ' '] }), task.name, \" is \", status] }));\n};","import { Task } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport logSymbols from 'log-symbols';\nimport { FC, useEffect, useState } from 'react';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Component\nexport const TaskSpinner: FC<TaskSpinnerProps> = (props) => {\n const { task } = props;\n const wks = task.context.workspace;\n\n // State\n const [status, setStatus] = useState(task.status);\n\n // Effects\n useEffect(() => {\n task.on('status', setStatus);\n\n return () => {\n task.off('status', setStatus);\n };\n }, [task]);\n\n // Render\n if (status === 'done') {\n return (\n <Text>\n { logSymbols.success }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n } else if (status === 'failed') {\n return (\n <Text>\n { logSymbols.error }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n }\n\n return (\n <Text>\n <Spinner type={status === 'running' ? 'line' : 'simpleDotsScrolling'} />{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { Workspace } from '@jujulego/jill-core';
2
+ import { FC, ReactElement } from 'react';
3
+ export interface WorkspaceTreeProps {
4
+ workspace: Workspace;
5
+ dev?: boolean;
6
+ level?: ReactElement;
7
+ }
8
+ export declare const WorkspaceTree: FC<WorkspaceTreeProps>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/WorkspaceTree.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,EAAE,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAG9D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAMD,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAwChD,CAAC","file":"WorkspaceTree.d.ts","sourcesContent":["import { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [wks]);\n\n // Render\n return (\n <Text>\n <Text {...style(dev)}>{ wks.name }</Text>\n { wks.version && (<Text color=\"grey\">@{ wks.version }</Text>) }\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WorkspaceTree = void 0;
7
+
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
10
+ var _ink = require("ink");
11
+
12
+ var _react = require("react");
13
+
14
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) {
16
+ return value instanceof P ? value : new P(function (resolve) {
17
+ resolve(value);
18
+ });
19
+ }
20
+
21
+ return new (P || (P = Promise))(function (resolve, reject) {
22
+ function fulfilled(value) {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ }
29
+
30
+ function rejected(value) {
31
+ try {
32
+ step(generator["throw"](value));
33
+ } catch (e) {
34
+ reject(e);
35
+ }
36
+ }
37
+
38
+ function step(result) {
39
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
40
+ }
41
+
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+
46
+ var __asyncValues = void 0 && (void 0).__asyncValues || function (o) {
47
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
48
+ var m = o[Symbol.asyncIterator],
49
+ i;
50
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
51
+ return this;
52
+ }, i);
53
+
54
+ function verb(n) {
55
+ i[n] = o[n] && function (v) {
56
+ return new Promise(function (resolve, reject) {
57
+ v = o[n](v), settle(resolve, reject, v.done, v.value);
58
+ });
59
+ };
60
+ }
61
+
62
+ function settle(resolve, reject, d, v) {
63
+ Promise.resolve(v).then(function (v) {
64
+ resolve({
65
+ value: v,
66
+ done: d
67
+ });
68
+ }, reject);
69
+ }
70
+ };
71
+
72
+ // Utils
73
+ const style = dev => ({
74
+ color: dev ? 'blue' : ''
75
+ }); // Component
76
+
77
+
78
+ const WorkspaceTree = props => {
79
+ const {
80
+ workspace: wks,
81
+ dev = false,
82
+ level = ''
83
+ } = props; // State
84
+
85
+ const [deps, setDeps] = (0, _react.useState)([]); // Effects
86
+
87
+ (0, _react.useEffect)(() => void (() => __awaiter(void 0, void 0, void 0, function* () {
88
+ var e_1, _a, e_2, _b;
89
+
90
+ const deps = [];
91
+
92
+ try {
93
+ for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {
94
+ const dep = _d.value;
95
+ deps.push([dep, dev]);
96
+ }
97
+ } catch (e_1_1) {
98
+ e_1 = {
99
+ error: e_1_1
100
+ };
101
+ } finally {
102
+ try {
103
+ if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);
104
+ } finally {
105
+ if (e_1) throw e_1.error;
106
+ }
107
+ }
108
+
109
+ try {
110
+ for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {
111
+ const dep = _f.value;
112
+ deps.push([dep, true]);
113
+ }
114
+ } catch (e_2_1) {
115
+ e_2 = {
116
+ error: e_2_1
117
+ };
118
+ } finally {
119
+ try {
120
+ if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);
121
+ } finally {
122
+ if (e_2) throw e_2.error;
123
+ }
124
+ }
125
+
126
+ setDeps(deps);
127
+ }))(), [wks]); // Render
128
+
129
+ return (0, _jsxRuntime.jsxs)(_ink.Text, {
130
+ children: [(0, _jsxRuntime.jsx)(_ink.Text, Object.assign({}, style(dev), {
131
+ children: wks.name
132
+ })), wks.version && (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
133
+ color: "grey"
134
+ }, {
135
+ children: ["@", wks.version]
136
+ })), (0, _jsxRuntime.jsx)(_ink.Newline, {}), deps.map(([dep, isDev], idx) => (0, _jsxRuntime.jsxs)(_ink.Text, {
137
+ children: [level, (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({}, style(dev), {
138
+ children: [idx === deps.length - 1 ? '└' : '├', "\u2500", ' ']
139
+ })), (0, _jsxRuntime.jsx)(WorkspaceTree, {
140
+ workspace: dep,
141
+ dev: isDev,
142
+ level: (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
143
+ children: [level, (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({}, style(dev), {
144
+ children: [idx === deps.length - 1 ? ' ' : '│', ' ']
145
+ }))]
146
+ })
147
+ })]
148
+ }, dep.name))]
149
+ });
150
+ };
151
+
152
+ exports.WorkspaceTree = WorkspaceTree;
153
+ //# sourceMappingURL=WorkspaceTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/WorkspaceTree.js","components/WorkspaceTree.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","style","dev","color","WorkspaceTree","props","workspace","wks","level","deps","setDeps","e_1","_a","e_2","_b","_c","dependencies","_d","dep","push","e_1_1","error","return","_e","devDependencies","_f","e_2_1","Text","children","Object","assign","name","version","Newline","map","isDev","idx","length","_Fragment"],"mappings":"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","file":"WorkspaceTree.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Newline, Text } from 'ink';\nimport { useEffect, useState } from 'react';\n// Utils\nconst style = (dev) => ({ color: dev ? 'blue' : '' });\n// Component\nexport const WorkspaceTree = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n // State\n const [deps, setDeps] = useState([]);\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n var e_1, _a, e_2, _b;\n const deps = [];\n try {\n for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {\n const dep = _d.value;\n deps.push([dep, dev]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {\n const dep = _f.value;\n deps.push([dep, true]);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n setDeps(deps);\n }))(), [wks]);\n // Render\n return (_jsxs(Text, { children: [_jsx(Text, Object.assign({}, style(dev), { children: wks.name })), wks.version && (_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"@\", wks.version] }))), _jsx(Newline, {}), deps.map(([dep, isDev], idx) => (_jsxs(Text, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? '└' : '├', \"\\u2500\", ' '] })), _jsx(WorkspaceTree, { workspace: dep, dev: isDev, level: _jsxs(_Fragment, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? ' ' : '│', ' '] }))] }) })] }, dep.name)))] }));\n};","import { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [wks]);\n\n // Render\n return (\n <Text>\n <Text {...style(dev)}>{ wks.name }</Text>\n { wks.version && (<Text color=\"grey\">@{ wks.version }</Text>) }\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { EachCommand } from './commands/each.command';
2
- export { InfoCommand } from './commands/info.command';
2
+ export { TreeCommand } from './commands/tree.command';
3
3
  export { ListCommand } from './commands/list.command';
4
4
  export { RunCommand } from './commands/run.command';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC","file":"index.d.ts","sourcesContent":["export { EachCommand } from './commands/each.command';\nexport { TreeCommand } from './commands/tree.command';\nexport { ListCommand } from './commands/list.command';\nexport { RunCommand } from './commands/run.command';\n"]}