@floegence/floeterm-terminal-web 0.5.10 → 0.5.12

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/README.md CHANGED
@@ -61,6 +61,41 @@ await core.initialize();
61
61
  - `TerminalCore` exposes runtime appearance updates, shell bell/title events, custom terminal link providers, buffer line reads, and touch-scroll helpers without requiring consumers to reach into private runtime objects.
62
62
  - Multiple live `TerminalCore` instances share one render scheduler, so large terminal grids coalesce demand-driven canvas work into browser frames.
63
63
 
64
+ ## Paged History And Live Recovery
65
+
66
+ Hosts with cursor-paged history APIs can use the framework-neutral coordinator instead of maintaining a second live-output queue:
67
+
68
+ ```ts
69
+ const output = createPagedTerminalOutputCoordinator({
70
+ fetchPage: ({ startSequence, cursor, signal }) =>
71
+ transport.historyPage(sessionId, startSequence, cursor, signal),
72
+ write: data => core.write(data),
73
+ clear: () => core.clear(),
74
+ });
75
+
76
+ await output.attach(1);
77
+ events.onData(sessionId, chunk => output.pushLive(chunk));
78
+ ```
79
+
80
+ The coordinator understands sparse sequence coverage, retains live output while history is loading, catches up gaps, retries transient failures, and reports history truncation before rebasing. Background catch-up does not block terminal input.
81
+
82
+ ## Restorable In-Memory Snapshots
83
+
84
+ Adaptive host worksets can release inactive renderers without closing their PTY sessions:
85
+
86
+ ```ts
87
+ const snapshot = core.captureRestorableSnapshot({
88
+ coveredThroughSequence: output.getSnapshot().coveredThroughSequence,
89
+ });
90
+ const estimate = core.getResourceEstimate();
91
+
92
+ core.dispose(); // The host-owned PTY and output coordinator remain alive.
93
+
94
+ const restored = await nextCore.restoreSnapshot(snapshot);
95
+ ```
96
+
97
+ Snapshots are versioned opaque values intended for memory-only storage. They are bounded to 2 MiB by default and include sequence coverage so the host can fetch only newer output. Floeterm does not write snapshots to persistent browser storage.
98
+
64
99
  ## Responsive Resize
65
100
 
66
101
  When the same remote terminal session can be displayed in multiple views, enable responsive options so the focused terminal re-syncs cols/rows to the remote PTY:
@@ -0,0 +1,59 @@
1
+ import { type TerminalOutputPipelineChunk, type TerminalOutputPipelineScheduler } from './TerminalOutputPipeline';
2
+ export type PagedTerminalOutputState = 'idle' | 'initial-replay' | 'live' | 'catching-up' | 'retry-wait' | 'failed' | 'disposed';
3
+ export interface PagedTerminalHistoryRequest {
4
+ startSequence: number;
5
+ cursor?: string | number;
6
+ signal: AbortSignal;
7
+ }
8
+ export interface PagedTerminalHistoryPage {
9
+ chunks: readonly TerminalOutputPipelineChunk[];
10
+ hasMore: boolean;
11
+ nextCursor?: string | number;
12
+ firstAvailableSequence?: number;
13
+ coveredThroughSequence: number;
14
+ coveredBytes?: number;
15
+ totalBytes?: number;
16
+ }
17
+ export type PagedTerminalHistoryTruncationReason = 'history-evicted' | 'retained-live-overflow';
18
+ export interface PagedTerminalOutputPolicy {
19
+ maxRetainedLiveChunks: number;
20
+ maxRetainedLiveBytes: number;
21
+ retryDelaysMs: readonly number[];
22
+ }
23
+ export interface PagedTerminalOutputScheduler extends TerminalOutputPipelineScheduler {
24
+ setTimer(callback: () => void, delayMs: number): ReturnType<typeof setTimeout>;
25
+ clearTimer(handle: ReturnType<typeof setTimeout>): void;
26
+ }
27
+ export interface PagedTerminalOutputSnapshot {
28
+ state: PagedTerminalOutputState;
29
+ active: boolean;
30
+ coveredThroughSequence: number;
31
+ retainedLiveChunks: number;
32
+ retainedLiveBytes: number;
33
+ retryAttempt: number;
34
+ retryScheduled: boolean;
35
+ lastError: unknown;
36
+ disposed: boolean;
37
+ }
38
+ export interface PagedTerminalOutputCoordinatorOptions {
39
+ fetchPage(request: PagedTerminalHistoryRequest): Promise<PagedTerminalHistoryPage>;
40
+ write(data: Uint8Array, chunks: readonly TerminalOutputPipelineChunk[]): void;
41
+ clear?: () => void;
42
+ transformChunk?: (chunk: TerminalOutputPipelineChunk) => Uint8Array | null;
43
+ isInteractive?: () => boolean;
44
+ onStateChange?: (snapshot: PagedTerminalOutputSnapshot) => void;
45
+ onHistoryTruncated?: (reason: PagedTerminalHistoryTruncationReason) => void;
46
+ policy?: Partial<PagedTerminalOutputPolicy>;
47
+ scheduler?: Partial<PagedTerminalOutputScheduler>;
48
+ }
49
+ export interface PagedTerminalOutputCoordinatorHandle {
50
+ attach(startSequence?: number): Promise<void>;
51
+ pushLive(chunk: TerminalOutputPipelineChunk): void;
52
+ setActive(active: boolean): void;
53
+ clear(startSequence?: number): void;
54
+ retry(): void;
55
+ getSnapshot(): PagedTerminalOutputSnapshot;
56
+ dispose(): void;
57
+ }
58
+ export declare const createPagedTerminalOutputCoordinator: (options: PagedTerminalOutputCoordinatorOptions) => PagedTerminalOutputCoordinatorHandle;
59
+ //# sourceMappingURL=PagedTerminalOutputCoordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PagedTerminalOutputCoordinator.d.ts","sourceRoot":"","sources":["../../src/core/PagedTerminalOutputCoordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,282 @@
1
+ import { createTerminalOutputPipeline, } from './TerminalOutputPipeline';
2
+ const DEFAULT_POLICY = {
3
+ maxRetainedLiveChunks: 2048,
4
+ maxRetainedLiveBytes: 8 * 1024 * 1024,
5
+ retryDelaysMs: [250, 1000, 4000],
6
+ };
7
+ const normalizePositiveInteger = (value, fallback) => (typeof value === 'number' && Number.isFinite(value) && value > 0
8
+ ? Math.floor(value)
9
+ : fallback);
10
+ const concatData = (chunks) => {
11
+ const total = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);
12
+ const result = new Uint8Array(total);
13
+ let offset = 0;
14
+ for (const chunk of chunks) {
15
+ result.set(chunk, offset);
16
+ offset += chunk.byteLength;
17
+ }
18
+ return result;
19
+ };
20
+ class PagedTerminalOutputCoordinator {
21
+ constructor(options) {
22
+ this.active = true;
23
+ this.state = 'idle';
24
+ this.coveredThroughSequence = 0;
25
+ this.retainedLive = [];
26
+ this.retainedLiveBytes = 0;
27
+ this.retryAttempt = 0;
28
+ this.retryTimer = null;
29
+ this.abortController = null;
30
+ this.generation = 0;
31
+ this.disposed = false;
32
+ this.lastError = null;
33
+ this.recoveryStartSequence = 1;
34
+ this.recoveryKind = 'initial';
35
+ this.needsRebase = false;
36
+ this.options = options;
37
+ this.policy = {
38
+ maxRetainedLiveChunks: normalizePositiveInteger(options.policy?.maxRetainedLiveChunks, DEFAULT_POLICY.maxRetainedLiveChunks),
39
+ maxRetainedLiveBytes: normalizePositiveInteger(options.policy?.maxRetainedLiveBytes, DEFAULT_POLICY.maxRetainedLiveBytes),
40
+ retryDelaysMs: options.policy?.retryDelaysMs !== undefined
41
+ ? options.policy.retryDelaysMs.map(delay => Math.max(0, Math.floor(delay)))
42
+ : DEFAULT_POLICY.retryDelaysMs,
43
+ };
44
+ const pipelinePolicy = {
45
+ maxInactiveChunks: this.policy.maxRetainedLiveChunks,
46
+ maxInactiveBytes: this.policy.maxRetainedLiveBytes,
47
+ };
48
+ this.pipeline = createTerminalOutputPipeline({
49
+ write: (_data, chunks) => this.writeAcceptedChunks(chunks),
50
+ isInteractive: () => this.active && (this.options.isInteractive?.() ?? true),
51
+ requestCatchUp: request => this.beginCatchUp(request.startSequence),
52
+ policy: pipelinePolicy,
53
+ scheduler: options.scheduler,
54
+ });
55
+ }
56
+ async attach(startSequence = 1) {
57
+ if (this.disposed)
58
+ return;
59
+ this.cancelRecovery();
60
+ this.retainedLive = [];
61
+ this.retainedLiveBytes = 0;
62
+ this.coveredThroughSequence = Math.max(0, Math.floor(startSequence) - 1);
63
+ this.pipeline.reset({ startSequence: this.coveredThroughSequence + 1 });
64
+ this.recoveryKind = 'initial';
65
+ this.recoveryStartSequence = Math.max(0, Math.floor(startSequence));
66
+ this.retryAttempt = 0;
67
+ await this.runRecovery();
68
+ }
69
+ pushLive(chunk) {
70
+ if (this.disposed)
71
+ return;
72
+ if (this.recoveryKind === 'initial' && this.state !== 'live' && this.state !== 'idle') {
73
+ this.retainLive(chunk);
74
+ return;
75
+ }
76
+ this.pipeline.enqueue(chunk);
77
+ }
78
+ setActive(active) {
79
+ if (this.disposed)
80
+ return;
81
+ this.active = active;
82
+ if (active)
83
+ this.pipeline.flush();
84
+ this.emitState();
85
+ }
86
+ clear(startSequence = 1) {
87
+ if (this.disposed)
88
+ return;
89
+ this.cancelRecovery();
90
+ this.options.clear?.();
91
+ this.retainedLive = [];
92
+ this.retainedLiveBytes = 0;
93
+ this.coveredThroughSequence = Math.max(0, Math.floor(startSequence) - 1);
94
+ this.pipeline.reset({ startSequence: this.coveredThroughSequence + 1 });
95
+ this.retryAttempt = 0;
96
+ this.lastError = null;
97
+ this.setState('idle');
98
+ }
99
+ retry() {
100
+ if (this.disposed || this.state !== 'failed')
101
+ return;
102
+ this.retryAttempt = 0;
103
+ void this.runRecovery();
104
+ }
105
+ getSnapshot() {
106
+ return {
107
+ state: this.state,
108
+ active: this.active,
109
+ coveredThroughSequence: this.coveredThroughSequence,
110
+ retainedLiveChunks: this.retainedLive.length + this.pipeline.getStats().catchUpChunks,
111
+ retainedLiveBytes: this.retainedLiveBytes + this.pipeline.getStats().catchUpBytes,
112
+ retryAttempt: this.retryAttempt,
113
+ retryScheduled: this.retryTimer !== null,
114
+ lastError: this.lastError,
115
+ disposed: this.disposed,
116
+ };
117
+ }
118
+ dispose() {
119
+ if (this.disposed)
120
+ return;
121
+ this.disposed = true;
122
+ this.cancelRecovery();
123
+ this.retainedLive = [];
124
+ this.retainedLiveBytes = 0;
125
+ this.pipeline.dispose();
126
+ this.setState('disposed');
127
+ }
128
+ beginCatchUp(startSequence) {
129
+ if (this.disposed || this.state === 'initial-replay')
130
+ return;
131
+ this.recoveryKind = 'catch-up';
132
+ this.recoveryStartSequence = Math.max(0, Math.floor(startSequence));
133
+ this.retryAttempt = 0;
134
+ void this.runRecovery();
135
+ }
136
+ async runRecovery() {
137
+ if (this.disposed)
138
+ return;
139
+ this.cancelRecovery(false);
140
+ const generation = ++this.generation;
141
+ const controller = new AbortController();
142
+ this.abortController = controller;
143
+ this.lastError = null;
144
+ this.setState(this.recoveryKind === 'initial' ? 'initial-replay' : 'catching-up');
145
+ try {
146
+ let cursor;
147
+ let startSequence = this.recoveryStartSequence;
148
+ let firstPage = true;
149
+ do {
150
+ const page = await this.options.fetchPage({
151
+ startSequence,
152
+ cursor,
153
+ signal: controller.signal,
154
+ });
155
+ if (this.disposed || generation !== this.generation)
156
+ return;
157
+ const firstAvailable = page.firstAvailableSequence;
158
+ if (firstPage && firstAvailable && startSequence > 0 && firstAvailable > startSequence) {
159
+ this.options.clear?.();
160
+ this.options.onHistoryTruncated?.('history-evicted');
161
+ this.coveredThroughSequence = firstAvailable - 1;
162
+ this.pipeline.reset({ startSequence: firstAvailable });
163
+ }
164
+ firstPage = false;
165
+ this.writeAcceptedChunks(page.chunks.filter(chunk => (!chunk.sequence || chunk.sequence > this.coveredThroughSequence)));
166
+ this.coveredThroughSequence = Math.max(this.coveredThroughSequence, Math.floor(page.coveredThroughSequence || 0));
167
+ cursor = page.nextCursor;
168
+ startSequence = this.coveredThroughSequence + 1;
169
+ if (!page.hasMore)
170
+ break;
171
+ } while (!controller.signal.aborted);
172
+ if (this.disposed || generation !== this.generation)
173
+ return;
174
+ if (this.needsRebase) {
175
+ this.needsRebase = false;
176
+ this.options.clear?.();
177
+ this.pipeline.reset({ startSequence: 1 });
178
+ this.coveredThroughSequence = 0;
179
+ this.recoveryStartSequence = 0;
180
+ this.options.onHistoryTruncated?.('retained-live-overflow');
181
+ await this.runRecovery();
182
+ return;
183
+ }
184
+ this.pipeline.reset({
185
+ startSequence: this.coveredThroughSequence + 1,
186
+ resumeCatchUp: this.recoveryKind === 'catch-up',
187
+ allowSequenceSkipOnResume: true,
188
+ });
189
+ if (this.recoveryKind === 'initial') {
190
+ const retained = this.retainedLive;
191
+ this.retainedLive = [];
192
+ this.retainedLiveBytes = 0;
193
+ for (const chunk of retained) {
194
+ if (!chunk.sequence || chunk.sequence > this.coveredThroughSequence) {
195
+ this.pipeline.enqueue(chunk);
196
+ }
197
+ }
198
+ }
199
+ this.retryAttempt = 0;
200
+ this.lastError = null;
201
+ this.setState('live');
202
+ this.pipeline.flush();
203
+ }
204
+ catch (error) {
205
+ if (controller.signal.aborted || this.disposed || generation !== this.generation)
206
+ return;
207
+ this.lastError = error;
208
+ this.scheduleRetry();
209
+ }
210
+ }
211
+ scheduleRetry() {
212
+ const delay = this.policy.retryDelaysMs[this.retryAttempt];
213
+ if (delay === undefined) {
214
+ this.setState('failed');
215
+ return;
216
+ }
217
+ this.retryAttempt += 1;
218
+ this.setState('retry-wait');
219
+ const setTimer = this.options.scheduler?.setTimer ?? setTimeout;
220
+ this.retryTimer = setTimer(() => {
221
+ this.retryTimer = null;
222
+ void this.runRecovery();
223
+ }, delay);
224
+ this.emitState();
225
+ }
226
+ retainLive(chunk) {
227
+ this.retainedLive.push(chunk);
228
+ this.retainedLiveBytes += chunk.data.byteLength;
229
+ while (this.retainedLive.length > this.policy.maxRetainedLiveChunks
230
+ || this.retainedLiveBytes > this.policy.maxRetainedLiveBytes) {
231
+ const removed = this.retainedLive.shift();
232
+ if (!removed)
233
+ break;
234
+ this.retainedLiveBytes -= removed.data.byteLength;
235
+ this.needsRebase = true;
236
+ }
237
+ this.emitState();
238
+ }
239
+ writeAcceptedChunks(chunks) {
240
+ if (chunks.length === 0)
241
+ return;
242
+ const acceptedChunks = [];
243
+ const data = [];
244
+ for (const chunk of chunks) {
245
+ const transformed = this.options.transformChunk
246
+ ? this.options.transformChunk(chunk)
247
+ : chunk.data;
248
+ if (transformed === null)
249
+ continue;
250
+ acceptedChunks.push({ ...chunk, data: transformed });
251
+ data.push(transformed);
252
+ }
253
+ if (acceptedChunks.length > 0) {
254
+ this.options.write(concatData(data), acceptedChunks);
255
+ for (const chunk of acceptedChunks) {
256
+ if (chunk.sequence) {
257
+ this.coveredThroughSequence = Math.max(this.coveredThroughSequence, chunk.sequence);
258
+ }
259
+ }
260
+ }
261
+ }
262
+ cancelRecovery(incrementGeneration = true) {
263
+ this.abortController?.abort();
264
+ this.abortController = null;
265
+ if (this.retryTimer !== null) {
266
+ const clearTimer = this.options.scheduler?.clearTimer ?? clearTimeout;
267
+ clearTimer(this.retryTimer);
268
+ this.retryTimer = null;
269
+ }
270
+ if (incrementGeneration)
271
+ this.generation += 1;
272
+ }
273
+ setState(state) {
274
+ this.state = state;
275
+ this.emitState();
276
+ }
277
+ emitState() {
278
+ this.options.onStateChange?.(this.getSnapshot());
279
+ }
280
+ }
281
+ export const createPagedTerminalOutputCoordinator = (options) => new PagedTerminalOutputCoordinator(options);
282
+ //# sourceMappingURL=PagedTerminalOutputCoordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PagedTerminalOutputCoordinator.js","sourceRoot":"","sources":["../../src/core/PagedTerminalOutputCoordinator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TerminalState, type Logger, type TerminalConfig, type TerminalCopySelectionResult, type TerminalCopySelectionSource, type TerminalDimensions, type TerminalEventHandlers, type TerminalFocusOptions, type TerminalAppearance, type TerminalLinkProvider, type TerminalRuntimeLineSnapshot, type TerminalTouchScrollRuntime, type TerminalVisualSuspendHandle, type TerminalVisualSuspendOptions } from '../types';
1
+ import { TerminalState, type Logger, type TerminalConfig, type TerminalCopySelectionResult, type TerminalCopySelectionSource, type TerminalDimensions, type TerminalEventHandlers, type TerminalFocusOptions, type TerminalAppearance, type TerminalLinkProvider, type TerminalRuntimeLineSnapshot, type TerminalRestorableSnapshot, type TerminalRestorableSnapshotOptions, type TerminalResourceEstimate, type TerminalTouchScrollRuntime, type TerminalVisualSuspendHandle, type TerminalVisualSuspendOptions } from '../types';
2
2
  export declare class TerminalCore {
3
3
  private container;
4
4
  private config;
@@ -118,6 +118,9 @@ export declare class TerminalCore {
118
118
  write(data: string | Uint8Array, callback?: () => void): void;
119
119
  clear(): void;
120
120
  serialize(): string;
121
+ captureRestorableSnapshot(options?: TerminalRestorableSnapshotOptions): TerminalRestorableSnapshot | null;
122
+ restoreSnapshot(snapshot: TerminalRestorableSnapshot): Promise<boolean>;
123
+ getResourceEstimate(): TerminalResourceEstimate;
121
124
  getSelectionText(): string;
122
125
  hasSelection(): boolean;
123
126
  copySelection(source?: TerminalCopySelectionSource): Promise<TerminalCopySelectionResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalCore.d.ts","sourceRoot":"","sources":["../../src/core/TerminalCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TerminalCore.d.ts","sourceRoot":"","sources":["../../src/core/TerminalCore.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ import { TerminalState, } from '../types';
6
6
  import { resolveTerminalInputElement, TerminalInputBridge } from './TerminalInputBridge';
7
7
  import { terminalRenderScheduler } from './TerminalRenderScheduler';
8
8
  import { scheduleUiTurn } from '../internal/scheduleUiTurn';
9
+ const TERMINAL_SNAPSHOT_VERSION = 1;
10
+ const DEFAULT_TERMINAL_SNAPSHOT_MAX_BYTES = 2 * 1024 * 1024;
11
+ const ESTIMATED_RENDERER_BYTES = 4 * 1024 * 1024;
12
+ const ESTIMATED_CELL_BYTES = 16;
13
+ const SNAPSHOT_RESET_PREFIX = '\x1bc\x1b[2J\x1b[H';
14
+ const encodedByteLength = (value) => new TextEncoder().encode(value).byteLength;
9
15
  const TERMINAL_SEARCH_MAX_RESULTS = 5000;
10
16
  const PRESENTATION_SCALE_EPSILON = 0.0001;
11
17
  const GHOSTTY_DEFAULT_SCROLLBAR_RESERVE_PX = 15;
@@ -1584,7 +1590,80 @@ export class TerminalCore {
1584
1590
  this.forceFullRender();
1585
1591
  }
1586
1592
  serialize() {
1587
- return '';
1593
+ return this.captureRestorableSnapshot()?.data ?? '';
1594
+ }
1595
+ captureRestorableSnapshot(options = {}) {
1596
+ if (!this.terminal || !this.isReady()) {
1597
+ return null;
1598
+ }
1599
+ const maxBytes = Number.isFinite(options.maxBytes) && Number(options.maxBytes) > 0
1600
+ ? Math.floor(Number(options.maxBytes))
1601
+ : DEFAULT_TERMINAL_SNAPSHOT_MAX_BYTES;
1602
+ const info = this.getTerminalInfo();
1603
+ if (!info) {
1604
+ return null;
1605
+ }
1606
+ const lines = [];
1607
+ for (let row = 0; row < info.bufferLength; row += 1) {
1608
+ lines.push(this.readBufferLine(row, { trimRight: true }));
1609
+ }
1610
+ const suffix = '\x1b[0m';
1611
+ let selected = lines;
1612
+ let data = SNAPSHOT_RESET_PREFIX + selected.join('\r\n') + suffix;
1613
+ let partial = false;
1614
+ while (selected.length > Math.max(1, info.rows) && encodedByteLength(data) > maxBytes) {
1615
+ partial = true;
1616
+ selected = selected.slice(Math.max(1, Math.floor(selected.length / 4)));
1617
+ data = SNAPSHOT_RESET_PREFIX + selected.join('\r\n') + suffix;
1618
+ }
1619
+ if (encodedByteLength(data) > maxBytes) {
1620
+ partial = true;
1621
+ const availableBytes = Math.max(0, maxBytes - encodedByteLength(SNAPSHOT_RESET_PREFIX + suffix));
1622
+ const encoded = new TextEncoder().encode(selected.join('\r\n'));
1623
+ const tail = encoded.slice(Math.max(0, encoded.byteLength - availableBytes));
1624
+ data = SNAPSHOT_RESET_PREFIX + new TextDecoder().decode(tail) + suffix;
1625
+ }
1626
+ return {
1627
+ version: TERMINAL_SNAPSHOT_VERSION,
1628
+ data,
1629
+ byteLength: encodedByteLength(data),
1630
+ partial,
1631
+ coveredThroughSequence: Math.max(0, Math.floor(options.coveredThroughSequence ?? 0)),
1632
+ cols: info.cols,
1633
+ rows: info.rows,
1634
+ createdAtMs: options.now?.() ?? Date.now(),
1635
+ };
1636
+ }
1637
+ async restoreSnapshot(snapshot) {
1638
+ if (!this.terminal || !this.isReady() || snapshot.version !== TERMINAL_SNAPSHOT_VERSION) {
1639
+ return false;
1640
+ }
1641
+ if (!Number.isFinite(snapshot.coveredThroughSequence) || snapshot.coveredThroughSequence < 0) {
1642
+ return false;
1643
+ }
1644
+ this.startHistoryReplay();
1645
+ return new Promise(resolve => {
1646
+ this.write(snapshot.data, () => {
1647
+ this.endHistoryReplay();
1648
+ resolve(true);
1649
+ });
1650
+ });
1651
+ }
1652
+ getResourceEstimate() {
1653
+ const info = this.getTerminalInfo();
1654
+ const cellCount = info ? Math.max(0, info.cols * info.bufferLength) : 0;
1655
+ let bufferBytes = 0;
1656
+ if (info) {
1657
+ for (let row = 0; row < info.bufferLength; row += 1) {
1658
+ bufferBytes += encodedByteLength(this.readBufferLine(row));
1659
+ }
1660
+ }
1661
+ return {
1662
+ bufferBytes,
1663
+ cellCount,
1664
+ estimatedBytes: ESTIMATED_RENDERER_BYTES + bufferBytes + cellCount * ESTIMATED_CELL_BYTES,
1665
+ rendererType: this.config.rendererType ?? 'canvas',
1666
+ };
1588
1667
  }
1589
1668
  getSelectionText() {
1590
1669
  if (!this.terminal) {