@jrichman/ink 6.4.1 → 6.4.3

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/build/index.d.ts CHANGED
@@ -24,7 +24,7 @@ export { default as useStderr } from './hooks/use-stderr.js';
24
24
  export { default as useFocus } from './hooks/use-focus.js';
25
25
  export { default as useFocusManager } from './hooks/use-focus-manager.js';
26
26
  export { default as useIsScreenReaderEnabled } from './hooks/use-is-screen-reader-enabled.js';
27
- export { default as measureElement, getBoundingBox, getInnerWidth, getInnerHeight, } from './measure-element.js';
27
+ export { default as measureElement, getBoundingBox, getInnerWidth, getInnerHeight, getVerticalScrollbarBoundingBox, getHorizontalScrollbarBoundingBox, type ScrollbarBoundingBox, } from './measure-element.js';
28
28
  export { getScrollHeight, getScrollWidth } from './scroll.js';
29
29
  export { clearStringWidthCache, setStringWidthFunction } from './measure-text.js';
30
30
  export type { DOMElement } from './dom.js';
package/build/index.js CHANGED
@@ -13,7 +13,7 @@ export { default as useStderr } from './hooks/use-stderr.js';
13
13
  export { default as useFocus } from './hooks/use-focus.js';
14
14
  export { default as useFocusManager } from './hooks/use-focus-manager.js';
15
15
  export { default as useIsScreenReaderEnabled } from './hooks/use-is-screen-reader-enabled.js';
16
- export { default as measureElement, getBoundingBox, getInnerWidth, getInnerHeight, } from './measure-element.js';
16
+ export { default as measureElement, getBoundingBox, getInnerWidth, getInnerHeight, getVerticalScrollbarBoundingBox, getHorizontalScrollbarBoundingBox, } from './measure-element.js';
17
17
  export { getScrollHeight, getScrollWidth } from './scroll.js';
18
18
  export { clearStringWidthCache, setStringWidthFunction } from './measure-text.js';
19
19
  export { default as ResizeObserver, ResizeObserverEntry, } from './resize-observer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAC,OAAO,IAAI,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EACN,OAAO,IAAI,cAAc,EACzB,cAAc,EACd,aAAa,EACb,cAAc,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EACN,OAAO,IAAI,cAAc,EACzB,mBAAmB,GACnB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAC,OAAO,IAAI,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EACN,OAAO,IAAI,cAAc,EACzB,cAAc,EACd,aAAa,EACb,cAAc,EACd,+BAA+B,EAC/B,iCAAiC,GAEjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EACN,OAAO,IAAI,cAAc,EACzB,mBAAmB,GACnB,MAAM,sBAAsB,CAAC"}
package/build/ink.d.ts CHANGED
@@ -22,6 +22,9 @@ export type Options = {
22
22
  waitUntilExit?: () => Promise<void>;
23
23
  maxFps?: number;
24
24
  alternateBuffer?: boolean;
25
+ alternateBufferAlreadyActive?: boolean;
26
+ incrementalRendering?: boolean;
27
+ debugRainbow?: boolean;
25
28
  };
26
29
  export default class Ink {
27
30
  private readonly options;
@@ -37,6 +40,7 @@ export default class Ink {
37
40
  private exitPromise?;
38
41
  private restoreConsole?;
39
42
  private readonly unsubscribeResize?;
43
+ private frameIndex;
40
44
  constructor(options: Options);
41
45
  resized: () => void;
42
46
  resolveExitPromise: () => void;
package/build/ink.js CHANGED
@@ -20,6 +20,23 @@ import { calculateScroll } from './scroll.js';
20
20
  // eslint-disable-next-line @typescript-eslint/consistent-type-imports
21
21
  import { ResizeObserverEntry } from './resize-observer.js';
22
22
  const noop = () => { };
23
+ const rainbowColors = [
24
+ 'red',
25
+ 'green',
26
+ 'yellow',
27
+ 'blue',
28
+ 'magenta',
29
+ 'cyan',
30
+ 'white',
31
+ 'blackBright',
32
+ 'redBright',
33
+ 'greenBright',
34
+ 'yellowBright',
35
+ 'blueBright',
36
+ 'magentaBright',
37
+ 'cyanBright',
38
+ 'whiteBright',
39
+ ];
23
40
  export default class Ink {
24
41
  options;
25
42
  log;
@@ -37,6 +54,7 @@ export default class Ink {
37
54
  exitPromise;
38
55
  restoreConsole;
39
56
  unsubscribeResize;
57
+ frameIndex = 0;
40
58
  constructor(options) {
41
59
  autoBind(this);
42
60
  this.options = options;
@@ -57,7 +75,10 @@ export default class Ink {
57
75
  this.rootNode.onImmediateRender = this.onRender;
58
76
  this.log = logUpdate.create(options.stdout, {
59
77
  alternateBuffer: options.alternateBuffer,
78
+ alternateBufferAlreadyActive: options.alternateBufferAlreadyActive,
60
79
  getRows: () => options.stdout.rows,
80
+ getColumns: () => options.stdout.columns,
81
+ incremental: options.incrementalRendering,
61
82
  });
62
83
  this.throttledLog = unthrottled
63
84
  ? this.log
@@ -156,7 +177,12 @@ export default class Ink {
156
177
  return;
157
178
  }
158
179
  const startTime = performance.now();
159
- const { output, outputHeight, staticOutput } = render(this.rootNode, this.isScreenReaderEnabled);
180
+ let debugRainbowColor;
181
+ if (this.options.debugRainbow) {
182
+ debugRainbowColor = rainbowColors[this.frameIndex % rainbowColors.length];
183
+ this.frameIndex++;
184
+ }
185
+ const { output, outputHeight, staticOutput, styledOutput } = render(this.rootNode, this.isScreenReaderEnabled);
160
186
  this.options.onRender?.({ renderTime: performance.now() - startTime });
161
187
  // If <Static> output isn't empty, it means new children have been added to it
162
188
  const hasStaticOutput = staticOutput && staticOutput !== '\n';
@@ -179,7 +205,7 @@ export default class Ink {
179
205
  if (hasStaticOutput) {
180
206
  this.fullStaticOutput += staticOutput;
181
207
  }
182
- this.log(this.fullStaticOutput + output);
208
+ this.log(this.fullStaticOutput + output, styledOutput, debugRainbowColor);
183
209
  this.lastOutput = output;
184
210
  return;
185
211
  }
@@ -230,10 +256,10 @@ export default class Ink {
230
256
  if (hasStaticOutput) {
231
257
  this.log.clear();
232
258
  this.options.stdout.write(staticOutput);
233
- this.log(output);
259
+ this.log(output, styledOutput, debugRainbowColor);
234
260
  }
235
261
  if (!hasStaticOutput && output !== this.lastOutput) {
236
- this.throttledLog(output);
262
+ this.throttledLog(output, styledOutput, debugRainbowColor);
237
263
  }
238
264
  this.lastOutput = output;
239
265
  this.lastOutputHeight = outputHeight;
@@ -267,7 +293,7 @@ export default class Ink {
267
293
  }
268
294
  this.log.clear();
269
295
  this.options.stdout.write(data);
270
- this.log(this.lastOutput);
296
+ this.log(this.lastOutput, []);
271
297
  }
272
298
  writeToStderr(data) {
273
299
  if (this.isUnmounted) {
@@ -284,7 +310,7 @@ export default class Ink {
284
310
  }
285
311
  this.log.clear();
286
312
  this.options.stderr.write(data);
287
- this.log(this.lastOutput);
313
+ this.log(this.lastOutput, []);
288
314
  }
289
315
  // eslint-disable-next-line @typescript-eslint/ban-types
290
316
  unmount(error) {
package/build/ink.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +1,19 @@
1
1
  import { type Writable } from 'node:stream';
2
+ import { type StyledChar } from '@alcalzone/ansi-tokenize';
2
3
  export type LogUpdate = {
3
4
  clear: () => void;
4
5
  done: () => void;
5
6
  sync: (str: string) => void;
6
- (str: string): void;
7
+ (str: string, styledOutput: StyledChar[][], debugRainbowColor?: string): void;
7
8
  };
8
9
  declare const logUpdate: {
9
- create: (stream: Writable, { showCursor, alternateBuffer, getRows, }?: {
10
+ create: (stream: Writable, { showCursor, alternateBuffer, alternateBufferAlreadyActive, incremental, getRows, getColumns, }?: {
10
11
  showCursor?: boolean;
11
12
  alternateBuffer?: boolean;
13
+ alternateBufferAlreadyActive?: boolean;
14
+ incremental?: boolean;
12
15
  getRows?: () => number;
16
+ getColumns?: () => number;
13
17
  }) => LogUpdate;
14
18
  };
15
19
  export default logUpdate;
@@ -1,74 +1,126 @@
1
1
  import process from 'node:process';
2
2
  import ansiEscapes from 'ansi-escapes';
3
3
  import cliCursor from 'cli-cursor';
4
+ import colorize from './colorize.js';
5
+ // Debugging option to simulate flicker if for terminals that do not support enableSynchronizedOutput.
6
+ const enableSynchronizedOutput = true;
4
7
  const enterSynchronizedOutput = '\u001B[?2026h';
5
8
  const exitSynchronizedOutput = '\u001B[?2026l';
6
- const create = (stream, { showCursor = false, alternateBuffer = false, getRows = () => 0, } = {}) => {
9
+ const enterAlternateBuffer = (stream, alreadyActive) => {
10
+ if (!alreadyActive) {
11
+ stream.write(ansiEscapes.enterAlternativeScreen);
12
+ }
13
+ stream.write('\u001B[?7l');
14
+ };
15
+ const exitAlternateBuffer = (stream, lastFrame) => {
16
+ stream.write('\u001B[?7h');
17
+ stream.write(ansiEscapes.exitAlternativeScreen);
18
+ // The last frame was rendered to the alternate buffer.
19
+ // We need to render it again to the main buffer. If apps do not
20
+ // want this behavior, they can make sure the last frame is empty
21
+ // before unmounting.
22
+ stream.write(lastFrame);
23
+ };
24
+ const clearAlternateBuffer = (stream) => {
25
+ const eraseOperation = process.env['TERM_PROGRAM'] === 'iTerm.app'
26
+ ? ansiEscapes.clearTerminal
27
+ : ansiEscapes.eraseScreen;
28
+ stream.write(eraseOperation);
29
+ };
30
+ const ensureCursorHidden = (showCursor, hasHiddenCursor) => {
31
+ if (!showCursor && !hasHiddenCursor) {
32
+ cliCursor.hide();
33
+ return true;
34
+ }
35
+ return hasHiddenCursor;
36
+ };
37
+ const ensureCursorShown = (showCursor) => {
38
+ if (!showCursor) {
39
+ cliCursor.show();
40
+ }
41
+ };
42
+ const moveCursorDown = (buffer, skippedLines) => {
43
+ if (skippedLines > 0) {
44
+ if (skippedLines === 1) {
45
+ buffer.push(ansiEscapes.cursorNextLine);
46
+ }
47
+ else {
48
+ buffer.push(ansiEscapes.cursorDown(skippedLines));
49
+ }
50
+ }
51
+ return 0;
52
+ };
53
+ const createStandard = (stream, { showCursor = false, alternateBuffer = false, alternateBufferAlreadyActive = false, getRows = () => 0, getColumns = () => 0, } = {}) => {
7
54
  let previousLineCount = 0;
8
55
  let previousOutput = '';
9
56
  // Keep track of the actual previous output rendered to the alternate buffer
10
57
  // which may be truncated to the terminal height.
11
58
  let previousOutputAlternateBuffer = '';
59
+ let previousRows = 0;
60
+ let previousColumns = 0;
12
61
  let hasHiddenCursor = false;
13
62
  if (alternateBuffer) {
14
- stream.write(ansiEscapes.enterAlternativeScreen);
63
+ enterAlternateBuffer(stream, alternateBufferAlreadyActive);
15
64
  }
16
- const render = (str) => {
17
- if (!showCursor && !hasHiddenCursor) {
18
- cliCursor.hide();
19
- hasHiddenCursor = true;
20
- }
65
+ const render = (str, _styledOutput, debugRainbowColor) => {
66
+ hasHiddenCursor = ensureCursorHidden(showCursor, hasHiddenCursor);
21
67
  const output = str + '\n';
22
68
  if (alternateBuffer) {
23
69
  let alternateBufferOutput = output;
24
70
  const rows = getRows() ?? 0;
71
+ const columns = getColumns() ?? 0;
25
72
  if (rows > 0) {
26
73
  const lines = str.split('\n');
27
74
  const lineCount = lines.length;
28
- // Only write the last `rows` lines as the alternate buffer
75
+ // Only write the first `rows` lines as the alternate buffer
29
76
  // will not scroll so all we accomplish by writing more
30
77
  // content is risking flicker and confusing the terminal about
31
78
  // the cursor position.
32
79
  if (lineCount > rows) {
33
- alternateBufferOutput = lines.slice(-rows).join('\n');
34
- }
35
- // Only write the last `rows` lines as the alternate buffer
36
- // will not scroll so all we accomplish by writing more
37
- // content is risking flicker and confusing the terminal about
38
- // the cursor position.
39
- if (lineCount > rows) {
40
- alternateBufferOutput = str.split('\n').slice(-rows).join('\n');
80
+ alternateBufferOutput = lines.slice(0, rows).join('\n');
41
81
  }
42
82
  }
43
83
  // In alternate buffer mode we need to re-render based on whether content
44
84
  // visible within the clipped alternate output buffer has changed even
45
85
  // if the entire output string has not changed.
46
- if (alternateBufferOutput !== previousOutputAlternateBuffer) {
86
+ if (alternateBufferOutput !== previousOutputAlternateBuffer ||
87
+ rows !== previousRows ||
88
+ columns !== previousColumns) {
47
89
  // Unfortunately, eraseScreen does not work correctly in iTerm2 so we
48
90
  // have to use clearTerminal instead.
49
91
  const eraseOperation = process.env['TERM_PROGRAM'] === 'iTerm.app'
50
92
  ? ansiEscapes.clearTerminal
51
93
  : ansiEscapes.eraseScreen;
52
- stream.write(enterSynchronizedOutput +
94
+ let outputToWrite = alternateBufferOutput;
95
+ outputToWrite = debugRainbowColor
96
+ ? colorize(outputToWrite, debugRainbowColor, 'background')
97
+ : outputToWrite;
98
+ stream.write((enableSynchronizedOutput ? enterSynchronizedOutput : '') +
53
99
  ansiEscapes.cursorTo(0, 0) +
54
100
  eraseOperation +
55
- alternateBufferOutput +
56
- exitSynchronizedOutput);
101
+ outputToWrite +
102
+ (enableSynchronizedOutput ? exitSynchronizedOutput : ''));
57
103
  previousOutputAlternateBuffer = alternateBufferOutput;
104
+ previousRows = rows;
105
+ previousColumns = columns;
58
106
  }
59
107
  previousOutput = output;
60
108
  return;
61
109
  }
110
+ if (output === previousOutput) {
111
+ return;
112
+ }
62
113
  previousOutput = output;
63
- stream.write(ansiEscapes.eraseLines(previousLineCount) + output);
114
+ let outputToWrite = output;
115
+ outputToWrite = debugRainbowColor
116
+ ? colorize(outputToWrite, debugRainbowColor, 'background')
117
+ : outputToWrite;
118
+ stream.write(ansiEscapes.eraseLines(previousLineCount) + outputToWrite);
64
119
  previousLineCount = output.split('\n').length;
65
120
  };
66
121
  render.clear = () => {
67
122
  if (alternateBuffer) {
68
- const eraseOperation = process.env['TERM_PROGRAM'] === 'iTerm.app'
69
- ? ansiEscapes.clearTerminal
70
- : ansiEscapes.eraseScreen;
71
- stream.write(eraseOperation);
123
+ clearAlternateBuffer(stream);
72
124
  previousOutput = '';
73
125
  return;
74
126
  }
@@ -80,17 +132,10 @@ const create = (stream, { showCursor = false, alternateBuffer = false, getRows =
80
132
  const lastFrame = previousOutput;
81
133
  previousOutput = '';
82
134
  previousLineCount = 0;
83
- if (!showCursor) {
84
- cliCursor.show();
85
- hasHiddenCursor = false;
86
- }
135
+ ensureCursorShown(showCursor);
136
+ hasHiddenCursor = false;
87
137
  if (alternateBuffer) {
88
- stream.write(ansiEscapes.exitAlternativeScreen);
89
- // The last frame was rendered to the alternate buffer.
90
- // We need to render it again to the main buffer. If apps do not
91
- // want this behavior, they can make sure the last frame is empty
92
- // before unmounting.
93
- stream.write(lastFrame);
138
+ exitAlternateBuffer(stream, lastFrame);
94
139
  }
95
140
  };
96
141
  render.sync = (str) => {
@@ -104,6 +149,224 @@ const create = (stream, { showCursor = false, alternateBuffer = false, getRows =
104
149
  };
105
150
  return render;
106
151
  };
152
+ const createIncremental = (stream, { showCursor = false, alternateBuffer = false, alternateBufferAlreadyActive = false, getRows = () => 0, getColumns = () => 0, } = {}) => {
153
+ let previousLines = [];
154
+ let previousOutput = '';
155
+ let previousOutputAlternateBuffer = '';
156
+ let previousRows = 0;
157
+ let previousColumns = 0;
158
+ let hasHiddenCursor = false;
159
+ let alternateBufferStyledOutput = [];
160
+ if (alternateBuffer) {
161
+ enterAlternateBuffer(stream, alternateBufferAlreadyActive);
162
+ }
163
+ const render = (str, styledOutput, debugRainbowColor) => {
164
+ hasHiddenCursor = ensureCursorHidden(showCursor, hasHiddenCursor);
165
+ const output = str + '\n';
166
+ if (alternateBuffer) {
167
+ let alternateBufferOutput = output;
168
+ const rows = getRows() ?? 0;
169
+ const columns = getColumns() ?? 0;
170
+ if (rows > 0) {
171
+ const lines = str.split('\n');
172
+ const lineCount = lines.length;
173
+ // Only write the first `rows` lines as the alternate buffer
174
+ // will not scroll so all we accomplish by writing more
175
+ // content is risking flicker and confusion about the terminal about
176
+ // the cursor position.
177
+ if (lineCount > rows) {
178
+ alternateBufferOutput = lines.slice(0, rows).join('\n');
179
+ alternateBufferStyledOutput = styledOutput.slice(0, rows);
180
+ }
181
+ else {
182
+ alternateBufferOutput = lines.join('\n');
183
+ alternateBufferStyledOutput = styledOutput;
184
+ }
185
+ }
186
+ // In alternate buffer mode we need to re-render based on whether content
187
+ // visible within the clipped alternate output buffer has changed even
188
+ // if the entire output string has not changed.
189
+ if (alternateBufferOutput !== previousOutputAlternateBuffer ||
190
+ rows !== previousRows ||
191
+ columns !== previousColumns) {
192
+ const nextLines = alternateBufferOutput.split('\n');
193
+ if (rows === previousRows && columns === previousColumns) {
194
+ const buffer = [];
195
+ if (enableSynchronizedOutput) {
196
+ buffer.push(enterSynchronizedOutput);
197
+ }
198
+ buffer.push(ansiEscapes.cursorTo(0, 0));
199
+ let skippedLines = 0;
200
+ for (let i = 0; i < nextLines.length; i++) {
201
+ if (nextLines[i] === previousLines[i]) {
202
+ skippedLines++;
203
+ continue;
204
+ }
205
+ skippedLines = moveCursorDown(buffer, skippedLines);
206
+ let lineToWrite = nextLines[i] ?? '';
207
+ let lineLength = 0;
208
+ const styledOutput = alternateBufferStyledOutput[i];
209
+ if (styledOutput !== undefined) {
210
+ for (let j = styledOutput.length - 1; j >= 0; j--) {
211
+ const char = styledOutput[j];
212
+ if (char === undefined)
213
+ continue;
214
+ if (char.value !== ' ' && char.value !== '') {
215
+ lineLength = j + (char.fullWidth ? 2 : 1);
216
+ break;
217
+ }
218
+ }
219
+ }
220
+ lineToWrite = debugRainbowColor
221
+ ? colorize(lineToWrite, debugRainbowColor, 'background')
222
+ : lineToWrite;
223
+ buffer.push(lineToWrite);
224
+ if (columns > lineLength) {
225
+ // Clear the rest of the line without introducing flicker.
226
+ // We could optimize this further by only writing spaces up to the last line length
227
+ // but this is safer.
228
+ // The one failure mode for this is that if we add too many spaces and there was a
229
+ // non space character at the very end of the line
230
+ buffer.push(' '.repeat(columns - lineLength));
231
+ }
232
+ if (i < nextLines.length - 1) {
233
+ buffer.push('\n');
234
+ }
235
+ }
236
+ skippedLines = moveCursorDown(buffer, skippedLines);
237
+ if (previousLines.length > nextLines.length) {
238
+ const linesToClear = previousLines.length - nextLines.length;
239
+ for (let i = 0; i < linesToClear; i++) {
240
+ buffer.push(ansiEscapes.eraseLine + ansiEscapes.cursorNextLine);
241
+ }
242
+ }
243
+ if (enableSynchronizedOutput) {
244
+ buffer.push(exitSynchronizedOutput);
245
+ }
246
+ stream.write(buffer.join(''));
247
+ }
248
+ else {
249
+ // Unfortunately, eraseScreen does not work correctly in iTerm2 so we
250
+ // have to use clearTerminal instead.
251
+ const eraseOperation = process.env['TERM_PROGRAM'] === 'iTerm.app'
252
+ ? ansiEscapes.clearTerminal
253
+ : ansiEscapes.eraseScreen;
254
+ let outputToWrite = alternateBufferOutput;
255
+ outputToWrite = debugRainbowColor
256
+ ? colorize(outputToWrite, debugRainbowColor, 'background')
257
+ : outputToWrite;
258
+ stream.write(enterSynchronizedOutput +
259
+ ansiEscapes.cursorTo(0, 0) +
260
+ eraseOperation +
261
+ outputToWrite +
262
+ exitSynchronizedOutput);
263
+ previousRows = rows;
264
+ previousColumns = columns;
265
+ }
266
+ previousOutputAlternateBuffer = alternateBufferOutput;
267
+ previousLines = nextLines;
268
+ }
269
+ previousOutput = output;
270
+ return;
271
+ }
272
+ if (output === previousOutput) {
273
+ return;
274
+ }
275
+ const previousCount = previousLines.length;
276
+ const nextLines = output.split('\n');
277
+ const nextCount = nextLines.length;
278
+ const visibleCount = nextCount - 1;
279
+ if (output === '\n' || previousOutput.length === 0) {
280
+ let outputToWrite = output;
281
+ outputToWrite = debugRainbowColor
282
+ ? colorize(outputToWrite, debugRainbowColor, 'background')
283
+ : outputToWrite;
284
+ stream.write(ansiEscapes.eraseLines(previousCount) + outputToWrite);
285
+ previousOutput = output;
286
+ previousLines = nextLines;
287
+ return;
288
+ }
289
+ // We aggregate all chunks for incremental rendering into a buffer, and then write them to stdout at the end.
290
+ const buffer = [];
291
+ // Clear extra lines if the current content's line count is lower than the previous.
292
+ if (nextCount < previousCount) {
293
+ buffer.push(
294
+ // Erases the trailing lines and the final newline slot.
295
+ ansiEscapes.eraseLines(previousCount - nextCount + 1),
296
+ // Positions cursor to the top of the rendered output.
297
+ ansiEscapes.cursorUp(visibleCount));
298
+ }
299
+ else {
300
+ buffer.push(ansiEscapes.cursorUp(previousCount - 1));
301
+ }
302
+ let skippedLines = 0;
303
+ for (let i = 0; i < visibleCount; i++) {
304
+ // We do not write lines if the contents are the same. This prevents flickering during renders.
305
+ if (nextLines[i] === previousLines[i]) {
306
+ skippedLines++;
307
+ continue;
308
+ }
309
+ skippedLines = moveCursorDown(buffer, skippedLines);
310
+ let lineToWrite = nextLines[i] ?? '';
311
+ lineToWrite = debugRainbowColor
312
+ ? colorize(lineToWrite, debugRainbowColor, 'background')
313
+ : lineToWrite;
314
+ buffer.push(ansiEscapes.eraseLine + lineToWrite + '\n');
315
+ }
316
+ skippedLines = moveCursorDown(buffer, skippedLines);
317
+ stream.write(buffer.join(''));
318
+ previousOutput = output;
319
+ previousLines = nextLines;
320
+ };
321
+ render.clear = () => {
322
+ if (alternateBuffer) {
323
+ clearAlternateBuffer(stream);
324
+ previousOutput = '';
325
+ return;
326
+ }
327
+ stream.write(ansiEscapes.eraseLines(previousLines.length));
328
+ previousOutput = '';
329
+ previousLines = [];
330
+ };
331
+ render.done = () => {
332
+ const lastFrame = previousOutput;
333
+ previousOutput = '';
334
+ previousLines = [];
335
+ ensureCursorShown(showCursor);
336
+ hasHiddenCursor = false;
337
+ if (alternateBuffer) {
338
+ exitAlternateBuffer(stream, lastFrame);
339
+ }
340
+ };
341
+ render.sync = (str) => {
342
+ if (alternateBuffer) {
343
+ previousOutput = str;
344
+ return;
345
+ }
346
+ const output = str + '\n';
347
+ previousOutput = output;
348
+ previousLines = output.split('\n');
349
+ };
350
+ return render;
351
+ };
352
+ const create = (stream, { showCursor = false, alternateBuffer = false, alternateBufferAlreadyActive = false, incremental = false, getRows, getColumns, } = {}) => {
353
+ if (incremental) {
354
+ return createIncremental(stream, {
355
+ showCursor,
356
+ alternateBuffer,
357
+ alternateBufferAlreadyActive,
358
+ getRows,
359
+ getColumns,
360
+ });
361
+ }
362
+ return createStandard(stream, {
363
+ showCursor,
364
+ alternateBuffer,
365
+ alternateBufferAlreadyActive,
366
+ getRows,
367
+ getColumns,
368
+ });
369
+ };
107
370
  const logUpdate = { create };
108
371
  export default logUpdate;
109
372
  //# sourceMappingURL=log-update.js.map