@airterm/protocol 0.2.0 → 0.3.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 (42) hide show
  1. package/README.md +23 -11
  2. package/dist/direct-negotiation.d.ts +40 -0
  3. package/dist/direct-negotiation.d.ts.map +1 -0
  4. package/dist/direct-negotiation.js +169 -0
  5. package/dist/direct-negotiation.js.map +1 -0
  6. package/dist/framing.d.ts +4 -1
  7. package/dist/framing.d.ts.map +1 -1
  8. package/dist/framing.js +3 -0
  9. package/dist/framing.js.map +1 -1
  10. package/dist/index.d.ts +7 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/messages.d.ts +1 -1
  15. package/dist/messages.d.ts.map +1 -1
  16. package/dist/messages.js +11 -6
  17. package/dist/messages.js.map +1 -1
  18. package/dist/outbound-queue.d.ts +16 -0
  19. package/dist/outbound-queue.d.ts.map +1 -0
  20. package/dist/outbound-queue.js +139 -0
  21. package/dist/outbound-queue.js.map +1 -0
  22. package/dist/p2p.d.ts +37 -0
  23. package/dist/p2p.d.ts.map +1 -0
  24. package/dist/p2p.js +91 -0
  25. package/dist/p2p.js.map +1 -0
  26. package/dist/peer-transport.d.ts +31 -0
  27. package/dist/peer-transport.d.ts.map +1 -0
  28. package/dist/peer-transport.js +155 -0
  29. package/dist/peer-transport.js.map +1 -0
  30. package/dist/transport-handoff.d.ts +25 -0
  31. package/dist/transport-handoff.d.ts.map +1 -0
  32. package/dist/transport-handoff.js +207 -0
  33. package/dist/transport-handoff.js.map +1 -0
  34. package/dist/transport.d.ts +38 -0
  35. package/dist/transport.d.ts.map +1 -0
  36. package/dist/transport.js +85 -0
  37. package/dist/transport.js.map +1 -0
  38. package/dist/webrtc-transport.d.ts +14 -0
  39. package/dist/webrtc-transport.d.ts.map +1 -0
  40. package/dist/webrtc-transport.js +106 -0
  41. package/dist/webrtc-transport.js.map +1 -0
  42. package/package.json +1 -1
package/README.md CHANGED
@@ -24,14 +24,26 @@ import { deriveCapabilityKeys, NoiseTransport } from '@airterm/protocol';
24
24
  Requires Node.js 22.12 or newer for Node-based consumers. Browser consumers need
25
25
  Web Crypto and WebAssembly support.
26
26
 
27
- ## Development and publishing
28
-
29
- Run `npm run check` and `npm run test:package` from the repository root. Packing
30
- this package builds fresh JavaScript and declarations and checks the browser
31
- bundle. The package test installs the protocol and CLI tarballs together outside
32
- the workspace so local workspace links cannot hide missing package files.
33
-
34
- Publish this package before the CLI that depends on its exact version. Verify
35
- that version is publicly available with `npm view @airterm/protocol@<version>`
36
- before publishing the CLI. Run the dependency audit and scan Git history for
37
- secrets before making a release public.
27
+ ## Direct transport extension
28
+
29
+ Protocol v1 framing is unchanged. `SessionDescription` advertises `p2p-v1`;
30
+ peers must explicitly accept it before using inner types 21 (`P2PControl`),
31
+ 22 (`OutputAck`), and 23 (`RecoveryComplete`). Older peers remain on relay.
32
+ Acceptance can enable byte-offset recovery without attempting WebRTC.
33
+
34
+ `EncryptedConnection` owns each path's Noise state and bounded outbound queue.
35
+ Relay and direct paths have independent handshakes. Direct handshake binding
36
+ includes the session ID, relay pairing ID, and random negotiation ID. Signaling
37
+ and handoff coordination travel inside relay encryption. The gateway requires
38
+ no SDP/ICE parsing or protocol changes. Exactly one path carries application
39
+ data; acknowledgement and lifecycle coordination may still use relay.
40
+
41
+ SDP is limited to 32 KiB, candidates to 2 KiB each and 64 per peer, and signaling
42
+ to 256 KiB per peer. Direct frames are encrypted once, then fragmented into
43
+ messages no larger than 16 KiB. Receivers assemble one bounded frame at a time.
44
+ Negotiation has a ten-second deadline, transfer draining thirty seconds, and
45
+ handoff two seconds. Ambiguous handoffs require a fresh relay pairing.
46
+
47
+ Output acknowledgements refer to contiguous PTY byte offsets consumed by the
48
+ terminal renderer, not merely received by the socket. Never acknowledge across
49
+ a gap, reuse a cipher after failure, or replay uncertain terminal input.
@@ -0,0 +1,40 @@
1
+ import { EncryptedConnection, type BinaryTransport } from './transport.js';
2
+ import type { InnerFrame } from './framing.js';
3
+ export interface RtcAdapter extends BinaryTransport {
4
+ offer(sdp: string): Promise<void>;
5
+ answer?(sdp: string): Promise<void>;
6
+ candidate(candidate: string, mid: string): Promise<void>;
7
+ start?(): Promise<void>;
8
+ }
9
+ export interface RtcAdapterEvents {
10
+ onOpen: () => void;
11
+ onData: (bytes: Uint8Array) => void;
12
+ onDescription: (sdp: string) => void;
13
+ onCandidate: (candidate: string, mid: string) => void;
14
+ onFailure: (error: Error) => void;
15
+ }
16
+ export type RtcAdapterFactory = (stun: string[], events: RtcAdapterEvents) => RtcAdapter;
17
+ export declare class DirectNegotiation {
18
+ #private;
19
+ readonly id: string;
20
+ private readonly initiator;
21
+ private readonly identity;
22
+ private readonly factory;
23
+ private readonly events;
24
+ constructor(id: string, initiator: boolean, identity: {
25
+ sessionId: string;
26
+ psk: Uint8Array;
27
+ pairing: string;
28
+ }, factory: RtcAdapterFactory, events: {
29
+ signal: (frame: InnerFrame) => Promise<void>;
30
+ ready: (connection: EncryptedConnection) => void;
31
+ frame: (frame: InnerFrame) => void;
32
+ pressure: (paused: boolean) => void;
33
+ failed: (error: Error) => void;
34
+ });
35
+ start(stun: string[], timeoutMs?: number): void;
36
+ receive(payload: Uint8Array): void;
37
+ close(): void;
38
+ fail(error: Error): void;
39
+ }
40
+ //# sourceMappingURL=direct-negotiation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-negotiation.d.ts","sourceRoot":"","sources":["../src/direct-negotiation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAQ3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,UAAW,SAAQ,eAAe;IAC/C,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AACD,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrC;AACD,MAAM,MAAM,iBAAiB,GAAG,CAC5B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,gBAAgB,KACvB,UAAU,CAAC;AAEhB,qBAAa,iBAAiB;;IAatB,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAKzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBARd,EAAE,EAAE,MAAM,EACF,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,UAAU,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACnB,EACgB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE;QACrB,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,EAAE,CAAC,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;QACjD,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;QACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC;IAEE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,SAAQ,GAAG,IAAI;IA0E9C,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAgDlC,KAAK,IAAI,IAAI;IAUb,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAmBlC"}
@@ -0,0 +1,169 @@
1
+ import { EncryptedConnection } from './transport.js';
2
+ import { WebRTCTransport } from './webrtc-transport.js';
3
+ import { directConnectionId, p2pFrame, SignalingBudget, } from './p2p.js';
4
+ export class DirectNegotiation {
5
+ id;
6
+ initiator;
7
+ identity;
8
+ factory;
9
+ events;
10
+ #adapter;
11
+ #transport;
12
+ #connection;
13
+ #timer;
14
+ #closed = false;
15
+ #remoteDescription = false;
16
+ #descriptionPending = false;
17
+ #localDescription = false;
18
+ #candidates = [];
19
+ #incoming = new SignalingBudget();
20
+ #outgoing = new SignalingBudget();
21
+ constructor(id, initiator, identity, factory, events) {
22
+ this.id = id;
23
+ this.initiator = initiator;
24
+ this.identity = identity;
25
+ this.factory = factory;
26
+ this.events = events;
27
+ }
28
+ start(stun, timeoutMs = 10000) {
29
+ if (this.#adapter || this.#closed)
30
+ return;
31
+ this.#timer = setTimeout(() => this.fail(new Error('Direct negotiation timed out.')), timeoutMs);
32
+ try {
33
+ this.#adapter = this.factory(stun, {
34
+ onOpen: () => {
35
+ if (this.#closed || !this.#adapter)
36
+ return;
37
+ this.#transport = new WebRTCTransport(this.#adapter, (bytes) => this.#connection?.receive(bytes), (error) => this.fail(error));
38
+ this.#connection = new EncryptedConnection(this.#transport, {
39
+ initiator: this.initiator,
40
+ psk: this.identity.psk,
41
+ sessionId: this.identity.sessionId,
42
+ connectionId: directConnectionId(this.identity.pairing, this.id),
43
+ }, {
44
+ onSecure: () => {
45
+ clearTimeout(this.#timer);
46
+ this.#timer = undefined;
47
+ this.events.ready(this.#connection);
48
+ },
49
+ onFrame: (frame) => this.events.frame(frame),
50
+ onBackpressure: (paused) => this.events.pressure(paused),
51
+ onFailure: (error) => this.fail(error),
52
+ });
53
+ this.#connection.start();
54
+ },
55
+ onData: (bytes) => this.#transport?.receive(bytes),
56
+ onDescription: (sdp) => {
57
+ if (this.#localDescription) {
58
+ this.fail(new Error('Unexpected renegotiation.'));
59
+ return;
60
+ }
61
+ this.#localDescription = true;
62
+ this.#signal({
63
+ type: this.initiator ? 'offer' : 'answer',
64
+ id: this.id,
65
+ sdp,
66
+ });
67
+ },
68
+ onCandidate: (candidate, mid) => {
69
+ const normalized = candidate.replace(/^a=/, '').trim();
70
+ if (normalized)
71
+ this.#signal({
72
+ type: 'candidate',
73
+ id: this.id,
74
+ candidate: normalized,
75
+ mid,
76
+ });
77
+ },
78
+ onFailure: (error) => this.fail(error),
79
+ });
80
+ void this.#adapter.start?.().catch((error) => this.fail(error));
81
+ }
82
+ catch (error) {
83
+ this.fail(error instanceof Error
84
+ ? error
85
+ : new Error('Direct negotiation failed.'));
86
+ }
87
+ }
88
+ receive(payload) {
89
+ if (this.#closed)
90
+ return;
91
+ try {
92
+ const message = this.#incoming.consume(payload);
93
+ if (message.id !== this.id)
94
+ throw new Error('Stale direct negotiation.');
95
+ if (message.type === 'offer' || message.type === 'answer') {
96
+ if (this.#remoteDescription ||
97
+ this.#descriptionPending ||
98
+ (message.type === 'offer') === this.initiator ||
99
+ !this.#adapter)
100
+ throw new Error('Unexpected SDP.');
101
+ this.#descriptionPending = true;
102
+ const applied = message.type === 'offer'
103
+ ? this.#adapter.offer(message.sdp)
104
+ : this.#adapter.answer?.(message.sdp);
105
+ if (!applied)
106
+ throw new Error('Unsupported SDP role.');
107
+ void applied
108
+ .then(async () => {
109
+ if (this.#closed)
110
+ return;
111
+ this.#remoteDescription = true;
112
+ for (const candidate of this.#candidates.splice(0)) {
113
+ if (this.#closed)
114
+ return;
115
+ await this.#adapter?.candidate(candidate.candidate, candidate.mid);
116
+ }
117
+ })
118
+ .catch((error) => this.fail(error));
119
+ }
120
+ else if (message.type === 'candidate') {
121
+ if (!this.#remoteDescription)
122
+ this.#candidates.push(message);
123
+ else
124
+ void this.#adapter
125
+ ?.candidate(message.candidate, message.mid)
126
+ .catch((error) => this.fail(error));
127
+ }
128
+ else
129
+ throw new Error('Unexpected signaling message.');
130
+ }
131
+ catch (error) {
132
+ this.fail(error instanceof Error
133
+ ? error
134
+ : new Error('Invalid direct signaling.'));
135
+ }
136
+ }
137
+ close() {
138
+ if (this.#closed)
139
+ return;
140
+ this.#closed = true;
141
+ clearTimeout(this.#timer);
142
+ this.#timer = undefined;
143
+ this.#connection?.close();
144
+ this.#transport?.close();
145
+ this.#adapter?.close();
146
+ this.#candidates = [];
147
+ }
148
+ fail(error) {
149
+ if (this.#closed)
150
+ return;
151
+ this.close();
152
+ this.events.failed(error);
153
+ }
154
+ #signal(message) {
155
+ if (this.#closed)
156
+ return;
157
+ try {
158
+ const frame = p2pFrame(message);
159
+ this.#outgoing.consume(frame.payload);
160
+ void this.events.signal(frame).catch((error) => this.fail(error));
161
+ }
162
+ catch (error) {
163
+ this.fail(error instanceof Error
164
+ ? error
165
+ : new Error('Invalid local signaling.'));
166
+ }
167
+ }
168
+ }
169
+ //# sourceMappingURL=direct-negotiation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-negotiation.js","sourceRoot":"","sources":["../src/direct-negotiation.ts"],"names":[],"mappings":"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"}
package/dist/framing.d.ts CHANGED
@@ -24,7 +24,10 @@ export declare enum InnerFrameType {
24
24
  TransferAck = 17,
25
25
  TransferComplete = 18,
26
26
  TransferResult = 19,
27
- TransferCancel = 20
27
+ TransferCancel = 20,
28
+ P2PControl = 21,
29
+ OutputAck = 22,
30
+ RecoveryComplete = 23
28
31
  }
29
32
  export interface OuterFrame {
30
33
  version: number;
@@ -1 +1 @@
1
- {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,oBAAY,cAAc;IACtB,cAAc,IAAI;IAClB,kBAAkB,IAAI;CACzB;AAED,oBAAY,cAAc;IACtB,kBAAkB,IAAI;IACtB,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,aAAa,KAAK;IAClB,eAAe,KAAK;IACpB,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,gBAAgB,KAAK;IACrB,cAAc,KAAK;IACnB,cAAc,KAAK;CACtB;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,MAAyB,GACnC,UAAU,CAKZ;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,MAAyB,GACnC,UAAU,CAUZ;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAqB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAgB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAgB9D"}
1
+ {"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,oBAAY,cAAc;IACtB,cAAc,IAAI;IAClB,kBAAkB,IAAI;CACzB;AAED,oBAAY,cAAc;IACtB,kBAAkB,IAAI;IACtB,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,aAAa,KAAK;IAClB,eAAe,KAAK;IACpB,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,gBAAgB,KAAK;IACrB,cAAc,KAAK;IACnB,cAAc,KAAK;IACnB,UAAU,KAAK;IACf,SAAS,KAAK;IACd,gBAAgB,KAAK;CACxB;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,MAAyB,GACnC,UAAU,CAKZ;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,MAAyB,GACnC,UAAU,CAYZ;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAuB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAoB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAgB9D"}
package/dist/framing.js CHANGED
@@ -28,6 +28,9 @@ export var InnerFrameType;
28
28
  InnerFrameType[InnerFrameType["TransferComplete"] = 18] = "TransferComplete";
29
29
  InnerFrameType[InnerFrameType["TransferResult"] = 19] = "TransferResult";
30
30
  InnerFrameType[InnerFrameType["TransferCancel"] = 20] = "TransferCancel";
31
+ InnerFrameType[InnerFrameType["P2PControl"] = 21] = "P2PControl";
32
+ InnerFrameType[InnerFrameType["OutputAck"] = 22] = "OutputAck";
33
+ InnerFrameType[InnerFrameType["RecoveryComplete"] = 23] = "RecoveryComplete";
31
34
  })(InnerFrameType || (InnerFrameType = {}));
32
35
  export function outerAssociatedData(kind, version = PROTOCOL_VERSION) {
33
36
  assertUint8(version, 'Protocol version');
@@ -1 +1 @@
1
- {"version":3,"file":"framing.js","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framing.js","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,4 +9,11 @@ export { decodeTransferCancel, decodeTransferChunk, decodeTransferControl, decod
9
9
  export type { TransferCancelMessage, TransferChunkPayload, TransferControlMessage, TransferDirection, TransferOfferMessage, TransferPurpose, TransferRequestMessage, TransferResultMessage, } from './transfers.js';
10
10
  export { createCapabilityUrl, decodeBase64Url, deriveCapabilityKeys, encodeBase64Url, generateCapabilityMaterial, normalizeServerUrl, parseCapabilityUrl, ROOT_SECRET_LENGTH, SESSION_ID_LENGTH, } from './capability.js';
11
11
  export type { CapabilityKeys, CapabilityMaterial, ParsedCapability, } from './capability.js';
12
+ export * from './transport.js';
13
+ export * from './outbound-queue.js';
14
+ export * from './p2p.js';
15
+ export * from './webrtc-transport.js';
16
+ export * from './direct-negotiation.js';
17
+ export * from './transport-handoff.js';
18
+ export * from './peer-transport.js';
12
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAC3C,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EACH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GAC3B,MAAM,eAAe,CAAC;AACvB,YAAY,EACR,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACR,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACR,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAC3C,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EACH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GAC3B,MAAM,eAAe,CAAC;AACvB,YAAY,EACR,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACR,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACR,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -4,4 +4,11 @@ export { createNoisePrologue, MAX_TRANSPORT_FRAMES, NOISE_PROTOCOL_NAME, NoiseTr
4
4
  export { decodeProtocolError, decodePtyExit, decodePtyResize, decodeReplayStart, decodeSessionDescription, encodeProtocolError, encodePtyExit, encodePtyResize, encodeReplayStart, encodeSessionDescription, } from './messages.js';
5
5
  export { decodeTransferCancel, decodeTransferChunk, decodeTransferControl, decodeTransferOffer, decodeTransferRequest, decodeTransferResult, encodeTransferCancel, encodeTransferChunk, encodeTransferControl, encodeTransferOffer, encodeTransferRequest, encodeTransferResult, generateTransferId, hasTransferTimedOut, TRANSFER_CHUNK_BYTES, TRANSFER_IDLE_TIMEOUT_MS, TRANSFER_ID_BYTES, TRANSFER_WINDOW_BYTES, TransferReceiverState, TransferSenderState, } from './transfers.js';
6
6
  export { createCapabilityUrl, decodeBase64Url, deriveCapabilityKeys, encodeBase64Url, generateCapabilityMaterial, normalizeServerUrl, parseCapabilityUrl, ROOT_SECRET_LENGTH, SESSION_ID_LENGTH, } from './capability.js';
7
+ export * from './transport.js';
8
+ export * from './outbound-queue.js';
9
+ export * from './p2p.js';
10
+ export * from './webrtc-transport.js';
11
+ export * from './direct-negotiation.js';
12
+ export * from './transport-handoff.js';
13
+ export * from './peer-transport.js';
7
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAC3C,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GAC3B,MAAM,eAAe,CAAC;AAYvB,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAC3C,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GAC3B,MAAM,eAAe,CAAC;AAYvB,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AAOzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export type SessionMode = 'shell' | 'command';
2
- export type SessionFeature = 'stream-transfer-v1' | 'terminal-font-v1' | 'image-paste-v1';
2
+ export type SessionFeature = 'stream-transfer-v1' | 'terminal-font-v1' | 'image-paste-v1' | 'p2p-v1';
3
3
  export type TerminalFontFormat = 'ttf' | 'otf' | 'woff' | 'woff2';
4
4
  export interface TerminalFontDescription {
5
5
  assetId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAC9C,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,CAAC;AAEvB,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,kBAAkB,GAAG,UAAU,CAuBpF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAuBhF;AAkDD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAWzE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CActF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAKjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAejE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,CAMzE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAgBzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAQ7E"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAC9C,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,QAAQ,CAAC;AAEf,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CACpC,WAAW,EAAE,kBAAkB,GAChC,UAAU,CAuBZ;AAED,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,UAAU,GACpB,kBAAkB,CAwBpB;AA4DD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAWzE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB,CAkBA;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAKjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAiBjE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,CAMzE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAgBzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAQ7E"}
package/dist/messages.js CHANGED
@@ -30,9 +30,7 @@ export function decodeSessionDescription(payload) {
30
30
  throw new Error('Invalid session description payload.');
31
31
  }
32
32
  const features = decodeSessionFeatures(value.features);
33
- const font = value.font === undefined
34
- ? undefined
35
- : decodeTerminalFont(value.font);
33
+ const font = value.font === undefined ? undefined : decodeTerminalFont(value.font);
36
34
  return {
37
35
  mode: value.mode,
38
36
  maxTabs: value.max_tabs,
@@ -45,13 +43,15 @@ function decodeSessionFeatures(value) {
45
43
  if (value === undefined) {
46
44
  return [];
47
45
  }
48
- if (!Array.isArray(value) || value.some((feature) => typeof feature !== 'string')) {
46
+ if (!Array.isArray(value) ||
47
+ value.some((feature) => typeof feature !== 'string')) {
49
48
  throw new Error('Invalid session features payload.');
50
49
  }
51
50
  const supported = new Set([
52
51
  'stream-transfer-v1',
53
52
  'terminal-font-v1',
54
53
  'image-paste-v1',
54
+ 'p2p-v1',
55
55
  ]);
56
56
  return value.filter((feature) => supported.has(feature));
57
57
  }
@@ -76,7 +76,10 @@ function decodeTerminalFont(value) {
76
76
  };
77
77
  }
78
78
  function isTerminalFontFormat(value) {
79
- return value === 'ttf' || value === 'otf' || value === 'woff' || value === 'woff2';
79
+ return (value === 'ttf' ||
80
+ value === 'otf' ||
81
+ value === 'woff' ||
82
+ value === 'woff2');
80
83
  }
81
84
  export function encodePtyResize(columns, rows) {
82
85
  if (!isPositiveInteger(columns) || !isPositiveInteger(rows)) {
@@ -116,7 +119,9 @@ export function decodePtyExit(payload) {
116
119
  }
117
120
  return {
118
121
  exitCode: value.exit_code,
119
- ...(value.signal === undefined ? {} : { signal: value.signal }),
122
+ ...(value.signal === undefined
123
+ ? {}
124
+ : { signal: value.signal }),
120
125
  };
121
126
  }
122
127
  export function encodeReplayStart(message) {
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AA+CA,MAAM,UAAU,wBAAwB,CAAC,WAA+B;IACpE,OAAO,UAAU,CAAC;QACd,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,QAAQ,EAAE,WAAW,CAAC,OAAO;QAC7B,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;QACpC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,IAAI,EAAE;oBACF,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO;oBAClC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM;oBAC/B,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU;oBACxC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM;iBAClC;aACJ,CAAC;QACN,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChD,MAAM,EAAE,QAAQ,CAAC,KAAK;YACtB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC3C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE;SAC9C,CAAC,CAAC;KACN,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAmB;IACxD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEpC,IACI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;QACpD,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAClC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EACjC,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS;QACjC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO;QACH,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,QAAQ;QACvB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACjF,QAAQ;QACR,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;KAC1C,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAiB;QACtC,oBAAoB;QACpB,kBAAkB;QAClB,gBAAgB;KACnB,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAA6B,EAAE,CACvD,SAAS,CAAC,GAAG,CAAC,OAAyB,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED,IACI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;QACnC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAChC,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAC3C,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO;QACH,OAAO,EAAE,KAAK,CAAC,QAAQ;QACvB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,WAAW;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;KACvB,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IACxC,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,IAAY;IACzD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAmB;IAC/C,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEtC,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAuB;IACjD,OAAO,UAAU,CAAC;QACd,SAAS,EAAE,OAAO,CAAC,QAAQ;QAC3B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;KACtE,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAmB;IAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACH,QAAQ,EAAE,KAAK,CAAC,SAAmB;QACnC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAgB,EAAE,CAAC;KAC5E,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IACzD,OAAO,UAAU,CAAC;QACd,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;QAC1C,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;KAC/B,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACjD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEpC,IACI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS,EACtC,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC;QAClD,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC;QAClD,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA2B;IAC3D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAmB;IACnD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED,IACI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS;QAClC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EACvC,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACH,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC;QAClD,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC;KACrD,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAC9B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,OAAmB;IACrC,IAAI,KAAc,CAAC;IAEnB,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type InnerFrame } from './framing.js';
2
+ export declare const OUTPUT_HIGH_WATER_BYTES: number;
3
+ export declare const OUTPUT_LOW_WATER_BYTES: number;
4
+ export declare const OUTPUT_MAX_PENDING_BYTES: number;
5
+ export declare class OutboundQueue {
6
+ #private;
7
+ private readonly bufferedAmount;
8
+ private readonly write;
9
+ private readonly onBackpressure;
10
+ private readonly onFailure;
11
+ constructor(bufferedAmount: () => number, write: (frame: InnerFrame, done: (error?: Error | null) => void) => void, onBackpressure: (paused: boolean) => void, onFailure: (error: Error) => void);
12
+ get pendingBytes(): number;
13
+ send(frame: InnerFrame): Promise<void>;
14
+ close(error?: Error): void;
15
+ }
16
+ //# sourceMappingURL=outbound-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound-queue.d.ts","sourceRoot":"","sources":["../src/outbound-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnE,eAAO,MAAM,uBAAuB,QAAc,CAAC;AACnD,eAAO,MAAM,sBAAsB,QAAa,CAAC;AACjD,eAAO,MAAM,wBAAwB,QAAgB,CAAC;AAUtD,qBAAa,aAAa;;IAYlB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAItB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBANT,cAAc,EAAE,MAAM,MAAM,EAC5B,KAAK,EAAE,CACpB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,KACnC,IAAI,EACQ,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EACzC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IAGtD,IAAW,YAAY,IAAI,MAAM,CAIhC;IAEM,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBtC,KAAK,CAAC,KAAK,QAA0C,GAAG,IAAI;CAqFtE"}
@@ -0,0 +1,139 @@
1
+ import { INNER_HEADER_BYTES } from './framing.js';
2
+ export const OUTPUT_HIGH_WATER_BYTES = 256 * 1_024;
3
+ export const OUTPUT_LOW_WATER_BYTES = 64 * 1_024;
4
+ export const OUTPUT_MAX_PENDING_BYTES = 1_024 * 1_024;
5
+ const FRAME_OVERHEAD_BYTES = INNER_HEADER_BYTES + 18;
6
+ export class OutboundQueue {
7
+ bufferedAmount;
8
+ write;
9
+ onBackpressure;
10
+ onFailure;
11
+ #queue = [];
12
+ #bytes = 0;
13
+ #inFlight;
14
+ #timer;
15
+ #closed = false;
16
+ #paused = false;
17
+ #pumping = false;
18
+ #progressAt = Date.now();
19
+ #lastBuffered = 0;
20
+ constructor(bufferedAmount, write, onBackpressure, onFailure) {
21
+ this.bufferedAmount = bufferedAmount;
22
+ this.write = write;
23
+ this.onBackpressure = onBackpressure;
24
+ this.onFailure = onFailure;
25
+ }
26
+ get pendingBytes() {
27
+ return (this.#bytes + (this.#inFlight?.bytes ?? 0) + this.bufferedAmount());
28
+ }
29
+ send(frame) {
30
+ if (this.#closed)
31
+ return Promise.reject(new Error('Gateway output queue is closed.'));
32
+ if (this.pendingBytes === 0)
33
+ this.#progressAt = Date.now();
34
+ const bytes = frame.payload.byteLength + FRAME_OVERHEAD_BYTES;
35
+ if (this.pendingBytes + bytes > OUTPUT_MAX_PENDING_BYTES) {
36
+ const error = new Error('Gateway output exceeded its 1 MiB limit.');
37
+ this.#fail(error);
38
+ return Promise.reject(error);
39
+ }
40
+ const pending = new Promise((resolve, reject) => {
41
+ this.#queue.push({
42
+ frame: { ...frame, payload: Uint8Array.from(frame.payload) },
43
+ bytes,
44
+ resolve,
45
+ reject,
46
+ });
47
+ this.#bytes += bytes;
48
+ });
49
+ this.#updatePressure();
50
+ this.#pump();
51
+ return pending;
52
+ }
53
+ close(error = new Error('Gateway transport changed.')) {
54
+ if (this.#closed)
55
+ return;
56
+ this.#closed = true;
57
+ clearTimeout(this.#timer);
58
+ this.#timer = undefined;
59
+ for (const item of this.#queue.splice(0))
60
+ item.reject(error);
61
+ this.#inFlight?.reject(error);
62
+ this.#inFlight = undefined;
63
+ this.#bytes = 0;
64
+ if (this.#paused)
65
+ this.onBackpressure(false);
66
+ this.#paused = false;
67
+ }
68
+ #pump() {
69
+ if (this.#closed || this.#pumping)
70
+ return;
71
+ this.#pumping = true;
72
+ try {
73
+ while (!this.#closed &&
74
+ this.#inFlight === undefined &&
75
+ this.bufferedAmount() < OUTPUT_HIGH_WATER_BYTES) {
76
+ const item = this.#queue.shift();
77
+ if (item === undefined)
78
+ break;
79
+ this.#bytes -= item.bytes;
80
+ this.#inFlight = item;
81
+ this.write(item.frame, (error) => {
82
+ if (this.#closed || this.#inFlight !== item)
83
+ return;
84
+ if (error != null) {
85
+ this.#fail(error);
86
+ return;
87
+ }
88
+ this.#inFlight = undefined;
89
+ this.#progressAt = Date.now();
90
+ item.resolve();
91
+ this.#updatePressure();
92
+ this.#pump();
93
+ });
94
+ }
95
+ }
96
+ catch (error) {
97
+ this.#fail(error instanceof Error ? error : new Error(String(error)));
98
+ }
99
+ finally {
100
+ this.#pumping = false;
101
+ }
102
+ this.#updatePressure();
103
+ if (!this.#closed &&
104
+ this.pendingBytes > 0 &&
105
+ this.#timer === undefined) {
106
+ this.#timer = setTimeout(() => {
107
+ this.#timer = undefined;
108
+ const buffered = this.bufferedAmount();
109
+ if (buffered < this.#lastBuffered)
110
+ this.#progressAt = Date.now();
111
+ this.#lastBuffered = buffered;
112
+ if (Date.now() - this.#progressAt >= 30_000) {
113
+ this.#fail(new Error('Gateway output stalled for 30 seconds.'));
114
+ }
115
+ else {
116
+ this.#pump();
117
+ }
118
+ }, 10);
119
+ }
120
+ }
121
+ #updatePressure() {
122
+ if (this.#closed)
123
+ return;
124
+ const paused = this.#paused
125
+ ? this.pendingBytes >= OUTPUT_LOW_WATER_BYTES
126
+ : this.pendingBytes >= OUTPUT_HIGH_WATER_BYTES;
127
+ if (paused !== this.#paused) {
128
+ this.#paused = paused;
129
+ this.onBackpressure(paused);
130
+ }
131
+ if (this.pendingBytes === 0)
132
+ this.#progressAt = Date.now();
133
+ }
134
+ #fail(error) {
135
+ this.close(error);
136
+ this.onFailure(error);
137
+ }
138
+ }
139
+ //# sourceMappingURL=outbound-queue.js.map