@jujulego/jill 2.2.0-alpha.1 → 2.2.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/554.js +2 -0
  2. package/dist/554.js.map +1 -0
  3. package/dist/719.js +9 -0
  4. package/dist/{434.js.LICENSE.txt → 719.js.LICENSE.txt} +0 -0
  5. package/dist/719.js.map +1 -0
  6. package/dist/ajv.config.d.ts +1 -1
  7. package/dist/commands/each.d.ts +5 -5
  8. package/dist/commands/group.d.ts +5 -5
  9. package/dist/commands/list.d.ts +3 -3
  10. package/dist/commands/run.d.ts +4 -5
  11. package/dist/commands/tree.d.ts +2 -2
  12. package/dist/commons/git.service.d.ts +1 -1
  13. package/dist/config/config-loader.d.ts +1 -1
  14. package/dist/config/config-options.d.ts +2 -2
  15. package/dist/config/types.d.ts +1 -1
  16. package/dist/config/utils.d.ts +2 -2
  17. package/dist/core.plugin.d.ts +2 -0
  18. package/dist/filters/affected.filter.d.ts +2 -2
  19. package/dist/filters/pipeline.d.ts +2 -2
  20. package/dist/filters/private.filter.d.ts +2 -2
  21. package/dist/filters/scripts.filter.d.ts +2 -2
  22. package/dist/index.d.ts +8 -6
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/ink.config.d.ts +2 -2
  26. package/dist/inversify.config.d.ts +0 -4
  27. package/dist/main.d.ts +1 -5
  28. package/dist/main.js +1 -1
  29. package/dist/main.js.map +1 -1
  30. package/dist/middlewares/load-project.d.ts +1 -1
  31. package/dist/middlewares/load-workspace.d.ts +2 -2
  32. package/dist/{bases → modules}/command.d.ts +5 -3
  33. package/dist/{bases → modules}/ink-command.d.ts +1 -1
  34. package/dist/{bases → modules}/middleware.d.ts +1 -1
  35. package/dist/modules/module.d.ts +7 -0
  36. package/dist/{plugins → modules}/plugin-loader.service.d.ts +1 -2
  37. package/dist/modules/plugin.d.ts +14 -0
  38. package/dist/modules/service.d.ts +4 -0
  39. package/dist/project/project.d.ts +1 -1
  40. package/dist/project/workspace.d.ts +3 -3
  41. package/dist/tasks/task-expr.service.d.ts +2 -2
  42. package/dist/tasks/task-manager.config.d.ts +1 -1
  43. package/dist/tsconfig.build.tsbuildinfo +1 -1
  44. package/dist/types.d.ts +5 -2
  45. package/dist/ui/layout.d.ts +1 -1
  46. package/dist/ui/task-manager-spinner.d.ts +1 -1
  47. package/dist/ui/task-name.d.ts +1 -1
  48. package/dist/ui/task-spinner.d.ts +1 -1
  49. package/dist/ui/workspace-tree.d.ts +2 -2
  50. package/dist/utils/streams.d.ts +1 -1
  51. package/package.json +16 -14
  52. package/dist/205.js +0 -2
  53. package/dist/205.js.map +0 -1
  54. package/dist/434.js +0 -9
  55. package/dist/434.js.map +0 -1
  56. package/dist/plugins/types.d.ts +0 -5
  57. package/dist/plugins/utils.d.ts +0 -3
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","mappings":"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","sources":["webpack://@jujulego/jill/./.yarn/cache/@jujulego-tasks-npm-1.1.3-91d9ff2a2d-9b0aefca52.zip/node_modules/@jujulego/tasks/dist/esm/task-set.js","webpack://@jujulego/jill/./src/commands/each.tsx","webpack://@jujulego/jill/./src/commands/group.tsx","webpack://@jujulego/jill/./src/commands/list.tsx","webpack://@jujulego/jill/./src/commands/run.tsx","webpack://@jujulego/jill/./src/commands/tree.tsx","webpack://@jujulego/jill/./src/main.ts","webpack://@jujulego/jill/./.yarn/cache/slugify-npm-1.6.5-6db25d7016-a955a1b600.zip/node_modules/slugify/slugify.js","webpack://@jujulego/jill/external node-commonjs \"assert\"","webpack://@jujulego/jill/external node-commonjs \"buffer\"","webpack://@jujulego/jill/external node-commonjs \"child_process\"","webpack://@jujulego/jill/external node-commonjs \"events\"","webpack://@jujulego/jill/external node-commonjs \"fs\"","webpack://@jujulego/jill/external node-commonjs \"http\"","webpack://@jujulego/jill/external node-commonjs \"https\"","webpack://@jujulego/jill/external node-commonjs \"module\"","webpack://@jujulego/jill/external node-commonjs \"node:child_process\"","webpack://@jujulego/jill/external node-commonjs \"node:crypto\"","webpack://@jujulego/jill/external node-commonjs \"node:fs/promises\"","webpack://@jujulego/jill/external node-commonjs \"node:os\"","webpack://@jujulego/jill/external node-commonjs \"node:path\"","webpack://@jujulego/jill/external node-commonjs \"os\"","webpack://@jujulego/jill/external node-commonjs \"path\"","webpack://@jujulego/jill/external node-commonjs \"stream\"","webpack://@jujulego/jill/external node-commonjs \"string_decoder\"","webpack://@jujulego/jill/external node-commonjs \"tty\"","webpack://@jujulego/jill/external node-commonjs \"url\"","webpack://@jujulego/jill/external node-commonjs \"util\"","webpack://@jujulego/jill/external node-commonjs \"zlib\""],"sourcesContent":["import { EventSource } from '@jujulego/event-tree';\nimport { assertIsTask } from './task';\n// Class\nexport class TaskSet extends EventSource {\n // Constructor\n constructor(manager){\n super();\n this.manager = manager;\n this._tasks = new Set();\n this._status = 'created';\n this._results = {\n success: 0,\n failed: 0\n };\n }\n // Methods\n _handleComplete(task, success) {\n this.emit('completed', task);\n // Trigger finished\n if (success) {\n ++this._results.success;\n } else {\n ++this._results.failed;\n }\n if (this._results.success + this._results.failed === this._tasks.size) {\n this._status = 'finished';\n this.emit('finished', this._results);\n }\n }\n add(task) {\n assertIsTask(task);\n if (this._status !== 'created') {\n throw Error(`Cannot add a task to a ${this._status} task set`);\n }\n if (this._tasks.has(task)) {\n return;\n }\n // Listen to task's status\n task.subscribe('status', ({ status })=>{\n if (status === 'running') {\n this.emit('started', task);\n } else if (status === 'done' || status === 'failed') {\n this._handleComplete(task, status === 'done');\n }\n });\n // Add task\n this._tasks.add(task);\n }\n start() {\n if (this._status !== 'created') {\n throw Error(`Cannot start a ${this._status} task set`);\n }\n if (this._tasks.size === 0) {\n this._status = 'finished';\n this.emit('finished', this._results);\n } else {\n // Update status\n this._status = 'started';\n // Add tasks to task manager\n for (const t of this._tasks){\n this.manager.add(t);\n }\n }\n }\n // Properties\n get status() {\n return this._status;\n }\n get tasks() {\n return Array.from(this._tasks.values());\n }\n get results() {\n return this._results;\n }\n}\n\n//# sourceMappingURL=task-set.js.map\n","import { waitForEvent } from '@jujulego/event-tree';\nimport { TaskManager, TaskSet } from '@jujulego/tasks';\nimport { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/bases/command';\nimport { InkCommand } from '@/src/bases/ink-command';\nimport { SpinnerService } from '@/src/commons/spinner.service';\nimport { AffectedFilter } from '@/src/filters/affected.filter';\nimport { Pipeline } from '@/src/filters/pipeline';\nimport { PrivateFilter } from '@/src/filters/private.filter';\nimport { ScriptsFilter } from '@/src/filters/scripts.filter';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { lazyCurrentProject, Project } from '@/src/project/project';\nimport { type WorkspaceDepsMode } from '@/src/project/workspace';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner';\n\n// Types\nexport interface IEachCommandArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n\n // Filters\n private?: boolean;\n\n // Affected filter\n affected: string;\n 'affected-rev-fallback': string;\n 'affected-rev-sort'?: string;\n}\n\n\n// Command\n@Command({\n command: 'each <script>',\n describe: 'Run script on many workspaces',\n middlewares: [\n LoadProject\n ]\n})\nexport class EachCommand extends InkCommand<IEachCommandArgs> {\n // Lazy injections\n @lazyCurrentProject()\n readonly project: Project;\n\n // Constructor\n constructor(\n @inject(SpinnerService)\n private readonly spinner: SpinnerService,\n @inject(TASK_MANAGER)\n private readonly manager: TaskManager,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv): Argv<IEachCommandArgs> {\n return parser\n // Run options\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n\n // Filters\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Filters:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master. Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Filters:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Filters:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n });\n }\n\n async *render(args: ArgumentsCamelCase<IEachCommandArgs>) {\n try {\n this.spinner.spin('Loading workspaces ...');\n\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(new ScriptsFilter([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Extract arguments\n const rest = args._.map(arg => arg.toString());\n\n if (rest[0] === 'each') {\n rest.splice(0, 1);\n }\n\n // Create script tasks\n const tasks = new TaskSet(this.manager);\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n tasks.add(await wks.run(args.script, rest, {\n buildDeps: args.depsMode,\n }));\n }\n\n if (tasks.tasks.length === 0) {\n this.spinner.failed('No workspace found !');\n return process.exit(1);\n }\n\n this.spinner.stop();\n\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Start and wait for result\n tasks.start();\n\n const result = await waitForEvent(tasks, 'finished');\n\n if (result.failed > 0) {\n return process.exit(1);\n }\n } finally {\n this.spinner.stop();\n }\n }\n}\n","import { waitForEvent } from '@jujulego/event-tree';\nimport { TaskManager } from '@jujulego/tasks';\nimport { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/bases/command';\nimport { InkCommand } from '@/src/bases/ink-command';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LoadWorkspace } from '@/src/middlewares/load-workspace';\nimport { lazyCurrentWorkspace, Workspace, type WorkspaceDepsMode } from '@/src/project/workspace';\nimport { TaskExprService, type TaskTree } from '@/src/tasks/task-expr.service';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner';\n\n// Types\nexport interface IGroupCommandArgs {\n script: TaskTree;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\n@Command({\n command: 'group <script..>',\n describe: 'Run many scripts inside a workspace (experimental)',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class GroupCommand extends InkCommand<IGroupCommandArgs> {\n // Lazy injections\n @lazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Constructor\n constructor(\n @inject(TaskExprService)\n private readonly taskExpr: TaskExprService,\n @inject(TASK_MANAGER)\n private readonly manager: TaskManager,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv): Argv<IGroupCommandArgs> {\n return parser\n .positional('script', {\n demandOption: true,\n coerce: (expr: string[]) => {\n return this.taskExpr.parse(expr.join(' '));\n }\n })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n });\n }\n\n async *render(args: ArgumentsCamelCase<IGroupCommandArgs>) {\n // Run script in workspace\n const group = await this.taskExpr.buildTask(args.script.roots[0], this.workspace, {\n buildDeps: args.depsMode,\n });\n\n this.manager.add(group);\n\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Wait for result\n const result = await waitForEvent(group, 'completed');\n\n if (result.status === 'failed') {\n return process.exit(1);\n }\n }\n}\n","import chalk from 'chalk';\nimport path from 'node:path';\nimport slugify from 'slugify';\nimport { ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/bases/command';\nimport { InkCommand } from '@/src/bases/ink-command';\nimport { AffectedFilter } from '@/src/filters/affected.filter';\nimport { Pipeline } from '@/src/filters/pipeline';\nimport { PrivateFilter } from '@/src/filters/private.filter';\nimport { ScriptsFilter } from '@/src/filters/scripts.filter';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { lazyCurrentProject, Project } from '@/src/project/project';\nimport { Workspace } from '@/src/project/workspace';\nimport List from '@/src/ui/list';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\nexport interface IListCommandArgs {\n // Filters\n private?: boolean;\n 'with-script'?: string[];\n\n // Affected filter\n affected: string;\n 'affected-rev-fallback': string;\n 'affected-rev-sort'?: string;\n\n // Format\n attrs: Attribute[];\n headers?: boolean;\n long?: boolean;\n json?: boolean;\n}\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS = {\n name: wks => wks.name,\n version: (wks, json) => wks.manifest.version || (json ? undefined : chalk.grey('unset')),\n root: wks => wks.cwd,\n slug: wks => slugify(wks.name)\n} satisfies Record<Attribute, Extractor<string | undefined>>;\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json: boolean) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n}\n\n// Command\n@Command({\n command: 'list',\n aliases: ['ls'],\n describe: 'List workspace',\n middlewares: [\n LoadProject,\n ]\n})\nexport class ListCommand extends InkCommand<IListCommandArgs> {\n // Lazy injections\n @lazyCurrentProject()\n readonly project: Project;\n\n // Methods\n builder(parser: Argv): Argv<IListCommandArgs> {\n return parser\n // Filters\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Filters:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master. Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Filters:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Filters:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n\n // Format\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'] as const,\n default: [],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n });\n }\n\n async *render(args: ArgumentsCamelCase<IListCommandArgs>) {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(args.private));\n }\n\n if (args.withScript) {\n pipeline.add(new ScriptsFilter(args.withScript));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Load workspaces\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n workspaces.push(wks);\n }\n\n // Build data\n let attrs = args.attrs;\n\n if (attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n const data = workspaces.map(wks => buildExtractor(attrs)(wks, args.json || false));\n\n // Print list\n if (args.json) {\n if (process.stdout.isTTY) { // Pretty print for ttys\n console.log(JSON.stringify(data, null, 2));\n } else {\n process.stdout.write(JSON.stringify(data));\n }\n } else {\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) || '.';\n }\n }\n\n yield <List items={data} headers={args.headers ?? (attrs.length > 1)} />;\n }\n }\n}\n","import { waitForEvent } from '@jujulego/event-tree';\nimport { TaskManager } from '@jujulego/tasks';\nimport { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/bases/command';\nimport { InkCommand } from '@/src/bases/ink-command';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LoadWorkspace } from '@/src/middlewares/load-workspace';\nimport { lazyCurrentWorkspace, Workspace, type WorkspaceDepsMode } from '@/src/project/workspace';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner';\n\n// Types\nexport interface IRunCommandArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\n@Command({\n command: 'run <script>',\n describe: 'Run script inside workspace',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class RunCommand extends InkCommand<IRunCommandArgs> {\n // Lazy injections\n @lazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Constructor\n constructor(\n @inject(TASK_MANAGER)\n private readonly manager: TaskManager,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv) {\n return parser\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n });\n }\n\n async *render(args: ArgumentsCamelCase<IRunCommandArgs>) {\n // Extract arguments\n const rest = args._.map(arg => arg.toString());\n\n if (rest[0] === 'run') {\n rest.splice(0, 1);\n }\n\n // Run script in workspace\n const task = await this.workspace.run(args.script, rest, {\n buildDeps: args.depsMode,\n });\n this.manager.add(task);\n\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Handle result\n const result = await waitForEvent(task, 'completed');\n\n if (result.status === 'failed') {\n return process.exit(1);\n }\n }\n}\n","import { Command } from '@/src/bases/command';\nimport { InkCommand } from '@/src/bases/ink-command';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LoadWorkspace } from '@/src/middlewares/load-workspace';\nimport { lazyCurrentWorkspace, Workspace } from '@/src/project/workspace';\nimport WorkspaceTree from '@/src/ui/workspace-tree';\n\n// Command\n@Command({\n command: 'tree',\n describe: 'Print workspace dependency tree',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class TreeCommand extends InkCommand {\n // Lazy injections\n @lazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Methods\n *render() {\n yield <WorkspaceTree workspace={this.workspace} />;\n }\n}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { COMMAND } from '@/src/bases/command';\nimport { Logger } from '@/src/commons/logger.service';\nimport { applyConfigOptions } from '@/src/config/config-options';\nimport { container } from '@/src/inversify.config';\nimport { PluginLoaderService } from '@/src/plugins/plugin-loader.service';\n\nimport '@/src/commands/each';\nimport '@/src/commands/group';\nimport '@/src/commands/list';\nimport '@/src/commands/run';\nimport '@/src/commands/tree';\n\n// @ts-ignore: Outside of typescript's rootDir in build\nimport pkg from '../package.json';\n\n// Bootstrap\n(async () => {\n try {\n // Setup yargs\n const parser = yargs(hideBin(process.argv))\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\n // Options (for doc)\n applyConfigOptions(parser);\n\n // Load plugins\n const pluginLoader = await container.getAsync(PluginLoaderService);\n await pluginLoader.loadPlugins(parser);\n\n // Commands\n await parser\n .command(await container.getAllAsync(COMMAND) as any)\n .demandCommand()\n .recommendCommands()\n .strict()\n .parse();\n } catch (err) {\n const logger = container.get(Logger);\n logger.error(err);\n\n process.exit(1);\n }\n})();\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch] || charMap[ch] || ch;\n if (appendChar === replacement) {\n appendChar = ' ';\n }\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","module.exports = require(\"assert\");","module.exports = require(\"buffer\");","module.exports = require(\"child_process\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"https\");","module.exports = require(\"module\");","module.exports = require(\"node:child_process\");","module.exports = require(\"node:crypto\");","module.exports = require(\"node:fs/promises\");","module.exports = require(\"node:os\");","module.exports = require(\"node:path\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"stream\");","module.exports = require(\"string_decoder\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"zlib\");"],"names":["TaskSet","constructor","manager","super","this","_tasks","Set","_status","_results","success","failed","_handleComplete","task","emit","size","add","Error","has","subscribe","status","start","t","tasks","Array","from","values","results","EachCommand","InkCommand","spinner","builder","parser","positional","type","demandOption","option","choice","default","desc","group","alias","coerce","rev","async","args","spin","pipeline","Pipeline","ScriptsFilter","script","undefined","private","PrivateFilter","affected","AffectedFilter","affectedRevFallback","affectedRevSort","rest","_","map","arg","toString","splice","wks","filter","project","workspaces","run","buildDeps","depsMode","length","process","exit","stop","TaskManagerSpinner","waitForEvent","lazyCurrentProject","Command","command","describe","middlewares","LoadProject","inject","SpinnerService","TASK_MANAGER","GroupCommand","taskExpr","expr","parse","join","buildTask","roots","workspace","lazyCurrentWorkspace","LoadWorkspace","TaskExprService","LONG_ATTRIBUTES","JSON_ATTRIBUTES","DEFAULT_ATTRIBUTES","EXTRACTORS","name","version","json","manifest","chalk","root","cwd","slug","slugify","ListCommand","string","choices","withScript","push","attrs","long","data","attr","buildExtractor","stdout","isTTY","console","log","JSON","stringify","write","d","path","List","items","headers","aliases","RunCommand","TreeCommand","WorkspaceTree","yargs","hideBin","argv","scriptName","completion","help","pkg","wrap","columns","applyConfigOptions","pluginLoader","container","PluginLoaderService","loadPlugins","COMMAND","demandCommand","recommendCommands","strict","err","Logger","error","factory","charMap","locales","replace","options","locale","replacement","trim","normalize","split","reduce","result","ch","appendChar","remove","lower","toLowerCase","extend","customMap","Object","assign","module","exports","require"],"sourceRoot":""}
1
+ {"version":3,"file":"main.js","mappings":"qLAGO,MAAMA,UAAgB,IAEzBC,YAAYC,GACRC,QACAC,KAAKF,QAAUA,EACfE,KAAKC,OAAS,IAAIC,IAClBF,KAAKG,QAAU,UACfH,KAAKI,SAAW,CACZC,QAAS,EACTC,OAAQ,EAEhB,CAEAC,gBAAgBC,EAAMH,GAClBL,KAAKS,KAAK,YAAaD,GAEnBH,IACEL,KAAKI,SAASC,UAEdL,KAAKI,SAASE,OAEhBN,KAAKI,SAASC,QAAUL,KAAKI,SAASE,SAAWN,KAAKC,OAAOS,OAC7DV,KAAKG,QAAU,WACfH,KAAKS,KAAK,WAAYT,KAAKI,UAEnC,CACAO,IAAIH,GAEA,IADA,OAAaA,GACQ,YAAjBR,KAAKG,QACL,MAAMS,MAAM,0BAA0BZ,KAAKG,oBAE3CH,KAAKC,OAAOY,IAAIL,KAIpBA,EAAKM,UAAU,UAAU,EAAGC,aACT,YAAXA,EACAf,KAAKS,KAAK,UAAWD,GACH,SAAXO,GAAgC,WAAXA,GAC5Bf,KAAKO,gBAAgBC,EAAiB,SAAXO,EAC/B,IAGJf,KAAKC,OAAOU,IAAIH,GACpB,CACAQ,QACI,GAAqB,YAAjBhB,KAAKG,QACL,MAAMS,MAAM,kBAAkBZ,KAAKG,oBAEvC,GAAyB,IAArBH,KAAKC,OAAOS,KACZV,KAAKG,QAAU,WACfH,KAAKS,KAAK,WAAYT,KAAKI,cACxB,CAEHJ,KAAKG,QAAU,UAEf,IAAK,MAAMc,KAAKjB,KAAKC,OACjBD,KAAKF,QAAQa,IAAIM,EAEzB,CACJ,CAEIF,aACA,OAAOf,KAAKG,OAChB,CACIe,YACA,OAAOC,MAAMC,KAAKpB,KAAKC,OAAOoB,SAClC,CACIC,cACA,OAAOtB,KAAKI,QAChB,E,sICzEJ,oB,kTA0CO,IAAMmB,EAAN,cAA0BC,EAAAA,EAS/B3B,YAEmB4B,GAEjB1B,Q,aAFiB0B,CAGnB,CAGAC,QAAQC,GACN,OAAOA,EAEJC,WAAW,SAAU,CAAEC,KAAM,SAAUC,cAAc,IACrDC,OAAO,YAAa,CACnBC,OAAQ,CAAC,MAAO,OAAQ,QACxBC,QAAS,MACTC,KAAM,qHAOPH,OAAO,UAAW,CACjBF,KAAM,UACNM,MAAO,WACPD,KAAM,kCAEPH,OAAO,WAAY,CAClBK,MAAO,IACPP,KAAM,SACNQ,OAASC,GAAgB,KAARA,EAAa,SAAWA,EACzCH,MAAO,WACPD,KAAM,wJAEPH,OAAO,oBAAqB,CAC3BF,KAAM,SACNM,MAAO,WACPD,KAAM,iDAEPH,OAAO,wBAAyB,CAC/BF,KAAM,SACNI,QAAS,SACTE,MAAO,WACPD,KAAM,6EAEZ,CAEAK,aAAcC,GACZ,IACExC,KAAKyB,QAAQgB,KAAK,0BAGlB,MAAMC,EAAW,IAAIC,EAAAA,EACrBD,EAAS/B,IAAI,IAAIiC,EAAAA,EAAc,CAACJ,EAAKK,eAEhBC,IAAjBN,EAAKO,SACPL,EAAS/B,IAAI,IAAIqC,EAAAA,EAAcR,EAAKO,eAGhBD,IAAlBN,EAAKS,UACPP,EAAS/B,IAAI,IAAIuC,EAAAA,EACfV,EAAKS,SACLT,EAAKW,oBACLX,EAAKY,kBAKT,MAAMC,EAAOb,EAAKc,EAAEC,KAAIC,GAAOA,EAAIC,aAEnB,SAAZJ,EAAK,IACPA,EAAKK,OAAO,EAAG,GAIjB,MAAMxC,EAAQ,IAAItB,EAAQI,KAAKF,SAE/B,UAAW,MAAM6D,KAAOjB,EAASkB,OAAO5D,KAAK6D,QAAQC,cACnD5C,EAAMP,UAAUgD,EAAII,IAAIvB,EAAKK,OAAQQ,EAAM,CACzCW,UAAWxB,EAAKyB,YAIpB,GAA2B,IAAvB/C,EAAMA,MAAMgD,OAEd,OADAlE,KAAKyB,QAAQnB,OAAO,wBACb6D,QAAQC,KAAK,GAatB,GAVApE,KAAKyB,QAAQ4C,aAGP,SAACC,EAAAA,EAAkBA,CAACxE,QAASE,KAAKF,UAGxCoB,EAAMF,eAEeuD,EAAAA,EAAAA,IAAarD,EAAO,aAE9BZ,OAAS,EAClB,OAAO6D,QAAQC,KAAK,EAIxB,CAFE,QACApE,KAAKyB,QAAQ4C,MACf,CACF,G,YA/GCG,EAAAA,EAAAA,MAFUjD,EAAAA,UAAAA,eAAAA,G,IAKVkD,EAAAA,EAAAA,IAAWC,EAAAA,IALDnD,EAAAA,UAAAA,eAAAA,GAAAA,EAAAA,EAAAA,EAPZoD,EAAAA,EAAAA,IAAQ,CACPC,QAAS,gBACTC,SAAU,gCACVC,YAAa,CACXC,EAAAA,M,EAaCC,E,GAAAA,EAAAA,EAAAA,GAAOC,EAAAA,G,0BAVC1D,G,oCC1Cb,oB,kTA8BO,IAAM2D,EAAN,cAA2B1D,EAAAA,EAShC3B,YAEmBsF,GAEjBpF,Q,cAFiBoF,CAGnB,CAGAzD,QAAQC,GACN,OAAOA,EACJC,WAAW,SAAU,CACpBE,cAAc,EACdO,OAAS+C,GACApF,KAAKmF,SAASE,MAAMD,EAAKE,KAAK,QAGxCvD,OAAO,YAAa,CACnBC,OAAQ,CAAC,MAAO,OAAQ,QACxBC,QAAS,MACTC,KAAM,oHAKZ,CAEAK,aAAcC,GAEZ,MAAML,QAAcnC,KAAKmF,SAASI,UAAU/C,EAAKK,OAAO2C,MAAM,GAAIxF,KAAKyF,UAAW,CAChFzB,UAAWxB,EAAKyB,WAWlB,GARAjE,KAAKF,QAAQa,IAAIwB,SAGX,SAACmC,EAAAA,EAAkBA,CAACxE,QAASE,KAAKF,UAKlB,kBAFDyE,EAAAA,EAAAA,IAAapC,EAAO,cAE9BpB,OACT,OAAOoD,QAAQC,KAAK,EAExB,G,IAlDCsB,EAAAA,EAAAA,MAFUR,EAAAA,UAAAA,iBAAAA,G,IAKVT,EAAAA,EAAAA,IAAWC,EAAAA,IALDQ,EAAAA,UAAAA,eAAAA,GAAAA,EAAAA,EAAAA,EARZP,EAAAA,EAAAA,IAAQ,CACPC,QAAS,mBACTC,SAAU,qDACVC,YAAa,CACXC,EAAAA,EACAY,EAAAA,K,6CAaCX,CAAAA,GAAAA,EAAAA,EAAAA,GAAOY,EAAAA,KAVCV,G,8DC9Bb,oB,kTAwCA,MAAMW,EAA+B,CAAC,OAAQ,UAAW,QACnDC,EAA+B,CAAC,OAAQ,UAAW,OAAQ,QAC3DC,EAAkC,CAAC,QAEnCC,EAAa,CACjBC,KAAMtC,GAAOA,EAAIsC,KACjBC,QAAS,CAACvC,EAAKwC,IAASxC,EAAIyC,SAASF,UAAYC,OAAOrD,EAAYuD,EAAAA,GAAAA,KAAW,UAC/EC,KAAM3C,GAAOA,EAAI4C,IACjBC,KAAM7C,GAAO8C,IAAQ9C,EAAIsC,OAyBpB,IAAMS,EAAN,cAA0BlF,EAAAA,EAM/BE,QAAQC,GACN,OAAOA,EAEJI,OAAO,UAAW,CACjBF,KAAM,UACNM,MAAO,WACPD,KAAM,kCAEPH,OAAO,cAAe,CACrBF,KAAM,QACN8E,QAAQ,EACRxE,MAAO,WACPD,KAAM,kDAEPH,OAAO,WAAY,CAClBK,MAAO,IACPP,KAAM,SACNQ,OAASC,GAAgB,KAARA,EAAa,SAAWA,EACzCH,MAAO,WACPD,KAAM,wJAEPH,OAAO,oBAAqB,CAC3BF,KAAM,SACNM,MAAO,WACPD,KAAM,iDAEPH,OAAO,wBAAyB,CAC/BF,KAAM,SACNI,QAAS,SACTE,MAAO,WACPD,KAAM,8EAIPH,OAAO,QAAS,CACfF,KAAM,QACN+E,QAAS,CAAC,OAAQ,UAAW,OAAQ,QACrC3E,QAAS,GACTE,MAAO,UACPD,KAAM,8BAEPH,OAAO,UAAW,CACjBF,KAAM,UACNM,MAAO,UACPD,KAAM,2BAEPH,OAAO,OAAQ,CACdK,MAAO,IACPP,KAAM,UACNM,MAAO,UACPD,KAAM,oDAEPH,OAAO,OAAQ,CACdF,KAAM,UACNM,MAAO,UACPD,KAAM,+BAEZ,CAEAK,aAAcC,GAEZ,MAAME,EAAW,IAAIC,EAAAA,OAEAG,IAAjBN,EAAKO,SACPL,EAAS/B,IAAI,IAAIqC,EAAAA,EAAcR,EAAKO,UAGlCP,EAAKqE,YACPnE,EAAS/B,IAAI,IAAIiC,EAAAA,EAAcJ,EAAKqE,kBAGhB/D,IAAlBN,EAAKS,UACPP,EAAS/B,IAAI,IAAIuC,EAAAA,EACfV,EAAKS,SACLT,EAAKW,oBACLX,EAAKY,kBAKT,MAAMU,EAA0B,GAEhC,UAAW,MAAMH,KAAOjB,EAASkB,OAAO5D,KAAK6D,QAAQC,cACnDA,EAAWgD,KAAKnD,GAIlB,IAAIoD,EAAQvE,EAAKuE,MAEI,IAAjBA,EAAM7C,SAEN6C,EADEvE,EAAKwE,KACCnB,EACCrD,EAAK2D,KACNL,EAEAC,GAIZ,MAAMkB,EAAOnD,EAAWP,KAAII,GA9HhC,SAAwBoD,GACtB,MAAO,CAACpD,EAAKwC,KACX,MAAMc,EAAa,CAAC,EAEpB,IAAK,MAAMC,KAAQH,EACjBE,EAAKC,GAAQlB,EAAWkB,GAAMvD,EAAKwC,GAGrC,OAAOc,CAAI,CAEf,CAoHuCE,CAAeJ,EAAfI,CAAsBxD,EAAKnB,EAAK2D,OAAQ,KAG3E,GAAI3D,EAAK2D,KACHhC,QAAQiD,OAAOC,MACjBC,QAAQC,IAAIC,KAAKC,UAAUR,EAAM,KAAM,IAEvC9C,QAAQiD,OAAOM,MAAMF,KAAKC,UAAUR,QAEjC,CACL,IAAK,MAAMU,KAAKV,EACVU,EAAErB,OACJqB,EAAErB,KAAOsB,IAAAA,SAAczD,QAAQoC,MAAOoB,EAAErB,OAAS,WAI/C,SAACuB,EAAAA,EAAIA,CAACC,MAAOb,EAAMc,QAASvF,EAAKuF,SAAYhB,EAAM7C,OAAS,GACpE,CACF,G,IAzHCM,EAAAA,EAAAA,MAFUkC,EAAAA,UAAAA,eAAAA,GAAAA,EAAAA,EAAAA,EARZ/B,EAAAA,EAAAA,IAAQ,CACPC,QAAS,OACToD,QAAS,CAAC,MACVnD,SAAU,iBACVC,YAAa,CACXC,EAAAA,MAGS2B,GCzEb,wB,kTA6BO,IAAMuB,EAAN,cAAyBzG,EAAAA,EAS9BE,QAAQC,GACN,OAAOA,EACJC,WAAW,SAAU,CAAEC,KAAM,SAAUC,cAAc,IACrDC,OAAO,YAAa,CACnBC,OAAQ,CAAC,MAAO,OAAQ,QACxBC,QAAS,MACTC,KAAM,oHAKZ,CAEAK,aAAcC,GAEZ,MAAMa,EAAOb,EAAKc,EAAEC,KAAIC,GAAOA,EAAIC,aAEnB,QAAZJ,EAAK,IACPA,EAAKK,OAAO,EAAG,GAIjB,MAAMlD,QAAaR,KAAKyF,UAAU1B,IAAIvB,EAAKK,OAAQQ,EAAM,CACvDW,UAAWxB,EAAKyB,WAUlB,GARAjE,KAAKF,QAAQa,IAAIH,SAGX,SAAC8D,EAAAA,EAAkBA,CAACxE,QAASE,KAAKF,UAKlB,kBAFDyE,EAAAA,EAAAA,IAAa/D,EAAM,cAE7BO,OACT,OAAOoD,QAAQC,KAAK,EAExB,G,IA3CCsB,EAAAA,EAAAA,MAFUuC,EAAAA,UAAAA,iBAAAA,G,IAKVxD,EAAAA,EAAAA,IAAWC,EAAAA,IALDuD,EAAAA,UAAAA,eAAAA,GAAAA,EAAAA,EAAAA,EARZtD,EAAAA,EAAAA,IAAQ,CACPC,QAAS,eACTC,SAAU,8BACVC,YAAa,CACXC,EAAAA,EACAY,EAAAA,MAGSsC,G,eC7Bb,oB,kTAgBO,IAAMC,EAAN,cAA0B1G,EAAAA,EAM/B,gBACQ,SAAC2G,EAAAA,EAAaA,CAAC1C,UAAWzF,KAAKyF,WACvC,G,IANCC,EAAAA,EAAAA,MAFUwC,EAAAA,UAAAA,iBAAAA,GAAAA,EAAAA,EAAAA,EARZvD,EAAAA,EAAAA,IAAQ,CACPC,QAAS,OACTC,SAAU,kCACVC,YAAa,CACXC,EAAAA,EACAY,EAAAA,MAGSuC,G,eCEN,IAAME,EAAN,QAAMA,EAlBb,kB,iTAkBaA,CAAAA,EAVZC,EAAAA,EAAAA,GAAO,CACNpC,KAAM,OACNqC,SAAU,CACR/G,EACA2D,EACAwB,EACAuB,EACAC,MAGSE,G,yECHZ,WACC,IAEE,MAAMzG,GAAS4G,EAAAA,EAAAA,IAAMC,EAAAA,EAAAA,IAAQrE,QAAQsE,OAClCC,WAAW,QACXC,WAAW,aAAc,mCACzBC,KAAK,OAAQ,2BACb1C,QAAQ,UAAW,eAAgB2C,GAAAA,IACnCC,KAAK3E,QAAQiD,OAAO2B,UAGvBC,EAAAA,EAAAA,GAAmBrH,GAGnBsH,EAAAA,GAAAA,MAAeC,EAAAA,EAAAA,IAAUd,GAAY,IAErC,MAAMe,QAAqBF,EAAAA,GAAAA,SAAmBG,GAAAA,SACxCD,EAAaE,oBAGb1H,EACHiD,cAAcqE,EAAAA,GAAAA,YAAsBK,EAAAA,KACpCC,gBACAC,oBACAC,SACApE,OAML,CALE,MAAOqE,GACQT,EAAAA,GAAAA,IAAcU,EAAAA,GACtBC,MAAMF,GAEbvF,QAAQC,KAAK,EACf,CACD,EAhCA,E,oBCdC,IAAsByF,IAYL,WACjB,IAAIC,EAAUtC,KAAKnC,MAAM,k2KACrB0E,EAAUvC,KAAKnC,MAAM,wmCAEzB,SAAS2E,EAASrD,EAAQsD,GACxB,GAAsB,iBAAXtD,EACT,MAAM,IAAI/F,MAAM,qCAOlB,IAAIsJ,EAASH,GAJbE,EAA8B,iBAAZA,EACd,CAACE,YAAaF,GACdA,GAAW,CAAC,GAEaC,SAAW,CAAC,EAErCC,OAAsCrH,IAAxBmH,EAAQE,YAA4B,IAAMF,EAAQE,YAEhEC,OAAwBtH,IAAjBmH,EAAQG,MAA4BH,EAAQG,KAEnD5D,EAAOG,EAAO0D,YAAYC,MAAM,IAEjCC,QAAO,SAAUC,EAAQC,GACxB,IAAIC,EAAaR,EAAOO,IAAOX,EAAQW,IAAOA,EAI9C,OAHIC,IAAeP,IACjBO,EAAa,KAERF,EAASE,EAEbV,QAAQC,EAAQU,QAAU,2BAA4B,GAC3D,GAAG,IAkBL,OAhBIV,EAAQR,SACVjD,EAAOA,EAAKwD,QAAQ,kBAAmB,KAGrCI,IACF5D,EAAOA,EAAK4D,QAKd5D,EAAOA,EAAKwD,QAAQ,OAAQG,GAExBF,EAAQW,QACVpE,EAAOA,EAAKqE,eAGPrE,CACT,CAMA,OAJAwD,EAAQc,OAAS,SAAUC,GACzBC,OAAOC,OAAOnB,EAASiB,EACzB,EAEOf,CACT,EAjEIkB,EAAOC,QAAUtB,IACjBqB,EAAOC,QAAP,QAA4BtB,G,yBCJhCqB,EAAOC,QAAUC,QAAQ,S,yBCAzBF,EAAOC,QAAUC,QAAQ,S,yBCAzBF,EAAOC,QAAUC,QAAQ,gB,yBCAzBF,EAAOC,QAAUC,QAAQ,S,yBCAzBF,EAAOC,QAAUC,QAAQ,K,yBCAzBF,EAAOC,QAAUC,QAAQ,O,yBCAzBF,EAAOC,QAAUC,QAAQ,Q,yBCAzBF,EAAOC,QAAUC,QAAQ,S,yBCAzBF,EAAOC,QAAUC,QAAQ,qB,wBCAzBF,EAAOC,QAAUC,QAAQ,c,yBCAzBF,EAAOC,QAAUC,QAAQ,mB,yBCAzBF,EAAOC,QAAUC,QAAQ,U,yBCAzBF,EAAOC,QAAUC,QAAQ,Y,yBCAzBF,EAAOC,QAAUC,QAAQ,e,yBCAzBF,EAAOC,QAAUC,QAAQ,W,yBCAzBF,EAAOC,QAAUC,QAAQ,K,yBCAzBF,EAAOC,QAAUC,QAAQ,O,yBCAzBF,EAAOC,QAAUC,QAAQ,S,yBCAzBF,EAAOC,QAAUC,QAAQ,iB,yBCAzBF,EAAOC,QAAUC,QAAQ,M,yBCAzBF,EAAOC,QAAUC,QAAQ,M,yBCAzBF,EAAOC,QAAUC,QAAQ,O,yBCAzBF,EAAOC,QAAUC,QAAQ,O","sources":["webpack://@jujulego/jill/./.yarn/cache/@jujulego-tasks-npm-1.1.4-b57b15e6c8-bacbaa089f.zip/node_modules/@jujulego/tasks/dist/esm/task-set.js","webpack://@jujulego/jill/./src/commands/each.tsx","webpack://@jujulego/jill/./src/commands/group.tsx","webpack://@jujulego/jill/./src/commands/list.tsx","webpack://@jujulego/jill/./src/commands/run.tsx","webpack://@jujulego/jill/./src/commands/tree.tsx","webpack://@jujulego/jill/./src/core.plugin.ts","webpack://@jujulego/jill/./src/main.ts","webpack://@jujulego/jill/./.yarn/cache/slugify-npm-1.6.5-6db25d7016-a955a1b600.zip/node_modules/slugify/slugify.js","webpack://@jujulego/jill/external node-commonjs \"assert\"","webpack://@jujulego/jill/external node-commonjs \"buffer\"","webpack://@jujulego/jill/external node-commonjs \"child_process\"","webpack://@jujulego/jill/external node-commonjs \"events\"","webpack://@jujulego/jill/external node-commonjs \"fs\"","webpack://@jujulego/jill/external node-commonjs \"http\"","webpack://@jujulego/jill/external node-commonjs \"https\"","webpack://@jujulego/jill/external node-commonjs \"module\"","webpack://@jujulego/jill/external node-commonjs \"node:child_process\"","webpack://@jujulego/jill/external node-commonjs \"node:crypto\"","webpack://@jujulego/jill/external node-commonjs \"node:fs/promises\"","webpack://@jujulego/jill/external node-commonjs \"node:os\"","webpack://@jujulego/jill/external node-commonjs \"node:path\"","webpack://@jujulego/jill/external node-commonjs \"node:process\"","webpack://@jujulego/jill/external node-commonjs \"node:tty\"","webpack://@jujulego/jill/external node-commonjs \"os\"","webpack://@jujulego/jill/external node-commonjs \"path\"","webpack://@jujulego/jill/external node-commonjs \"stream\"","webpack://@jujulego/jill/external node-commonjs \"string_decoder\"","webpack://@jujulego/jill/external node-commonjs \"tty\"","webpack://@jujulego/jill/external node-commonjs \"url\"","webpack://@jujulego/jill/external node-commonjs \"util\"","webpack://@jujulego/jill/external node-commonjs \"zlib\""],"sourcesContent":["import { EventSource } from '@jujulego/event-tree';\nimport { assertIsTask } from './task';\n// Class\nexport class TaskSet extends EventSource {\n // Constructor\n constructor(manager){\n super();\n this.manager = manager;\n this._tasks = new Set();\n this._status = 'created';\n this._results = {\n success: 0,\n failed: 0\n };\n }\n // Methods\n _handleComplete(task, success) {\n this.emit('completed', task);\n // Trigger finished\n if (success) {\n ++this._results.success;\n } else {\n ++this._results.failed;\n }\n if (this._results.success + this._results.failed === this._tasks.size) {\n this._status = 'finished';\n this.emit('finished', this._results);\n }\n }\n add(task) {\n assertIsTask(task);\n if (this._status !== 'created') {\n throw Error(`Cannot add a task to a ${this._status} task set`);\n }\n if (this._tasks.has(task)) {\n return;\n }\n // Listen to task's status\n task.subscribe('status', ({ status })=>{\n if (status === 'running') {\n this.emit('started', task);\n } else if (status === 'done' || status === 'failed') {\n this._handleComplete(task, status === 'done');\n }\n });\n // Add task\n this._tasks.add(task);\n }\n start() {\n if (this._status !== 'created') {\n throw Error(`Cannot start a ${this._status} task set`);\n }\n if (this._tasks.size === 0) {\n this._status = 'finished';\n this.emit('finished', this._results);\n } else {\n // Update status\n this._status = 'started';\n // Add tasks to task manager\n for (const t of this._tasks){\n this.manager.add(t);\n }\n }\n }\n // Properties\n get status() {\n return this._status;\n }\n get tasks() {\n return Array.from(this._tasks.values());\n }\n get results() {\n return this._results;\n }\n}\n\n//# sourceMappingURL=task-set.js.map\n","import { waitForEvent } from '@jujulego/event-tree';\nimport { type TaskManager, TaskSet } from '@jujulego/tasks';\nimport { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/modules/command';\nimport { InkCommand } from '@/src/modules/ink-command';\nimport { lazyInject } from '@/src/inversify.config';\nimport { SpinnerService } from '@/src/commons/spinner.service';\nimport { AffectedFilter } from '@/src/filters/affected.filter';\nimport { Pipeline } from '@/src/filters/pipeline';\nimport { PrivateFilter } from '@/src/filters/private.filter';\nimport { ScriptsFilter } from '@/src/filters/scripts.filter';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LazyCurrentProject, type Project } from '@/src/project/project';\nimport { type WorkspaceDepsMode } from '@/src/project/workspace';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner';\n\n// Types\nexport interface IEachCommandArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n\n // Filters\n private?: boolean;\n\n // Affected filter\n affected: string;\n 'affected-rev-fallback': string;\n 'affected-rev-sort'?: string;\n}\n\n\n// Command\n@Command({\n command: 'each <script>',\n describe: 'Run script on many workspaces',\n middlewares: [\n LoadProject\n ]\n})\nexport class EachCommand extends InkCommand<IEachCommandArgs> {\n // Lazy injections\n @LazyCurrentProject()\n readonly project: Project;\n\n @lazyInject(TASK_MANAGER)\n readonly manager: TaskManager;\n\n // Constructor\n constructor(\n @inject(SpinnerService)\n private readonly spinner: SpinnerService,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv): Argv<IEachCommandArgs> {\n return parser\n // Run options\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n\n // Filters\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Filters:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master. Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Filters:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Filters:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n });\n }\n\n async *render(args: ArgumentsCamelCase<IEachCommandArgs>) {\n try {\n this.spinner.spin('Loading workspaces ...');\n\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(new ScriptsFilter([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Extract arguments\n const rest = args._.map(arg => arg.toString());\n\n if (rest[0] === 'each') {\n rest.splice(0, 1);\n }\n\n // Create script tasks\n const tasks = new TaskSet(this.manager);\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n tasks.add(await wks.run(args.script, rest, {\n buildDeps: args.depsMode,\n }));\n }\n\n if (tasks.tasks.length === 0) {\n this.spinner.failed('No workspace found !');\n return process.exit(1);\n }\n\n this.spinner.stop();\n\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Start and wait for result\n tasks.start();\n\n const result = await waitForEvent(tasks, 'finished');\n\n if (result.failed > 0) {\n return process.exit(1);\n }\n } finally {\n this.spinner.stop();\n }\n }\n}\n","import { waitForEvent } from '@jujulego/event-tree';\nimport { type TaskManager } from '@jujulego/tasks';\nimport { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/modules/command';\nimport { InkCommand } from '@/src/modules/ink-command';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LoadWorkspace } from '@/src/middlewares/load-workspace';\nimport { LazyCurrentWorkspace, type Workspace, type WorkspaceDepsMode } from '@/src/project/workspace';\nimport { TaskExprService, type TaskTree } from '@/src/tasks/task-expr.service';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner';\nimport { lazyInject } from '@/src/inversify.config';\n\n// Types\nexport interface IGroupCommandArgs {\n script: TaskTree;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\n@Command({\n command: 'group <script..>',\n describe: 'Run many scripts inside a workspace (experimental)',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class GroupCommand extends InkCommand<IGroupCommandArgs> {\n // Lazy injections\n @LazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n @lazyInject(TASK_MANAGER)\n readonly manager: TaskManager;\n\n // Constructor\n constructor(\n @inject(TaskExprService)\n private readonly taskExpr: TaskExprService,\n ) {\n super();\n }\n\n // Methods\n builder(parser: Argv): Argv<IGroupCommandArgs> {\n return parser\n .positional('script', {\n demandOption: true,\n coerce: (expr: string[]) => {\n return this.taskExpr.parse(expr.join(' '));\n }\n })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n });\n }\n\n async *render(args: ArgumentsCamelCase<IGroupCommandArgs>) {\n // Run script in workspace\n const group = await this.taskExpr.buildTask(args.script.roots[0], this.workspace, {\n buildDeps: args.depsMode,\n });\n\n this.manager.add(group);\n\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Wait for result\n const result = await waitForEvent(group, 'completed');\n\n if (result.status === 'failed') {\n return process.exit(1);\n }\n }\n}\n","import chalk from 'chalk';\nimport path from 'node:path';\nimport slugify from 'slugify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/modules/command';\nimport { InkCommand } from '@/src/modules/ink-command';\nimport { AffectedFilter } from '@/src/filters/affected.filter';\nimport { Pipeline } from '@/src/filters/pipeline';\nimport { PrivateFilter } from '@/src/filters/private.filter';\nimport { ScriptsFilter } from '@/src/filters/scripts.filter';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LazyCurrentProject, type Project } from '@/src/project/project';\nimport { type Workspace } from '@/src/project/workspace';\nimport List from '@/src/ui/list';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\nexport interface IListCommandArgs {\n // Filters\n private?: boolean;\n 'with-script'?: string[];\n\n // Affected filter\n affected: string;\n 'affected-rev-fallback': string;\n 'affected-rev-sort'?: string;\n\n // Format\n attrs: Attribute[];\n headers?: boolean;\n long?: boolean;\n json?: boolean;\n}\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS = {\n name: wks => wks.name,\n version: (wks, json) => wks.manifest.version || (json ? undefined : chalk.grey('unset')),\n root: wks => wks.cwd,\n slug: wks => slugify(wks.name)\n} satisfies Record<Attribute, Extractor<string | undefined>>;\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json: boolean) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n}\n\n// Command\n@Command({\n command: 'list',\n aliases: ['ls'],\n describe: 'List workspace',\n middlewares: [\n LoadProject,\n ]\n})\nexport class ListCommand extends InkCommand<IListCommandArgs> {\n // Lazy injections\n @LazyCurrentProject()\n readonly project: Project;\n\n // Methods\n builder(parser: Argv): Argv<IListCommandArgs> {\n return parser\n // Filters\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Filters:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master. Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Filters:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Filters:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n\n // Format\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'] as const,\n default: [],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n });\n }\n\n async *render(args: ArgumentsCamelCase<IListCommandArgs>) {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(args.private));\n }\n\n if (args.withScript) {\n pipeline.add(new ScriptsFilter(args.withScript));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Load workspaces\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(this.project.workspaces())) {\n workspaces.push(wks);\n }\n\n // Build data\n let attrs = args.attrs;\n\n if (attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n const data = workspaces.map(wks => buildExtractor(attrs)(wks, args.json || false));\n\n // Print list\n if (args.json) {\n if (process.stdout.isTTY) { // Pretty print for ttys\n console.log(JSON.stringify(data, null, 2));\n } else {\n process.stdout.write(JSON.stringify(data));\n }\n } else {\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) || '.';\n }\n }\n\n yield <List items={data} headers={args.headers ?? (attrs.length > 1)} />;\n }\n }\n}\n","import { waitForEvent } from '@jujulego/event-tree';\nimport { type TaskManager } from '@jujulego/tasks';\nimport { inject } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { Command } from '@/src/modules/command';\nimport { InkCommand } from '@/src/modules/ink-command';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LoadWorkspace } from '@/src/middlewares/load-workspace';\nimport { LazyCurrentWorkspace, type Workspace, type WorkspaceDepsMode } from '@/src/project/workspace';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config';\nimport TaskManagerSpinner from '@/src/ui/task-manager-spinner';\nimport { lazyInject } from '@/src/inversify.config';\n\n// Types\nexport interface IRunCommandArgs {\n script: string;\n 'deps-mode': WorkspaceDepsMode;\n}\n\n// Command\n@Command({\n command: 'run <script>',\n describe: 'Run script inside workspace',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class RunCommand extends InkCommand<IRunCommandArgs> {\n // Lazy injections\n @LazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n @lazyInject(TASK_MANAGER)\n readonly manager: TaskManager;\n\n // Methods\n builder(parser: Argv) {\n return parser\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as const,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n });\n }\n\n async *render(args: ArgumentsCamelCase<IRunCommandArgs>) {\n // Extract arguments\n const rest = args._.map(arg => arg.toString());\n\n if (rest[0] === 'run') {\n rest.splice(0, 1);\n }\n\n // Run script in workspace\n const task = await this.workspace.run(args.script, rest, {\n buildDeps: args.depsMode,\n });\n this.manager.add(task);\n\n // Render\n yield <TaskManagerSpinner manager={this.manager} />;\n\n // Handle result\n const result = await waitForEvent(task, 'completed');\n\n if (result.status === 'failed') {\n return process.exit(1);\n }\n }\n}\n","import { Command } from '@/src/modules/command';\nimport { InkCommand } from '@/src/modules/ink-command';\nimport { LoadProject } from '@/src/middlewares/load-project';\nimport { LoadWorkspace } from '@/src/middlewares/load-workspace';\nimport { LazyCurrentWorkspace, type Workspace } from '@/src/project/workspace';\nimport WorkspaceTree from '@/src/ui/workspace-tree';\n\n// Command\n@Command({\n command: 'tree',\n describe: 'Print workspace dependency tree',\n middlewares: [\n LoadProject,\n LoadWorkspace\n ]\n})\nexport class TreeCommand extends InkCommand {\n // Lazy injections\n @LazyCurrentWorkspace()\n readonly workspace: Workspace;\n\n // Methods\n *render() {\n yield <WorkspaceTree workspace={this.workspace} />;\n }\n}\n","import { EachCommand } from '@/src/commands/each';\nimport { GroupCommand } from '@/src/commands/group';\nimport { ListCommand } from '@/src/commands/list';\nimport { RunCommand } from '@/src/commands/run';\nimport { TreeCommand } from '@/src/commands/tree';\nimport { Plugin } from '@/src/modules/plugin';\n\n// Plugin\n@Plugin({\n name: 'core',\n commands: [\n EachCommand,\n GroupCommand,\n ListCommand,\n RunCommand,\n TreeCommand,\n ]\n})\nexport class CorePlugin {}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { COMMAND } from '@/src/modules/command';\nimport { Logger } from '@/src/commons/logger.service';\nimport { applyConfigOptions } from '@/src/config/config-options';\nimport { CorePlugin } from '@/src/core.plugin';\nimport { container } from '@/src/inversify.config';\nimport { getModule } from '@/src/modules/module';\nimport { PluginLoaderService } from '@/src/modules/plugin-loader.service';\n\n// @ts-ignore: Outside of typescript's rootDir in build\nimport pkg from '../package.json';\n\n// Bootstrap\n(async () => {\n try {\n // Setup yargs\n const parser = yargs(hideBin(process.argv))\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\n // Options (for doc)\n applyConfigOptions(parser);\n\n // Load plugins\n container.load(getModule(CorePlugin, true));\n\n const pluginLoader = await container.getAsync(PluginLoaderService);\n await pluginLoader.loadPlugins();\n\n // Commands\n await parser\n .command(await container.getAllAsync(COMMAND) as any)\n .demandCommand()\n .recommendCommands()\n .strict()\n .parse();\n } catch (err) {\n const logger = container.get(Logger);\n logger.error(err);\n\n process.exit(1);\n }\n})();\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch] || charMap[ch] || ch;\n if (appendChar === replacement) {\n appendChar = ' ';\n }\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","module.exports = require(\"assert\");","module.exports = require(\"buffer\");","module.exports = require(\"child_process\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"https\");","module.exports = require(\"module\");","module.exports = require(\"node:child_process\");","module.exports = require(\"node:crypto\");","module.exports = require(\"node:fs/promises\");","module.exports = require(\"node:os\");","module.exports = require(\"node:path\");","module.exports = require(\"node:process\");","module.exports = require(\"node:tty\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"stream\");","module.exports = require(\"string_decoder\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"zlib\");"],"names":["TaskSet","constructor","manager","super","this","_tasks","Set","_status","_results","success","failed","_handleComplete","task","emit","size","add","Error","has","subscribe","status","start","t","tasks","Array","from","values","results","EachCommand","InkCommand","spinner","builder","parser","positional","type","demandOption","option","choice","default","desc","group","alias","coerce","rev","async","args","spin","pipeline","Pipeline","ScriptsFilter","script","undefined","private","PrivateFilter","affected","AffectedFilter","affectedRevFallback","affectedRevSort","rest","_","map","arg","toString","splice","wks","filter","project","workspaces","run","buildDeps","depsMode","length","process","exit","stop","TaskManagerSpinner","waitForEvent","LazyCurrentProject","lazyInject","TASK_MANAGER","Command","command","describe","middlewares","LoadProject","inject","SpinnerService","GroupCommand","taskExpr","expr","parse","join","buildTask","roots","workspace","LazyCurrentWorkspace","LoadWorkspace","TaskExprService","LONG_ATTRIBUTES","JSON_ATTRIBUTES","DEFAULT_ATTRIBUTES","EXTRACTORS","name","version","json","manifest","chalk","root","cwd","slug","slugify","ListCommand","string","choices","withScript","push","attrs","long","data","attr","buildExtractor","stdout","isTTY","console","log","JSON","stringify","write","d","path","List","items","headers","aliases","RunCommand","TreeCommand","WorkspaceTree","CorePlugin","Plugin","commands","yargs","hideBin","argv","scriptName","completion","help","pkg","wrap","columns","applyConfigOptions","container","getModule","pluginLoader","PluginLoaderService","loadPlugins","COMMAND","demandCommand","recommendCommands","strict","err","Logger","error","factory","charMap","locales","replace","options","locale","replacement","trim","normalize","split","reduce","result","ch","appendChar","remove","lower","toLowerCase","extend","customMap","Object","assign","module","exports","require"],"sourceRoot":""}
@@ -1,5 +1,5 @@
1
1
  import { type ArgumentsCamelCase, type Argv } from 'yargs';
2
- import { type IMiddleware } from '@/src/bases/middleware';
2
+ import { type IMiddleware } from '@/src/modules/middleware';
3
3
  import { SpinnerService } from '@/src/commons/spinner.service';
4
4
  import { type PackageManager } from '@/src/project/project';
5
5
  export interface ILoadProjectArgs {
@@ -1,7 +1,7 @@
1
1
  import yargs, { type ArgumentsCamelCase, type Argv } from 'yargs';
2
- import { type IMiddleware } from '@/src/bases/middleware';
2
+ import { type IMiddleware } from '@/src/modules/middleware';
3
3
  import { SpinnerService } from '@/src/commons/spinner.service';
4
- import { Project } from '@/src/project/project';
4
+ import { type Project } from '@/src/project/project';
5
5
  export interface ILoadWorkspaceArgs {
6
6
  workspace?: string;
7
7
  }
@@ -1,6 +1,6 @@
1
- import { interfaces as int } from 'inversify';
1
+ import { type interfaces as int } from 'inversify';
2
2
  import { type ArgumentsCamelCase, type Argv, type CommandModule } from 'yargs';
3
- import { type Awaitable, type Type } from '@/src/types';
3
+ import { type Awaitable, type Class, type Type } from '@/src/types';
4
4
  import { type IMiddleware } from './middleware';
5
5
  export declare const COMMAND: int.ServiceIdentifier<CommandModule>;
6
6
  export interface ICommand<A = unknown> {
@@ -14,4 +14,6 @@ export interface ICommandOpts {
14
14
  readonly deprecated?: boolean;
15
15
  readonly middlewares?: Type<IMiddleware>[];
16
16
  }
17
- export declare function Command(opts: ICommandOpts): (target: Type<ICommand>) => void;
17
+ export declare function getCommandOpts(target: Class<ICommand>): ICommandOpts;
18
+ export declare function buildCommandModule(cmd: ICommand, opts: ICommandOpts): CommandModule;
19
+ export declare function Command(opts: ICommandOpts): (target: Class<ICommand>) => void;
@@ -1,4 +1,4 @@
1
- import ink from 'ink';
1
+ import type ink from 'ink';
2
2
  import { type ReactNode } from 'react';
3
3
  import { type ArgumentsCamelCase, type Argv } from 'yargs';
4
4
  import { type Awaitable, type AwaitableGenerator } from '@/src/types';
@@ -1,5 +1,5 @@
1
1
  import { type ArgumentsCamelCase, type Argv } from 'yargs';
2
- import { type Awaitable, Type } from '@/src/types';
2
+ import { type Awaitable, type Type } from '@/src/types';
3
3
  export interface IMiddleware<A = unknown> {
4
4
  builder?: (parser: Argv) => Argv<A>;
5
5
  handler(args: ArgumentsCamelCase<A>): Awaitable<void>;
@@ -0,0 +1,7 @@
1
+ import { ContainerModule, type interfaces as int } from 'inversify';
2
+ import { type Class } from '@/src/types';
3
+ export declare function getRegistry(target: Class): int.ContainerModuleCallBack;
4
+ export declare function setRegistry(target: Class, registry: int.ContainerModuleCallBack): void;
5
+ export declare function getModule(target: Class): ContainerModule | null;
6
+ export declare function getModule(target: Class, assert: true): ContainerModule;
7
+ export declare function setModule(target: Class, module: ContainerModule): void;
@@ -1,4 +1,3 @@
1
- import { type Argv } from 'yargs';
2
1
  import { type IConfig } from '@/src/config/types';
3
2
  import { Logger } from '@/src/commons/logger.service';
4
3
  export declare class PluginLoaderService {
@@ -6,5 +5,5 @@ export declare class PluginLoaderService {
6
5
  private readonly _logger;
7
6
  constructor(_config: IConfig, logger: Logger);
8
7
  private _importPlugin;
9
- loadPlugins(parser: Argv): Promise<void>;
8
+ loadPlugins(): Promise<void>;
10
9
  }
@@ -0,0 +1,14 @@
1
+ import { ContainerModule } from 'inversify';
2
+ import { type Class, type Type } from '@/src/types';
3
+ import { type ICommand } from './command';
4
+ export interface IPluginOpts {
5
+ readonly name?: string;
6
+ readonly commands: Type<ICommand>[];
7
+ }
8
+ export declare class PluginModule extends ContainerModule implements IPluginOpts {
9
+ readonly name: string;
10
+ readonly commands: Type<ICommand>[];
11
+ readonly id: number;
12
+ constructor(name: string, commands: Type<ICommand>[]);
13
+ }
14
+ export declare function Plugin(opts: IPluginOpts): (target: Class) => void;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Register class as a service
3
+ */
4
+ export declare function Service(): ClassDecorator;
@@ -23,4 +23,4 @@ export declare class Project {
23
23
  workspace(name?: string): Promise<Workspace | null>;
24
24
  get root(): string;
25
25
  }
26
- export declare function lazyCurrentProject(): (proto: any, key: string) => void;
26
+ export declare function LazyCurrentProject(): (proto: any, key: string) => void;
@@ -1,6 +1,6 @@
1
- import { SpawnTask, SpawnTaskOptions, TaskContext } from '@jujulego/tasks';
1
+ import { SpawnTask, type SpawnTaskOptions, type TaskContext } from '@jujulego/tasks';
2
2
  import { type Package } from 'normalize-package-data';
3
- import { Project } from './project';
3
+ import { type Project } from './project';
4
4
  export type WorkspaceDepsMode = 'all' | 'prod' | 'none';
5
5
  export interface WorkspaceContext extends TaskContext {
6
6
  workspace: Workspace;
@@ -33,4 +33,4 @@ export declare class Workspace {
33
33
  get reference(): string;
34
34
  get cwd(): string;
35
35
  }
36
- export declare function lazyCurrentWorkspace(): (proto: any, key: string) => void;
36
+ export declare function LazyCurrentWorkspace(): (proto: any, key: string) => void;
@@ -1,6 +1,6 @@
1
- import { Task } from '@jujulego/tasks';
1
+ import { type Task } from '@jujulego/tasks';
2
2
  import { Logger } from '@/src/commons/logger.service';
3
- import { Workspace, WorkspaceRunOptions } from '@/src/project/workspace';
3
+ import { type Workspace, type WorkspaceRunOptions } from '@/src/project/workspace';
4
4
  export interface TaskNode {
5
5
  script: string;
6
6
  }
@@ -1,3 +1,3 @@
1
1
  import { TaskManager } from '@jujulego/tasks';
2
- import { interfaces as int } from 'inversify';
2
+ import { type interfaces as int } from 'inversify';
3
3
  export declare const TASK_MANAGER: int.ServiceIdentifier<TaskManager>;