openrtc-file-transfer 1.0.1 → 2.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,16 +1,30 @@
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';
8
8
 
9
- const files = createFileTransferProtocol(client);
9
+ const room = await rtc.rooms.join('project-files', {
10
+ access: 'authenticated',
11
+ membership: 'ephemeral',
12
+ auth,
13
+ });
14
+ const files = createFileTransferProtocol(room);
10
15
  const stop = files.onIncoming(({ file }) => saveBlob(file.blob, file.name));
11
16
  await files.send(deviceId, selectedFile, { onProgress: console.log });
12
17
  ```
13
18
 
19
+ When the client exposes OpenRTC's application-message surface, the protocol
20
+ uses bounded `OFT2` segments. OpenRTC selects the best currently proven route
21
+ for every segment, so an in-flight transfer can promote from relay to WebRTC,
22
+ MoQ, LAN, or direct QUIC and can fall back again without restarting. The
23
+ receiver ACKs its highest contiguous accepted offset; a missing ACK or route
24
+ failure causes a bounded resume negotiation from that receiver-owned offset.
25
+ The older named-stream framing remains the compatibility path for clients that
26
+ do not expose application messages.
27
+
14
28
  The package owns reusable framing, bounded validation, acknowledgement,
15
29
  progress, cancellation, and optional SHA-256 verification. Applications own
16
30
  file pickers, destination paths, acceptance policy, persistent queues, history,
@@ -22,3 +36,9 @@ custom sink receiving SHA-256-protected transfers must implement
22
36
  unchecked native file. Resume uses a declared `offset`: the sender starts at
23
37
  that byte and the receiver accepts it only when its sink reports the exact
24
38
  application-verified `resumeOffset`.
39
+
40
+ The protocol accepts one already-active OpenRTC 2.0 capability handle. It never
41
+ constructs a hidden client or activates a second avenue. It also never caches a
42
+ transport, dials a peer, or promotes a route. The
43
+ consumer keeps durable product intent pending until the receiver confirms the
44
+ completed size and integrity.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,13 @@
1
- import type { OpenRTCClient, RuntimeChannelDescriptor } from 'openrtc';
1
+ import type { OpenRTCCapabilityHandle } from 'openrtc';
2
+ import type { RuntimeChannelDescriptor, RuntimeClient } from 'openrtc/runtime';
3
+ /** File transfer binds to one already-active 2.0 capability avenue. */
4
+ export type OpenRTCFileTransferSurface = Pick<OpenRTCCapabilityHandle, 'channels' | 'diagnostics' | 'peers'>;
5
+ /**
6
+ * Transitional adapter for advanced native hosts that obtain a low-level
7
+ * runtime through `runtimeFromCapability()`. The file-transfer package owns
8
+ * this mapping so product applications do not recreate protocol surfaces.
9
+ */
10
+ export declare function fileTransferSurfaceFromRuntime(runtime: RuntimeClient): OpenRTCFileTransferSurface;
2
11
  export declare const FILE_TRANSFER_CHANNEL: RuntimeChannelDescriptor;
3
12
  export interface FileTransferHeader {
4
13
  version: 1;
@@ -42,6 +51,8 @@ export interface IncomingTransfer<Result = ReceivedFile> {
42
51
  result: Result;
43
52
  }
44
53
  export interface FileTransferProtocolOptions<Result = ReceivedFile> {
54
+ /** Adaptive uses route-selected segments; stream retains the v1 named-stream carrier. */
55
+ routing?: 'adaptive' | 'stream';
45
56
  channel?: RuntimeChannelDescriptor;
46
57
  chunkBytes?: number;
47
58
  maxHeaderBytes?: number;
@@ -64,9 +75,58 @@ export interface ReceiveFileOptions<Result> {
64
75
  onFile: (transfer: IncomingTransfer<Result>) => void | Promise<void>;
65
76
  onError?: (error: Error) => void;
66
77
  }
67
- export declare function createFileTransferProtocol<Result = ReceivedFile>(client: OpenRTCClient, options?: FileTransferProtocolOptions<Result>): {
78
+ export type RoutedTransferFrame = {
79
+ kind: 'offer';
80
+ header: FileTransferHeader;
81
+ } | {
82
+ kind: 'resume';
83
+ transferId: string;
84
+ offset: number;
85
+ } | {
86
+ kind: 'chunk';
87
+ transferId: string;
88
+ offset: number;
89
+ ackRequested: boolean;
90
+ bytes: Uint8Array;
91
+ } | {
92
+ kind: 'ack';
93
+ transferId: string;
94
+ offset: number;
95
+ } | {
96
+ kind: 'complete';
97
+ transferId: string;
98
+ size: number;
99
+ } | {
100
+ kind: 'completed';
101
+ transferId: string;
102
+ size: number;
103
+ } | {
104
+ kind: 'reject';
105
+ transferId: string;
106
+ reason: string;
107
+ };
108
+ export interface RoutedFileTransferProtocolOptions<Result = ReceivedFile> extends FileTransferProtocolOptions<Result> {
109
+ /** Number of chunks sent before requiring a receiver-persisted offset ACK. */
110
+ windowChunks?: number;
111
+ /** Bounded protocol recovery attempts before the app outbox retries later. */
112
+ maxRecoveryAttempts?: number;
113
+ }
114
+ export declare function encodeRoutedTransferFrame(frame: RoutedTransferFrame, maxHeaderBytes?: number, maxChunkBytes?: number): Uint8Array;
115
+ export declare function decodeRoutedTransferFrame(input: Uint8Array, maxFileBytes?: number, maxHeaderBytes?: number, maxChunkBytes?: number): RoutedTransferFrame | null;
116
+ export declare function createFileTransferProtocol<Result = ReceivedFile>(client: OpenRTCFileTransferSurface, options?: FileTransferProtocolOptions<Result>): {
117
+ send(deviceId: string, file: File, sendOptions?: SendFileOptions): Promise<string>;
118
+ onIncoming(configured: ReceiveFileOptions<Result>): () => void;
119
+ dispose(): void;
120
+ };
121
+ /**
122
+ * Route-adaptive file transfer. Each bounded chunk is sent through
123
+ * `Connection.send`, so OpenRTC re-ranks the currently proven routes for every
124
+ * chunk. Receiver-confirmed offsets survive optional-route promotion/failure;
125
+ * the consumer remains responsible for persisting the surrounding intent.
126
+ */
127
+ export declare function createRoutedFileTransferProtocol<Result = ReceivedFile>(client: OpenRTCFileTransferSurface, options?: RoutedFileTransferProtocolOptions<Result>): {
68
128
  send(deviceId: string, file: File, sendOptions?: SendFileOptions): Promise<string>;
69
- onIncoming(receiveOptions: ReceiveFileOptions<Result>): () => void;
129
+ onIncoming(configured: ReceiveFileOptions<Result>): () => void;
70
130
  dispose(): void;
71
131
  };
72
132
  //# 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":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,66 @@
1
+ /**
2
+ * Transitional adapter for advanced native hosts that obtain a low-level
3
+ * runtime through `runtimeFromCapability()`. The file-transfer package owns
4
+ * this mapping so product applications do not recreate protocol surfaces.
5
+ */
6
+ export function fileTransferSurfaceFromRuntime(runtime) {
7
+ return {
8
+ channels: {
9
+ register: (descriptor) => runtime.registerChannel(descriptor),
10
+ unregister: (channelId) => runtime.unregisterChannel(channelId),
11
+ list: () => runtime.listChannels(),
12
+ openBi: (id, channelId, options) => runtime.openPeerBi(id, { ...options, channelId }),
13
+ openUni: (id, channelId, options) => runtime.openPeerUni(id, { ...options, channelId }),
14
+ onIncoming: (callback) => runtime.onIncomingStream(callback),
15
+ onIncomingChannel: (channelId, callback) => runtime.onIncomingChannelStream(channelId, (stream) => stream.channel ? callback(stream) : undefined),
16
+ connect: async (options) => runtime.connectScopedChannel({
17
+ ...options,
18
+ scope: options.scope ?? 'session',
19
+ deviceId: options.deviceId ?? (typeof options.device === 'string'
20
+ ? options.device
21
+ : options.device?.deviceId),
22
+ ticket: options.ticket ?? (typeof options.device === 'string'
23
+ ? undefined
24
+ : options.device?.ticket),
25
+ }),
26
+ connectScoped: (options) => runtime.connectScopedChannel(options),
27
+ },
28
+ diagnostics: {
29
+ connections: () => runtime.getConnections(),
30
+ applicationReadyConnections: (options) => runtime.getApplicationReadyConnections(options),
31
+ onConnection: (callback) => runtime.onConnection(callback),
32
+ onDisconnection: (callback) => runtime.onDisconnection(callback),
33
+ onConnectionEvent: (callback) => runtime.onConnectionEvent(callback),
34
+ status: () => runtime.getRuntimeStatus(),
35
+ policy: () => runtime.getRuntimePolicy(),
36
+ capabilities: () => runtime.getRuntimeCapabilities(),
37
+ capabilityProfile: () => runtime.getCapabilityProfile(),
38
+ connectionStates: () => runtime.getConnectionStates(),
39
+ onConnectionStateChange: (callback) => runtime.onConnectionStateChange(callback),
40
+ forceReconnectSnapshot: () => runtime.forceReconnectSnapshot(),
41
+ peerReconciliation: () => runtime.getPeerReconciliationStats(),
42
+ },
43
+ peers: {
44
+ watch: (callback) => runtime.watchPeerStates(callback),
45
+ watchLifecycle: (callback) => runtime.watchPeerLifecycle(callback),
46
+ get: (id) => runtime.getPeerState(id),
47
+ listConnected: () => runtime.listConnectedPeers(),
48
+ connect: (options) => runtime.connectPeer(options),
49
+ disconnect: (id, scope) => runtime.disconnectPeer(id, scope),
50
+ forceDisconnect: (id) => runtime.forceDisconnectPeer(id),
51
+ session: (id) => runtime.getPeerSession(id),
52
+ sessions: () => runtime.listPeerSessions(),
53
+ waitConnected: (id, timeoutMs) => runtime.waitForConnectedPeer(id, timeoutMs),
54
+ readiness: (id, timeoutMs) => runtime.getPeerReadiness(id, timeoutMs),
55
+ health: (id) => runtime.getPeerHealth(id),
56
+ identity: (id) => runtime.resolvePeerIdentity(id),
57
+ addScope: (id, scope) => runtime.addPeerScope(id, scope),
58
+ releaseScope: (id, scope) => runtime.releasePeerScope(id, scope),
59
+ scopes: (id) => runtime.getPeerScopes(id),
60
+ refresh: () => runtime.refreshPeerSnapshot(),
61
+ },
62
+ };
63
+ }
1
64
  export const FILE_TRANSFER_CHANNEL = {
2
65
  id: 'openrtc.file-transfer.v1',
3
66
  kind: 'transfer',
@@ -13,6 +76,148 @@ const DEFAULT_CHUNK_BYTES = 64 * 1024;
13
76
  const DEFAULT_MAX_HEADER_BYTES = 64 * 1024;
14
77
  const DEFAULT_MAX_BUFFERED_FILE_BYTES = 256 * 1024 * 1024;
15
78
  const DEFAULT_ACK_TIMEOUT_MS = 15000;
79
+ const ROUTED_FRAME_MAGIC = new Uint8Array([0x4f, 0x46, 0x54, 0x32]); // OFT2
80
+ const ROUTED_KIND_OFFER = 0x01;
81
+ const ROUTED_KIND_RESUME = 0x02;
82
+ const ROUTED_KIND_CHUNK = 0x03;
83
+ const ROUTED_KIND_ACK = 0x04;
84
+ const ROUTED_KIND_COMPLETE = 0x05;
85
+ const ROUTED_KIND_COMPLETED = 0x06;
86
+ const ROUTED_KIND_REJECT = 0x07;
87
+ const DEFAULT_ROUTED_CHUNK_BYTES = 48 * 1024;
88
+ const DEFAULT_ROUTED_WINDOW_CHUNKS = 8;
89
+ const MAX_ROUTED_TRANSFER_ID_BYTES = 512;
90
+ function routedTransferId(frame) {
91
+ return frame.kind === 'offer' ? frame.header.transferId : frame.transferId;
92
+ }
93
+ function writeU64(view, offset, value) {
94
+ if (!Number.isSafeInteger(value) || value < 0)
95
+ throw new Error('routed transfer offset is invalid');
96
+ view.setBigUint64(offset, BigInt(value), false);
97
+ }
98
+ function readU64(view, offset) {
99
+ const value = view.getBigUint64(offset, false);
100
+ if (value > BigInt(Number.MAX_SAFE_INTEGER))
101
+ throw new Error('routed transfer offset exceeds JavaScript safe integer range');
102
+ return Number(value);
103
+ }
104
+ export function encodeRoutedTransferFrame(frame, maxHeaderBytes = DEFAULT_MAX_HEADER_BYTES, maxChunkBytes = DEFAULT_ROUTED_CHUNK_BYTES) {
105
+ const transferId = frame.kind === 'offer' ? frame.header.transferId : frame.transferId;
106
+ const id = new TextEncoder().encode(transferId);
107
+ if (!id.byteLength || id.byteLength > MAX_ROUTED_TRANSFER_ID_BYTES) {
108
+ throw new Error('routed transferId length is invalid');
109
+ }
110
+ let kind;
111
+ let body;
112
+ switch (frame.kind) {
113
+ case 'offer': {
114
+ kind = ROUTED_KIND_OFFER;
115
+ const header = new TextEncoder().encode(JSON.stringify(frame.header));
116
+ if (!header.byteLength || header.byteLength > maxHeaderBytes)
117
+ throw new Error('routed offer header is too large');
118
+ body = new Uint8Array(4 + header.byteLength);
119
+ new DataView(body.buffer).setUint32(0, header.byteLength, false);
120
+ body.set(header, 4);
121
+ break;
122
+ }
123
+ case 'resume':
124
+ case 'ack':
125
+ case 'complete':
126
+ case 'completed': {
127
+ kind = frame.kind === 'resume' ? ROUTED_KIND_RESUME
128
+ : frame.kind === 'ack' ? ROUTED_KIND_ACK
129
+ : frame.kind === 'complete' ? ROUTED_KIND_COMPLETE
130
+ : ROUTED_KIND_COMPLETED;
131
+ body = new Uint8Array(8);
132
+ writeU64(new DataView(body.buffer), 0, frame.kind === 'resume' || frame.kind === 'ack' ? frame.offset : frame.size);
133
+ break;
134
+ }
135
+ case 'chunk': {
136
+ kind = ROUTED_KIND_CHUNK;
137
+ if (!frame.bytes.byteLength || frame.bytes.byteLength > maxChunkBytes) {
138
+ throw new Error(`routed transfer chunk must contain 1..${maxChunkBytes} bytes`);
139
+ }
140
+ body = new Uint8Array(9 + frame.bytes.byteLength);
141
+ writeU64(new DataView(body.buffer), 0, frame.offset);
142
+ body[8] = frame.ackRequested ? 1 : 0;
143
+ body.set(frame.bytes, 9);
144
+ break;
145
+ }
146
+ case 'reject': {
147
+ kind = ROUTED_KIND_REJECT;
148
+ const reason = new TextEncoder().encode(frame.reason);
149
+ if (reason.byteLength > Math.min(maxHeaderBytes, 0xffff))
150
+ throw new Error('routed rejection reason is too large');
151
+ body = new Uint8Array(2 + reason.byteLength);
152
+ new DataView(body.buffer).setUint16(0, reason.byteLength, false);
153
+ body.set(reason, 2);
154
+ break;
155
+ }
156
+ }
157
+ const output = new Uint8Array(7 + id.byteLength + body.byteLength);
158
+ output.set(ROUTED_FRAME_MAGIC, 0);
159
+ output[4] = kind;
160
+ new DataView(output.buffer).setUint16(5, id.byteLength, false);
161
+ output.set(id, 7);
162
+ output.set(body, 7 + id.byteLength);
163
+ return output;
164
+ }
165
+ export function decodeRoutedTransferFrame(input, maxFileBytes = DEFAULT_MAX_BUFFERED_FILE_BYTES, maxHeaderBytes = DEFAULT_MAX_HEADER_BYTES, maxChunkBytes = DEFAULT_ROUTED_CHUNK_BYTES) {
166
+ if (input.byteLength < 7 || ROUTED_FRAME_MAGIC.some((byte, index) => input[index] !== byte))
167
+ return null;
168
+ const view = new DataView(input.buffer, input.byteOffset, input.byteLength);
169
+ const kind = input[4];
170
+ const idLength = view.getUint16(5, false);
171
+ if (!idLength || idLength > MAX_ROUTED_TRANSFER_ID_BYTES || input.byteLength < 7 + idLength) {
172
+ throw new Error('invalid routed transferId');
173
+ }
174
+ const transferId = new TextDecoder().decode(input.slice(7, 7 + idLength));
175
+ const body = input.slice(7 + idLength);
176
+ const bodyView = new DataView(body.buffer, body.byteOffset, body.byteLength);
177
+ if (kind === ROUTED_KIND_OFFER) {
178
+ if (body.byteLength < 4)
179
+ throw new Error('truncated routed offer');
180
+ const length = bodyView.getUint32(0, false);
181
+ if (!length || length > maxHeaderBytes || body.byteLength !== 4 + length) {
182
+ throw new Error('invalid routed offer header length');
183
+ }
184
+ const header = parseHeader(body.slice(4), maxFileBytes);
185
+ if (header.transferId !== transferId)
186
+ throw new Error('routed offer transferId mismatch');
187
+ return { kind: 'offer', header };
188
+ }
189
+ if ([ROUTED_KIND_RESUME, ROUTED_KIND_ACK, ROUTED_KIND_COMPLETE, ROUTED_KIND_COMPLETED].includes(kind)) {
190
+ if (body.byteLength !== 8)
191
+ throw new Error('invalid routed offset frame');
192
+ const value = readU64(bodyView, 0);
193
+ if (value > maxFileBytes)
194
+ throw new Error('routed transfer offset exceeds configured limit');
195
+ if (kind === ROUTED_KIND_RESUME)
196
+ return { kind: 'resume', transferId, offset: value };
197
+ if (kind === ROUTED_KIND_ACK)
198
+ return { kind: 'ack', transferId, offset: value };
199
+ if (kind === ROUTED_KIND_COMPLETE)
200
+ return { kind: 'complete', transferId, size: value };
201
+ return { kind: 'completed', transferId, size: value };
202
+ }
203
+ if (kind === ROUTED_KIND_CHUNK) {
204
+ if (body.byteLength <= 9
205
+ || body.byteLength - 9 > maxChunkBytes
206
+ || (body[8] !== 0 && body[8] !== 1))
207
+ throw new Error('invalid routed chunk');
208
+ return { kind: 'chunk', transferId, offset: readU64(bodyView, 0), ackRequested: body[8] === 1, bytes: body.slice(9) };
209
+ }
210
+ if (kind === ROUTED_KIND_REJECT) {
211
+ if (body.byteLength < 2)
212
+ throw new Error('truncated routed rejection');
213
+ const length = bodyView.getUint16(0, false);
214
+ if (length > maxHeaderBytes || body.byteLength !== 2 + length) {
215
+ throw new Error('invalid routed rejection length');
216
+ }
217
+ return { kind: 'reject', transferId, reason: new TextDecoder().decode(body.slice(2)) };
218
+ }
219
+ throw new Error('unknown routed file-transfer frame');
220
+ }
16
221
  class ByteReader {
17
222
  constructor(stream) {
18
223
  this.buffer = new Uint8Array(0);
@@ -139,6 +344,12 @@ function bufferedSink(header, remoteNodeId) {
139
344
  };
140
345
  }
141
346
  export function createFileTransferProtocol(client, options = {}) {
347
+ const adaptiveClient = client;
348
+ if (options.routing !== 'stream'
349
+ && (typeof adaptiveClient.onMessage === 'function' || !!adaptiveClient.diagnostics)
350
+ && (typeof adaptiveClient.getConnections === 'function' || !!adaptiveClient.diagnostics)) {
351
+ return createRoutedFileTransferProtocol(client, options);
352
+ }
142
353
  const channel = options.channel ?? FILE_TRANSFER_CHANNEL;
143
354
  const chunkBytes = options.chunkBytes ?? DEFAULT_CHUNK_BYTES;
144
355
  const maxHeaderBytes = options.maxHeaderBytes ?? DEFAULT_MAX_HEADER_BYTES;
@@ -267,4 +478,329 @@ export function createFileTransferProtocol(client, options = {}) {
267
478
  },
268
479
  };
269
480
  }
481
+ /**
482
+ * Route-adaptive file transfer. Each bounded chunk is sent through
483
+ * `Connection.send`, so OpenRTC re-ranks the currently proven routes for every
484
+ * chunk. Receiver-confirmed offsets survive optional-route promotion/failure;
485
+ * the consumer remains responsible for persisting the surrounding intent.
486
+ */
487
+ export function createRoutedFileTransferProtocol(client, options = {}) {
488
+ const chunkBytes = options.chunkBytes ?? DEFAULT_ROUTED_CHUNK_BYTES;
489
+ const maxHeaderBytes = options.maxHeaderBytes ?? DEFAULT_MAX_HEADER_BYTES;
490
+ const maxFileBytes = options.maxFileBytes ?? DEFAULT_MAX_BUFFERED_FILE_BYTES;
491
+ const ackTimeoutMs = options.ackTimeoutMs ?? DEFAULT_ACK_TIMEOUT_MS;
492
+ const windowChunks = options.windowChunks ?? DEFAULT_ROUTED_WINDOW_CHUNKS;
493
+ const maxRecoveryAttempts = options.maxRecoveryAttempts ?? 3;
494
+ if (!Number.isSafeInteger(chunkBytes) || chunkBytes <= 0 || chunkBytes > DEFAULT_ROUTED_CHUNK_BYTES) {
495
+ throw new Error(`routed chunkBytes must be within 1..${DEFAULT_ROUTED_CHUNK_BYTES}`);
496
+ }
497
+ if (!Number.isSafeInteger(windowChunks) || windowChunks <= 0)
498
+ throw new Error('windowChunks must be positive');
499
+ if (!Number.isSafeInteger(maxRecoveryAttempts) || maxRecoveryAttempts < 0)
500
+ throw new Error('maxRecoveryAttempts must be non-negative');
501
+ const incoming = new Map();
502
+ const completed = new Map();
503
+ const controlListeners = new Map();
504
+ let receiveOptions = null;
505
+ let disposed = false;
506
+ const connectionMatches = (connection, id) => [connection.id, connection.remoteNodeId, connection.deviceId]
507
+ .some((candidate) => typeof candidate === 'string' && candidate === id);
508
+ const runtimeClient = client;
509
+ const resolveConnection = async (id) => {
510
+ const settled = await (runtimeClient.peers?.waitConnected(id, ackTimeoutMs)
511
+ ?? runtimeClient.waitForConnectedPeer?.(id, ackTimeoutMs)
512
+ ?? Promise.resolve(null)).catch(() => null);
513
+ const settledIds = settled && typeof settled === 'object'
514
+ ? [
515
+ settled.activeConnectionId,
516
+ ...(settled.candidateConnectionIds ?? []),
517
+ settled.peerId,
518
+ settled.deviceId,
519
+ settled.deviceIdHint,
520
+ settled.nodeId,
521
+ ].filter((candidate) => typeof candidate === 'string' && !!candidate)
522
+ : [];
523
+ const lookupIds = new Set([id, ...settledIds]);
524
+ const connections = runtimeClient.diagnostics?.applicationReadyConnections?.()
525
+ ?? runtimeClient.getApplicationReadyConnections?.()
526
+ ?? runtimeClient.diagnostics?.connections()
527
+ ?? runtimeClient.getConnections?.()
528
+ ?? [];
529
+ const connection = connections.find((candidate) => !candidate.isClosed && [...lookupIds].some((lookupId) => connectionMatches(candidate, lookupId)));
530
+ if (!connection)
531
+ throw new Error(`no application-ready OpenRTC route for ${id}`);
532
+ return connection;
533
+ };
534
+ const sendFrame = async (target, frame) => {
535
+ const connection = typeof target === 'string' ? await resolveConnection(target) : target;
536
+ await connection.send(encodeRoutedTransferFrame(frame, maxHeaderBytes, chunkBytes));
537
+ };
538
+ const waitForControl = async (transferId, predicate, send, signal) => {
539
+ let resolveFrame;
540
+ const operation = new Promise((resolve) => { resolveFrame = resolve; });
541
+ const listener = (frame) => {
542
+ if (predicate(frame))
543
+ resolveFrame(frame);
544
+ };
545
+ const listeners = controlListeners.get(transferId) ?? new Set();
546
+ listeners.add(listener);
547
+ controlListeners.set(transferId, listeners);
548
+ try {
549
+ await send();
550
+ return await waitWithDeadline(operation, ackTimeoutMs, signal);
551
+ }
552
+ finally {
553
+ listeners.delete(listener);
554
+ if (!listeners.size)
555
+ controlListeners.delete(transferId);
556
+ }
557
+ };
558
+ const respond = async (connection, frame) => {
559
+ try {
560
+ await sendFrame(connection, frame);
561
+ }
562
+ catch (error) {
563
+ receiveOptions?.onError?.(error instanceof Error ? error : new Error(String(error)));
564
+ }
565
+ };
566
+ const processIncoming = async (connection, remoteNodeId, frame) => {
567
+ const configured = receiveOptions;
568
+ if (!configured)
569
+ return;
570
+ if (frame.kind === 'offer') {
571
+ const alreadyCompleted = completed.get(frame.header.transferId);
572
+ if (alreadyCompleted === frame.header.size) {
573
+ await respond(connection, { kind: 'completed', transferId: frame.header.transferId, size: alreadyCompleted });
574
+ return;
575
+ }
576
+ const existing = incoming.get(frame.header.transferId);
577
+ if (existing) {
578
+ await respond(connection, { kind: 'resume', transferId: frame.header.transferId, offset: existing.received });
579
+ return;
580
+ }
581
+ try {
582
+ const sink = options.createReceiveSink
583
+ ? await options.createReceiveSink(frame.header, remoteNodeId)
584
+ : bufferedSink(frame.header, remoteNodeId);
585
+ const received = sink.resumeOffset ?? 0;
586
+ if (!Number.isSafeInteger(received) || received < 0 || received > frame.header.size) {
587
+ throw new Error('receive sink returned an invalid resumeOffset');
588
+ }
589
+ incoming.set(frame.header.transferId, {
590
+ header: frame.header,
591
+ remoteNodeId,
592
+ connection,
593
+ sink,
594
+ received,
595
+ chain: Promise.resolve(),
596
+ });
597
+ configured.onProgress?.({ transferId: frame.header.transferId, transferredBytes: received, totalBytes: frame.header.size, direction: 'receive' });
598
+ await respond(connection, { kind: 'resume', transferId: frame.header.transferId, offset: received });
599
+ }
600
+ catch (error) {
601
+ configured.onError?.(error instanceof Error ? error : new Error(String(error)));
602
+ await respond(connection, { kind: 'reject', transferId: frame.header.transferId, reason: String(error) });
603
+ }
604
+ return;
605
+ }
606
+ const state = incoming.get(frame.transferId);
607
+ if (!state) {
608
+ if (frame.kind === 'complete' && completed.get(frame.transferId) === frame.size) {
609
+ await respond(connection, { kind: 'completed', transferId: frame.transferId, size: frame.size });
610
+ }
611
+ else if (frame.kind === 'chunk' || frame.kind === 'complete') {
612
+ await respond(connection, { kind: 'reject', transferId: frame.transferId, reason: 'transfer offer is required' });
613
+ }
614
+ return;
615
+ }
616
+ state.connection = connection;
617
+ if (frame.kind === 'chunk') {
618
+ if (frame.offset < state.received && frame.offset + frame.bytes.byteLength <= state.received) {
619
+ if (frame.ackRequested)
620
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
621
+ return;
622
+ }
623
+ if (frame.offset !== state.received || state.received + frame.bytes.byteLength > state.header.size) {
624
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
625
+ return;
626
+ }
627
+ await state.sink.write(frame.bytes);
628
+ state.received += frame.bytes.byteLength;
629
+ configured.onProgress?.({ transferId: frame.transferId, transferredBytes: state.received, totalBytes: state.header.size, direction: 'receive' });
630
+ if (frame.ackRequested)
631
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
632
+ return;
633
+ }
634
+ if (frame.kind === 'complete') {
635
+ if (frame.size !== state.header.size || state.received !== state.header.size) {
636
+ await respond(connection, { kind: 'ack', transferId: frame.transferId, offset: state.received });
637
+ return;
638
+ }
639
+ const result = await state.sink.close();
640
+ if (state.header.sha256) {
641
+ const verified = state.sink.verifySha256
642
+ ? await state.sink.verifySha256(state.header.sha256)
643
+ : result && typeof result === 'object' && 'blob' in result
644
+ ? await sha256(result.blob) === state.header.sha256.toLowerCase()
645
+ : false;
646
+ if (!verified)
647
+ throw new Error('file transfer integrity check failed');
648
+ }
649
+ incoming.delete(frame.transferId);
650
+ completed.set(frame.transferId, frame.size);
651
+ if (completed.size > 1024)
652
+ completed.delete(completed.keys().next().value);
653
+ await configured.onFile({ header: state.header, remoteNodeId: state.remoteNodeId, result });
654
+ await respond(connection, { kind: 'completed', transferId: frame.transferId, size: frame.size });
655
+ }
656
+ };
657
+ const handleMessage = (connection, message) => {
658
+ if (disposed)
659
+ return;
660
+ const bytes = message instanceof Uint8Array
661
+ ? message
662
+ : message instanceof ArrayBuffer
663
+ ? new Uint8Array(message)
664
+ : null;
665
+ if (!bytes)
666
+ return;
667
+ let frame;
668
+ try {
669
+ frame = decodeRoutedTransferFrame(bytes, maxFileBytes, maxHeaderBytes, chunkBytes);
670
+ }
671
+ catch (error) {
672
+ receiveOptions?.onError?.(error instanceof Error ? error : new Error(String(error)));
673
+ return;
674
+ }
675
+ if (!frame)
676
+ return;
677
+ const frameId = routedTransferId(frame);
678
+ const listeners = controlListeners.get(frameId);
679
+ if (listeners && ['resume', 'ack', 'completed', 'reject'].includes(frame.kind)) {
680
+ for (const listener of [...listeners])
681
+ listener(frame);
682
+ }
683
+ if (['resume', 'ack', 'completed', 'reject'].includes(frame.kind))
684
+ return;
685
+ const routeConnection = connection;
686
+ const remoteNodeId = routeConnection.deviceId ?? routeConnection.remoteNodeId ?? routeConnection.id ?? 'unknown';
687
+ const current = incoming.get(frameId);
688
+ const chain = (current?.chain ?? Promise.resolve())
689
+ .then(() => processIncoming(routeConnection, remoteNodeId, frame))
690
+ .catch(async (error) => {
691
+ const state = incoming.get(routedTransferId(frame));
692
+ incoming.delete(routedTransferId(frame));
693
+ await state?.sink.abort(error).catch(() => undefined);
694
+ receiveOptions?.onError?.(error instanceof Error ? error : new Error(String(error)));
695
+ await respond(routeConnection, { kind: 'reject', transferId: routedTransferId(frame), reason: String(error) });
696
+ });
697
+ if (current)
698
+ current.chain = chain;
699
+ void chain;
700
+ };
701
+ const messageSource = client;
702
+ let offMessage;
703
+ if (typeof messageSource.onMessage === 'function') {
704
+ offMessage = messageSource.onMessage(handleMessage);
705
+ }
706
+ else {
707
+ const attached = new WeakSet();
708
+ const attach = (connection) => {
709
+ if (typeof connection.onMessage !== 'function' || attached.has(connection))
710
+ return;
711
+ attached.add(connection);
712
+ connection.onMessage((message) => handleMessage(connection, message));
713
+ };
714
+ for (const connection of client.diagnostics.connections())
715
+ attach(connection);
716
+ offMessage = client.diagnostics.onConnection((connection) => attach(connection));
717
+ }
718
+ return {
719
+ async send(deviceId, file, sendOptions = {}) {
720
+ if (disposed)
721
+ throw new Error('routed file-transfer protocol is disposed');
722
+ if (file.size > maxFileBytes)
723
+ throw new Error(`file exceeds ${maxFileBytes} byte transfer limit`);
724
+ throwIfAborted(sendOptions.signal);
725
+ const id = sendOptions.transferId ?? transferId();
726
+ const header = {
727
+ version: 1,
728
+ transferId: id,
729
+ name: file.name,
730
+ size: file.size,
731
+ mimeType: file.type || 'application/octet-stream',
732
+ metadata: sendOptions.metadata,
733
+ sha256: sendOptions.integrity === 'sha256' ? await sha256(file) : undefined,
734
+ };
735
+ let recoveryAttempts = 0;
736
+ const offer = async () => {
737
+ const response = await waitForControl(id, (frame) => frame.kind === 'resume' || frame.kind === 'completed' || frame.kind === 'reject', () => sendFrame(deviceId, { kind: 'offer', header }), sendOptions.signal);
738
+ if (response.kind === 'reject')
739
+ throw new Error(`file transfer rejected: ${response.reason}`);
740
+ if (response.kind === 'completed')
741
+ return response.size;
742
+ if (response.kind !== 'resume' || response.offset > file.size)
743
+ throw new Error('invalid file transfer resume response');
744
+ return response.offset;
745
+ };
746
+ let confirmed = await offer();
747
+ sendOptions.onProgress?.({ transferId: id, transferredBytes: confirmed, totalBytes: file.size, direction: 'send' });
748
+ while (confirmed < file.size) {
749
+ throwIfAborted(sendOptions.signal);
750
+ const windowStart = confirmed;
751
+ let cursor = confirmed;
752
+ const frames = [];
753
+ for (let index = 0; index < windowChunks && cursor < file.size; index += 1) {
754
+ const bytes = new Uint8Array(await file.slice(cursor, cursor + chunkBytes).arrayBuffer());
755
+ const end = cursor + bytes.byteLength;
756
+ frames.push({ kind: 'chunk', transferId: id, offset: cursor, ackRequested: end === file.size || index === windowChunks - 1, bytes });
757
+ cursor = end;
758
+ }
759
+ try {
760
+ const response = await waitForControl(id, (frame) => (frame.kind === 'ack' && frame.offset >= windowStart) || frame.kind === 'reject', async () => {
761
+ for (const frame of frames)
762
+ await sendFrame(deviceId, frame);
763
+ }, sendOptions.signal);
764
+ if (response.kind === 'reject')
765
+ throw new Error(`file transfer rejected: ${response.reason}`);
766
+ if (response.kind !== 'ack' || response.offset < windowStart || response.offset > cursor) {
767
+ throw new Error('invalid file transfer offset acknowledgement');
768
+ }
769
+ confirmed = response.offset;
770
+ recoveryAttempts = 0;
771
+ sendOptions.onProgress?.({ transferId: id, transferredBytes: confirmed, totalBytes: file.size, direction: 'send' });
772
+ }
773
+ catch (error) {
774
+ if (recoveryAttempts >= maxRecoveryAttempts)
775
+ throw error;
776
+ recoveryAttempts += 1;
777
+ confirmed = await offer();
778
+ }
779
+ }
780
+ 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);
781
+ if (completion.kind === 'reject')
782
+ throw new Error(`file transfer rejected: ${completion.reason}`);
783
+ if (completion.kind !== 'completed' || completion.size !== file.size) {
784
+ throw new Error('receiver did not confirm completed file transfer');
785
+ }
786
+ return id;
787
+ },
788
+ onIncoming(configured) {
789
+ receiveOptions = configured;
790
+ return () => {
791
+ if (receiveOptions === configured)
792
+ receiveOptions = null;
793
+ };
794
+ },
795
+ dispose() {
796
+ disposed = true;
797
+ offMessage();
798
+ receiveOptions = null;
799
+ controlListeners.clear();
800
+ for (const state of incoming.values())
801
+ void state.sink.abort(new Error('file-transfer protocol disposed'));
802
+ incoming.clear();
803
+ },
804
+ };
805
+ }
270
806
  //# 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": "2.0.0-rc.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -8,7 +8,11 @@
8
8
  "license": "SEE LICENSE IN LICENSE",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
11
- "files": ["dist", "LICENSE", "README.md"],
11
+ "files": [
12
+ "dist",
13
+ "LICENSE",
14
+ "README.md"
15
+ ],
12
16
  "exports": {
13
17
  ".": {
14
18
  "types": "./dist/index.d.ts",
@@ -23,9 +27,10 @@
23
27
  "prepublishOnly": "pnpm run build && pnpm run test"
24
28
  },
25
29
  "peerDependencies": {
26
- "openrtc": "^1.0.0"
30
+ "openrtc": "2.0.0-rc.0"
27
31
  },
28
32
  "devDependencies": {
33
+ "@types/node": "^24.12.2",
29
34
  "openrtc": "workspace:*",
30
35
  "typescript": "^5.8.3",
31
36
  "vitest": "^4.0.18"