@jrichman/ink 6.4.13 → 6.5.1-beta.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 (45) hide show
  1. package/build/dom.d.ts +3 -3
  2. package/build/output.d.ts +3 -3
  3. package/build/output.js +5 -2
  4. package/build/output.js.map +1 -1
  5. package/build/render-cached.js +1 -1
  6. package/build/render-cached.js.map +1 -1
  7. package/build/render-container.d.ts +2 -0
  8. package/build/render-container.js +13 -16
  9. package/build/render-container.js.map +1 -1
  10. package/build/render-node-to-output.js +2 -0
  11. package/build/render-node-to-output.js.map +1 -1
  12. package/build/render-sticky.d.ts +2 -2
  13. package/build/render-sticky.js.map +1 -1
  14. package/build/render-worker.d.ts +25 -0
  15. package/build/render-worker.js +370 -0
  16. package/build/render-worker.js.map +1 -0
  17. package/build/serialization.d.ts +1 -1
  18. package/build/serialization.js.map +1 -1
  19. package/build/terminal-buffer.d.ts +3 -1
  20. package/build/terminal-buffer.js +17 -5
  21. package/build/terminal-buffer.js.map +1 -1
  22. package/build/terminal-writer.d.ts +69 -0
  23. package/build/terminal-writer.js +546 -0
  24. package/build/terminal-writer.js.map +1 -0
  25. package/build/web/ansi-to-css.d.ts +16 -0
  26. package/build/web/ansi-to-css.js +147 -0
  27. package/build/web/ansi-to-css.js.map +1 -0
  28. package/build/web/client.d.ts +51 -0
  29. package/build/web/client.js +315 -0
  30. package/build/web/client.js.map +1 -0
  31. package/build/web/server.d.ts +1 -0
  32. package/build/web/server.js +179 -0
  33. package/build/web/server.js.map +1 -0
  34. package/build/worker/dump-replay.d.ts +1 -0
  35. package/build/worker/dump-replay.js +15 -0
  36. package/build/worker/dump-replay.js.map +1 -0
  37. package/build/worker/replay.d.ts +55 -0
  38. package/build/worker/replay.js +133 -0
  39. package/build/worker/replay.js.map +1 -0
  40. package/build/worker/scene-manager.js +6 -5
  41. package/build/worker/scene-manager.js.map +1 -1
  42. package/build/worker/terminal-writer.d.ts +1 -1
  43. package/build/worker/terminal-writer.js +4 -2
  44. package/build/worker/terminal-writer.js.map +1 -1
  45. package/package.json +2 -2
@@ -0,0 +1,546 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-writer.js","sourceRoot":"","sources":["../src/terminal-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
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;