@wterm/core 0.5.0 → 0.5.2

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/dist/transport.js CHANGED
@@ -1,86 +1,244 @@
1
+ // Count before encoding so rejected pastes do not allocate another huge buffer.
2
+ function utf8Length(text, limit) {
3
+ let bytes = 0;
4
+ for (let i = 0; i < text.length && bytes <= limit; i++) {
5
+ const code = text.charCodeAt(i);
6
+ if (code < 0x80)
7
+ bytes++;
8
+ else if (code < 0x800)
9
+ bytes += 2;
10
+ else if (code >= 0xd800 &&
11
+ code <= 0xdbff &&
12
+ i + 1 < text.length &&
13
+ text.charCodeAt(i + 1) >= 0xdc00 &&
14
+ text.charCodeAt(i + 1) <= 0xdfff) {
15
+ bytes += 4;
16
+ i++;
17
+ }
18
+ else
19
+ bytes += 3; // Includes TextEncoder's replacement for lone surrogates.
20
+ }
21
+ return bytes;
22
+ }
1
23
  export class WebSocketTransport {
2
24
  constructor(options = {}) {
3
25
  this._ws = null;
26
+ this._connectionUrl = null;
4
27
  this._reconnectTimer = null;
28
+ this._drainTimer = null;
5
29
  this._reconnectDelay = 1000;
6
30
  this._closed = false;
7
31
  this._buffer = [];
32
+ this._queuedBytes = 0;
33
+ this._backpressured = false;
34
+ this._socketPaused = false;
8
35
  this.url = options.url ?? null;
36
+ this._connectionUrl = this.url;
9
37
  this.reconnect = options.reconnect !== false;
10
38
  this.maxReconnectDelay = options.maxReconnectDelay ?? 30000;
39
+ this.maxBufferedBytes = options.maxBufferedBytes ?? 1024 * 1024;
40
+ this.maxBufferedMessages = options.maxBufferedMessages ?? 1024;
41
+ this.highWaterMark =
42
+ options.highWaterMark ?? Math.min(64 * 1024, this.maxBufferedBytes);
43
+ this.lowWaterMark =
44
+ options.lowWaterMark ?? Math.floor(this.highWaterMark / 4);
45
+ if (!Number.isSafeInteger(this.maxBufferedBytes) ||
46
+ this.maxBufferedBytes <= 0 ||
47
+ !Number.isSafeInteger(this.maxBufferedMessages) ||
48
+ this.maxBufferedMessages <= 0 ||
49
+ !Number.isSafeInteger(this.highWaterMark) ||
50
+ this.highWaterMark <= 0 ||
51
+ this.highWaterMark > this.maxBufferedBytes ||
52
+ !Number.isSafeInteger(this.lowWaterMark) ||
53
+ this.lowWaterMark < 0 ||
54
+ this.lowWaterMark >= this.highWaterMark) {
55
+ throw new RangeError("Invalid WebSocket buffer limits");
56
+ }
11
57
  this.onData = options.onData ?? null;
12
58
  this.onOpen = options.onOpen ?? null;
13
59
  this.onClose = options.onClose ?? null;
14
60
  this.onError = options.onError ?? null;
61
+ this.onBackpressure = options.onBackpressure ?? null;
15
62
  }
16
63
  connect(url) {
17
- if (url)
18
- this.url = url;
19
- if (!this.url)
64
+ const target = url ?? this.url;
65
+ if (!target)
20
66
  throw new Error("No WebSocket URL provided");
67
+ const previous = this._ws;
68
+ if (!this._closed &&
69
+ target === this._connectionUrl &&
70
+ previous &&
71
+ (previous.readyState === WebSocket.CONNECTING ||
72
+ previous.readyState === WebSocket.OPEN))
73
+ return;
74
+ // Construct first: a malformed URL must not dispose a working connection.
75
+ const ws = new WebSocket(target);
76
+ const oldTarget = this._connectionUrl ?? this.url;
77
+ const changedUrl = oldTarget !== null && target !== oldTarget;
78
+ this._cancelTimers();
79
+ this._ws = ws;
21
80
  this._closed = false;
22
- this._ws = new WebSocket(this.url);
23
- this._ws.binaryType = "arraybuffer";
24
- this._ws.onopen = () => {
81
+ this._socketPaused = false;
82
+ this.url = target;
83
+ this._connectionUrl = target;
84
+ if (changedUrl)
85
+ this._clearBuffer();
86
+ if (previous) {
87
+ this._detach(previous);
88
+ previous.close();
89
+ }
90
+ ws.binaryType = "arraybuffer";
91
+ ws.onopen = () => {
92
+ if (this._ws !== ws || this._closed)
93
+ return;
25
94
  this._reconnectDelay = 1000;
26
95
  this._flushBuffer();
27
- if (this.onOpen)
28
- this.onOpen();
96
+ if (this._ws === ws && !this._closed)
97
+ this.onOpen?.();
29
98
  };
30
- this._ws.onmessage = (event) => {
31
- if (this.onData) {
32
- if (event.data instanceof ArrayBuffer) {
33
- this.onData(new Uint8Array(event.data));
34
- }
35
- else {
36
- this.onData(event.data);
37
- }
38
- }
99
+ ws.onmessage = (event) => {
100
+ if (this._ws !== ws || this._closed)
101
+ return;
102
+ this.onData?.(event.data instanceof ArrayBuffer
103
+ ? new Uint8Array(event.data)
104
+ : event.data);
39
105
  };
40
- this._ws.onclose = () => {
41
- if (this.onClose)
42
- this.onClose();
106
+ ws.onclose = () => {
107
+ if (this._ws !== ws)
108
+ return;
109
+ this._ws = null;
110
+ this._detach(ws);
111
+ this._cancelTimers();
112
+ this._socketPaused = false;
113
+ // Only bytes still owned by the transport survive a lost connection.
114
+ // Bytes handed to WebSocket.send have uncertain delivery and are never replayed.
43
115
  if (this.reconnect && !this._closed)
44
116
  this._scheduleReconnect();
117
+ try {
118
+ this._updatePressure();
119
+ }
120
+ finally {
121
+ this.onClose?.();
122
+ }
45
123
  };
46
- this._ws.onerror = (event) => {
47
- if (this.onError)
48
- this.onError(event);
49
- this._ws?.close();
124
+ ws.onerror = (event) => {
125
+ if (this._ws !== ws || this._closed)
126
+ return;
127
+ try {
128
+ this.onError?.(event);
129
+ }
130
+ finally {
131
+ if (this._ws === ws)
132
+ ws.close();
133
+ }
50
134
  };
135
+ this._updatePressure();
51
136
  }
137
+ /** Accept the complete message or throw; never enqueue a partial paste. */
52
138
  send(data) {
53
- if (this._ws && this._ws.readyState === WebSocket.OPEN) {
54
- if (typeof data === "string") {
55
- this._ws.send(new TextEncoder().encode(data));
56
- }
57
- else {
58
- this._ws.send(data);
59
- }
60
- }
61
- else {
62
- this._buffer.push(data);
139
+ if (this._closed)
140
+ throw new Error("WebSocket transport is closed");
141
+ const available = this.maxBufferedBytes - this.bufferedAmount;
142
+ const bytes = typeof data === "string" ? utf8Length(data, available) : data.byteLength;
143
+ if (bytes > available || this._buffer.length >= this.maxBufferedMessages) {
144
+ throw new RangeError("WebSocket send buffer limit exceeded");
63
145
  }
146
+ // Copy views, including Buffer/subarray inputs, so caller mutations cannot
147
+ // change a pending command or keep an oversized backing buffer alive.
148
+ const item = typeof data === "string"
149
+ ? new TextEncoder().encode(data)
150
+ : new Uint8Array(data);
151
+ this._buffer.push(item);
152
+ this._queuedBytes += item.byteLength;
153
+ this._flushBuffer();
64
154
  }
65
155
  close() {
66
156
  this._closed = true;
67
- if (this._reconnectTimer)
68
- clearTimeout(this._reconnectTimer);
69
- if (this._ws)
70
- this._ws.close();
157
+ this._cancelTimers();
158
+ this._clearBuffer();
159
+ this._socketPaused = false;
160
+ try {
161
+ this._ws?.close();
162
+ }
163
+ finally {
164
+ this._updatePressure();
165
+ }
71
166
  }
72
167
  get connected() {
73
- return this._ws !== null && this._ws.readyState === WebSocket.OPEN;
168
+ return !this._closed && this._ws?.readyState === WebSocket.OPEN;
169
+ }
170
+ /** Bytes still queued here plus bytes buffered by the current open socket. */
171
+ get bufferedAmount() {
172
+ return this._queuedBytes + (this.connected ? this._ws.bufferedAmount : 0);
173
+ }
174
+ get queuedBytes() {
175
+ return this._queuedBytes;
176
+ }
177
+ get queuedMessages() {
178
+ return this._buffer.length;
179
+ }
180
+ get backpressured() {
181
+ return this._backpressured;
74
182
  }
75
183
  _flushBuffer() {
76
- const items = this._buffer.splice(0);
77
- for (const item of items) {
78
- this.send(item);
184
+ const ws = this._ws;
185
+ if (ws && this.connected) {
186
+ if (this._socketPaused && ws.bufferedAmount <= this.lowWaterMark)
187
+ this._socketPaused = false;
188
+ // Bound per-turn message work as well as bytes. Preserve message boundaries.
189
+ for (let sent = 0; !this._socketPaused && this._buffer.length && sent < 64; sent++) {
190
+ const item = this._buffer[0];
191
+ if (ws.bufferedAmount > 0 &&
192
+ ws.bufferedAmount + item.byteLength > this.highWaterMark) {
193
+ this._socketPaused = true;
194
+ break;
195
+ }
196
+ ws.send(item);
197
+ this._buffer.shift();
198
+ this._queuedBytes -= item.byteLength;
199
+ if (ws.bufferedAmount >= this.highWaterMark)
200
+ this._socketPaused = true;
201
+ }
202
+ if ((this._buffer.length || ws.bufferedAmount) &&
203
+ this._drainTimer === null) {
204
+ this._drainTimer = setTimeout(() => {
205
+ this._drainTimer = null;
206
+ this._flushBuffer();
207
+ }, 16);
208
+ }
79
209
  }
210
+ this._updatePressure();
211
+ }
212
+ _updatePressure() {
213
+ const bytes = this.bufferedAmount;
214
+ const full = this._buffer.length >= this.maxBufferedMessages;
215
+ const next = this._backpressured
216
+ ? bytes > this.lowWaterMark || full
217
+ : bytes >= this.highWaterMark || full;
218
+ if (next === this._backpressured)
219
+ return;
220
+ this._backpressured = next;
221
+ this.onBackpressure?.(next);
222
+ }
223
+ _clearBuffer() {
224
+ this._buffer = [];
225
+ this._queuedBytes = 0;
226
+ }
227
+ _cancelTimers() {
228
+ if (this._reconnectTimer !== null)
229
+ clearTimeout(this._reconnectTimer);
230
+ if (this._drainTimer !== null)
231
+ clearTimeout(this._drainTimer);
232
+ this._reconnectTimer = this._drainTimer = null;
233
+ }
234
+ _detach(ws) {
235
+ ws.onopen = ws.onmessage = ws.onclose = ws.onerror = null;
80
236
  }
81
237
  _scheduleReconnect() {
82
238
  this._reconnectTimer = setTimeout(() => {
83
- this.connect();
239
+ this._reconnectTimer = null;
240
+ if (!this._closed && this.reconnect)
241
+ this.connect();
84
242
  }, this._reconnectDelay);
85
243
  this._reconnectDelay = Math.min(this._reconnectDelay * 2, this.maxReconnectDelay);
86
244
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CellData, CursorState, TerminalResourceState, UnhandledSequence, TerminalCore } from "./terminal-core.js";
1
+ import type { CellData, CursorState, MouseEncoding, TerminalResourceState, UnhandledSequence, TerminalCore } from "./terminal-core.js";
2
2
  export declare class WasmBridge implements TerminalCore {
3
3
  private exports;
4
4
  private memory;
@@ -6,7 +6,7 @@ export declare class WasmBridge implements TerminalCore {
6
6
  private dirtyPtr;
7
7
  private writeBufferPtr;
8
8
  private cellSize;
9
- private maxCols;
9
+ private gridStride;
10
10
  private encoder;
11
11
  private decoder;
12
12
  private _dv;
@@ -28,13 +28,15 @@ export declare class WasmBridge implements TerminalCore {
28
28
  cursorKeysApp(): boolean;
29
29
  bracketedPaste(): boolean;
30
30
  usingAltScreen(): boolean;
31
- mouseTracking(): 0 | 1000 | 1002;
31
+ mouseTracking(): 0 | 1000 | 1002 | 1003;
32
32
  mouseSgr(): boolean;
33
+ mouseEncoding(): MouseEncoding | null;
33
34
  focusEvents(): boolean;
34
35
  synchronizedOutput(): boolean;
35
36
  synchronizedOutputGeneration(): number;
36
37
  kittyKeyboardFlags(): number;
37
38
  getTitle(): string | null;
39
+ getBellCount(): number;
38
40
  getResponse(): string | null;
39
41
  getResourceState(): TerminalResourceState;
40
42
  getScrollbackCount(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-bridge.d.ts","sourceRoot":"","sources":["../src/wasm-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACb,MAAM,oBAAoB,CAAC;AA2D5B,qBAAa,UAAW,YAAW,YAAY;IAC7C,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,OAAO,CAAO;IACtB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAGb;IAEJ,OAAO,KAAK,EAAE,GAMb;gBAEW,QAAQ,EAAE,WAAW,CAAC,QAAQ;WAK7B,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiBpD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMtC,OAAO,CAAC,eAAe;IAQvB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAKvD,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAYzD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ;IAc3C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,WAAW;IAQxB,OAAO,IAAI,MAAM;IAGjB,OAAO,IAAI,MAAM;IAIjB,aAAa,IAAI,OAAO;IAGxB,cAAc,IAAI,OAAO;IAGzB,cAAc,IAAI,OAAO;IAGzB,aAAa,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAIhC,QAAQ,IAAI,OAAO;IAGnB,WAAW,IAAI,OAAO;IAGtB,kBAAkB,IAAI,OAAO;IAG7B,4BAA4B,IAAI,MAAM;IAGtC,kBAAkB,IAAI,MAAM;IAI5B,QAAQ,IAAI,MAAM,GAAG,IAAI;IAQzB,WAAW,IAAI,MAAM,GAAG,IAAI;IAU5B,gBAAgB,IAAI,qBAAqB;IAqBzC,kBAAkB,IAAI,MAAM;IAI5B,2BAA2B,IAAI,MAAM;IAIrC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ;IAexD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5C,qBAAqB,IAAI,iBAAiB,EAAE;IA+B5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxC,OAAO,CAAC,SAAS;CAmClB"}
1
+ {"version":3,"file":"wasm-bridge.d.ts","sourceRoot":"","sources":["../src/wasm-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACb,MAAM,oBAAoB,CAAC;AA+D5B,qBAAa,UAAW,YAAW,YAAY;IAC7C,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAGb;IAEJ,OAAO,KAAK,EAAE,GAMb;IAED,YAAY,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAGzC;IAED,OAAa,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAenD;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrC;IAED,OAAO,CAAC,eAAe;IAQvB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAGtD;IAED,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAYxD;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAY1C;IAED,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAK/B;IAED,UAAU,IAAI,IAAI,CAEjB;IAED,SAAS,IAAI,WAAW,CASvB;IAED,OAAO,IAAI,MAAM,CAEhB;IACD,OAAO,IAAI,MAAM,CAEhB;IAED,aAAa,IAAI,OAAO,CAEvB;IACD,cAAc,IAAI,OAAO,CAExB;IACD,cAAc,IAAI,OAAO,CAExB;IACD,aAAa,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAGtC;IACD,QAAQ,IAAI,OAAO,CAElB;IACD,aAAa,IAAI,aAAa,GAAG,IAAI,CAkBpC;IACD,WAAW,IAAI,OAAO,CAErB;IACD,kBAAkB,IAAI,OAAO,CAE5B;IACD,4BAA4B,IAAI,MAAM,CAErC;IACD,kBAAkB,IAAI,MAAM,CAE3B;IAED,QAAQ,IAAI,MAAM,GAAG,IAAI,CAMxB;IAED,YAAY,IAAI,MAAM,CAErB;IAED,WAAW,IAAI,MAAM,GAAG,IAAI,CAQ3B;IAED,gBAAgB,IAAI,qBAAqB,CAmBxC;IAED,kBAAkB,IAAI,MAAM,CAE3B;IAED,2BAA2B,IAAI,MAAM,CAEpC;IAED,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAavD;IAED,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3C;IAED,qBAAqB,IAAI,iBAAiB,EAAE,CA6B3C;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGvC;IAED,OAAO,CAAC,SAAS;CAmClB"}
@@ -19,7 +19,7 @@ export class WasmBridge {
19
19
  this.dirtyPtr = 0;
20
20
  this.writeBufferPtr = 0;
21
21
  this.cellSize = 12;
22
- this.maxCols = 256;
22
+ this.gridStride = 0;
23
23
  this.encoder = new TextEncoder();
24
24
  this.decoder = new TextDecoder();
25
25
  this._dvBuffer = null;
@@ -52,7 +52,7 @@ export class WasmBridge {
52
52
  this.dirtyPtr = this.exports.getDirtyPtr();
53
53
  this.writeBufferPtr = this.exports.getWriteBuffer();
54
54
  this.cellSize = this.exports.getCellSize();
55
- this.maxCols = this.exports.getMaxCols();
55
+ this.gridStride = this.exports.getGridStride();
56
56
  }
57
57
  writeString(str, afterChunk) {
58
58
  const encoded = this.encoder.encode(str);
@@ -65,12 +65,14 @@ export class WasmBridge {
65
65
  const buf = new Uint8Array(this.memory.buffer, this.writeBufferPtr, 8192);
66
66
  buf.set(data.subarray(offset, offset + chunk));
67
67
  this.exports.writeBytes(chunk);
68
+ // Escape sequences can swap the active screen and its backing storage.
69
+ this._updatePointers();
68
70
  offset += chunk;
69
71
  afterChunk?.();
70
72
  }
71
73
  }
72
74
  getCell(row, col) {
73
- const offset = this.gridPtr + (row * this.maxCols + col) * this.cellSize;
75
+ const offset = this.gridPtr + (row * this.gridStride + col) * this.cellSize;
74
76
  const dv = this.dv;
75
77
  const result = {
76
78
  char: dv.getUint32(offset, true),
@@ -83,16 +85,20 @@ export class WasmBridge {
83
85
  return result;
84
86
  }
85
87
  isDirtyRow(row) {
86
- return new Uint8Array(this.memory.buffer, this.dirtyPtr, 256)[row] !== 0;
88
+ return (new Uint8Array(this.memory.buffer, this.dirtyPtr, this.getRows())[row] !==
89
+ 0);
87
90
  }
88
91
  clearDirty() {
89
92
  this.exports.clearDirty();
90
93
  }
91
94
  getCursor() {
95
+ const shape = this.exports.getCursorShape?.() ?? 0;
92
96
  return {
93
97
  row: this.exports.getCursorRow(),
94
98
  col: this.exports.getCursorCol(),
95
99
  visible: this.exports.getCursorVisible() !== 0,
100
+ shape: shape === 1 ? "underline" : shape === 2 ? "bar" : "block",
101
+ blinking: (this.exports.getCursorBlinking?.() ?? 0) !== 0,
96
102
  };
97
103
  }
98
104
  getCols() {
@@ -112,11 +118,30 @@ export class WasmBridge {
112
118
  }
113
119
  mouseTracking() {
114
120
  const mode = this.exports.getMouseTracking();
115
- return mode === 1000 || mode === 1002 ? mode : 0;
121
+ return mode === 1000 || mode === 1002 || mode === 1003 ? mode : 0;
116
122
  }
117
123
  mouseSgr() {
118
124
  return this.exports.getMouseSgr() !== 0;
119
125
  }
126
+ mouseEncoding() {
127
+ const mode = this.exports.getMouseEncoding?.();
128
+ switch (mode) {
129
+ case 0:
130
+ return "x10";
131
+ case 1:
132
+ return "utf8";
133
+ case 2:
134
+ return "sgr";
135
+ case 3:
136
+ return "urxvt";
137
+ case 4:
138
+ return "sgr-pixels";
139
+ case undefined:
140
+ return this.mouseSgr() ? "sgr" : "x10";
141
+ default:
142
+ return null;
143
+ }
144
+ }
120
145
  focusEvents() {
121
146
  return this.exports.getFocusEvents() !== 0;
122
147
  }
@@ -137,6 +162,9 @@ export class WasmBridge {
137
162
  const bytes = new Uint8Array(this.memory.buffer, ptr, len);
138
163
  return this.decoder.decode(bytes);
139
164
  }
165
+ getBellCount() {
166
+ return this.exports.getBellCount?.() ?? 0;
167
+ }
140
168
  getResponse() {
141
169
  const len = this.exports.getResponseLen();
142
170
  if (len === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-bridge.js","sourceRoot":"","sources":["../src/wasm-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wasm-bridge.js","sourceRoot":"","sources":["../src/wasm-bridge.ts"],"names":[],"mappings":"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"}