osc-progress 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,39 @@
1
1
  # Changelog
2
+
2
3
  All notable changes to this project are documented in this file.
3
4
 
5
+ ## 0.3.1 - 2026-06-10
6
+
7
+ ### Fixed
8
+
9
+ - Add a package export `default` condition so CJS-style resolvers can find the ESM entrypoint. (`#8`, thanks `@grimmjoww`)
10
+ - Strip control characters from OSC progress labels so labels cannot break emitted progress sequences. (`#15`, thanks `@devYRPauli`)
11
+
12
+ ## 0.3.0 - 2026-01-20
13
+
14
+ ### Added
15
+
16
+ - Throttled/deduped OSC progress updates (default).
17
+ - Stalled/paused state support (`setPaused`, `stallAfterMs`).
18
+ - Completion/error helpers (`done`, `fail`) with delayed clear (`clearDelayMs`).
19
+ - Optional auto-clear on process exit (`autoClearOnExit`).
20
+ - Controller cleanup via `dispose()`.
21
+
22
+ ### Changed
23
+
24
+ - `createOscProgressController` now returns an extended controller with pause/done/fail helpers.
25
+ - Controller updates are throttled by default (behavior change).
26
+
4
27
  ## 0.2.0 - 2025-12-25
28
+
5
29
  ### Added
30
+
6
31
  - `createOscProgressController` for stateful determinate/indeterminate updates.
7
32
 
8
33
  ## 0.1.0 - 2025-12-19
34
+
9
35
  ### Added
36
+
10
37
  - OSC 9;4 progress emitter (`startOscProgress`) with determinate (`0% → 99%`) and indeterminate modes.
11
38
  - Terminal support detection (`supportsOscProgress`) with safe defaults (TTY-only) and heuristics for Ghostty / WezTerm / Windows Terminal.
12
39
  - Environment overrides (`force`/`disabled` and `forceEnvVar`/`disableEnvVar`).
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Peter Steinberger
3
+ Copyright (c) 2026 Peter Steinberger
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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 sequences (used by terminals like Ghostty / WezTerm / Windows Terminal).
3
+ Tiny TypeScript helper for **OSC 9;4** terminal progress (Ghostty / WezTerm / Windows Terminal).
4
4
 
5
5
  ## Install
6
6
 
@@ -11,37 +11,37 @@ pnpm add osc-progress
11
11
  ## Usage
12
12
 
13
13
  ```ts
14
- import process from 'node:process'
15
- import { startOscProgress } from 'osc-progress'
14
+ import process from "node:process";
15
+ import { startOscProgress } from "osc-progress";
16
16
 
17
17
  const stop = startOscProgress({
18
- label: 'Fetching',
18
+ label: "Fetching",
19
19
  write: (chunk) => process.stderr.write(chunk),
20
20
  env: process.env,
21
21
  isTty: process.stderr.isTTY,
22
- })
22
+ });
23
23
 
24
24
  // ...do work...
25
25
 
26
- stop()
26
+ stop();
27
27
  ```
28
28
 
29
29
  Indeterminate (spinner-like) mode:
30
30
 
31
31
  ```ts
32
- import { startOscProgress } from 'osc-progress'
32
+ import { startOscProgress } from "osc-progress";
33
33
 
34
- const stop = startOscProgress({ label: 'Waiting', indeterminate: true })
34
+ const stop = startOscProgress({ label: "Waiting", indeterminate: true });
35
35
  // ...
36
- stop()
36
+ stop();
37
37
  ```
38
38
 
39
39
  Strip OSC progress from stored logs:
40
40
 
41
41
  ```ts
42
- import { sanitizeOscProgress } from 'osc-progress'
42
+ import { sanitizeOscProgress } from "osc-progress";
43
43
 
44
- const clean = sanitizeOscProgress(text, /*keepOsc*/ process.stdout.isTTY)
44
+ const clean = sanitizeOscProgress(text, /*keepOsc*/ process.stdout.isTTY);
45
45
  ```
46
46
 
47
47
  ## API
@@ -51,10 +51,12 @@ const clean = sanitizeOscProgress(text, /*keepOsc*/ process.stdout.isTTY)
51
51
  Returns `true` when emitting OSC 9;4 progress makes sense.
52
52
 
53
53
  Heuristics:
54
+
54
55
  - requires a TTY
55
56
  - enables for `TERM_PROGRAM=ghostty*`, `TERM_PROGRAM=wezterm*`, or `WT_SESSION` (Windows Terminal)
56
57
 
57
58
  Optional overrides:
59
+
58
60
  - `options.disabled` / `options.force`
59
61
  - `options.disableEnvVar` / `options.forceEnvVar` (expects `= "1"`)
60
62
 
@@ -63,6 +65,7 @@ Optional overrides:
63
65
  Starts a best-effort progress indicator and returns `stop(): void`.
64
66
 
65
67
  Notes:
68
+
66
69
  - `label` is appended as extra payload; **not part of the canonical OSC 9;4 spec** (many terminals ignore it, some show it).
67
70
  - default is a timer-driven `0% → 99%` progression (never completes by itself).
68
71
  - `terminator` defaults to `st` (`ESC \\`); `bel` is also supported.
@@ -70,33 +73,53 @@ Notes:
70
73
  ### `createOscProgressController(options?)`
71
74
 
72
75
  Returns a small stateful controller:
76
+
73
77
  - `setIndeterminate(label)`
74
78
  - `setPercent(label, percent)`
79
+ - `setPaused(label)` (state `4`)
80
+ - `done(label?)` (emit 100% then clear)
81
+ - `fail(label?)` (emit error state then clear)
75
82
  - `clear()`
83
+ - `dispose()` (cleanup timers/listeners)
76
84
 
77
85
  Use this when you already have real progress (bytes/total, seconds/total) and want determinate terminal progress instead of the timer-based ramp.
78
86
 
79
87
  Notes:
88
+
80
89
  - returns no-op methods when `supportsOscProgress(...)` is false
81
90
  - `percent` is rounded and clamped to `0..100`
82
91
  - `clear()` uses the last label (or the initial `options.label` if nothing was set yet)
92
+ - progress updates are throttled by default (deduped + max ~1 update/150ms)
93
+ - `stallAfterMs` emits a paused/stalled state when updates stop
94
+ - `clearDelayMs` controls how long `done()` / `fail()` wait before clearing
95
+ - `autoClearOnExit` clears on process exit
83
96
 
84
97
  ```ts
85
- import process from 'node:process'
86
- import { createOscProgressController } from 'osc-progress'
98
+ import process from "node:process";
99
+ import { createOscProgressController } from "osc-progress";
87
100
 
88
101
  const osc = createOscProgressController({
89
102
  env: process.env,
90
103
  isTty: process.stderr.isTTY,
91
104
  write: (chunk) => process.stderr.write(chunk),
92
- })
93
-
94
- osc.setIndeterminate('Connecting')
95
- osc.setPercent('Downloading', 12)
96
- osc.setPercent('Downloading', 67)
97
- osc.clear()
105
+ stallAfterMs: 10_000,
106
+ clearDelayMs: 200,
107
+ autoClearOnExit: true,
108
+ });
109
+
110
+ osc.setIndeterminate("Connecting");
111
+ osc.setPercent("Downloading", 12);
112
+ osc.setPercent("Downloading", 67);
113
+ osc.done();
98
114
  ```
99
115
 
116
+ #### Controller options
117
+
118
+ - `stallAfterMs`: emit state=4 when no updates are seen within this window.
119
+ - `stalledLabel`: override stalled label (string or formatter).
120
+ - `clearDelayMs`: delay before `done()`/`fail()` clears.
121
+ - `autoClearOnExit`: clear progress on process exit.
122
+
100
123
  ### `sanitizeOscProgress(text, keepOsc)`
101
124
 
102
125
  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 { createOscProgressController, 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
@@ -1 +1 @@
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,EAMf,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA"}
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,CAAC"}
@@ -1,4 +1,4 @@
1
- import process from 'node:process';
1
+ import process from "node:process";
2
2
  /**
3
3
  * OSC 9;4 progress prefix (`ESC ] 9 ; 4 ;`).
4
4
  *
@@ -6,27 +6,37 @@ import process from 'node:process';
6
6
  * - `ESC ] 9;4;<state>;<percent>;<payload> ST`
7
7
  * - `ESC ] 9;4;<state>;;<payload> ST` (indeterminate)
8
8
  */
9
- export const OSC_PROGRESS_PREFIX = '\u001b]9;4;';
9
+ export const OSC_PROGRESS_PREFIX = "\u001b]9;4;";
10
10
  /** String Terminator (ST): `ESC \\` */
11
- export const OSC_PROGRESS_ST = '\u001b\\';
11
+ export const OSC_PROGRESS_ST = "\u001b\\";
12
12
  /** Bell (BEL): `0x07` */
13
- export const OSC_PROGRESS_BEL = '\u0007';
13
+ export const OSC_PROGRESS_BEL = "\u0007";
14
14
  /** C1 String Terminator (ST): `0x9c` */
15
- export const OSC_PROGRESS_C1_ST = '\u009c';
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
- return terminator === 'bel' ? OSC_PROGRESS_BEL : OSC_PROGRESS_ST;
19
+ return terminator === "bel" ? OSC_PROGRESS_BEL : OSC_PROGRESS_ST;
18
20
  }
19
21
  /**
20
22
  * Sanitizes a label/payload so it can't break the surrounding OSC sequence.
21
23
  * Removes escape chars and common OSC terminators; trims whitespace.
22
24
  */
23
25
  export function sanitizeLabel(label) {
24
- const withoutSt = label.replaceAll(OSC_PROGRESS_ST, '');
25
- const withoutEscape = withoutSt.split('\u001b').join('');
26
+ const withoutSt = label.replaceAll(OSC_PROGRESS_ST, "");
27
+ const withoutEscape = withoutSt.split("\u001b").join("");
26
28
  const withoutTerminators = withoutEscape
27
- .replaceAll(OSC_PROGRESS_BEL, '')
28
- .replaceAll(OSC_PROGRESS_C1_ST, '');
29
- return withoutTerminators.replaceAll(']', '').trim();
29
+ .replaceAll(OSC_PROGRESS_BEL, "")
30
+ .replaceAll(OSC_PROGRESS_C1_ST, "");
31
+ // Strip remaining C0 controls and DEL; a bare newline/CR/tab inside the
32
+ // payload would otherwise terminate or garble the surrounding OSC sequence.
33
+ const withoutControls = [...withoutTerminators]
34
+ .filter((ch) => {
35
+ const code = ch.codePointAt(0) ?? 0;
36
+ return code > 0x1f && code !== 0x7f;
37
+ })
38
+ .join("");
39
+ return withoutControls.replaceAll("]", "").trim();
30
40
  }
31
41
  /**
32
42
  * Best-effort check whether OSC 9;4 progress output is likely to work.
@@ -46,16 +56,16 @@ export function supportsOscProgress(env = process.env, isTty = process.stdout.is
46
56
  return false;
47
57
  if (options.force)
48
58
  return true;
49
- if (options.disableEnvVar && env[options.disableEnvVar] === '1') {
59
+ if (options.disableEnvVar && env[options.disableEnvVar] === "1") {
50
60
  return false;
51
61
  }
52
- if (options.forceEnvVar && env[options.forceEnvVar] === '1') {
62
+ if (options.forceEnvVar && env[options.forceEnvVar] === "1") {
53
63
  return true;
54
64
  }
55
- const termProgram = (env.TERM_PROGRAM ?? '').toLowerCase();
56
- if (termProgram.includes('ghostty'))
65
+ const termProgram = (env.TERM_PROGRAM ?? "").toLowerCase();
66
+ if (termProgram.includes("ghostty"))
57
67
  return true;
58
- if (termProgram.includes('wezterm'))
68
+ if (termProgram.includes("wezterm"))
59
69
  return true;
60
70
  if (env.WT_SESSION)
61
71
  return true;
@@ -83,15 +93,15 @@ export function findOscProgressSequences(text) {
83
93
  const candidates = [];
84
94
  const stStart = text.indexOf(OSC_PROGRESS_ST, after);
85
95
  if (stStart !== -1) {
86
- candidates.push({ endExclusive: stStart + OSC_PROGRESS_ST.length, terminator: 'st' });
96
+ candidates.push({ endExclusive: stStart + OSC_PROGRESS_ST.length, terminator: "st" });
87
97
  }
88
98
  const belStart = text.indexOf(OSC_PROGRESS_BEL, after);
89
99
  if (belStart !== -1) {
90
- candidates.push({ endExclusive: belStart + OSC_PROGRESS_BEL.length, terminator: 'bel' });
100
+ candidates.push({ endExclusive: belStart + OSC_PROGRESS_BEL.length, terminator: "bel" });
91
101
  }
92
102
  const c1Start = text.indexOf(OSC_PROGRESS_C1_ST, after);
93
103
  if (c1Start !== -1) {
94
- candidates.push({ endExclusive: c1Start + OSC_PROGRESS_C1_ST.length, terminator: 'c1st' });
104
+ candidates.push({ endExclusive: c1Start + OSC_PROGRESS_C1_ST.length, terminator: "c1st" });
95
105
  }
96
106
  if (candidates.length === 0) {
97
107
  searchFrom = after;
@@ -154,7 +164,7 @@ export function sanitizeOscProgress(text, keepOsc) {
154
164
  * - indeterminate mode emits `state=3` and `stop()` clears progress
155
165
  */
156
166
  export function startOscProgress(options = {}) {
157
- const { label = 'Working…', targetMs = 10 * 60_000, write = (text) => process.stderr.write(text), indeterminate = false, state = 1, terminator, } = options;
167
+ const { label = "Working…", targetMs = 10 * 60_000, write = (text) => process.stderr.write(text), indeterminate = false, state = 1, terminator, } = options;
158
168
  if (!supportsOscProgress(options.env, options.isTty, options)) {
159
169
  return () => { };
160
170
  }
@@ -206,41 +216,168 @@ export function startOscProgress(options = {}) {
206
216
  */
207
217
  export function createOscProgressController(options = {}) {
208
218
  // Default to stderr: progress belongs with other interactive output and avoids polluting stdout pipes.
209
- const { label = 'Working…', write = (text) => process.stderr.write(text), terminator } = options;
219
+ const { label = "Working…", write = (text) => process.stderr.write(text), terminator, stallAfterMs = 0, stalledLabel, clearDelayMs = DEFAULT_CLEAR_DELAY_MS, autoClearOnExit = false, } = options;
210
220
  if (!supportsOscProgress(options.env, options.isTty, options)) {
211
221
  // No-op controller: callers can keep their code linear and still be safe in unsupported terminals/logs.
212
- return { setIndeterminate: () => { }, setPercent: () => { }, clear: () => { } };
222
+ return {
223
+ setIndeterminate: () => { },
224
+ setPercent: () => { },
225
+ setPaused: () => { },
226
+ done: () => { },
227
+ fail: () => { },
228
+ clear: () => { },
229
+ dispose: () => { },
230
+ };
213
231
  }
214
232
  // Resolve once; avoids branching in hot paths.
215
233
  const end = resolveTerminator(terminator);
216
- const send = (state, percent, nextLabel) => {
234
+ const resolveStalledLabel = (baseLabel) => {
235
+ if (typeof stalledLabel === "function")
236
+ return stalledLabel(baseLabel);
237
+ if (typeof stalledLabel === "string")
238
+ return stalledLabel;
239
+ return `${baseLabel} (stalled)`;
240
+ };
241
+ const normalizePercent = (percent) => Math.max(0, Math.min(100, Math.round(percent)));
242
+ let lastEmittedLabel = label;
243
+ let lastEmittedPercent = null;
244
+ let lastEmittedState = null;
245
+ let lastEmitAt = 0;
246
+ let hasEmitted = false;
247
+ let lastSeenLabel = label;
248
+ let lastSeenPercent = 0;
249
+ let lastSeenMode = "indeterminate";
250
+ let stallTimer = null;
251
+ let clearTimer = null;
252
+ let stallEnabled = true;
253
+ const clearStallTimer = () => {
254
+ if (stallTimer !== null) {
255
+ clearTimeout(stallTimer);
256
+ stallTimer = null;
257
+ }
258
+ };
259
+ const clearTimers = () => {
260
+ clearStallTimer();
261
+ if (clearTimer !== null) {
262
+ clearTimeout(clearTimer);
263
+ clearTimer = null;
264
+ }
265
+ };
266
+ const scheduleStall = () => {
267
+ if (!stallAfterMs || stallAfterMs <= 0)
268
+ return;
269
+ if (stallTimer !== null)
270
+ clearTimeout(stallTimer);
271
+ stallTimer = setTimeout(() => {
272
+ stallTimer = null;
273
+ if (!stallEnabled)
274
+ return;
275
+ const labelToUse = resolveStalledLabel(lastSeenLabel);
276
+ const percent = lastSeenMode === "determinate" ? lastSeenPercent : null;
277
+ send(4, percent, labelToUse, true);
278
+ }, stallAfterMs);
279
+ stallTimer.unref?.();
280
+ };
281
+ const scheduleClear = () => {
282
+ if (clearDelayMs <= 0) {
283
+ clear();
284
+ return;
285
+ }
286
+ if (clearTimer !== null)
287
+ clearTimeout(clearTimer);
288
+ clearTimer = setTimeout(() => {
289
+ clearTimer = null;
290
+ clear();
291
+ }, clearDelayMs);
292
+ clearTimer.unref?.();
293
+ };
294
+ const send = (state, percent, nextLabel, force = false) => {
217
295
  // Always sanitize; labels often come from user-visible input (filenames/URLs) and must not break OSC.
218
296
  const cleanLabel = sanitizeLabel(nextLabel);
219
- if (percent == null) {
220
- write(`${OSC_PROGRESS_PREFIX}${state};;${cleanLabel}${end}`);
297
+ const normalizedPercent = percent == null ? null : normalizePercent(percent);
298
+ const now = Date.now();
299
+ const stateChanged = state !== lastEmittedState;
300
+ const labelChanged = cleanLabel !== lastEmittedLabel;
301
+ const percentChanged = normalizedPercent !== lastEmittedPercent;
302
+ const withinInterval = now - lastEmitAt < DEFAULT_THROTTLE_INTERVAL_MS;
303
+ let shouldEmit = force || !hasEmitted || stateChanged || labelChanged;
304
+ if (!shouldEmit && percentChanged) {
305
+ shouldEmit = !withinInterval;
306
+ }
307
+ if (!shouldEmit)
221
308
  return;
309
+ if (normalizedPercent == null) {
310
+ write(`${OSC_PROGRESS_PREFIX}${state};;${cleanLabel}${end}`);
222
311
  }
223
- // Be forgiving: accept floats/out-of-range and normalize to the OSC percent integer field.
224
- const clamped = Math.max(0, Math.min(100, Math.round(percent)));
225
- write(`${OSC_PROGRESS_PREFIX}${state};${clamped};${cleanLabel}${end}`);
312
+ else {
313
+ write(`${OSC_PROGRESS_PREFIX}${state};${normalizedPercent};${cleanLabel}${end}`);
314
+ }
315
+ lastEmittedLabel = cleanLabel;
316
+ lastEmittedPercent = normalizedPercent;
317
+ lastEmittedState = state;
318
+ lastEmitAt = now;
319
+ hasEmitted = true;
226
320
  };
227
321
  // Remember the last user-provided label so `clear()` clears the most recent task label.
228
- let lastLabel = label;
229
- return {
230
- setIndeterminate: (nextLabel) => {
231
- // Update label first so a `clear()` during/after this call uses the same label.
232
- lastLabel = nextLabel;
233
- send(3, null, nextLabel);
234
- },
235
- setPercent: (nextLabel, percent) => {
236
- // Same label tracking semantics as indeterminate mode.
237
- lastLabel = nextLabel;
238
- send(1, percent, nextLabel);
239
- },
240
- clear: () => {
241
- // Clear/hide frame. Reuses the last label so terminals that show it don't "flash" back to defaults.
242
- send(0, 0, lastLabel);
243
- },
322
+ const updateSeen = (nextLabel, mode, percent, shouldScheduleStall = true) => {
323
+ lastSeenLabel = nextLabel;
324
+ lastSeenMode = mode;
325
+ lastSeenPercent = percent ?? 0;
326
+ if (shouldScheduleStall) {
327
+ scheduleStall();
328
+ }
329
+ };
330
+ const setIndeterminate = (nextLabel) => {
331
+ stallEnabled = true;
332
+ updateSeen(nextLabel, "indeterminate", null);
333
+ send(3, null, nextLabel);
334
+ };
335
+ const setPercent = (nextLabel, percent) => {
336
+ const normalized = normalizePercent(percent);
337
+ stallEnabled = true;
338
+ updateSeen(nextLabel, "determinate", normalized);
339
+ send(1, normalized, nextLabel);
340
+ };
341
+ const setPaused = (nextLabel) => {
342
+ stallEnabled = false;
343
+ const percent = lastSeenMode === "determinate" ? lastSeenPercent : null;
344
+ updateSeen(nextLabel, lastSeenMode, lastSeenMode === "determinate" ? lastSeenPercent : null, false);
345
+ send(4, percent, nextLabel, true);
346
+ };
347
+ const clear = () => {
348
+ stallEnabled = false;
349
+ clearTimers();
350
+ send(0, 0, lastSeenLabel, true);
351
+ };
352
+ const done = (nextLabel) => {
353
+ const labelToUse = nextLabel ?? lastSeenLabel;
354
+ stallEnabled = false;
355
+ clearStallTimer();
356
+ updateSeen(labelToUse, "determinate", 100, false);
357
+ send(1, 100, labelToUse, true);
358
+ scheduleClear();
359
+ };
360
+ const fail = (nextLabel) => {
361
+ const labelToUse = nextLabel ?? lastSeenLabel;
362
+ const percent = lastSeenMode === "determinate" ? lastSeenPercent : null;
363
+ stallEnabled = false;
364
+ clearStallTimer();
365
+ updateSeen(labelToUse, lastSeenMode, lastSeenMode === "determinate" ? lastSeenPercent : null, false);
366
+ send(2, percent, labelToUse, true);
367
+ scheduleClear();
368
+ };
369
+ const handleExit = () => {
370
+ clear();
371
+ };
372
+ if (autoClearOnExit) {
373
+ process.once("exit", handleExit);
374
+ }
375
+ const dispose = () => {
376
+ clearTimers();
377
+ if (autoClearOnExit) {
378
+ process.off("exit", handleExit);
379
+ }
244
380
  };
381
+ return { setIndeterminate, setPercent, setPaused, done, fail, clear, dispose };
245
382
  }
246
383
  //# 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":"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"}
@@ -1 +1 @@
1
- export { createOscProgressController, findOscProgressSequences, OSC_PROGRESS_BEL, OSC_PROGRESS_C1_ST, OSC_PROGRESS_PREFIX, OSC_PROGRESS_ST, type OscProgressController, 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";
@@ -13,7 +13,7 @@ export declare const OSC_PROGRESS_BEL = "\u0007";
13
13
  /** C1 String Terminator (ST): `0x9c` */
14
14
  export declare const OSC_PROGRESS_C1_ST = "\u009C";
15
15
  /** How to terminate the OSC sequence when emitting. */
16
- export type OscProgressTerminator = 'st' | 'bel';
16
+ export type OscProgressTerminator = "st" | "bel";
17
17
  export interface OscProgressSupportOptions {
18
18
  /** Force support on/off, overriding env heuristics. */
19
19
  force?: boolean;
@@ -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;
@@ -62,7 +78,7 @@ export interface OscProgressSequence {
62
78
  /** Raw substring that matched. */
63
79
  raw: string;
64
80
  /** Which terminator was encountered. */
65
- terminator: 'st' | 'bel' | 'c1st';
81
+ terminator: "st" | "bel" | "c1st";
66
82
  }
67
83
  export type OscProgressController = {
68
84
  /** Emit an indeterminate progress indicator. */
@@ -72,6 +88,16 @@ export type OscProgressController = {
72
88
  /** Clear/hide the progress indicator. */
73
89
  clear: () => void;
74
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
+ };
75
101
  /**
76
102
  * Sanitizes a label/payload so it can't break the surrounding OSC sequence.
77
103
  * Removes escape chars and common OSC terminators; trims whitespace.
@@ -135,4 +161,4 @@ export declare function startOscProgress(options?: OscProgressOptions): () => vo
135
161
  * - `setPercent(label, percent)` emits `state=1` with a clamped integer percent
136
162
  * - `clear()` emits `state=0` using the last label
137
163
  */
138
- export declare function createOscProgressController(options?: OscProgressOptions): OscProgressController;
164
+ export declare function createOscProgressController(options?: OscProgressControllerOptions): OscProgressReporter;
package/package.json CHANGED
@@ -1,65 +1,67 @@
1
1
  {
2
2
  "name": "osc-progress",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Tiny TypeScript helper for OSC 9;4 terminal progress sequences.",
5
+ "keywords": [
6
+ "cli",
7
+ "ghostty",
8
+ "osc",
9
+ "progress",
10
+ "terminal",
11
+ "wezterm",
12
+ "windows-terminal"
13
+ ],
14
+ "homepage": "https://github.com/steipete/osc-progress#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/steipete/osc-progress/issues"
17
+ },
5
18
  "license": "MIT",
6
19
  "author": "Peter Steinberger",
7
20
  "repository": {
8
21
  "type": "git",
9
22
  "url": "git+https://github.com/steipete/osc-progress.git"
10
23
  },
11
- "homepage": "https://github.com/steipete/osc-progress#readme",
12
- "bugs": {
13
- "url": "https://github.com/steipete/osc-progress/issues"
14
- },
15
- "keywords": [
16
- "osc",
17
- "terminal",
18
- "progress",
19
- "cli",
20
- "ghostty",
21
- "wezterm",
22
- "windows-terminal"
24
+ "files": [
25
+ "dist",
26
+ "CHANGELOG.md",
27
+ "README.md",
28
+ "LICENSE"
23
29
  ],
24
30
  "type": "module",
31
+ "sideEffects": false,
25
32
  "main": "./dist/esm/index.js",
26
33
  "module": "./dist/esm/index.js",
27
34
  "types": "./dist/types/index.d.ts",
28
35
  "exports": {
29
36
  ".": {
30
37
  "types": "./dist/types/index.d.ts",
31
- "import": "./dist/esm/index.js"
38
+ "import": "./dist/esm/index.js",
39
+ "default": "./dist/esm/index.js"
32
40
  }
33
41
  },
34
- "files": [
35
- "dist",
36
- "CHANGELOG.md",
37
- "README.md",
38
- "LICENSE"
39
- ],
42
+ "devDependencies": {
43
+ "@types/node": "^25.6.0",
44
+ "@typescript/native-preview": "7.0.0-dev.20260605.1",
45
+ "@vitest/coverage-v8": "^4.1.5",
46
+ "oxfmt": "^0.53.0",
47
+ "oxlint": "^1.62.0",
48
+ "postcss": "^8.5.13",
49
+ "typescript": "^6.0.3",
50
+ "vite": "^8.0.10",
51
+ "vitest": "^4.1.5"
52
+ },
40
53
  "engines": {
41
- "node": ">=20"
54
+ "node": ">=24"
42
55
  },
43
- "sideEffects": false,
44
- "packageManager": "pnpm@10.25.0",
45
56
  "scripts": {
46
- "build": "tsc -p tsconfig.build.json",
47
- "prepare": "pnpm build",
48
- "prepack": "pnpm build",
49
- "prepublishOnly": "pnpm check",
50
- "typecheck": "tsc -p tsconfig.build.json --noEmit",
51
- "format": "biome format --write .",
52
- "lint": "biome check .",
53
- "lint:fix": "biome check --write .",
57
+ "build": "tsgo -p tsconfig.build.json",
58
+ "typecheck": "tsgo -p tsconfig.build.json --noEmit",
59
+ "format": "oxfmt --write .",
60
+ "format:check": "oxfmt --check .",
61
+ "lint": "pnpm format:check && oxlint --deny-warnings src tests",
62
+ "lint:fix": "pnpm format && oxlint --fix src tests",
54
63
  "test": "pnpm build && vitest run",
55
64
  "test:coverage": "pnpm build && vitest run --coverage",
56
- "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"
65
+ "check": "pnpm lint && pnpm typecheck && pnpm test:coverage"
64
66
  }
65
- }
67
+ }