@jrichman/ink 6.5.0 → 6.5.1-beta.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/build/components/App.js +0 -3
- package/build/components/App.js.map +1 -1
- package/build/components/AppContext.js +0 -1
- package/build/components/AppContext.js.map +1 -1
- package/build/components/FocusContext.js +0 -1
- package/build/components/FocusContext.js.map +1 -1
- package/build/components/Static.js +2 -2
- package/build/components/Static.js.map +1 -1
- package/build/components/StaticRender.js +16 -1
- package/build/components/StaticRender.js.map +1 -1
- package/build/components/StderrContext.js +0 -1
- package/build/components/StderrContext.js.map +1 -1
- package/build/components/StdinContext.js +0 -3
- package/build/components/StdinContext.js.map +1 -1
- package/build/components/StdoutContext.js +0 -1
- package/build/components/StdoutContext.js.map +1 -1
- package/build/data-limited-lru-map.d.ts +1 -0
- package/build/data-limited-lru-map.js +4 -0
- package/build/data-limited-lru-map.js.map +1 -1
- package/build/devtools.js +0 -1
- package/build/devtools.js.map +1 -1
- package/build/dom.d.ts +7 -5
- package/build/dom.js +6 -2
- package/build/dom.js.map +1 -1
- package/build/hooks/use-input.js +0 -1
- package/build/hooks/use-input.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/ink.d.ts +3 -1
- package/build/ink.js +12 -0
- package/build/ink.js.map +1 -1
- package/build/log-update.d.ts +1 -1
- package/build/log-update.js +3 -2
- package/build/log-update.js.map +1 -1
- package/build/measure-element.js +5 -5
- package/build/measure-element.js.map +1 -1
- package/build/measure-text.d.ts +3 -1
- package/build/measure-text.js +39 -25
- package/build/measure-text.js.map +1 -1
- package/build/output.d.ts +13 -6
- package/build/output.js +46 -54
- package/build/output.js.map +1 -1
- package/build/reconciler.js +23 -7
- package/build/reconciler.js.map +1 -1
- package/build/render-cached.d.ts +2 -1
- package/build/render-cached.js +3 -3
- package/build/render-cached.js.map +1 -1
- package/build/render-container.d.ts +2 -1
- package/build/render-container.js +4 -1
- package/build/render-container.js.map +1 -1
- package/build/render-node-to-output.d.ts +3 -1
- package/build/render-node-to-output.js +10 -2
- package/build/render-node-to-output.js.map +1 -1
- package/build/render-scrollbar.d.ts +1 -1
- package/build/render-scrollbar.js +4 -6
- package/build/render-scrollbar.js.map +1 -1
- package/build/render-sticky.d.ts +5 -3
- package/build/render-sticky.js +4 -1
- package/build/render-sticky.js.map +1 -1
- package/build/render-text-node.d.ts +2 -1
- package/build/render-text-node.js +4 -8
- package/build/render-text-node.js.map +1 -1
- package/build/render-worker.d.ts +25 -0
- package/build/render-worker.js +370 -0
- package/build/render-worker.js.map +1 -0
- package/build/render.d.ts +3 -1
- package/build/render.js.map +1 -1
- package/build/renderer.d.ts +2 -1
- package/build/renderer.js +7 -3
- package/build/renderer.js.map +1 -1
- package/build/replay.d.ts +1 -2
- package/build/replay.js +29 -27
- package/build/replay.js.map +1 -1
- package/build/selection.d.ts +1 -1
- package/build/selection.js +7 -23
- package/build/selection.js.map +1 -1
- package/build/serialization.d.ts +5 -5
- package/build/serialization.js +59 -73
- package/build/serialization.js.map +1 -1
- package/build/styled-lines.d.ts +29 -0
- package/build/styled-lines.js +110 -0
- package/build/styled-lines.js.map +1 -0
- package/build/styles.js.map +1 -1
- package/build/terminal-buffer.d.ts +6 -2
- package/build/terminal-buffer.js +47 -10
- package/build/terminal-buffer.js.map +1 -1
- package/build/terminal-writer.d.ts +69 -0
- package/build/terminal-writer.js +546 -0
- package/build/terminal-writer.js.map +1 -0
- package/build/text-wrap.d.ts +1 -1
- package/build/text-wrap.js +10 -13
- package/build/text-wrap.js.map +1 -1
- package/build/tokenize.d.ts +77 -0
- package/build/tokenize.js +520 -0
- package/build/tokenize.js.map +1 -0
- package/build/web/ansi-to-css.d.ts +16 -0
- package/build/web/ansi-to-css.js +147 -0
- package/build/web/ansi-to-css.js.map +1 -0
- package/build/web/client.d.ts +51 -0
- package/build/web/client.js +315 -0
- package/build/web/client.js.map +1 -0
- package/build/web/server.d.ts +1 -0
- package/build/web/server.js +179 -0
- package/build/web/server.js.map +1 -0
- package/build/worker/canvas.d.ts +1 -1
- package/build/worker/canvas.js +2 -6
- package/build/worker/canvas.js.map +1 -1
- package/build/worker/compositor.js +15 -13
- package/build/worker/compositor.js.map +1 -1
- package/build/worker/dump-replay.d.ts +1 -0
- package/build/worker/dump-replay.js +15 -0
- package/build/worker/dump-replay.js.map +1 -0
- package/build/worker/render-worker.js +27 -13
- package/build/worker/render-worker.js.map +1 -1
- package/build/worker/replay.d.ts +55 -0
- package/build/worker/replay.js +133 -0
- package/build/worker/replay.js.map +1 -0
- package/build/worker/scene-manager.js +16 -7
- package/build/worker/scene-manager.js.map +1 -1
- package/build/worker/terminal-writer.d.ts +3 -3
- package/build/worker/terminal-writer.js +36 -20
- package/build/worker/terminal-writer.js.map +1 -1
- package/build/wrap-text.d.ts +6 -0
- package/build/wrap-text.js +120 -0
- package/build/wrap-text.js.map +1 -0
- package/package.json +16 -5
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import http from 'node:http';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import process from 'node:process';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { WebSocketServer } from 'ws';
|
|
7
|
+
import ts from 'typescript';
|
|
8
|
+
import { Deserializer } from '../serialization.js';
|
|
9
|
+
import { deserializeReplayUpdate, } from '../replay.js';
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const __dirname = path.dirname(__filename);
|
|
12
|
+
// Cache latest state to send to new clients
|
|
13
|
+
let lastTree = null;
|
|
14
|
+
const regionStates = new Map();
|
|
15
|
+
const server = http.createServer(async (req, res) => {
|
|
16
|
+
console.log('SERVER REQ:', req.method, req.url);
|
|
17
|
+
if (req.method === 'POST' && req.url === '/update') {
|
|
18
|
+
let body = '';
|
|
19
|
+
req.on('data', (chunk) => {
|
|
20
|
+
body += chunk;
|
|
21
|
+
});
|
|
22
|
+
req.on('end', () => {
|
|
23
|
+
try {
|
|
24
|
+
const data = JSON.parse(body);
|
|
25
|
+
lastTree = data.tree;
|
|
26
|
+
// Deserialize updates
|
|
27
|
+
const parsedUpdates = data.updates.map(u => {
|
|
28
|
+
const update = deserializeReplayUpdate(u);
|
|
29
|
+
const dumpUpdate = { ...update };
|
|
30
|
+
// Sync with region state cache
|
|
31
|
+
const cached = regionStates.get(update.id) ?? { id: update.id };
|
|
32
|
+
const updateEntries = Object.entries(update);
|
|
33
|
+
for (const [key, value] of updateEntries) {
|
|
34
|
+
if (key !== 'lines' && key !== 'id' && key !== 'stickyHeaders') {
|
|
35
|
+
cached[key] = value;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (update.lines) {
|
|
39
|
+
const { totalLength } = update.lines;
|
|
40
|
+
const lines = cached['fullLines'] ?? [];
|
|
41
|
+
if (lines.length !== totalLength) {
|
|
42
|
+
lines.length = totalLength;
|
|
43
|
+
}
|
|
44
|
+
dumpUpdate['lines'] = {
|
|
45
|
+
totalLength,
|
|
46
|
+
updates: update.lines.updates.map((chunk) => {
|
|
47
|
+
const deserializer = new Deserializer(chunk.data);
|
|
48
|
+
const chunkLines = deserializer.deserialize();
|
|
49
|
+
for (const [i, chunkLine] of chunkLines.entries()) {
|
|
50
|
+
lines[chunk.start + i] = chunkLine;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
start: chunk.start,
|
|
54
|
+
end: chunk.end,
|
|
55
|
+
lines: chunkLines,
|
|
56
|
+
};
|
|
57
|
+
}),
|
|
58
|
+
};
|
|
59
|
+
cached['fullLines'] = lines;
|
|
60
|
+
cached['lines'] = {
|
|
61
|
+
totalLength,
|
|
62
|
+
updates: [{ start: 0, end: totalLength, lines }],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (update.stickyHeaders) {
|
|
66
|
+
const headers = update.stickyHeaders.map((h) => ({
|
|
67
|
+
...h,
|
|
68
|
+
node: undefined,
|
|
69
|
+
anchor: undefined,
|
|
70
|
+
}));
|
|
71
|
+
dumpUpdate['stickyHeaders'] = headers;
|
|
72
|
+
cached['stickyHeaders'] = headers;
|
|
73
|
+
}
|
|
74
|
+
regionStates.set(update.id, cached);
|
|
75
|
+
return dumpUpdate;
|
|
76
|
+
});
|
|
77
|
+
const broadcastData = JSON.stringify({
|
|
78
|
+
tree: data.tree,
|
|
79
|
+
updates: parsedUpdates,
|
|
80
|
+
});
|
|
81
|
+
for (const client of wss.clients) {
|
|
82
|
+
if (client.readyState === 1 /* OPEN */) {
|
|
83
|
+
client.send(broadcastData);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
res.writeHead(200);
|
|
87
|
+
res.end('OK');
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error('Error processing update:', error);
|
|
91
|
+
res.writeHead(400);
|
|
92
|
+
res.end('Bad Request');
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (req.method === 'GET' && req.url === '/dump') {
|
|
98
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
99
|
+
res.end(JSON.stringify({ tree: lastTree, updates: [...regionStates.values()] }));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Serve static files
|
|
103
|
+
const filePath = req.url === '/' ? '/index.html' : req.url;
|
|
104
|
+
try {
|
|
105
|
+
let fullPath = path.join(__dirname, filePath);
|
|
106
|
+
if (fullPath.endsWith('.js')) {
|
|
107
|
+
const tsPath = fullPath.replace(/\.js$/, '.ts');
|
|
108
|
+
try {
|
|
109
|
+
await fs.access(tsPath);
|
|
110
|
+
const tsSource = await fs.readFile(tsPath, 'utf8');
|
|
111
|
+
const result = ts.transpileModule(tsSource, {
|
|
112
|
+
compilerOptions: {
|
|
113
|
+
module: ts.ModuleKind.ESNext,
|
|
114
|
+
target: ts.ScriptTarget.ESNext,
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
res.writeHead(200, { 'Content-Type': 'application/javascript' });
|
|
118
|
+
res.end(result.outputText);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
catch { }
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
await fs.access(fullPath);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
if (fullPath.includes('/src/web/')) {
|
|
128
|
+
const buildPath = fullPath.replace('/src/web/', '/build/web/');
|
|
129
|
+
try {
|
|
130
|
+
await fs.access(buildPath);
|
|
131
|
+
fullPath = buildPath;
|
|
132
|
+
}
|
|
133
|
+
catch { }
|
|
134
|
+
}
|
|
135
|
+
else if (fullPath.includes('/build/web/')) {
|
|
136
|
+
const srcPath = fullPath.replace('/build/web/', '/src/web/');
|
|
137
|
+
try {
|
|
138
|
+
await fs.access(srcPath);
|
|
139
|
+
fullPath = srcPath;
|
|
140
|
+
}
|
|
141
|
+
catch { }
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const ext = path.extname(fullPath);
|
|
145
|
+
const content = await fs.readFile(fullPath);
|
|
146
|
+
const mimeTypes = {
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
148
|
+
'.html': 'text/html',
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
150
|
+
'.js': 'application/javascript',
|
|
151
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
152
|
+
'.css': 'text/css',
|
|
153
|
+
};
|
|
154
|
+
res.writeHead(200, { 'Content-Type': mimeTypes[ext] ?? 'text/plain' });
|
|
155
|
+
res.end(content);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
console.error('File not found:', filePath);
|
|
159
|
+
res.writeHead(404);
|
|
160
|
+
res.end('Not Found');
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
const wss = new WebSocketServer({ server });
|
|
164
|
+
wss.on('connection', ws => {
|
|
165
|
+
console.log('Client connected to Web Renderer');
|
|
166
|
+
if (lastTree) {
|
|
167
|
+
ws.send(JSON.stringify({
|
|
168
|
+
tree: lastTree,
|
|
169
|
+
updates: [...regionStates.values()],
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
const port = process.env['PORT'] ?? 3000;
|
|
174
|
+
server.listen(port, () => {
|
|
175
|
+
const address = server.address();
|
|
176
|
+
const actualPort = typeof address === 'string' ? port : address?.port ?? port;
|
|
177
|
+
console.log(`Ink Web Renderer server listening on http://localhost:${actualPort}`);
|
|
178
|
+
});
|
|
179
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
|
package/build/worker/canvas.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { StyledChar } from '../tokenize.js';
|
|
7
7
|
import { type RenderLine } from './terminal-writer.js';
|
|
8
8
|
export type Rect = {
|
|
9
9
|
x: number;
|
package/build/worker/canvas.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { StyledChar } from '../tokenize.js';
|
|
6
7
|
/**
|
|
7
8
|
* A 2D drawing surface for terminal characters.
|
|
8
9
|
* Handles clipping and bounds checking.
|
|
@@ -67,12 +68,7 @@ export class Canvas {
|
|
|
67
68
|
}
|
|
68
69
|
// Ensure the line is long enough
|
|
69
70
|
while (line.styledChars.length <= x) {
|
|
70
|
-
line.styledChars.push(
|
|
71
|
-
type: 'char',
|
|
72
|
-
value: ' ',
|
|
73
|
-
fullWidth: false,
|
|
74
|
-
styles: [],
|
|
75
|
-
});
|
|
71
|
+
line.styledChars.push(new StyledChar(' ', 0));
|
|
76
72
|
}
|
|
77
73
|
line.styledChars[x] = char;
|
|
78
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/worker/canvas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/worker/canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { calculateScrollbarThumb } from '../measure-element.js';
|
|
7
7
|
import { renderScrollbar } from '../render-scrollbar.js';
|
|
8
|
-
import { toStyledCharacters } from '../measure-text.js';
|
|
9
8
|
import colorize from '../colorize.js';
|
|
10
9
|
/**
|
|
11
10
|
* Handles rendering of various UI elements onto a Canvas.
|
|
@@ -13,7 +12,7 @@ import colorize from '../colorize.js';
|
|
|
13
12
|
export class Compositor {
|
|
14
13
|
options;
|
|
15
14
|
static lastBackgroundColor;
|
|
16
|
-
static lastBackgroundStyles
|
|
15
|
+
static lastBackgroundStyles;
|
|
17
16
|
constructor(options) {
|
|
18
17
|
this.options = options;
|
|
19
18
|
}
|
|
@@ -41,20 +40,17 @@ export class Compositor {
|
|
|
41
40
|
const contentX = scrollLeft + dx;
|
|
42
41
|
let char = line[contentX];
|
|
43
42
|
if (char) {
|
|
44
|
-
const isEmpty = char.
|
|
43
|
+
const isEmpty = char.getValue() === ' ' && !char.hasStyles();
|
|
45
44
|
if (isEmpty) {
|
|
46
45
|
if (!isOpaque) {
|
|
47
46
|
continue;
|
|
48
47
|
}
|
|
49
48
|
if (region.backgroundColor) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
...this.getBackgroundStyles(region.backgroundColor),
|
|
56
|
-
],
|
|
57
|
-
};
|
|
49
|
+
const bgColor = this.getBackgroundStyles(region.backgroundColor);
|
|
50
|
+
if (bgColor) {
|
|
51
|
+
char = char.copyWith({});
|
|
52
|
+
char.setBackgroundColor(bgColor);
|
|
53
|
+
}
|
|
58
54
|
}
|
|
59
55
|
}
|
|
60
56
|
canvas.setChar(sx, sy, char);
|
|
@@ -304,8 +300,14 @@ export class Compositor {
|
|
|
304
300
|
if (color === Compositor.lastBackgroundColor) {
|
|
305
301
|
return Compositor.lastBackgroundStyles;
|
|
306
302
|
}
|
|
307
|
-
|
|
308
|
-
const
|
|
303
|
+
let styles;
|
|
304
|
+
const colorized = colorize('x', color, 'background');
|
|
305
|
+
if (colorized !== 'x') {
|
|
306
|
+
const parts = colorized.split('x');
|
|
307
|
+
if (parts.length === 2 && parts[0] && parts[1]) {
|
|
308
|
+
styles = parts[0];
|
|
309
|
+
}
|
|
310
|
+
}
|
|
309
311
|
Compositor.lastBackgroundColor = color;
|
|
310
312
|
Compositor.lastBackgroundStyles = styles;
|
|
311
313
|
return styles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compositor.js","sourceRoot":"","sources":["../../src/worker/compositor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compositor.js","sourceRoot":"","sources":["../../src/worker/compositor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { loadReplay, createHumanReadableDump } from './replay.js';
|
|
4
|
+
const filename = process.argv[2];
|
|
5
|
+
if (!filename) {
|
|
6
|
+
console.error('Usage: npx tsx dump-replay.ts <replay.json>');
|
|
7
|
+
// eslint-disable-next-line unicorn/no-process-exit
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
const replayData = loadReplay(fs.readFileSync(filename, 'utf8'));
|
|
11
|
+
const output = createHumanReadableDump(replayData);
|
|
12
|
+
const outFilename = filename + '.dump.txt';
|
|
13
|
+
fs.writeFileSync(outFilename, output);
|
|
14
|
+
console.log(`Successfully dumped replay to ${outFilename}`);
|
|
15
|
+
//# sourceMappingURL=dump-replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dump-replay.js","sourceRoot":"","sources":["../../src/worker/dump-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAC,UAAU,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEhE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7D,mDAAmD;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAEnD,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC3C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAC"}
|
|
@@ -7,7 +7,7 @@ import fs from 'node:fs';
|
|
|
7
7
|
import process from 'node:process';
|
|
8
8
|
import ansiEscapes from 'ansi-escapes';
|
|
9
9
|
import { debugLog, clearDebugLog } from '../debug-log.js';
|
|
10
|
-
import { regionLayoutProperties, copyRegionProperty, } from '../output.js';
|
|
10
|
+
import { regionLayoutProperties, copyRegionProperty, treesEqual, } from '../output.js';
|
|
11
11
|
import { Serializer } from '../serialization.js';
|
|
12
12
|
import { saveReplay, createHumanReadableDump, serializeReplayUpdate, } from '../replay.js';
|
|
13
13
|
import { TerminalWriter, rainbowColors, } from './terminal-writer.js';
|
|
@@ -134,7 +134,7 @@ export class TerminalBufferWorker {
|
|
|
134
134
|
const updates = this.serializeCurrentRegions(serializer);
|
|
135
135
|
this.recordedFrames.push({
|
|
136
136
|
tree: structuredClone(root),
|
|
137
|
-
updates: updates.map(u => serializeReplayUpdate(u
|
|
137
|
+
updates: updates.map(u => serializeReplayUpdate(u)),
|
|
138
138
|
cursorPosition: this.cursorPosition,
|
|
139
139
|
timestamp: 0,
|
|
140
140
|
});
|
|
@@ -166,7 +166,7 @@ export class TerminalBufferWorker {
|
|
|
166
166
|
frames: [
|
|
167
167
|
{
|
|
168
168
|
tree: root,
|
|
169
|
-
updates: updates.map(u => serializeReplayUpdate(u
|
|
169
|
+
updates: updates.map(u => serializeReplayUpdate(u)),
|
|
170
170
|
cursorPosition: this.cursorPosition,
|
|
171
171
|
timestamp: 0,
|
|
172
172
|
},
|
|
@@ -262,11 +262,11 @@ export class TerminalBufferWorker {
|
|
|
262
262
|
update(tree, updates, cursorPosition) {
|
|
263
263
|
const previousCursorPosition = this.cursorPosition;
|
|
264
264
|
this.cursorPosition = cursorPosition;
|
|
265
|
+
const treeChanged = !this.sceneManager.root || !treesEqual(this.sceneManager.root, tree);
|
|
265
266
|
if (this.isRecording) {
|
|
266
|
-
const serializer = new Serializer();
|
|
267
267
|
this.recordedFrames.push({
|
|
268
268
|
tree,
|
|
269
|
-
updates: updates.map(u => serializeReplayUpdate(u
|
|
269
|
+
updates: updates.map(u => serializeReplayUpdate(u)),
|
|
270
270
|
cursorPosition,
|
|
271
271
|
timestamp: Date.now() - this.recordingStartTime,
|
|
272
272
|
});
|
|
@@ -359,6 +359,7 @@ export class TerminalBufferWorker {
|
|
|
359
359
|
cursorPosition.col !== previousCursorPosition.col);
|
|
360
360
|
const shouldRender = updates.length > 0 ||
|
|
361
361
|
cursorChanged ||
|
|
362
|
+
treeChanged ||
|
|
362
363
|
this.terminalWriter.backbufferDirty ||
|
|
363
364
|
this.forceNextRender;
|
|
364
365
|
return shouldRender;
|
|
@@ -396,7 +397,7 @@ export class TerminalBufferWorker {
|
|
|
396
397
|
this.terminalWriter.backbufferDirty = false;
|
|
397
398
|
this.terminalWriter.backbufferScrolledIncorrectly = false;
|
|
398
399
|
this.terminalWriter.backbufferDirtyCurrentFrame = false;
|
|
399
|
-
this.composeScene();
|
|
400
|
+
this.composeScene(true);
|
|
400
401
|
const rootRegion = this.sceneManager.getRootRegion();
|
|
401
402
|
const cameraY = rootRegion ? this.getCameraY(rootRegion) : 0;
|
|
402
403
|
this.syncCursor(cameraY);
|
|
@@ -464,7 +465,17 @@ export class TerminalBufferWorker {
|
|
|
464
465
|
for (const region of this.sceneManager.regions.values()) {
|
|
465
466
|
const update = {
|
|
466
467
|
id: region.id,
|
|
467
|
-
stickyHeaders: region.stickyHeaders
|
|
468
|
+
stickyHeaders: region.stickyHeaders.map(h => {
|
|
469
|
+
const { node: _node, ...rest } = h;
|
|
470
|
+
return {
|
|
471
|
+
...rest,
|
|
472
|
+
lines: serializer.serialize(h.lines),
|
|
473
|
+
stuckLines: h.stuckLines
|
|
474
|
+
? serializer.serialize(h.stuckLines)
|
|
475
|
+
: undefined,
|
|
476
|
+
styledOutput: serializer.serialize(h.styledOutput),
|
|
477
|
+
};
|
|
478
|
+
}),
|
|
468
479
|
};
|
|
469
480
|
for (const key of regionLayoutProperties) {
|
|
470
481
|
copyRegionProperty(update, region, key);
|
|
@@ -536,7 +547,10 @@ export class TerminalBufferWorker {
|
|
|
536
547
|
clip: undefined,
|
|
537
548
|
offsetY: -cameraY,
|
|
538
549
|
}, { skipStickyHeaders: true, skipScrollbars });
|
|
539
|
-
|
|
550
|
+
const lines = canvas.getLines();
|
|
551
|
+
return start === 0 && end + count === lines.length
|
|
552
|
+
? lines
|
|
553
|
+
: lines.slice(start, end + count);
|
|
540
554
|
};
|
|
541
555
|
const cleanLines = getLines(true);
|
|
542
556
|
if (count > 0 && start === 0) {
|
|
@@ -578,7 +592,7 @@ export class TerminalBufferWorker {
|
|
|
578
592
|
this.scrollOptimizer.updateMaxPushed(rootRegion.id, cameraY);
|
|
579
593
|
}
|
|
580
594
|
}
|
|
581
|
-
this.composeScene();
|
|
595
|
+
this.composeScene(this.terminalWriter.isFirstRender);
|
|
582
596
|
if (this.terminalWriter.isFirstRender) {
|
|
583
597
|
this.terminalWriter.writeLines([...this.backbuffer, ...this.screen]);
|
|
584
598
|
}
|
|
@@ -615,14 +629,14 @@ export class TerminalBufferWorker {
|
|
|
615
629
|
this.animationController.stop();
|
|
616
630
|
}
|
|
617
631
|
}
|
|
618
|
-
composeScene() {
|
|
632
|
+
composeScene(computeBackbuffer) {
|
|
619
633
|
const rootRegion = this.sceneManager.getRootRegion();
|
|
620
634
|
if (!rootRegion) {
|
|
621
635
|
return;
|
|
622
636
|
}
|
|
623
637
|
const cameraY = this.getCameraY(rootRegion);
|
|
624
638
|
this.backbuffer = [];
|
|
625
|
-
if (!this.isAlternateBufferEnabled) {
|
|
639
|
+
if (!this.isAlternateBufferEnabled && computeBackbuffer) {
|
|
626
640
|
const composeToBackbuffer = (node, region, height, offset) => {
|
|
627
641
|
const canvas = Canvas.create(this.columns, height);
|
|
628
642
|
const originalScrollTop = region.scrollTop;
|
|
@@ -880,7 +894,7 @@ export class TerminalBufferWorker {
|
|
|
880
894
|
debugLog(`${indent} Content:`);
|
|
881
895
|
for (const line of region.lines) {
|
|
882
896
|
const plainText = line
|
|
883
|
-
.map(c => c.
|
|
897
|
+
.map(c => c.getValue())
|
|
884
898
|
.join('')
|
|
885
899
|
.trimEnd();
|
|
886
900
|
if (plainText) {
|
|
@@ -909,7 +923,7 @@ export class TerminalBufferWorker {
|
|
|
909
923
|
debugLog(`${indent} Header Content (${isStuck ? 'STUCK' : 'NATURAL'}):`);
|
|
910
924
|
for (const line of linesToLog) {
|
|
911
925
|
const plainText = line
|
|
912
|
-
.map(c => c.
|
|
926
|
+
.map(c => c.getValue())
|
|
913
927
|
.join('')
|
|
914
928
|
.trimEnd();
|
|
915
929
|
if (plainText) {
|