osc-progress 0.1.0 → 0.3.0
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/CHANGELOG.md +15 -0
- package/LICENSE +1 -1
- package/README.md +49 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/oscProgress.js +180 -0
- package/dist/esm/oscProgress.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/oscProgress.d.ts +47 -0
- package/package.json +9 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable changes to this project are documented in this file.
|
|
3
3
|
|
|
4
|
+
## 0.3.0 - Unreleased
|
|
5
|
+
### Added
|
|
6
|
+
- Throttled/deduped OSC progress updates (default).
|
|
7
|
+
- Stalled/paused state support (`setPaused`, `stallAfterMs`).
|
|
8
|
+
- Completion/error helpers (`done`, `fail`) with delayed clear (`clearDelayMs`).
|
|
9
|
+
- Optional auto-clear on process exit (`autoClearOnExit`).
|
|
10
|
+
- Controller cleanup via `dispose()`.
|
|
11
|
+
### Changed
|
|
12
|
+
- `createOscProgressController` now returns an extended controller with pause/done/fail helpers.
|
|
13
|
+
- Controller updates are throttled by default (behavior change).
|
|
14
|
+
|
|
15
|
+
## 0.2.0 - 2025-12-25
|
|
16
|
+
### Added
|
|
17
|
+
- `createOscProgressController` for stateful determinate/indeterminate updates.
|
|
18
|
+
|
|
4
19
|
## 0.1.0 - 2025-12-19
|
|
5
20
|
### Added
|
|
6
21
|
- OSC 9;4 progress emitter (`startOscProgress`) with determinate (`0% → 99%`) and indeterminate modes.
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ⏳ osc-progress — Tiny lib for OSC 9;4 terminal progress.
|
|
2
2
|
|
|
3
|
-
Tiny TypeScript helper for **OSC 9;4** terminal progress
|
|
3
|
+
Tiny TypeScript helper for **OSC 9;4** terminal progress (Ghostty / WezTerm / Windows Terminal).
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -67,6 +67,54 @@ Notes:
|
|
|
67
67
|
- default is a timer-driven `0% → 99%` progression (never completes by itself).
|
|
68
68
|
- `terminator` defaults to `st` (`ESC \\`); `bel` is also supported.
|
|
69
69
|
|
|
70
|
+
### `createOscProgressController(options?)`
|
|
71
|
+
|
|
72
|
+
Returns a small stateful controller:
|
|
73
|
+
- `setIndeterminate(label)`
|
|
74
|
+
- `setPercent(label, percent)`
|
|
75
|
+
- `setPaused(label)` (state `4`)
|
|
76
|
+
- `done(label?)` (emit 100% then clear)
|
|
77
|
+
- `fail(label?)` (emit error state then clear)
|
|
78
|
+
- `clear()`
|
|
79
|
+
- `dispose()` (cleanup timers/listeners)
|
|
80
|
+
|
|
81
|
+
Use this when you already have real progress (bytes/total, seconds/total) and want determinate terminal progress instead of the timer-based ramp.
|
|
82
|
+
|
|
83
|
+
Notes:
|
|
84
|
+
- returns no-op methods when `supportsOscProgress(...)` is false
|
|
85
|
+
- `percent` is rounded and clamped to `0..100`
|
|
86
|
+
- `clear()` uses the last label (or the initial `options.label` if nothing was set yet)
|
|
87
|
+
- progress updates are throttled by default (deduped + max ~1 update/150ms)
|
|
88
|
+
- `stallAfterMs` emits a paused/stalled state when updates stop
|
|
89
|
+
- `clearDelayMs` controls how long `done()` / `fail()` wait before clearing
|
|
90
|
+
- `autoClearOnExit` clears on process exit
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
import process from 'node:process'
|
|
94
|
+
import { createOscProgressController } from 'osc-progress'
|
|
95
|
+
|
|
96
|
+
const osc = createOscProgressController({
|
|
97
|
+
env: process.env,
|
|
98
|
+
isTty: process.stderr.isTTY,
|
|
99
|
+
write: (chunk) => process.stderr.write(chunk),
|
|
100
|
+
stallAfterMs: 10_000,
|
|
101
|
+
clearDelayMs: 200,
|
|
102
|
+
autoClearOnExit: true,
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
osc.setIndeterminate('Connecting')
|
|
106
|
+
osc.setPercent('Downloading', 12)
|
|
107
|
+
osc.setPercent('Downloading', 67)
|
|
108
|
+
osc.done()
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### Controller options
|
|
112
|
+
|
|
113
|
+
- `stallAfterMs`: emit state=4 when no updates are seen within this window.
|
|
114
|
+
- `stalledLabel`: override stalled label (string or formatter).
|
|
115
|
+
- `clearDelayMs`: delay before `done()`/`fail()` clears.
|
|
116
|
+
- `autoClearOnExit`: clear progress on process exit.
|
|
117
|
+
|
|
70
118
|
### `sanitizeOscProgress(text, keepOsc)`
|
|
71
119
|
|
|
72
120
|
Removes OSC 9;4 progress sequences (terminated by `BEL`, `ST` (`ESC \\`), or `0x9c`).
|
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { findOscProgressSequences, OSC_PROGRESS_BEL, OSC_PROGRESS_C1_ST, OSC_PROGRESS_PREFIX, OSC_PROGRESS_ST, sanitizeLabel, sanitizeOscProgress, startOscProgress, stripOscProgress, supportsOscProgress, } from './oscProgress.js';
|
|
1
|
+
export { createOscProgressController, findOscProgressSequences, OSC_PROGRESS_BEL, OSC_PROGRESS_C1_ST, OSC_PROGRESS_PREFIX, OSC_PROGRESS_ST, sanitizeLabel, sanitizeOscProgress, startOscProgress, stripOscProgress, supportsOscProgress, } from './oscProgress.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAQf,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA"}
|
package/dist/esm/oscProgress.js
CHANGED
|
@@ -13,6 +13,8 @@ export const OSC_PROGRESS_ST = '\u001b\\';
|
|
|
13
13
|
export const OSC_PROGRESS_BEL = '\u0007';
|
|
14
14
|
/** C1 String Terminator (ST): `0x9c` */
|
|
15
15
|
export const OSC_PROGRESS_C1_ST = '\u009c';
|
|
16
|
+
const DEFAULT_THROTTLE_INTERVAL_MS = 150;
|
|
17
|
+
const DEFAULT_CLEAR_DELAY_MS = 150;
|
|
16
18
|
function resolveTerminator(terminator) {
|
|
17
19
|
return terminator === 'bel' ? OSC_PROGRESS_BEL : OSC_PROGRESS_ST;
|
|
18
20
|
}
|
|
@@ -192,4 +194,182 @@ export function startOscProgress(options = {}) {
|
|
|
192
194
|
send(0, 0);
|
|
193
195
|
};
|
|
194
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Creates a small stateful controller for OSC 9;4 progress output.
|
|
199
|
+
*
|
|
200
|
+
* Useful when you want to drive progress updates yourself (e.g. bytes downloaded / total bytes,
|
|
201
|
+
* or seconds processed / total duration) and switch between indeterminate and determinate modes.
|
|
202
|
+
*
|
|
203
|
+
* Behavior:
|
|
204
|
+
* - no-op controller when `supportsOscProgress(...)` is false
|
|
205
|
+
* - `setIndeterminate(label)` emits `state=3`
|
|
206
|
+
* - `setPercent(label, percent)` emits `state=1` with a clamped integer percent
|
|
207
|
+
* - `clear()` emits `state=0` using the last label
|
|
208
|
+
*/
|
|
209
|
+
export function createOscProgressController(options = {}) {
|
|
210
|
+
// Default to stderr: progress belongs with other interactive output and avoids polluting stdout pipes.
|
|
211
|
+
const { label = 'Working…', write = (text) => process.stderr.write(text), terminator, stallAfterMs = 0, stalledLabel, clearDelayMs = DEFAULT_CLEAR_DELAY_MS, autoClearOnExit = false, } = options;
|
|
212
|
+
if (!supportsOscProgress(options.env, options.isTty, options)) {
|
|
213
|
+
// No-op controller: callers can keep their code linear and still be safe in unsupported terminals/logs.
|
|
214
|
+
return {
|
|
215
|
+
setIndeterminate: () => { },
|
|
216
|
+
setPercent: () => { },
|
|
217
|
+
setPaused: () => { },
|
|
218
|
+
done: () => { },
|
|
219
|
+
fail: () => { },
|
|
220
|
+
clear: () => { },
|
|
221
|
+
dispose: () => { },
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// Resolve once; avoids branching in hot paths.
|
|
225
|
+
const end = resolveTerminator(terminator);
|
|
226
|
+
const resolveStalledLabel = (baseLabel) => {
|
|
227
|
+
if (typeof stalledLabel === 'function')
|
|
228
|
+
return stalledLabel(baseLabel);
|
|
229
|
+
if (typeof stalledLabel === 'string')
|
|
230
|
+
return stalledLabel;
|
|
231
|
+
return `${baseLabel} (stalled)`;
|
|
232
|
+
};
|
|
233
|
+
const normalizePercent = (percent) => Math.max(0, Math.min(100, Math.round(percent)));
|
|
234
|
+
let lastEmittedLabel = label;
|
|
235
|
+
let lastEmittedPercent = null;
|
|
236
|
+
let lastEmittedState = null;
|
|
237
|
+
let lastEmitAt = 0;
|
|
238
|
+
let hasEmitted = false;
|
|
239
|
+
let lastSeenLabel = label;
|
|
240
|
+
let lastSeenPercent = 0;
|
|
241
|
+
let lastSeenMode = 'indeterminate';
|
|
242
|
+
let stallTimer = null;
|
|
243
|
+
let clearTimer = null;
|
|
244
|
+
let stallEnabled = true;
|
|
245
|
+
const clearStallTimer = () => {
|
|
246
|
+
if (stallTimer !== null) {
|
|
247
|
+
clearTimeout(stallTimer);
|
|
248
|
+
stallTimer = null;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
const clearTimers = () => {
|
|
252
|
+
clearStallTimer();
|
|
253
|
+
if (clearTimer !== null) {
|
|
254
|
+
clearTimeout(clearTimer);
|
|
255
|
+
clearTimer = null;
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
const scheduleStall = () => {
|
|
259
|
+
if (!stallAfterMs || stallAfterMs <= 0)
|
|
260
|
+
return;
|
|
261
|
+
if (stallTimer !== null)
|
|
262
|
+
clearTimeout(stallTimer);
|
|
263
|
+
stallTimer = setTimeout(() => {
|
|
264
|
+
stallTimer = null;
|
|
265
|
+
if (!stallEnabled)
|
|
266
|
+
return;
|
|
267
|
+
const labelToUse = resolveStalledLabel(lastSeenLabel);
|
|
268
|
+
const percent = lastSeenMode === 'determinate' ? lastSeenPercent : null;
|
|
269
|
+
send(4, percent, labelToUse, true);
|
|
270
|
+
}, stallAfterMs);
|
|
271
|
+
stallTimer.unref?.();
|
|
272
|
+
};
|
|
273
|
+
const scheduleClear = () => {
|
|
274
|
+
if (clearDelayMs <= 0) {
|
|
275
|
+
clear();
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
if (clearTimer !== null)
|
|
279
|
+
clearTimeout(clearTimer);
|
|
280
|
+
clearTimer = setTimeout(() => {
|
|
281
|
+
clearTimer = null;
|
|
282
|
+
clear();
|
|
283
|
+
}, clearDelayMs);
|
|
284
|
+
clearTimer.unref?.();
|
|
285
|
+
};
|
|
286
|
+
const send = (state, percent, nextLabel, force = false) => {
|
|
287
|
+
// Always sanitize; labels often come from user-visible input (filenames/URLs) and must not break OSC.
|
|
288
|
+
const cleanLabel = sanitizeLabel(nextLabel);
|
|
289
|
+
const normalizedPercent = percent == null ? null : normalizePercent(percent);
|
|
290
|
+
const now = Date.now();
|
|
291
|
+
const stateChanged = state !== lastEmittedState;
|
|
292
|
+
const labelChanged = cleanLabel !== lastEmittedLabel;
|
|
293
|
+
const percentChanged = normalizedPercent !== lastEmittedPercent;
|
|
294
|
+
const withinInterval = now - lastEmitAt < DEFAULT_THROTTLE_INTERVAL_MS;
|
|
295
|
+
let shouldEmit = force || !hasEmitted || stateChanged || labelChanged;
|
|
296
|
+
if (!shouldEmit && percentChanged) {
|
|
297
|
+
shouldEmit = !withinInterval;
|
|
298
|
+
}
|
|
299
|
+
if (!shouldEmit)
|
|
300
|
+
return;
|
|
301
|
+
if (normalizedPercent == null) {
|
|
302
|
+
write(`${OSC_PROGRESS_PREFIX}${state};;${cleanLabel}${end}`);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
write(`${OSC_PROGRESS_PREFIX}${state};${normalizedPercent};${cleanLabel}${end}`);
|
|
306
|
+
}
|
|
307
|
+
lastEmittedLabel = cleanLabel;
|
|
308
|
+
lastEmittedPercent = normalizedPercent;
|
|
309
|
+
lastEmittedState = state;
|
|
310
|
+
lastEmitAt = now;
|
|
311
|
+
hasEmitted = true;
|
|
312
|
+
};
|
|
313
|
+
// Remember the last user-provided label so `clear()` clears the most recent task label.
|
|
314
|
+
const updateSeen = (nextLabel, mode, percent, shouldScheduleStall = true) => {
|
|
315
|
+
lastSeenLabel = nextLabel;
|
|
316
|
+
lastSeenMode = mode;
|
|
317
|
+
lastSeenPercent = percent ?? 0;
|
|
318
|
+
if (shouldScheduleStall) {
|
|
319
|
+
scheduleStall();
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
const setIndeterminate = (nextLabel) => {
|
|
323
|
+
stallEnabled = true;
|
|
324
|
+
updateSeen(nextLabel, 'indeterminate', null);
|
|
325
|
+
send(3, null, nextLabel);
|
|
326
|
+
};
|
|
327
|
+
const setPercent = (nextLabel, percent) => {
|
|
328
|
+
const normalized = normalizePercent(percent);
|
|
329
|
+
stallEnabled = true;
|
|
330
|
+
updateSeen(nextLabel, 'determinate', normalized);
|
|
331
|
+
send(1, normalized, nextLabel);
|
|
332
|
+
};
|
|
333
|
+
const setPaused = (nextLabel) => {
|
|
334
|
+
stallEnabled = false;
|
|
335
|
+
const percent = lastSeenMode === 'determinate' ? lastSeenPercent : null;
|
|
336
|
+
updateSeen(nextLabel, lastSeenMode, lastSeenMode === 'determinate' ? lastSeenPercent : null, false);
|
|
337
|
+
send(4, percent, nextLabel, true);
|
|
338
|
+
};
|
|
339
|
+
const clear = () => {
|
|
340
|
+
stallEnabled = false;
|
|
341
|
+
clearTimers();
|
|
342
|
+
send(0, 0, lastSeenLabel, true);
|
|
343
|
+
};
|
|
344
|
+
const done = (nextLabel) => {
|
|
345
|
+
const labelToUse = nextLabel ?? lastSeenLabel;
|
|
346
|
+
stallEnabled = false;
|
|
347
|
+
clearStallTimer();
|
|
348
|
+
updateSeen(labelToUse, 'determinate', 100, false);
|
|
349
|
+
send(1, 100, labelToUse, true);
|
|
350
|
+
scheduleClear();
|
|
351
|
+
};
|
|
352
|
+
const fail = (nextLabel) => {
|
|
353
|
+
const labelToUse = nextLabel ?? lastSeenLabel;
|
|
354
|
+
const percent = lastSeenMode === 'determinate' ? lastSeenPercent : null;
|
|
355
|
+
stallEnabled = false;
|
|
356
|
+
clearStallTimer();
|
|
357
|
+
updateSeen(labelToUse, lastSeenMode, lastSeenMode === 'determinate' ? lastSeenPercent : null, false);
|
|
358
|
+
send(2, percent, labelToUse, true);
|
|
359
|
+
scheduleClear();
|
|
360
|
+
};
|
|
361
|
+
const handleExit = () => {
|
|
362
|
+
clear();
|
|
363
|
+
};
|
|
364
|
+
if (autoClearOnExit) {
|
|
365
|
+
process.once('exit', handleExit);
|
|
366
|
+
}
|
|
367
|
+
const dispose = () => {
|
|
368
|
+
clearTimers();
|
|
369
|
+
if (autoClearOnExit) {
|
|
370
|
+
process.off('exit', handleExit);
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
return { setIndeterminate, setPercent, setPaused, done, fail, clear, dispose };
|
|
374
|
+
}
|
|
195
375
|
//# sourceMappingURL=oscProgress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oscProgress.js","sourceRoot":"","sources":["../../src/oscProgress.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oscProgress.js","sourceRoot":"","sources":["../../src/oscProgress.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAChD,uCAAuC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAA;AACzC,yBAAyB;AACzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACxC,wCAAwC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAA;AAE1C,MAAM,4BAA4B,GAAG,GAAG,CAAA;AACxC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AA2ElC,SAAS,iBAAiB,CAAC,UAA6C;IACtE,OAAO,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAA;AAClE,CAAC;AAsBD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;IACvD,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxD,MAAM,kBAAkB,GAAG,aAAa;SACrC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAChC,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;IACrC,OAAO,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACtD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAyB,OAAO,CAAC,GAAG,EACpC,QAAiB,OAAO,CAAC,MAAM,CAAC,KAAK,EACrC,UAAqC,EAAE;IAEvC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IACxB,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAClC,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAE9B,IAAI,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;QAChE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC1D,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAChD,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAChD,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAC/B,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,MAAM,SAAS,GAA0B,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAA;IAC5C,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;QAC3D,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,MAAK;QAEvB,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;QAC/B,MAAM,UAAU,GAGX,EAAE,CAAA;QAEP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;QACpD,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QACvF,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACtD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1F,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;QACvD,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5F,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,UAAU,GAAG,KAAK,CAAA;YAClB,SAAQ;QACV,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAA;QAC1D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,SAAS,CAAC,IAAI,CAAC;YACb,KAAK;YACL,GAAG,EAAE,IAAI,CAAC,YAAY;YACtB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAA;QACF,UAAU,GAAG,IAAI,CAAC,YAAY,CAAA;IAChC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAA;IAC5C,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,OAAO,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;QAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;QACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;QAE1D,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QAC/D,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAClE,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAElE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QACrE,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAA;IAChE,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAgB;IAChE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA8B,EAAE;IAC/D,MAAM,EACJ,KAAK,GAAG,UAAU,EAClB,QAAQ,GAAG,EAAE,GAAG,MAAM,EACtB,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAC5C,aAAa,GAAG,KAAK,EACrB,KAAK,GAAG,CAAC,EACT,UAAU,GACX,GAAG,OAAO,CAAA;IACX,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC9D,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAEzC,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,OAAsB,EAAQ,EAAE;QACxD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,mBAAmB,GAAG,EAAE,KAAK,UAAU,GAAG,GAAG,EAAE,CAAC,CAAA;YACzD,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/D,KAAK,CAAC,GAAG,mBAAmB,GAAG,EAAE,IAAI,OAAO,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC,CAAA;IACrE,CAAC,CAAA;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACb,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACZ,CAAC,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAEd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA;QACtD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACtB,CAAC,EAAE,GAAG,CAAC,CAAA;IACP,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;IAEf,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,OAAO,GAAG,EAAE;QACV,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,IAAI,CAAA;QACd,aAAa,CAAC,KAAK,CAAC,CAAA;QACpB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACZ,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CACzC,UAAwC,EAAE;IAE1C,uGAAuG;IACvG,MAAM,EACJ,KAAK,GAAG,UAAU,EAClB,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAC5C,UAAU,EACV,YAAY,GAAG,CAAC,EAChB,YAAY,EACZ,YAAY,GAAG,sBAAsB,EACrC,eAAe,GAAG,KAAK,GACxB,GAAG,OAAO,CAAA;IAEX,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC9D,wGAAwG;QACxG,OAAO;YACL,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;YAC1B,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;YACpB,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAA;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAEzC,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAU,EAAE;QACxD,IAAI,OAAO,YAAY,KAAK,UAAU;YAAE,OAAO,YAAY,CAAC,SAAS,CAAC,CAAA;QACtE,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO,YAAY,CAAA;QACzD,OAAO,GAAG,SAAS,YAAY,CAAA;IACjC,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAU,EAAE,CACnD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAEjD,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAC5B,IAAI,kBAAkB,GAAkB,IAAI,CAAA;IAC5C,IAAI,gBAAgB,GAAkB,IAAI,CAAA;IAC1C,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,IAAI,YAAY,GAAoC,eAAe,CAAA;IAEnE,IAAI,UAAU,GAA0B,IAAI,CAAA;IAC5C,IAAI,UAAU,GAA0B,IAAI,CAAA;IAC5C,IAAI,YAAY,GAAG,IAAI,CAAA;IAEvB,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,YAAY,CAAC,UAAU,CAAC,CAAA;YACxB,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,eAAe,EAAE,CAAA;QACjB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,YAAY,CAAC,UAAU,CAAC,CAAA;YACxB,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,CAAC,YAAY,IAAI,YAAY,IAAI,CAAC;YAAE,OAAM;QAC9C,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QACjD,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,UAAU,GAAG,IAAI,CAAA;YACjB,IAAI,CAAC,YAAY;gBAAE,OAAM;YACzB,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAA;YACrD,MAAM,OAAO,GAAG,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA;YACvE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QACpC,CAAC,EAAE,YAAY,CAAC,CAAA;QAChB,UAAU,CAAC,KAAK,EAAE,EAAE,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,KAAK,EAAE,CAAA;YACP,OAAM;QACR,CAAC;QACD,IAAI,UAAU,KAAK,IAAI;YAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QACjD,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,UAAU,GAAG,IAAI,CAAA;YACjB,KAAK,EAAE,CAAA;QACT,CAAC,EAAE,YAAY,CAAC,CAAA;QAChB,UAAU,CAAC,KAAK,EAAE,EAAE,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,OAAsB,EAAE,SAAiB,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE;QACvF,sGAAsG;QACtG,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;QAC3C,MAAM,iBAAiB,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,YAAY,GAAG,KAAK,KAAK,gBAAgB,CAAA;QAC/C,MAAM,YAAY,GAAG,UAAU,KAAK,gBAAgB,CAAA;QACpD,MAAM,cAAc,GAAG,iBAAiB,KAAK,kBAAkB,CAAA;QAC/D,MAAM,cAAc,GAAG,GAAG,GAAG,UAAU,GAAG,4BAA4B,CAAA;QAEtE,IAAI,UAAU,GAAG,KAAK,IAAI,CAAC,UAAU,IAAI,YAAY,IAAI,YAAY,CAAA;QACrE,IAAI,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;YAClC,UAAU,GAAG,CAAC,cAAc,CAAA;QAC9B,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,OAAM;QAEvB,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,mBAAmB,GAAG,KAAK,KAAK,UAAU,GAAG,GAAG,EAAE,CAAC,CAAA;QAC9D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,mBAAmB,GAAG,KAAK,IAAI,iBAAiB,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC,CAAA;QAClF,CAAC;QACD,gBAAgB,GAAG,UAAU,CAAA;QAC7B,kBAAkB,GAAG,iBAAiB,CAAA;QACtC,gBAAgB,GAAG,KAAK,CAAA;QACxB,UAAU,GAAG,GAAG,CAAA;QAChB,UAAU,GAAG,IAAI,CAAA;IACnB,CAAC,CAAA;IAED,wFAAwF;IACxF,MAAM,UAAU,GAAG,CACjB,SAAiB,EACjB,IAAqC,EACrC,OAAsB,EACtB,mBAAmB,GAAG,IAAI,EAC1B,EAAE;QACF,aAAa,GAAG,SAAS,CAAA;QACzB,YAAY,GAAG,IAAI,CAAA;QACnB,eAAe,GAAG,OAAO,IAAI,CAAC,CAAA;QAC9B,IAAI,mBAAmB,EAAE,CAAC;YACxB,aAAa,EAAE,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC7C,YAAY,GAAG,IAAI,CAAA;QACnB,UAAU,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,EAAE;QACxD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC5C,YAAY,GAAG,IAAI,CAAA;QACnB,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;QAChD,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE;QACtC,YAAY,GAAG,KAAK,CAAA;QACpB,MAAM,OAAO,GAAG,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA;QACvE,UAAU,CACR,SAAS,EACT,YAAY,EACZ,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EACvD,KAAK,CACN,CAAA;QACD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,YAAY,GAAG,KAAK,CAAA;QACpB,WAAW,EAAE,CAAA;QACb,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,SAAkB,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,SAAS,IAAI,aAAa,CAAA;QAC7C,YAAY,GAAG,KAAK,CAAA;QACpB,eAAe,EAAE,CAAA;QACjB,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QACjD,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC9B,aAAa,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,SAAkB,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,SAAS,IAAI,aAAa,CAAA;QAC7C,MAAM,OAAO,GAAG,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA;QACvE,YAAY,GAAG,KAAK,CAAA;QACpB,eAAe,EAAE,CAAA;QACjB,UAAU,CACR,UAAU,EACV,YAAY,EACZ,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EACvD,KAAK,CACN,CAAA;QACD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAClC,aAAa,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,KAAK,EAAE,CAAA;IACT,CAAC,CAAA;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,WAAW,EAAE,CAAA;QACb,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAA;IAED,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AAChF,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { findOscProgressSequences, OSC_PROGRESS_BEL, OSC_PROGRESS_C1_ST, OSC_PROGRESS_PREFIX, OSC_PROGRESS_ST, type OscProgressOptions, type OscProgressSequence, type OscProgressSupportOptions, type OscProgressTerminator, sanitizeLabel, sanitizeOscProgress, startOscProgress, stripOscProgress, supportsOscProgress, } from './oscProgress.js';
|
|
1
|
+
export { createOscProgressController, findOscProgressSequences, OSC_PROGRESS_BEL, OSC_PROGRESS_C1_ST, OSC_PROGRESS_PREFIX, OSC_PROGRESS_ST, type OscProgressController, type OscProgressControllerOptions, type OscProgressOptions, type OscProgressReporter, type OscProgressSequence, type OscProgressSupportOptions, type OscProgressTerminator, sanitizeLabel, sanitizeOscProgress, startOscProgress, stripOscProgress, supportsOscProgress, } from './oscProgress.js';
|
|
@@ -54,6 +54,22 @@ export interface OscProgressOptions extends OscProgressSupportOptions {
|
|
|
54
54
|
/** OSC terminator to use. `st` = ESC \\, `bel` = BEL. */
|
|
55
55
|
terminator?: OscProgressTerminator;
|
|
56
56
|
}
|
|
57
|
+
export interface OscProgressControllerOptions extends OscProgressOptions {
|
|
58
|
+
/**
|
|
59
|
+
* Emit a stalled state when no updates arrive within this window.
|
|
60
|
+
* Set to 0 to disable (default).
|
|
61
|
+
*/
|
|
62
|
+
stallAfterMs?: number;
|
|
63
|
+
/** Customize the stalled label or formatter. Defaults to appending " (stalled)". */
|
|
64
|
+
stalledLabel?: string | ((label: string) => string);
|
|
65
|
+
/**
|
|
66
|
+
* Delay (ms) between done/fail and clearing the progress indicator.
|
|
67
|
+
* Set to 0 for immediate clear.
|
|
68
|
+
*/
|
|
69
|
+
clearDelayMs?: number;
|
|
70
|
+
/** Clear progress on process exit. */
|
|
71
|
+
autoClearOnExit?: boolean;
|
|
72
|
+
}
|
|
57
73
|
export interface OscProgressSequence {
|
|
58
74
|
/** Inclusive start index in the input string. */
|
|
59
75
|
start: number;
|
|
@@ -64,6 +80,24 @@ export interface OscProgressSequence {
|
|
|
64
80
|
/** Which terminator was encountered. */
|
|
65
81
|
terminator: 'st' | 'bel' | 'c1st';
|
|
66
82
|
}
|
|
83
|
+
export type OscProgressController = {
|
|
84
|
+
/** Emit an indeterminate progress indicator. */
|
|
85
|
+
setIndeterminate: (label: string) => void;
|
|
86
|
+
/** Emit a determinate progress indicator. */
|
|
87
|
+
setPercent: (label: string, percent: number) => void;
|
|
88
|
+
/** Clear/hide the progress indicator. */
|
|
89
|
+
clear: () => void;
|
|
90
|
+
};
|
|
91
|
+
export type OscProgressReporter = OscProgressController & {
|
|
92
|
+
/** Emit a paused/stalled progress indicator (state=4). */
|
|
93
|
+
setPaused: (label: string) => void;
|
|
94
|
+
/** Emit 100% then clear after the configured delay. */
|
|
95
|
+
done: (label?: string) => void;
|
|
96
|
+
/** Emit error state then clear after the configured delay. */
|
|
97
|
+
fail: (label?: string) => void;
|
|
98
|
+
/** Dispose timers/listeners created by this controller. */
|
|
99
|
+
dispose: () => void;
|
|
100
|
+
};
|
|
67
101
|
/**
|
|
68
102
|
* Sanitizes a label/payload so it can't break the surrounding OSC sequence.
|
|
69
103
|
* Removes escape chars and common OSC terminators; trims whitespace.
|
|
@@ -115,3 +149,16 @@ export declare function sanitizeOscProgress(text: string, keepOsc: boolean): str
|
|
|
115
149
|
* - indeterminate mode emits `state=3` and `stop()` clears progress
|
|
116
150
|
*/
|
|
117
151
|
export declare function startOscProgress(options?: OscProgressOptions): () => void;
|
|
152
|
+
/**
|
|
153
|
+
* Creates a small stateful controller for OSC 9;4 progress output.
|
|
154
|
+
*
|
|
155
|
+
* Useful when you want to drive progress updates yourself (e.g. bytes downloaded / total bytes,
|
|
156
|
+
* or seconds processed / total duration) and switch between indeterminate and determinate modes.
|
|
157
|
+
*
|
|
158
|
+
* Behavior:
|
|
159
|
+
* - no-op controller when `supportsOscProgress(...)` is false
|
|
160
|
+
* - `setIndeterminate(label)` emits `state=3`
|
|
161
|
+
* - `setPercent(label, percent)` emits `state=1` with a clamped integer percent
|
|
162
|
+
* - `clear()` emits `state=0` using the last label
|
|
163
|
+
*/
|
|
164
|
+
export declare function createOscProgressController(options?: OscProgressControllerOptions): OscProgressReporter;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "osc-progress",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Tiny TypeScript helper for OSC 9;4 terminal progress sequences.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Peter Steinberger",
|
|
@@ -41,12 +41,15 @@
|
|
|
41
41
|
"node": ">=20"
|
|
42
42
|
},
|
|
43
43
|
"sideEffects": false,
|
|
44
|
-
"
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@biomejs/biome": "^2.3.10",
|
|
46
|
+
"@types/node": "^25.0.3",
|
|
47
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
48
|
+
"typescript": "^5.9.3",
|
|
49
|
+
"vitest": "^4.0.16"
|
|
50
|
+
},
|
|
45
51
|
"scripts": {
|
|
46
52
|
"build": "tsc -p tsconfig.build.json",
|
|
47
|
-
"prepare": "pnpm build",
|
|
48
|
-
"prepack": "pnpm build",
|
|
49
|
-
"prepublishOnly": "pnpm check",
|
|
50
53
|
"typecheck": "tsc -p tsconfig.build.json --noEmit",
|
|
51
54
|
"format": "biome format --write .",
|
|
52
55
|
"lint": "biome check .",
|
|
@@ -54,12 +57,5 @@
|
|
|
54
57
|
"test": "pnpm build && vitest run",
|
|
55
58
|
"test:coverage": "pnpm build && vitest run --coverage",
|
|
56
59
|
"check": "pnpm lint && pnpm test:coverage"
|
|
57
|
-
},
|
|
58
|
-
"devDependencies": {
|
|
59
|
-
"@biomejs/biome": "^2.3.10",
|
|
60
|
-
"@types/node": "^25.0.3",
|
|
61
|
-
"@vitest/coverage-v8": "^4.0.16",
|
|
62
|
-
"typescript": "^5.9.3",
|
|
63
|
-
"vitest": "^4.0.16"
|
|
64
60
|
}
|
|
65
|
-
}
|
|
61
|
+
}
|