@jujulego/jill 3.0.7 → 3.0.9
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/dist/flat-job-plan.js +1 -1
- package/dist/flat-job-plan.js.map +1 -1
- package/dist/flat-job-tree.js +1 -1
- package/dist/flat-job-tree.js.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/inked.js +4603 -640
- package/dist/inked.js.map +1 -1
- package/dist/instrument.js +1 -1
- package/dist/instrument.js.map +1 -1
- package/dist/job-command-execute.ink.js +86 -59
- package/dist/job-command-execute.ink.js.map +1 -1
- package/dist/job-plan.js +2 -1
- package/dist/job-plan.js.map +1 -1
- package/dist/job-plan.json.js +2 -1
- package/dist/job-plan.json.js.map +1 -1
- package/dist/list.ink.js +6 -6
- package/dist/list.ink.js.map +1 -1
- package/dist/main.js +4293 -5604
- package/dist/main.js.map +1 -1
- package/dist/planner.service.js +2 -1
- package/dist/planner.service.js.map +1 -1
- package/dist/tree.ink.js +6 -6
- package/dist/tree.ink.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +31 -31
package/dist/instrument.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"jill@3.0.9"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="69d627b0-a502-4990-affa-044c26cd58fb",e._sentryDebugIdIdentifier="sentry-dbid-69d627b0-a502-4990-affa-044c26cd58fb");}catch(e){}}();import { init } from '@sentry/node';
|
|
2
2
|
|
|
3
3
|
init({
|
|
4
4
|
dsn: 'https://53e6d10c16975ebd025175d9836d039b@o4508229080055808.ingest.de.sentry.io/4509876546895952',
|
package/dist/instrument.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrument.js","sources":["../src/instrument.ts"],"sourcesContent":["import { init } from '@sentry/node';\n\ninit({\n dsn: 'https://53e6d10c16975ebd025175d9836d039b@o4508229080055808.ingest.de.sentry.io/4509876546895952',\n sendDefaultPii: false,\n tracesSampleRate: 1.0,\n enabled: process.env.DISABLE_TRACING !== 'true',\n});\n"],"names":["init","dsn","sendDefaultPii","tracesSampleRate","enabled","process","env","DISABLE_TRACING"],"mappings":";;AAEAA,IAAAA,CAAK
|
|
1
|
+
{"version":3,"file":"instrument.js","sources":["../src/instrument.ts"],"sourcesContent":["import { init } from '@sentry/node';\n\ninit({\n dsn: 'https://53e6d10c16975ebd025175d9836d039b@o4508229080055808.ingest.de.sentry.io/4509876546895952',\n sendDefaultPii: false,\n tracesSampleRate: 1.0,\n enabled: process.env.DISABLE_TRACING !== 'true',\n});\n"],"names":["init","dsn","sendDefaultPii","tracesSampleRate","enabled","process","env","DISABLE_TRACING"],"mappings":";;AAEAA,IAAAA,CAAK;IACHC,GAAAA,EAAK,CAAA,KAAA,CAAA,CAAA,CAAA,gCAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,gBAAA,CAAA;IACLC,cAAAA,EAAgB,KAAA;IAChBC,gBAAAA,EAAkB,CAAA,CAAA,CAAA;AAClBC,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAAAA,CAASC,OAAAA,CAAQC,GAAG,CAACC,eAAe,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,IAAA;AAC3C,CAAA,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"jill@3.0.9"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9d8fa87a-70e8-4b1f-a4f7-a813d8fa7042",e._sentryDebugIdIdentifier="sentry-dbid-9d8fa87a-70e8-4b1f-a4f7-a813d8fa7042");}catch(e){}}();import { r as reactExports, S as StdinContext, p as parseKeypress, n as nonAlphanumericKeys, a as reconciler, b as StdoutContext, j as jsxRuntimeExports, T as Text, B as Box, i as inked } from './inked.js';
|
|
2
2
|
import process from 'node:process';
|
|
3
3
|
import 'node:stream';
|
|
4
|
-
import 'node:events';
|
|
5
4
|
import { createHash } from 'node:crypto';
|
|
6
5
|
import { f as flatJobTree, i as isScriptWorkflow } from './flat-job-tree.js';
|
|
7
6
|
import { p as pipe$, c as collect$, m as map$, a as capitalize, W as WorkloadState, i as inject$, S as SCHEDULER, w as waitFor$, f as filter$, b as isWorkloadEnded } from './main.js';
|
|
@@ -9,10 +8,12 @@ import { S as Spinner } from './index.js';
|
|
|
9
8
|
import '@sentry/node';
|
|
10
9
|
import 'assert';
|
|
11
10
|
import 'events';
|
|
12
|
-
import 'node:
|
|
11
|
+
import 'node:child_process';
|
|
13
12
|
import 'node:fs';
|
|
13
|
+
import 'node:tty';
|
|
14
|
+
import 'node:os';
|
|
15
|
+
import 'node:events';
|
|
14
16
|
import 'module';
|
|
15
|
-
import 'node:buffer';
|
|
16
17
|
import 'yargs/helpers';
|
|
17
18
|
import 'node:path';
|
|
18
19
|
import '@swc/helpers/_/_apply_decs_2203_r';
|
|
@@ -24,12 +25,11 @@ import 'node:async_hooks';
|
|
|
24
25
|
import 'url';
|
|
25
26
|
import 'node:module';
|
|
26
27
|
import 'util';
|
|
27
|
-
import 'node:child_process';
|
|
28
28
|
import 'node:stream/consumers';
|
|
29
|
-
import 'node:tty';
|
|
30
29
|
import 'yargs';
|
|
31
30
|
import 'fs/promises';
|
|
32
31
|
import 'path';
|
|
32
|
+
import 'crypto';
|
|
33
33
|
import 'typescript';
|
|
34
34
|
import 'os';
|
|
35
35
|
|
|
@@ -192,11 +192,13 @@ function prettyMilliseconds(milliseconds, options) {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
/**
|
|
195
|
-
|
|
195
|
+
A React hook that returns the stdin stream and stdin-related utilities.
|
|
196
196
|
*/ const useStdin = ()=>reactExports.useContext(StdinContext);
|
|
197
|
+
const useStdinContext = ()=>reactExports.useContext(StdinContext);
|
|
197
198
|
|
|
198
199
|
/**
|
|
199
|
-
|
|
200
|
+
A React hook that returns `void` and handles user input.
|
|
201
|
+
It's a more convenient alternative to using `StdinContext` and listening for `data` events. The callback you pass to `useInput` is called for each character when the user enters any input. However, if the user pastes text and it's more than one character, the callback will be called only once, and the whole string will be passed as `input`.
|
|
200
202
|
|
|
201
203
|
```
|
|
202
204
|
import {useInput} from 'ink';
|
|
@@ -217,7 +219,7 @@ const UserInput = () => {
|
|
|
217
219
|
```
|
|
218
220
|
*/ const useInput = (inputHandler, options = {})=>{
|
|
219
221
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
220
|
-
const {
|
|
222
|
+
const { setRawMode, internal_exitOnCtrlC, internal_eventEmitter } = useStdinContext();
|
|
221
223
|
reactExports.useEffect(()=>{
|
|
222
224
|
if (options.isActive === false) {
|
|
223
225
|
return;
|
|
@@ -230,68 +232,93 @@ const UserInput = () => {
|
|
|
230
232
|
options.isActive,
|
|
231
233
|
setRawMode
|
|
232
234
|
]);
|
|
235
|
+
const handleData = reactExports.useEffectEvent((data)=>{
|
|
236
|
+
const keypress = parseKeypress(data);
|
|
237
|
+
const key = {
|
|
238
|
+
upArrow: keypress.name === 'up',
|
|
239
|
+
downArrow: keypress.name === 'down',
|
|
240
|
+
leftArrow: keypress.name === 'left',
|
|
241
|
+
rightArrow: keypress.name === 'right',
|
|
242
|
+
pageDown: keypress.name === 'pagedown',
|
|
243
|
+
pageUp: keypress.name === 'pageup',
|
|
244
|
+
home: keypress.name === 'home',
|
|
245
|
+
end: keypress.name === 'end',
|
|
246
|
+
return: keypress.name === 'return',
|
|
247
|
+
escape: keypress.name === 'escape',
|
|
248
|
+
ctrl: keypress.ctrl,
|
|
249
|
+
shift: keypress.shift,
|
|
250
|
+
tab: keypress.name === 'tab',
|
|
251
|
+
backspace: keypress.name === 'backspace',
|
|
252
|
+
delete: keypress.name === 'delete',
|
|
253
|
+
meta: keypress.meta,
|
|
254
|
+
// Kitty keyboard protocol modifiers
|
|
255
|
+
super: keypress.super ?? false,
|
|
256
|
+
hyper: keypress.hyper ?? false,
|
|
257
|
+
capsLock: keypress.capsLock ?? false,
|
|
258
|
+
numLock: keypress.numLock ?? false,
|
|
259
|
+
eventType: keypress.eventType
|
|
260
|
+
};
|
|
261
|
+
let input;
|
|
262
|
+
if (keypress.isKittyProtocol) {
|
|
263
|
+
// Use text-as-codepoints field for printable keys (needed when
|
|
264
|
+
// reportAllKeysAsEscapeCodes flag is enabled), suppress non-printable
|
|
265
|
+
if (keypress.isPrintable) {
|
|
266
|
+
input = keypress.text ?? keypress.name;
|
|
267
|
+
} else if (keypress.ctrl && keypress.name.length === 1) {
|
|
268
|
+
// Ctrl+letter via codepoint 1-26 form: not printable text, but
|
|
269
|
+
// the letter name must flow through so handlers (e.g. exitOnCtrlC
|
|
270
|
+
// checking `input === 'c' && key.ctrl`) still work.
|
|
271
|
+
input = keypress.name;
|
|
272
|
+
} else {
|
|
273
|
+
input = '';
|
|
274
|
+
}
|
|
275
|
+
} else if (keypress.ctrl) {
|
|
276
|
+
// Keypress.name is guaranteed non-undefined by parseKeypress,
|
|
277
|
+
// but guard defensively since a TypeError here would crash the
|
|
278
|
+
// entire Ink app (see https://github.com/vadimdemedes/ink/issues/901).
|
|
279
|
+
input = keypress.name ?? '';
|
|
280
|
+
} else {
|
|
281
|
+
input = keypress.sequence;
|
|
282
|
+
}
|
|
283
|
+
if (!keypress.isKittyProtocol && nonAlphanumericKeys.includes(keypress.name)) {
|
|
284
|
+
input = '';
|
|
285
|
+
}
|
|
286
|
+
// Strip escape prefix from broken/incomplete sequences that
|
|
287
|
+
// parseKeypress did not fully resolve (e.g. a flushed "\u001B[").
|
|
288
|
+
if (input.startsWith('\u001B')) {
|
|
289
|
+
input = input.slice(1);
|
|
290
|
+
}
|
|
291
|
+
if (input.length === 1 && /[A-Z]/.test(input)) {
|
|
292
|
+
key.shift = true;
|
|
293
|
+
}
|
|
294
|
+
// If app is supposed to exit on Ctrl+C, skip input listeners.
|
|
295
|
+
if (input === 'c' && key.ctrl && internal_exitOnCtrlC) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
// Use discreteUpdates to assign DiscreteEventPriority to state
|
|
299
|
+
// updates from keyboard input, ensuring they are processed at the
|
|
300
|
+
// highest priority in concurrent mode.
|
|
301
|
+
// @ts-expect-error Types require 5 arguments (fn, a, b, c, d) but only fn is needed at runtime.
|
|
302
|
+
reconciler.discreteUpdates(()=>{
|
|
303
|
+
inputHandler(input, key);
|
|
304
|
+
});
|
|
305
|
+
});
|
|
233
306
|
reactExports.useEffect(()=>{
|
|
234
307
|
if (options.isActive === false) {
|
|
235
308
|
return;
|
|
236
309
|
}
|
|
237
|
-
|
|
238
|
-
const keypress = parseKeypress(data);
|
|
239
|
-
const key = {
|
|
240
|
-
upArrow: keypress.name === 'up',
|
|
241
|
-
downArrow: keypress.name === 'down',
|
|
242
|
-
leftArrow: keypress.name === 'left',
|
|
243
|
-
rightArrow: keypress.name === 'right',
|
|
244
|
-
pageDown: keypress.name === 'pagedown',
|
|
245
|
-
pageUp: keypress.name === 'pageup',
|
|
246
|
-
home: keypress.name === 'home',
|
|
247
|
-
end: keypress.name === 'end',
|
|
248
|
-
return: keypress.name === 'return',
|
|
249
|
-
escape: keypress.name === 'escape',
|
|
250
|
-
ctrl: keypress.ctrl,
|
|
251
|
-
shift: keypress.shift,
|
|
252
|
-
tab: keypress.name === 'tab',
|
|
253
|
-
backspace: keypress.name === 'backspace',
|
|
254
|
-
delete: keypress.name === 'delete',
|
|
255
|
-
// `parseKeypress` parses \u001B\u001B[A (meta + up arrow) as meta = false
|
|
256
|
-
// but with option = true, so we need to take this into account here
|
|
257
|
-
// to avoid breaking changes in Ink.
|
|
258
|
-
// TODO(vadimdemedes): consider removing this in the next major version.
|
|
259
|
-
meta: keypress.meta || keypress.name === 'escape' || keypress.option
|
|
260
|
-
};
|
|
261
|
-
let input = keypress.ctrl ? keypress.name : keypress.sequence;
|
|
262
|
-
if (nonAlphanumericKeys.includes(keypress.name)) {
|
|
263
|
-
input = '';
|
|
264
|
-
}
|
|
265
|
-
// Strip meta if it's still remaining after `parseKeypress`
|
|
266
|
-
// TODO(vadimdemedes): remove this in the next major version.
|
|
267
|
-
if (input.startsWith('\u001B')) {
|
|
268
|
-
input = input.slice(1);
|
|
269
|
-
}
|
|
270
|
-
if (input.length === 1 && typeof input[0] === 'string' && /[A-Z]/.test(input[0])) {
|
|
271
|
-
key.shift = true;
|
|
272
|
-
}
|
|
273
|
-
// If app is not supposed to exit on Ctrl+C, then let input listener handle it
|
|
274
|
-
if (!(input === 'c' && key.ctrl) || !internal_exitOnCtrlC) {
|
|
275
|
-
// @ts-expect-error TypeScript types for `batchedUpdates` require an argument, but React's codebase doesn't provide it and it works without it as expected.
|
|
276
|
-
reconciler.batchedUpdates(()=>{
|
|
277
|
-
inputHandler(input, key);
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
};
|
|
281
|
-
internal_eventEmitter?.on('input', handleData);
|
|
310
|
+
internal_eventEmitter.on('input', handleData);
|
|
282
311
|
return ()=>{
|
|
283
|
-
internal_eventEmitter
|
|
312
|
+
internal_eventEmitter.removeListener('input', handleData);
|
|
284
313
|
};
|
|
285
314
|
}, [
|
|
286
315
|
options.isActive,
|
|
287
|
-
|
|
288
|
-
internal_exitOnCtrlC,
|
|
289
|
-
inputHandler
|
|
316
|
+
internal_eventEmitter
|
|
290
317
|
]);
|
|
291
318
|
};
|
|
292
319
|
|
|
293
320
|
/**
|
|
294
|
-
|
|
321
|
+
A React hook that returns the stdout stream where Ink renders your app.
|
|
295
322
|
*/ const useStdout = ()=>reactExports.useContext(StdoutContext);
|
|
296
323
|
|
|
297
324
|
// Hook
|