@jrichman/ink 6.5.1-beta.7 → 6.6.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.
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 +1 -3
  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,370 +0,0 @@
1
- import process from 'node:process';
2
- import { Buffer } from 'node:buffer';
3
- import ansiEscapes from 'ansi-escapes';
4
- import { Deserializer } from './serialization.js';
5
- import { debugLog } from './debug-log.js';
6
- import { TerminalWriter, rainbowColors, } from './terminal-writer.js';
7
- import { calculateScrollbarThumb } from './measure-element.js';
8
- const clearOnDirtyRender = false;
9
- export class TerminalBufferWorker {
10
- columns;
11
- rows;
12
- // Local state of regions
13
- regions = new Map();
14
- root;
15
- // Tracking for scroll optimization
16
- lastRootScrollTop = 0;
17
- backbufferDirty = false;
18
- backbufferDirtyCurrentFrame = false;
19
- fullRenderTimeout;
20
- frameIndex = 0;
21
- debugRainbowEnabled = false;
22
- // Ground truth on what lines should be rendered (composed frame)
23
- lines = [];
24
- terminalWriter;
25
- constructor(columns, rows, options) {
26
- this.columns = columns;
27
- this.rows = rows;
28
- const stdout = options?.stdout ?? process.stdout;
29
- this.terminalWriter = new TerminalWriter(columns, rows, stdout);
30
- stdout.write(ansiEscapes.cursorHide);
31
- if (options?.debugRainbowEnabled) {
32
- this.debugRainbowEnabled = true;
33
- }
34
- }
35
- update(tree, updates) {
36
- this.root = tree;
37
- for (const update of updates) {
38
- let region = this.regions.get(update.id);
39
- if (!region) {
40
- // Initialize new region
41
- region = {
42
- id: update.id,
43
- x: 0, y: 0, width: 0, height: 0,
44
- lines: [],
45
- isScrollable: false,
46
- stickyHeaders: [],
47
- children: []
48
- };
49
- this.regions.set(update.id, region);
50
- }
51
- // Apply properties
52
- if (update.x !== undefined)
53
- region.x = update.x;
54
- if (update.y !== undefined)
55
- region.y = update.y;
56
- if (update.width !== undefined)
57
- region.width = update.width;
58
- if (update.height !== undefined)
59
- region.height = update.height;
60
- if (update.scrollTop !== undefined)
61
- region.scrollTop = update.scrollTop;
62
- if (update.scrollLeft !== undefined)
63
- region.scrollLeft = update.scrollLeft;
64
- if (update.scrollHeight !== undefined)
65
- region.scrollHeight = update.scrollHeight;
66
- if (update.scrollWidth !== undefined)
67
- region.scrollWidth = update.scrollWidth;
68
- if (update.isScrollable !== undefined)
69
- region.isScrollable = update.isScrollable;
70
- if (update.stickyHeaders !== undefined)
71
- region.stickyHeaders = update.stickyHeaders;
72
- // Apply line updates
73
- if (update.lines) {
74
- while (region.lines.length < update.lines.totalLength) {
75
- region.lines.push([]);
76
- }
77
- if (region.lines.length > update.lines.totalLength) {
78
- region.lines.length = update.lines.totalLength;
79
- }
80
- for (const chunk of update.lines.updates) {
81
- const deserializer = new Deserializer(Buffer.from(chunk.data));
82
- const chunkLines = deserializer.deserialize();
83
- for (let i = 0; i < chunkLines.length; i++) {
84
- region.lines[chunk.start + i] = chunkLines[i];
85
- }
86
- }
87
- }
88
- }
89
- this.backbufferDirtyCurrentFrame = true;
90
- }
91
- resize(columns, rows) {
92
- if (this.columns === columns && this.rows === rows) {
93
- return;
94
- }
95
- this.columns = columns;
96
- this.rows = rows;
97
- debugLog(`XXXXX [RENDER-WORKER] Resize to ${columns}x${rows}\n`);
98
- this.terminalWriter.resize(columns, rows);
99
- this.backbufferDirtyCurrentFrame = true;
100
- void this.render();
101
- }
102
- fullRender() {
103
- debugLog(`XXXXX [RENDER-WORKER] Full render triggered\n`);
104
- if (this.fullRenderTimeout) {
105
- clearTimeout(this.fullRenderTimeout);
106
- }
107
- if (!this.backbufferDirty) {
108
- void this.render();
109
- return;
110
- }
111
- this.backbufferDirty = false;
112
- this.backbufferDirtyCurrentFrame = false;
113
- this.terminalWriter.clear();
114
- this.terminalWriter.writeLines(this.lines);
115
- this.terminalWriter.validateLinesConsistent(this.lines);
116
- }
117
- async render() {
118
- debugLog(`XXXXX [RENDER-WORKER] Render\n`);
119
- if (!this.backbufferDirtyCurrentFrame || !this.root) {
120
- return;
121
- }
122
- // 1. Detect Scroll (Optimization)
123
- const rootRegion = this.regions.get(this.root.id);
124
- if (rootRegion && rootRegion.isScrollable) {
125
- const scrollTop = rootRegion.scrollTop ?? 0;
126
- const diff = scrollTop - this.lastRootScrollTop;
127
- if (diff !== 0) {
128
- const linesToScroll = Math.abs(diff);
129
- const direction = diff > 0 ? 'up' : 'down';
130
- const visibleHeight = Math.min(rootRegion.height, this.rows);
131
- const linesForScroll = [];
132
- if (direction === 'up') {
133
- const startRowIndex = scrollTop + visibleHeight - linesToScroll;
134
- for (let i = 0; i < linesToScroll; i++) {
135
- const lineIdx = startRowIndex + i;
136
- const chars = rootRegion.lines[lineIdx] ?? [];
137
- linesForScroll.push(this.terminalWriter.clampLine(chars, this.columns));
138
- }
139
- this.terminalWriter.scrollLines({
140
- start: 0,
141
- end: visibleHeight,
142
- linesToScroll,
143
- lines: linesForScroll,
144
- direction,
145
- scrollToBackbuffer: true
146
- });
147
- }
148
- else {
149
- for (let i = 0; i < linesToScroll; i++) {
150
- const lineIdx = scrollTop + i;
151
- const chars = rootRegion.lines[lineIdx] ?? [];
152
- linesForScroll.push(this.terminalWriter.clampLine(chars, this.columns));
153
- }
154
- this.terminalWriter.scrollLines({
155
- start: 0,
156
- end: visibleHeight,
157
- linesToScroll,
158
- lines: linesForScroll,
159
- direction,
160
- scrollToBackbuffer: false
161
- });
162
- }
163
- this.lastRootScrollTop = scrollTop;
164
- }
165
- }
166
- else if (rootRegion) {
167
- this.lastRootScrollTop = rootRegion.scrollTop ?? 0;
168
- }
169
- // 2. Compose Frame
170
- this.lines = [];
171
- for (let i = 0; i < this.rows; i++) {
172
- this.lines.push({
173
- styledChars: [],
174
- text: '',
175
- length: 0,
176
- tainted: false
177
- });
178
- }
179
- this.composeNode(this.root, null);
180
- if (this.debugRainbowEnabled) {
181
- this.frameIndex++;
182
- }
183
- const debugRainbowColor = this.debugRainbowEnabled
184
- ? rainbowColors[this.frameIndex % rainbowColors.length]
185
- : undefined;
186
- this.terminalWriter.debugRainbowColor = debugRainbowColor;
187
- if (this.backbufferDirtyCurrentFrame && clearOnDirtyRender) {
188
- this.terminalWriter.clear();
189
- }
190
- if (this.terminalWriter.isFirstRender) {
191
- this.terminalWriter.writeLines(this.lines);
192
- this.terminalWriter.flush();
193
- this.backbufferDirtyCurrentFrame = false;
194
- return;
195
- }
196
- // 3. Sync
197
- for (let row = 0; row < this.rows; row++) {
198
- this.terminalWriter.syncLine(this.lines[row], row);
199
- }
200
- await this.terminalWriter.slowFlush();
201
- if (this.backbufferDirtyCurrentFrame) {
202
- this.backbufferDirty = true;
203
- if (this.fullRenderTimeout) {
204
- clearTimeout(this.fullRenderTimeout);
205
- }
206
- this.fullRenderTimeout = setTimeout(() => {
207
- this.fullRender();
208
- }, 1000);
209
- }
210
- this.backbufferDirtyCurrentFrame = false;
211
- }
212
- composeNode(node, clip) {
213
- const region = this.regions.get(node.id);
214
- if (!region)
215
- return;
216
- const absX = region.x;
217
- const absY = region.y;
218
- let myClip = {
219
- x: absX,
220
- y: absY,
221
- w: region.width,
222
- h: region.height
223
- };
224
- if (clip) {
225
- const x1 = Math.max(myClip.x, clip.x);
226
- const y1 = Math.max(myClip.y, clip.y);
227
- const x2 = Math.min(myClip.x + myClip.w, clip.x + clip.w);
228
- const y2 = Math.min(myClip.y + myClip.h, clip.y + clip.h);
229
- if (x2 <= x1 || y2 <= y1) {
230
- return;
231
- }
232
- myClip = { x: x1, y: y1, w: x2 - x1, h: y2 - y1 };
233
- }
234
- const scrollTop = region.scrollTop ?? 0;
235
- const scrollLeft = region.scrollLeft ?? 0;
236
- for (let sy = myClip.y; sy < myClip.y + myClip.h; sy++) {
237
- if (sy < 0 || sy >= this.rows)
238
- continue;
239
- const dy = sy - absY;
240
- const contentY = scrollTop + dy;
241
- const line = region.lines[contentY];
242
- if (!line)
243
- continue;
244
- const targetLine = this.lines[sy];
245
- if (!targetLine)
246
- continue;
247
- const startSx = myClip.x;
248
- const endSx = myClip.x + myClip.w;
249
- while (targetLine.styledChars.length < this.columns) {
250
- targetLine.styledChars.push({ type: 'char', value: ' ', fullWidth: false, styles: [] });
251
- }
252
- for (let sx = startSx; sx < endSx; sx++) {
253
- if (sx < 0 || sx >= this.columns)
254
- continue;
255
- const dx = sx - absX;
256
- const contentX = scrollLeft + dx;
257
- const char = line[contentX];
258
- if (char) {
259
- targetLine.styledChars[sx] = char;
260
- }
261
- }
262
- }
263
- for (const child of node.children) {
264
- this.composeNode(child, myClip);
265
- }
266
- for (const header of region.stickyHeaders) {
267
- const headerY = header.y;
268
- const headerH = header.lines.length;
269
- for (let i = 0; i < headerH; i++) {
270
- const sy = headerY + i;
271
- if (sy < myClip.y || sy >= myClip.y + myClip.h)
272
- continue;
273
- if (sy < 0 || sy >= this.rows)
274
- continue;
275
- const line = header.lines[i];
276
- if (!line)
277
- continue;
278
- const targetLine = this.lines[sy];
279
- if (!targetLine)
280
- continue;
281
- const headerX = header.x;
282
- const headerW = line.length;
283
- const hx1 = Math.max(headerX, myClip.x);
284
- const hx2 = Math.min(headerX + headerW, myClip.x + myClip.w);
285
- for (let sx = hx1; sx < hx2; sx++) {
286
- if (sx < 0 || sx >= this.columns)
287
- continue;
288
- const cx = sx - headerX;
289
- const char = line[cx];
290
- if (char) {
291
- targetLine.styledChars[sx] = char;
292
- }
293
- }
294
- }
295
- }
296
- if (region.isScrollable) {
297
- const scrollHeight = region.scrollHeight ?? 0;
298
- if (scrollHeight > region.height) {
299
- const { startIndex, endIndex } = calculateScrollbarThumb({
300
- scrollbarDimension: region.height,
301
- clientDimension: region.height,
302
- scrollDimension: scrollHeight,
303
- scrollPosition: scrollTop,
304
- axis: 'vertical',
305
- });
306
- const barX = absX + region.width - 1;
307
- const char = '█';
308
- for (let i = startIndex; i < endIndex; i++) {
309
- const sy = absY + i;
310
- if (sy >= myClip.y && sy < myClip.y + myClip.h && sy >= 0 && sy < this.rows && barX >= 0 && barX < this.columns) {
311
- const targetLine = this.lines[sy];
312
- if (targetLine) {
313
- while (targetLine.styledChars.length <= barX) {
314
- targetLine.styledChars.push({ type: 'char', value: ' ', fullWidth: false, styles: [] });
315
- }
316
- targetLine.styledChars[barX] = {
317
- type: 'char', value: char, fullWidth: false, styles: []
318
- };
319
- }
320
- }
321
- }
322
- }
323
- }
324
- }
325
- }
326
- let buffer;
327
- const main = () => {
328
- process.on('message', (message) => {
329
- switch (message.type) {
330
- case 'init': {
331
- const columns = (process.stdout.columns || message.columns);
332
- const rows = (process.stdout.rows || message.rows);
333
- buffer = new TerminalBufferWorker(columns, rows, {
334
- debugRainbowEnabled: message.debugRainbowEnabled,
335
- });
336
- break;
337
- }
338
- case 'edits': {
339
- if (buffer) {
340
- buffer.update(message.tree, message.updates);
341
- }
342
- break;
343
- }
344
- case 'fullRender': {
345
- if (buffer) {
346
- buffer.fullRender();
347
- }
348
- break;
349
- }
350
- case 'render': {
351
- if (buffer) {
352
- void buffer.render();
353
- }
354
- break;
355
- }
356
- default: {
357
- break;
358
- }
359
- }
360
- });
361
- process.stdout.on('resize', () => {
362
- if (buffer && process.stdout.columns && process.stdout.rows) {
363
- buffer.resize(process.stdout.columns, process.stdout.rows);
364
- }
365
- });
366
- };
367
- if (process.env['INK_WORKER'] === 'true') {
368
- main();
369
- }
370
- //# sourceMappingURL=render-worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-worker.js","sourceRoot":"","sources":["../src/render-worker.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import type { AnsiCode, StyledChar } from '@alcalzone/ansi-tokenize';
2
- /**
3
- * A highly optimized representation of styled characters for terminal rendering.
4
- * Replaces arrays of `StyledChar` objects with parallel arrays to eliminate
5
- * massive GC overhead during large layout and scroll updates.
6
- */
7
- export declare class StyledLines {
8
- values: string[];
9
- fullWidths: boolean[];
10
- styles: AnsiCode[][];
11
- get length(): number;
12
- set length(value: number);
13
- push(value: string, fullWidth: boolean, styles: AnsiCode[]): void;
14
- pushChar(char: StyledChar): void;
15
- pushLine(other: StyledLines): void;
16
- slice(start?: number, end?: number): StyledLines;
17
- splice(start: number, deleteCount: number, ...items: StyledChar[]): StyledLines;
18
- [Symbol.iterator](): Generator<{
19
- type: "char";
20
- value: string;
21
- fullWidth: boolean;
22
- styles: AnsiCode[];
23
- }, void, unknown>;
24
- entries(): IterableIterator<[number, StyledChar]>;
25
- map<U>(callbackfn: (value: StyledChar, index: number, array: StyledChar[]) => U, thisArg?: any): U[];
26
- indexOf(searchElement: StyledChar, fromIndex?: number): number;
27
- at(index: number): StyledChar | undefined;
28
- clone(): StyledLines;
29
- }
@@ -1,110 +0,0 @@
1
- /**
2
- * A highly optimized representation of styled characters for terminal rendering.
3
- * Replaces arrays of `StyledChar` objects with parallel arrays to eliminate
4
- * massive GC overhead during large layout and scroll updates.
5
- */
6
- export class StyledLines {
7
- values = [];
8
- fullWidths = [];
9
- styles = [];
10
- get length() {
11
- return this.values.length;
12
- }
13
- set length(value) {
14
- this.values.length = value;
15
- this.fullWidths.length = value;
16
- this.styles.length = value;
17
- }
18
- push(value, fullWidth, styles) {
19
- this.values.push(value);
20
- this.fullWidths.push(fullWidth);
21
- this.styles.push(styles);
22
- }
23
- pushChar(char) {
24
- this.values.push(char.value);
25
- this.fullWidths.push(char.fullWidth || false);
26
- this.styles.push(char.styles || []);
27
- }
28
- pushLine(other) {
29
- for (let i = 0; i < other.length; i++) {
30
- this.values.push(other.values[i]);
31
- this.fullWidths.push(other.fullWidths[i]);
32
- this.styles.push(other.styles[i]);
33
- }
34
- }
35
- slice(start, end) {
36
- const result = new StyledLines();
37
- result.values = this.values.slice(start, end);
38
- result.fullWidths = this.fullWidths.slice(start, end);
39
- result.styles = this.styles.slice(start, end);
40
- return result;
41
- }
42
- splice(start, deleteCount, ...items) {
43
- const result = new StyledLines();
44
- result.values = this.values.splice(start, deleteCount, ...items.map(i => i.value));
45
- result.fullWidths = this.fullWidths.splice(start, deleteCount, ...items.map(i => i.fullWidth || false));
46
- result.styles = this.styles.splice(start, deleteCount, ...items.map(i => i.styles || []));
47
- return result;
48
- }
49
- *[Symbol.iterator]() {
50
- for (let i = 0; i < this.length; i++) {
51
- yield {
52
- type: 'char',
53
- value: this.values[i],
54
- fullWidth: this.fullWidths[i],
55
- styles: this.styles[i],
56
- };
57
- }
58
- }
59
- entries() {
60
- let i = 0;
61
- return {
62
- [Symbol.iterator]() {
63
- return this;
64
- },
65
- next: () => {
66
- if (i >= this.length)
67
- return { done: true, value: undefined };
68
- const val = [i, this.at(i)];
69
- i++;
70
- return { done: false, value: val };
71
- },
72
- };
73
- }
74
- map(callbackfn, thisArg) {
75
- const result = [];
76
- for (let i = 0; i < this.length; i++) {
77
- result.push(callbackfn.call(thisArg, this.at(i), i, this));
78
- }
79
- return result;
80
- }
81
- indexOf(searchElement, fromIndex = 0) {
82
- for (let i = fromIndex; i < this.length; i++) {
83
- if (this.values[i] === searchElement.value &&
84
- this.fullWidths[i] === searchElement.fullWidth)
85
- return i;
86
- }
87
- return -1;
88
- }
89
- at(index) {
90
- if (index < 0) {
91
- index = this.length + index;
92
- }
93
- if (index < 0 || index >= this.length)
94
- return undefined;
95
- return {
96
- type: 'char',
97
- value: this.values[index],
98
- fullWidth: this.fullWidths[index],
99
- styles: this.styles[index],
100
- };
101
- }
102
- clone() {
103
- const result = new StyledLines();
104
- result.values = [...this.values];
105
- result.fullWidths = [...this.fullWidths];
106
- result.styles = [...this.styles];
107
- return result;
108
- }
109
- }
110
- //# sourceMappingURL=styled-lines.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styled-lines.js","sourceRoot":"","sources":["../src/styled-lines.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- import { type StyledChar } from '@alcalzone/ansi-tokenize';
2
- export declare const rainbowColors: string[];
3
- export type RenderLine = {
4
- styledChars: StyledChar[];
5
- text: string;
6
- length: number;
7
- tainted: boolean;
8
- };
9
- export declare function linesEqual(lineA: StyledChar[] | undefined, lineB: StyledChar[] | undefined): boolean;
10
- export declare class TerminalWriter {
11
- private columns;
12
- private rows;
13
- private readonly stdout;
14
- isTainted: boolean;
15
- debugRainbowColor?: string;
16
- private screen;
17
- private backbuffer;
18
- private cursorX;
19
- private cursorY;
20
- private scrollRegionTop;
21
- private scrollRegionBottom;
22
- private firstRender;
23
- private readonly enableSynchronizedOutput;
24
- private cancelSlowFlush;
25
- private outputBuffer;
26
- private currentChunkBuffer;
27
- constructor(columns: number, rows: number, stdout: NodeJS.WriteStream);
28
- unkownCursorLocation(): void;
29
- getBackbufferLength(): number;
30
- getBackbufferEntry(index: number): RenderLine | undefined;
31
- getScreenLine(y: number): RenderLine | undefined;
32
- get isFirstRender(): boolean;
33
- /**
34
- * Append lines to the backbuffer leaving the on screen content unchanged.
35
- */
36
- appendLinesBackbuffer(lines: RenderLine[]): void;
37
- updateBackbuffer(start: number, deleteCount: number, newLines: RenderLine[]): void;
38
- writeLines(lines: RenderLine[]): void;
39
- moveCursor(x: number, y: number): void;
40
- clampLine(line: StyledChar[], width: number): RenderLine;
41
- syncLine(line: RenderLine, y: number): void;
42
- /**
43
- * Trigger a scroll up of content into the backbuffer.
44
- */
45
- private applyScrollUpBackbuffer;
46
- private applyScrollUp;
47
- private applyScrollDown;
48
- private performScroll;
49
- scrollLines(options: {
50
- start: number;
51
- end: number;
52
- linesToScroll: number;
53
- lines: RenderLine[];
54
- direction: 'up' | 'down';
55
- scrollToBackbuffer: boolean;
56
- }): void;
57
- resize(columns: number, rows: number): void;
58
- clear(): void;
59
- startSynchronizedOutput(): void;
60
- endSynchronizedOutput(): void;
61
- flush(): void;
62
- slowFlush(): Promise<void>;
63
- validateLinesConsistent(lines: RenderLine[]): void;
64
- private synchronizedWrite;
65
- private resetScrollRegion;
66
- private setScrollRegion;
67
- private writeHelper;
68
- private finishChunk;
69
- }