@floegence/floeterm-terminal-web 0.14.0 → 0.15.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.
- package/README.md +78 -445
- package/dist/core/TerminalInputBridge.d.ts +7 -3
- package/dist/core/TerminalInputBridge.d.ts.map +1 -1
- package/dist/core/TerminalInputBridge.js +63 -4
- package/dist/core/TerminalInputBridge.js.map +1 -1
- package/dist/entries/live.d.ts +4 -4
- package/dist/entries/live.d.ts.map +1 -1
- package/dist/entries/live.js +2 -2
- package/dist/entries/live.js.map +1 -1
- package/dist/entries/semantic.d.ts +9 -0
- package/dist/entries/semantic.d.ts.map +1 -0
- package/dist/entries/semantic.js +5 -0
- package/dist/entries/semantic.js.map +1 -0
- package/dist/entries/sessions.d.ts +1 -1
- package/dist/entries/sessions.d.ts.map +1 -1
- package/dist/index.d.ts +4 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -16
- package/dist/index.js.map +1 -1
- package/dist/live/client.d.ts +4 -6
- package/dist/live/client.d.ts.map +1 -1
- package/dist/live/client.js +19 -72
- package/dist/live/client.js.map +1 -1
- package/dist/live/codec.d.ts +8 -21
- package/dist/live/codec.d.ts.map +1 -1
- package/dist/live/codec.js +79 -111
- package/dist/live/codec.js.map +1 -1
- package/dist/live/transport.d.ts +38 -18
- package/dist/live/transport.d.ts.map +1 -1
- package/dist/live/transport.js +59 -133
- package/dist/live/transport.js.map +1 -1
- package/dist/semantic/RendererSurface.d.ts +65 -0
- package/dist/semantic/RendererSurface.d.ts.map +1 -0
- package/dist/semantic/RendererSurface.js +566 -0
- package/dist/semantic/RendererSurface.js.map +1 -0
- package/dist/semantic/presentation.d.ts +97 -0
- package/dist/semantic/presentation.d.ts.map +1 -0
- package/dist/semantic/presentation.js +102 -0
- package/dist/semantic/presentation.js.map +1 -0
- package/dist/types.d.ts +13 -494
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -37
- package/dist/types.js.map +1 -1
- package/package.json +11 -19
- package/dist/checkpoint/GhosttyCheckpoint.worker.d.ts +0 -2
- package/dist/checkpoint/GhosttyCheckpoint.worker.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpoint.worker.js +0 -9
- package/dist/checkpoint/GhosttyCheckpoint.worker.js.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointActor.d.ts +0 -44
- package/dist/checkpoint/GhosttyCheckpointActor.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointActor.js +0 -284
- package/dist/checkpoint/GhosttyCheckpointActor.js.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointEngine.d.ts +0 -62
- package/dist/checkpoint/GhosttyCheckpointEngine.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointEngine.js +0 -175
- package/dist/checkpoint/GhosttyCheckpointEngine.js.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.d.ts +0 -31
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.d.ts.map +0 -1
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.js +0 -112
- package/dist/checkpoint/GhosttyCheckpointWorkerRuntime.js.map +0 -1
- package/dist/core/PagedTerminalOutputCoordinator.d.ts +0 -130
- package/dist/core/PagedTerminalOutputCoordinator.d.ts.map +0 -1
- package/dist/core/PagedTerminalOutputCoordinator.js +0 -1197
- package/dist/core/PagedTerminalOutputCoordinator.js.map +0 -1
- package/dist/core/TerminalCore.d.ts +0 -286
- package/dist/core/TerminalCore.d.ts.map +0 -1
- package/dist/core/TerminalCore.js +0 -3566
- package/dist/core/TerminalCore.js.map +0 -1
- package/dist/core/TerminalOutputPipeline.d.ts +0 -86
- package/dist/core/TerminalOutputPipeline.d.ts.map +0 -1
- package/dist/core/TerminalOutputPipeline.js +0 -511
- package/dist/core/TerminalOutputPipeline.js.map +0 -1
- package/dist/core/TerminalRenderScheduler.d.ts +0 -45
- package/dist/core/TerminalRenderScheduler.d.ts.map +0 -1
- package/dist/core/TerminalRenderScheduler.js +0 -145
- package/dist/core/TerminalRenderScheduler.js.map +0 -1
- package/dist/core/TerminalScrollbarOverlay.d.ts +0 -63
- package/dist/core/TerminalScrollbarOverlay.d.ts.map +0 -1
- package/dist/core/TerminalScrollbarOverlay.js +0 -493
- package/dist/core/TerminalScrollbarOverlay.js.map +0 -1
- package/dist/entries/history.d.ts +0 -4
- package/dist/entries/history.d.ts.map +0 -1
- package/dist/entries/history.js +0 -2
- package/dist/entries/history.js.map +0 -1
- package/dist/entries/preload.d.ts +0 -3
- package/dist/entries/preload.d.ts.map +0 -1
- package/dist/entries/preload.js +0 -2
- package/dist/entries/preload.js.map +0 -1
- package/dist/fabric/BeamtermFabricRenderer.d.ts +0 -67
- package/dist/fabric/BeamtermFabricRenderer.d.ts.map +0 -1
- package/dist/fabric/BeamtermFabricRenderer.js +0 -659
- package/dist/fabric/BeamtermFabricRenderer.js.map +0 -1
- package/dist/fabric/TerminalFabricCoordinator.d.ts +0 -40
- package/dist/fabric/TerminalFabricCoordinator.d.ts.map +0 -1
- package/dist/fabric/TerminalFabricCoordinator.js +0 -141
- package/dist/fabric/TerminalFabricCoordinator.js.map +0 -1
- package/dist/fabric/TerminalLiveFabric.d.ts +0 -44
- package/dist/fabric/TerminalLiveFabric.d.ts.map +0 -1
- package/dist/fabric/TerminalLiveFabric.js +0 -117
- package/dist/fabric/TerminalLiveFabric.js.map +0 -1
- package/dist/fabric/types.d.ts +0 -152
- package/dist/fabric/types.d.ts.map +0 -1
- package/dist/fabric/types.js +0 -2
- package/dist/fabric/types.js.map +0 -1
- package/dist/internal/BeamtermResourceLoader.d.ts +0 -3
- package/dist/internal/BeamtermResourceLoader.d.ts.map +0 -1
- package/dist/internal/BeamtermResourceLoader.js +0 -14
- package/dist/internal/BeamtermResourceLoader.js.map +0 -1
- package/dist/internal/GhosttyCompatibilityVersion.d.ts +0 -2
- package/dist/internal/GhosttyCompatibilityVersion.d.ts.map +0 -1
- package/dist/internal/GhosttyCompatibilityVersion.js +0 -2
- package/dist/internal/GhosttyCompatibilityVersion.js.map +0 -1
- package/dist/internal/GhosttyScrollbackCompat.d.ts +0 -16
- package/dist/internal/GhosttyScrollbackCompat.d.ts.map +0 -1
- package/dist/internal/GhosttyScrollbackCompat.js +0 -43
- package/dist/internal/GhosttyScrollbackCompat.js.map +0 -1
- package/dist/internal/GhosttyScrollbarCompat.d.ts +0 -12
- package/dist/internal/GhosttyScrollbarCompat.d.ts.map +0 -1
- package/dist/internal/GhosttyScrollbarCompat.js +0 -160
- package/dist/internal/GhosttyScrollbarCompat.js.map +0 -1
- package/dist/internal/SequenceBuffer.d.ts +0 -19
- package/dist/internal/SequenceBuffer.d.ts.map +0 -1
- package/dist/internal/SequenceBuffer.js +0 -83
- package/dist/internal/SequenceBuffer.js.map +0 -1
- package/dist/internal/TerminalInitializationScheduler.d.ts +0 -38
- package/dist/internal/TerminalInitializationScheduler.d.ts.map +0 -1
- package/dist/internal/TerminalInitializationScheduler.js +0 -112
- package/dist/internal/TerminalInitializationScheduler.js.map +0 -1
- package/dist/internal/TerminalResourceLoader.d.ts +0 -40
- package/dist/internal/TerminalResourceLoader.d.ts.map +0 -1
- package/dist/internal/TerminalResourceLoader.js +0 -165
- package/dist/internal/TerminalResourceLoader.js.map +0 -1
- package/dist/internal/UnicodeSafeUrlProvider.d.ts +0 -17
- package/dist/internal/UnicodeSafeUrlProvider.d.ts.map +0 -1
- package/dist/internal/UnicodeSafeUrlProvider.js +0 -32
- package/dist/internal/UnicodeSafeUrlProvider.js.map +0 -1
- package/dist/internal/scheduleUiTurn.d.ts +0 -5
- package/dist/internal/scheduleUiTurn.d.ts.map +0 -1
- package/dist/internal/scheduleUiTurn.js +0 -37
- package/dist/internal/scheduleUiTurn.js.map +0 -1
- package/dist/manager/TerminalInstanceController.d.ts +0 -88
- package/dist/manager/TerminalInstanceController.d.ts.map +0 -1
- package/dist/manager/TerminalInstanceController.js +0 -1076
- package/dist/manager/TerminalInstanceController.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -3
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -11
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/history.d.ts +0 -2
- package/dist/utils/history.d.ts.map +0 -1
- package/dist/utils/history.js +0 -12
- package/dist/utils/history.js.map +0 -1
- package/dist/utils/xtermAutoResponseFilter.d.ts +0 -2
- package/dist/utils/xtermAutoResponseFilter.d.ts.map +0 -1
- package/dist/utils/xtermAutoResponseFilter.js +0 -109
- package/dist/utils/xtermAutoResponseFilter.js.map +0 -1
package/dist/live/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MAX_INPUT_BYTES, StreamKind, TerminalLiveDecoder, TerminalLiveFrameType, decodeAttached, decodeGeometryChanged,
|
|
1
|
+
import { MAX_INPUT_BYTES, StreamKind, TerminalLiveDecoder, TerminalLiveFrameType, decodeAttached, decodeGeometryChanged, decodePresentation, decodeProtocolError, decodeResizeApplied, encodeAttach, encodeInput, encodeResize, } from './codec.js';
|
|
2
2
|
export const MAX_QUEUED_INPUT_BYTES = 8 * 1024 * 1024;
|
|
3
3
|
export var TerminalLiveErrorCode;
|
|
4
4
|
(function (TerminalLiveErrorCode) {
|
|
@@ -40,37 +40,32 @@ const toSafeNumber = (value, name) => {
|
|
|
40
40
|
return number;
|
|
41
41
|
};
|
|
42
42
|
class TerminalLiveConnectionImpl {
|
|
43
|
-
constructor(stream, reader, attached,
|
|
43
|
+
constructor(stream, reader, attached, onPresentation, onGeometry, onClosed, onError) {
|
|
44
44
|
this.stream = stream;
|
|
45
45
|
this.reader = reader;
|
|
46
|
-
this.
|
|
46
|
+
this.onPresentation = onPresentation;
|
|
47
47
|
this.onGeometry = onGeometry;
|
|
48
48
|
this.onClosed = onClosed;
|
|
49
49
|
this.onError = onError;
|
|
50
50
|
this.inputSequence = 0n;
|
|
51
51
|
this.resizeSequence = 0n;
|
|
52
52
|
this.queuedInputBytes = 0;
|
|
53
|
-
this.pendingGeometries = [];
|
|
54
53
|
this.writeTail = Promise.resolve();
|
|
55
54
|
this.resizeWaiters = new Map();
|
|
56
55
|
this.closed = false;
|
|
57
56
|
this.failed = false;
|
|
58
57
|
this.attached = {
|
|
59
|
-
|
|
60
|
-
historyGeneration: toSafeNumber(attached.historyGeneration, 'historyGeneration'),
|
|
61
|
-
historyStartSequence: toSafeNumber(attached.historyStartSequence, 'historyStartSequence'),
|
|
58
|
+
presentationSequence: toSafeNumber(attached.presentationSequence, 'presentationSequence'),
|
|
62
59
|
geometryGeneration: toSafeNumber(attached.geometryGeneration, 'geometryGeneration'),
|
|
63
60
|
cols: attached.cols,
|
|
64
61
|
rows: attached.rows,
|
|
65
62
|
};
|
|
66
63
|
this.geometry = {
|
|
67
64
|
generation: this.attached.geometryGeneration,
|
|
68
|
-
|
|
65
|
+
presentationSequence: this.attached.presentationSequence,
|
|
69
66
|
cols: this.attached.cols,
|
|
70
67
|
rows: this.attached.rows,
|
|
71
68
|
};
|
|
72
|
-
this.nextOutputSequence = attached.historyBoundarySequence + 1n;
|
|
73
|
-
this.lastOutputSequence = attached.historyBoundarySequence;
|
|
74
69
|
this.onGeometry?.(this.geometry);
|
|
75
70
|
}
|
|
76
71
|
start() {
|
|
@@ -150,50 +145,33 @@ class TerminalLiveConnectionImpl {
|
|
|
150
145
|
return;
|
|
151
146
|
}
|
|
152
147
|
switch (frame.type) {
|
|
153
|
-
case TerminalLiveFrameType.OutputBatch:
|
|
154
|
-
{
|
|
155
|
-
const batch = decodeOutputBatch(frame);
|
|
156
|
-
const records = batch.records;
|
|
157
|
-
for (const record of records) {
|
|
158
|
-
if (record.sequence !== this.nextOutputSequence) {
|
|
159
|
-
throw new Error(`expected output sequence ${this.nextOutputSequence}, received ${record.sequence}`);
|
|
160
|
-
}
|
|
161
|
-
this.nextOutputSequence += 1n;
|
|
162
|
-
}
|
|
163
|
-
const batchGeometry = {
|
|
164
|
-
generation: toSafeNumber(batch.geometryGeneration, 'geometryGeneration'),
|
|
165
|
-
outputSequenceBoundary: toSafeNumber(records[0].sequence - 1n, 'outputSequenceBoundary'),
|
|
166
|
-
cols: batch.cols,
|
|
167
|
-
rows: batch.rows,
|
|
168
|
-
};
|
|
169
|
-
this.applyGeometry(batchGeometry);
|
|
170
|
-
this.onOutputBatch(records, batchGeometry);
|
|
171
|
-
if (records.length > 0)
|
|
172
|
-
this.lastOutputSequence = records[records.length - 1].sequence;
|
|
173
|
-
this.flushPendingGeometries();
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
148
|
case TerminalLiveFrameType.ResizeApplied: {
|
|
177
149
|
const applied = decodeResizeApplied(frame);
|
|
178
150
|
const waiter = this.resizeWaiters.get(applied.sequence);
|
|
179
151
|
if (!waiter)
|
|
180
152
|
throw new Error('unexpected terminal live resize acknowledgement');
|
|
181
|
-
|
|
153
|
+
const geometry = {
|
|
182
154
|
generation: toSafeNumber(applied.geometryGeneration, 'geometryGeneration'),
|
|
183
|
-
|
|
155
|
+
presentationSequence: toSafeNumber(applied.presentationSequence, 'presentationSequence'),
|
|
184
156
|
cols: applied.cols,
|
|
185
157
|
rows: applied.rows,
|
|
186
|
-
}
|
|
158
|
+
};
|
|
159
|
+
this.applyGeometry(geometry);
|
|
160
|
+
this.resizeWaiters.delete(applied.sequence);
|
|
161
|
+
waiter.resolve({ requested: waiter.requested, effective: geometry });
|
|
187
162
|
break;
|
|
188
163
|
}
|
|
164
|
+
case TerminalLiveFrameType.Presentation:
|
|
165
|
+
this.onPresentation?.(decodePresentation(frame));
|
|
166
|
+
break;
|
|
189
167
|
case TerminalLiveFrameType.GeometryChanged: {
|
|
190
168
|
const geometry = decodeGeometryChanged(frame);
|
|
191
|
-
this.
|
|
169
|
+
this.applyGeometry({
|
|
192
170
|
generation: toSafeNumber(geometry.generation, 'geometryGeneration'),
|
|
193
|
-
|
|
171
|
+
presentationSequence: toSafeNumber(geometry.presentationSequence, 'presentationSequence'),
|
|
194
172
|
cols: geometry.cols,
|
|
195
173
|
rows: geometry.rows,
|
|
196
|
-
}
|
|
174
|
+
});
|
|
197
175
|
break;
|
|
198
176
|
}
|
|
199
177
|
case TerminalLiveFrameType.SessionClosed:
|
|
@@ -222,37 +200,6 @@ class TerminalLiveConnectionImpl {
|
|
|
222
200
|
for (const waiter of this.resizeWaiters.values())
|
|
223
201
|
waiter.reject(error);
|
|
224
202
|
this.resizeWaiters.clear();
|
|
225
|
-
this.pendingGeometries = [];
|
|
226
|
-
}
|
|
227
|
-
queueGeometry(geometry, outputSequenceBoundary, resizeSequence) {
|
|
228
|
-
this.pendingGeometries.push({ geometry, outputSequenceBoundary, resizeSequence });
|
|
229
|
-
this.flushPendingGeometries();
|
|
230
|
-
}
|
|
231
|
-
flushPendingGeometries() {
|
|
232
|
-
if (this.pendingGeometries.length === 0)
|
|
233
|
-
return;
|
|
234
|
-
const ready = [];
|
|
235
|
-
const waiting = [];
|
|
236
|
-
for (const pending of this.pendingGeometries) {
|
|
237
|
-
(pending.outputSequenceBoundary <= this.lastOutputSequence ? ready : waiting).push(pending);
|
|
238
|
-
}
|
|
239
|
-
this.pendingGeometries = waiting;
|
|
240
|
-
ready.sort((left, right) => (left.outputSequenceBoundary === right.outputSequenceBoundary
|
|
241
|
-
? left.geometry.generation - right.geometry.generation
|
|
242
|
-
: left.outputSequenceBoundary < right.outputSequenceBoundary ? -1 : 1));
|
|
243
|
-
for (const pending of ready) {
|
|
244
|
-
this.applyGeometry(pending.geometry);
|
|
245
|
-
if (pending.resizeSequence !== undefined) {
|
|
246
|
-
const waiter = this.resizeWaiters.get(pending.resizeSequence);
|
|
247
|
-
if (!waiter)
|
|
248
|
-
continue;
|
|
249
|
-
this.resizeWaiters.delete(pending.resizeSequence);
|
|
250
|
-
waiter.resolve({
|
|
251
|
-
requested: waiter.requested,
|
|
252
|
-
effective: pending.geometry,
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
203
|
}
|
|
257
204
|
applyGeometry(next) {
|
|
258
205
|
if (next.generation < this.geometry.generation)
|
|
@@ -261,7 +208,7 @@ class TerminalLiveConnectionImpl {
|
|
|
261
208
|
if (next.cols !== this.geometry.cols || next.rows !== this.geometry.rows) {
|
|
262
209
|
throw new Error('terminal live geometry changed without advancing its generation');
|
|
263
210
|
}
|
|
264
|
-
if (next.
|
|
211
|
+
if (next.presentationSequence > this.geometry.presentationSequence) {
|
|
265
212
|
this.geometry = next;
|
|
266
213
|
}
|
|
267
214
|
return;
|
|
@@ -309,7 +256,7 @@ export const connectTerminalLive = async (options) => {
|
|
|
309
256
|
if (first.type !== TerminalLiveFrameType.Attached) {
|
|
310
257
|
throw new Error(`invalid terminal live server frame before attach: 0x${first.type.toString(16)}`);
|
|
311
258
|
}
|
|
312
|
-
const connection = new TerminalLiveConnectionImpl(stream, reader, decodeAttached(first), options.
|
|
259
|
+
const connection = new TerminalLiveConnectionImpl(stream, reader, decodeAttached(first), options.onPresentation, options.onGeometry, options.onClosed, options.onError);
|
|
313
260
|
connection.start();
|
|
314
261
|
return connection;
|
|
315
262
|
}
|
package/dist/live/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/live/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/live/client.ts"],"names":[],"mappings":"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"}
|
package/dist/live/codec.d.ts
CHANGED
|
@@ -2,8 +2,6 @@ export declare const StreamKind = "terminal/live_v1";
|
|
|
2
2
|
export declare const FRAME_HEADER_BYTES = 8;
|
|
3
3
|
export declare const MAX_FRAME_PAYLOAD_BYTES: number;
|
|
4
4
|
export declare const MAX_INPUT_BYTES: number;
|
|
5
|
-
export declare const MAX_OUTPUT_BATCH_BYTES: number;
|
|
6
|
-
export declare const MAX_OUTPUT_BATCH_CHUNKS = 256;
|
|
7
5
|
export declare const MAX_IDENTIFIER_BYTES = 256;
|
|
8
6
|
export declare enum TerminalLiveFrameType {
|
|
9
7
|
Attach = 1,
|
|
@@ -11,10 +9,10 @@ export declare enum TerminalLiveFrameType {
|
|
|
11
9
|
Resize = 3,
|
|
12
10
|
Detach = 4,
|
|
13
11
|
Attached = 129,
|
|
14
|
-
OutputBatch = 130,
|
|
15
12
|
ResizeApplied = 131,
|
|
16
13
|
SessionClosed = 132,
|
|
17
14
|
GeometryChanged = 133,
|
|
15
|
+
Presentation = 134,
|
|
18
16
|
Error = 255
|
|
19
17
|
}
|
|
20
18
|
export type TerminalLiveFrame = Readonly<{
|
|
@@ -39,9 +37,7 @@ export type Resize = Readonly<{
|
|
|
39
37
|
rows: number;
|
|
40
38
|
}>;
|
|
41
39
|
export type Attached = Readonly<{
|
|
42
|
-
|
|
43
|
-
historyGeneration: bigint;
|
|
44
|
-
historyStartSequence: bigint;
|
|
40
|
+
presentationSequence: bigint;
|
|
45
41
|
geometryGeneration: bigint;
|
|
46
42
|
cols: number;
|
|
47
43
|
rows: number;
|
|
@@ -49,27 +45,19 @@ export type Attached = Readonly<{
|
|
|
49
45
|
export type ResizeApplied = Readonly<{
|
|
50
46
|
sequence: bigint;
|
|
51
47
|
geometryGeneration: bigint;
|
|
52
|
-
|
|
48
|
+
presentationSequence: bigint;
|
|
53
49
|
cols: number;
|
|
54
50
|
rows: number;
|
|
55
51
|
}>;
|
|
56
|
-
export type OutputRecord = Readonly<{
|
|
57
|
-
sequence: bigint;
|
|
58
|
-
timestampMs: bigint;
|
|
59
|
-
data: Uint8Array;
|
|
60
|
-
}>;
|
|
61
|
-
export type OutputBatch = Readonly<{
|
|
62
|
-
geometryGeneration: bigint;
|
|
63
|
-
cols: number;
|
|
64
|
-
rows: number;
|
|
65
|
-
records: readonly OutputRecord[];
|
|
66
|
-
}>;
|
|
67
52
|
export type GeometryChanged = Readonly<{
|
|
68
53
|
generation: bigint;
|
|
69
|
-
|
|
54
|
+
presentationSequence: bigint;
|
|
70
55
|
cols: number;
|
|
71
56
|
rows: number;
|
|
72
57
|
}>;
|
|
58
|
+
export type Presentation = Readonly<{
|
|
59
|
+
value: unknown;
|
|
60
|
+
}>;
|
|
73
61
|
export type ProtocolError = Readonly<{
|
|
74
62
|
code: number;
|
|
75
63
|
message: string;
|
|
@@ -90,8 +78,7 @@ export declare const encodeResizeApplied: (value: ResizeApplied) => Uint8Array;
|
|
|
90
78
|
export declare const decodeResizeApplied: (value: TerminalLiveFrame) => ResizeApplied;
|
|
91
79
|
export declare const encodeGeometryChanged: (value: GeometryChanged) => Uint8Array;
|
|
92
80
|
export declare const decodeGeometryChanged: (value: TerminalLiveFrame) => GeometryChanged;
|
|
93
|
-
export declare const encodeOutputBatch: (value: OutputBatch) => Uint8Array;
|
|
94
|
-
export declare const decodeOutputBatch: (value: TerminalLiveFrame) => OutputBatch;
|
|
95
81
|
export declare const decodeProtocolError: (value: TerminalLiveFrame) => ProtocolError;
|
|
82
|
+
export declare const decodePresentation: (value: TerminalLiveFrame) => unknown;
|
|
96
83
|
export declare const decodeUtf8: (value: Uint8Array) => string;
|
|
97
84
|
//# sourceMappingURL=codec.d.ts.map
|
package/dist/live/codec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/live/codec.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAClD,eAAO,MAAM,eAAe,QAAY,CAAC;AACzC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/live/codec.ts"],"names":[],"mappings":"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"}
|
package/dist/live/codec.js
CHANGED
|
@@ -2,8 +2,6 @@ export const StreamKind = 'terminal/live_v1';
|
|
|
2
2
|
export const FRAME_HEADER_BYTES = 8;
|
|
3
3
|
export const MAX_FRAME_PAYLOAD_BYTES = 256 * 1024;
|
|
4
4
|
export const MAX_INPUT_BYTES = 64 * 1024;
|
|
5
|
-
export const MAX_OUTPUT_BATCH_BYTES = 64 * 1024;
|
|
6
|
-
export const MAX_OUTPUT_BATCH_CHUNKS = 256;
|
|
7
5
|
export const MAX_IDENTIFIER_BYTES = 256;
|
|
8
6
|
export var TerminalLiveFrameType;
|
|
9
7
|
(function (TerminalLiveFrameType) {
|
|
@@ -12,10 +10,10 @@ export var TerminalLiveFrameType;
|
|
|
12
10
|
TerminalLiveFrameType[TerminalLiveFrameType["Resize"] = 3] = "Resize";
|
|
13
11
|
TerminalLiveFrameType[TerminalLiveFrameType["Detach"] = 4] = "Detach";
|
|
14
12
|
TerminalLiveFrameType[TerminalLiveFrameType["Attached"] = 129] = "Attached";
|
|
15
|
-
TerminalLiveFrameType[TerminalLiveFrameType["OutputBatch"] = 130] = "OutputBatch";
|
|
16
13
|
TerminalLiveFrameType[TerminalLiveFrameType["ResizeApplied"] = 131] = "ResizeApplied";
|
|
17
14
|
TerminalLiveFrameType[TerminalLiveFrameType["SessionClosed"] = 132] = "SessionClosed";
|
|
18
15
|
TerminalLiveFrameType[TerminalLiveFrameType["GeometryChanged"] = 133] = "GeometryChanged";
|
|
16
|
+
TerminalLiveFrameType[TerminalLiveFrameType["Presentation"] = 134] = "Presentation";
|
|
19
17
|
TerminalLiveFrameType[TerminalLiveFrameType["Error"] = 255] = "Error";
|
|
20
18
|
})(TerminalLiveFrameType || (TerminalLiveFrameType = {}));
|
|
21
19
|
const encoder = new TextEncoder();
|
|
@@ -191,59 +189,47 @@ export const decodeResize = (value) => {
|
|
|
191
189
|
return { sequence, cols, rows };
|
|
192
190
|
};
|
|
193
191
|
export const encodeAttached = (value) => {
|
|
194
|
-
assertPositiveUint64(value.
|
|
195
|
-
assertPositiveUint64(value.historyStartSequence, 'historyStartSequence');
|
|
192
|
+
assertPositiveUint64(value.presentationSequence, 'presentationSequence');
|
|
196
193
|
assertPositiveUint64(value.geometryGeneration, 'geometryGeneration');
|
|
197
194
|
assertPositiveUint32(value.cols, 'cols');
|
|
198
195
|
assertPositiveUint32(value.rows, 'rows');
|
|
199
|
-
|
|
200
|
-
throw new Error('historyStartSequence exceeds the attached history boundary');
|
|
201
|
-
}
|
|
202
|
-
const payload = new Uint8Array(40);
|
|
196
|
+
const payload = new Uint8Array(24);
|
|
203
197
|
const view = new DataView(payload.buffer);
|
|
204
|
-
view.setBigUint64(0, value.
|
|
205
|
-
view.setBigUint64(8, value.
|
|
206
|
-
view.
|
|
207
|
-
view.
|
|
208
|
-
view.setUint32(32, value.cols, false);
|
|
209
|
-
view.setUint32(36, value.rows, false);
|
|
198
|
+
view.setBigUint64(0, value.presentationSequence, false);
|
|
199
|
+
view.setBigUint64(8, value.geometryGeneration, false);
|
|
200
|
+
view.setUint32(16, value.cols, false);
|
|
201
|
+
view.setUint32(20, value.rows, false);
|
|
210
202
|
return frame(TerminalLiveFrameType.Attached, payload);
|
|
211
203
|
};
|
|
212
204
|
export const decodeAttached = (value) => {
|
|
213
205
|
if (value.type !== TerminalLiveFrameType.Attached)
|
|
214
206
|
throw new Error('unexpected terminal live frame type');
|
|
215
|
-
if (value.payload.byteLength !==
|
|
207
|
+
if (value.payload.byteLength !== 24)
|
|
216
208
|
throw new Error('invalid terminal live attached payload');
|
|
217
209
|
const view = new DataView(value.payload.buffer, value.payload.byteOffset);
|
|
218
210
|
const attached = {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
cols: view.getUint32(32, false),
|
|
224
|
-
rows: view.getUint32(36, false),
|
|
211
|
+
presentationSequence: view.getBigUint64(0, false),
|
|
212
|
+
geometryGeneration: view.getBigUint64(8, false),
|
|
213
|
+
cols: view.getUint32(16, false),
|
|
214
|
+
rows: view.getUint32(20, false),
|
|
225
215
|
};
|
|
226
|
-
assertPositiveUint64(attached.
|
|
227
|
-
assertPositiveUint64(attached.historyStartSequence, 'historyStartSequence');
|
|
216
|
+
assertPositiveUint64(attached.presentationSequence, 'presentationSequence');
|
|
228
217
|
assertPositiveUint64(attached.geometryGeneration, 'geometryGeneration');
|
|
229
218
|
assertPositiveUint32(attached.cols, 'cols');
|
|
230
219
|
assertPositiveUint32(attached.rows, 'rows');
|
|
231
|
-
if (attached.historyStartSequence > attached.historyBoundarySequence + 1n) {
|
|
232
|
-
throw new Error('historyStartSequence exceeds the attached history boundary');
|
|
233
|
-
}
|
|
234
220
|
return attached;
|
|
235
221
|
};
|
|
236
222
|
export const encodeResizeApplied = (value) => {
|
|
237
223
|
assertPositiveUint64(value.sequence, 'sequence');
|
|
238
224
|
assertPositiveUint64(value.geometryGeneration, 'geometryGeneration');
|
|
239
|
-
|
|
225
|
+
assertPositiveUint64(value.presentationSequence, 'presentationSequence');
|
|
240
226
|
assertPositiveUint32(value.cols, 'cols');
|
|
241
227
|
assertPositiveUint32(value.rows, 'rows');
|
|
242
228
|
const payload = new Uint8Array(32);
|
|
243
229
|
const view = new DataView(payload.buffer);
|
|
244
230
|
view.setBigUint64(0, value.sequence, false);
|
|
245
231
|
view.setBigUint64(8, value.geometryGeneration, false);
|
|
246
|
-
view.setBigUint64(16, value.
|
|
232
|
+
view.setBigUint64(16, value.presentationSequence, false);
|
|
247
233
|
view.setUint32(24, value.cols, false);
|
|
248
234
|
view.setUint32(28, value.rows, false);
|
|
249
235
|
return frame(TerminalLiveFrameType.ResizeApplied, payload);
|
|
@@ -256,25 +242,25 @@ export const decodeResizeApplied = (value) => {
|
|
|
256
242
|
const view = new DataView(value.payload.buffer, value.payload.byteOffset);
|
|
257
243
|
const sequence = view.getBigUint64(0, false);
|
|
258
244
|
const geometryGeneration = view.getBigUint64(8, false);
|
|
259
|
-
const
|
|
245
|
+
const presentationSequence = view.getBigUint64(16, false);
|
|
260
246
|
const cols = view.getUint32(24, false);
|
|
261
247
|
const rows = view.getUint32(28, false);
|
|
262
248
|
assertPositiveUint64(sequence, 'sequence');
|
|
263
249
|
assertPositiveUint64(geometryGeneration, 'geometryGeneration');
|
|
264
|
-
|
|
250
|
+
assertPositiveUint64(presentationSequence, 'presentationSequence');
|
|
265
251
|
assertPositiveUint32(cols, 'cols');
|
|
266
252
|
assertPositiveUint32(rows, 'rows');
|
|
267
|
-
return { sequence, geometryGeneration,
|
|
253
|
+
return { sequence, geometryGeneration, presentationSequence, cols, rows };
|
|
268
254
|
};
|
|
269
255
|
export const encodeGeometryChanged = (value) => {
|
|
270
256
|
assertPositiveUint64(value.generation, 'geometryGeneration');
|
|
271
|
-
|
|
257
|
+
assertPositiveUint64(value.presentationSequence, 'presentationSequence');
|
|
272
258
|
assertPositiveUint32(value.cols, 'cols');
|
|
273
259
|
assertPositiveUint32(value.rows, 'rows');
|
|
274
260
|
const payload = new Uint8Array(24);
|
|
275
261
|
const view = new DataView(payload.buffer);
|
|
276
262
|
view.setBigUint64(0, value.generation, false);
|
|
277
|
-
view.setBigUint64(8, value.
|
|
263
|
+
view.setBigUint64(8, value.presentationSequence, false);
|
|
278
264
|
view.setUint32(16, value.cols, false);
|
|
279
265
|
view.setUint32(20, value.rows, false);
|
|
280
266
|
return frame(TerminalLiveFrameType.GeometryChanged, payload);
|
|
@@ -286,88 +272,14 @@ export const decodeGeometryChanged = (value) => {
|
|
|
286
272
|
throw new Error('invalid terminal live geometry payload');
|
|
287
273
|
const view = new DataView(value.payload.buffer, value.payload.byteOffset);
|
|
288
274
|
const generation = view.getBigUint64(0, false);
|
|
289
|
-
const
|
|
275
|
+
const presentationSequence = view.getBigUint64(8, false);
|
|
290
276
|
const cols = view.getUint32(16, false);
|
|
291
277
|
const rows = view.getUint32(20, false);
|
|
292
278
|
assertPositiveUint64(generation, 'geometryGeneration');
|
|
293
|
-
|
|
294
|
-
assertPositiveUint32(cols, 'cols');
|
|
295
|
-
assertPositiveUint32(rows, 'rows');
|
|
296
|
-
return { generation, outputSequenceBoundary, cols, rows };
|
|
297
|
-
};
|
|
298
|
-
export const encodeOutputBatch = (value) => {
|
|
299
|
-
assertPositiveUint64(value.geometryGeneration, 'geometryGeneration');
|
|
300
|
-
assertPositiveUint32(value.cols, 'cols');
|
|
301
|
-
assertPositiveUint32(value.rows, 'rows');
|
|
302
|
-
if (value.records.length === 0 || value.records.length > MAX_OUTPUT_BATCH_CHUNKS) {
|
|
303
|
-
throw new Error('invalid terminal live output record count');
|
|
304
|
-
}
|
|
305
|
-
let dataBytes = 0;
|
|
306
|
-
let payloadBytes = 18;
|
|
307
|
-
for (const record of value.records) {
|
|
308
|
-
assertPositiveUint64(record.sequence, 'sequence');
|
|
309
|
-
if (record.data.byteLength === 0)
|
|
310
|
-
throw new Error('invalid terminal live output data');
|
|
311
|
-
dataBytes += record.data.byteLength;
|
|
312
|
-
payloadBytes += 20 + record.data.byteLength;
|
|
313
|
-
}
|
|
314
|
-
if (dataBytes > MAX_OUTPUT_BATCH_BYTES)
|
|
315
|
-
throw new Error('terminal live output batch is too large');
|
|
316
|
-
const payload = new Uint8Array(payloadBytes);
|
|
317
|
-
const view = new DataView(payload.buffer);
|
|
318
|
-
view.setBigUint64(0, value.geometryGeneration, false);
|
|
319
|
-
view.setUint32(8, value.cols, false);
|
|
320
|
-
view.setUint32(12, value.rows, false);
|
|
321
|
-
view.setUint16(16, value.records.length, false);
|
|
322
|
-
let offset = 18;
|
|
323
|
-
for (const record of value.records) {
|
|
324
|
-
view.setBigUint64(offset, record.sequence, false);
|
|
325
|
-
view.setBigUint64(offset + 8, record.timestampMs, false);
|
|
326
|
-
view.setUint32(offset + 16, record.data.byteLength, false);
|
|
327
|
-
payload.set(record.data, offset + 20);
|
|
328
|
-
offset += 20 + record.data.byteLength;
|
|
329
|
-
}
|
|
330
|
-
return frame(TerminalLiveFrameType.OutputBatch, payload);
|
|
331
|
-
};
|
|
332
|
-
export const decodeOutputBatch = (value) => {
|
|
333
|
-
if (value.type !== TerminalLiveFrameType.OutputBatch)
|
|
334
|
-
throw new Error('unexpected terminal live frame type');
|
|
335
|
-
if (value.payload.byteLength < 18)
|
|
336
|
-
throw new Error('invalid terminal live output payload');
|
|
337
|
-
const view = new DataView(value.payload.buffer, value.payload.byteOffset);
|
|
338
|
-
const geometryGeneration = view.getBigUint64(0, false);
|
|
339
|
-
const cols = view.getUint32(8, false);
|
|
340
|
-
const rows = view.getUint32(12, false);
|
|
341
|
-
assertPositiveUint64(geometryGeneration, 'geometryGeneration');
|
|
279
|
+
assertPositiveUint64(presentationSequence, 'presentationSequence');
|
|
342
280
|
assertPositiveUint32(cols, 'cols');
|
|
343
281
|
assertPositiveUint32(rows, 'rows');
|
|
344
|
-
|
|
345
|
-
if (count === 0 || count > MAX_OUTPUT_BATCH_CHUNKS)
|
|
346
|
-
throw new Error('invalid terminal live output record count');
|
|
347
|
-
const records = [];
|
|
348
|
-
let offset = 18;
|
|
349
|
-
let dataBytes = 0;
|
|
350
|
-
for (let index = 0; index < count; index += 1) {
|
|
351
|
-
if (value.payload.byteLength - offset < 20)
|
|
352
|
-
throw new Error('invalid terminal live output payload');
|
|
353
|
-
const size = view.getUint32(offset + 16, false);
|
|
354
|
-
if (size === 0 || size > value.payload.byteLength - offset - 20)
|
|
355
|
-
throw new Error('invalid terminal live output payload');
|
|
356
|
-
dataBytes += size;
|
|
357
|
-
if (dataBytes > MAX_OUTPUT_BATCH_BYTES)
|
|
358
|
-
throw new Error('terminal live output batch is too large');
|
|
359
|
-
const sequence = view.getBigUint64(offset, false);
|
|
360
|
-
assertPositiveUint64(sequence, 'sequence');
|
|
361
|
-
records.push({
|
|
362
|
-
sequence,
|
|
363
|
-
timestampMs: view.getBigUint64(offset + 8, false),
|
|
364
|
-
data: value.payload.slice(offset + 20, offset + 20 + size),
|
|
365
|
-
});
|
|
366
|
-
offset += 20 + size;
|
|
367
|
-
}
|
|
368
|
-
if (offset !== value.payload.byteLength)
|
|
369
|
-
throw new Error('invalid terminal live output payload');
|
|
370
|
-
return { geometryGeneration, cols, rows, records };
|
|
282
|
+
return { generation, presentationSequence, cols, rows };
|
|
371
283
|
};
|
|
372
284
|
export const decodeProtocolError = (value) => {
|
|
373
285
|
if (value.type !== TerminalLiveFrameType.Error)
|
|
@@ -382,5 +294,61 @@ export const decodeProtocolError = (value) => {
|
|
|
382
294
|
}
|
|
383
295
|
return { code, message: decodeUtf8(value.payload.subarray(4)) };
|
|
384
296
|
};
|
|
297
|
+
export const decodePresentation = (value) => {
|
|
298
|
+
if (value.type !== TerminalLiveFrameType.Presentation)
|
|
299
|
+
throw new Error('unexpected terminal live presentation frame');
|
|
300
|
+
if (value.payload.byteLength === 0 || value.payload.byteLength > MAX_FRAME_PAYLOAD_BYTES)
|
|
301
|
+
throw new Error('invalid terminal live presentation payload');
|
|
302
|
+
const wire = JSON.parse(decoder.decode(value.payload));
|
|
303
|
+
if (wire?.v !== 1 || !Array.isArray(wire.frame?.styles) || !Array.isArray(wire.frame?.rows))
|
|
304
|
+
throw new Error('invalid terminal live presentation wire');
|
|
305
|
+
const styles = wire.frame.styles.map((style) => {
|
|
306
|
+
if (!Array.isArray(style) || style.length !== 5)
|
|
307
|
+
throw new Error('invalid terminal live presentation style');
|
|
308
|
+
return { foreground: style[0], background: style[1], bold: style[2], italic: style[3], underline: style[4] };
|
|
309
|
+
});
|
|
310
|
+
const graphics = decodePresentationGraphics(wire.frame.graphics);
|
|
311
|
+
return {
|
|
312
|
+
sequence: wire.sequence, geometry: wire.geometry, state: wire.state,
|
|
313
|
+
frame: {
|
|
314
|
+
width: wire.frame.width, height: wire.frame.height, bufferKind: wire.frame.bufferKind, cursor: wire.frame.cursor, history: wire.frame.history, graphics,
|
|
315
|
+
rows: wire.frame.rows.map((row) => {
|
|
316
|
+
if (!Array.isArray(row))
|
|
317
|
+
throw new Error('invalid terminal live presentation row');
|
|
318
|
+
return { cells: row.map((cell) => {
|
|
319
|
+
if (!Array.isArray(cell) || cell.length !== 4 || !Number.isInteger(cell[2]) || !styles[cell[2]])
|
|
320
|
+
throw new Error('invalid terminal live presentation cell');
|
|
321
|
+
return { text: cell[0], width: cell[1], style: styles[cell[2]], ...(cell[3] ? { hyperlink: cell[3] } : {}) };
|
|
322
|
+
}) };
|
|
323
|
+
}),
|
|
324
|
+
},
|
|
325
|
+
};
|
|
326
|
+
};
|
|
327
|
+
function decodePresentationGraphics(value) {
|
|
328
|
+
if (typeof value !== 'object' || value === null)
|
|
329
|
+
throw new Error('invalid terminal live presentation graphics');
|
|
330
|
+
const graphics = value;
|
|
331
|
+
if (!Array.isArray(graphics.images) || !Array.isArray(graphics.placements))
|
|
332
|
+
throw new Error('invalid terminal live presentation graphics');
|
|
333
|
+
return {
|
|
334
|
+
generation: graphics.generation,
|
|
335
|
+
images: graphics.images.map((image) => ({ ...image, pixels: decodeBase64Bytes(image?.pixels) })),
|
|
336
|
+
placements: graphics.placements,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
function decodeBase64Bytes(value) {
|
|
340
|
+
if (typeof value !== 'string')
|
|
341
|
+
throw new Error('invalid terminal live presentation graphic pixels');
|
|
342
|
+
try {
|
|
343
|
+
if (typeof globalThis.atob === 'function') {
|
|
344
|
+
const decoded = globalThis.atob(value);
|
|
345
|
+
return Uint8Array.from(decoded, character => character.charCodeAt(0));
|
|
346
|
+
}
|
|
347
|
+
return Uint8Array.from(globalThis.Buffer.from(value, 'base64'));
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
throw new Error('invalid terminal live presentation graphic pixels');
|
|
351
|
+
}
|
|
352
|
+
}
|
|
385
353
|
export const decodeUtf8 = (value) => decoder.decode(value);
|
|
386
354
|
//# sourceMappingURL=codec.js.map
|