@jrichman/ink 6.5.1-beta.7 → 6.6.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.
Files changed (43) hide show
  1. package/build/colorize.d.ts +0 -1
  2. package/build/colorize.js +3 -16
  3. package/build/colorize.js.map +1 -1
  4. package/build/debug-log.js +2 -3
  5. package/build/debug-log.js.map +1 -1
  6. package/build/ink.js +0 -3
  7. package/build/ink.js.map +1 -1
  8. package/build/measure-text.js +0 -2
  9. package/build/measure-text.js.map +1 -1
  10. package/build/render-node-to-output.js +0 -2
  11. package/build/render-node-to-output.js.map +1 -1
  12. package/build/render-scrollbar.js +22 -14
  13. package/build/render-scrollbar.js.map +1 -1
  14. package/build/text-wrap.js +0 -2
  15. package/build/text-wrap.js.map +1 -1
  16. package/package.json +1 -1
  17. package/build/render-worker.d.ts +0 -25
  18. package/build/render-worker.js +0 -370
  19. package/build/render-worker.js.map +0 -1
  20. package/build/styled-lines.d.ts +0 -29
  21. package/build/styled-lines.js +0 -110
  22. package/build/styled-lines.js.map +0 -1
  23. package/build/terminal-writer.d.ts +0 -69
  24. package/build/terminal-writer.js +0 -546
  25. package/build/terminal-writer.js.map +0 -1
  26. package/build/web/ansi-to-css.d.ts +0 -16
  27. package/build/web/ansi-to-css.js +0 -147
  28. package/build/web/ansi-to-css.js.map +0 -1
  29. package/build/web/client.d.ts +0 -51
  30. package/build/web/client.js +0 -315
  31. package/build/web/client.js.map +0 -1
  32. package/build/web/server.d.ts +0 -1
  33. package/build/web/server.js +0 -179
  34. package/build/web/server.js.map +0 -1
  35. package/build/worker/dump-replay.d.ts +0 -1
  36. package/build/worker/dump-replay.js +0 -15
  37. package/build/worker/dump-replay.js.map +0 -1
  38. package/build/worker/replay.d.ts +0 -55
  39. package/build/worker/replay.js +0 -133
  40. package/build/worker/replay.js.map +0 -1
  41. package/build/wrap-text.d.ts +0 -6
  42. package/build/wrap-text.js +0 -120
  43. package/build/wrap-text.js.map +0 -1
@@ -1,546 +0,0 @@
1
- import ansiEscapes from 'ansi-escapes';
2
- import { styledCharsToString } from '@alcalzone/ansi-tokenize';
3
- import { debugLog } from './debug-log.js';
4
- import colorize from './colorize.js';
5
- const enterSynchronizedOutput = '\u001B[?2026h';
6
- const exitSynchronizedOutput = '\u001B[?2026l';
7
- const synchronizeOutput = false;
8
- export const rainbowColors = [
9
- 'red',
10
- 'green',
11
- 'yellow',
12
- 'blue',
13
- 'magenta',
14
- 'cyan',
15
- 'white',
16
- 'blackBright',
17
- 'redBright',
18
- 'greenBright',
19
- 'yellowBright',
20
- 'blueBright',
21
- 'magentaBright',
22
- 'cyanBright',
23
- 'whiteBright',
24
- ];
25
- const moveCursorDown = (skippedLines) => {
26
- if (skippedLines > 0) {
27
- if (skippedLines === 1) {
28
- return ansiEscapes.cursorNextLine;
29
- }
30
- return ansiEscapes.cursorDown(skippedLines);
31
- }
32
- return '';
33
- };
34
- const moveCursorUp = (skippedLines) => {
35
- if (skippedLines > 0) {
36
- if (skippedLines === 1) {
37
- return ansiEscapes.cursorPrevLine;
38
- }
39
- return ansiEscapes.cursorUp(skippedLines);
40
- }
41
- return '';
42
- };
43
- const setScrollRegionCode = (top, bottom) => {
44
- return `\u001B[${top};${bottom}r`;
45
- };
46
- const resetScrollRegion = '\u001B[r';
47
- export function linesEqual(lineA, lineB) {
48
- if (lineA === lineB) {
49
- return true;
50
- }
51
- if (!lineA || !lineB) {
52
- return false;
53
- }
54
- if (lineA.length !== lineB.length) {
55
- return false;
56
- }
57
- for (const [i, charA] of lineA.entries()) {
58
- const charB = lineB[i];
59
- if (charA.value !== charB.value || charA.fullWidth !== charB.fullWidth) {
60
- return false;
61
- }
62
- if (charA.styles.length !== charB.styles.length) {
63
- return false;
64
- }
65
- for (const [j, styleA] of charA.styles.entries()) {
66
- const styleB = charB.styles[j];
67
- if (styleA.code !== styleB.code || styleA.endCode !== styleB.endCode) {
68
- return false;
69
- }
70
- }
71
- }
72
- return true;
73
- }
74
- export class TerminalWriter {
75
- columns;
76
- rows;
77
- stdout;
78
- isTainted = false;
79
- debugRainbowColor;
80
- screen = [];
81
- backbuffer = [];
82
- cursorX = -1;
83
- cursorY = -1;
84
- scrollRegionTop = -1;
85
- scrollRegionBottom = -1;
86
- firstRender = true;
87
- enableSynchronizedOutput = synchronizeOutput;
88
- cancelSlowFlush;
89
- outputBuffer = [];
90
- currentChunkBuffer = [];
91
- constructor(columns, rows, stdout) {
92
- this.columns = columns;
93
- this.rows = rows;
94
- this.stdout = stdout;
95
- }
96
- unkownCursorLocation() {
97
- this.cursorX = -1;
98
- this.cursorY = -1;
99
- }
100
- getBackbufferLength() {
101
- return this.backbuffer.length;
102
- }
103
- getBackbufferEntry(index) {
104
- return this.backbuffer[index];
105
- }
106
- getScreenLine(y) {
107
- return this.screen[y];
108
- }
109
- get isFirstRender() {
110
- return this.firstRender;
111
- }
112
- /**
113
- * Append lines to the backbuffer leaving the on screen content unchanged.
114
- */
115
- appendLinesBackbuffer(lines) {
116
- this.startSynchronizedOutput();
117
- try {
118
- // The terminal lacks an API to scroll lines to the back buffer without first adding them to the main buffer.
119
- // Therefore, we simulate this by performing a scroll up of the top line(s) of the terminal,
120
- // then re-adding the visible lines to the terminal.
121
- // The minimum supported viewport height is 2 requiring us to scroll 2 lines.
122
- this.performScroll({
123
- start: 0,
124
- end: 2,
125
- linesToScroll: lines.length,
126
- // We add the lines that are currently on screen at the very
127
- // end to avoid corrupting the content currently on screen.
128
- lines: [...lines, ...this.screen.slice(0, 2)],
129
- direction: 'up',
130
- scrollToBackbuffer: true
131
- });
132
- }
133
- finally {
134
- this.endSynchronizedOutput();
135
- }
136
- }
137
- updateBackbuffer(start, deleteCount, newLines) {
138
- const backbufferLength = this.backbuffer.length;
139
- const screenStart = Math.max(0, backbufferLength - this.rows);
140
- // Case 1: Append at the very end
141
- if (start === backbufferLength && deleteCount === 0) {
142
- this.appendLinesBackbuffer(newLines);
143
- return;
144
- }
145
- // Case 2: Within the screen
146
- if (start >= screenStart) {
147
- this.backbuffer.splice(start, deleteCount, ...newLines);
148
- return;
149
- }
150
- // Case 3: Other cases (outside screen, not append)
151
- this.isTainted = true;
152
- }
153
- writeLines(lines) {
154
- if (this.backbuffer.length > 0 || this.screen.length > 0) {
155
- throw new Error(`writeLines can only be called on an empty terminal. Sizes = ${this.backbuffer.length}, ${this.screen.length}`);
156
- }
157
- const backBufferLength = Math.max(0, lines.length - this.rows);
158
- for (const [i, line] of lines.entries()) {
159
- const clampedLine = this.clampLine(line.styledChars, this.columns);
160
- let textToWrite = clampedLine.text;
161
- if (this.debugRainbowColor) {
162
- textToWrite = colorize(textToWrite, this.debugRainbowColor, 'background');
163
- }
164
- this.writeHelper(textToWrite);
165
- if (i < this.rows && this.isFirstRender) {
166
- // Need to clear any text we might be rendering on top of.
167
- this.writeHelper(ansiEscapes.eraseEndLine);
168
- if (i + 1 < lines.length) {
169
- this.writeHelper('\n');
170
- }
171
- }
172
- if (i < backBufferLength) {
173
- this.backbuffer.push(clampedLine);
174
- }
175
- else {
176
- this.screen.push(clampedLine);
177
- }
178
- }
179
- if (this.isFirstRender) {
180
- /// Clean up lines at the bottom of the screen if we
181
- // rendered at less than the terminal height.
182
- for (let row = lines.length; row < this.rows; row++) {
183
- this.writeHelper('\n' + ansiEscapes.eraseEndLine);
184
- }
185
- }
186
- this.cursorX = -1;
187
- this.cursorY = -1;
188
- this.finishChunk();
189
- }
190
- moveCursor(x, y) {
191
- const diff = x - this.cursorY;
192
- if (this.cursorY < 0 ||
193
- this.cursorX < 0 ||
194
- x !== this.cursorY ||
195
- y !== this.cursorX) {
196
- this.writeHelper(ansiEscapes.cursorTo(y, x));
197
- this.cursorY = x;
198
- this.cursorX = y;
199
- return;
200
- }
201
- if (diff > 0) {
202
- this.writeHelper(moveCursorDown(diff));
203
- }
204
- else if (diff < 0) {
205
- this.writeHelper(moveCursorUp(-diff));
206
- }
207
- this.cursorY = x;
208
- if (y !== this.cursorX) {
209
- if (y === 0) {
210
- this.writeHelper(ansiEscapes.cursorLeft);
211
- }
212
- else {
213
- this.writeHelper(ansiEscapes.cursorTo(y));
214
- }
215
- this.cursorX = y;
216
- }
217
- }
218
- clampLine(line, width) {
219
- if (width <= 0) {
220
- return {
221
- styledChars: [],
222
- text: '',
223
- length: 0,
224
- tainted: false,
225
- };
226
- }
227
- let i = line.length - 1;
228
- while (i >= 0 && line[i]?.value === ' ' && line[i].styles.length === 0) {
229
- i--;
230
- }
231
- const trimmedLength = i + 1;
232
- let visualWidth = 0;
233
- for (let k = 0; k < trimmedLength; k++) {
234
- if (line[k]?.value === '') {
235
- continue;
236
- }
237
- visualWidth += line[k].fullWidth ? 2 : 1;
238
- }
239
- if (visualWidth <= width) {
240
- const styledChars = line.slice(0, trimmedLength);
241
- return {
242
- styledChars,
243
- text: styledCharsToString(styledChars),
244
- length: visualWidth,
245
- tainted: false,
246
- };
247
- }
248
- // Truncate logic
249
- const lastNonSpaceChar = line[i];
250
- const hasBoxChar = lastNonSpaceChar &&
251
- (lastNonSpaceChar.value === '╮' ||
252
- lastNonSpaceChar.value === '│' ||
253
- lastNonSpaceChar.value === '╯');
254
- let targetVisualWidth = width;
255
- if (hasBoxChar && lastNonSpaceChar) {
256
- targetVisualWidth -= lastNonSpaceChar.fullWidth ? 2 : 1;
257
- }
258
- let currentWidth = 0;
259
- let sliceIndex = 0;
260
- for (let k = 0; k < trimmedLength; k++) {
261
- const charWidth = line[k].fullWidth ? 2 : 1;
262
- if (currentWidth + charWidth > targetVisualWidth) {
263
- break;
264
- }
265
- currentWidth += charWidth;
266
- sliceIndex++;
267
- }
268
- if (hasBoxChar && lastNonSpaceChar) {
269
- const boxWidth = lastNonSpaceChar.fullWidth ? 2 : 1;
270
- const styledChars = [...line.slice(0, sliceIndex), lastNonSpaceChar];
271
- return {
272
- styledChars,
273
- text: styledCharsToString(styledChars),
274
- length: currentWidth + boxWidth,
275
- tainted: false,
276
- };
277
- }
278
- const styledChars = line.slice(0, sliceIndex);
279
- return {
280
- styledChars,
281
- text: styledCharsToString(styledChars),
282
- length: currentWidth,
283
- tainted: false,
284
- };
285
- }
286
- syncLine(line, y) {
287
- if (y < 0 || y >= this.rows) {
288
- return;
289
- }
290
- const clampedLine = this.clampLine(line.styledChars, this.columns);
291
- const currentLine = this.screen[y];
292
- if (currentLine &&
293
- currentLine.text === clampedLine.text &&
294
- !clampedLine.tainted &&
295
- !currentLine.tainted) {
296
- // Content matches, no update needed
297
- return;
298
- }
299
- this.moveCursor(y, 0);
300
- let textToWrite = clampedLine.text;
301
- if (this.debugRainbowColor) {
302
- textToWrite = colorize(textToWrite, this.debugRainbowColor, 'background');
303
- }
304
- this.writeHelper(textToWrite);
305
- if (clampedLine.length < this.columns) {
306
- this.writeHelper(ansiEscapes.eraseEndLine);
307
- }
308
- if (y !== this.rows - 1 && y != this.scrollRegionBottom - 1) {
309
- this.writeHelper('\n');
310
- this.cursorY = y + 1;
311
- this.cursorX = 0;
312
- }
313
- else {
314
- this.cursorY = y;
315
- this.cursorX = clampedLine.length;
316
- }
317
- clampedLine.tainted = false;
318
- this.screen[y] = clampedLine;
319
- this.finishChunk();
320
- }
321
- /**
322
- * Trigger a scroll up of content into the backbuffer.
323
- */
324
- applyScrollUpBackbuffer() {
325
- const top = Math.max(0, this.scrollRegionTop);
326
- const bottom = this.scrollRegionBottom >= 0 ? this.scrollRegionBottom : this.rows;
327
- // Simulate the effect of adding a linebreak at the bottom of the scroll region.
328
- this.moveCursor(bottom - 1, this.cursorX == -1 ? 0 : this.cursorX);
329
- this.writeHelper('\n');
330
- this.backbuffer.push(this.screen[0]);
331
- for (let i = top; i < bottom - 1; i++) {
332
- this.screen[i] = this.screen[i + 1];
333
- }
334
- this.screen[bottom - 1] = {
335
- styledChars: [],
336
- text: '',
337
- length: 0,
338
- tainted: false,
339
- };
340
- }
341
- applyScrollUp() {
342
- const top = Math.max(0, this.scrollRegionTop);
343
- const bottom = this.scrollRegionBottom >= 0 ? this.scrollRegionBottom : this.rows;
344
- this.writeHelper(ansiEscapes.scrollUp);
345
- // Simulate the effect of the ansi escape for scroll up
346
- for (let i = top; i < bottom - 1; i++) {
347
- this.screen[i] = this.screen[i + 1];
348
- }
349
- this.screen[bottom - 1] = {
350
- styledChars: [],
351
- text: '',
352
- length: 0,
353
- tainted: false,
354
- };
355
- }
356
- applyScrollDown() {
357
- const top = Math.max(0, this.scrollRegionTop);
358
- const bottom = this.scrollRegionBottom >= 0 ? this.scrollRegionBottom : this.rows;
359
- this.writeHelper(ansiEscapes.scrollDown);
360
- // Simulate the effect of the ansi escape for scroll up
361
- for (let i = bottom - 1; i > top; i--) {
362
- this.screen[i] = this.screen[i - 1];
363
- }
364
- this.screen[top] = { styledChars: [], text: '', length: 0, tainted: false };
365
- }
366
- performScroll(options) {
367
- const { start, end, linesToScroll, lines, direction, scrollToBackbuffer } = options;
368
- debugLog(`[terminal-writer] SCROLLING LINES ${start}-${end} by ${linesToScroll} ${direction}`);
369
- this.setScrollRegion(start, end);
370
- const scrollAreaHeight = end - start;
371
- if (lines.length !== end - start + linesToScroll) {
372
- throw new Error(`Mismatch in scrollLines: expected ${end - start + linesToScroll} lines, got ${lines.length}`);
373
- }
374
- if (scrollToBackbuffer && direction !== 'up') {
375
- throw new Error(`scrollToBackbuffer is only supported for direction "up"`);
376
- }
377
- if (scrollToBackbuffer && start > 0) {
378
- throw new Error(`scrollToBackbuffer is only supported for start=0, got ${start}`);
379
- }
380
- // Make sure the content on screen before scrolling really matches what is in lines.
381
- for (let i = start; i < end; i++) {
382
- this.syncLine(lines[i - start], i);
383
- }
384
- if (direction === 'up') {
385
- for (let i = 0; i < linesToScroll; i++) {
386
- if (scrollToBackbuffer) {
387
- this.applyScrollUpBackbuffer();
388
- }
389
- else {
390
- this.applyScrollUp();
391
- }
392
- // Add the new line at the end after scrolling up the other lines
393
- this.unkownCursorLocation();
394
- this.syncLine(lines[i + scrollAreaHeight], end - 1);
395
- }
396
- this.finishChunk();
397
- }
398
- else if (direction === 'down') {
399
- for (let i = 0; i < linesToScroll; i++) {
400
- const line = lines[linesToScroll - i];
401
- this.applyScrollDown();
402
- // Add the new line at the end after scrolling up the other lines
403
- this.unkownCursorLocation();
404
- this.syncLine(line, start);
405
- }
406
- this.finishChunk();
407
- }
408
- }
409
- scrollLines(options) {
410
- try {
411
- this.performScroll(options);
412
- }
413
- finally {
414
- this.resetScrollRegion();
415
- }
416
- }
417
- resize(columns, rows) {
418
- if (this.columns === columns && this.rows === rows) {
419
- return;
420
- }
421
- this.columns = columns;
422
- this.rows = rows;
423
- const startIndex = Math.max(0, this.backbuffer.length - this.rows);
424
- for (let i = startIndex; i < this.backbuffer.length; i++) {
425
- const line = this.backbuffer[i];
426
- if (line && line.length >= this.columns) {
427
- line.tainted = true;
428
- }
429
- }
430
- }
431
- clear() {
432
- this.writeHelper(ansiEscapes.clearTerminal);
433
- this.screen = [];
434
- this.backbuffer = [];
435
- this.cursorX = 0;
436
- this.cursorY = 0;
437
- this.finishChunk();
438
- }
439
- startSynchronizedOutput() {
440
- this.writeHelper(enterSynchronizedOutput);
441
- this.finishChunk();
442
- }
443
- endSynchronizedOutput() {
444
- this.writeHelper(exitSynchronizedOutput);
445
- this.finishChunk();
446
- }
447
- flush() {
448
- if (this.cancelSlowFlush) {
449
- this.cancelSlowFlush();
450
- }
451
- if (this.outputBuffer.length > 0) {
452
- this.synchronizedWrite(this.outputBuffer.join(''));
453
- }
454
- this.firstRender = false;
455
- this.outputBuffer = [];
456
- }
457
- async slowFlush() {
458
- if (this.cancelSlowFlush) {
459
- this.cancelSlowFlush();
460
- }
461
- if (this.outputBuffer.length === 0) {
462
- return;
463
- }
464
- this.firstRender = false;
465
- while (this.outputBuffer.length > 0) {
466
- const chunk = this.outputBuffer.shift();
467
- if (chunk) {
468
- this.synchronizedWrite(chunk);
469
- }
470
- // eslint-disable-next-line no-await-in-loop
471
- await new Promise(resolve => {
472
- let finished = false;
473
- const timer = setTimeout(() => {
474
- finished = true;
475
- this.cancelSlowFlush = undefined;
476
- resolve();
477
- }, 200);
478
- this.cancelSlowFlush = () => {
479
- if (!finished) {
480
- clearTimeout(timer);
481
- finished = true;
482
- if (this.outputBuffer.length > 0) {
483
- this.synchronizedWrite(this.outputBuffer.join(''));
484
- this.outputBuffer = [];
485
- }
486
- this.cancelSlowFlush = undefined;
487
- resolve();
488
- }
489
- };
490
- });
491
- }
492
- }
493
- validateLinesConsistent(lines) {
494
- if (this.isTainted) {
495
- return;
496
- }
497
- for (let r = 0; r < this.rows; r++) {
498
- const index = lines.length + r - this.rows;
499
- if (index < 0) {
500
- continue;
501
- }
502
- if (!linesEqual(this.screen[r]?.styledChars, lines[index]?.styledChars)) {
503
- debugLog(`Line ${r} on screen inconsistent between terminalWriter and ground truth. Expected "${styledCharsToString(lines[index]?.styledChars ?? [])}", got "${styledCharsToString(this.screen[r]?.styledChars ?? [])}"`);
504
- }
505
- }
506
- // Validated the backbuffer matches for lines 0 -> this.lines.length - this.rows
507
- const backbufferLimit = lines.length - this.rows;
508
- for (let i = 0; i < backbufferLimit; i++) {
509
- if (!linesEqual(this.backbuffer[i]?.styledChars, lines[i]?.styledChars)) {
510
- debugLog(`Line ${i} in backbuffer inconsistent. Expected "${styledCharsToString(lines[i]?.styledChars ?? [])}", got "${styledCharsToString(this.backbuffer[i]?.styledChars ?? [])}"`);
511
- }
512
- }
513
- }
514
- synchronizedWrite(text) {
515
- if (this.enableSynchronizedOutput) {
516
- this.stdout.write(enterSynchronizedOutput + text + exitSynchronizedOutput);
517
- }
518
- else {
519
- this.stdout.write(text);
520
- }
521
- }
522
- resetScrollRegion() {
523
- if (this.scrollRegionTop !== -1 || this.scrollRegionBottom !== -1) {
524
- this.writeHelper(resetScrollRegion);
525
- this.scrollRegionTop = -1;
526
- this.scrollRegionBottom = -1;
527
- }
528
- }
529
- setScrollRegion(top, bottom) {
530
- if (this.scrollRegionTop !== top || this.scrollRegionBottom !== bottom) {
531
- this.writeHelper(setScrollRegionCode(top + 1, bottom));
532
- this.scrollRegionTop = top;
533
- this.scrollRegionBottom = bottom;
534
- }
535
- }
536
- writeHelper(text) {
537
- this.currentChunkBuffer.push(text);
538
- }
539
- finishChunk() {
540
- if (this.currentChunkBuffer.length > 0) {
541
- this.outputBuffer.push(this.currentChunkBuffer.join(''));
542
- this.currentChunkBuffer = [];
543
- }
544
- }
545
- }
546
- //# sourceMappingURL=terminal-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal-writer.js","sourceRoot":"","sources":["../src/terminal-writer.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- export type AnsiCode = {
2
- type: 'ansi';
3
- code: string;
4
- endCode: string;
5
- };
6
- export type CssStyles = {
7
- color?: string;
8
- backgroundColor?: string;
9
- fontWeight?: string;
10
- fontStyle?: string;
11
- textDecoration?: string;
12
- opacity?: string;
13
- inverse?: boolean;
14
- };
15
- export declare function ansiToCss(ansiCodes: AnsiCode[]): CssStyles;
16
- export declare function cssObjToString(css: CssStyles): string;