@jujulego/jill 2.4.0-alpha.4 → 2.4.0-alpha.6

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.
@@ -1,17 +1,13 @@
1
+ import { _ } from '@swc/helpers/_/_ts_decorate';
2
+ import { _ as _$1 } from '@swc/helpers/_/_ts_param';
1
3
  import { Logger, withLabel } from '@jujulego/logger';
2
4
  import { injectable, inject } from 'inversify';
3
5
  import yargs from 'yargs';
4
- import { o as lazyInject, v as TASK_MANAGER, I as InkCommand, z as printJson, q as isCommandCtx, t as isScriptCtx, a as List, T as TaskManagerSpinner, E as ExitException, n as container, F as ContextService, P as PluginLoaderService, m as CURRENT, H as applyConfigOptions, k as getModule, e as COMMAND_MODULE, d as COMMAND, g as getCommandOpts, f as buildCommandModule } from './ink-command-SIxVoU_e.js';
6
+ import { o as lazyInject, v as TASK_MANAGER, I as InkCommand, z as printJson, q as isCommandCtx, t as isScriptCtx, a as List, T as TaskManagerSpinner, E as ExitException, n as container, F as ContextService, P as PluginLoaderService, m as CURRENT, H as applyConfigOptions, k as getModule, e as COMMAND_MODULE, d as COMMAND, g as getCommandOpts, f as buildCommandModule } from './ink-command-OuyNSTxT.js';
5
7
  import { jsx } from 'react/jsx-runtime';
6
8
  import { waitFor$ } from '@jujulego/event-tree';
7
9
  import { TaskSet, plan } from '@jujulego/tasks';
8
10
 
9
- function _ts_decorate$1(decorators, target, key, desc) {
10
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
- 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;
13
- return c > 3 && r && Object.defineProperty(target, key, r), r;
14
- }
15
11
  let TaskCommand = class TaskCommand extends InkCommand {
16
12
  addTaskOptions(parser) {
17
13
  return parser.option("plan", {
@@ -68,15 +64,15 @@ let TaskCommand = class TaskCommand extends InkCommand {
68
64
  }
69
65
  }
70
66
  };
71
- _ts_decorate$1([
67
+ _([
72
68
  lazyInject(TASK_MANAGER)
73
69
  ], TaskCommand.prototype, "manager", void 0);
74
- TaskCommand = _ts_decorate$1([
70
+ TaskCommand = _([
75
71
  injectable()
76
72
  ], TaskCommand);
77
73
 
78
74
  var name = "@jujulego/jill";
79
- var version = "2.4.0-alpha.4";
75
+ var version = "2.4.0-alpha.6";
80
76
  var license = "MIT";
81
77
  var repository = {
82
78
  type: "git",
@@ -111,6 +107,7 @@ var dependencies = {
111
107
  "@jujulego/quick-tag": "^0.3.3",
112
108
  "@jujulego/tasks": "^2.2.0",
113
109
  "@jujulego/utils": "^2.0.2",
110
+ "@swc/helpers": "^0.5.3",
114
111
  ajv: "^8.12.0",
115
112
  chalk: "^5.3.0",
116
113
  "chalk-template": "^1.1.0",
@@ -133,23 +130,24 @@ var dependencies = {
133
130
  };
134
131
  var devDependencies = {
135
132
  "@jujulego/2d-maths": "1.6.0",
136
- "@jujulego/vite-plugin-swc": "1.1.0",
133
+ "@jujulego/vite-plugin-swc": "1.1.1",
137
134
  "@microsoft/eslint-formatter-sarif": "3.0.0",
138
135
  "@rollup/plugin-json": "6.0.1",
136
+ "@rollup/plugin-node-resolve": "15.2.3",
139
137
  "@swc/core": "1.3.96",
140
138
  "@types/moo": "0.5.9",
141
- "@types/node": "16.18.61",
139
+ "@types/node": "16.18.62",
142
140
  "@types/normalize-package-data": "2.4.4",
143
141
  "@types/react": "18.2.37",
144
142
  "@types/semver": "7.5.5",
145
143
  "@types/yargs": "17.0.31",
146
- "@typescript-eslint/eslint-plugin": "6.10.0",
147
- "@typescript-eslint/parser": "6.10.0",
144
+ "@typescript-eslint/eslint-plugin": "6.11.0",
145
+ "@typescript-eslint/parser": "6.11.0",
148
146
  "@vitest/coverage-v8": "0.34.6",
149
147
  "@vitest/expect": "0.34.6",
150
148
  "@vitest/spy": "0.34.6",
151
149
  browserslist: "4.22.1",
152
- eslint: "8.53.0",
150
+ eslint: "8.54.0",
153
151
  "eslint-plugin-react": "7.33.2",
154
152
  "eslint-plugin-react-hooks": "4.6.0",
155
153
  "eslint-plugin-vitest": "0.3.9",
@@ -160,11 +158,11 @@ var devDependencies = {
160
158
  shx: "0.3.4",
161
159
  "ts-node": "10.9.1",
162
160
  typescript: "5.2.2",
163
- vite: "5.0.0-beta.18",
161
+ vite: "5.0.0",
164
162
  "vite-tsconfig-paths": "4.2.1",
165
163
  vitest: "0.34.6"
166
164
  };
167
- var packageManager = "yarn@3.6.4";
165
+ var packageManager = "yarn@3.7.0";
168
166
  var pkg = {
169
167
  name: name,
170
168
  version: version,
@@ -181,17 +179,6 @@ var pkg = {
181
179
  packageManager: packageManager
182
180
  };
183
181
 
184
- function _ts_decorate(decorators, target, key, desc) {
185
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
186
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
187
- 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;
188
- return c > 3 && r && Object.defineProperty(target, key, r), r;
189
- }
190
- function _ts_param(paramIndex, decorator) {
191
- return function(target, key) {
192
- decorator(target, key, paramIndex);
193
- };
194
- }
195
182
  let JillApplication = class JillApplication {
196
183
  // Constructor
197
184
  constructor(context, plugins, logger){
@@ -210,7 +197,7 @@ let JillApplication = class JillApplication {
210
197
  }
211
198
  async _loadPlugins() {
212
199
  this.logger.child(withLabel("plugin")).verbose("Loading plugin <core>");
213
- const { CorePlugin } = await import('./core.plugin-CZ8_7QfH.js');
200
+ const { CorePlugin } = await import('./core.plugin-fx8ZOGe-.js');
214
201
  this.container.load(getModule(CorePlugin, true));
215
202
  await this.plugins.loadPlugins(this.container);
216
203
  }
@@ -254,11 +241,11 @@ let JillApplication = class JillApplication {
254
241
  });
255
242
  }
256
243
  };
257
- JillApplication = _ts_decorate([
244
+ JillApplication = _([
258
245
  injectable(),
259
- _ts_param(0, inject(ContextService)),
260
- _ts_param(1, inject(PluginLoaderService)),
261
- _ts_param(2, inject(Logger))
246
+ _$1(0, inject(ContextService)),
247
+ _$1(1, inject(PluginLoaderService)),
248
+ _$1(2, inject(Logger))
262
249
  ], JillApplication);
263
250
  container.bind(JillApplication).toSelf().inTransientScope().whenTargetIsDefault();
264
251
  container.bind(JillApplication).toDynamicValue(({ container })=>{
@@ -276,4 +263,4 @@ var jill_application = /*#__PURE__*/Object.freeze({
276
263
  });
277
264
 
278
265
  export { JillApplication as J, TaskCommand as T, jill_application as j };
279
- //# sourceMappingURL=jill.application-NaKSF97o.js.map
266
+ //# sourceMappingURL=jill.application-JCJSgP36.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jill.application-NaKSF97o.js","sources":["../src/modules/task-command.tsx","../src/jill.application.ts"],"sourcesContent":["import { waitFor$ } from '@jujulego/event-tree';\nimport { Logger } from '@jujulego/logger';\nimport { plan as extractPlan, type Task, type TaskManager, TaskSet, type TaskSummary } from '@jujulego/tasks';\nimport { injectable } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { container, lazyInject } from '@/src/inversify.config.ts';\nimport { isCommandCtx } from '@/src/tasks/command-task.ts';\nimport { isScriptCtx } from '@/src/tasks/script-task.ts';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config.ts';\nimport { type AwaitableGenerator } from '@/src/types.ts';\nimport List from '@/src/ui/list.tsx';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner.tsx';\nimport { ExitException } from '@/src/utils/exit.ts';\nimport { printJson } from '@/src/utils/json.ts';\n\nimport { InkCommand } from './ink-command.tsx';\n\n// Types\nexport interface ITaskCommandArgs {\n plan: boolean;\n 'plan-mode': 'json' | 'list';\n}\n\n// Class\n@injectable()\nexport abstract class TaskCommand<A = unknown> extends InkCommand<A> {\n // Attributes\n @lazyInject(TASK_MANAGER)\n readonly manager: TaskManager;\n\n // Methods\n abstract prepare(args: ArgumentsCamelCase<A>): AwaitableGenerator<Task>;\n\n protected addTaskOptions(parser: Argv): Argv<ITaskCommandArgs> {\n return parser\n .option('plan', {\n type: 'boolean',\n desc: 'Only prints tasks to be run',\n default: false,\n })\n .option('plan-mode', {\n type: 'string',\n desc: 'Plan output mode',\n choices: ['json', 'list'] as const,\n default: 'list' as const\n });\n }\n\n async* render(args: ArgumentsCamelCase<A & ITaskCommandArgs>) {\n // Prepare tasks\n const tasks = new TaskSet();\n\n for await (const tsk of this.prepare(args)) {\n tasks.add(tsk);\n }\n\n if (args.plan) {\n const plan: TaskSummary[] = Array.from(extractPlan(tasks));\n\n if (args.planMode === 'json') {\n printJson(plan);\n } else {\n const data = plan.map((tsk) => ({\n id: tsk.id.substring(0, 6),\n name: tsk.name,\n workspace: isCommandCtx(tsk.context) || isScriptCtx(tsk.context) ? tsk.context.workspace.name : '',\n group: tsk.groupId?.substring(0, 6),\n 'depends on': tsk.dependenciesIds.map(id => id.substring(0, 6)).join(', ')\n }));\n\n yield <List items={data} headers/>;\n }\n } else if (tasks.tasks.length > 0) {\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Start tasks\n tasks.start(this.manager);\n\n const result = await waitFor$(tasks, 'finished');\n\n if (result.failed > 0) {\n throw new ExitException(1);\n }\n } else {\n const logger = container.get(Logger);\n logger.warning('No task found');\n }\n }\n}\n","import { Logger, withLabel } from '@jujulego/logger';\nimport { type Task } from '@jujulego/tasks';\nimport { inject, injectable, type interfaces as int } from 'inversify';\nimport yargs, { type Argv, type CommandModule } from 'yargs';\n\nimport { ContextService, type Context } from '@/src/commons/context.service.ts';\nimport { applyConfigOptions } from '@/src/config/config-options.ts';\nimport { CURRENT } from '@/src/constants.ts';\nimport { container, lazyInjectNamed } from '@/src/inversify.config.ts';\nimport { buildCommandModule, COMMAND, COMMAND_MODULE, getCommandOpts, type ICommand } from '@/src/modules/command.ts';\nimport { getModule } from '@/src/modules/module.ts';\nimport { PluginLoaderService } from '@/src/modules/plugin-loader.service.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { type Class } from '@/src/types.ts';\n\n// @ts-ignore: Outside of typescript's rootDir in build\nimport pkg from '../package.json';\n\n// Application\n@injectable()\nexport class JillApplication {\n // Attributes\n readonly container: int.Container;\n readonly parser: Argv;\n\n // Constructor\n constructor(\n @inject(ContextService)\n private readonly context: ContextService,\n @inject(PluginLoaderService)\n private readonly plugins: PluginLoaderService,\n @inject(Logger)\n private readonly logger: Logger,\n ) {\n // Create container\n this.container = container.createChild();\n\n // Create parser\n this.parser = yargs()\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(process.stdout.columns)\n .exitProcess(false);\n }\n\n // Methods\n private _prepareParser(commands: CommandModule[]): Argv {\n applyConfigOptions(this.parser);\n\n return this.parser\n .command(commands)\n .recommendCommands()\n .strict()\n .fail(false);\n }\n\n private async _loadPlugins(): Promise<void> {\n this.logger.child(withLabel('plugin')).verbose('Loading plugin <core>');\n\n const { CorePlugin } = await import('@/src/core.plugin.ts');\n this.container.load(getModule(CorePlugin, true));\n\n await this.plugins.loadPlugins(this.container);\n }\n\n async run(argv: string | readonly string[]): Promise<void> {\n this.context.reset({ application: this });\n await this._loadPlugins();\n\n // Parse command\n const commands = await this.container.getAllAsync(COMMAND_MODULE);\n\n await this._prepareParser(commands).parseAsync(argv);\n }\n\n async tasksOf(argv: string[], ctx: Omit<Context, 'application'> = {}): Promise<Task[]> {\n this.context.reset({ ...ctx, application: this });\n await this._loadPlugins();\n\n // Prepare commands\n const commands = await this.container.getAllAsync(COMMAND);\n\n return new Promise<Task[]>((resolve, reject) => {\n const modules: CommandModule[] = [];\n\n for (const cmd of commands) {\n const opts = getCommandOpts(cmd.constructor as Class<ICommand>);\n const mod = buildCommandModule(cmd, opts);\n\n mod.handler = async (args) => {\n if (cmd instanceof TaskCommand) {\n const tasks: Task[] = [];\n\n for await (const tsk of cmd.prepare(args)) {\n tasks.push(tsk);\n }\n\n resolve(tasks);\n } else {\n resolve([]);\n }\n };\n\n modules.push(mod);\n }\n\n // Parse command\n this._prepareParser(modules)\n .parseAsync(argv)\n .catch(reject);\n });\n }\n}\n\ncontainer.bind(JillApplication)\n .toSelf()\n .inTransientScope()\n .whenTargetIsDefault();\n\n// Lazy injection\nexport function LazyCurrentApplication() {\n return lazyInjectNamed(JillApplication, CURRENT);\n}\n\ncontainer.bind(JillApplication)\n .toDynamicValue(({ container }) => {\n const ctx = container.get(ContextService);\n const app = ctx.application;\n\n if (!app) {\n throw new Error('Cannot inject current application, it not yet defined');\n }\n\n return app;\n })\n .whenTargetNamed(CURRENT);\n"],"names":["TaskCommand","InkCommand","addTaskOptions","parser","option","type","desc","default","choices","render","args","tasks","TaskSet","tsk","prepare","add","plan","Array","from","extractPlan","planMode","printJson","data","map","id","substring","name","workspace","isCommandCtx","context","isScriptCtx","group","groupId","dependenciesIds","join","_jsx","List","items","headers","length","TaskManagerSpinner","manager","start","result","waitFor$","failed","ExitException","logger","container","get","Logger","warning","lazyInject","TASK_MANAGER","injectable","JillApplication","constructor","plugins","createChild","yargs","scriptName","completion","help","version","pkg","wrap","process","stdout","columns","exitProcess","_prepareParser","commands","applyConfigOptions","command","recommendCommands","strict","fail","_loadPlugins","child","withLabel","verbose","CorePlugin","load","getModule","loadPlugins","run","argv","reset","application","getAllAsync","COMMAND_MODULE","parseAsync","tasksOf","ctx","COMMAND","Promise","resolve","reject","modules","cmd","opts","getCommandOpts","mod","buildCommandModule","handler","push","catch","inject","ContextService","PluginLoaderService","bind","toSelf","inTransientScope","whenTargetIsDefault","toDynamicValue","app","Error","whenTargetNamed","CURRENT"],"mappings":"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"}
1
+ {"version":3,"file":"jill.application-JCJSgP36.js","sources":["../src/modules/task-command.tsx","../src/jill.application.ts"],"sourcesContent":["import { waitFor$ } from '@jujulego/event-tree';\nimport { Logger } from '@jujulego/logger';\nimport { plan as extractPlan, type Task, type TaskManager, TaskSet, type TaskSummary } from '@jujulego/tasks';\nimport { injectable } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { container, lazyInject } from '@/src/inversify.config.ts';\nimport { isCommandCtx } from '@/src/tasks/command-task.ts';\nimport { isScriptCtx } from '@/src/tasks/script-task.ts';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config.ts';\nimport { type AwaitableGenerator } from '@/src/types.ts';\nimport List from '@/src/ui/list.tsx';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner.tsx';\nimport { ExitException } from '@/src/utils/exit.ts';\nimport { printJson } from '@/src/utils/json.ts';\n\nimport { InkCommand } from './ink-command.tsx';\n\n// Types\nexport interface ITaskCommandArgs {\n plan: boolean;\n 'plan-mode': 'json' | 'list';\n}\n\n// Class\n@injectable()\nexport abstract class TaskCommand<A = unknown> extends InkCommand<A> {\n // Attributes\n @lazyInject(TASK_MANAGER)\n readonly manager: TaskManager;\n\n // Methods\n abstract prepare(args: ArgumentsCamelCase<A>): AwaitableGenerator<Task>;\n\n protected addTaskOptions(parser: Argv): Argv<ITaskCommandArgs> {\n return parser\n .option('plan', {\n type: 'boolean',\n desc: 'Only prints tasks to be run',\n default: false,\n })\n .option('plan-mode', {\n type: 'string',\n desc: 'Plan output mode',\n choices: ['json', 'list'] as const,\n default: 'list' as const\n });\n }\n\n async* render(args: ArgumentsCamelCase<A & ITaskCommandArgs>) {\n // Prepare tasks\n const tasks = new TaskSet();\n\n for await (const tsk of this.prepare(args)) {\n tasks.add(tsk);\n }\n\n if (args.plan) {\n const plan: TaskSummary[] = Array.from(extractPlan(tasks));\n\n if (args.planMode === 'json') {\n printJson(plan);\n } else {\n const data = plan.map((tsk) => ({\n id: tsk.id.substring(0, 6),\n name: tsk.name,\n workspace: isCommandCtx(tsk.context) || isScriptCtx(tsk.context) ? tsk.context.workspace.name : '',\n group: tsk.groupId?.substring(0, 6),\n 'depends on': tsk.dependenciesIds.map(id => id.substring(0, 6)).join(', ')\n }));\n\n yield <List items={data} headers/>;\n }\n } else if (tasks.tasks.length > 0) {\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Start tasks\n tasks.start(this.manager);\n\n const result = await waitFor$(tasks, 'finished');\n\n if (result.failed > 0) {\n throw new ExitException(1);\n }\n } else {\n const logger = container.get(Logger);\n logger.warning('No task found');\n }\n }\n}\n","import { Logger, withLabel } from '@jujulego/logger';\nimport { type Task } from '@jujulego/tasks';\nimport { inject, injectable, type interfaces as int } from 'inversify';\nimport yargs, { type Argv, type CommandModule } from 'yargs';\n\nimport { ContextService, type Context } from '@/src/commons/context.service.ts';\nimport { applyConfigOptions } from '@/src/config/config-options.ts';\nimport { CURRENT } from '@/src/constants.ts';\nimport { container, lazyInjectNamed } from '@/src/inversify.config.ts';\nimport { buildCommandModule, COMMAND, COMMAND_MODULE, getCommandOpts, type ICommand } from '@/src/modules/command.ts';\nimport { getModule } from '@/src/modules/module.ts';\nimport { PluginLoaderService } from '@/src/modules/plugin-loader.service.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { type Class } from '@/src/types.ts';\n\n// @ts-ignore: Outside of typescript's rootDir in build\nimport pkg from '../package.json';\n\n// Application\n@injectable()\nexport class JillApplication {\n // Attributes\n readonly container: int.Container;\n readonly parser: Argv;\n\n // Constructor\n constructor(\n @inject(ContextService)\n private readonly context: ContextService,\n @inject(PluginLoaderService)\n private readonly plugins: PluginLoaderService,\n @inject(Logger)\n private readonly logger: Logger,\n ) {\n // Create container\n this.container = container.createChild();\n\n // Create parser\n this.parser = yargs()\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(process.stdout.columns)\n .exitProcess(false);\n }\n\n // Methods\n private _prepareParser(commands: CommandModule[]): Argv {\n applyConfigOptions(this.parser);\n\n return this.parser\n .command(commands)\n .recommendCommands()\n .strict()\n .fail(false);\n }\n\n private async _loadPlugins(): Promise<void> {\n this.logger.child(withLabel('plugin')).verbose('Loading plugin <core>');\n\n const { CorePlugin } = await import('@/src/core.plugin.ts');\n this.container.load(getModule(CorePlugin, true));\n\n await this.plugins.loadPlugins(this.container);\n }\n\n async run(argv: string | readonly string[]): Promise<void> {\n this.context.reset({ application: this });\n await this._loadPlugins();\n\n // Parse command\n const commands = await this.container.getAllAsync(COMMAND_MODULE);\n\n await this._prepareParser(commands).parseAsync(argv);\n }\n\n async tasksOf(argv: string[], ctx: Omit<Context, 'application'> = {}): Promise<Task[]> {\n this.context.reset({ ...ctx, application: this });\n await this._loadPlugins();\n\n // Prepare commands\n const commands = await this.container.getAllAsync(COMMAND);\n\n return new Promise<Task[]>((resolve, reject) => {\n const modules: CommandModule[] = [];\n\n for (const cmd of commands) {\n const opts = getCommandOpts(cmd.constructor as Class<ICommand>);\n const mod = buildCommandModule(cmd, opts);\n\n mod.handler = async (args) => {\n if (cmd instanceof TaskCommand) {\n const tasks: Task[] = [];\n\n for await (const tsk of cmd.prepare(args)) {\n tasks.push(tsk);\n }\n\n resolve(tasks);\n } else {\n resolve([]);\n }\n };\n\n modules.push(mod);\n }\n\n // Parse command\n this._prepareParser(modules)\n .parseAsync(argv)\n .catch(reject);\n });\n }\n}\n\ncontainer.bind(JillApplication)\n .toSelf()\n .inTransientScope()\n .whenTargetIsDefault();\n\n// Lazy injection\nexport function LazyCurrentApplication() {\n return lazyInjectNamed(JillApplication, CURRENT);\n}\n\ncontainer.bind(JillApplication)\n .toDynamicValue(({ container }) => {\n const ctx = container.get(ContextService);\n const app = ctx.application;\n\n if (!app) {\n throw new Error('Cannot inject current application, it not yet defined');\n }\n\n return app;\n })\n .whenTargetNamed(CURRENT);\n"],"names":["TaskCommand","InkCommand","addTaskOptions","parser","option","type","desc","default","choices","render","args","tasks","TaskSet","tsk","prepare","add","plan","Array","from","extractPlan","planMode","printJson","data","map","id","substring","name","workspace","isCommandCtx","context","isScriptCtx","group","groupId","dependenciesIds","join","_jsx","List","items","headers","length","TaskManagerSpinner","manager","start","result","waitFor$","failed","ExitException","logger","container","get","Logger","warning","lazyInject","TASK_MANAGER","injectable","JillApplication","constructor","plugins","createChild","yargs","scriptName","completion","help","version","pkg","wrap","process","stdout","columns","exitProcess","_prepareParser","commands","applyConfigOptions","command","recommendCommands","strict","fail","_loadPlugins","child","withLabel","verbose","CorePlugin","load","getModule","loadPlugins","run","argv","reset","application","getAllAsync","COMMAND_MODULE","parseAsync","tasksOf","ctx","COMMAND","Promise","resolve","reject","modules","cmd","opts","getCommandOpts","mod","buildCommandModule","handler","push","catch","inject","ContextService","PluginLoaderService","bind","toSelf","inTransientScope","whenTargetIsDefault","toDynamicValue","app","Error","whenTargetNamed","CURRENT"],"mappings":"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"}
package/dist/main.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { Logger } from '@jujulego/logger';
2
2
  import { hideBin } from 'yargs/helpers';
3
- import { n as container, E as ExitException } from './ink-command-SIxVoU_e.js';
4
- import { J as JillApplication } from './jill.application-NaKSF97o.js';
3
+ import { n as container, E as ExitException } from './ink-command-OuyNSTxT.js';
4
+ import { J as JillApplication } from './jill.application-JCJSgP36.js';
5
+ import '@swc/helpers/_/_ts_decorate';
6
+ import '@swc/helpers/_/_ts_param';
5
7
  import 'inversify';
6
8
  import 'node:async_hooks';
7
9
  import '@jujulego/tasks';
@@ -33,11 +35,11 @@ import 'chalk-template';
33
35
  if (err instanceof ExitException) {
34
36
  process.exit(err.code);
35
37
  } else {
38
+ console.error(await app.parser.getHelp());
36
39
  if (err.message) {
37
40
  const logger = container.get(Logger);
38
- logger.error("Fatal error:", err);
41
+ logger.error(err.message);
39
42
  }
40
- console.error(await app.parser.getHelp());
41
43
  process.exit(1);
42
44
  }
43
45
  }
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import { Logger } from '@jujulego/logger';\nimport { hideBin } from 'yargs/helpers';\n\nimport '@/src/commons/logger.service.ts';\nimport { container } from '@/src/inversify.config.ts';\nimport { JillApplication } from '@/src/jill.application.ts';\nimport { ExitException } from '@/src/utils/exit.ts';\n\n// Bootstrap\n(async () => {\n const app = await container.getAsync(JillApplication);\n\n try {\n await app.run(hideBin(process.argv));\n } catch (err) {\n if (err instanceof ExitException) {\n process.exit(err.code);\n } else {\n if (err.message) {\n const logger = container.get(Logger);\n logger.error('Fatal error:', err);\n }\n\n console.error(await app.parser.getHelp());\n process.exit(1);\n }\n }\n})();\n"],"names":["app","container","getAsync","JillApplication","run","hideBin","process","argv","err","ExitException","exit","code","message","logger","get","Logger","error","console","parser","getHelp"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;AACC,CAAA,UAAA;AACC,IAAA,MAAMA,GAAM,GAAA,MAAMC,SAAUC,CAAAA,QAAQ,CAACC,eAAAA,CAAAA,CAAAA;IAErC,IAAI;AACF,QAAA,MAAMH,GAAII,CAAAA,GAAG,CAACC,OAAAA,CAAQC,QAAQC,IAAI,CAAA,CAAA,CAAA;AACpC,KAAA,CAAE,OAAOC,GAAK,EAAA;AACZ,QAAA,IAAIA,eAAeC,aAAe,EAAA;YAChCH,OAAQI,CAAAA,IAAI,CAACF,GAAAA,CAAIG,IAAI,CAAA,CAAA;SAChB,MAAA;YACL,IAAIH,GAAAA,CAAII,OAAO,EAAE;gBACf,MAAMC,MAAAA,GAASZ,SAAUa,CAAAA,GAAG,CAACC,MAAAA,CAAAA,CAAAA;gBAC7BF,MAAOG,CAAAA,KAAK,CAAC,cAAgBR,EAAAA,GAAAA,CAAAA,CAAAA;AAC/B,aAAA;AAEAS,YAAAA,OAAAA,CAAQD,KAAK,CAAC,MAAMhB,GAAIkB,CAAAA,MAAM,CAACC,OAAO,EAAA,CAAA,CAAA;AACtCb,YAAAA,OAAAA,CAAQI,IAAI,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA;AACF,CAAA,GAAA"}
1
+ {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import { Logger } from '@jujulego/logger';\nimport { hideBin } from 'yargs/helpers';\n\nimport '@/src/commons/logger.service.ts';\nimport { container } from '@/src/inversify.config.ts';\nimport { JillApplication } from '@/src/jill.application.ts';\nimport { ExitException } from '@/src/utils/exit.ts';\n\n// Bootstrap\n(async () => {\n const app = await container.getAsync(JillApplication);\n\n try {\n await app.run(hideBin(process.argv));\n } catch (err) {\n if (err instanceof ExitException) {\n process.exit(err.code);\n } else {\n console.error(await app.parser.getHelp());\n\n if (err.message) {\n const logger = container.get(Logger);\n logger.error(err.message);\n }\n\n process.exit(1);\n }\n }\n})();\n"],"names":["app","container","getAsync","JillApplication","run","hideBin","process","argv","err","ExitException","exit","code","console","error","parser","getHelp","message","logger","get","Logger"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;AACC,CAAA,UAAA;AACC,IAAA,MAAMA,GAAM,GAAA,MAAMC,SAAUC,CAAAA,QAAQ,CAACC,eAAAA,CAAAA,CAAAA;IAErC,IAAI;AACF,QAAA,MAAMH,GAAII,CAAAA,GAAG,CAACC,OAAAA,CAAQC,QAAQC,IAAI,CAAA,CAAA,CAAA;AACpC,KAAA,CAAE,OAAOC,GAAK,EAAA;AACZ,QAAA,IAAIA,eAAeC,aAAe,EAAA;YAChCH,OAAQI,CAAAA,IAAI,CAACF,GAAAA,CAAIG,IAAI,CAAA,CAAA;SAChB,MAAA;AACLC,YAAAA,OAAAA,CAAQC,KAAK,CAAC,MAAMb,GAAIc,CAAAA,MAAM,CAACC,OAAO,EAAA,CAAA,CAAA;YAEtC,IAAIP,GAAAA,CAAIQ,OAAO,EAAE;gBACf,MAAMC,MAAAA,GAAShB,SAAUiB,CAAAA,GAAG,CAACC,MAAAA,CAAAA,CAAAA;gBAC7BF,MAAOJ,CAAAA,KAAK,CAACL,GAAAA,CAAIQ,OAAO,CAAA,CAAA;AAC1B,aAAA;AAEAV,YAAAA,OAAAA,CAAQI,IAAI,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA;AACF,CAAA,GAAA"}
@@ -0,0 +1,4 @@
1
+ export declare class TaskExpressionError extends Error {
2
+ }
3
+ export declare class TaskSyntaxError extends Error {
4
+ }
@@ -12,12 +12,14 @@ export interface GroupNode {
12
12
  export interface TaskTree {
13
13
  roots: (TaskNode | GroupNode)[];
14
14
  }
15
- export declare class TaskExprService {
15
+ export declare class TaskExpressionService {
16
16
  private readonly _logger;
17
17
  static isTaskNode(node: TaskNode | GroupNode): node is TaskNode;
18
+ private static _sequenceOperatorWarn;
18
19
  constructor(_logger: Logger);
19
20
  private _lexer;
20
21
  private _nextNode;
21
22
  parse(expr: string): TaskTree;
23
+ extractScripts(node: TaskTree | TaskNode | GroupNode): Generator<string>;
22
24
  buildTask(node: TaskNode | GroupNode, workspace: Workspace, opts?: WorkspaceRunOptions): Promise<Task>;
23
25
  }