openrtc-file-transfer 1.0.1 → 1.0.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/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # openrtc-file-transfer
2
2
 
3
- Optional file-transfer protocol for OpenRTC applications. It operates only on
4
- the public `client.channels` API; OpenRTC core remains message-agnostic.
3
+ Optional file-transfer protocol for OpenRTC applications. OpenRTC remains the
4
+ connection and route owner; this package supplies application framing.
5
5
 
6
6
  ```ts
7
7
  import { createFileTransferProtocol } from 'openrtc-file-transfer';
@@ -11,6 +11,15 @@ const stop = files.onIncoming(({ file }) => saveBlob(file.blob, file.name));
11
11
  await files.send(deviceId, selectedFile, { onProgress: console.log });
12
12
  ```
13
13
 
14
+ When the client exposes OpenRTC's application-message surface, the protocol
15
+ uses bounded `OFT2` segments. OpenRTC selects the best currently proven route
16
+ for every segment, so an in-flight transfer can promote from relay to WebRTC,
17
+ MoQ, LAN, or direct QUIC and can fall back again without restarting. The
18
+ receiver ACKs its highest contiguous accepted offset; a missing ACK or route
19
+ failure causes a bounded resume negotiation from that receiver-owned offset.
20
+ The older named-stream framing remains the compatibility path for clients that
21
+ do not expose application messages.
22
+
14
23
  The package owns reusable framing, bounded validation, acknowledgement,
15
24
  progress, cancellation, and optional SHA-256 verification. Applications own
16
25
  file pickers, destination paths, acceptance policy, persistent queues, history,
@@ -22,3 +31,7 @@ custom sink receiving SHA-256-protected transfers must implement
22
31
  unchecked native file. Resume uses a declared `offset`: the sender starts at
23
32
  that byte and the receiver accepts it only when its sink reports the exact
24
33
  application-verified `resumeOffset`.
34
+
35
+ The protocol never caches a transport, dials a peer, or promotes a route. The
36
+ consumer keeps durable product intent pending until the receiver confirms the
37
+ completed size and integrity.
package/dist/index.d.ts CHANGED
@@ -42,6 +42,8 @@ export interface IncomingTransfer<Result = ReceivedFile> {
42
42
  result: Result;
43
43
  }
44
44
  export interface FileTransferProtocolOptions<Result = ReceivedFile> {
45
+ /** Adaptive uses route-selected segments; stream retains the v1 named-stream carrier. */
46
+ routing?: 'adaptive' | 'stream';
45
47
  channel?: RuntimeChannelDescriptor;
46
48
  chunkBytes?: number;
47
49
  maxHeaderBytes?: number;
@@ -64,9 +66,58 @@ export interface ReceiveFileOptions<Result> {
64
66
  onFile: (transfer: IncomingTransfer<Result>) => void | Promise<void>;
65
67
  onError?: (error: Error) => void;
66
68
  }
69
+ export type RoutedTransferFrame = {
70
+ kind: 'offer';
71
+ header: FileTransferHeader;
72
+ } | {
73
+ kind: 'resume';
74
+ transferId: string;
75
+ offset: number;
76
+ } | {
77
+ kind: 'chunk';
78
+ transferId: string;
79
+ offset: number;
80
+ ackRequested: boolean;
81
+ bytes: Uint8Array;
82
+ } | {
83
+ kind: 'ack';
84
+ transferId: string;
85
+ offset: number;
86
+ } | {
87
+ kind: 'complete';
88
+ transferId: string;
89
+ size: number;
90
+ } | {
91
+ kind: 'completed';
92
+ transferId: string;
93
+ size: number;
94
+ } | {
95
+ kind: 'reject';
96
+ transferId: string;
97
+ reason: string;
98
+ };
99
+ export interface RoutedFileTransferProtocolOptions<Result = ReceivedFile> extends FileTransferProtocolOptions<Result> {
100
+ /** Number of chunks sent before requiring a receiver-persisted offset ACK. */
101
+ windowChunks?: number;
102
+ /** Bounded protocol recovery attempts before the app outbox retries later. */
103
+ maxRecoveryAttempts?: number;
104
+ }
105
+ export declare function encodeRoutedTransferFrame(frame: RoutedTransferFrame, maxHeaderBytes?: number, maxChunkBytes?: number): Uint8Array;
106
+ export declare function decodeRoutedTransferFrame(input: Uint8Array, maxFileBytes?: number, maxHeaderBytes?: number, maxChunkBytes?: number): RoutedTransferFrame | null;
67
107
  export declare function createFileTransferProtocol<Result = ReceivedFile>(client: OpenRTCClient, options?: FileTransferProtocolOptions<Result>): {
68
108
  send(deviceId: string, file: File, sendOptions?: SendFileOptions): Promise<string>;
69
- onIncoming(receiveOptions: ReceiveFileOptions<Result>): () => void;
109
+ onIncoming(configured: ReceiveFileOptions<Result>): () => void;
110
+ dispose(): void;
111
+ };
112
+ /**
113
+ * Route-adaptive file transfer. Each bounded chunk is sent through
114
+ * `Connection.send`, so OpenRTC re-ranks the currently proven routes for every
115
+ * chunk. Receiver-confirmed offsets survive optional-route promotion/failure;
116
+ * the consumer remains responsible for persisting the surrounding intent.
117
+ */
118
+ export declare function createRoutedFileTransferProtocol<Result = ReceivedFile>(client: OpenRTCClient, options?: RoutedFileTransferProtocolOptions<Result>): {
119
+ send(deviceId: string, file: File, sendOptions?: SendFileOptions): Promise<string>;
120
+ onIncoming(configured: ReceiveFileOptions<Result>): () => void;
70
121
  dispose(): void;
71
122
  };
72
123
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEvE,eAAO,MAAM,qBAAqB,EAAE,wBAQnC,CAAC;AAoBF,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW,CAAC,MAAM,GAAG,OAAO;IACzC,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,2EAA2E;IAC3E,YAAY,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,gBAAgB,CAAC,MAAM,GAAG,YAAY;IACnD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B,CAAC,MAAM,GAAG,YAAY;IAC9D,yFAAyF;IACzF,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAChC,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1G;AAED,MAAM,WAAW,eAAe;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,kBAAkB,CAAC,MAAM;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,mBAAmB,GACzB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAC/F;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAM7D,MAAM,WAAW,iCAAiC,CAAC,MAAM,GAAG,YAAY,CACpE,SAAQ,2BAA2B,CAAC,MAAM,CAAC;IAC3C,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAaD,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,mBAAmB,EAC1B,cAAc,SAA2B,EACzC,aAAa,SAA6B,GAC3C,UAAU,CA0DZ;AAED,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,UAAU,EACjB,YAAY,SAAkC,EAC9C,cAAc,SAA2B,EACzC,aAAa,SAA6B,GAC3C,mBAAmB,GAAG,IAAI,CA+C5B;AA8ID,wBAAgB,0BAA0B,CAAC,MAAM,GAAG,YAAY,EAC5D,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,2BAA2B,CAAC,MAAM,CAAM;mBAsYxB,MAAM,QAAQ,IAAI,gBAAe,eAAe,GAAQ,OAAO,CAAC,MAAM,CAAC;8DA6ElC,IAAI;eAOnD,IAAI;EAjVtB;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,GAAG,YAAY,EAClE,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,iCAAiC,CAAC,MAAM,CAAM;mBAmP9B,MAAM,QAAQ,IAAI,gBAAe,eAAe,GAAQ,OAAO,CAAC,MAAM,CAAC;2BA6ErE,kBAAkB,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;eAOnD,IAAI;EAStB"}
package/dist/index.js CHANGED
@@ -13,6 +13,148 @@ const DEFAULT_CHUNK_BYTES = 64 * 1024;
13
13
  const DEFAULT_MAX_HEADER_BYTES = 64 * 1024;
14
14
  const DEFAULT_MAX_BUFFERED_FILE_BYTES = 256 * 1024 * 1024;
15
15
  const DEFAULT_ACK_TIMEOUT_MS = 15000;
16
+ const ROUTED_FRAME_MAGIC = new Uint8Array([0x4f, 0x46, 0x54, 0x32]); // OFT2
17
+ const ROUTED_KIND_OFFER = 0x01;
18
+ const ROUTED_KIND_RESUME = 0x02;
19
+ const ROUTED_KIND_CHUNK = 0x03;
20
+ const ROUTED_KIND_ACK = 0x04;
21
+ const ROUTED_KIND_COMPLETE = 0x05;
22
+ const ROUTED_KIND_COMPLETED = 0x06;
23
+ const ROUTED_KIND_REJECT = 0x07;
24
+ const DEFAULT_ROUTED_CHUNK_BYTES = 48 * 1024;
25
+ const DEFAULT_ROUTED_WINDOW_CHUNKS = 8;
26
+ const MAX_ROUTED_TRANSFER_ID_BYTES = 512;
27
+ function routedTransferId(frame) {
28
+ return frame.kind === 'offer' ? frame.header.transferId : frame.transferId;
29
+ }
30
+ function writeU64(view, offset, value) {
31
+ if (!Number.isSafeInteger(value) || value < 0)
32
+ throw new Error('routed transfer offset is invalid');
33
+ view.setBigUint64(offset, BigInt(value), false);
34
+ }
35
+ function readU64(view, offset) {
36
+ const value = view.getBigUint64(offset, false);
37
+ if (value > BigInt(Number.MAX_SAFE_INTEGER))
38
+ throw new Error('routed transfer offset exceeds JavaScript safe integer range');
39
+ return Number(value);
40
+ }
41
+ export function encodeRoutedTransferFrame(frame, maxHeaderBytes = DEFAULT_MAX_HEADER_BYTES, maxChunkBytes = DEFAULT_ROUTED_CHUNK_BYTES) {
42
+ const transferId = frame.kind === 'offer' ? frame.header.transferId : frame.transferId;
43
+ const id = new TextEncoder().encode(transferId);
44
+ if (!id.byteLength || id.byteLength > MAX_ROUTED_TRANSFER_ID_BYTES) {
45
+ throw new Error('routed transferId length is invalid');
46
+ }
47
+ let kind;
48
+ let body;
49
+ switch (frame.kind) {
50
+ case 'offer': {
51
+ kind = ROUTED_KIND_OFFER;
52
+ const header = new TextEncoder().encode(JSON.stringify(frame.header));
53
+ if (!header.byteLength || header.byteLength > maxHeaderBytes)
54
+ throw new Error('routed offer header is too large');
55
+ body = new Uint8Array(4 + header.byteLength);
56
+ new DataView(body.buffer).setUint32(0, header.byteLength, false);
57
+ body.set(header, 4);
58
+ break;
59
+ }
60
+ case 'resume':
61
+ case 'ack':
62
+ case 'complete':
63
+ case 'completed': {
64
+ kind = frame.kind === 'resume' ? ROUTED_KIND_RESUME
65
+ : frame.kind === 'ack' ? ROUTED_KIND_ACK
66
+ : frame.kind === 'complete' ? ROUTED_KIND_COMPLETE
67
+ : ROUTED_KIND_COMPLETED;
68
+ body = new Uint8Array(8);
69
+ writeU64(new DataView(body.buffer), 0, frame.kind === 'resume' || frame.kind === 'ack' ? frame.offset : frame.size);
70
+ break;
71
+ }
72
+ case 'chunk': {
73
+ kind = ROUTED_KIND_CHUNK;
74
+ if (!frame.bytes.byteLength || frame.bytes.byteLength > maxChunkBytes) {
75
+ throw new Error(`routed transfer chunk must contain 1..${maxChunkBytes} bytes`);
76
+ }
77
+ body = new Uint8Array(9 + frame.bytes.byteLength);
78
+ writeU64(new DataView(body.buffer), 0, frame.offset);
79
+ body[8] = frame.ackRequested ? 1 : 0;
80
+ body.set(frame.bytes, 9);
81
+ break;
82
+ }
83
+ case 'reject': {
84
+ kind = ROUTED_KIND_REJECT;
85
+ const reason = new TextEncoder().encode(frame.reason);
86
+ if (reason.byteLength > Math.min(maxHeaderBytes, 0xffff))
87
+ throw new Error('routed rejection reason is too large');
88
+ body = new Uint8Array(2 + reason.byteLength);
89
+ new DataView(body.buffer).setUint16(0, reason.byteLength, false);
90
+ body.set(reason, 2);
91
+ break;
92
+ }
93
+ }
94
+ const output = new Uint8Array(7 + id.byteLength + body.byteLength);
95
+ output.set(ROUTED_FRAME_MAGIC, 0);
96
+ output[4] = kind;
97
+ new DataView(output.buffer).setUint16(5, id.byteLength, false);
98
+ output.set(id, 7);
99
+ output.set(body, 7 + id.byteLength);
100
+ return output;
101
+ }
102
+ export function decodeRoutedTransferFrame(input, maxFileBytes = DEFAULT_MAX_BUFFERED_FILE_BYTES, maxHeaderBytes = DEFAULT_MAX_HEADER_BYTES, maxChunkBytes = DEFAULT_ROUTED_CHUNK_BYTES) {
103
+ if (input.byteLength < 7 || ROUTED_FRAME_MAGIC.some((byte, index) => input[index] !== byte))
104
+ return null;
105
+ const view = new DataView(input.buffer, input.byteOffset, input.byteLength);
106
+ const kind = input[4];
107
+ const idLength = view.getUint16(5, false);
108
+ if (!idLength || idLength > MAX_ROUTED_TRANSFER_ID_BYTES || input.byteLength < 7 + idLength) {
109
+ throw new Error('invalid routed transferId');
110
+ }
111
+ const transferId = new TextDecoder().decode(input.slice(7, 7 + idLength));
112
+ const body = input.slice(7 + idLength);
113
+ const bodyView = new DataView(body.buffer, body.byteOffset, body.byteLength);
114
+ if (kind === ROUTED_KIND_OFFER) {
115
+ if (body.byteLength < 4)
116
+ throw new Error('truncated routed offer');
117
+ const length = bodyView.getUint32(0, false);
118
+ if (!length || length > maxHeaderBytes || body.byteLength !== 4 + length) {
119
+ throw new Error('invalid routed offer header length');
120
+ }
121
+ const header = parseHeader(body.slice(4), maxFileBytes);
122
+ if (header.transferId !== transferId)
123
+ throw new Error('routed offer transferId mismatch');
124
+ return { kind: 'offer', header };
125
+ }
126
+ if ([ROUTED_KIND_RESUME, ROUTED_KIND_ACK, ROUTED_KIND_COMPLETE, ROUTED_KIND_COMPLETED].includes(kind)) {
127
+ if (body.byteLength !== 8)
128
+ throw new Error('invalid routed offset frame');
129
+ const value = readU64(bodyView, 0);
130
+ if (value > maxFileBytes)
131
+ throw new Error('routed transfer offset exceeds configured limit');
132
+ if (kind === ROUTED_KIND_RESUME)
133
+ return { kind: 'resume', transferId, offset: value };
134
+ if (kind === ROUTED_KIND_ACK)
135
+ return { kind: 'ack', transferId, offset: value };
136
+ if (kind === ROUTED_KIND_COMPLETE)
137
+ return { kind: 'complete', transferId, size: value };
138
+ return { kind: 'completed', transferId, size: value };
139
+ }
140
+ if (kind === ROUTED_KIND_CHUNK) {
141
+ if (body.byteLength <= 9
142
+ || body.byteLength - 9 > maxChunkBytes
143
+ || (body[8] !== 0 && body[8] !== 1))
144
+ throw new Error('invalid routed chunk');
145
+ return { kind: 'chunk', transferId, offset: readU64(bodyView, 0), ackRequested: body[8] === 1, bytes: body.slice(9) };
146
+ }
147
+ if (kind === ROUTED_KIND_REJECT) {
148
+ if (body.byteLength < 2)
149
+ throw new Error('truncated routed rejection');
150
+ const length = bodyView.getUint16(0, false);
151
+ if (length > maxHeaderBytes || body.byteLength !== 2 + length) {
152
+ throw new Error('invalid routed rejection length');
153
+ }
154
+ return { kind: 'reject', transferId, reason: new TextDecoder().decode(body.slice(2)) };
155
+ }
156
+ throw new Error('unknown routed file-transfer frame');
157
+ }
16
158
  class ByteReader {
17
159
  constructor(stream) {
18
160
  this.buffer = new Uint8Array(0);
@@ -139,6 +281,12 @@ function bufferedSink(header, remoteNodeId) {
139
281
  };
140
282
  }
141
283
  export function createFileTransferProtocol(client, options = {}) {
284
+ const adaptiveClient = client;
285
+ if (options.routing !== 'stream'
286
+ && typeof adaptiveClient.onMessage === 'function'
287
+ && (typeof adaptiveClient.getConnections === 'function' || !!adaptiveClient.diagnostics)) {
288
+ return createRoutedFileTransferProtocol(client, options);
289
+ }
142
290
  const channel = options.channel ?? FILE_TRANSFER_CHANNEL;
143
291
  const chunkBytes = options.chunkBytes ?? DEFAULT_CHUNK_BYTES;
144
292
  const maxHeaderBytes = options.maxHeaderBytes ?? DEFAULT_MAX_HEADER_BYTES;
@@ -267,4 +415,311 @@ export function createFileTransferProtocol(client, options = {}) {
267
415
  },
268
416
  };
269
417
  }
418
+ /**
419
+ * Route-adaptive file transfer. Each bounded chunk is sent through
420
+ * `Connection.send`, so OpenRTC re-ranks the currently proven routes for every
421
+ * chunk. Receiver-confirmed offsets survive optional-route promotion/failure;
422
+ * the consumer remains responsible for persisting the surrounding intent.
423
+ */
424
+ export function createRoutedFileTransferProtocol(client, options = {}) {
425
+ const chunkBytes = options.chunkBytes ?? DEFAULT_ROUTED_CHUNK_BYTES;
426
+ const maxHeaderBytes = options.maxHeaderBytes ?? DEFAULT_MAX_HEADER_BYTES;
427
+ const maxFileBytes = options.maxFileBytes ?? DEFAULT_MAX_BUFFERED_FILE_BYTES;
428
+ const ackTimeoutMs = options.ackTimeoutMs ?? DEFAULT_ACK_TIMEOUT_MS;
429
+ const windowChunks = options.windowChunks ?? DEFAULT_ROUTED_WINDOW_CHUNKS;
430
+ const maxRecoveryAttempts = options.maxRecoveryAttempts ?? 3;
431
+ if (!Number.isSafeInteger(chunkBytes) || chunkBytes <= 0 || chunkBytes > DEFAULT_ROUTED_CHUNK_BYTES) {
432
+ throw new Error(`routed chunkBytes must be within 1..${DEFAULT_ROUTED_CHUNK_BYTES}`);
433
+ }
434
+ if (!Number.isSafeInteger(windowChunks) || windowChunks <= 0)
435
+ throw new Error('windowChunks must be positive');
436
+ if (!Number.isSafeInteger(maxRecoveryAttempts) || maxRecoveryAttempts < 0)
437
+ throw new Error('maxRecoveryAttempts must be non-negative');
438
+ const incoming = new Map();
439
+ const completed = new Map();
440
+ const controlListeners = new Map();
441
+ let receiveOptions = null;
442
+ let disposed = false;
443
+ const connectionMatches = (connection, id) => [connection.id, connection.remoteNodeId, connection.deviceId]
444
+ .some((candidate) => typeof candidate === 'string' && candidate === id);
445
+ const runtimeClient = client;
446
+ const resolveConnection = async (id) => {
447
+ const settled = await (runtimeClient.peers?.waitConnected(id, ackTimeoutMs)
448
+ ?? runtimeClient.waitForConnectedPeer?.(id, ackTimeoutMs)
449
+ ?? Promise.resolve(null)).catch(() => null);
450
+ const settledIds = settled && typeof settled === 'object'
451
+ ? [
452
+ settled.activeConnectionId,
453
+ ...(settled.candidateConnectionIds ?? []),
454
+ settled.peerId,
455
+ settled.deviceId,
456
+ settled.deviceIdHint,
457
+ settled.nodeId,
458
+ ].filter((candidate) => typeof candidate === 'string' && !!candidate)
459
+ : [];
460
+ const lookupIds = new Set([id, ...settledIds]);
461
+ const connections = runtimeClient.diagnostics?.applicationReadyConnections?.()
462
+ ?? runtimeClient.getApplicationReadyConnections?.()
463
+ ?? runtimeClient.diagnostics?.connections()
464
+ ?? runtimeClient.getConnections?.()
465
+ ?? [];
466
+ const connection = connections.find((candidate) => !candidate.isClosed && [...lookupIds].some((lookupId) => connectionMatches(candidate, lookupId)));
467
+ if (!connection)
468
+ throw new Error(`no application-ready OpenRTC route for ${id}`);
469
+ return connection;
470
+ };
471
+ const sendFrame = async (target, frame) => {
472
+ const connection = typeof target === 'string' ? await resolveConnection(target) : target;
473
+ await connection.send(encodeRoutedTransferFrame(frame, maxHeaderBytes, chunkBytes));
474
+ };
475
+ const waitForControl = async (transferId, predicate, send, signal) => {
476
+ let resolveFrame;
477
+ const operation = new Promise((resolve) => { resolveFrame = resolve; });
478
+ const listener = (frame) => {
479
+ if (predicate(frame))
480
+ resolveFrame(frame);
481
+ };
482
+ const listeners = controlListeners.get(transferId) ?? new Set();
483
+ listeners.add(listener);
484
+ controlListeners.set(transferId, listeners);
485
+ try {
486
+ await send();
487
+ return await waitWithDeadline(operation, ackTimeoutMs, signal);
488
+ }
489
+ finally {
490
+ listeners.delete(listener);
491
+ if (!listeners.size)
492
+ controlListeners.delete(transferId);
493
+ }
494
+ };
495
+ const respond = async (connection, frame) => {
496
+ try {
497
+ await sendFrame(connection, frame);
498
+ }
499
+ catch (error) {
500
+ receiveOptions?.onError?.(error instanceof Error ? error : new Error(String(error)));
501
+ }
502
+ };
503
+ const processIncoming = async (connection, remoteNodeId, frame) => {
504
+ const configured = receiveOptions;
505
+ if (!configured)
506
+ return;
507
+ if (frame.kind === 'offer') {
508
+ const alreadyCompleted = completed.get(frame.header.transferId);
509
+ if (alreadyCompleted === frame.header.size) {
510
+ await respond(connection, { kind: 'completed', transferId: frame.header.transferId, size: alreadyCompleted });
511
+ return;
512
+ }
513
+ const existing = incoming.get(frame.header.transferId);
514
+ if (existing) {
515
+ await respond(connection, { kind: 'resume', transferId: frame.header.transferId, offset: existing.received });
516
+ return;
517
+ }
518
+ try {
519
+ const sink = options.createReceiveSink
520
+ ? await options.createReceiveSink(frame.header, remoteNodeId)
521
+ : bufferedSink(frame.header, remoteNodeId);
522
+ const received = sink.resumeOffset ?? 0;
523
+ if (!Number.isSafeInteger(received) || received < 0 || received > frame.header.size) {
524
+ throw new Error('receive sink returned an invalid resumeOffset');
525
+ }
526
+ incoming.set(frame.header.transferId, {
527
+ header: frame.header,
528
+ remoteNodeId,
529
+ connection,
530
+ sink,
531
+ received,
532
+ chain: Promise.resolve(),
533
+ });
534
+ configured.onProgress?.({ transferId: frame.header.transferId, transferredBytes: received, totalBytes: frame.header.size, direction: 'receive' });
535
+ await respond(connection, { kind: 'resume', transferId: frame.header.transferId, offset: received });
536
+ }
537
+ catch (error) {
538
+ configured.onError?.(error instanceof Error ? error : new Error(String(error)));
539
+ await respond(connection, { kind: 'reject', transferId: frame.header.transferId, reason: String(error) });
540
+ }
541
+ return;
542
+ }
543
+ const state = incoming.get(frame.transferId);
544
+ if (!state) {
545
+ if (frame.kind === 'complete' && completed.get(frame.transferId) === frame.size) {
546
+ await respond(connection, { kind: 'completed', transferId: frame.transferId, size: frame.size });
547
+ }
548
+ else if (frame.kind === 'chunk' || frame.kind === 'complete') {
549
+ await respond(connection, { kind: 'reject', transferId: frame.transferId, reason: 'transfer offer is required' });
550
+ }
551
+ return;
552
+ }
553
+ state.connection = connection;
554
+ if (frame.kind === 'chunk') {
555
+ if (frame.offset < state.received && frame.offset + frame.bytes.byteLength <= state.received) {
556
+ if (frame.ackRequested)
557
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
558
+ return;
559
+ }
560
+ if (frame.offset !== state.received || state.received + frame.bytes.byteLength > state.header.size) {
561
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
562
+ return;
563
+ }
564
+ await state.sink.write(frame.bytes);
565
+ state.received += frame.bytes.byteLength;
566
+ configured.onProgress?.({ transferId: frame.transferId, transferredBytes: state.received, totalBytes: state.header.size, direction: 'receive' });
567
+ if (frame.ackRequested)
568
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
569
+ return;
570
+ }
571
+ if (frame.kind === 'complete') {
572
+ if (frame.size !== state.header.size || state.received !== state.header.size) {
573
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
574
+ return;
575
+ }
576
+ const result = await state.sink.close();
577
+ if (state.header.sha256) {
578
+ const verified = state.sink.verifySha256
579
+ ? await state.sink.verifySha256(state.header.sha256)
580
+ : result && typeof result === 'object' && 'blob' in result
581
+ ? await sha256(result.blob) === state.header.sha256.toLowerCase()
582
+ : false;
583
+ if (!verified)
584
+ throw new Error('file transfer integrity check failed');
585
+ }
586
+ incoming.delete(frame.transferId);
587
+ completed.set(frame.transferId, frame.size);
588
+ if (completed.size > 1024)
589
+ completed.delete(completed.keys().next().value);
590
+ await configured.onFile({ header: state.header, remoteNodeId: state.remoteNodeId, result });
591
+ await respond(connection, { kind: 'completed', transferId: frame.transferId, size: frame.size });
592
+ }
593
+ };
594
+ const messageSource = client;
595
+ const offMessage = messageSource.onMessage((connection, message) => {
596
+ const bytes = message instanceof Uint8Array
597
+ ? message
598
+ : message instanceof ArrayBuffer
599
+ ? new Uint8Array(message)
600
+ : null;
601
+ if (!bytes)
602
+ return;
603
+ let frame;
604
+ try {
605
+ frame = decodeRoutedTransferFrame(bytes, maxFileBytes, maxHeaderBytes, chunkBytes);
606
+ }
607
+ catch (error) {
608
+ receiveOptions?.onError?.(error instanceof Error ? error : new Error(String(error)));
609
+ return;
610
+ }
611
+ if (!frame)
612
+ return;
613
+ const frameId = routedTransferId(frame);
614
+ const listeners = controlListeners.get(frameId);
615
+ if (listeners && ['resume', 'ack', 'completed', 'reject'].includes(frame.kind)) {
616
+ for (const listener of [...listeners])
617
+ listener(frame);
618
+ }
619
+ if (['resume', 'ack', 'completed', 'reject'].includes(frame.kind))
620
+ return;
621
+ const routeConnection = connection;
622
+ const remoteNodeId = routeConnection.deviceId ?? routeConnection.remoteNodeId ?? routeConnection.id ?? 'unknown';
623
+ const current = incoming.get(frameId);
624
+ const chain = (current?.chain ?? Promise.resolve())
625
+ .then(() => processIncoming(routeConnection, remoteNodeId, frame))
626
+ .catch(async (error) => {
627
+ const state = incoming.get(routedTransferId(frame));
628
+ incoming.delete(routedTransferId(frame));
629
+ await state?.sink.abort(error).catch(() => undefined);
630
+ receiveOptions?.onError?.(error instanceof Error ? error : new Error(String(error)));
631
+ await respond(routeConnection, { kind: 'reject', transferId: routedTransferId(frame), reason: String(error) });
632
+ });
633
+ if (current)
634
+ current.chain = chain;
635
+ void chain;
636
+ });
637
+ return {
638
+ async send(deviceId, file, sendOptions = {}) {
639
+ if (disposed)
640
+ throw new Error('routed file-transfer protocol is disposed');
641
+ if (file.size > maxFileBytes)
642
+ throw new Error(`file exceeds ${maxFileBytes} byte transfer limit`);
643
+ throwIfAborted(sendOptions.signal);
644
+ const id = sendOptions.transferId ?? transferId();
645
+ const header = {
646
+ version: 1,
647
+ transferId: id,
648
+ name: file.name,
649
+ size: file.size,
650
+ mimeType: file.type || 'application/octet-stream',
651
+ metadata: sendOptions.metadata,
652
+ sha256: sendOptions.integrity === 'sha256' ? await sha256(file) : undefined,
653
+ };
654
+ let recoveryAttempts = 0;
655
+ const offer = async () => {
656
+ const response = await waitForControl(id, (frame) => frame.kind === 'resume' || frame.kind === 'completed' || frame.kind === 'reject', () => sendFrame(deviceId, { kind: 'offer', header }), sendOptions.signal);
657
+ if (response.kind === 'reject')
658
+ throw new Error(`file transfer rejected: ${response.reason}`);
659
+ if (response.kind === 'completed')
660
+ return response.size;
661
+ if (response.kind !== 'resume' || response.offset > file.size)
662
+ throw new Error('invalid file transfer resume response');
663
+ return response.offset;
664
+ };
665
+ let confirmed = await offer();
666
+ sendOptions.onProgress?.({ transferId: id, transferredBytes: confirmed, totalBytes: file.size, direction: 'send' });
667
+ while (confirmed < file.size) {
668
+ throwIfAborted(sendOptions.signal);
669
+ const windowStart = confirmed;
670
+ let cursor = confirmed;
671
+ const frames = [];
672
+ for (let index = 0; index < windowChunks && cursor < file.size; index += 1) {
673
+ const bytes = new Uint8Array(await file.slice(cursor, cursor + chunkBytes).arrayBuffer());
674
+ const end = cursor + bytes.byteLength;
675
+ frames.push({ kind: 'chunk', transferId: id, offset: cursor, ackRequested: end === file.size || index === windowChunks - 1, bytes });
676
+ cursor = end;
677
+ }
678
+ try {
679
+ const response = await waitForControl(id, (frame) => (frame.kind === 'ack' && frame.offset >= windowStart) || frame.kind === 'reject', async () => {
680
+ for (const frame of frames)
681
+ await sendFrame(deviceId, frame);
682
+ }, sendOptions.signal);
683
+ if (response.kind === 'reject')
684
+ throw new Error(`file transfer rejected: ${response.reason}`);
685
+ if (response.kind !== 'ack' || response.offset < windowStart || response.offset > cursor) {
686
+ throw new Error('invalid file transfer offset acknowledgement');
687
+ }
688
+ confirmed = response.offset;
689
+ recoveryAttempts = 0;
690
+ sendOptions.onProgress?.({ transferId: id, transferredBytes: confirmed, totalBytes: file.size, direction: 'send' });
691
+ }
692
+ catch (error) {
693
+ if (recoveryAttempts >= maxRecoveryAttempts)
694
+ throw error;
695
+ recoveryAttempts += 1;
696
+ confirmed = await offer();
697
+ }
698
+ }
699
+ const completion = await waitForControl(id, (frame) => frame.kind === 'completed' || frame.kind === 'ack' || frame.kind === 'reject', () => sendFrame(deviceId, { kind: 'complete', transferId: id, size: file.size }), sendOptions.signal);
700
+ if (completion.kind === 'reject')
701
+ throw new Error(`file transfer rejected: ${completion.reason}`);
702
+ if (completion.kind !== 'completed' || completion.size !== file.size) {
703
+ throw new Error('receiver did not confirm completed file transfer');
704
+ }
705
+ return id;
706
+ },
707
+ onIncoming(configured) {
708
+ receiveOptions = configured;
709
+ return () => {
710
+ if (receiveOptions === configured)
711
+ receiveOptions = null;
712
+ };
713
+ },
714
+ dispose() {
715
+ disposed = true;
716
+ offMessage();
717
+ receiveOptions = null;
718
+ controlListeners.clear();
719
+ for (const state of incoming.values())
720
+ void state.sink.abort(new Error('file-transfer protocol disposed'));
721
+ incoming.clear();
722
+ },
723
+ };
724
+ }
270
725
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openrtc-file-transfer",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,