@jujulego/jill 1.2.0 → 2.0.0-alpha.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.
- package/LICENSE +21 -0
- package/README.md +28 -0
- package/dist/commands/list.d.ts +23 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +169 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/filters/affected.filter.d.ts +11 -0
- package/dist/filters/affected.filter.d.ts.map +1 -0
- package/dist/filters/affected.filter.js +82 -0
- package/dist/filters/affected.filter.js.map +1 -0
- package/dist/filters/index.d.ts +4 -0
- package/dist/filters/index.d.ts.map +1 -0
- package/dist/filters/index.js +21 -0
- package/dist/filters/index.js.map +1 -0
- package/dist/filters/pipeline.d.ts +11 -0
- package/dist/filters/pipeline.d.ts.map +1 -0
- package/dist/filters/pipeline.js +34 -0
- package/dist/filters/pipeline.js.map +1 -0
- package/dist/filters/private.filter.d.ts +7 -0
- package/dist/filters/private.filter.d.ts.map +1 -0
- package/dist/filters/private.filter.js +20 -0
- package/dist/filters/private.filter.js.map +1 -0
- package/dist/filters/scripts.filter.d.ts +7 -0
- package/dist/filters/scripts.filter.d.ts.map +1 -0
- package/dist/filters/scripts.filter.js +21 -0
- package/dist/filters/scripts.filter.js.map +1 -0
- package/dist/git.d.ts +16 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +94 -0
- package/dist/git.js.map +1 -0
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -33
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +23 -52
- package/dist/main.js.map +1 -1
- package/dist/modifiers/global-config.d.ts +6 -0
- package/dist/modifiers/global-config.d.ts.map +1 -0
- package/dist/modifiers/global-config.js +24 -0
- package/dist/modifiers/global-config.js.map +1 -0
- package/dist/modifiers/index.d.ts +3 -0
- package/dist/modifiers/index.d.ts.map +1 -0
- package/dist/modifiers/index.js +20 -0
- package/dist/modifiers/index.js.map +1 -0
- package/dist/modifiers/load-project.d.ts +7 -0
- package/dist/modifiers/load-project.d.ts.map +1 -0
- package/dist/modifiers/load-project.js +39 -0
- package/dist/modifiers/load-project.js.map +1 -0
- package/dist/modifiers/setup-ink.d.ts +2 -0
- package/dist/modifiers/setup-ink.d.ts.map +1 -0
- package/dist/modifiers/setup-ink.js +19 -0
- package/dist/modifiers/setup-ink.js.map +1 -0
- package/dist/project/index.d.ts +2 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +19 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/project.d.ts +25 -0
- package/dist/project/project.d.ts.map +1 -0
- package/dist/project/project.js +190 -0
- package/dist/project/project.js.map +1 -0
- package/dist/project/workspace.d.ts +32 -0
- package/dist/project/workspace.d.ts.map +1 -0
- package/dist/project/workspace.js +159 -0
- package/dist/project/workspace.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +21 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/inversify.config.d.ts +11 -0
- package/dist/services/inversify.config.d.ts.map +1 -0
- package/dist/services/inversify.config.js +34 -0
- package/dist/services/inversify.config.js.map +1 -0
- package/dist/services/logger.service.d.ts +5 -0
- package/dist/services/logger.service.d.ts.map +1 -0
- package/dist/services/logger.service.js +58 -0
- package/dist/services/logger.service.js.map +1 -0
- package/dist/services/spinner.service.d.ts +14 -0
- package/dist/services/spinner.service.d.ts.map +1 -0
- package/dist/services/spinner.service.js +55 -0
- package/dist/services/spinner.service.js.map +1 -0
- package/dist/services/task-manager.service.d.ts +1 -0
- package/dist/services/task-manager.service.d.ts.map +1 -0
- package/dist/services/task-manager.service.js +18 -0
- package/dist/services/task-manager.service.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/cli-list.d.ts +15 -0
- package/dist/ui/cli-list.d.ts.map +1 -0
- package/dist/ui/cli-list.js +66 -0
- package/dist/ui/cli-list.js.map +1 -0
- package/dist/ui/global-spinner.d.ts +2 -0
- package/dist/ui/global-spinner.d.ts.map +1 -0
- package/dist/ui/global-spinner.js +43 -0
- package/dist/ui/global-spinner.js.map +1 -0
- package/dist/ui/index.d.ts +4 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +21 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/layout.d.ts +2 -0
- package/dist/ui/layout.d.ts.map +1 -0
- package/dist/ui/layout.js +19 -0
- package/dist/ui/layout.js.map +1 -0
- package/dist/ui/static-logs.d.ts +2 -0
- package/dist/ui/static-logs.d.ts.map +1 -0
- package/dist/ui/static-logs.js +79 -0
- package/dist/ui/static-logs.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +61 -0
- package/dist/utils.js.map +1 -0
- package/package.json +56 -48
- package/dist/commands/each.command.d.ts +0 -16
- package/dist/commands/each.command.d.ts.map +0 -1
- package/dist/commands/each.command.js +0 -203
- package/dist/commands/each.command.js.map +0 -1
- package/dist/commands/info.command.d.ts +0 -8
- package/dist/commands/info.command.d.ts.map +0 -1
- package/dist/commands/info.command.js +0 -178
- package/dist/commands/info.command.js.map +0 -1
- package/dist/commands/list.command.d.ts +0 -21
- package/dist/commands/list.command.d.ts.map +0 -1
- package/dist/commands/list.command.js +0 -251
- package/dist/commands/list.command.js.map +0 -1
- package/dist/commands/run.command.d.ts +0 -12
- package/dist/commands/run.command.d.ts.map +0 -1
- package/dist/commands/run.command.js +0 -111
- package/dist/commands/run.command.js.map +0 -1
- package/dist/core.plugin.d.ts +0 -2
- package/dist/core.plugin.d.ts.map +0 -1
- package/dist/core.plugin.js +0 -22
- package/dist/core.plugin.js.map +0 -1
- package/dist/task-logger.d.ts +0 -14
- package/dist/task-logger.d.ts.map +0 -1
- package/dist/task-logger.js +0 -76
- package/dist/task-logger.js.map +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
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 _inversify = require("inversify");
|
|
10
|
+
const _inversifyConfig = require("./inversify.config");
|
|
11
|
+
var __decorate = (void 0) && (void 0).__decorate || function(decorators, target, key, desc) {
|
|
12
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
+
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;
|
|
15
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
+
};
|
|
17
|
+
let SpinnerService = class SpinnerService {
|
|
18
|
+
// Attributes
|
|
19
|
+
_spin = false;
|
|
20
|
+
_label = '';
|
|
21
|
+
_listeners = new Set();
|
|
22
|
+
// Methods
|
|
23
|
+
subscribe(listener) {
|
|
24
|
+
this._listeners.add(listener);
|
|
25
|
+
return ()=>{
|
|
26
|
+
this._listeners.delete(listener);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
spin(label) {
|
|
30
|
+
this._spin = true;
|
|
31
|
+
this._label = label;
|
|
32
|
+
for (const listener of this._listeners){
|
|
33
|
+
listener(this.state);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
stop() {
|
|
37
|
+
this._spin = false;
|
|
38
|
+
for (const listener of this._listeners){
|
|
39
|
+
listener(this.state);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Properties
|
|
43
|
+
get state() {
|
|
44
|
+
return {
|
|
45
|
+
spin: this._spin,
|
|
46
|
+
label: this._label
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
SpinnerService = __decorate([
|
|
51
|
+
(0, _inversify.injectable)()
|
|
52
|
+
], SpinnerService);
|
|
53
|
+
_inversifyConfig.container.bind(SpinnerService).toSelf().inSingletonScope();
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=spinner.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["services/spinner.service.js"],"sourcesContent":["import { injectable } from 'inversify';\nimport { container } from './inversify.config';\n\n// Interface\nexport interface SpinnerState {\n spin: boolean;\n label: string;\n}\n\nexport type SpinnerStateListener = (state: SpinnerState) => void;\n\n// Service\n@injectable()\nexport class SpinnerService {\n // Attributes\n private _spin = false;\n private _label = '';\n\n private readonly _listeners = new Set<SpinnerStateListener>();\n\n // Methods\n subscribe(listener: SpinnerStateListener) {\n this._listeners.add(listener);\n\n return () => {\n this._listeners.delete(listener);\n };\n }\n\n spin(label: string) {\n this._spin = true;\n this._label = label;\n\n for (const listener of this._listeners) {\n listener(this.state);\n }\n }\n\n stop() {\n this._spin = false;\n\n for (const listener of this._listeners) {\n listener(this.state);\n }\n }\n\n // Properties\n get state(): SpinnerState {\n return {\n spin: this._spin,\n label: this._label,\n };\n }\n}\n\ncontainer.bind(SpinnerService)\n .toSelf()\n .inSingletonScope();\n"],"names":["SpinnerService","_spin","_label","_listeners","Set","subscribe","listener","add","delete","spin","label","state","stop","injectable","container","bind","toSelf","inSingletonScope"],"mappings":"AAAA;;;;+BAaaA;;aAAAA;;2BAbc;iCACD;;;;;;;IAYbA,iBAAN;IACL,aAAa;IACLC,QAAQ,KAAK,CAAC;IACdC,SAAS,GAAG;IAEHC,aAAa,IAAIC,MAA4B;IAE9D,UAAU;IACVC,UAAUC,QAA8B,EAAE;QACxC,IAAI,CAACH,UAAU,CAACI,GAAG,CAACD;QAEpB,OAAO,IAAM;YACX,IAAI,CAACH,UAAU,CAACK,MAAM,CAACF;QACzB;IACF;IAEAG,KAAKC,KAAa,EAAE;QAClB,IAAI,CAACT,KAAK,GAAG,IAAI;QACjB,IAAI,CAACC,MAAM,GAAGQ;QAEd,KAAK,MAAMJ,YAAY,IAAI,CAACH,UAAU,CAAE;YACtCG,SAAS,IAAI,CAACK,KAAK;QACrB;IACF;IAEAC,OAAO;QACL,IAAI,CAACX,KAAK,GAAG,KAAK;QAElB,KAAK,MAAMK,YAAY,IAAI,CAACH,UAAU,CAAE;YACtCG,SAAS,IAAI,CAACK,KAAK;QACrB;IACF;IAEA,aAAa;IACb,IAAIA,QAAsB;QACxB,OAAO;YACLF,MAAM,IAAI,CAACR,KAAK;YAChBS,OAAO,IAAI,CAACR,MAAM;QACpB;IACF;AACF;AAxCaF;IADZa,IAAAA,qBAAU;GACEb;AA0Cbc,0BAAS,CAACC,IAAI,CAACf,gBACZgB,MAAM,GACNC,gBAAgB","file":"spinner.service.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["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"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type Awaitable<T> = T | Promise<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["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
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["types.js"],"sourcesContent":["// Types\nexport type Awaitable<T> = T | Promise<T>;\n"],"names":[],"mappings":"AAAA,QAAQ;AACR","file":"types.js"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class CliList {
|
|
2
|
+
private _headers?;
|
|
3
|
+
private readonly _data;
|
|
4
|
+
private readonly _columns;
|
|
5
|
+
private static _capitalize;
|
|
6
|
+
private static _length;
|
|
7
|
+
private _updateColumns;
|
|
8
|
+
private _formatValue;
|
|
9
|
+
setHeaders(headers: string[]): void;
|
|
10
|
+
add(data: string[]): void;
|
|
11
|
+
lines(): Generator<string, void>;
|
|
12
|
+
get columns(): number[];
|
|
13
|
+
get headers(): string[];
|
|
14
|
+
get data(): string[][];
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/cli-list.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAElB,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAGzC,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;IAIpB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAKxB,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;IAajC,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,CAErB;CACF","file":"cli-list.d.ts","sourcesContent":["import chalk from 'chalk';\n\n// Class\nexport class CliList {\n // Attributes\n private _headers?: string[];\n private readonly _data: string[][] = [];\n private readonly _columns: number[] = [];\n\n // Methods\n private static _capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n }\n\n private static _length(txt: string): number {\n return txt.replace(/\\033\\[[^m]*m/g, '').length;\n }\n\n private _updateColumns(data: string[]): void {\n // Add missing columns\n while (data.length > this._columns.length) {\n this._columns.push(0);\n }\n\n // Update columns\n for (let i = 0; i < data.length; ++i) {\n this._columns[i] = Math.max(this._columns[i], CliList._length(data[i]));\n }\n }\n\n private _formatValue(value: string, idx: number): string {\n return value + ' '.repeat(this._columns[idx] - CliList._length(value));\n }\n \n setHeaders(headers: string[]): void {\n this._updateColumns(headers);\n this._headers = headers.map(CliList._capitalize);\n }\n \n add(data: string[]): void {\n this._updateColumns(data);\n this._data.push(data);\n }\n\n *lines(): Generator<string, void> {\n if (this._headers) {\n yield this._headers.map((v, i) => chalk.bold(this._formatValue(v, i)))\n .join(' ');\n }\n\n for (const data of this._data) {\n yield data.map((v, i) => this._formatValue(v, i))\n .join(' ');\n }\n }\n\n // Properties\n get columns(): number[] {\n return this._columns;\n }\n\n get headers(): string[] {\n return this._headers || [];\n }\n\n get data(): string[][] {\n return this._data;\n }\n}"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "CliList", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>CliList
|
|
8
|
+
});
|
|
9
|
+
const _chalk = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
|
|
10
|
+
function _interopRequireDefault(obj) {
|
|
11
|
+
return obj && obj.__esModule ? obj : {
|
|
12
|
+
default: obj
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
class CliList {
|
|
16
|
+
_data = [];
|
|
17
|
+
_columns = [];
|
|
18
|
+
// Methods
|
|
19
|
+
static _capitalize(txt) {
|
|
20
|
+
return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
static _length(txt) {
|
|
23
|
+
return txt.replace(/\033\[[^m]*m/g, '').length;
|
|
24
|
+
}
|
|
25
|
+
_updateColumns(data) {
|
|
26
|
+
// Add missing columns
|
|
27
|
+
while(data.length > this._columns.length){
|
|
28
|
+
this._columns.push(0);
|
|
29
|
+
}
|
|
30
|
+
// Update columns
|
|
31
|
+
for(let i = 0; i < data.length; ++i){
|
|
32
|
+
this._columns[i] = Math.max(this._columns[i], CliList._length(data[i]));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
_formatValue(value, idx) {
|
|
36
|
+
return value + ' '.repeat(this._columns[idx] - CliList._length(value));
|
|
37
|
+
}
|
|
38
|
+
setHeaders(headers) {
|
|
39
|
+
this._updateColumns(headers);
|
|
40
|
+
this._headers = headers.map(CliList._capitalize);
|
|
41
|
+
}
|
|
42
|
+
add(data) {
|
|
43
|
+
this._updateColumns(data);
|
|
44
|
+
this._data.push(data);
|
|
45
|
+
}
|
|
46
|
+
*lines() {
|
|
47
|
+
if (this._headers) {
|
|
48
|
+
yield this._headers.map((v, i)=>_chalk.default.bold(this._formatValue(v, i))).join(' ');
|
|
49
|
+
}
|
|
50
|
+
for (const data of this._data){
|
|
51
|
+
yield data.map((v, i)=>this._formatValue(v, i)).join(' ');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Properties
|
|
55
|
+
get columns() {
|
|
56
|
+
return this._columns;
|
|
57
|
+
}
|
|
58
|
+
get headers() {
|
|
59
|
+
return this._headers || [];
|
|
60
|
+
}
|
|
61
|
+
get data() {
|
|
62
|
+
return this._data;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=cli-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/cli-list.js"],"sourcesContent":["import chalk from 'chalk';\n\n// Class\nexport class CliList {\n // Attributes\n private _headers?: string[];\n private readonly _data: string[][] = [];\n private readonly _columns: number[] = [];\n\n // Methods\n private static _capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n }\n\n private static _length(txt: string): number {\n return txt.replace(/\\033\\[[^m]*m/g, '').length;\n }\n\n private _updateColumns(data: string[]): void {\n // Add missing columns\n while (data.length > this._columns.length) {\n this._columns.push(0);\n }\n\n // Update columns\n for (let i = 0; i < data.length; ++i) {\n this._columns[i] = Math.max(this._columns[i], CliList._length(data[i]));\n }\n }\n\n private _formatValue(value: string, idx: number): string {\n return value + ' '.repeat(this._columns[idx] - CliList._length(value));\n }\n \n setHeaders(headers: string[]): void {\n this._updateColumns(headers);\n this._headers = headers.map(CliList._capitalize);\n }\n \n add(data: string[]): void {\n this._updateColumns(data);\n this._data.push(data);\n }\n\n *lines(): Generator<string, void> {\n if (this._headers) {\n yield this._headers.map((v, i) => chalk.bold(this._formatValue(v, i)))\n .join(' ');\n }\n\n for (const data of this._data) {\n yield data.map((v, i) => this._formatValue(v, i))\n .join(' ');\n }\n }\n\n // Properties\n get columns(): number[] {\n return this._columns;\n }\n\n get headers(): string[] {\n return this._headers || [];\n }\n\n get data(): string[][] {\n return this._data;\n }\n}"],"names":["CliList","_data","_columns","_capitalize","txt","charAt","toUpperCase","substring","toLowerCase","_length","replace","length","_updateColumns","data","push","i","Math","max","_formatValue","value","idx","repeat","setHeaders","headers","_headers","map","add","lines","v","chalk","bold","join","columns"],"mappings":"AAAA;;;;+BAGaA;;aAAAA;;4DAHK;;;;;;AAGX,MAAMA;IAGMC,QAAoB,EAAE,CAAC;IACvBC,WAAqB,EAAE,CAAC;IAEzC,UAAU;IACV,OAAeC,YAAYC,GAAW,EAAU;QAC9C,OAAOA,IAAIC,MAAM,CAAC,GAAGC,WAAW,KAAKF,IAAIG,SAAS,CAAC,GAAGC,WAAW;IACnE;IAEA,OAAeC,QAAQL,GAAW,EAAU;QAC1C,OAAOA,IAAIM,OAAO,CAAC,iBAAiB,IAAIC,MAAM;IAChD;IAEQC,eAAeC,IAAc,EAAQ;QAC3C,sBAAsB;QACtB,MAAOA,KAAKF,MAAM,GAAG,IAAI,CAACT,QAAQ,CAACS,MAAM,CAAE;YACzC,IAAI,CAACT,QAAQ,CAACY,IAAI,CAAC;QACrB;QAEA,iBAAiB;QACjB,IAAK,IAAIC,IAAI,GAAGA,IAAIF,KAAKF,MAAM,EAAE,EAAEI,EAAG;YACpC,IAAI,CAACb,QAAQ,CAACa,EAAE,GAAGC,KAAKC,GAAG,CAAC,IAAI,CAACf,QAAQ,CAACa,EAAE,EAAEf,QAAQS,OAAO,CAACI,IAAI,CAACE,EAAE;QACvE;IACF;IAEQG,aAAaC,KAAa,EAAEC,GAAW,EAAU;QACvD,OAAOD,QAAQ,IAAIE,MAAM,CAAC,IAAI,CAACnB,QAAQ,CAACkB,IAAI,GAAGpB,QAAQS,OAAO,CAACU;IACjE;IAEAG,WAAWC,OAAiB,EAAQ;QAClC,IAAI,CAACX,cAAc,CAACW;QACpB,IAAI,CAACC,QAAQ,GAAGD,QAAQE,GAAG,CAACzB,QAAQG,WAAW;IACjD;IAEAuB,IAAIb,IAAc,EAAQ;QACxB,IAAI,CAACD,cAAc,CAACC;QACpB,IAAI,CAACZ,KAAK,CAACa,IAAI,CAACD;IAClB;IAEA,CAACc,QAAiC;QAChC,IAAI,IAAI,CAACH,QAAQ,EAAE;YACjB,MAAM,IAAI,CAACA,QAAQ,CAACC,GAAG,CAAC,CAACG,GAAGb,IAAMc,cAAK,CAACC,IAAI,CAAC,IAAI,CAACZ,YAAY,CAACU,GAAGb,KAC7DgB,IAAI,CAAC;QACZ,CAAC;QAED,KAAK,MAAMlB,QAAQ,IAAI,CAACZ,KAAK,CAAE;YAC7B,MAAMY,KAAKY,GAAG,CAAC,CAACG,GAAGb,IAAM,IAAI,CAACG,YAAY,CAACU,GAAGb,IAC3CgB,IAAI,CAAC;QACV;IACF;IAEA,aAAa;IACb,IAAIC,UAAoB;QACtB,OAAO,IAAI,CAAC9B,QAAQ;IACtB;IAEA,IAAIqB,UAAoB;QACtB,OAAO,IAAI,CAACC,QAAQ,IAAI,EAAE;IAC5B;IAEA,IAAIX,OAAmB;QACrB,OAAO,IAAI,CAACZ,KAAK;IACnB;AACF","file":"cli-list.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/global-spinner.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAKtD,eAAO,MAAM,aAAa,EAAE,EAsB3B,CAAC","file":"global-spinner.d.ts","sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\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>({ spin: false, label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe(setState);\n }, []);\n\n // Render\n if (state.spin) {\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n }\n\n return <></>;\n};\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
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 _react = require("react");
|
|
13
|
+
const _services = require("../services");
|
|
14
|
+
function _interopRequireDefault(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const GlobalSpinner = ()=>{
|
|
20
|
+
// State
|
|
21
|
+
const [state, setState] = (0, _react.useState)({
|
|
22
|
+
spin: false,
|
|
23
|
+
label: ''
|
|
24
|
+
});
|
|
25
|
+
// Effect
|
|
26
|
+
(0, _react.useLayoutEffect)(()=>{
|
|
27
|
+
const spinner = _services.container.get(_services.SpinnerService);
|
|
28
|
+
setState(spinner.state);
|
|
29
|
+
return spinner.subscribe(setState);
|
|
30
|
+
}, []);
|
|
31
|
+
// Render
|
|
32
|
+
if (state.spin) {
|
|
33
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
34
|
+
children: [
|
|
35
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_inkSpinner.default, {}),
|
|
36
|
+
' ' + state.label
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=global-spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/global-spinner.js"],"sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\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>({ spin: false, label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe(setState);\n }, []);\n\n // Render\n if (state.spin) {\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n }\n\n return <></>;\n};\n"],"names":["GlobalSpinner","state","setState","useState","spin","label","useLayoutEffect","spinner","container","get","SpinnerService","subscribe","Text","Spinner"],"mappings":"AAAA;;;;+BAOaA;;aAAAA;;;qBAPQ;iEACD;uBAC0B;0BAEU;;;;;;AAGjD,MAAMA,gBAAoB,IAAM;IACrC,QAAQ;IACR,MAAM,CAACC,OAAOC,SAAS,GAAGC,IAAAA,eAAQ,EAAe;QAAEC,MAAM,KAAK;QAAEC,OAAO;IAAG;IAE1E,SAAS;IACTC,IAAAA,sBAAe,EAAC,IAAM;QACpB,MAAMC,UAAUC,mBAAS,CAACC,GAAG,CAACC,wBAAc;QAC5CR,SAASK,QAAQN,KAAK;QAEtB,OAAOM,QAAQI,SAAS,CAACT;IAC3B,GAAG,EAAE;IAEL,SAAS;IACT,IAAID,MAAMG,IAAI,EAAE;QACd,qBACE,sBAACQ,SAAI;;8BACH,qBAACC,mBAAO;gBAAI,MAAMZ,MAAMI,KAAK;;;IAGnC,CAAC;IAED,qBAAO;AACT","file":"global-spinner.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC","file":"index.d.ts","sourcesContent":["export * from './cli-list';\nexport * from './global-spinner';\nexport * from './layout';\nexport * from './static-logs';\n"]}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_exportStar(require("./cli-list"), exports);
|
|
6
|
+
_exportStar(require("./global-spinner"), exports);
|
|
7
|
+
_exportStar(require("./layout"), exports);
|
|
8
|
+
_exportStar(require("./static-logs"), exports);
|
|
9
|
+
function _exportStar(from, to) {
|
|
10
|
+
Object.keys(from).forEach(function(k) {
|
|
11
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function() {
|
|
14
|
+
return from[k];
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
return from;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/index.js"],"sourcesContent":["export * from './cli-list';\nexport * from './global-spinner';\nexport * from './layout';\nexport * from './static-logs';\n"],"names":[],"mappings":"AAAA;;;;oBAAc;oBACA;oBACA;oBACA","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAM3B,eAAO,MAAM,MAAM,EAAE,EAKpB,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 = () => (\n <>\n <StaticLogs />\n <GlobalSpinner />\n </>\n);\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 = ()=>/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
13
|
+
children: [
|
|
14
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_staticLogs.StaticLogs, {}),
|
|
15
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_globalSpinner.GlobalSpinner, {})
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 = () => (\n <>\n <StaticLogs />\n <GlobalSpinner />\n </>\n);\n"],"names":["Layout","StaticLogs","GlobalSpinner"],"mappings":"AAAA;;;;+BAMaA;;aAAAA;;;+BAJiB;4BACH;AAGpB,MAAMA,SAAa,kBACxB;;0BACE,qBAACC,sBAAU;0BACX,qBAACC,4BAAa","file":"layout.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/static-logs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAiBtD,eAAO,MAAM,UAAU,EAAE,EA0CxB,CAAC","file":"static-logs.d.ts","sourcesContent":["import { Static, Text } from 'ink';\nimport { FC, useLayoutEffect, useState } from 'react';\nimport Transport from 'winston-transport';\n\nimport { container, Logger } from '../services';\n\n// Constants\nconst COLORS: Record<string, string> = {\n debug: 'grey',\n verbose: 'blue',\n warn: 'yellow',\n error: 'red',\n};\n\n// Utils\nlet id = 0;\n\n// Component\nexport const StaticLogs: FC = () => {\n // State\n const [logs, setLogs] = useState<any[]>([]);\n\n // Effect\n useLayoutEffect(() => {\n const logger = container.get(Logger);\n const olds = logger.transports;\n\n logger.clear();\n logger.add(new class extends Transport {\n // Methods\n log(info: any, next: () => void): void {\n setTimeout(() => {\n this.emit('logged', info);\n }, 0);\n\n setLogs((old) => [...old, { id: ++id, ...info }]);\n\n next();\n }\n });\n\n return () => {\n logger.clear();\n\n for (const transport of olds) {\n logger.add(transport);\n }\n };\n }, []);\n\n return (\n <Static items={logs}>\n { (log) => (\n <Text key={log.id} color={COLORS[log.level]}>\n { log.label && <Text color=\"grey\">[{ log.label }]{' '}</Text> }\n { log.message }\n </Text>\n ) }\n </Static>\n );\n};\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "StaticLogs", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>StaticLogs
|
|
8
|
+
});
|
|
9
|
+
const _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
const _ink = require("ink");
|
|
11
|
+
const _react = require("react");
|
|
12
|
+
const _winstonTransport = /*#__PURE__*/ _interopRequireDefault(require("winston-transport"));
|
|
13
|
+
const _services = require("../services");
|
|
14
|
+
function _interopRequireDefault(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// Constants
|
|
20
|
+
const COLORS = {
|
|
21
|
+
debug: 'grey',
|
|
22
|
+
verbose: 'blue',
|
|
23
|
+
warn: 'yellow',
|
|
24
|
+
error: 'red'
|
|
25
|
+
};
|
|
26
|
+
// Utils
|
|
27
|
+
let id = 0;
|
|
28
|
+
const StaticLogs = ()=>{
|
|
29
|
+
// State
|
|
30
|
+
const [logs, setLogs] = (0, _react.useState)([]);
|
|
31
|
+
// Effect
|
|
32
|
+
(0, _react.useLayoutEffect)(()=>{
|
|
33
|
+
const logger = _services.container.get(_services.Logger);
|
|
34
|
+
const olds = logger.transports;
|
|
35
|
+
logger.clear();
|
|
36
|
+
logger.add(new class extends _winstonTransport.default {
|
|
37
|
+
// Methods
|
|
38
|
+
log(info, next) {
|
|
39
|
+
setTimeout(()=>{
|
|
40
|
+
this.emit('logged', info);
|
|
41
|
+
}, 0);
|
|
42
|
+
setLogs((old)=>[
|
|
43
|
+
...old,
|
|
44
|
+
{
|
|
45
|
+
id: ++id,
|
|
46
|
+
...info
|
|
47
|
+
}
|
|
48
|
+
]);
|
|
49
|
+
next();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
return ()=>{
|
|
53
|
+
logger.clear();
|
|
54
|
+
for (const transport of olds){
|
|
55
|
+
logger.add(transport);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}, []);
|
|
59
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Static, {
|
|
60
|
+
items: logs,
|
|
61
|
+
children: (log)=>/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
62
|
+
color: COLORS[log.level],
|
|
63
|
+
children: [
|
|
64
|
+
log.label && /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
65
|
+
color: "grey",
|
|
66
|
+
children: [
|
|
67
|
+
"[",
|
|
68
|
+
log.label,
|
|
69
|
+
"]",
|
|
70
|
+
' '
|
|
71
|
+
]
|
|
72
|
+
}),
|
|
73
|
+
log.message
|
|
74
|
+
]
|
|
75
|
+
}, log.id)
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=static-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ui/static-logs.js"],"sourcesContent":["import { Static, Text } from 'ink';\nimport { FC, useLayoutEffect, useState } from 'react';\nimport Transport from 'winston-transport';\n\nimport { container, Logger } from '../services';\n\n// Constants\nconst COLORS: Record<string, string> = {\n debug: 'grey',\n verbose: 'blue',\n warn: 'yellow',\n error: 'red',\n};\n\n// Utils\nlet id = 0;\n\n// Component\nexport const StaticLogs: FC = () => {\n // State\n const [logs, setLogs] = useState<any[]>([]);\n\n // Effect\n useLayoutEffect(() => {\n const logger = container.get(Logger);\n const olds = logger.transports;\n\n logger.clear();\n logger.add(new class extends Transport {\n // Methods\n log(info: any, next: () => void): void {\n setTimeout(() => {\n this.emit('logged', info);\n }, 0);\n\n setLogs((old) => [...old, { id: ++id, ...info }]);\n\n next();\n }\n });\n\n return () => {\n logger.clear();\n\n for (const transport of olds) {\n logger.add(transport);\n }\n };\n }, []);\n\n return (\n <Static items={logs}>\n { (log) => (\n <Text key={log.id} color={COLORS[log.level]}>\n { log.label && <Text color=\"grey\">[{ log.label }]{' '}</Text> }\n { log.message }\n </Text>\n ) }\n </Static>\n );\n};\n"],"names":["StaticLogs","COLORS","debug","verbose","warn","error","id","logs","setLogs","useState","useLayoutEffect","logger","container","get","Logger","olds","transports","clear","add","Transport","log","info","next","setTimeout","emit","old","transport","Static","items","Text","color","level","label","message"],"mappings":"AAAA;;;;+BAkBaA;;aAAAA;;;qBAlBgB;uBACiB;uEACxB;0BAEY;;;;;;AAElC,YAAY;AACZ,MAAMC,SAAiC;IACrCC,OAAO;IACPC,SAAS;IACTC,MAAM;IACNC,OAAO;AACT;AAEA,QAAQ;AACR,IAAIC,KAAK;AAGF,MAAMN,aAAiB,IAAM;IAClC,QAAQ;IACR,MAAM,CAACO,MAAMC,QAAQ,GAAGC,IAAAA,eAAQ,EAAQ,EAAE;IAE1C,SAAS;IACTC,IAAAA,sBAAe,EAAC,IAAM;QACpB,MAAMC,SAASC,mBAAS,CAACC,GAAG,CAACC,gBAAM;QACnC,MAAMC,OAAOJ,OAAOK,UAAU;QAE9BL,OAAOM,KAAK;QACZN,OAAOO,GAAG,CAAC,IAAI,cAAcC,yBAAS;YACpC,UAAU;YACVC,IAAIC,IAAS,EAAEC,IAAgB,EAAQ;gBACrCC,WAAW,IAAM;oBACf,IAAI,CAACC,IAAI,CAAC,UAAUH;gBACtB,GAAG;gBAEHb,QAAQ,CAACiB,MAAQ;2BAAIA;wBAAK;4BAAEnB,IAAI,EAAEA;4BAAI,GAAGe,IAAI;wBAAC;qBAAE;gBAEhDC;YACF;QACF;QAEA,OAAO,IAAM;YACXX,OAAOM,KAAK;YAEZ,KAAK,MAAMS,aAAaX,KAAM;gBAC5BJ,OAAOO,GAAG,CAACQ;YACb;QACF;IACF,GAAG,EAAE;IAEL,qBACE,qBAACC,WAAM;QAACC,OAAOrB;kBACX,CAACa,oBACD,sBAACS,SAAI;gBAAcC,OAAO7B,MAAM,CAACmB,IAAIW,KAAK,CAAC;;oBACvCX,IAAIY,KAAK,kBAAI,sBAACH,SAAI;wBAACC,OAAM;;4BAAO;4BAAGV,IAAIY,KAAK;4BAAE;4BAAE;;;oBAChDZ,IAAIa,OAAO;;eAFJb,IAAId,EAAE;;AAOzB","file":"static-logs.js"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';
|
|
2
|
+
import { Argv, CommandModule } from 'yargs';
|
|
3
|
+
export declare function combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T>;
|
|
4
|
+
export declare function streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string>;
|
|
5
|
+
export declare type Modifier<T = unknown, U = unknown> = (yargs: Argv<T>) => void | Argv<U>;
|
|
6
|
+
export declare function applyModifiers<T>(yargs: Argv<T>, modifiers: Modifier[]): Argv<T>;
|
|
7
|
+
export declare function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG5C,wBAAuB,OAAO,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAIvF;AAED,wBAAuB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CA8BnG;AAGD,oBAAY,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpF,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAQhF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAErF","file":"utils.d.ts","sourcesContent":["import { streamEvents } from '@jujulego/event-tree';\nimport { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';\nimport { Argv, CommandModule } from 'yargs';\n\n// Stream utils\nexport async function* combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T> {\n for (const gen of generators) {\n yield* gen;\n }\n}\n\nexport async function *streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string> {\n // Abort\n const ctrl = new AbortController();\n\n task.subscribe('status.done', () => ctrl.abort());\n task.subscribe('status.failed', () => ctrl.abort());\n\n // Stream\n let current = '';\n\n try {\n for await (const chunk of streamEvents(task, `stream.${stream}`, { signal: ctrl.signal })) {\n const data = current + chunk.data.toString('utf-8');\n const lines = data.split(/\\r?\\n/g);\n\n current = lines.pop() ?? '';\n\n for (const line of lines) {\n yield line;\n }\n }\n } catch (err) {\n if (task.exitCode !== 0) {\n throw err;\n }\n\n if (current) {\n yield current;\n }\n }\n}\n\n// Command utils\nexport type Modifier<T = unknown, U = unknown> = (yargs: Argv<T>) => void | Argv<U>;\n\nexport function applyModifiers<T>(yargs: Argv<T>, modifiers: Modifier[]): Argv<T> {\n let tmp: Argv<unknown> = yargs;\n\n for (const modifier of modifiers) {\n tmp = modifier(tmp) ?? tmp;\n }\n\n return tmp as Argv<T>;\n}\n\nexport function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U> {\n return command;\n}\n"]}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
combine: ()=>combine,
|
|
13
|
+
streamLines: ()=>streamLines,
|
|
14
|
+
applyModifiers: ()=>applyModifiers,
|
|
15
|
+
defineCommand: ()=>defineCommand
|
|
16
|
+
});
|
|
17
|
+
const _eventTree = require("@jujulego/event-tree");
|
|
18
|
+
async function* combine(...generators) {
|
|
19
|
+
for (const gen of generators){
|
|
20
|
+
yield* gen;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function* streamLines(task, stream) {
|
|
24
|
+
// Abort
|
|
25
|
+
const ctrl = new AbortController();
|
|
26
|
+
task.subscribe('status.done', ()=>ctrl.abort());
|
|
27
|
+
task.subscribe('status.failed', ()=>ctrl.abort());
|
|
28
|
+
// Stream
|
|
29
|
+
let current = '';
|
|
30
|
+
try {
|
|
31
|
+
for await (const chunk of (0, _eventTree.streamEvents)(task, `stream.${stream}`, {
|
|
32
|
+
signal: ctrl.signal
|
|
33
|
+
})){
|
|
34
|
+
const data = current + chunk.data.toString('utf-8');
|
|
35
|
+
const lines = data.split(/\r?\n/g);
|
|
36
|
+
current = lines.pop() ?? '';
|
|
37
|
+
for (const line of lines){
|
|
38
|
+
yield line;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} catch (err) {
|
|
42
|
+
if (task.exitCode !== 0) {
|
|
43
|
+
throw err;
|
|
44
|
+
}
|
|
45
|
+
if (current) {
|
|
46
|
+
yield current;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function applyModifiers(yargs, modifiers) {
|
|
51
|
+
let tmp = yargs;
|
|
52
|
+
for (const modifier of modifiers){
|
|
53
|
+
tmp = modifier(tmp) ?? tmp;
|
|
54
|
+
}
|
|
55
|
+
return tmp;
|
|
56
|
+
}
|
|
57
|
+
function defineCommand(command) {
|
|
58
|
+
return command;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils.js"],"sourcesContent":["import { streamEvents } from '@jujulego/event-tree';\nimport { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';\nimport { Argv, CommandModule } from 'yargs';\n\n// Stream utils\nexport async function* combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T> {\n for (const gen of generators) {\n yield* gen;\n }\n}\n\nexport async function *streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string> {\n // Abort\n const ctrl = new AbortController();\n\n task.subscribe('status.done', () => ctrl.abort());\n task.subscribe('status.failed', () => ctrl.abort());\n\n // Stream\n let current = '';\n\n try {\n for await (const chunk of streamEvents(task, `stream.${stream}`, { signal: ctrl.signal })) {\n const data = current + chunk.data.toString('utf-8');\n const lines = data.split(/\\r?\\n/g);\n\n current = lines.pop() ?? '';\n\n for (const line of lines) {\n yield line;\n }\n }\n } catch (err) {\n if (task.exitCode !== 0) {\n throw err;\n }\n\n if (current) {\n yield current;\n }\n }\n}\n\n// Command utils\nexport type Modifier<T = unknown, U = unknown> = (yargs: Argv<T>) => void | Argv<U>;\n\nexport function applyModifiers<T>(yargs: Argv<T>, modifiers: Modifier[]): Argv<T> {\n let tmp: Argv<unknown> = yargs;\n\n for (const modifier of modifiers) {\n tmp = modifier(tmp) ?? tmp;\n }\n\n return tmp as Argv<T>;\n}\n\nexport function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U> {\n return command;\n}\n"],"names":["combine","streamLines","applyModifiers","defineCommand","generators","gen","task","stream","ctrl","AbortController","subscribe","abort","current","chunk","streamEvents","signal","data","toString","lines","split","pop","line","err","exitCode","yargs","modifiers","tmp","modifier","command"],"mappings":"AAAA;;;;;;;;;;;IAKuBA,OAAO,MAAPA;IAMAC,WAAW,MAAXA;IAmCPC,cAAc,MAAdA;IAUAC,aAAa,MAAbA;;2BAxDa;AAKtB,gBAAgBH,QAAW,GAAGI,UAA+B,EAAqB;IACvF,KAAK,MAAMC,OAAOD,WAAY;QAC5B,OAAOC;IACT;AACF;AAEO,gBAAgBJ,YAAYK,IAAe,EAAEC,MAAuB,EAA0B;IACnG,QAAQ;IACR,MAAMC,OAAO,IAAIC;IAEjBH,KAAKI,SAAS,CAAC,eAAe,IAAMF,KAAKG,KAAK;IAC9CL,KAAKI,SAAS,CAAC,iBAAiB,IAAMF,KAAKG,KAAK;IAEhD,SAAS;IACT,IAAIC,UAAU;IAEd,IAAI;QACF,WAAW,MAAMC,SAASC,IAAAA,uBAAY,EAACR,MAAM,CAAC,OAAO,EAAEC,OAAO,CAAC,EAAE;YAAEQ,QAAQP,KAAKO,MAAM;QAAC,GAAI;YACzF,MAAMC,OAAOJ,UAAUC,MAAMG,IAAI,CAACC,QAAQ,CAAC;YAC3C,MAAMC,QAAQF,KAAKG,KAAK,CAAC;YAEzBP,UAAUM,MAAME,GAAG,MAAM;YAEzB,KAAK,MAAMC,QAAQH,MAAO;gBACxB,MAAMG;YACR;QACF;IACF,EAAE,OAAOC,KAAK;QACZ,IAAIhB,KAAKiB,QAAQ,KAAK,GAAG;YACvB,MAAMD,IAAI;QACZ,CAAC;QAED,IAAIV,SAAS;YACX,MAAMA;QACR,CAAC;IACH;AACF;AAKO,SAASV,eAAkBsB,KAAc,EAAEC,SAAqB,EAAW;IAChF,IAAIC,MAAqBF;IAEzB,KAAK,MAAMG,YAAYF,UAAW;QAChCC,MAAMC,SAASD,QAAQA;IACzB;IAEA,OAAOA;AACT;AAEO,SAASvB,cAAoByB,OAA4B,EAAuB;IACrF,OAAOA;AACT","file":"utils.js"}
|