@jujulego/jill 3.0.0-alpha.1 → 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.
- package/README.md +1 -2
- package/bin/jill.js +1 -0
- package/dist/flat-job-plan.js +71 -0
- package/dist/flat-job-plan.js.map +1 -0
- package/dist/flat-job-tree.js +82 -0
- package/dist/flat-job-tree.js.map +1 -0
- package/dist/inked.js +66 -0
- package/dist/inked.js.map +1 -0
- package/dist/instrument.js +9 -0
- package/dist/instrument.js.map +1 -0
- package/dist/job-command-execute.ink.js +530 -0
- package/dist/job-command-execute.ink.js.map +1 -0
- package/dist/job-plan.js +67 -0
- package/dist/job-plan.js.map +1 -0
- package/dist/job-plan.json.js +59 -0
- package/dist/job-plan.json.js.map +1 -0
- package/dist/list.ink.js +54 -0
- package/dist/list.ink.js.map +1 -0
- package/dist/main.js +1941 -38
- package/dist/main.js.map +1 -1
- package/dist/planner.service.js +93 -0
- package/dist/planner.service.js.map +1 -0
- package/dist/tree.ink.js +189 -0
- package/dist/tree.ink.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +49 -48
- package/dist/ajv.config.d.ts +0 -3
- package/dist/commands/each.d.ts +0 -25
- package/dist/commands/exec.d.ts +0 -26
- package/dist/commands/group.d.ts +0 -16
- package/dist/commands/list.d.ts +0 -30
- package/dist/commands/run.d.ts +0 -24
- package/dist/commands/tree.d.ts +0 -6
- package/dist/commons/context.service.d.ts +0 -23
- package/dist/commons/git.service.d.ts +0 -62
- package/dist/commons/logger/log.gateway.d.ts +0 -18
- package/dist/commons/logger/parameters.d.ts +0 -2
- package/dist/commons/logger/thread.gateway.d.ts +0 -12
- package/dist/commons/logger/types.d.ts +0 -2
- package/dist/commons/logger.service.d.ts +0 -1
- package/dist/config/config-loader.d.ts +0 -4
- package/dist/config/config-options.d.ts +0 -5
- package/dist/config/types.d.ts +0 -8
- package/dist/config/utils.d.ts +0 -5
- package/dist/constants.d.ts +0 -1
- package/dist/core.plugin-CxgfxFUI.js +0 -642
- package/dist/core.plugin-CxgfxFUI.js.map +0 -1
- package/dist/core.plugin.d.ts +0 -2
- package/dist/filters/affected.filter.d.ts +0 -12
- package/dist/filters/pipeline.d.ts +0 -11
- package/dist/filters/private.filter.d.ts +0 -7
- package/dist/filters/scripts.filter.d.ts +0 -8
- package/dist/index.d.ts +0 -45
- package/dist/index.js +0 -35
- package/dist/index.js.map +0 -1
- package/dist/ink-command-CsbkuRbm.js +0 -2071
- package/dist/ink-command-CsbkuRbm.js.map +0 -1
- package/dist/ink.config.d.ts +0 -3
- package/dist/inversify.config.d.ts +0 -4
- package/dist/jill.application-DNJpmnCF.js +0 -637
- package/dist/jill.application-DNJpmnCF.js.map +0 -1
- package/dist/jill.application.d.ts +0 -19
- package/dist/main.d.ts +0 -1
- package/dist/middlewares/load-project.d.ts +0 -21
- package/dist/middlewares/load-workspace.d.ts +0 -20
- package/dist/modules/command.d.ts +0 -20
- package/dist/modules/ink-command.d.ts +0 -11
- package/dist/modules/middleware.d.ts +0 -8
- package/dist/modules/module.d.ts +0 -7
- package/dist/modules/plugin-loader.service.d.ts +0 -10
- package/dist/modules/plugin.d.ts +0 -14
- package/dist/modules/service.d.ts +0 -8
- package/dist/modules/task-command.d.ts +0 -14
- package/dist/project/project.d.ts +0 -27
- package/dist/project/project.repository.d.ts +0 -15
- package/dist/project/types.d.ts +0 -1
- package/dist/project/workspace.d.ts +0 -41
- package/dist/tasks/command-task.d.ts +0 -15
- package/dist/tasks/errors.d.ts +0 -4
- package/dist/tasks/script-task.d.ts +0 -27
- package/dist/tasks/task-expression.service.d.ts +0 -25
- package/dist/tasks/task-manager.config.d.ts +0 -3
- package/dist/types.d.ts +0 -11
- package/dist/ui/hooks/useFlatTaskTree.d.ts +0 -14
- package/dist/ui/hooks/useIsVerbose.d.ts +0 -1
- package/dist/ui/hooks/useStdoutDimensions.d.ts +0 -4
- package/dist/ui/layout.d.ts +0 -5
- package/dist/ui/list.d.ts +0 -5
- package/dist/ui/static-logs.d.ts +0 -1
- package/dist/ui/task-name.d.ts +0 -5
- package/dist/ui/task-spinner.d.ts +0 -5
- package/dist/ui/task-tree-completed.d.ts +0 -5
- package/dist/ui/task-tree-full-spinner.d.ts +0 -5
- package/dist/ui/task-tree-scrollable-spinner.d.ts +0 -5
- package/dist/ui/task-tree-spinner.d.ts +0 -5
- package/dist/ui/task-tree-stats.d.ts +0 -5
- package/dist/ui/workspace-tree.d.ts +0 -8
- package/dist/utils/events.d.ts +0 -3
- package/dist/utils/exit.d.ts +0 -4
- package/dist/utils/import.d.ts +0 -4
- package/dist/utils/json.d.ts +0 -1
- package/dist/utils/streams.d.ts +0 -3
- package/dist/utils/string.d.ts +0 -2
- package/dist/utils/worker-cache.d.ts +0 -3
- package/dist/workspace-tree-VWKE0B6b.js +0 -1120
- package/dist/workspace-tree-VWKE0B6b.js.map +0 -1
|
@@ -0,0 +1,530 @@
|
|
|
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';
|
|
2
|
+
import { inject$ } from '@kyrielle/injector';
|
|
3
|
+
import { WorkloadState, isWorkloadEnded } from '@kyrielle/workload';
|
|
4
|
+
import { pipe$, map$, collect$, off$, waitFor$, filter$ } from 'kyrielle';
|
|
5
|
+
import process from 'node:process';
|
|
6
|
+
import { Text, Box, Static, useStdout, useInput, useStdin } from 'ink';
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
9
|
+
import { f as flatJobTree, i as isScriptWorkflow } from './flat-job-tree.js';
|
|
10
|
+
import Spinner from 'ink-spinner';
|
|
11
|
+
import ms from 'pretty-ms';
|
|
12
|
+
import isUnicodeSupported from 'is-unicode-supported';
|
|
13
|
+
import { c as capitalize, S as SCHEDULER } from './main.js';
|
|
14
|
+
import { i as inked } from './inked.js';
|
|
15
|
+
import '@sentry/node';
|
|
16
|
+
import 'yargs/helpers';
|
|
17
|
+
import 'node:path';
|
|
18
|
+
import '@swc/helpers/_/_apply_decs_2203_r';
|
|
19
|
+
import '@kyrielle/logger';
|
|
20
|
+
import 'node:fs';
|
|
21
|
+
import 'path-scurry';
|
|
22
|
+
import 'glob';
|
|
23
|
+
import 'normalize-package-data';
|
|
24
|
+
import 'semver';
|
|
25
|
+
import 'assert';
|
|
26
|
+
import 'node:stream';
|
|
27
|
+
import 'node:stream/consumers';
|
|
28
|
+
import 'moo';
|
|
29
|
+
import 'node:child_process';
|
|
30
|
+
import 'chalk';
|
|
31
|
+
import 'slugify';
|
|
32
|
+
import 'yargs';
|
|
33
|
+
import '@jujulego/quick-tag';
|
|
34
|
+
import 'ajv';
|
|
35
|
+
import 'node:os';
|
|
36
|
+
import 'cosmiconfig';
|
|
37
|
+
import 'chalk-template';
|
|
38
|
+
|
|
39
|
+
// Hook
|
|
40
|
+
function useFlatJobTree(workload, verbose) {
|
|
41
|
+
const [tree, setTree] = useState(()=>flatJobTree(workload, verbose));
|
|
42
|
+
useEffect(()=>{
|
|
43
|
+
const oldHash = hashTree(tree);
|
|
44
|
+
let dirty = false;
|
|
45
|
+
function update() {
|
|
46
|
+
if (!dirty) return;
|
|
47
|
+
const updated = flatJobTree(workload, verbose);
|
|
48
|
+
if (hashTree(updated) !== oldHash) {
|
|
49
|
+
setTree(updated);
|
|
50
|
+
}
|
|
51
|
+
dirty = false;
|
|
52
|
+
}
|
|
53
|
+
const off = pipe$(tree, map$(({ workload })=>workload.state$.subscribe(()=>{
|
|
54
|
+
dirty = true;
|
|
55
|
+
queueMicrotask(update);
|
|
56
|
+
})), collect$(off$()));
|
|
57
|
+
return ()=>{
|
|
58
|
+
dirty = false;
|
|
59
|
+
off.unsubscribe();
|
|
60
|
+
};
|
|
61
|
+
}, [
|
|
62
|
+
tree,
|
|
63
|
+
verbose,
|
|
64
|
+
workload
|
|
65
|
+
]);
|
|
66
|
+
return tree;
|
|
67
|
+
}
|
|
68
|
+
// Utils
|
|
69
|
+
function hashTree(tree) {
|
|
70
|
+
const hash = createHash('sha256');
|
|
71
|
+
for (const { workload } of tree){
|
|
72
|
+
hash.update(workload.id);
|
|
73
|
+
}
|
|
74
|
+
return hash.digest('hex');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const isSupported = !isUnicodeSupported();
|
|
78
|
+
const success = isSupported ? '✔' : '√';
|
|
79
|
+
const error = isSupported ? '✖' : '×';
|
|
80
|
+
|
|
81
|
+
// Component
|
|
82
|
+
function WorkloadName({ workload, withWorkspace, ...rest }) {
|
|
83
|
+
if (isScriptWorkflow(workload)) {
|
|
84
|
+
return /*#__PURE__*/ jsxs(Text, {
|
|
85
|
+
...rest,
|
|
86
|
+
children: [
|
|
87
|
+
"Run ",
|
|
88
|
+
/*#__PURE__*/ jsx(Text, {
|
|
89
|
+
bold: true,
|
|
90
|
+
children: workload.script
|
|
91
|
+
}),
|
|
92
|
+
" script",
|
|
93
|
+
withWorkspace && /*#__PURE__*/ jsxs(Fragment, {
|
|
94
|
+
children: [
|
|
95
|
+
' ',
|
|
96
|
+
"in ",
|
|
97
|
+
workload.workspace.name
|
|
98
|
+
]
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
let name = workload.label;
|
|
104
|
+
if (workload.type !== 'spawn') {
|
|
105
|
+
name = capitalize(name);
|
|
106
|
+
}
|
|
107
|
+
return /*#__PURE__*/ jsx(Text, {
|
|
108
|
+
...rest,
|
|
109
|
+
children: name
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Component
|
|
114
|
+
function WorkloadSpinner({ workload }) {
|
|
115
|
+
// Track task state
|
|
116
|
+
const [state, setState] = useState(workload.state());
|
|
117
|
+
useEffect(()=>{
|
|
118
|
+
const sub = workload.state$.subscribe(setState);
|
|
119
|
+
return sub.unsubscribe;
|
|
120
|
+
}, [
|
|
121
|
+
workload.state$
|
|
122
|
+
]);
|
|
123
|
+
// Render
|
|
124
|
+
const dim = workload.type === 'spawn';
|
|
125
|
+
const time = workload.duration().seconds() * 1000;
|
|
126
|
+
switch(state){
|
|
127
|
+
case WorkloadState.Blocked:
|
|
128
|
+
case WorkloadState.Ready:
|
|
129
|
+
case WorkloadState.Starting:
|
|
130
|
+
return /*#__PURE__*/ jsxs(Box, {
|
|
131
|
+
children: [
|
|
132
|
+
/*#__PURE__*/ jsx(Text, {
|
|
133
|
+
color: "grey",
|
|
134
|
+
children: '\u00B7'
|
|
135
|
+
}),
|
|
136
|
+
/*#__PURE__*/ jsx(Box, {
|
|
137
|
+
paddingLeft: 1,
|
|
138
|
+
children: /*#__PURE__*/ jsx(WorkloadName, {
|
|
139
|
+
color: "grey",
|
|
140
|
+
wrap: "truncate",
|
|
141
|
+
workload: workload,
|
|
142
|
+
withWorkspace: true
|
|
143
|
+
})
|
|
144
|
+
})
|
|
145
|
+
]
|
|
146
|
+
});
|
|
147
|
+
case WorkloadState.Running:
|
|
148
|
+
return /*#__PURE__*/ jsxs(Box, {
|
|
149
|
+
children: [
|
|
150
|
+
/*#__PURE__*/ jsx(Text, {
|
|
151
|
+
dimColor: dim,
|
|
152
|
+
children: /*#__PURE__*/ jsx(Spinner, {})
|
|
153
|
+
}),
|
|
154
|
+
/*#__PURE__*/ jsx(Box, {
|
|
155
|
+
paddingLeft: 1,
|
|
156
|
+
children: /*#__PURE__*/ jsx(WorkloadName, {
|
|
157
|
+
dimColor: dim,
|
|
158
|
+
wrap: "truncate",
|
|
159
|
+
workload: workload,
|
|
160
|
+
withWorkspace: true
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
]
|
|
164
|
+
});
|
|
165
|
+
case WorkloadState.Canceling:
|
|
166
|
+
return /*#__PURE__*/ jsxs(Box, {
|
|
167
|
+
children: [
|
|
168
|
+
/*#__PURE__*/ jsx(Text, {
|
|
169
|
+
dimColor: dim,
|
|
170
|
+
color: "grey",
|
|
171
|
+
children: /*#__PURE__*/ jsx(Spinner, {
|
|
172
|
+
type: "line2"
|
|
173
|
+
})
|
|
174
|
+
}),
|
|
175
|
+
/*#__PURE__*/ jsx(Box, {
|
|
176
|
+
paddingLeft: 1,
|
|
177
|
+
children: /*#__PURE__*/ jsx(WorkloadName, {
|
|
178
|
+
dimColor: dim,
|
|
179
|
+
color: "grey",
|
|
180
|
+
wrap: "truncate",
|
|
181
|
+
workload: workload,
|
|
182
|
+
withWorkspace: true
|
|
183
|
+
})
|
|
184
|
+
})
|
|
185
|
+
]
|
|
186
|
+
});
|
|
187
|
+
case WorkloadState.Succeeded:
|
|
188
|
+
return /*#__PURE__*/ jsxs(Box, {
|
|
189
|
+
children: [
|
|
190
|
+
/*#__PURE__*/ jsx(Text, {
|
|
191
|
+
color: "green",
|
|
192
|
+
children: success
|
|
193
|
+
}),
|
|
194
|
+
/*#__PURE__*/ jsx(Box, {
|
|
195
|
+
paddingLeft: 1,
|
|
196
|
+
children: /*#__PURE__*/ jsx(WorkloadName, {
|
|
197
|
+
dimColor: dim,
|
|
198
|
+
wrap: "truncate",
|
|
199
|
+
workload: workload,
|
|
200
|
+
withWorkspace: true
|
|
201
|
+
})
|
|
202
|
+
}),
|
|
203
|
+
/*#__PURE__*/ jsx(Box, {
|
|
204
|
+
paddingLeft: 1,
|
|
205
|
+
flexShrink: 0,
|
|
206
|
+
children: /*#__PURE__*/ jsxs(Text, {
|
|
207
|
+
color: dim ? 'grey' : 'dim',
|
|
208
|
+
children: [
|
|
209
|
+
"(took ",
|
|
210
|
+
ms(time),
|
|
211
|
+
")"
|
|
212
|
+
]
|
|
213
|
+
})
|
|
214
|
+
})
|
|
215
|
+
]
|
|
216
|
+
});
|
|
217
|
+
case WorkloadState.Failed:
|
|
218
|
+
return /*#__PURE__*/ jsxs(Box, {
|
|
219
|
+
children: [
|
|
220
|
+
/*#__PURE__*/ jsx(Text, {
|
|
221
|
+
color: "red",
|
|
222
|
+
children: error
|
|
223
|
+
}),
|
|
224
|
+
/*#__PURE__*/ jsx(Box, {
|
|
225
|
+
paddingLeft: 1,
|
|
226
|
+
children: /*#__PURE__*/ jsx(WorkloadName, {
|
|
227
|
+
dimColor: dim,
|
|
228
|
+
wrap: "truncate",
|
|
229
|
+
workload: workload,
|
|
230
|
+
withWorkspace: true
|
|
231
|
+
})
|
|
232
|
+
}),
|
|
233
|
+
/*#__PURE__*/ jsx(Box, {
|
|
234
|
+
paddingLeft: 1,
|
|
235
|
+
flexShrink: 0,
|
|
236
|
+
children: /*#__PURE__*/ jsxs(Text, {
|
|
237
|
+
color: dim ? 'grey' : 'dim',
|
|
238
|
+
children: [
|
|
239
|
+
"(took ",
|
|
240
|
+
ms(time),
|
|
241
|
+
")"
|
|
242
|
+
]
|
|
243
|
+
})
|
|
244
|
+
})
|
|
245
|
+
]
|
|
246
|
+
});
|
|
247
|
+
case WorkloadState.Canceled:
|
|
248
|
+
return /*#__PURE__*/ jsxs(Box, {
|
|
249
|
+
children: [
|
|
250
|
+
/*#__PURE__*/ jsx(Text, {
|
|
251
|
+
dimColor: true,
|
|
252
|
+
children: "-"
|
|
253
|
+
}),
|
|
254
|
+
/*#__PURE__*/ jsx(Box, {
|
|
255
|
+
paddingLeft: 1,
|
|
256
|
+
children: /*#__PURE__*/ jsx(WorkloadName, {
|
|
257
|
+
dimColor: true,
|
|
258
|
+
wrap: "truncate",
|
|
259
|
+
workload: workload,
|
|
260
|
+
withWorkspace: true
|
|
261
|
+
})
|
|
262
|
+
}),
|
|
263
|
+
/*#__PURE__*/ jsx(Box, {
|
|
264
|
+
paddingLeft: 1,
|
|
265
|
+
flexShrink: 0,
|
|
266
|
+
children: /*#__PURE__*/ jsxs(Text, {
|
|
267
|
+
color: dim ? 'grey' : 'dim',
|
|
268
|
+
children: [
|
|
269
|
+
"(took ",
|
|
270
|
+
ms(time),
|
|
271
|
+
")"
|
|
272
|
+
]
|
|
273
|
+
})
|
|
274
|
+
})
|
|
275
|
+
]
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// Hook
|
|
281
|
+
function useScriptsStats(workloads) {
|
|
282
|
+
const [stats, setStats] = useState(()=>countScripts(workloads));
|
|
283
|
+
useEffect(()=>{
|
|
284
|
+
let dirty = false;
|
|
285
|
+
function recount() {
|
|
286
|
+
if (!dirty) return;
|
|
287
|
+
setStats(countScripts(workloads));
|
|
288
|
+
dirty = false;
|
|
289
|
+
}
|
|
290
|
+
const off = pipe$(workloads, map$((wkl)=>wkl.state$.subscribe(()=>{
|
|
291
|
+
dirty = true;
|
|
292
|
+
queueMicrotask(recount);
|
|
293
|
+
})), collect$(off$()));
|
|
294
|
+
return ()=>{
|
|
295
|
+
dirty = false;
|
|
296
|
+
off.unsubscribe();
|
|
297
|
+
};
|
|
298
|
+
}, [
|
|
299
|
+
workloads
|
|
300
|
+
]);
|
|
301
|
+
return stats;
|
|
302
|
+
}
|
|
303
|
+
// Utils
|
|
304
|
+
function countScripts(workloads) {
|
|
305
|
+
const stats = {
|
|
306
|
+
[WorkloadState.Ready]: 0,
|
|
307
|
+
[WorkloadState.Blocked]: 0,
|
|
308
|
+
[WorkloadState.Starting]: 0,
|
|
309
|
+
[WorkloadState.Running]: 0,
|
|
310
|
+
[WorkloadState.Succeeded]: 0,
|
|
311
|
+
[WorkloadState.Failed]: 0,
|
|
312
|
+
[WorkloadState.Canceling]: 0,
|
|
313
|
+
[WorkloadState.Canceled]: 0
|
|
314
|
+
};
|
|
315
|
+
for (const workload of workloads){
|
|
316
|
+
if (workload.type === 'script') {
|
|
317
|
+
stats[workload.state()] += 1;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return stats;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// Component
|
|
324
|
+
function WorkloadTreeStats({ tree, ...rest }) {
|
|
325
|
+
const workloads = useMemo(()=>tree.map((item)=>item.workload), [
|
|
326
|
+
tree
|
|
327
|
+
]);
|
|
328
|
+
const stats = useScriptsStats(workloads);
|
|
329
|
+
// Render
|
|
330
|
+
const running = stats[WorkloadState.Running] + stats[WorkloadState.Starting] + stats[WorkloadState.Canceling];
|
|
331
|
+
const done = stats[WorkloadState.Succeeded];
|
|
332
|
+
const failed = stats[WorkloadState.Failed];
|
|
333
|
+
const canceled = stats[WorkloadState.Canceled];
|
|
334
|
+
return /*#__PURE__*/ jsxs(Text, {
|
|
335
|
+
...rest,
|
|
336
|
+
children: [
|
|
337
|
+
running > 0 && /*#__PURE__*/ jsxs(Fragment, {
|
|
338
|
+
children: [
|
|
339
|
+
/*#__PURE__*/ jsx(Spinner, {
|
|
340
|
+
type: "sand"
|
|
341
|
+
}),
|
|
342
|
+
" ",
|
|
343
|
+
/*#__PURE__*/ jsx(Text, {
|
|
344
|
+
bold: true,
|
|
345
|
+
children: running
|
|
346
|
+
}),
|
|
347
|
+
" running"
|
|
348
|
+
]
|
|
349
|
+
}),
|
|
350
|
+
running > 0 && done > 0 && ', ',
|
|
351
|
+
done > 0 && /*#__PURE__*/ jsxs(Text, {
|
|
352
|
+
color: "green",
|
|
353
|
+
children: [
|
|
354
|
+
success,
|
|
355
|
+
" ",
|
|
356
|
+
done,
|
|
357
|
+
" done"
|
|
358
|
+
]
|
|
359
|
+
}),
|
|
360
|
+
running + done > 0 && failed > 0 && ', ',
|
|
361
|
+
failed > 0 && /*#__PURE__*/ jsxs(Text, {
|
|
362
|
+
color: "red",
|
|
363
|
+
children: [
|
|
364
|
+
error,
|
|
365
|
+
" ",
|
|
366
|
+
failed,
|
|
367
|
+
" failed"
|
|
368
|
+
]
|
|
369
|
+
}),
|
|
370
|
+
running + done + failed > 0 && canceled > 0 && ', ',
|
|
371
|
+
canceled > 0 && /*#__PURE__*/ jsxs(Text, {
|
|
372
|
+
dimColor: true,
|
|
373
|
+
children: [
|
|
374
|
+
"- ",
|
|
375
|
+
canceled,
|
|
376
|
+
" canceled"
|
|
377
|
+
]
|
|
378
|
+
})
|
|
379
|
+
]
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Component
|
|
384
|
+
function WorkloadTreeCompleted({ workload, verbose }) {
|
|
385
|
+
const tree = useFlatJobTree(workload, verbose);
|
|
386
|
+
// Render
|
|
387
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
388
|
+
children: [
|
|
389
|
+
/*#__PURE__*/ jsx(Static, {
|
|
390
|
+
items: tree,
|
|
391
|
+
children: ({ workload, level })=>/*#__PURE__*/ jsx(Box, {
|
|
392
|
+
marginLeft: level * 2,
|
|
393
|
+
flexShrink: 0,
|
|
394
|
+
children: /*#__PURE__*/ jsx(WorkloadSpinner, {
|
|
395
|
+
workload: workload
|
|
396
|
+
})
|
|
397
|
+
}, workload.id)
|
|
398
|
+
}),
|
|
399
|
+
/*#__PURE__*/ jsx(WorkloadTreeStats, {
|
|
400
|
+
tree: tree
|
|
401
|
+
})
|
|
402
|
+
]
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// Component
|
|
407
|
+
function WorkloadTreeFullSpinner({ workload, verbose }) {
|
|
408
|
+
const tree = useFlatJobTree(workload, verbose);
|
|
409
|
+
// Render
|
|
410
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
411
|
+
children: [
|
|
412
|
+
/*#__PURE__*/ jsx(Box, {
|
|
413
|
+
flexDirection: "column",
|
|
414
|
+
children: tree.map(({ workload, level })=>/*#__PURE__*/ jsx(Box, {
|
|
415
|
+
marginLeft: level * 2,
|
|
416
|
+
flexShrink: 0,
|
|
417
|
+
children: /*#__PURE__*/ jsx(WorkloadSpinner, {
|
|
418
|
+
workload: workload
|
|
419
|
+
})
|
|
420
|
+
}, workload.id))
|
|
421
|
+
}),
|
|
422
|
+
/*#__PURE__*/ jsx(WorkloadTreeStats, {
|
|
423
|
+
tree: tree
|
|
424
|
+
})
|
|
425
|
+
]
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
function useStdoutDimensions() {
|
|
430
|
+
const { stdout } = useStdout();
|
|
431
|
+
const [dimensions, setDimensions] = useState({
|
|
432
|
+
columns: stdout.columns ?? Infinity,
|
|
433
|
+
rows: stdout.rows ?? Infinity
|
|
434
|
+
});
|
|
435
|
+
useEffect(()=>{
|
|
436
|
+
const updateDimensions = ()=>setDimensions({
|
|
437
|
+
columns: stdout.columns ?? Infinity,
|
|
438
|
+
rows: stdout.rows ?? Infinity
|
|
439
|
+
});
|
|
440
|
+
stdout.on('resize', updateDimensions);
|
|
441
|
+
return ()=>{
|
|
442
|
+
stdout.off('resize', updateDimensions);
|
|
443
|
+
};
|
|
444
|
+
}, [
|
|
445
|
+
stdout
|
|
446
|
+
]);
|
|
447
|
+
return dimensions;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
// Component
|
|
451
|
+
function WorkloadTreeScrollableSpinner({ workload, verbose }) {
|
|
452
|
+
const tree = useFlatJobTree(workload, verbose);
|
|
453
|
+
// Manage scroll
|
|
454
|
+
const { rows: termRows } = useStdoutDimensions();
|
|
455
|
+
const [scroll, setScroll] = useState(0);
|
|
456
|
+
const maxRows = Math.min(termRows - 4, tree.length);
|
|
457
|
+
const firstIndex = Math.max(0, tree.length - scroll - maxRows);
|
|
458
|
+
const lastIndex = Math.min(tree.length, firstIndex + maxRows);
|
|
459
|
+
const effectiveScroll = tree.length - lastIndex;
|
|
460
|
+
useInput((_, key)=>{
|
|
461
|
+
if (key.upArrow) {
|
|
462
|
+
setScroll(Math.min(tree.length - maxRows, effectiveScroll + 1));
|
|
463
|
+
} else {
|
|
464
|
+
setScroll(Math.max(0, effectiveScroll - 1));
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
// Render
|
|
468
|
+
const slice = tree.slice(firstIndex, lastIndex);
|
|
469
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
470
|
+
children: [
|
|
471
|
+
/*#__PURE__*/ jsx(Box, {
|
|
472
|
+
flexDirection: "column",
|
|
473
|
+
children: slice.map(({ workload, level })=>/*#__PURE__*/ jsx(Box, {
|
|
474
|
+
marginLeft: level * 2,
|
|
475
|
+
flexShrink: 0,
|
|
476
|
+
children: /*#__PURE__*/ jsx(WorkloadSpinner, {
|
|
477
|
+
workload: workload
|
|
478
|
+
})
|
|
479
|
+
}, workload.id))
|
|
480
|
+
}),
|
|
481
|
+
/*#__PURE__*/ jsxs(Text, {
|
|
482
|
+
children: [
|
|
483
|
+
/*#__PURE__*/ jsx(WorkloadTreeStats, {
|
|
484
|
+
tree: tree
|
|
485
|
+
}),
|
|
486
|
+
termRows < tree.length && /*#__PURE__*/ jsx(Text, {
|
|
487
|
+
color: "grey",
|
|
488
|
+
children: " | use keyboard arrows to scroll"
|
|
489
|
+
})
|
|
490
|
+
]
|
|
491
|
+
})
|
|
492
|
+
]
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// Component
|
|
497
|
+
function WorkloadTreeSpinner({ workload, verbose }) {
|
|
498
|
+
const stdin = useStdin();
|
|
499
|
+
if (stdin.isRawModeSupported) {
|
|
500
|
+
return /*#__PURE__*/ jsx(WorkloadTreeScrollableSpinner, {
|
|
501
|
+
workload: workload,
|
|
502
|
+
verbose: verbose
|
|
503
|
+
});
|
|
504
|
+
} else {
|
|
505
|
+
return /*#__PURE__*/ jsx(WorkloadTreeFullSpinner, {
|
|
506
|
+
workload: workload,
|
|
507
|
+
verbose: verbose
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
const JobCommandExecuteInk = inked(async function*({ job, verbose }) {
|
|
513
|
+
const scheduler = await inject$(SCHEDULER);
|
|
514
|
+
yield /*#__PURE__*/ jsx(WorkloadTreeSpinner, {
|
|
515
|
+
workload: job,
|
|
516
|
+
verbose: verbose
|
|
517
|
+
});
|
|
518
|
+
scheduler.register(job);
|
|
519
|
+
const outcome = await waitFor$(pipe$(job.state$, filter$(isWorkloadEnded)));
|
|
520
|
+
yield /*#__PURE__*/ jsx(WorkloadTreeCompleted, {
|
|
521
|
+
workload: job,
|
|
522
|
+
verbose: verbose
|
|
523
|
+
});
|
|
524
|
+
if (outcome !== WorkloadState.Succeeded) {
|
|
525
|
+
process.exitCode = 1;
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
export { JobCommandExecuteInk };
|
|
530
|
+
//# sourceMappingURL=job-command-execute.ink.js.map
|
|
@@ -0,0 +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 '@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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"}
|