@jujulego/jill 3.0.0-alpha.10 → 3.0.0-alpha.11

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.
@@ -0,0 +1,71 @@
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f9001ccb-03f6-4378-93af-96d0c7a3aa2e",e._sentryDebugIdIdentifier="sentry-dbid-f9001ccb-03f6-4378-93af-96d0c7a3aa2e");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.11"};}catch(e){}}();import { f as flatJobTree, a as isJob } from './flat-job-tree.js';
2
+
3
+ function flatJobPlan(job) {
4
+ const tree = flatJobTree(job, true);
5
+ const index = new Map(tree.map((item, idx)=>[
6
+ item.workload.id,
7
+ idx + 1
8
+ ]));
9
+ const plan = [];
10
+ let branch = '';
11
+ for(let i = 0; i < tree.length; i++){
12
+ const item = tree[i];
13
+ // Check if branch continues
14
+ let branchContinue = false;
15
+ for(let j = i + 1; j < tree.length; j++){
16
+ if (tree[j].level <= item.level) {
17
+ if (tree[j].level === item.level) {
18
+ branchContinue = true;
19
+ }
20
+ break;
21
+ }
22
+ }
23
+ // Compute dependencies
24
+ const dependsOn = [];
25
+ if (isJob(item.workload)) {
26
+ for (const dep of item.workload.dependencies()){
27
+ const idx = index.get(dep.id);
28
+ if (idx) {
29
+ dependsOn.push(idx);
30
+ }
31
+ }
32
+ }
33
+ // Update branch
34
+ if (branch.length / 3 > item.level) {
35
+ branch = branch.slice(0, branch.length - 3);
36
+ }
37
+ if (item.level > 0 && branch.length / 3 === item.level) {
38
+ branch = branch.slice(0, branch.length - 3);
39
+ }
40
+ if (branch.length / 3 < item.level) {
41
+ if (branchContinue) {
42
+ plan.push({
43
+ ...item,
44
+ id: i + 1,
45
+ branch: branch + '├─ ',
46
+ dependsOn
47
+ });
48
+ branch += '│ ';
49
+ } else {
50
+ plan.push({
51
+ ...item,
52
+ id: i + 1,
53
+ branch: branch + '└─ ',
54
+ dependsOn
55
+ });
56
+ branch += ' ';
57
+ }
58
+ } else {
59
+ plan.push({
60
+ ...item,
61
+ id: i + 1,
62
+ branch,
63
+ dependsOn
64
+ });
65
+ }
66
+ }
67
+ return plan;
68
+ }
69
+
70
+ export { flatJobPlan as f };
71
+ //# sourceMappingURL=flat-job-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flat-job-plan.js","sources":["../src/trees/flat-job-plan.ts"],"sourcesContent":["import type { Workload$ } from '@kyrielle/workload';\nimport { isJob } from '../utils/predicates.js';\nimport { flatJobTree, type FlatJobTreeItem } from './flat-job-tree.js';\n\nexport function flatJobPlan(job: Workload$): FlatJobPlanItem[] {\n const tree = flatJobTree(job, true);\n\n const index = new Map(tree.map((item, idx) => [item.workload.id, idx + 1]));\n const plan: FlatJobPlanItem[] = [];\n let branch = '';\n\n for (let i = 0; i < tree.length; i++) {\n const item = tree[i];\n\n // Check if branch continues\n let branchContinue = false;\n\n for (let j = i + 1; j < tree.length; j++) {\n if (tree[j].level <= item.level) {\n if (tree[j].level === item.level) {\n branchContinue = true;\n }\n\n break;\n }\n }\n\n // Compute dependencies\n const dependsOn: number[] = [];\n\n if (isJob(item.workload)) {\n for (const dep of item.workload.dependencies()) {\n const idx = index.get(dep.id);\n\n if (idx) {\n dependsOn.push(idx);\n }\n }\n }\n\n // Update branch\n if (branch.length / 3 > item.level) {\n branch = branch.slice(0, branch.length - 3);\n }\n\n if (item.level > 0 && branch.length / 3 === item.level) {\n branch = branch.slice(0, branch.length - 3);\n }\n\n if (branch.length / 3 < item.level) {\n if (branchContinue) {\n plan.push({ ...item, id: i + 1, branch: branch + '├─ ', dependsOn });\n branch += '│ ';\n } else {\n plan.push({ ...item, id: i + 1, branch: branch + '└─ ', dependsOn });\n branch += ' ';\n }\n } else {\n plan.push({ ...item, id: i + 1, branch, dependsOn });\n }\n }\n\n return plan;\n}\n\n// Types\ninterface FlatJobPlanItem extends FlatJobTreeItem {\n readonly id: number;\n readonly branch: string;\n readonly dependsOn: number[];\n}\n"],"names":["flatJobPlan","job","tree","flatJobTree","index","Map","map","item","idx","workload","id","plan","branch","i","length","branchContinue","j","level","dependsOn","isJob","dep","dependencies","get","push","slice"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8f5259db-8601-487c-a706-48fc2a8bd368",e._sentryDebugIdIdentifier="sentry-dbid-8f5259db-8601-487c-a706-48fc2a8bd368");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.10"};}catch(e){}}();import { WorkloadState } from '@jujulego/tasks';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9c037c48-b288-47bf-8636-3d2952064238",e._sentryDebugIdIdentifier="sentry-dbid-9c037c48-b288-47bf-8636-3d2952064238");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.11"};}catch(e){}}();import { WorkloadState } from '@kyrielle/workload';
2
2
  import { pipe$, map$, collect$ } from 'kyrielle';
3
3
 
4
4
  function isScriptWorkflow(workload) {
@@ -38,6 +38,7 @@ function flatJobTree(workload, verbose = false) {
38
38
  for (const workload of children){
39
39
  stack.push({
40
40
  workload,
41
+ parent: item.workload,
41
42
  level
42
43
  });
43
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flat-job-tree.js","sources":["../src/utils/predicates.ts","../src/trees/flat-job-tree.ts"],"sourcesContent":["import type { Job$, Workload$ } from '@jujulego/tasks';\nimport type { ScriptWorkflow$ } from '../jobs/run-script$.js';\n\nexport function isScriptWorkflow(workload: Workload$): workload is ScriptWorkflow$ {\n return workload.type === 'script';\n}\n\nexport function isJob(workload: Workload$): workload is Job$ {\n return 'dependencies' in workload && typeof workload.dependencies === 'function';\n}\n","import { type Workflow$, type Workload$, WorkloadState } from '@jujulego/tasks';\nimport { collect$, map$, pipe$ } from 'kyrielle';\nimport { isJob } from '../utils/predicates.js';\n\nexport function flatJobTree(workload: Workload$, verbose = false) {\n const tree: FlatJobTreeItem[] = [];\n const stack: FlatJobTreeItem[] = pipe$(\n listRoots(workload),\n map$((workload) => ({ workload, level: 0 })),\n collect$(),\n );\n\n while (stack.length > 0) {\n const item = stack.pop()!;\n const mustShow = [WorkloadState.Starting, WorkloadState.Running, WorkloadState.Failed].includes(item.workload.state());\n\n if (!verbose && !isWorkflow(item.workload) && !mustShow && item.level > 0) {\n continue;\n }\n\n // Add to tree\n let level = item.level;\n\n if (item.workload.label !== '[hidden]') {\n tree.push(item);\n level++;\n }\n\n // Load \"member\" tasks\n if (isWorkflow(item.workload)) {\n const children = [...item.workload.workloads()].reverse();\n\n for (const workload of children) {\n stack.push({ workload, level });\n }\n }\n }\n\n return tree;\n}\n\nfunction* listRoots(workload: Workload$) {\n const marks = new Set<string>();\n const queue = [workload];\n\n while (queue.length) {\n const item = queue.shift()!;\n\n // Mark all member of workflows, so they're not added as root\n if (isWorkflow(item)) {\n for (const wkl of item.workloads()) {\n marks.add(wkl.id);\n queue.unshift(wkl);\n }\n }\n\n // Load job dependencies\n if (isJob(item)) {\n for (const dep of item.dependencies()) {\n queue.push(dep);\n }\n }\n\n // Ignore marked workloads\n if (marks.has(item.id)) {\n continue;\n }\n\n yield item;\n marks.add(item.id);\n }\n}\n\nfunction isWorkflow(workload: Workload$): workload is Workflow$ {\n return 'workloads' in workload && typeof workload.workloads === 'function';\n}\n\n// Types\nexport interface FlatJobTreeItem {\n readonly level: number;\n readonly workload: Workload$;\n}\n"],"names":["isScriptWorkflow","workload","type","isJob","dependencies","flatJobTree","verbose","tree","stack","pipe$","listRoots","map$","level","collect$","length","item","pop","mustShow","WorkloadState","Starting","Running","Failed","includes","state","isWorkflow","label","push","children","workloads","reverse","marks","Set","queue","shift","wkl","add","id","unshift","dep","has"],"mappings":"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"}
1
+ {"version":3,"file":"flat-job-tree.js","sources":["../src/utils/predicates.ts","../src/trees/flat-job-tree.ts"],"sourcesContent":["import type { Job$, Workload$ } from '@kyrielle/workload';\nimport type { ScriptWorkflow$ } from '../jobs/run-script$.js';\n\nexport function isScriptWorkflow(workload: Workload$): workload is ScriptWorkflow$ {\n return workload.type === 'script';\n}\n\nexport function isJob(workload: Workload$): workload is Job$ {\n return 'dependencies' in workload && typeof workload.dependencies === 'function';\n}\n","import { type Workflow$, type Workload$, WorkloadState } from '@kyrielle/workload';\nimport { collect$, map$, pipe$ } from 'kyrielle';\nimport { isJob } from '../utils/predicates.js';\n\nexport function flatJobTree(workload: Workload$, verbose = false) {\n const tree: FlatJobTreeItem[] = [];\n const stack: FlatJobTreeItem[] = pipe$(\n listRoots(workload),\n map$((workload) => ({ workload, level: 0 })),\n collect$(),\n );\n\n while (stack.length > 0) {\n const item = stack.pop()!;\n const mustShow = [WorkloadState.Starting, WorkloadState.Running, WorkloadState.Failed].includes(item.workload.state());\n\n if (!verbose && !isWorkflow(item.workload) && !mustShow && item.level > 0) {\n continue;\n }\n\n // Add to tree\n let level = item.level;\n\n if (item.workload.label !== '[hidden]') {\n tree.push(item);\n level++;\n }\n\n // Load \"member\" tasks\n if (isWorkflow(item.workload)) {\n const children = [...item.workload.workloads()].reverse();\n\n for (const workload of children) {\n stack.push({ workload, parent: item.workload, level });\n }\n }\n }\n\n return tree;\n}\n\nfunction* listRoots(workload: Workload$) {\n const marks = new Set<string>();\n const queue = [workload];\n\n while (queue.length) {\n const item = queue.shift()!;\n\n // Mark all member of workflows, so they're not added as root\n if (isWorkflow(item)) {\n for (const wkl of item.workloads()) {\n marks.add(wkl.id);\n queue.unshift(wkl);\n }\n }\n\n // Load job dependencies\n if (isJob(item)) {\n for (const dep of item.dependencies()) {\n queue.push(dep);\n }\n }\n\n // Ignore marked workloads\n if (marks.has(item.id)) {\n continue;\n }\n\n yield item;\n marks.add(item.id);\n }\n}\n\nfunction isWorkflow(workload: Workload$): workload is Workflow$ {\n return 'workloads' in workload && typeof workload.workloads === 'function';\n}\n\n// Types\nexport interface FlatJobTreeItem {\n readonly level: number;\n readonly parent?: Workflow$;\n readonly workload: Workload$;\n}\n"],"names":["isScriptWorkflow","workload","type","isJob","dependencies","flatJobTree","verbose","tree","stack","pipe$","listRoots","map$","level","collect$","length","item","pop","mustShow","WorkloadState","Starting","Running","Failed","includes","state","isWorkflow","label","push","children","workloads","reverse","parent","marks","Set","queue","shift","wkl","add","id","unshift","dep","has"],"mappings":"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"}
package/dist/inked.js CHANGED
@@ -1,4 +1,4 @@
1
- ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d7946de5-797e-40cb-9a1d-120c1ce863da",e._sentryDebugIdIdentifier="sentry-dbid-d7946de5-797e-40cb-9a1d-120c1ce863da");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.10"};}catch(e){}}();import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9e22c133-113f-4a04-a239-f8bc9b7012ad",e._sentryDebugIdIdentifier="sentry-dbid-9e22c133-113f-4a04-a239-f8bc9b7012ad");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.11"};}catch(e){}}();import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { startSpan } from '@sentry/node';
3
3
  import { useStderr, render } from 'ink';
4
4
  import { inject$ } from '@kyrielle/injector';
@@ -1,4 +1,4 @@
1
- ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f4a30022-370a-48b3-b419-732af029f454",e._sentryDebugIdIdentifier="sentry-dbid-f4a30022-370a-48b3-b419-732af029f454");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.10"};}catch(e){}}();import { init } from '@sentry/node';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fcf54169-7246-46e3-a2ca-d6fd6e52364c",e._sentryDebugIdIdentifier="sentry-dbid-fcf54169-7246-46e3-a2ca-d6fd6e52364c");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.11"};}catch(e){}}();import { init } from '@sentry/node';
2
2
 
3
3
  init({
4
4
  dsn: 'https://53e6d10c16975ebd025175d9836d039b@o4508229080055808.ingest.de.sentry.io/4509876546895952',
@@ -1,9 +1,8 @@
1
- ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="25d44dfb-005e-48d3-abbe-f17133f4ea8a",e._sentryDebugIdIdentifier="sentry-dbid-25d44dfb-005e-48d3-abbe-f17133f4ea8a");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.10"};}catch(e){}}();import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import { WorkloadState, isWorkloadEnded } from '@jujulego/tasks';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a8a3c0d8-712a-4ee1-8c2b-e3b1286846d0",e._sentryDebugIdIdentifier="sentry-dbid-a8a3c0d8-712a-4ee1-8c2b-e3b1286846d0");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.11"};}catch(e){}}();import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
2
  import { inject$ } from '@kyrielle/injector';
3
+ import { WorkloadState, isWorkloadEnded } from '@kyrielle/workload';
4
4
  import { pipe$, map$, collect$, off$, waitFor$, filter$ } from 'kyrielle';
5
5
  import process from 'node:process';
6
- import { c as capitalize, S as SCHEDULER } from './main.js';
7
6
  import { Text, Box, Static, useStdout, useInput, useStdin } from 'ink';
8
7
  import { createHash } from 'node:crypto';
9
8
  import { useState, useEffect, useMemo } from 'react';
@@ -11,21 +10,22 @@ import { f as flatJobTree, i as isScriptWorkflow } from './flat-job-tree.js';
11
10
  import Spinner from 'ink-spinner';
12
11
  import ms from 'pretty-ms';
13
12
  import isUnicodeSupported from 'is-unicode-supported';
13
+ import { c as capitalize, S as SCHEDULER } from './main.js';
14
14
  import { i as inked } from './inked.js';
15
15
  import '@sentry/node';
16
16
  import 'yargs/helpers';
17
- import '@kyrielle/logger';
17
+ import 'node:path';
18
18
  import '@swc/helpers/_/_apply_decs_2203_r';
19
- import 'node:stream/consumers';
19
+ import '@kyrielle/logger';
20
20
  import 'node:fs';
21
21
  import 'path-scurry';
22
- import 'assert';
23
- import 'node:stream';
24
- import 'moo';
25
- import 'node:path';
26
22
  import 'glob';
27
23
  import 'normalize-package-data';
28
24
  import 'semver';
25
+ import 'assert';
26
+ import 'node:stream';
27
+ import 'node:stream/consumers';
28
+ import 'moo';
29
29
  import 'node:child_process';
30
30
  import 'chalk';
31
31
  import 'slugify';
@@ -1 +1 @@
1
- {"version":3,"file":"job-command-execute.ink.js","sources":["../src/hooks/useFlatJobTree.ts","../src/utils/symbols.ts","../src/components/WorkloadName.tsx","../src/components/WorkloadSpinner.tsx","../src/hooks/useScriptsStats.ts","../src/components/WorkloadTreeStats.tsx","../src/components/WorkloadTreeCompleted.tsx","../src/components/WorkloadTreeFullSpinner.tsx","../src/hooks/useStdoutDimensions.ts","../src/components/WorkloadTreeScrollableSpinner.tsx","../src/components/WorkloadTreeSpinner.tsx","../src/wrappers/job-command-execute.ink.tsx"],"sourcesContent":["import { type Workload$ } from '@jujulego/tasks';\nimport { collect$, map$, off$, pipe$ } from 'kyrielle';\nimport { createHash } from 'node:crypto';\nimport { useEffect, useState } from 'react';\nimport { flatJobTree, type FlatJobTreeItem } from '../trees/flat-job-tree.js';\n\n// Hook\nexport function useFlatJobTree(workload: Workload$, verbose?: boolean): FlatJobTreeItem[] {\n const [tree, setTree] = useState<FlatJobTreeItem[]>(() => flatJobTree(workload, verbose));\n\n useEffect(() => {\n const oldHash = hashTree(tree);\n let dirty = false;\n\n function update() {\n if (!dirty) return;\n\n const updated = flatJobTree(workload, verbose);\n if (hashTree(updated) !== oldHash) {\n setTree(updated);\n }\n\n dirty = false;\n }\n\n const off = pipe$(tree,\n map$(({ workload }) => workload.state$.subscribe(() => {\n dirty = true;\n queueMicrotask(update);\n })),\n collect$(off$())\n );\n\n return () => {\n dirty = false;\n off.unsubscribe();\n };\n }, [tree, verbose, workload]);\n \n return tree;\n}\n\n// Utils\nfunction hashTree(tree: FlatJobTreeItem[]) {\n const hash = createHash('sha256');\n\n for (const { workload } of tree) {\n hash.update(workload.id);\n }\n\n return hash.digest('hex');\n}\n","import isUnicodeSupported from 'is-unicode-supported';\n\nconst isSupported = !isUnicodeSupported();\n\nexport const success = isSupported ? '✔' : '√';\nexport const error = isSupported ? '✖' : '×';\n","import type { Workload$ } from '@jujulego/tasks';\nimport { Text, type TextProps } from 'ink';\nimport { isScriptWorkflow } from '../utils/predicates.js';\nimport { capitalize } from '../utils/string.js';\n\n// Component\nexport function WorkloadName({ workload, withWorkspace, ...rest }: WorkloadNameProps) {\n if (isScriptWorkflow(workload)) {\n return (\n <Text {...rest}>\n Run <Text bold>{ workload.script }</Text> script{ withWorkspace && <>{' '}in {workload.workspace.name}</>}\n </Text>\n );\n }\n\n let name = workload.label;\n\n if (workload.type !== 'spawn') {\n name = capitalize(name);\n }\n\n return <Text {...rest}>{ name }</Text>;\n}\n\nexport interface WorkloadNameProps extends Omit<TextProps, 'children'> {\n readonly workload: Workload$;\n readonly withWorkspace?: boolean;\n}\n","import { type Workload$, WorkloadState } from '@jujulego/tasks';\nimport { Box, Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport ms from 'pretty-ms';\nimport { useEffect, useState } from 'react';\nimport * as symbols from '../utils/symbols.js';\nimport { WorkloadName } from './WorkloadName.jsx';\n\n// Component\nexport function WorkloadSpinner({ workload }: WorkloadSpinnerProps) {\n // Track task state\n const [state, setState] = useState(workload.state());\n\n useEffect(() => {\n const sub = workload.state$.subscribe(setState);\n return sub.unsubscribe;\n }, [workload.state$]);\n\n // Render\n const dim = workload.type === 'spawn';\n const time = workload.duration().seconds() * 1000;\n\n\n switch (state) {\n case WorkloadState.Blocked:\n case WorkloadState.Ready:\n case WorkloadState.Starting:\n return (\n <Box>\n <Text color=\"grey\">{'\\u00B7'}</Text>\n <Box paddingLeft={1}>\n <WorkloadName color=\"grey\" wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n </Box>\n );\n\n case WorkloadState.Running:\n return (\n <Box>\n <Text dimColor={dim}>\n <Spinner />\n </Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n </Box>\n );\n\n case WorkloadState.Canceling:\n return (\n <Box>\n <Text dimColor={dim} color=\"grey\">\n <Spinner type=\"line2\" />\n </Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} color=\"grey\" wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n </Box>\n );\n\n case WorkloadState.Succeeded:\n return (\n <Box>\n <Text color=\"green\">{ symbols.success }</Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n <Box paddingLeft={1} flexShrink={0}>\n <Text color={dim ? 'grey' : 'dim'}>(took {ms(time)})</Text>\n </Box>\n </Box>\n );\n\n case WorkloadState.Failed:\n return (\n <Box>\n <Text color=\"red\">{ symbols.error }</Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n <Box paddingLeft={1} flexShrink={0}>\n <Text color={dim ? 'grey' : 'dim'}>(took {ms(time)})</Text>\n </Box>\n </Box>\n );\n\n case WorkloadState.Canceled:\n return (\n <Box>\n <Text dimColor>-</Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n <Box paddingLeft={1} flexShrink={0}>\n <Text color={dim ? 'grey' : 'dim'}>(took {ms(time)})</Text>\n </Box>\n </Box>\n );\n }\n}\n\nexport interface WorkloadSpinnerProps {\n readonly workload: Workload$;\n}\n","import { type Workload$, WorkloadState } from '@jujulego/tasks';\nimport { collect$, map$, off$, pipe$ } from 'kyrielle';\nimport { useEffect, useState } from 'react';\n\n// Hook\nexport function useScriptsStats(workloads: readonly Workload$[]) {\n const [stats, setStats] = useState(() => countScripts(workloads));\n\n useEffect(() => {\n let dirty = false;\n\n function recount() {\n if (!dirty) return;\n\n setStats(countScripts(workloads));\n dirty = false;\n }\n\n const off = pipe$(workloads,\n map$((wkl) => wkl.state$.subscribe(() => {\n dirty = true;\n queueMicrotask(recount);\n })),\n collect$(off$())\n );\n\n return () => {\n dirty = false;\n off.unsubscribe();\n };\n }, [workloads]);\n \n return stats;\n}\n\n// Utils\nfunction countScripts(workloads: readonly Workload$[]): Readonly<WorkloadsStats> {\n const stats: WorkloadsStats = {\n [WorkloadState.Ready]: 0,\n [WorkloadState.Blocked]: 0,\n [WorkloadState.Starting]: 0,\n [WorkloadState.Running]: 0,\n [WorkloadState.Succeeded]: 0,\n [WorkloadState.Failed]: 0,\n [WorkloadState.Canceling]: 0,\n [WorkloadState.Canceled]: 0,\n };\n\n for (const workload of workloads) {\n if (workload.type === 'script') {\n stats[workload.state()] += 1;\n }\n }\n\n return stats;\n}\n\n// Types\nexport type WorkloadsStats = Record<WorkloadState, number>;","import { WorkloadState } from '@jujulego/tasks';\nimport { Text, type TextProps } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { useMemo } from 'react';\nimport * as symbols from '../utils/symbols.js';\nimport { useScriptsStats } from '../hooks/useScriptsStats.js';\nimport type { FlatJobTreeItem } from '../trees/flat-job-tree.js';\n\n// Component\nexport function WorkloadTreeStats({ tree, ...rest }: WorkloadTreeStatsProps) {\n const workloads = useMemo(() => tree.map((item) => item.workload), [tree]);\n const stats = useScriptsStats(workloads);\n\n // Render\n const running = stats[WorkloadState.Running] + stats[WorkloadState.Starting] + stats[WorkloadState.Canceling];\n const done = stats[WorkloadState.Succeeded];\n const failed = stats[WorkloadState.Failed];\n const canceled = stats[WorkloadState.Canceled];\n\n return (\n <Text {...rest}>\n { (running > 0) && (\n <><Spinner type=\"sand\" /> <Text bold>{ running }</Text> running</>\n ) }\n { (running > 0 && done > 0) && ', ' }\n { (done > 0) && (\n <Text color=\"green\">{ symbols.success } { done } done</Text>\n ) }\n { (running + done > 0 && failed > 0) && ', ' }\n { (failed > 0) && (\n <Text color=\"red\">{ symbols.error } { failed } failed</Text>\n ) }\n { (running + done + failed > 0 && canceled > 0) && ', ' }\n { (canceled > 0) && (\n <Text dimColor>- { canceled } canceled</Text>\n ) }\n </Text>\n );\n}\n\nexport interface WorkloadTreeStatsProps extends Omit<TextProps, 'children'> {\n readonly tree: readonly FlatJobTreeItem[];\n}\n","import type { Workload$ } from '@jujulego/tasks';\nimport { Box, Static } from 'ink';\nimport { useFlatJobTree } from '../hooks/useFlatJobTree.js';\nimport { WorkloadSpinner } from './WorkloadSpinner.jsx';\nimport { WorkloadTreeStats } from './WorkloadTreeStats.jsx';\n\n// Component\nexport function WorkloadTreeCompleted({ workload, verbose }: WorkloadTreeCompletedProps) {\n const tree = useFlatJobTree(workload, verbose);\n\n // Render\n return (\n <>\n <Static items={tree}>\n { ({ workload, level }) => (\n <Box key={workload.id} marginLeft={level * 2} flexShrink={0}>\n <WorkloadSpinner workload={workload} />\n </Box>\n ) }\n </Static>\n <WorkloadTreeStats tree={tree} />\n </>\n );\n}\n\nexport interface WorkloadTreeCompletedProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\n}\n","import type { Workload$ } from '@jujulego/tasks';\nimport { Box } from 'ink';\nimport { useFlatJobTree } from '../hooks/useFlatJobTree.js';\nimport { WorkloadSpinner } from './WorkloadSpinner.jsx';\nimport { WorkloadTreeStats } from './WorkloadTreeStats.jsx';\n\n// Component\nexport function WorkloadTreeFullSpinner({ workload, verbose }: WorkloadTreeFullSpinnerProps) {\n const tree = useFlatJobTree(workload, verbose);\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { tree.map(({ workload, level }) => (\n <Box key={workload.id} marginLeft={level * 2} flexShrink={0}>\n <WorkloadSpinner workload={workload} />\n </Box>\n )) }\n </Box>\n <WorkloadTreeStats tree={tree} />\n </>\n );\n}\n\nexport interface WorkloadTreeFullSpinnerProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\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 updateDimensions = () => setDimensions({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n\n stdout.on('resize', updateDimensions);\n\n return () => {\n stdout.off('resize', updateDimensions);\n };\n }, [stdout]);\n\n return dimensions;\n}\n","import type { Workload$ } from '@jujulego/tasks';\nimport { Box, Text, useInput } from 'ink';\nimport { useState } from 'react';\nimport { useStdoutDimensions } from '../hooks/useStdoutDimensions.js';\nimport { useFlatJobTree } from '../hooks/useFlatJobTree.js';\nimport { WorkloadSpinner } from './WorkloadSpinner.jsx';\nimport { WorkloadTreeStats } from './WorkloadTreeStats.jsx';\n\n// Component\nexport function WorkloadTreeScrollableSpinner({ workload, verbose }: WorkloadTreeScrollableSpinnerProps) {\n const tree = useFlatJobTree(workload, verbose);\n\n // Manage scroll\n const { rows: termRows } = useStdoutDimensions();\n const [scroll, setScroll] = useState(0);\n\n const maxRows = Math.min(termRows - 4, tree.length);\n const firstIndex = Math.max(0, tree.length - scroll - maxRows);\n const lastIndex = Math.min(tree.length, firstIndex + maxRows);\n const effectiveScroll = tree.length - lastIndex;\n\n useInput((_, key) => {\n if (key.upArrow) {\n setScroll(Math.min(tree.length - maxRows, effectiveScroll + 1));\n } else {\n setScroll(Math.max(0, effectiveScroll - 1));\n }\n });\n\n // Render\n const slice = tree.slice(firstIndex, lastIndex);\n\n return (\n <>\n <Box flexDirection=\"column\">\n { slice.map(({ workload, level }) => (\n <Box key={workload.id} marginLeft={level * 2} flexShrink={0}>\n <WorkloadSpinner workload={workload} />\n </Box>\n )) }\n </Box>\n <Text>\n <WorkloadTreeStats tree={tree} />\n { (termRows < tree.length) && (<Text color=\"grey\"> | use keyboard arrows to scroll</Text>) }\n </Text>\n </>\n );\n}\n\nexport interface WorkloadTreeScrollableSpinnerProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\n}\n","import type { Workload$ } from '@jujulego/tasks';\nimport { useStdin } from 'ink';\nimport { WorkloadTreeFullSpinner } from './WorkloadTreeFullSpinner.jsx';\nimport { WorkloadTreeScrollableSpinner } from './WorkloadTreeScrollableSpinner.jsx';\n\n// Component\nexport function WorkloadTreeSpinner({ workload, verbose }: WorkloadTreeSpinnerProps) {\n const stdin = useStdin();\n\n if (stdin.isRawModeSupported) {\n return <WorkloadTreeScrollableSpinner workload={workload} verbose={verbose} />;\n } else {\n return <WorkloadTreeFullSpinner workload={workload} verbose={verbose} />;\n }\n}\n\nexport interface WorkloadTreeSpinnerProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\n}\n","import { isWorkloadEnded, type Job$, WorkloadState } from '@jujulego/tasks';\nimport { inject$ } from '@kyrielle/injector';\nimport { filter$, pipe$, waitFor$ } from 'kyrielle';\nimport process from 'node:process';\nimport { SCHEDULER } from '../tokens.js';\nimport { WorkloadTreeCompleted } from '../components/WorkloadTreeCompleted.jsx';\nimport { WorkloadTreeSpinner } from '../components/WorkloadTreeSpinner.jsx';\nimport { inked } from './inked.jsx';\n\nexport const JobCommandExecuteInk = inked(async function* ({ job, verbose }: JobExecInkProps) {\n const scheduler = await inject$(SCHEDULER);\n\n yield <WorkloadTreeSpinner workload={job} verbose={verbose} />;\n scheduler.register(job);\n\n const outcome = await waitFor$(pipe$(job.state$, filter$(isWorkloadEnded)));\n yield <WorkloadTreeCompleted workload={job} verbose={verbose} />;\n\n if (outcome !== WorkloadState.Succeeded) {\n process.exitCode = 1;\n }\n});\n\n// Types\nexport interface JobExecInkProps {\n readonly job: Job$;\n readonly verbose?: boolean;\n}\n"],"names":["useFlatJobTree","workload","verbose","tree","setTree","useState","flatJobTree","useEffect","oldHash","hashTree","dirty","update","updated","off","pipe$","map$","state$","subscribe","queueMicrotask","collect$","off$","unsubscribe","hash","createHash","id","digest","isSupported","isUnicodeSupported","success","error","WorkloadName","withWorkspace","rest","isScriptWorkflow","_jsxs","Text","_jsx","bold","script","_Fragment","workspace","name","label","type","capitalize","WorkloadSpinner","state","setState","sub","dim","time","duration","seconds","WorkloadState","Blocked","Ready","Starting","Box","color","paddingLeft","wrap","Running","dimColor","Spinner","Canceling","Succeeded","symbols","flexShrink","ms","Failed","Canceled","useScriptsStats","workloads","stats","setStats","countScripts","recount","wkl","WorkloadTreeStats","useMemo","map","item","running","done","failed","canceled","WorkloadTreeCompleted","Static","items","level","marginLeft","WorkloadTreeFullSpinner","flexDirection","useStdoutDimensions","stdout","useStdout","dimensions","setDimensions","columns","Infinity","rows","updateDimensions","on","WorkloadTreeScrollableSpinner","termRows","scroll","setScroll","maxRows","Math","min","length","firstIndex","max","lastIndex","effectiveScroll","useInput","_","key","upArrow","slice","WorkloadTreeSpinner","stdin","useStdin","isRawModeSupported","JobCommandExecuteInk","inked","job","scheduler","inject$","SCHEDULER","register","outcome","waitFor$","filter$","isWorkloadEnded","process","exitCode"],"mappings":"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"}
1
+ {"version":3,"file":"job-command-execute.ink.js","sources":["../src/hooks/useFlatJobTree.ts","../src/utils/symbols.ts","../src/components/WorkloadName.tsx","../src/components/WorkloadSpinner.tsx","../src/hooks/useScriptsStats.ts","../src/components/WorkloadTreeStats.tsx","../src/components/WorkloadTreeCompleted.tsx","../src/components/WorkloadTreeFullSpinner.tsx","../src/hooks/useStdoutDimensions.ts","../src/components/WorkloadTreeScrollableSpinner.tsx","../src/components/WorkloadTreeSpinner.tsx","../src/wrappers/job-command-execute.ink.tsx"],"sourcesContent":["import { type Workload$ } from '@kyrielle/workload';\nimport { collect$, map$, off$, pipe$ } from 'kyrielle';\nimport { createHash } from 'node:crypto';\nimport { useEffect, useState } from 'react';\nimport { flatJobTree, type FlatJobTreeItem } from '../trees/flat-job-tree.js';\n\n// Hook\nexport function useFlatJobTree(workload: Workload$, verbose?: boolean): FlatJobTreeItem[] {\n const [tree, setTree] = useState<FlatJobTreeItem[]>(() => flatJobTree(workload, verbose));\n\n useEffect(() => {\n const oldHash = hashTree(tree);\n let dirty = false;\n\n function update() {\n if (!dirty) return;\n\n const updated = flatJobTree(workload, verbose);\n if (hashTree(updated) !== oldHash) {\n setTree(updated);\n }\n\n dirty = false;\n }\n\n const off = pipe$(tree,\n map$(({ workload }) => workload.state$.subscribe(() => {\n dirty = true;\n queueMicrotask(update);\n })),\n collect$(off$())\n );\n\n return () => {\n dirty = false;\n off.unsubscribe();\n };\n }, [tree, verbose, workload]);\n \n return tree;\n}\n\n// Utils\nfunction hashTree(tree: FlatJobTreeItem[]) {\n const hash = createHash('sha256');\n\n for (const { workload } of tree) {\n hash.update(workload.id);\n }\n\n return hash.digest('hex');\n}\n","import isUnicodeSupported from 'is-unicode-supported';\n\nconst isSupported = !isUnicodeSupported();\n\nexport const success = isSupported ? '✔' : '√';\nexport const error = isSupported ? '✖' : '×';\n","import type { Workload$ } from '@kyrielle/workload';\nimport { Text, type TextProps } from 'ink';\nimport { isScriptWorkflow } from '../utils/predicates.js';\nimport { capitalize } from '../utils/string.js';\n\n// Component\nexport function WorkloadName({ workload, withWorkspace, ...rest }: WorkloadNameProps) {\n if (isScriptWorkflow(workload)) {\n return (\n <Text {...rest}>\n Run <Text bold>{ workload.script }</Text> script{ withWorkspace && <>{' '}in {workload.workspace.name}</>}\n </Text>\n );\n }\n\n let name = workload.label;\n\n if (workload.type !== 'spawn') {\n name = capitalize(name);\n }\n\n return <Text {...rest}>{ name }</Text>;\n}\n\nexport interface WorkloadNameProps extends Omit<TextProps, 'children'> {\n readonly workload: Workload$;\n readonly withWorkspace?: boolean;\n}\n","import { type Workload$, WorkloadState } from '@kyrielle/workload';\nimport { Box, Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport ms from 'pretty-ms';\nimport { useEffect, useState } from 'react';\nimport * as symbols from '../utils/symbols.js';\nimport { WorkloadName } from './WorkloadName.jsx';\n\n// Component\nexport function WorkloadSpinner({ workload }: WorkloadSpinnerProps) {\n // Track task state\n const [state, setState] = useState(workload.state());\n\n useEffect(() => {\n const sub = workload.state$.subscribe(setState);\n return sub.unsubscribe;\n }, [workload.state$]);\n\n // Render\n const dim = workload.type === 'spawn';\n const time = workload.duration().seconds() * 1000;\n\n\n switch (state) {\n case WorkloadState.Blocked:\n case WorkloadState.Ready:\n case WorkloadState.Starting:\n return (\n <Box>\n <Text color=\"grey\">{'\\u00B7'}</Text>\n <Box paddingLeft={1}>\n <WorkloadName color=\"grey\" wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n </Box>\n );\n\n case WorkloadState.Running:\n return (\n <Box>\n <Text dimColor={dim}>\n <Spinner />\n </Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n </Box>\n );\n\n case WorkloadState.Canceling:\n return (\n <Box>\n <Text dimColor={dim} color=\"grey\">\n <Spinner type=\"line2\" />\n </Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} color=\"grey\" wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n </Box>\n );\n\n case WorkloadState.Succeeded:\n return (\n <Box>\n <Text color=\"green\">{ symbols.success }</Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n <Box paddingLeft={1} flexShrink={0}>\n <Text color={dim ? 'grey' : 'dim'}>(took {ms(time)})</Text>\n </Box>\n </Box>\n );\n\n case WorkloadState.Failed:\n return (\n <Box>\n <Text color=\"red\">{ symbols.error }</Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor={dim} wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n <Box paddingLeft={1} flexShrink={0}>\n <Text color={dim ? 'grey' : 'dim'}>(took {ms(time)})</Text>\n </Box>\n </Box>\n );\n\n case WorkloadState.Canceled:\n return (\n <Box>\n <Text dimColor>-</Text>\n <Box paddingLeft={1}>\n <WorkloadName dimColor wrap=\"truncate\" workload={workload} withWorkspace />\n </Box>\n <Box paddingLeft={1} flexShrink={0}>\n <Text color={dim ? 'grey' : 'dim'}>(took {ms(time)})</Text>\n </Box>\n </Box>\n );\n }\n}\n\nexport interface WorkloadSpinnerProps {\n readonly workload: Workload$;\n}\n","import { type Workload$, WorkloadState } from '@kyrielle/workload';\nimport { collect$, map$, off$, pipe$ } from 'kyrielle';\nimport { useEffect, useState } from 'react';\n\n// Hook\nexport function useScriptsStats(workloads: readonly Workload$[]) {\n const [stats, setStats] = useState(() => countScripts(workloads));\n\n useEffect(() => {\n let dirty = false;\n\n function recount() {\n if (!dirty) return;\n\n setStats(countScripts(workloads));\n dirty = false;\n }\n\n const off = pipe$(workloads,\n map$((wkl) => wkl.state$.subscribe(() => {\n dirty = true;\n queueMicrotask(recount);\n })),\n collect$(off$())\n );\n\n return () => {\n dirty = false;\n off.unsubscribe();\n };\n }, [workloads]);\n \n return stats;\n}\n\n// Utils\nfunction countScripts(workloads: readonly Workload$[]): Readonly<WorkloadsStats> {\n const stats: WorkloadsStats = {\n [WorkloadState.Ready]: 0,\n [WorkloadState.Blocked]: 0,\n [WorkloadState.Starting]: 0,\n [WorkloadState.Running]: 0,\n [WorkloadState.Succeeded]: 0,\n [WorkloadState.Failed]: 0,\n [WorkloadState.Canceling]: 0,\n [WorkloadState.Canceled]: 0,\n };\n\n for (const workload of workloads) {\n if (workload.type === 'script') {\n stats[workload.state()] += 1;\n }\n }\n\n return stats;\n}\n\n// Types\nexport type WorkloadsStats = Record<WorkloadState, number>;\n","import { WorkloadState } from '@kyrielle/workload';\nimport { Text, type TextProps } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { useMemo } from 'react';\nimport { useScriptsStats } from '../hooks/useScriptsStats.js';\nimport type { FlatJobTreeItem } from '../trees/flat-job-tree.js';\nimport * as symbols from '../utils/symbols.js';\n\n// Component\nexport function WorkloadTreeStats({ tree, ...rest }: WorkloadTreeStatsProps) {\n const workloads = useMemo(() => tree.map((item) => item.workload), [tree]);\n const stats = useScriptsStats(workloads);\n\n // Render\n const running = stats[WorkloadState.Running] + stats[WorkloadState.Starting] + stats[WorkloadState.Canceling];\n const done = stats[WorkloadState.Succeeded];\n const failed = stats[WorkloadState.Failed];\n const canceled = stats[WorkloadState.Canceled];\n\n return (\n <Text {...rest}>\n { (running > 0) && (\n <><Spinner type=\"sand\" /> <Text bold>{ running }</Text> running</>\n ) }\n { (running > 0 && done > 0) && ', ' }\n { (done > 0) && (\n <Text color=\"green\">{ symbols.success } { done } done</Text>\n ) }\n { (running + done > 0 && failed > 0) && ', ' }\n { (failed > 0) && (\n <Text color=\"red\">{ symbols.error } { failed } failed</Text>\n ) }\n { (running + done + failed > 0 && canceled > 0) && ', ' }\n { (canceled > 0) && (\n <Text dimColor>- { canceled } canceled</Text>\n ) }\n </Text>\n );\n}\n\nexport interface WorkloadTreeStatsProps extends Omit<TextProps, 'children'> {\n readonly tree: readonly FlatJobTreeItem[];\n}\n","import type { Workload$ } from '@kyrielle/workload';\nimport { Box, Static } from 'ink';\nimport { useFlatJobTree } from '../hooks/useFlatJobTree.js';\nimport { WorkloadSpinner } from './WorkloadSpinner.jsx';\nimport { WorkloadTreeStats } from './WorkloadTreeStats.jsx';\n\n// Component\nexport function WorkloadTreeCompleted({ workload, verbose }: WorkloadTreeCompletedProps) {\n const tree = useFlatJobTree(workload, verbose);\n\n // Render\n return (\n <>\n <Static items={tree}>\n { ({ workload, level }) => (\n <Box key={workload.id} marginLeft={level * 2} flexShrink={0}>\n <WorkloadSpinner workload={workload} />\n </Box>\n ) }\n </Static>\n <WorkloadTreeStats tree={tree} />\n </>\n );\n}\n\nexport interface WorkloadTreeCompletedProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\n}\n","import type { Workload$ } from '@kyrielle/workload';\nimport { Box } from 'ink';\nimport { useFlatJobTree } from '../hooks/useFlatJobTree.js';\nimport { WorkloadSpinner } from './WorkloadSpinner.jsx';\nimport { WorkloadTreeStats } from './WorkloadTreeStats.jsx';\n\n// Component\nexport function WorkloadTreeFullSpinner({ workload, verbose }: WorkloadTreeFullSpinnerProps) {\n const tree = useFlatJobTree(workload, verbose);\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { tree.map(({ workload, level }) => (\n <Box key={workload.id} marginLeft={level * 2} flexShrink={0}>\n <WorkloadSpinner workload={workload} />\n </Box>\n )) }\n </Box>\n <WorkloadTreeStats tree={tree} />\n </>\n );\n}\n\nexport interface WorkloadTreeFullSpinnerProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\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 updateDimensions = () => setDimensions({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n\n stdout.on('resize', updateDimensions);\n\n return () => {\n stdout.off('resize', updateDimensions);\n };\n }, [stdout]);\n\n return dimensions;\n}\n","import type { Workload$ } from '@kyrielle/workload';\nimport { Box, Text, useInput } from 'ink';\nimport { useState } from 'react';\nimport { useFlatJobTree } from '../hooks/useFlatJobTree.js';\nimport { useStdoutDimensions } from '../hooks/useStdoutDimensions.js';\nimport { WorkloadSpinner } from './WorkloadSpinner.jsx';\nimport { WorkloadTreeStats } from './WorkloadTreeStats.jsx';\n\n// Component\nexport function WorkloadTreeScrollableSpinner({ workload, verbose }: WorkloadTreeScrollableSpinnerProps) {\n const tree = useFlatJobTree(workload, verbose);\n\n // Manage scroll\n const { rows: termRows } = useStdoutDimensions();\n const [scroll, setScroll] = useState(0);\n\n const maxRows = Math.min(termRows - 4, tree.length);\n const firstIndex = Math.max(0, tree.length - scroll - maxRows);\n const lastIndex = Math.min(tree.length, firstIndex + maxRows);\n const effectiveScroll = tree.length - lastIndex;\n\n useInput((_, key) => {\n if (key.upArrow) {\n setScroll(Math.min(tree.length - maxRows, effectiveScroll + 1));\n } else {\n setScroll(Math.max(0, effectiveScroll - 1));\n }\n });\n\n // Render\n const slice = tree.slice(firstIndex, lastIndex);\n\n return (\n <>\n <Box flexDirection=\"column\">\n { slice.map(({ workload, level }) => (\n <Box key={workload.id} marginLeft={level * 2} flexShrink={0}>\n <WorkloadSpinner workload={workload} />\n </Box>\n )) }\n </Box>\n <Text>\n <WorkloadTreeStats tree={tree} />\n { (termRows < tree.length) && (<Text color=\"grey\"> | use keyboard arrows to scroll</Text>) }\n </Text>\n </>\n );\n}\n\nexport interface WorkloadTreeScrollableSpinnerProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\n}\n","import type { Workload$ } from '@kyrielle/workload';\nimport { useStdin } from 'ink';\nimport { WorkloadTreeFullSpinner } from './WorkloadTreeFullSpinner.jsx';\nimport { WorkloadTreeScrollableSpinner } from './WorkloadTreeScrollableSpinner.jsx';\n\n// Component\nexport function WorkloadTreeSpinner({ workload, verbose }: WorkloadTreeSpinnerProps) {\n const stdin = useStdin();\n\n if (stdin.isRawModeSupported) {\n return <WorkloadTreeScrollableSpinner workload={workload} verbose={verbose} />;\n } else {\n return <WorkloadTreeFullSpinner workload={workload} verbose={verbose} />;\n }\n}\n\nexport interface WorkloadTreeSpinnerProps {\n readonly workload: Workload$;\n readonly verbose?: boolean;\n}\n","import { inject$ } from '@kyrielle/injector';\nimport { isWorkloadEnded, type Job$, WorkloadState } from '@kyrielle/workload';\nimport { filter$, pipe$, waitFor$ } from 'kyrielle';\nimport process from 'node:process';\nimport { WorkloadTreeCompleted } from '../components/WorkloadTreeCompleted.jsx';\nimport { WorkloadTreeSpinner } from '../components/WorkloadTreeSpinner.jsx';\nimport { SCHEDULER } from '../tokens.js';\nimport { inked } from './inked.jsx';\n\nexport const JobCommandExecuteInk = inked(async function* ({ job, verbose }: JobExecInkProps) {\n const scheduler = await inject$(SCHEDULER);\n\n yield <WorkloadTreeSpinner workload={job} verbose={verbose} />;\n scheduler.register(job);\n\n const outcome = await waitFor$(pipe$(job.state$, filter$(isWorkloadEnded)));\n yield <WorkloadTreeCompleted workload={job} verbose={verbose} />;\n\n if (outcome !== WorkloadState.Succeeded) {\n process.exitCode = 1;\n }\n});\n\n// Types\nexport interface JobExecInkProps {\n readonly job: Job$;\n readonly verbose?: boolean;\n}\n"],"names":["useFlatJobTree","workload","verbose","tree","setTree","useState","flatJobTree","useEffect","oldHash","hashTree","dirty","update","updated","off","pipe$","map$","state$","subscribe","queueMicrotask","collect$","off$","unsubscribe","hash","createHash","id","digest","isSupported","isUnicodeSupported","success","error","WorkloadName","withWorkspace","rest","isScriptWorkflow","_jsxs","Text","_jsx","bold","script","_Fragment","workspace","name","label","type","capitalize","WorkloadSpinner","state","setState","sub","dim","time","duration","seconds","WorkloadState","Blocked","Ready","Starting","Box","color","paddingLeft","wrap","Running","dimColor","Spinner","Canceling","Succeeded","symbols","flexShrink","ms","Failed","Canceled","useScriptsStats","workloads","stats","setStats","countScripts","recount","wkl","WorkloadTreeStats","useMemo","map","item","running","done","failed","canceled","WorkloadTreeCompleted","Static","items","level","marginLeft","WorkloadTreeFullSpinner","flexDirection","useStdoutDimensions","stdout","useStdout","dimensions","setDimensions","columns","Infinity","rows","updateDimensions","on","WorkloadTreeScrollableSpinner","termRows","scroll","setScroll","maxRows","Math","min","length","firstIndex","max","lastIndex","effectiveScroll","useInput","_","key","upArrow","slice","WorkloadTreeSpinner","stdin","useStdin","isRawModeSupported","JobCommandExecuteInk","inked","job","scheduler","inject$","SCHEDULER","register","outcome","waitFor$","filter$","isWorkloadEnded","process","exitCode"],"mappings":"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"}
package/dist/job-plan.js CHANGED
@@ -1,24 +1,25 @@
1
- ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a8bfa776-5522-469e-8774-6ff9983d8055",e._sentryDebugIdIdentifier="sentry-dbid-a8bfa776-5522-469e-8774-6ff9983d8055");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.10"};}catch(e){}}();import chalk from 'chalk';
2
- import { f as flatJobTree, a as isJob, i as isScriptWorkflow } from './flat-job-tree.js';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="890c5cba-0966-4a5c-a92d-c2534d9d9adb",e._sentryDebugIdIdentifier="sentry-dbid-890c5cba-0966-4a5c-a92d-c2534d9d9adb");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.11"};}catch(e){}}();import chalk from 'chalk';
2
+ import { f as flatJobPlan } from './flat-job-plan.js';
3
+ import { i as isScriptWorkflow } from './flat-job-tree.js';
3
4
  import { c as capitalize } from './main.js';
4
- import '@jujulego/tasks';
5
+ import '@kyrielle/workload';
5
6
  import 'kyrielle';
6
7
  import '@kyrielle/injector';
7
8
  import '@sentry/node';
8
9
  import 'node:process';
9
10
  import 'yargs/helpers';
10
- import '@kyrielle/logger';
11
+ import 'node:path';
11
12
  import '@swc/helpers/_/_apply_decs_2203_r';
12
- import 'node:stream/consumers';
13
+ import '@kyrielle/logger';
13
14
  import 'node:fs';
14
15
  import 'path-scurry';
15
- import 'assert';
16
- import 'node:stream';
17
- import 'moo';
18
- import 'node:path';
19
16
  import 'glob';
20
17
  import 'normalize-package-data';
21
18
  import 'semver';
19
+ import 'assert';
20
+ import 'node:stream';
21
+ import 'node:stream/consumers';
22
+ import 'moo';
22
23
  import 'node:child_process';
23
24
  import 'slugify';
24
25
  import 'yargs';
@@ -28,73 +29,6 @@ import 'node:os';
28
29
  import 'cosmiconfig';
29
30
  import 'chalk-template';
30
31
 
31
- function flatJobPlan(job) {
32
- const tree = flatJobTree(job, true);
33
- const index = new Map(tree.map((item, idx)=>[
34
- item.workload.id,
35
- idx + 1
36
- ]));
37
- const plan = [];
38
- let branch = '';
39
- for(let i = 0; i < tree.length; i++){
40
- const item = tree[i];
41
- // Check if branch continues
42
- let branchContinue = false;
43
- for(let j = i + 1; j < tree.length; j++){
44
- if (tree[j].level <= item.level) {
45
- if (tree[j].level === item.level) {
46
- branchContinue = true;
47
- }
48
- break;
49
- }
50
- }
51
- // Compute dependencies
52
- const dependsOn = [];
53
- if (isJob(item.workload)) {
54
- for (const dep of item.workload.dependencies()){
55
- const idx = index.get(dep.id);
56
- if (idx) {
57
- dependsOn.push(idx);
58
- }
59
- }
60
- }
61
- // Update branch
62
- if (branch.length / 3 > item.level) {
63
- branch = branch.slice(0, branch.length - 3);
64
- }
65
- if (item.level > 0 && branch.length / 3 === item.level) {
66
- branch = branch.slice(0, branch.length - 3);
67
- }
68
- if (branch.length / 3 < item.level) {
69
- if (branchContinue) {
70
- plan.push({
71
- ...item,
72
- id: i + 1,
73
- branch: branch + '├─ ',
74
- dependsOn
75
- });
76
- branch += '│ ';
77
- } else {
78
- plan.push({
79
- ...item,
80
- id: i + 1,
81
- branch: branch + '└─ ',
82
- dependsOn
83
- });
84
- branch += ' ';
85
- }
86
- } else {
87
- plan.push({
88
- ...item,
89
- id: i + 1,
90
- branch,
91
- dependsOn
92
- });
93
- }
94
- }
95
- return plan;
96
- }
97
-
98
32
  function workloadName(workload) {
99
33
  if (isScriptWorkflow(workload)) {
100
34
  return `Run ${chalk.bold(workload.script)} script in ${workload.workspace.name}`;