@jujulego/jill 2.5.1 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ import { _ as _$1 } from '@swc/helpers/_/_ts_param';
3
3
  import { Logger, withLabel } from '@jujulego/logger';
4
4
  import { injectable, inject } from 'inversify';
5
5
  import yargs from 'yargs';
6
- import { m as container, C as CONFIG, p as isCommandCtx, t as ScriptTask, q as CommandTask, b as TaskSpinner, n as lazyInject, u as TASK_MANAGER, I as InkCommand, y as printJson, r as isScriptCtx, a as List, E as ExitException, D as ContextService, P as PluginLoaderService, l as CURRENT, F as applyConfigOptions, j as getModule, d as COMMAND_MODULE, c as COMMAND, g as getCommandOpts, e as buildCommandModule } from './ink-command-dQCqkmg0.js';
6
+ import { m as container, C as CONFIG, p as isCommandCtx, t as ScriptTask, q as CommandTask, b as TaskSpinner, n as lazyInject, u as TASK_MANAGER, I as InkCommand, y as printJson, r as isScriptCtx, a as List, E as ExitException, D as ContextService, P as PluginLoaderService, l as CURRENT, F as applyConfigOptions, j as getModule, d as COMMAND_MODULE, c as COMMAND, g as getCommandOpts, e as buildCommandModule } from './ink-command-CsbkuRbm.js';
7
7
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
8
8
  import { waitFor$ } from '@jujulego/event-tree';
9
9
  import { GroupTask, TaskSet, plan } from '@jujulego/tasks';
@@ -17,8 +17,8 @@ function useIsVerbose() {
17
17
  const config = container.get(CONFIG);
18
18
  if (config.verbose) {
19
19
  return [
20
- "verbose",
21
- "debug"
20
+ 'verbose',
21
+ 'debug'
22
22
  ].includes(config.verbose);
23
23
  } else {
24
24
  return false;
@@ -37,15 +37,15 @@ function useIsVerbose() {
37
37
  return kindB - kindA;
38
38
  }
39
39
  // 2 - compare workspaces
40
- const wksA = "workspace" in a.context ? a.context.workspace.name : "￿";
41
- const wksB = "workspace" in b.context ? b.context.workspace.name : "￿";
40
+ const wksA = 'workspace' in a.context ? a.context.workspace.name : '\uffff';
41
+ const wksB = 'workspace' in b.context ? b.context.workspace.name : '\uffff';
42
42
  const wksDiff = wksA.localeCompare(wksB);
43
43
  if (wksDiff !== 0) {
44
44
  return wksDiff;
45
45
  }
46
46
  // 1 - compare scripts
47
- const scriptA = "script" in a.context ? a.context.script : "￿";
48
- const scriptB = "script" in b.context ? b.context.script : "￿";
47
+ const scriptA = 'script' in a.context ? a.context.script : '\uffff';
48
+ const scriptB = 'script' in b.context ? b.context.script : '\uffff';
49
49
  return scriptA.localeCompare(scriptB);
50
50
  }
51
51
  /**
@@ -61,8 +61,8 @@ function useIsVerbose() {
61
61
  };
62
62
  if (task instanceof GroupTask) {
63
63
  const isCommandGroup = task.tasks.some((t)=>!isCommandCtx(t.context));
64
- const hasFailed = task.tasks.some((t)=>t.status === "failed");
65
- const isStarted = task.status === "running";
64
+ const hasFailed = task.tasks.some((t)=>t.status === 'failed');
65
+ const isStarted = task.status === 'running';
66
66
  if (isVerbose || isCommandGroup || hasFailed || isStarted) {
67
67
  let tasks = task.tasks;
68
68
  if (task instanceof ScriptTask) {
@@ -84,7 +84,7 @@ function useFlatTaskTree(manager) {
84
84
  const [version, setVersion] = useState(0);
85
85
  useLayoutEffect(()=>{
86
86
  let dirty = false;
87
- return manager.on("added", ()=>{
87
+ return manager.on('added', ()=>{
88
88
  if (!dirty) {
89
89
  dirty = true;
90
90
  queueMicrotask(()=>{
@@ -100,7 +100,7 @@ function useFlatTaskTree(manager) {
100
100
  ]);
101
101
  useLayoutEffect(()=>{
102
102
  let dirty = false;
103
- return manager.on("started", ()=>{
103
+ return manager.on('started', ()=>{
104
104
  if (!dirty) {
105
105
  dirty = true;
106
106
  setTimeout(()=>{
@@ -114,7 +114,7 @@ function useFlatTaskTree(manager) {
114
114
  ]);
115
115
  useLayoutEffect(()=>{
116
116
  let dirty = false;
117
- return manager.on("completed", ()=>{
117
+ return manager.on('completed', ()=>{
118
118
  if (!dirty) {
119
119
  dirty = true;
120
120
  setTimeout(()=>{
@@ -146,21 +146,21 @@ function TaskTreeStats({ manager }) {
146
146
  };
147
147
  for (const task of manager.tasks){
148
148
  switch(task.status){
149
- case "starting":
150
- case "running":
149
+ case 'starting':
150
+ case 'running':
151
151
  base.running += task.weight;
152
152
  break;
153
- case "done":
153
+ case 'done':
154
154
  base.done += task.weight;
155
155
  break;
156
- case "failed":
156
+ case 'failed':
157
157
  base.failed += task.weight;
158
158
  break;
159
159
  }
160
160
  }
161
161
  return base;
162
162
  });
163
- useLayoutEffect(()=>manager.on("started", (task)=>{
163
+ useLayoutEffect(()=>manager.on('started', (task)=>{
164
164
  setStats((old)=>({
165
165
  ...old,
166
166
  running: old.running + task.weight
@@ -168,11 +168,11 @@ function TaskTreeStats({ manager }) {
168
168
  }), [
169
169
  manager
170
170
  ]);
171
- useLayoutEffect(()=>manager.on("completed", (task)=>{
171
+ useLayoutEffect(()=>manager.on('completed', (task)=>{
172
172
  setStats((old)=>({
173
173
  running: old.running - task.weight,
174
- done: task.status === "done" ? old.done + task.weight : old.done,
175
- failed: task.status === "failed" ? old.failed + task.weight : old.failed
174
+ done: task.status === 'done' ? old.done + task.weight : old.done,
175
+ failed: task.status === 'failed' ? old.failed + task.weight : old.failed
176
176
  }));
177
177
  }), [
178
178
  manager
@@ -265,9 +265,9 @@ function useStdoutDimensions() {
265
265
  columns: stdout.columns ?? Infinity,
266
266
  rows: stdout.rows ?? Infinity
267
267
  });
268
- stdout.on("resize", handler);
268
+ stdout.on('resize', handler);
269
269
  return ()=>{
270
- stdout.off("resize", handler);
270
+ stdout.off('resize', handler);
271
271
  };
272
272
  }, [
273
273
  stdout
@@ -376,18 +376,18 @@ function TaskTreeSpinner({ manager }) {
376
376
 
377
377
  class TaskCommand extends InkCommand {
378
378
  addTaskOptions(parser) {
379
- return parser.option("plan", {
380
- type: "boolean",
381
- desc: "Only prints tasks to be run",
379
+ return parser.option('plan', {
380
+ type: 'boolean',
381
+ desc: 'Only prints tasks to be run',
382
382
  default: false
383
- }).option("plan-mode", {
384
- type: "string",
385
- desc: "Plan output mode",
383
+ }).option('plan-mode', {
384
+ type: 'string',
385
+ desc: 'Plan output mode',
386
386
  choices: [
387
- "json",
388
- "list"
387
+ 'json',
388
+ 'list'
389
389
  ],
390
- default: "list"
390
+ default: 'list'
391
391
  });
392
392
  }
393
393
  async *render(args) {
@@ -398,15 +398,15 @@ class TaskCommand extends InkCommand {
398
398
  }
399
399
  if (args.plan) {
400
400
  const plan$1 = Array.from(plan(tasks));
401
- if (args.planMode === "json") {
401
+ if (args.planMode === 'json') {
402
402
  printJson(plan$1);
403
403
  } else {
404
404
  const data = plan$1.map((tsk)=>({
405
405
  id: tsk.id.substring(0, 6),
406
406
  name: tsk.name,
407
- workspace: isCommandCtx(tsk.context) || isScriptCtx(tsk.context) ? tsk.context.workspace.name : "",
407
+ workspace: isCommandCtx(tsk.context) || isScriptCtx(tsk.context) ? tsk.context.workspace.name : '',
408
408
  group: tsk.groupId?.substring(0, 6),
409
- "depends on": tsk.dependenciesIds.map((id)=>id.substring(0, 6)).join(", ")
409
+ 'depends on': tsk.dependenciesIds.map((id)=>id.substring(0, 6)).join(', ')
410
410
  }));
411
411
  yield /*#__PURE__*/ jsx(List, {
412
412
  items: data,
@@ -420,7 +420,7 @@ class TaskCommand extends InkCommand {
420
420
  });
421
421
  // Start tasks
422
422
  tasks.start(this.manager);
423
- const result = await waitFor$(tasks, "finished");
423
+ const result = await waitFor$(tasks, 'finished');
424
424
  this.app.clear();
425
425
  yield /*#__PURE__*/ jsx(TaskTreeCompleted, {
426
426
  manager: this.manager
@@ -430,7 +430,7 @@ class TaskCommand extends InkCommand {
430
430
  }
431
431
  } else {
432
432
  const logger = container.get(Logger);
433
- logger.warning("No task found");
433
+ logger.warning('No task found');
434
434
  }
435
435
  }
436
436
  }
@@ -442,7 +442,7 @@ TaskCommand = _([
442
442
  ], TaskCommand);
443
443
 
444
444
  var name = "@jujulego/jill";
445
- var version = "2.5.1";
445
+ var version = "3.0.0-alpha.1";
446
446
  var license = "MIT";
447
447
  var repository = {
448
448
  type: "git",
@@ -468,7 +468,7 @@ var scripts = {
468
468
  "e2e:yarn": "yarn run e2e -t yarn"
469
469
  };
470
470
  var engines = {
471
- node: "16.x || 18.x || 20.x"
471
+ node: "18.x || 20.x || 22.x"
472
472
  };
473
473
  var dependencies = {
474
474
  "@jujulego/aegis": "^2.1.0",
@@ -500,39 +500,37 @@ var dependencies = {
500
500
  };
501
501
  var devDependencies = {
502
502
  "@jujulego/2d-maths": "1.6.0",
503
- "@jujulego/vite-plugin-swc": "1.1.1",
504
- "@microsoft/eslint-formatter-sarif": "3.0.0",
503
+ "@jujulego/vite-plugin-swc": "1.2.0",
504
+ "@microsoft/eslint-formatter-sarif": "3.1.0",
505
505
  "@rollup/plugin-json": "6.1.0",
506
- "@rollup/plugin-node-resolve": "15.2.3",
507
- "@swc/core": "1.4.1",
506
+ "@rollup/plugin-node-resolve": "15.3.0",
507
+ "@swc/core": "1.6.5",
508
508
  "@types/moo": "0.5.9",
509
- "@types/node": "16.18.80",
509
+ "@types/node": "22.13.14",
510
510
  "@types/normalize-package-data": "2.4.4",
511
- "@types/react": "18.2.55",
512
- "@types/semver": "7.5.7",
513
- "@types/yargs": "17.0.32",
514
- "@typescript-eslint/eslint-plugin": "7.0.1",
515
- "@typescript-eslint/parser": "7.0.1",
516
- "@vitest/coverage-v8": "1.2.2",
517
- "@vitest/expect": "1.2.2",
518
- "@vitest/spy": "1.2.2",
519
- browserslist: "4.22.3",
520
- eslint: "8.56.0",
521
- "eslint-plugin-react": "7.33.2",
522
- "eslint-plugin-react-hooks": "4.6.0",
523
- "eslint-plugin-vitest": "0.3.22",
524
- "eslint-plugin-workspaces": "0.10.0",
511
+ "@types/react": "18.3.14",
512
+ "@types/semver": "7.5.8",
513
+ "@types/yargs": "17.0.33",
514
+ "@typescript-eslint/eslint-plugin": "7.18.0",
515
+ "@typescript-eslint/parser": "7.18.0",
516
+ "@vitest/coverage-v8": "3.2.4",
517
+ browserslist: "4.24.2",
518
+ eslint: "8.57.1",
519
+ "eslint-plugin-react": "7.37.2",
520
+ "eslint-plugin-react-hooks": "4.6.2",
521
+ "eslint-plugin-vitest": "0.4.1",
522
+ "eslint-plugin-workspaces": "0.10.1",
525
523
  "ink-testing-library": "3.0.0",
526
- memfs: "4.7.0",
527
- rollup: "4.10.0",
524
+ memfs: "4.15.0",
525
+ rollup: "4.28.1",
528
526
  shx: "0.3.4",
529
527
  "ts-node": "10.9.2",
530
- typescript: "5.3.3",
531
- vite: "5.1.1",
532
- "vite-tsconfig-paths": "4.3.1",
533
- vitest: "1.2.2"
528
+ typescript: "5.7.2",
529
+ vite: "5.4.11",
530
+ "vite-tsconfig-paths": "5.1.4",
531
+ vitest: "3.2.4"
534
532
  };
535
- var packageManager = "yarn@3.8.0";
533
+ var packageManager = "yarn@4.9.2";
536
534
  var pkg = {
537
535
  name: name,
538
536
  version: version,
@@ -558,7 +556,7 @@ class JillApplication {
558
556
  // Create container
559
557
  this.container = container.createChild();
560
558
  // Create parser
561
- this.parser = yargs().scriptName("jill").completion("completion", "Generate bash completion script").help("help", "Show help for a command").version("version", "Show version", pkg.version).wrap(process.stdout.columns).exitProcess(false);
559
+ this.parser = yargs().scriptName('jill').completion('completion', 'Generate bash completion script').help('help', 'Show help for a command').version('version', 'Show version', pkg.version).wrap(process.stdout.columns).exitProcess(false);
562
560
  }
563
561
  // Methods
564
562
  _prepareParser(commands) {
@@ -566,8 +564,8 @@ class JillApplication {
566
564
  return this.parser.command(commands).recommendCommands().strict().fail(false);
567
565
  }
568
566
  async _loadPlugins() {
569
- this.logger.child(withLabel("plugin")).verbose("Loading plugin <core>");
570
- const { CorePlugin } = await import('./core.plugin-D4KeO5G0.js');
567
+ this.logger.child(withLabel('plugin')).verbose('Loading plugin <core>');
568
+ const { CorePlugin } = await import('./core.plugin-CxgfxFUI.js');
571
569
  this.container.load(getModule(CorePlugin, true));
572
570
  await this.plugins.loadPlugins(this.container);
573
571
  }
@@ -596,7 +594,10 @@ class JillApplication {
596
594
  mod.handler = async (args)=>{
597
595
  if (cmd instanceof TaskCommand) {
598
596
  const tasks = [];
599
- for await (const tsk of cmd.prepare(args)){
597
+ for await (const tsk of cmd.prepare({
598
+ ...args,
599
+ plan: true
600
+ })){
600
601
  tasks.push(tsk);
601
602
  }
602
603
  resolve(tasks);
@@ -622,7 +623,7 @@ container.bind(JillApplication).toDynamicValue(({ container })=>{
622
623
  const ctx = container.get(ContextService);
623
624
  const app = ctx.application;
624
625
  if (!app) {
625
- throw new Error("Cannot inject current application, it not yet defined");
626
+ throw new Error('Cannot inject current application, it not yet defined');
626
627
  }
627
628
  return app;
628
629
  }).whenTargetNamed(CURRENT);
@@ -633,4 +634,4 @@ var jill_application = /*#__PURE__*/Object.freeze({
633
634
  });
634
635
 
635
636
  export { JillApplication as J, TaskCommand as T, jill_application as j };
636
- //# sourceMappingURL=jill.application-BEjmcH4e.js.map
637
+ //# sourceMappingURL=jill.application-DNJpmnCF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jill.application-DNJpmnCF.js","sources":["../src/ui/hooks/useIsVerbose.ts","../src/ui/hooks/useFlatTaskTree.ts","../src/ui/task-tree-stats.tsx","../src/ui/task-tree-completed.tsx","../src/ui/hooks/useStdoutDimensions.ts","../src/ui/task-tree-scrollable-spinner.tsx","../src/ui/task-tree-full-spinner.tsx","../src/ui/task-tree-spinner.tsx","../src/modules/task-command.tsx","../src/jill.application.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { CONFIG } from '@/src/config/config-loader.ts';\nimport { container } from '@/src/inversify.config.ts';\n\nexport function useIsVerbose() {\n return useMemo(() => {\n const config = container.get(CONFIG);\n\n if (config.verbose) {\n return ['verbose', 'debug'].includes(config.verbose);\n } else {\n return false;\n }\n }, []);\n}\n","import { GroupTask, Task, TaskManager } from '@jujulego/tasks';\nimport { useLayoutEffect, useMemo, useState } from 'react';\n\nimport { Workspace } from '@/src/project/workspace.ts';\nimport { CommandTask, isCommandCtx } from '@/src/tasks/command-task.ts';\nimport { ScriptTask } from '@/src/tasks/script-task.ts';\nimport { useIsVerbose } from '@/src/ui/hooks/useIsVerbose.ts';\n\n// Types\nexport interface FlatTask {\n task: Task;\n level: number;\n}\n\n// Utils\n/**\n * Sorts tasks according to workspace and script, keeping command at the end\n */\nexport function taskComparator(a: Task, b: Task) {\n // 1 - compare kind\n const kindA = a instanceof CommandTask ? 0 : 1;\n const kindB = b instanceof CommandTask ? 0 : 1;\n\n if (kindA !== kindB) {\n return kindB - kindA;\n }\n\n // 2 - compare workspaces\n const wksA = 'workspace' in a.context ? (a.context.workspace as Workspace).name : '\\uffff';\n const wksB = 'workspace' in b.context ? (b.context.workspace as Workspace).name : '\\uffff';\n const wksDiff = wksA.localeCompare(wksB);\n\n if (wksDiff !== 0) {\n return wksDiff;\n }\n\n // 1 - compare scripts\n const scriptA = 'script' in a.context ? a.context.script as string : '\\uffff';\n const scriptB = 'script' in b.context ? b.context.script as string : '\\uffff';\n\n return scriptA.localeCompare(scriptB);\n}\n\n/**\n * Extract tasks to be printed, with their level in the tree\n */\nexport function * flatTasks(tasks: readonly Task[], isVerbose: boolean, groupId?: string, level = 0): Generator<FlatTask> {\n for (const task of tasks) {\n if (task.group?.id !== groupId) {\n continue;\n }\n\n yield { task, level };\n\n if (task instanceof GroupTask) {\n const isCommandGroup = task.tasks.some((t) => !isCommandCtx(t.context));\n const hasFailed = task.tasks.some((t) => t.status === 'failed');\n const isStarted = task.status === 'running';\n\n if (isVerbose || isCommandGroup || hasFailed || isStarted) {\n let tasks = task.tasks;\n\n if (task instanceof ScriptTask) {\n tasks = [...tasks].sort(taskComparator);\n }\n\n yield* flatTasks(tasks, isVerbose, task.id, level + 1);\n }\n }\n }\n}\n\n// Hook\nexport function useFlatTaskTree(manager: TaskManager): FlatTask[] {\n const isVerbose = useIsVerbose();\n\n const [tasks, setTasks] = useState([...manager.tasks].sort(taskComparator));\n const [version, setVersion] = useState(0);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('added', () => {\n if (!dirty) {\n dirty = true;\n\n queueMicrotask(() => {\n setTasks([...manager.tasks].sort(taskComparator));\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('started', () => {\n if (!dirty) {\n dirty = true;\n\n setTimeout(() => {\n setVersion((old) => ++old);\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('completed', () => {\n if (!dirty) {\n dirty = true;\n\n setTimeout(() => {\n setVersion((old) => ++old);\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n return useMemo(() => {\n return Array.from(flatTasks(tasks, isVerbose));\n }, [tasks, isVerbose, version]);\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { useLayoutEffect, useState } from 'react';\n\n// Types\nexport interface TaskTreeStatsProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeStats({ manager }: TaskTreeStatsProps) {\n // Follow stats\n const [stats, setStats] = useState(() => {\n const base = { running: 0, done: 0, failed: 0 };\n \n for (const task of manager.tasks) {\n switch (task.status) {\n case 'starting':\n case 'running':\n base.running += task.weight;\n break;\n\n case 'done':\n base.done += task.weight;\n break;\n\n case 'failed':\n base.failed += task.weight;\n break;\n }\n }\n \n return base;\n });\n\n useLayoutEffect(() => manager.on('started', (task) => {\n setStats((old) => ({\n ...old,\n running: old.running + task.weight\n }));\n }), [manager]);\n\n useLayoutEffect(() => manager.on('completed', (task) => {\n setStats((old) => ({\n running: old.running - task.weight,\n done: task.status === 'done' ? old.done + task.weight : old.done,\n failed: task.status === 'failed' ? old.failed + task.weight : old.failed,\n }));\n }), [manager]);\n\n // Render\n return (\n <Text>\n { (stats.running !== 0) && (\n <><Spinner type=\"sand\" /> <Text bold>{ stats.running }</Text> running</>\n ) }\n { (stats.running !== 0 && stats.done !== 0) && (<>, </>) }\n { (stats.done !== 0) && (\n <Text color=\"green\">{ symbols.success } { stats.done } done</Text>\n ) }\n { (stats.running + stats.done !== 0 && stats.failed !== 0) && (<>, </>) }\n { (stats.failed !== 0) && (\n <Text color=\"red\">{ symbols.error } { stats.failed } failed</Text>\n ) }\n </Text>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Static } from 'ink';\nimport { useMemo } from 'react';\n\nimport { flatTasks, taskComparator } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport { useIsVerbose } from '@/src/ui/hooks/useIsVerbose.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeCompletedProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeCompleted({ manager }: TaskTreeCompletedProps) {\n // Config\n const isVerbose = useIsVerbose();\n\n // Extract all tasks\n const flat = useMemo(() => {\n return Array.from(flatTasks([...manager.tasks].sort(taskComparator), isVerbose));\n }, [manager, isVerbose]);\n\n // Render\n return (\n <>\n <Static items={flat}>\n { ({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n ) }\n </Static>\n <TaskTreeStats manager={manager} />\n </>\n );\n}\n","import { useStdout } from 'ink';\nimport { useEffect, useState } from 'react';\n\nexport function useStdoutDimensions() {\n const { stdout } = useStdout();\n const [dimensions, setDimensions] = useState({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n\n useEffect(() => {\n const handler = () => setDimensions({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n stdout.on('resize', handler);\n\n return () => {\n stdout.off('resize', handler);\n };\n }, [stdout]);\n\n return dimensions;\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Text, useInput } from 'ink';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { useStdoutDimensions } from '@/src/ui/hooks/useStdoutDimensions.ts';\nimport { useFlatTaskTree } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeScrollableSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeScrollableSpinner({ manager }: TaskTreeScrollableSpinnerProps) {\n const { rows: termHeight } = useStdoutDimensions();\n\n // Extract all tasks\n const flat = useFlatTaskTree(manager);\n\n const maxHeight = useMemo(\n () => Math.min(termHeight - 4, flat.length),\n [termHeight, flat]\n );\n\n // Manage scroll\n const [start, setStart] = useState(0);\n\n const slice = useMemo(\n () => flat.slice(start, start + maxHeight),\n [flat, start, maxHeight]\n );\n\n useEffect(() => {\n if (start + maxHeight > flat.length) {\n setStart(Math.max(flat.length - maxHeight, 0));\n }\n }, [start, flat, maxHeight]);\n\n useInput((_, key) => {\n if (key.upArrow) {\n setStart((old) => Math.max(0, old - 1));\n } else if (key.downArrow) {\n setStart((old) => Math.min(flat.length - maxHeight, old + 1));\n }\n });\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { slice.map(({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n )) }\n </Box>\n <Text>\n <TaskTreeStats manager={manager} />\n { (maxHeight < flat.length) && (<Text color=\"grey\"> - use keyboard arrows to scroll</Text>) }\n </Text>\n </>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Text } from 'ink';\n\nimport { useFlatTaskTree } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeFullSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeFullSpinner({ manager }: TaskTreeFullSpinnerProps) {\n const flat = useFlatTaskTree(manager);\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { flat.map(({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n )) }\n </Box>\n <Text>\n <TaskTreeStats manager={manager} />\n </Text>\n </>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { useStdin } from 'ink';\n\nimport TaskTreeScrollableSpinner from '@/src/ui/task-tree-scrollable-spinner.tsx';\nimport TaskTreeFullSpinner from '@/src/ui/task-tree-full-spinner.tsx';\n\n// Types\nexport interface TaskTreeSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeSpinner({ manager }: TaskTreeSpinnerProps) {\n const stdin = useStdin();\n\n if (stdin.isRawModeSupported) {\n return <TaskTreeScrollableSpinner manager={manager} />;\n } else {\n return <TaskTreeFullSpinner manager={manager} />;\n }\n}\n","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 TaskTreeCompleted from '@/src/ui/task-tree-completed.tsx';\nimport TaskTreeSpinner from '@/src/ui/task-tree-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 <TaskTreeSpinner manager={this.manager} />;\n\n // Start tasks\n tasks.start(this.manager);\n\n const result = await waitFor$(tasks, 'finished');\n\n this.app.clear();\n yield <TaskTreeCompleted manager={this.manager} />;\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, plan: true })) {\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":["useIsVerbose","useMemo","config","container","get","CONFIG","verbose","includes","taskComparator","a","b","kindA","CommandTask","kindB","wksA","context","workspace","name","wksB","wksDiff","localeCompare","scriptA","script","scriptB","flatTasks","tasks","isVerbose","groupId","level","task","group","id","GroupTask","isCommandGroup","some","t","isCommandCtx","hasFailed","status","isStarted","ScriptTask","sort","useFlatTaskTree","manager","setTasks","useState","version","setVersion","useLayoutEffect","dirty","on","queueMicrotask","setTimeout","old","Array","from","TaskTreeStats","stats","setStats","base","running","done","failed","weight","_jsxs","Text","_Fragment","_jsx","Spinner","type","bold","color","symbols","success","error","TaskTreeCompleted","flat","Static","items","Box","marginLeft","flexShrink","TaskSpinner","useStdoutDimensions","stdout","useStdout","dimensions","setDimensions","columns","Infinity","rows","useEffect","handler","off","TaskTreeScrollableSpinner","termHeight","maxHeight","Math","min","length","start","setStart","slice","max","useInput","_","key","upArrow","downArrow","flexDirection","map","TaskTreeFullSpinner","TaskTreeSpinner","stdin","useStdin","isRawModeSupported","TaskCommand","InkCommand","addTaskOptions","parser","option","desc","default","choices","render","args","TaskSet","tsk","prepare","add","plan","extractPlan","planMode","printJson","data","substring","isScriptCtx","dependenciesIds","join","List","headers","result","waitFor$","app","clear","ExitException","logger","Logger","warning","JillApplication","constructor","plugins","createChild","yargs","scriptName","completion","help","pkg","wrap","process","exitProcess","_prepareParser","commands","applyConfigOptions","command","recommendCommands","strict","fail","_loadPlugins","child","withLabel","CorePlugin","load","getModule","loadPlugins","run","argv","reset","application","getAllAsync","COMMAND_MODULE","parseAsync","tasksOf","ctx","COMMAND","Promise","resolve","reject","modules","cmd","opts","getCommandOpts","mod","buildCommandModule","push","catch","bind","toSelf","inTransientScope","whenTargetIsDefault","toDynamicValue","ContextService","Error","whenTargetNamed","CURRENT"],"mappings":"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"}
package/dist/main.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Logger } from '@jujulego/logger';
2
2
  import { hideBin } from 'yargs/helpers';
3
- import { m as container, E as ExitException } from './ink-command-dQCqkmg0.js';
4
- import { J as JillApplication } from './jill.application-BEjmcH4e.js';
3
+ import { m as container, E as ExitException } from './ink-command-CsbkuRbm.js';
4
+ import { J as JillApplication } from './jill.application-DNJpmnCF.js';
5
5
  import '@swc/helpers/_/_ts_decorate';
6
6
  import '@swc/helpers/_/_ts_param';
7
7
  import 'inversify';
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 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"}
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;IAErC,IAAI;AACF,QAAA,MAAMH,GAAII,CAAAA,GAAG,CAACC,OAAAA,CAAQC,QAAQC,IAAI,CAAA,CAAA;AACpC,KAAA,CAAE,OAAOC,GAAK,EAAA;AACZ,QAAA,IAAIA,eAAeC,aAAe,EAAA;YAChCH,OAAQI,CAAAA,IAAI,CAACF,GAAAA,CAAIG,IAAI,CAAA;SAChB,MAAA;AACLC,YAAAA,OAAAA,CAAQC,KAAK,CAAC,MAAMb,GAAIc,CAAAA,MAAM,CAACC,OAAO,EAAA,CAAA;YAEtC,IAAIP,GAAAA,CAAIQ,OAAO,EAAE;gBACf,MAAMC,MAAAA,GAAShB,SAAUiB,CAAAA,GAAG,CAACC,MAAAA,CAAAA;gBAC7BF,MAAOJ,CAAAA,KAAK,CAACL,GAAAA,CAAIQ,OAAO,CAAA;AAC1B;AAEAV,YAAAA,OAAAA,CAAQI,IAAI,CAAC,CAAA,CAAA;AACf;AACF;AACF,CAAA,GAAA"}