@jujulego/jill 1.2.0 → 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 (80) 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 +8 -0
  10. package/dist/command.d.ts.map +1 -0
  11. package/dist/command.js +24 -0
  12. package/dist/command.js.map +1 -0
  13. package/dist/commands/each.command.d.ts +14 -12
  14. package/dist/commands/each.command.d.ts.map +1 -1
  15. package/dist/commands/each.command.js +91 -116
  16. package/dist/commands/each.command.js.map +1 -1
  17. package/dist/commands/list.command.d.ts +17 -13
  18. package/dist/commands/list.command.d.ts.map +1 -1
  19. package/dist/commands/list.command.js +148 -145
  20. package/dist/commands/list.command.js.map +1 -1
  21. package/dist/commands/run.command.d.ts +10 -10
  22. package/dist/commands/run.command.d.ts.map +1 -1
  23. package/dist/commands/run.command.js +46 -63
  24. package/dist/commands/run.command.js.map +1 -1
  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 -1
  51. package/dist/index.js +7 -7
  52. package/dist/index.js.map +1 -1
  53. package/dist/main.d.ts.map +1 -1
  54. package/dist/main.js +26 -16
  55. package/dist/main.js.map +1 -1
  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 +34 -24
  69. package/dist/commands/info.command.d.ts +0 -8
  70. package/dist/commands/info.command.d.ts.map +0 -1
  71. package/dist/commands/info.command.js +0 -178
  72. package/dist/commands/info.command.js.map +0 -1
  73. package/dist/core.plugin.d.ts +0 -2
  74. package/dist/core.plugin.d.ts.map +0 -1
  75. package/dist/core.plugin.js +0 -22
  76. package/dist/core.plugin.js.map +0 -1
  77. package/dist/task-logger.d.ts +0 -14
  78. package/dist/task-logger.d.ts.map +0 -1
  79. package/dist/task-logger.js +0 -76
  80. package/dist/task-logger.js.map +0 -1
@@ -1,12 +1,12 @@
1
- import { Arguments, Builder, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';
2
1
  import { WorkspaceDepsMode } from '@jujulego/jill-core';
3
- export interface RunArgs extends WorkspaceArgs {
2
+ export declare const RunCommand: import("../application.context").CommandComponent<Omit<Omit<{
4
3
  script: string;
5
- 'deps-mode': WorkspaceDepsMode;
6
- }
7
- export declare class RunCommand extends WorkspaceCommand<RunArgs> {
8
- readonly name = "run <script>";
9
- readonly description = "Run script inside workspace";
10
- protected define<U>(builder: Builder<U>): Builder<U & RunArgs>;
11
- protected run(args: Arguments<RunArgs>): Promise<number>;
12
- }
4
+ } & {
5
+ "deps-mode": WorkspaceDepsMode;
6
+ }, "workspace"> & {
7
+ workspace: string | undefined;
8
+ }, "project" | "package-manager"> & {
9
+ project: string | undefined;
10
+ } & {
11
+ "package-manager": import("@jujulego/jill-core").PackageManager | undefined;
12
+ }>;
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/run.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAW,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKjE,MAAM,WAAW,OAAQ,SAAQ,aAAa;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAGD,qBAAa,UAAW,SAAQ,gBAAgB,CAAC,OAAO,CAAC;IAEvD,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,iCAAiC;IAGrD,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC;cAc9C,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAqB/D","file":"run.command.d.ts","sourcesContent":["import { Arguments, Builder, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\n\nimport { TaskLogger } from '../task-logger';\n\n// Types\nexport interface RunArgs extends WorkspaceArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\nexport class RunCommand extends WorkspaceCommand<RunArgs> {\n // Attributes\n readonly name = 'run <script>';\n readonly description = 'Run script inside workspace';\n\n // Methods\n protected define<U>(builder: Builder<U>): Builder<U & RunArgs> {\n return super.define(y => builder(y)\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n );\n }\n\n protected async run(args: Arguments<RunArgs>): Promise<number> {\n await super.run(args);\n this.spinner.stop();\n\n // Run build task\n const set = new TaskSet();\n const task = await this.workspace.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args['deps-mode']\n });\n set.add(task);\n\n const tlogger = new TaskLogger();\n tlogger.on('spin-simple', (tsk) => tsk === task ? `Running ${args.script} in ${this.workspace.name} ...` : `Building ${tsk.context.workspace?.name} ...`);\n tlogger.on('fail', (tsk) => tsk === task ? `${args.script} failed` : `Failed to build ${tsk.context.workspace?.name}`);\n tlogger.on('succeed', (tsk) => tsk === task ? `${this.workspace.name} ${args.script} done` : `${tsk.context.workspace?.name} built`);\n tlogger.connect(set);\n\n set.start();\n const [result] = await set.waitFor('finished');\n return result.failed === 0 ? 0 : 1;\n }\n}\n"]}
1
+ {"version":3,"sources":["commands/run.command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAyBjE,eAAO,MAAM,UAAU;;;;;;;;;;EAqBrB,CAAC","file":"run.command.d.ts","sourcesContent":["import { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
@@ -5,11 +5,19 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.RunCommand = void 0;
7
7
 
8
- var _jillCommon = require("@jujulego/jill-common");
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
9
 
10
10
  var _jillCore = require("@jujulego/jill-core");
11
11
 
12
- var _taskLogger = require("../task-logger");
12
+ var _react = require("react");
13
+
14
+ var _command = require("../command");
15
+
16
+ var _project = require("../wrappers/project.wrapper");
17
+
18
+ var _workspace = require("../wrappers/workspace.wrapper");
19
+
20
+ var _TaskSetSpinner = require("../components/TaskSetSpinner");
13
21
 
14
22
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
15
23
  function adopt(value) {
@@ -44,68 +52,43 @@ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P
44
52
  };
45
53
 
46
54
  // Command
47
- class RunCommand extends _jillCommon.WorkspaceCommand {
48
- constructor() {
49
- super(...arguments); // Attributes
50
-
51
- this.name = 'run <script>';
52
- this.description = 'Run script inside workspace';
53
- } // Methods
54
-
55
-
56
- define(builder) {
57
- return super.define(y => builder(y).positional('script', {
58
- type: 'string',
59
- demandOption: true
60
- }).option('deps-mode', {
61
- choice: ['all', 'prod', 'none'],
62
- default: 'all',
63
- desc: 'Dependency selection mode:\n' + ' - all = dependencies AND devDependencies\n' + ' - prod = dependencies\n' + ' - none = nothing'
64
- }));
65
- }
66
-
67
- run(args) {
68
- const _super = Object.create(null, {
69
- run: {
70
- get: () => super.run
71
- }
55
+ const {
56
+ wrapper,
57
+ useArgs
58
+ } = (0, _project.withProject)((0, _workspace.withWorkspace)((0, _command.command)({
59
+ name: 'run <script>',
60
+ description: 'Run script inside workspace',
61
+ builder: yargs => yargs.positional('script', {
62
+ type: 'string',
63
+ demandOption: true
64
+ }).option('deps-mode', {
65
+ choice: ['all', 'prod', 'none'],
66
+ default: 'all',
67
+ desc: 'Dependency selection mode:\n' + ' - all = dependencies AND devDependencies\n' + ' - prod = dependencies\n' + ' - none = nothing'
68
+ })
69
+ }))); // Component
70
+
71
+ const RunCommand = wrapper(function InfoCommand() {
72
+ const {
73
+ script,
74
+ depsMode,
75
+ '--': rest = []
76
+ } = useArgs();
77
+ const wks = (0, _workspace.useWorkspace)(); // Refs
78
+
79
+ const tasks = (0, _react.useRef)(new _jillCore.TaskSet()); // Effects
80
+
81
+ (0, _react.useEffect)(() => void (() => __awaiter(this, void 0, void 0, function* () {
82
+ const task = yield wks.run(script, rest.map(arg => arg.toString()), {
83
+ buildDeps: depsMode
72
84
  });
85
+ tasks.current.add(task);
86
+ tasks.current.start();
87
+ }))(), [script, depsMode, rest, wks]); // Render
73
88
 
74
- var _a;
75
-
76
- return __awaiter(this, void 0, void 0, function* () {
77
- yield _super.run.call(this, args);
78
- this.spinner.stop(); // Run build task
79
-
80
- const set = new _jillCore.TaskSet();
81
- const task = yield this.workspace.run(args.script, (_a = args['--']) === null || _a === void 0 ? void 0 : _a.map(arg => arg.toString()), {
82
- buildDeps: args['deps-mode']
83
- });
84
- set.add(task);
85
- const tlogger = new _taskLogger.TaskLogger();
86
- tlogger.on('spin-simple', tsk => {
87
- var _a;
88
-
89
- return tsk === task ? `Running ${args.script} in ${this.workspace.name} ...` : `Building ${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ...`;
90
- });
91
- tlogger.on('fail', tsk => {
92
- var _a;
93
-
94
- return tsk === task ? `${args.script} failed` : `Failed to build ${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name}`;
95
- });
96
- tlogger.on('succeed', tsk => {
97
- var _a;
98
-
99
- return tsk === task ? `${this.workspace.name} ${args.script} done` : `${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} built`;
100
- });
101
- tlogger.connect(set);
102
- set.start();
103
- const [result] = yield set.waitFor('finished');
104
- return result.failed === 0 ? 0 : 1;
105
- });
106
- }
107
-
108
- }
109
-
89
+ return (0, _jsxRuntime.jsx)(_TaskSetSpinner.TaskSetSpinner, {
90
+ taskSet: tasks.current
91
+ });
92
+ });
110
93
  exports.RunCommand = RunCommand;
111
94
  //# sourceMappingURL=run.command.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/run.command.ts","commands/run.command.js"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","RunCommand","WorkspaceCommand","constructor","arguments","name","description","define","builder","y","positional","type","demandOption","option","choice","default","desc","run","args","_super","Object","create","get","_a","call","spinner","stop","set","TaskSet","task","workspace","script","map","arg","toString","buildDeps","add","tlogger","TaskLogger","on","tsk","context","connect","start","waitFor","failed"],"mappings":"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","file":"run.command.js","sourcesContent":["import { Arguments, Builder, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\n\nimport { TaskLogger } from '../task-logger';\n\n// Types\nexport interface RunArgs extends WorkspaceArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\nexport class RunCommand extends WorkspaceCommand<RunArgs> {\n // Attributes\n readonly name = 'run <script>';\n readonly description = 'Run script inside workspace';\n\n // Methods\n protected define<U>(builder: Builder<U>): Builder<U & RunArgs> {\n return super.define(y => builder(y)\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n );\n }\n\n protected async run(args: Arguments<RunArgs>): Promise<number> {\n await super.run(args);\n this.spinner.stop();\n\n // Run build task\n const set = new TaskSet();\n const task = await this.workspace.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args['deps-mode']\n });\n set.add(task);\n\n const tlogger = new TaskLogger();\n tlogger.on('spin-simple', (tsk) => tsk === task ? `Running ${args.script} in ${this.workspace.name} ...` : `Building ${tsk.context.workspace?.name} ...`);\n tlogger.on('fail', (tsk) => tsk === task ? `${args.script} failed` : `Failed to build ${tsk.context.workspace?.name}`);\n tlogger.on('succeed', (tsk) => tsk === task ? `${this.workspace.name} ${args.script} done` : `${tsk.context.workspace?.name} built`);\n tlogger.connect(set);\n\n set.start();\n const [result] = await set.waitFor('finished');\n return result.failed === 0 ? 0 : 1;\n }\n}\n","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};\nimport { WorkspaceCommand } from '@jujulego/jill-common';\nimport { TaskSet } from '@jujulego/jill-core';\nimport { TaskLogger } from '../task-logger';\n// Command\nexport class RunCommand extends WorkspaceCommand {\n constructor() {\n super(...arguments);\n // Attributes\n this.name = 'run <script>';\n this.description = 'Run script inside workspace';\n }\n // Methods\n define(builder) {\n return super.define(y => builder(y)\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n }));\n }\n run(args) {\n const _super = Object.create(null, {\n run: { get: () => super.run }\n });\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.run.call(this, args);\n this.spinner.stop();\n // Run build task\n const set = new TaskSet();\n const task = yield this.workspace.run(args.script, (_a = args['--']) === null || _a === void 0 ? void 0 : _a.map(arg => arg.toString()), {\n buildDeps: args['deps-mode']\n });\n set.add(task);\n const tlogger = new TaskLogger();\n tlogger.on('spin-simple', (tsk) => { var _a; return tsk === task ? `Running ${args.script} in ${this.workspace.name} ...` : `Building ${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} ...`; });\n tlogger.on('fail', (tsk) => { var _a; return tsk === task ? `${args.script} failed` : `Failed to build ${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name}`; });\n tlogger.on('succeed', (tsk) => { var _a; return tsk === task ? `${this.workspace.name} ${args.script} done` : `${(_a = tsk.context.workspace) === null || _a === void 0 ? void 0 : _a.name} built`; });\n tlogger.connect(set);\n set.start();\n const [result] = yield set.waitFor('finished');\n return result.failed === 0 ? 0 : 1;\n });\n }\n}"]}
1
+ {"version":3,"sources":["commands/run.command.js","commands/run.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","wrapper","useArgs","name","description","builder","yargs","positional","type","demandOption","option","choice","default","desc","RunCommand","InfoCommand","script","depsMode","rest","wks","tasks","TaskSet","task","run","map","arg","toString","buildDeps","current","add","start","TaskSetSpinner","taskSet"],"mappings":"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","file":"run.command.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};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { TaskSet } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n // Refs\n const tasks = useRef(new TaskSet());\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n const task = yield wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n tasks.current.add(task);\n tasks.current.start();\n }))(), [script, depsMode, rest, wks]);\n // Render\n return (_jsx(TaskSetSpinner, { taskSet: tasks.current }));\n});","import { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
@@ -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