@jujulego/jill 2.1.0-alpha.3 → 2.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/784.js +2 -0
- package/dist/784.js.map +1 -0
- package/dist/801.js +9 -0
- package/dist/801.js.LICENSE.txt +75 -0
- package/dist/801.js.map +1 -0
- package/dist/commands/each.d.ts +3 -3
- package/dist/commands/group.d.ts +2 -2
- package/dist/commands/index.d.ts +40 -0
- package/dist/commands/list.d.ts +3 -3
- package/dist/commands/run.d.ts +3 -3
- package/dist/filters/affected.filter.d.ts +1 -1
- package/dist/filters/pipeline.d.ts +2 -2
- package/dist/filters/private.filter.d.ts +1 -1
- package/dist/filters/scripts.filter.d.ts +1 -1
- package/dist/git.d.ts +1 -1
- package/dist/index.d.ts +32 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/main.js +2 -29
- package/dist/main.js.map +1 -1
- package/dist/middlewares/config-options.d.ts +5 -0
- package/dist/middlewares/load-project.d.ts +2 -3
- package/dist/middlewares/load-workspace.d.ts +1 -1
- package/dist/middlewares/setup-ink.d.ts +1 -1
- package/dist/project/project.d.ts +1 -1
- package/dist/project/workspace.d.ts +2 -2
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -0
- package/dist/services/ajv.config.d.ts +3 -0
- package/dist/services/config/explorer.d.ts +4 -0
- package/dist/services/config/loader.d.ts +4 -0
- package/dist/services/config/types.d.ts +5 -0
- package/dist/services/config/validator.d.ts +4 -0
- package/dist/services/inversify.config.d.ts +6 -6
- package/dist/services/plugins/plugin-loader.service.d.ts +10 -0
- package/dist/services/plugins/types.d.ts +5 -0
- package/dist/services/plugins/utils.d.ts +3 -0
- package/dist/services/spinner.service.d.ts +2 -2
- package/dist/services/task-expr.service.d.ts +1 -1
- package/dist/services/task-manager.config.d.ts +3 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/ui/global-spinner.d.ts +2 -2
- package/dist/ui/group-task-spinner.d.ts +2 -2
- package/dist/ui/layout.d.ts +5 -2
- package/dist/ui/list.d.ts +2 -2
- package/dist/ui/static-logs.d.ts +1 -2
- package/dist/ui/task-manager-spinner.d.ts +2 -2
- package/dist/ui/task-name.d.ts +2 -2
- package/dist/ui/task-spinner.d.ts +2 -2
- package/dist/ui/workspace-tree.d.ts +3 -3
- package/dist/utils/import.d.ts +1 -0
- package/dist/utils/yargs.d.ts +3 -3
- package/package.json +58 -55
- package/dist/commands/each.d.ts.map +0 -1
- package/dist/commands/each.js +0 -118
- package/dist/commands/each.js.map +0 -1
- package/dist/commands/group.d.ts.map +0 -1
- package/dist/commands/group.js +0 -70
- package/dist/commands/group.js.map +0 -1
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -170
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -71
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/tree.d.ts.map +0 -1
- package/dist/commands/tree.js +0 -35
- package/dist/commands/tree.js.map +0 -1
- package/dist/filters/affected.filter.d.ts.map +0 -1
- package/dist/filters/affected.filter.js +0 -82
- package/dist/filters/affected.filter.js.map +0 -1
- package/dist/filters/index.d.ts +0 -4
- package/dist/filters/index.d.ts.map +0 -1
- package/dist/filters/index.js +0 -21
- package/dist/filters/index.js.map +0 -1
- package/dist/filters/pipeline.d.ts.map +0 -1
- package/dist/filters/pipeline.js +0 -34
- package/dist/filters/pipeline.js.map +0 -1
- package/dist/filters/private.filter.d.ts.map +0 -1
- package/dist/filters/private.filter.js +0 -20
- package/dist/filters/private.filter.js.map +0 -1
- package/dist/filters/scripts.filter.d.ts.map +0 -1
- package/dist/filters/scripts.filter.js +0 -21
- package/dist/filters/scripts.filter.js.map +0 -1
- package/dist/git.d.ts.map +0 -1
- package/dist/git.js +0 -94
- package/dist/git.js.map +0 -1
- package/dist/main.d.ts.map +0 -1
- package/dist/middlewares/global-config.d.ts +0 -5
- package/dist/middlewares/global-config.d.ts.map +0 -1
- package/dist/middlewares/global-config.js +0 -36
- package/dist/middlewares/global-config.js.map +0 -1
- package/dist/middlewares/index.d.ts +0 -4
- package/dist/middlewares/index.d.ts.map +0 -1
- package/dist/middlewares/index.js +0 -21
- package/dist/middlewares/index.js.map +0 -1
- package/dist/middlewares/load-project.d.ts.map +0 -1
- package/dist/middlewares/load-project.js +0 -40
- package/dist/middlewares/load-project.js.map +0 -1
- package/dist/middlewares/load-workspace.d.ts.map +0 -1
- package/dist/middlewares/load-workspace.js +0 -42
- package/dist/middlewares/load-workspace.js.map +0 -1
- package/dist/middlewares/setup-ink.d.ts.map +0 -1
- package/dist/middlewares/setup-ink.js +0 -22
- package/dist/middlewares/setup-ink.js.map +0 -1
- package/dist/project/index.d.ts +0 -2
- package/dist/project/index.d.ts.map +0 -1
- package/dist/project/index.js +0 -19
- package/dist/project/index.js.map +0 -1
- package/dist/project/project.d.ts.map +0 -1
- package/dist/project/project.js +0 -190
- package/dist/project/project.js.map +0 -1
- package/dist/project/workspace.d.ts.map +0 -1
- package/dist/project/workspace.js +0 -179
- package/dist/project/workspace.js.map +0 -1
- package/dist/services/index.d.ts +0 -5
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -22
- package/dist/services/index.js.map +0 -1
- package/dist/services/inversify.config.d.ts.map +0 -1
- package/dist/services/inversify.config.js +0 -34
- package/dist/services/inversify.config.js.map +0 -1
- package/dist/services/logger.service.d.ts.map +0 -1
- package/dist/services/logger.service.js +0 -75
- package/dist/services/logger.service.js.map +0 -1
- package/dist/services/spinner.service.d.ts.map +0 -1
- package/dist/services/spinner.service.js +0 -57
- package/dist/services/spinner.service.js.map +0 -1
- package/dist/services/task-expr.service.d.ts.map +0 -1
- package/dist/services/task-expr.service.js +0 -172
- package/dist/services/task-expr.service.js.map +0 -1
- package/dist/services/task-manager.service.d.ts +0 -1
- package/dist/services/task-manager.service.d.ts.map +0 -1
- package/dist/services/task-manager.service.js +0 -18
- package/dist/services/task-manager.service.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -7
- package/dist/types.js.map +0 -1
- package/dist/ui/global-spinner.d.ts.map +0 -1
- package/dist/ui/global-spinner.js +0 -65
- package/dist/ui/global-spinner.js.map +0 -1
- package/dist/ui/group-task-spinner.d.ts.map +0 -1
- package/dist/ui/group-task-spinner.js +0 -54
- package/dist/ui/group-task-spinner.js.map +0 -1
- package/dist/ui/index.d.ts +0 -8
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js +0 -25
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/layout.d.ts.map +0 -1
- package/dist/ui/layout.js +0 -20
- package/dist/ui/layout.js.map +0 -1
- package/dist/ui/list.d.ts.map +0 -1
- package/dist/ui/list.js +0 -30
- package/dist/ui/list.js.map +0 -1
- package/dist/ui/static-logs.d.ts.map +0 -1
- package/dist/ui/static-logs.js +0 -63
- package/dist/ui/static-logs.js.map +0 -1
- package/dist/ui/task-manager-spinner.d.ts.map +0 -1
- package/dist/ui/task-manager-spinner.js +0 -39
- package/dist/ui/task-manager-spinner.js.map +0 -1
- package/dist/ui/task-name.d.ts.map +0 -1
- package/dist/ui/task-name.js +0 -35
- package/dist/ui/task-name.js.map +0 -1
- package/dist/ui/task-spinner.d.ts.map +0 -1
- package/dist/ui/task-spinner.js +0 -117
- package/dist/ui/task-spinner.js.map +0 -1
- package/dist/ui/workspace-tree.d.ts.map +0 -1
- package/dist/ui/workspace-tree.js +0 -88
- package/dist/ui/workspace-tree.js.map +0 -1
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -20
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/streams.d.ts.map +0 -1
- package/dist/utils/streams.js +0 -49
- package/dist/utils/streams.js.map +0 -1
- package/dist/utils/string.d.ts.map +0 -1
- package/dist/utils/string.js +0 -14
- package/dist/utils/string.js.map +0 -1
- package/dist/utils/yargs.d.ts.map +0 -1
- package/dist/utils/yargs.js +0 -33
- package/dist/utils/yargs.js.map +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "SpinnerService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>SpinnerService
|
|
8
|
-
});
|
|
9
|
-
const _eventTree = require("@jujulego/event-tree");
|
|
10
|
-
const _inversify = require("inversify");
|
|
11
|
-
const _inversifyConfig = require("./inversify.config");
|
|
12
|
-
var __decorate = (void 0) && (void 0).__decorate || function(decorators, target, key, desc) {
|
|
13
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
14
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
15
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
16
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
17
|
-
};
|
|
18
|
-
let SpinnerService = class SpinnerService extends _eventTree.EventSource {
|
|
19
|
-
// Attributes
|
|
20
|
-
_status = 'stop';
|
|
21
|
-
_label = '';
|
|
22
|
-
// Methods
|
|
23
|
-
spin(label) {
|
|
24
|
-
this._status = 'spin';
|
|
25
|
-
this._label = label;
|
|
26
|
-
this.emit('update.spin', this.state);
|
|
27
|
-
}
|
|
28
|
-
success(label) {
|
|
29
|
-
this._status = 'success';
|
|
30
|
-
this._label = label;
|
|
31
|
-
this.emit('update.success', this.state);
|
|
32
|
-
}
|
|
33
|
-
failed(label) {
|
|
34
|
-
this._status = 'failed';
|
|
35
|
-
this._label = label;
|
|
36
|
-
this.emit('update.failed', this.state);
|
|
37
|
-
}
|
|
38
|
-
stop() {
|
|
39
|
-
if (this._status === 'spin') {
|
|
40
|
-
this._status = 'stop';
|
|
41
|
-
this.emit('update.stop', this.state);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// Properties
|
|
45
|
-
get state() {
|
|
46
|
-
return {
|
|
47
|
-
status: this._status,
|
|
48
|
-
label: this._label
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
SpinnerService = __decorate([
|
|
53
|
-
(0, _inversify.injectable)()
|
|
54
|
-
], SpinnerService);
|
|
55
|
-
_inversifyConfig.container.bind(SpinnerService).toSelf().inSingletonScope();
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=spinner.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["services/spinner.service.js"],"sourcesContent":["import { EventSource } from '@jujulego/event-tree';\nimport { injectable } from 'inversify';\n\nimport { container } from './inversify.config';\n\n// Interface\nexport type SpinnerStatus = 'spin' | 'stop' | 'success' | 'failed';\nexport interface SpinnerState {\n status: SpinnerStatus;\n label: string;\n}\n\nexport type SpinnerEventMap = Record<`update.${SpinnerStatus}`, SpinnerState>;\n\n// Service\n@injectable()\nexport class SpinnerService extends EventSource<SpinnerEventMap> {\n // Attributes\n private _status: SpinnerStatus = 'stop';\n private _label = '';\n\n // Methods\n spin(label: string) {\n this._status = 'spin';\n this._label = label;\n\n this.emit('update.spin', this.state);\n }\n\n success(label: string) {\n this._status = 'success';\n this._label = label;\n\n this.emit('update.success', this.state);\n }\n\n failed(label: string) {\n this._status = 'failed';\n this._label = label;\n\n this.emit('update.failed', this.state);\n }\n\n stop() {\n if (this._status === 'spin') {\n this._status = 'stop';\n\n this.emit('update.stop', this.state);\n }\n }\n\n // Properties\n get state(): SpinnerState {\n return {\n status: this._status,\n label: this._label,\n };\n }\n}\n\ncontainer.bind(SpinnerService)\n .toSelf()\n .inSingletonScope();\n"],"names":["SpinnerService","EventSource","_status","_label","spin","label","emit","state","success","failed","stop","status","injectable","container","bind","toSelf","inSingletonScope"],"mappings":"AAAA;;;;+BAgBaA;;aAAAA;;2BAhBe;2BACD;iCAED;;;;;;;IAabA,iBAAN,6BAA6BC,sBAAW;IAC7C,aAAa;IACLC,UAAyB,OAAO;IAChCC,SAAS,GAAG;IAEpB,UAAU;IACVC,KAAKC,KAAa,EAAE;QAClB,IAAI,CAACH,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGE;QAEd,IAAI,CAACC,IAAI,CAAC,eAAe,IAAI,CAACC,KAAK;IACrC;IAEAC,QAAQH,KAAa,EAAE;QACrB,IAAI,CAACH,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGE;QAEd,IAAI,CAACC,IAAI,CAAC,kBAAkB,IAAI,CAACC,KAAK;IACxC;IAEAE,OAAOJ,KAAa,EAAE;QACpB,IAAI,CAACH,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGE;QAEd,IAAI,CAACC,IAAI,CAAC,iBAAiB,IAAI,CAACC,KAAK;IACvC;IAEAG,OAAO;QACL,IAAI,IAAI,CAACR,OAAO,KAAK,QAAQ;YAC3B,IAAI,CAACA,OAAO,GAAG;YAEf,IAAI,CAACI,IAAI,CAAC,eAAe,IAAI,CAACC,KAAK;QACrC,CAAC;IACH;IAEA,aAAa;IACb,IAAIA,QAAsB;QACxB,OAAO;YACLI,QAAQ,IAAI,CAACT,OAAO;YACpBG,OAAO,IAAI,CAACF,MAAM;QACpB;IACF;AACF;AA1CaH;IADZY,IAAAA,qBAAU;GACEZ;AA4Cba,0BAAS,CAACC,IAAI,CAACd,gBACZe,MAAM,GACNC,gBAAgB","file":"spinner.service.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/task-expr.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAMhF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;CACjC;AAGD,qBACa,eAAe;IAE1B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,IAAI,QAAQ;IAK/D,OAAO,CAAC,MAAM;IA8Bd,OAAO,CAAC,SAAS;IA8DjB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAqBvB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBjH","file":"task-expr.service.d.ts","sourcesContent":["import { GroupTask, ParallelGroup, SequenceGroup, Task } from '@jujulego/tasks';\nimport { injectable } from 'inversify';\nimport moo from 'moo';\n\nimport { container } from './inversify.config';\nimport { Logger } from './logger.service';\nimport { Workspace, WorkspaceRunOptions } from '../project';\n\n// Interfaces\nexport interface TaskNode {\n script: string;\n}\n\nexport interface GroupNode {\n operator: string;\n tasks: (TaskNode | GroupNode)[];\n}\n\nexport interface TaskTree {\n roots: (TaskNode | GroupNode)[];\n}\n\n// Service\n@injectable()\nexport class TaskExprService {\n // Statics\n static isTaskNode(node: TaskNode | GroupNode): node is TaskNode {\n return 'script' in node;\n }\n\n // Methods\n private _lexer(): moo.Lexer {\n return moo.states({\n task: {\n lparen: '(',\n whitespace: /[ \\t]+/,\n string: [\n // inline\n { match: /[:a-zA-Z0-9]+/, push: 'operator' },\n // single cotted\n {\n match: /'(?:\\\\['\\\\]|[^\\n'\\\\])+'/,\n push: 'operator',\n value: x => x.slice(1, -1).replace(/\\\\(['\\\\])/g, '$1')\n },\n // double cotted\n {\n match: /\"(?:\\\\[\"\\\\]|[^\\n\"\\\\])+\"/,\n push: 'operator',\n value: x => x.slice(1, -1).replace(/\\\\([\"\\\\])/g, '$1')\n }\n ],\n },\n operator: {\n whitespace: /[ \\t]+/,\n rparen: ')',\n operator: { match: ['->', '//'], pop: 1 },\n }\n });\n }\n\n private _nextNode(lexer: moo.Lexer, i = 0): TaskNode | GroupNode | null {\n let node: TaskNode | GroupNode | null = null;\n\n for (const token of lexer) {\n // Ignore whitespaces\n if (token.type === 'whitespace') {\n continue;\n }\n\n // rparen = end of group\n if (token.type === 'rparen') {\n break;\n }\n\n // Handle operator\n if (token.type === 'operator') {\n const operator = token.value;\n\n if (!node) {\n throw new Error(lexer.formatError(token, 'Unexpected operator'));\n } else if (TaskExprService.isTaskNode(node)) {\n node = { operator, tasks: [node] };\n\n continue;\n } else {\n if (node.operator !== operator) {\n node = { operator, tasks: [node] };\n }\n\n continue;\n }\n }\n\n // Build \"child\"\n let child: TaskNode | GroupNode;\n\n if (token.type === 'string') {\n child = { script: token.value };\n } else if (token.type === 'lparen') {\n const res = this._nextNode(lexer, i+1);\n\n if (!res) {\n throw new Error(lexer.formatError(token, 'Empty group found'));\n }\n\n child = res;\n } else {\n throw new Error(lexer.formatError(token, 'Unexpected token'));\n }\n\n if (!node) {\n node = child;\n } else if (TaskExprService.isTaskNode(node)) {\n throw new Error(lexer.formatError(token, 'Unexpected token, expected an operator'));\n } else {\n node.tasks.push(child);\n }\n }\n\n return node;\n }\n\n parse(expr: string): TaskTree {\n const lexer = this._lexer().reset(expr);\n\n const tree: TaskTree = {\n roots: [],\n };\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const node = this._nextNode(lexer);\n\n if (node) {\n tree.roots.push(node);\n } else {\n break;\n }\n }\n\n return tree;\n }\n\n async buildTask(node: TaskNode | GroupNode, workspace: Workspace, opts: WorkspaceRunOptions = {}): Promise<Task> {\n if (TaskExprService.isTaskNode(node)) {\n return workspace.run(node.script, [], opts);\n } else {\n let group: GroupTask;\n\n if (node.operator === '//') {\n group = new ParallelGroup('In parallel', {}, {\n logger: container.get(Logger),\n });\n } else {\n group = new SequenceGroup('In sequence', {}, {\n logger: container.get(Logger),\n });\n }\n\n for (const child of node.tasks) {\n group.add(await this.buildTask(child, workspace, opts));\n }\n\n return group;\n }\n }\n}\n\ncontainer.bind(TaskExprService)\n .toSelf();\n"]}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "TaskExprService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>TaskExprService
|
|
8
|
-
});
|
|
9
|
-
const _tasks = require("@jujulego/tasks");
|
|
10
|
-
const _inversify = require("inversify");
|
|
11
|
-
const _moo = /*#__PURE__*/ _interopRequireDefault(require("moo"));
|
|
12
|
-
const _inversifyConfig = require("./inversify.config");
|
|
13
|
-
const _loggerService = require("./logger.service");
|
|
14
|
-
function _interopRequireDefault(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
var __decorate = (void 0) && (void 0).__decorate || function(decorators, target, key, desc) {
|
|
20
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
21
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
22
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
23
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
24
|
-
};
|
|
25
|
-
let TaskExprService = class TaskExprService1 {
|
|
26
|
-
// Statics
|
|
27
|
-
static isTaskNode(node) {
|
|
28
|
-
return 'script' in node;
|
|
29
|
-
}
|
|
30
|
-
// Methods
|
|
31
|
-
_lexer() {
|
|
32
|
-
return _moo.default.states({
|
|
33
|
-
task: {
|
|
34
|
-
lparen: '(',
|
|
35
|
-
whitespace: /[ \t]+/,
|
|
36
|
-
string: [
|
|
37
|
-
// inline
|
|
38
|
-
{
|
|
39
|
-
match: /[:a-zA-Z0-9]+/,
|
|
40
|
-
push: 'operator'
|
|
41
|
-
},
|
|
42
|
-
// single cotted
|
|
43
|
-
{
|
|
44
|
-
match: /'(?:\\['\\]|[^\n'\\])+'/,
|
|
45
|
-
push: 'operator',
|
|
46
|
-
value: (x)=>x.slice(1, -1).replace(/\\(['\\])/g, '$1')
|
|
47
|
-
},
|
|
48
|
-
// double cotted
|
|
49
|
-
{
|
|
50
|
-
match: /"(?:\\["\\]|[^\n"\\])+"/,
|
|
51
|
-
push: 'operator',
|
|
52
|
-
value: (x)=>x.slice(1, -1).replace(/\\(["\\])/g, '$1')
|
|
53
|
-
}
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
operator: {
|
|
57
|
-
whitespace: /[ \t]+/,
|
|
58
|
-
rparen: ')',
|
|
59
|
-
operator: {
|
|
60
|
-
match: [
|
|
61
|
-
'->',
|
|
62
|
-
'//'
|
|
63
|
-
],
|
|
64
|
-
pop: 1
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
_nextNode(lexer, i = 0) {
|
|
70
|
-
let node = null;
|
|
71
|
-
for (const token of lexer){
|
|
72
|
-
// Ignore whitespaces
|
|
73
|
-
if (token.type === 'whitespace') {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
// rparen = end of group
|
|
77
|
-
if (token.type === 'rparen') {
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
// Handle operator
|
|
81
|
-
if (token.type === 'operator') {
|
|
82
|
-
const operator = token.value;
|
|
83
|
-
if (!node) {
|
|
84
|
-
throw new Error(lexer.formatError(token, 'Unexpected operator'));
|
|
85
|
-
} else if (TaskExprService.isTaskNode(node)) {
|
|
86
|
-
node = {
|
|
87
|
-
operator,
|
|
88
|
-
tasks: [
|
|
89
|
-
node
|
|
90
|
-
]
|
|
91
|
-
};
|
|
92
|
-
continue;
|
|
93
|
-
} else {
|
|
94
|
-
if (node.operator !== operator) {
|
|
95
|
-
node = {
|
|
96
|
-
operator,
|
|
97
|
-
tasks: [
|
|
98
|
-
node
|
|
99
|
-
]
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// Build "child"
|
|
106
|
-
let child;
|
|
107
|
-
if (token.type === 'string') {
|
|
108
|
-
child = {
|
|
109
|
-
script: token.value
|
|
110
|
-
};
|
|
111
|
-
} else if (token.type === 'lparen') {
|
|
112
|
-
const res = this._nextNode(lexer, i + 1);
|
|
113
|
-
if (!res) {
|
|
114
|
-
throw new Error(lexer.formatError(token, 'Empty group found'));
|
|
115
|
-
}
|
|
116
|
-
child = res;
|
|
117
|
-
} else {
|
|
118
|
-
throw new Error(lexer.formatError(token, 'Unexpected token'));
|
|
119
|
-
}
|
|
120
|
-
if (!node) {
|
|
121
|
-
node = child;
|
|
122
|
-
} else if (TaskExprService.isTaskNode(node)) {
|
|
123
|
-
throw new Error(lexer.formatError(token, 'Unexpected token, expected an operator'));
|
|
124
|
-
} else {
|
|
125
|
-
node.tasks.push(child);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return node;
|
|
129
|
-
}
|
|
130
|
-
parse(expr) {
|
|
131
|
-
const lexer = this._lexer().reset(expr);
|
|
132
|
-
const tree = {
|
|
133
|
-
roots: []
|
|
134
|
-
};
|
|
135
|
-
// eslint-disable-next-line no-constant-condition
|
|
136
|
-
while(true){
|
|
137
|
-
const node = this._nextNode(lexer);
|
|
138
|
-
if (node) {
|
|
139
|
-
tree.roots.push(node);
|
|
140
|
-
} else {
|
|
141
|
-
break;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return tree;
|
|
145
|
-
}
|
|
146
|
-
async buildTask(node, workspace, opts = {}) {
|
|
147
|
-
if (TaskExprService.isTaskNode(node)) {
|
|
148
|
-
return workspace.run(node.script, [], opts);
|
|
149
|
-
} else {
|
|
150
|
-
let group;
|
|
151
|
-
if (node.operator === '//') {
|
|
152
|
-
group = new _tasks.ParallelGroup('In parallel', {}, {
|
|
153
|
-
logger: _inversifyConfig.container.get(_loggerService.Logger)
|
|
154
|
-
});
|
|
155
|
-
} else {
|
|
156
|
-
group = new _tasks.SequenceGroup('In sequence', {}, {
|
|
157
|
-
logger: _inversifyConfig.container.get(_loggerService.Logger)
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
for (const child of node.tasks){
|
|
161
|
-
group.add(await this.buildTask(child, workspace, opts));
|
|
162
|
-
}
|
|
163
|
-
return group;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
TaskExprService = __decorate([
|
|
168
|
-
(0, _inversify.injectable)()
|
|
169
|
-
], TaskExprService);
|
|
170
|
-
_inversifyConfig.container.bind(TaskExprService).toSelf();
|
|
171
|
-
|
|
172
|
-
//# sourceMappingURL=task-expr.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["services/task-expr.service.js"],"sourcesContent":["import { GroupTask, ParallelGroup, SequenceGroup, Task } from '@jujulego/tasks';\nimport { injectable } from 'inversify';\nimport moo from 'moo';\n\nimport { container } from './inversify.config';\nimport { Logger } from './logger.service';\nimport { Workspace, WorkspaceRunOptions } from '../project';\n\n// Interfaces\nexport interface TaskNode {\n script: string;\n}\n\nexport interface GroupNode {\n operator: string;\n tasks: (TaskNode | GroupNode)[];\n}\n\nexport interface TaskTree {\n roots: (TaskNode | GroupNode)[];\n}\n\n// Service\n@injectable()\nexport class TaskExprService {\n // Statics\n static isTaskNode(node: TaskNode | GroupNode): node is TaskNode {\n return 'script' in node;\n }\n\n // Methods\n private _lexer(): moo.Lexer {\n return moo.states({\n task: {\n lparen: '(',\n whitespace: /[ \\t]+/,\n string: [\n // inline\n { match: /[:a-zA-Z0-9]+/, push: 'operator' },\n // single cotted\n {\n match: /'(?:\\\\['\\\\]|[^\\n'\\\\])+'/,\n push: 'operator',\n value: x => x.slice(1, -1).replace(/\\\\(['\\\\])/g, '$1')\n },\n // double cotted\n {\n match: /\"(?:\\\\[\"\\\\]|[^\\n\"\\\\])+\"/,\n push: 'operator',\n value: x => x.slice(1, -1).replace(/\\\\([\"\\\\])/g, '$1')\n }\n ],\n },\n operator: {\n whitespace: /[ \\t]+/,\n rparen: ')',\n operator: { match: ['->', '//'], pop: 1 },\n }\n });\n }\n\n private _nextNode(lexer: moo.Lexer, i = 0): TaskNode | GroupNode | null {\n let node: TaskNode | GroupNode | null = null;\n\n for (const token of lexer) {\n // Ignore whitespaces\n if (token.type === 'whitespace') {\n continue;\n }\n\n // rparen = end of group\n if (token.type === 'rparen') {\n break;\n }\n\n // Handle operator\n if (token.type === 'operator') {\n const operator = token.value;\n\n if (!node) {\n throw new Error(lexer.formatError(token, 'Unexpected operator'));\n } else if (TaskExprService.isTaskNode(node)) {\n node = { operator, tasks: [node] };\n\n continue;\n } else {\n if (node.operator !== operator) {\n node = { operator, tasks: [node] };\n }\n\n continue;\n }\n }\n\n // Build \"child\"\n let child: TaskNode | GroupNode;\n\n if (token.type === 'string') {\n child = { script: token.value };\n } else if (token.type === 'lparen') {\n const res = this._nextNode(lexer, i+1);\n\n if (!res) {\n throw new Error(lexer.formatError(token, 'Empty group found'));\n }\n\n child = res;\n } else {\n throw new Error(lexer.formatError(token, 'Unexpected token'));\n }\n\n if (!node) {\n node = child;\n } else if (TaskExprService.isTaskNode(node)) {\n throw new Error(lexer.formatError(token, 'Unexpected token, expected an operator'));\n } else {\n node.tasks.push(child);\n }\n }\n\n return node;\n }\n\n parse(expr: string): TaskTree {\n const lexer = this._lexer().reset(expr);\n\n const tree: TaskTree = {\n roots: [],\n };\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const node = this._nextNode(lexer);\n\n if (node) {\n tree.roots.push(node);\n } else {\n break;\n }\n }\n\n return tree;\n }\n\n async buildTask(node: TaskNode | GroupNode, workspace: Workspace, opts: WorkspaceRunOptions = {}): Promise<Task> {\n if (TaskExprService.isTaskNode(node)) {\n return workspace.run(node.script, [], opts);\n } else {\n let group: GroupTask;\n\n if (node.operator === '//') {\n group = new ParallelGroup('In parallel', {}, {\n logger: container.get(Logger),\n });\n } else {\n group = new SequenceGroup('In sequence', {}, {\n logger: container.get(Logger),\n });\n }\n\n for (const child of node.tasks) {\n group.add(await this.buildTask(child, workspace, opts));\n }\n\n return group;\n }\n }\n}\n\ncontainer.bind(TaskExprService)\n .toSelf();\n"],"names":["TaskExprService","isTaskNode","node","_lexer","moo","states","task","lparen","whitespace","string","match","push","value","x","slice","replace","operator","rparen","pop","_nextNode","lexer","i","token","type","Error","formatError","tasks","child","script","res","parse","expr","reset","tree","roots","buildTask","workspace","opts","run","group","ParallelGroup","logger","container","get","Logger","SequenceGroup","add","injectable","bind","toSelf"],"mappings":"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","file":"task-expr.service.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/task-manager.service.ts"],"names":[],"mappings":"","file":"task-manager.service.d.ts","sourcesContent":["import { TaskManager } from '@jujulego/tasks';\n\nimport { type GlobalConfig, GLOBAL_CONFIG, container } from './inversify.config';\nimport { Logger } from './logger.service';\n\n// Service\ncontainer.bind(TaskManager)\n .toDynamicValue((context) => {\n const config = context.container.get<GlobalConfig>(GLOBAL_CONFIG);\n const logger = context.container.get(Logger);\n\n return new TaskManager({ jobs: config.jobs, logger });\n })\n .inSingletonScope();\n"]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _tasks = require("@jujulego/tasks");
|
|
6
|
-
const _inversifyConfig = require("./inversify.config");
|
|
7
|
-
const _loggerService = require("./logger.service");
|
|
8
|
-
// Service
|
|
9
|
-
_inversifyConfig.container.bind(_tasks.TaskManager).toDynamicValue((context)=>{
|
|
10
|
-
const config = context.container.get(_inversifyConfig.GLOBAL_CONFIG);
|
|
11
|
-
const logger = context.container.get(_loggerService.Logger);
|
|
12
|
-
return new _tasks.TaskManager({
|
|
13
|
-
jobs: config.jobs,
|
|
14
|
-
logger
|
|
15
|
-
});
|
|
16
|
-
}).inSingletonScope();
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=task-manager.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["services/task-manager.service.js"],"sourcesContent":["import { TaskManager } from '@jujulego/tasks';\n\nimport { type GlobalConfig, GLOBAL_CONFIG, container } from './inversify.config';\nimport { Logger } from './logger.service';\n\n// Service\ncontainer.bind(TaskManager)\n .toDynamicValue((context) => {\n const config = context.container.get<GlobalConfig>(GLOBAL_CONFIG);\n const logger = context.container.get(Logger);\n\n return new TaskManager({ jobs: config.jobs, logger });\n })\n .inSingletonScope();\n"],"names":["container","bind","TaskManager","toDynamicValue","context","config","get","GLOBAL_CONFIG","logger","Logger","jobs","inSingletonScope"],"mappings":"AAAA;;;;uBAA4B;iCAEgC;+BACrC;AAEvB,UAAU;AACVA,0BAAS,CAACC,IAAI,CAACC,kBAAW,EACvBC,cAAc,CAAC,CAACC,UAAY;IAC3B,MAAMC,SAASD,QAAQJ,SAAS,CAACM,GAAG,CAAeC,8BAAa;IAChE,MAAMC,SAASJ,QAAQJ,SAAS,CAACM,GAAG,CAACG,qBAAM;IAE3C,OAAO,IAAIP,kBAAW,CAAC;QAAEQ,MAAML,OAAOK,IAAI;QAAEF;IAAO;AACrD,GACCG,gBAAgB","file":"task-manager.service.js"}
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types.ts"],"names":[],"mappings":"AACA,oBAAY,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC","file":"types.d.ts","sourcesContent":["// Types\nexport type Awaitable<T> = T | Promise<T>;\n"]}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["types.js"],"sourcesContent":["// Types\nexport type Awaitable<T> = T | Promise<T>;\n"],"names":[],"mappings":"AAAA,QAAQ;AACR","file":"types.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/global-spinner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAKtD,eAAO,MAAM,aAAa,EAAE,EAuC3B,CAAC","file":"global-spinner.d.ts","sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { container, SpinnerService, SpinnerState } from '../services';\n\n// Components\nexport const GlobalSpinner: FC = () => {\n // State\n const [state, setState] = useState<SpinnerState>({ status: 'stop', label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe('update', setState);\n }, []);\n\n // Render\n switch (state.status) {\n case 'spin':\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n\n case 'success':\n return (\n <Text color=\"green\">\n {symbols.success} {state.label}\n </Text>\n );\n\n case 'failed':\n return (\n <Text color=\"red\">\n {symbols.error} {state.label}\n </Text>\n );\n\n case 'stop':\n default:\n return null;\n }\n};\n"]}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "GlobalSpinner", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>GlobalSpinner
|
|
8
|
-
});
|
|
9
|
-
const _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
-
const _ink = require("ink");
|
|
11
|
-
const _inkSpinner = /*#__PURE__*/ _interopRequireDefault(require("ink-spinner"));
|
|
12
|
-
const _logSymbols = /*#__PURE__*/ _interopRequireDefault(require("log-symbols"));
|
|
13
|
-
const _react = require("react");
|
|
14
|
-
const _services = require("../services");
|
|
15
|
-
function _interopRequireDefault(obj) {
|
|
16
|
-
return obj && obj.__esModule ? obj : {
|
|
17
|
-
default: obj
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
const GlobalSpinner = ()=>{
|
|
21
|
-
// State
|
|
22
|
-
const [state, setState] = (0, _react.useState)({
|
|
23
|
-
status: 'stop',
|
|
24
|
-
label: ''
|
|
25
|
-
});
|
|
26
|
-
// Effect
|
|
27
|
-
(0, _react.useLayoutEffect)(()=>{
|
|
28
|
-
const spinner = _services.container.get(_services.SpinnerService);
|
|
29
|
-
setState(spinner.state);
|
|
30
|
-
return spinner.subscribe('update', setState);
|
|
31
|
-
}, []);
|
|
32
|
-
// Render
|
|
33
|
-
switch(state.status){
|
|
34
|
-
case 'spin':
|
|
35
|
-
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
36
|
-
children: [
|
|
37
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_inkSpinner.default, {}),
|
|
38
|
-
' ' + state.label
|
|
39
|
-
]
|
|
40
|
-
});
|
|
41
|
-
case 'success':
|
|
42
|
-
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
43
|
-
color: "green",
|
|
44
|
-
children: [
|
|
45
|
-
_logSymbols.default.success,
|
|
46
|
-
" ",
|
|
47
|
-
state.label
|
|
48
|
-
]
|
|
49
|
-
});
|
|
50
|
-
case 'failed':
|
|
51
|
-
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
52
|
-
color: "red",
|
|
53
|
-
children: [
|
|
54
|
-
_logSymbols.default.error,
|
|
55
|
-
" ",
|
|
56
|
-
state.label
|
|
57
|
-
]
|
|
58
|
-
});
|
|
59
|
-
case 'stop':
|
|
60
|
-
default:
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
//# sourceMappingURL=global-spinner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/global-spinner.js"],"sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { container, SpinnerService, SpinnerState } from '../services';\n\n// Components\nexport const GlobalSpinner: FC = () => {\n // State\n const [state, setState] = useState<SpinnerState>({ status: 'stop', label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe('update', setState);\n }, []);\n\n // Render\n switch (state.status) {\n case 'spin':\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n\n case 'success':\n return (\n <Text color=\"green\">\n {symbols.success} {state.label}\n </Text>\n );\n\n case 'failed':\n return (\n <Text color=\"red\">\n {symbols.error} {state.label}\n </Text>\n );\n\n case 'stop':\n default:\n return null;\n }\n};\n"],"names":["GlobalSpinner","state","setState","useState","status","label","useLayoutEffect","spinner","container","get","SpinnerService","subscribe","Text","Spinner","color","symbols","success","error"],"mappings":"AAAA;;;;+BAQaA;;aAAAA;;;qBARQ;iEACD;iEACA;uBAC0B;0BAEU;;;;;;AAGjD,MAAMA,gBAAoB,IAAM;IACrC,QAAQ;IACR,MAAM,CAACC,OAAOC,SAAS,GAAGC,IAAAA,eAAQ,EAAe;QAAEC,QAAQ;QAAQC,OAAO;IAAG;IAE7E,SAAS;IACTC,IAAAA,sBAAe,EAAC,IAAM;QACpB,MAAMC,UAAUC,mBAAS,CAACC,GAAG,CAACC,wBAAc;QAC5CR,SAASK,QAAQN,KAAK;QAEtB,OAAOM,QAAQI,SAAS,CAAC,UAAUT;IACrC,GAAG,EAAE;IAEL,SAAS;IACT,OAAQD,MAAMG,MAAM;QAClB,KAAK;YACH,qBACE,sBAACQ,SAAI;;kCACH,qBAACC,mBAAO;oBAAI,MAAMZ,MAAMI,KAAK;;;QAInC,KAAK;YACH,qBACE,sBAACO,SAAI;gBAACE,OAAM;;oBACTC,mBAAO,CAACC,OAAO;oBAAC;oBAAEf,MAAMI,KAAK;;;QAIpC,KAAK;YACH,qBACE,sBAACO,SAAI;gBAACE,OAAM;;oBACTC,mBAAO,CAACE,KAAK;oBAAC;oBAAEhB,MAAMI,KAAK;;;QAIlC,KAAK;QACL;YACE,OAAO,IAAI;IACf;AACF","file":"global-spinner.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/group-task-spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,EAAE,EAAuC,MAAM,OAAO,CAAC;AAKhE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,SAAS,CAAC;CAClB;AAGD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAkCtD,CAAC","file":"group-task-spinner.d.ts","sourcesContent":["import { GroupTask } from '@jujulego/tasks';\nimport { Box } from 'ink';\nimport { FC, Fragment, useLayoutEffect, useState } from 'react';\n\nimport { TaskSpinner } from './task-spinner';\n\n// Types\nexport interface GroupTaskSpinnerProps {\n group: GroupTask;\n}\n\n// Components\nexport const GroupTaskSpinner: FC<GroupTaskSpinnerProps> = ({ group }) => {\n const [tasks, setTasks] = useState([...group.tasks]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return group.subscribe('task.added', () => {\n if (!dirty) {\n dirty = true;\n\n queueMicrotask(() => {\n setTasks([...group.tasks]);\n dirty = false;\n });\n }\n });\n }, [group]);\n\n return (\n <>\n <TaskSpinner task={group} />\n <Box flexDirection=\"column\" marginLeft={2}>\n { tasks.map((task) => (\n <Fragment key={task.id}>\n { (task instanceof GroupTask) ? (\n <GroupTaskSpinner group={task} />\n ) : (\n <TaskSpinner task={task} />\n ) }\n </Fragment>\n )) }\n </Box>\n </>\n );\n};\n"]}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "GroupTaskSpinner", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>GroupTaskSpinner
|
|
8
|
-
});
|
|
9
|
-
const _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
-
const _tasks = require("@jujulego/tasks");
|
|
11
|
-
const _ink = require("ink");
|
|
12
|
-
const _react = require("react");
|
|
13
|
-
const _taskSpinner = require("./task-spinner");
|
|
14
|
-
const GroupTaskSpinner = ({ group })=>{
|
|
15
|
-
const [tasks, setTasks] = (0, _react.useState)([
|
|
16
|
-
...group.tasks
|
|
17
|
-
]);
|
|
18
|
-
(0, _react.useLayoutEffect)(()=>{
|
|
19
|
-
let dirty = false;
|
|
20
|
-
return group.subscribe('task.added', ()=>{
|
|
21
|
-
if (!dirty) {
|
|
22
|
-
dirty = true;
|
|
23
|
-
queueMicrotask(()=>{
|
|
24
|
-
setTasks([
|
|
25
|
-
...group.tasks
|
|
26
|
-
]);
|
|
27
|
-
dirty = false;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}, [
|
|
32
|
-
group
|
|
33
|
-
]);
|
|
34
|
-
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
35
|
-
children: [
|
|
36
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_taskSpinner.TaskSpinner, {
|
|
37
|
-
task: group
|
|
38
|
-
}),
|
|
39
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Box, {
|
|
40
|
-
flexDirection: "column",
|
|
41
|
-
marginLeft: 2,
|
|
42
|
-
children: tasks.map((task)=>/*#__PURE__*/ (0, _jsxRuntime.jsx)(_react.Fragment, {
|
|
43
|
-
children: task instanceof _tasks.GroupTask ? /*#__PURE__*/ (0, _jsxRuntime.jsx)(GroupTaskSpinner, {
|
|
44
|
-
group: task
|
|
45
|
-
}) : /*#__PURE__*/ (0, _jsxRuntime.jsx)(_taskSpinner.TaskSpinner, {
|
|
46
|
-
task: task
|
|
47
|
-
})
|
|
48
|
-
}, task.id))
|
|
49
|
-
})
|
|
50
|
-
]
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=group-task-spinner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/group-task-spinner.js"],"sourcesContent":["import { GroupTask } from '@jujulego/tasks';\nimport { Box } from 'ink';\nimport { FC, Fragment, useLayoutEffect, useState } from 'react';\n\nimport { TaskSpinner } from './task-spinner';\n\n// Types\nexport interface GroupTaskSpinnerProps {\n group: GroupTask;\n}\n\n// Components\nexport const GroupTaskSpinner: FC<GroupTaskSpinnerProps> = ({ group }) => {\n const [tasks, setTasks] = useState([...group.tasks]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return group.subscribe('task.added', () => {\n if (!dirty) {\n dirty = true;\n\n queueMicrotask(() => {\n setTasks([...group.tasks]);\n dirty = false;\n });\n }\n });\n }, [group]);\n\n return (\n <>\n <TaskSpinner task={group} />\n <Box flexDirection=\"column\" marginLeft={2}>\n { tasks.map((task) => (\n <Fragment key={task.id}>\n { (task instanceof GroupTask) ? (\n <GroupTaskSpinner group={task} />\n ) : (\n <TaskSpinner task={task} />\n ) }\n </Fragment>\n )) }\n </Box>\n </>\n );\n};\n"],"names":["GroupTaskSpinner","group","tasks","setTasks","useState","useLayoutEffect","dirty","subscribe","queueMicrotask","TaskSpinner","task","Box","flexDirection","marginLeft","map","Fragment","GroupTask","id"],"mappings":"AAAA;;;;+BAYaA;;aAAAA;;;uBAZa;qBACN;uBACoC;6BAE5B;AAQrB,MAAMA,mBAA8C,CAAC,EAAEC,MAAK,EAAE,GAAK;IACxE,MAAM,CAACC,OAAOC,SAAS,GAAGC,IAAAA,eAAQ,EAAC;WAAIH,MAAMC,KAAK;KAAC;IAEnDG,IAAAA,sBAAe,EAAC,IAAM;QACpB,IAAIC,QAAQ,KAAK;QAEjB,OAAOL,MAAMM,SAAS,CAAC,cAAc,IAAM;YACzC,IAAI,CAACD,OAAO;gBACVA,QAAQ,IAAI;gBAEZE,eAAe,IAAM;oBACnBL,SAAS;2BAAIF,MAAMC,KAAK;qBAAC;oBACzBI,QAAQ,KAAK;gBACf;YACF,CAAC;QACH;IACF,GAAG;QAACL;KAAM;IAEV,qBACE;;0BACE,qBAACQ,wBAAW;gBAACC,MAAMT;;0BACnB,qBAACU,QAAG;gBAACC,eAAc;gBAASC,YAAY;0BACpCX,MAAMY,GAAG,CAAC,CAACJ,qBACX,qBAACK,eAAQ;kCACL,AAACL,gBAAgBM,gBAAS,iBAC1B,qBAAChB;4BAAiBC,OAAOS;2CAEzB,qBAACD,wBAAW;4BAACC,MAAMA;0BACpB;uBALYA,KAAKO,EAAE;;;;AAWhC","file":"group-task-spinner.js"}
|
package/dist/ui/index.d.ts
DELETED
package/dist/ui/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC","file":"index.d.ts","sourcesContent":["export * from './global-spinner';\nexport * from './layout';\nexport * from './list';\nexport * from './static-logs';\nexport * from './task-manager-spinner';\nexport * from './task-name';\nexport * from './task-spinner';\nexport * from './workspace-tree';\n"]}
|
package/dist/ui/index.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
_exportStar(require("./global-spinner"), exports);
|
|
6
|
-
_exportStar(require("./layout"), exports);
|
|
7
|
-
_exportStar(require("./list"), exports);
|
|
8
|
-
_exportStar(require("./static-logs"), exports);
|
|
9
|
-
_exportStar(require("./task-manager-spinner"), exports);
|
|
10
|
-
_exportStar(require("./task-name"), exports);
|
|
11
|
-
_exportStar(require("./task-spinner"), exports);
|
|
12
|
-
_exportStar(require("./workspace-tree"), exports);
|
|
13
|
-
function _exportStar(from, to) {
|
|
14
|
-
Object.keys(from).forEach(function(k) {
|
|
15
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: function() {
|
|
18
|
-
return from[k];
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
return from;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=index.js.map
|
package/dist/ui/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/index.js"],"sourcesContent":["export * from './global-spinner';\nexport * from './layout';\nexport * from './list';\nexport * from './static-logs';\nexport * from './task-manager-spinner';\nexport * from './task-name';\nexport * from './task-spinner';\nexport * from './workspace-tree';\n"],"names":[],"mappings":"AAAA;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA","file":"index.js"}
|
package/dist/ui/layout.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAM3B,eAAO,MAAM,MAAM,EAAE,EAMpB,CAAC","file":"layout.d.ts","sourcesContent":["import { FC } from 'react';\n\nimport { GlobalSpinner } from './global-spinner';\nimport { StaticLogs } from './static-logs';\n\n// Component\nexport const Layout: FC = ({ children }) => (\n <>\n <StaticLogs />\n <GlobalSpinner />\n { children }\n </>\n);\n"]}
|
package/dist/ui/layout.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "Layout", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>Layout
|
|
8
|
-
});
|
|
9
|
-
const _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
-
const _globalSpinner = require("./global-spinner");
|
|
11
|
-
const _staticLogs = require("./static-logs");
|
|
12
|
-
const Layout = ({ children })=>/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
13
|
-
children: [
|
|
14
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_staticLogs.StaticLogs, {}),
|
|
15
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_globalSpinner.GlobalSpinner, {}),
|
|
16
|
-
children
|
|
17
|
-
]
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
//# sourceMappingURL=layout.js.map
|
package/dist/ui/layout.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/layout.js"],"sourcesContent":["import { FC } from 'react';\n\nimport { GlobalSpinner } from './global-spinner';\nimport { StaticLogs } from './static-logs';\n\n// Component\nexport const Layout: FC = ({ children }) => (\n <>\n <StaticLogs />\n <GlobalSpinner />\n { children }\n </>\n);\n"],"names":["Layout","children","StaticLogs","GlobalSpinner"],"mappings":"AAAA;;;;+BAMaA;;aAAAA;;;+BAJiB;4BACH;AAGpB,MAAMA,SAAa,CAAC,EAAEC,SAAQ,EAAE,iBACrC;;0BACE,qBAACC,sBAAU;0BACX,qBAACC,4BAAa;YACZF","file":"layout.js"}
|
package/dist/ui/list.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/list.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAKrC,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1D,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,CAetG","file":"list.d.ts","sourcesContent":["import { Box, Text } from 'ink';\nimport { ReactElement } from 'react';\n\nimport { capitalize } from '../utils';\n\n// Types\nexport interface ListProps<T extends Record<string, unknown>> {\n items: T[];\n headers?: boolean;\n}\n\n// Component\nexport function List<T extends Record<string, unknown>>({ items, headers }: ListProps<T>): ReactElement {\n return (\n <Box>\n { Object.keys(items[0]).map((key) => (\n <Box key={key} flexDirection=\"column\" marginRight={2}>\n { headers && (\n <Text bold>{ capitalize(key) }</Text>\n ) }\n { items.map((item, idx) => (\n <Text key={idx}>{ item[key] }</Text>\n )) }\n </Box>\n )) }\n </Box>\n );\n}\n"]}
|
package/dist/ui/list.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "List", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>List
|
|
8
|
-
});
|
|
9
|
-
const _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
-
const _ink = require("ink");
|
|
11
|
-
const _utils = require("../utils");
|
|
12
|
-
function List({ items , headers }) {
|
|
13
|
-
return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Box, {
|
|
14
|
-
children: Object.keys(items[0]).map((key)=>/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Box, {
|
|
15
|
-
flexDirection: "column",
|
|
16
|
-
marginRight: 2,
|
|
17
|
-
children: [
|
|
18
|
-
headers && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Text, {
|
|
19
|
-
bold: true,
|
|
20
|
-
children: (0, _utils.capitalize)(key)
|
|
21
|
-
}),
|
|
22
|
-
items.map((item, idx)=>/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Text, {
|
|
23
|
-
children: item[key]
|
|
24
|
-
}, idx))
|
|
25
|
-
]
|
|
26
|
-
}, key))
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=list.js.map
|
package/dist/ui/list.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/list.js"],"sourcesContent":["import { Box, Text } from 'ink';\nimport { ReactElement } from 'react';\n\nimport { capitalize } from '../utils';\n\n// Types\nexport interface ListProps<T extends Record<string, unknown>> {\n items: T[];\n headers?: boolean;\n}\n\n// Component\nexport function List<T extends Record<string, unknown>>({ items, headers }: ListProps<T>): ReactElement {\n return (\n <Box>\n { Object.keys(items[0]).map((key) => (\n <Box key={key} flexDirection=\"column\" marginRight={2}>\n { headers && (\n <Text bold>{ capitalize(key) }</Text>\n ) }\n { items.map((item, idx) => (\n <Text key={idx}>{ item[key] }</Text>\n )) }\n </Box>\n )) }\n </Box>\n );\n}\n"],"names":["List","items","headers","Box","Object","keys","map","key","flexDirection","marginRight","Text","bold","capitalize","item","idx"],"mappings":"AAAA;;;;+BAYgBA;;aAAAA;;;qBAZU;uBAGC;AASpB,SAASA,KAAwC,EAAEC,MAAK,EAAEC,QAAO,EAAgB,EAAgB;IACtG,qBACE,qBAACC,QAAG;kBACAC,OAAOC,IAAI,CAACJ,KAAK,CAAC,EAAE,EAAEK,GAAG,CAAC,CAACC,oBAC3B,sBAACJ,QAAG;gBAAWK,eAAc;gBAASC,aAAa;;oBAC/CP,yBACA,qBAACQ,SAAI;wBAACC,IAAI;kCAAGC,IAAAA,iBAAU,EAACL;;oBAExBN,MAAMK,GAAG,CAAC,CAACO,MAAMC,oBACjB,qBAACJ,SAAI;sCAAaG,IAAI,CAACN,IAAI;2BAAhBO;;eALLP;;AAWlB","file":"list.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/static-logs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAe7C,eAAO,MAAM,UAAU,EAAE,EA+CxB,CAAC","file":"static-logs.d.ts","sourcesContent":["import { useStderr } from 'ink';\nimport { FC, useLayoutEffect, } from 'react';\nimport Transport from 'winston-transport';\n\nimport { consoleFormat, container, Logger } from '../services';\nimport winston from 'winston';\n\n// Constants\nconst MESSAGE = Symbol.for('message');\n\n// Types\ninterface Info extends Record<string, unknown> {\n [MESSAGE]: string;\n}\n\n// Component\nexport const StaticLogs: FC = () => {\n // State\n const { write } = useStderr();\n\n // Effect\n useLayoutEffect(() => {\n const logger = container.get(Logger);\n\n // Remove Console transport\n for (const transport of logger.transports) {\n if (transport instanceof winston.transports.Console) {\n logger.remove(transport);\n }\n }\n\n // Add custom transport\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: consoleFormat\n });\n }\n\n // Methods\n log(info: Info, next: () => void): void {\n setTimeout(() => {\n this.emit('logged', info);\n }, 0);\n\n write(info[MESSAGE] + '\\n');\n\n next();\n }\n };\n\n logger.add(transport);\n\n return () => {\n logger.remove(transport);\n logger.add(new winston.transports.Console({\n format: consoleFormat\n }));\n };\n }, [write]);\n\n return null;\n};\n"]}
|