@shhhum/xftp-web 0.3.0 → 0.4.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
@@ -12,42 +12,77 @@ npm install xftp-web
12
12
 
13
13
  ```typescript
14
14
  import {
15
- newXFTPAgent, closeXFTPAgent,
15
+ XFTPAgent,
16
16
  parseXFTPServer,
17
- encryptFileForUpload, uploadFile, downloadFile, deleteFile,
18
- decodeDescriptionURI, encodeDescriptionURI,
17
+ sendFile, receiveFile, deleteFile,
19
18
  XFTPRetriableError, XFTPPermanentError, isRetriable,
20
19
  } from "xftp-web"
21
20
 
22
21
  // Create agent (manages connections)
23
- const agent = newXFTPAgent()
22
+ const agent = new XFTPAgent()
24
23
 
25
- // Upload — chunks are distributed randomly across servers
26
24
  const servers = [
27
25
  parseXFTPServer("xftp://server1..."),
28
26
  parseXFTPServer("xftp://server2..."),
29
27
  parseXFTPServer("xftp://server3..."),
30
28
  ]
31
- const encrypted = encryptFileForUpload(fileBytes, "photo.jpg")
32
- const {rcvDescriptions, sndDescription, uri} = await uploadFile(agent, servers, encrypted, {
33
- onProgress: (uploaded, total) => console.log(`${uploaded}/${total}`),
34
- })
35
29
 
36
- // Download (from URI or FileDescription)
37
- const fd = decodeDescriptionURI(uri)
38
- const {header, content} = await downloadFile(agent, fd)
30
+ // Upload (from Uint8Array)
31
+ const {rcvDescriptions, sndDescription, uri} = await sendFile(
32
+ agent, servers, fileBytes, "photo.jpg",
33
+ {onProgress: (uploaded, total) => console.log(`${uploaded}/${total}`)}
34
+ )
35
+
36
+ // Upload (streaming — constant memory, no full-file buffer)
37
+ const file = inputEl.files[0]
38
+ const result = await sendFile(
39
+ agent, servers, file.stream(), file.size, file.name,
40
+ {onProgress: (uploaded, total) => console.log(`${uploaded}/${total}`)}
41
+ )
42
+
43
+ // Download
44
+ const {header, content} = await receiveFile(agent, uri, {
45
+ onProgress: (downloaded, total) => console.log(`${downloaded}/${total}`)
46
+ })
39
47
 
40
- // Delete (using sender description)
48
+ // Delete (requires sender description from upload)
41
49
  await deleteFile(agent, sndDescription)
42
50
 
43
51
  // Cleanup
44
- closeXFTPAgent(agent)
52
+ agent.close()
53
+ ```
54
+
55
+ ### Advanced usage
56
+
57
+ For streaming encryption (avoids buffering the full encrypted file) or worker-based uploads:
58
+
59
+ ```typescript
60
+ import {
61
+ encryptFileForUpload, uploadFile, downloadFile,
62
+ decodeDescriptionURI,
63
+ } from "xftp-web"
64
+
65
+ // Streaming encryption — encrypted slices emitted via callback
66
+ const metadata = await encryptFileForUpload(fileBytes, "photo.jpg", {
67
+ onSlice: (data) => { /* write to OPFS, IndexedDB, etc. */ },
68
+ onProgress: (done, total) => {},
69
+ })
70
+ // metadata has {digest, key, nonce, chunkSizes} but no encData
71
+
72
+ // Upload with custom chunk reader (e.g. reading from OPFS)
73
+ const result = await uploadFile(agent, servers, metadata, {
74
+ readChunk: (offset, size) => readFromStorage(offset, size),
75
+ })
76
+
77
+ // Download with FileDescription object
78
+ const fd = decodeDescriptionURI(uri)
79
+ const {header, content} = await downloadFile(agent, fd)
45
80
  ```
46
81
 
47
82
  ### Upload options
48
83
 
49
84
  ```typescript
50
- await uploadFile(agent, servers, encrypted, {
85
+ await sendFile(agent, servers, fileBytes, "photo.jpg", {
51
86
  onProgress: (uploaded, total) => {}, // progress callback
52
87
  auth: basicAuthBytes, // BasicAuth for auth-required servers
53
88
  numRecipients: 3, // multiple independent download credentials (default: 1)
@@ -58,7 +93,7 @@ await uploadFile(agent, servers, encrypted, {
58
93
 
59
94
  ```typescript
60
95
  try {
61
- await uploadFile(agent, servers, encrypted)
96
+ await sendFile(agent, servers, fileBytes, "photo.jpg")
62
97
  } catch (e) {
63
98
  if (e instanceof XFTPRetriableError) {
64
99
  // Network/timeout/session errors — safe to retry
package/dist/agent.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ export { prepareEncryption, type EncryptionParams } from "./crypto/file.js";
1
2
  import { type FileDescription } from "./protocol/description.js";
2
- import { type XFTPClientAgent } from "./client.js";
3
- export { newXFTPAgent, closeXFTPAgent, type XFTPClientAgent, type TransportConfig, XFTPRetriableError, XFTPPermanentError, isRetriable, categorizeError, humanReadableMessage, ackXFTPChunk, addXFTPRecipients } from "./client.js";
3
+ import { XFTPAgent } from "./client.js";
4
+ export { XFTPAgent, type TransportConfig, XFTPRetriableError, XFTPPermanentError, isRetriable, categorizeError, humanReadableMessage } from "./client.js";
4
5
  import type { XFTPServer } from "./protocol/address.js";
5
6
  import type { FileHeader } from "./crypto/file.js";
6
7
  export interface EncryptedFileMetadata {
@@ -23,7 +24,14 @@ export interface DownloadResult {
23
24
  }
24
25
  export declare function encodeDescriptionURI(fd: FileDescription): string;
25
26
  export declare function decodeDescriptionURI(fragment: string): FileDescription;
26
- export declare function encryptFileForUpload(source: Uint8Array, fileName: string): EncryptedFileInfo;
27
+ export interface EncryptForUploadOptions {
28
+ onProgress?: (done: number, total: number) => void;
29
+ onSlice?: (data: Uint8Array) => void | Promise<void>;
30
+ }
31
+ export declare function encryptFileForUpload(source: Uint8Array, fileName: string, options: EncryptForUploadOptions & {
32
+ onSlice: NonNullable<EncryptForUploadOptions['onSlice']>;
33
+ }): Promise<EncryptedFileMetadata>;
34
+ export declare function encryptFileForUpload(source: Uint8Array, fileName: string, options?: EncryptForUploadOptions): Promise<EncryptedFileInfo>;
27
35
  export interface UploadOptions {
28
36
  onProgress?: (uploaded: number, total: number) => void;
29
37
  redirectThreshold?: number;
@@ -31,7 +39,14 @@ export interface UploadOptions {
31
39
  auth?: Uint8Array;
32
40
  numRecipients?: number;
33
41
  }
34
- export declare function uploadFile(agent: XFTPClientAgent, servers: XFTPServer[], encrypted: EncryptedFileMetadata, options?: UploadOptions): Promise<UploadResult>;
42
+ export declare function uploadFile(agent: XFTPAgent, servers: XFTPServer[], encrypted: EncryptedFileMetadata, options?: UploadOptions): Promise<UploadResult>;
43
+ export interface SendFileOptions {
44
+ onProgress?: (uploaded: number, total: number) => void;
45
+ auth?: Uint8Array;
46
+ numRecipients?: number;
47
+ }
48
+ export declare function sendFile(agent: XFTPAgent, servers: XFTPServer[], source: Uint8Array, fileName: string, options?: SendFileOptions): Promise<UploadResult>;
49
+ export declare function sendFile(agent: XFTPAgent, servers: XFTPServer[], source: AsyncIterable<Uint8Array>, sourceSize: number, fileName: string, options?: SendFileOptions): Promise<UploadResult>;
35
50
  export interface RawDownloadedChunk {
36
51
  chunkNo: number;
37
52
  dhSecret: Uint8Array;
@@ -42,7 +57,10 @@ export interface RawDownloadedChunk {
42
57
  export interface DownloadRawOptions {
43
58
  onProgress?: (downloaded: number, total: number) => void;
44
59
  }
45
- export declare function downloadFileRaw(agent: XFTPClientAgent, fd: FileDescription, onRawChunk: (chunk: RawDownloadedChunk) => Promise<void>, options?: DownloadRawOptions): Promise<FileDescription>;
46
- export declare function downloadFile(agent: XFTPClientAgent, fd: FileDescription, onProgress?: (downloaded: number, total: number) => void): Promise<DownloadResult>;
47
- export declare function deleteFile(agent: XFTPClientAgent, sndDescription: FileDescription): Promise<void>;
60
+ export declare function downloadFileRaw(agent: XFTPAgent, fd: FileDescription, onRawChunk: (chunk: RawDownloadedChunk) => Promise<void>, options?: DownloadRawOptions): Promise<FileDescription>;
61
+ export declare function downloadFile(agent: XFTPAgent, fd: FileDescription, onProgress?: (downloaded: number, total: number) => void): Promise<DownloadResult>;
62
+ export declare function receiveFile(agent: XFTPAgent, uri: string, options?: {
63
+ onProgress?: (downloaded: number, total: number) => void;
64
+ }): Promise<DownloadResult>;
65
+ export declare function deleteFile(agent: XFTPAgent, sndDescription: FileDescription): Promise<void>;
48
66
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/agent.js CHANGED
@@ -3,13 +3,16 @@
3
3
  // Combines all building blocks: encryption, chunking, XFTP client commands,
4
4
  // file descriptions, and DEFLATE-compressed URI encoding.
5
5
  import pako from "pako";
6
- import { encryptFile, encodeFileHeader } from "./crypto/file.js";
6
+ import { encryptFileAsync, prepareEncryption } from "./crypto/file.js";
7
+ import { sbInit, sbEncryptChunk, sbAuth } from "./crypto/secretbox.js";
8
+ import { concatBytes, encodeInt64 } from "./protocol/encoding.js";
9
+ export { prepareEncryption } from "./crypto/file.js";
7
10
  import { generateEd25519KeyPair, encodePubKeyEd25519, encodePrivKeyEd25519, decodePrivKeyEd25519, ed25519KeyPairFromSeed } from "./crypto/keys.js";
8
- import { sha512Streaming } from "./crypto/digest.js";
9
- import { prepareChunkSizes, prepareChunkSpecs, getChunkDigest, fileSizeLen, authTagSize } from "./protocol/chunks.js";
11
+ import { sha512Streaming, sha512Init, sha512Update, sha512Final } from "./crypto/digest.js";
12
+ import { prepareChunkSpecs, getChunkDigest } from "./protocol/chunks.js";
10
13
  import { encodeFileDescription, decodeFileDescription, validateFileDescription, base64urlEncode, base64urlDecode } from "./protocol/description.js";
11
14
  import { createXFTPChunk, addXFTPRecipients, uploadXFTPChunk, downloadXFTPChunk, downloadXFTPChunkRaw, deleteXFTPChunk, ackXFTPChunk } from "./client.js";
12
- export { newXFTPAgent, closeXFTPAgent, XFTPRetriableError, XFTPPermanentError, isRetriable, categorizeError, humanReadableMessage, ackXFTPChunk, addXFTPRecipients } from "./client.js";
15
+ export { XFTPAgent, XFTPRetriableError, XFTPPermanentError, isRetriable, categorizeError, humanReadableMessage } from "./client.js";
13
16
  import { processDownloadedFile, decryptReceivedChunk } from "./download.js";
14
17
  import { formatXFTPServer, parseXFTPServer } from "./protocol/address.js";
15
18
  // -- URI encoding/decoding (RFC section 4.1: DEFLATE + base64url)
@@ -27,24 +30,57 @@ export function decodeDescriptionURI(fragment) {
27
30
  throw new Error("decodeDescriptionURI: " + err);
28
31
  return fd;
29
32
  }
30
- // -- Upload
31
- export function encryptFileForUpload(source, fileName) {
32
- const key = new Uint8Array(32);
33
- const nonce = new Uint8Array(24);
34
- crypto.getRandomValues(key);
35
- crypto.getRandomValues(nonce);
36
- const fileHdr = encodeFileHeader({ fileName, fileExtra: null });
37
- const fileSize = BigInt(fileHdr.length + source.length);
38
- const payloadSize = Number(fileSize) + fileSizeLen + authTagSize;
39
- const chunkSizes = prepareChunkSizes(payloadSize);
40
- const encSize = BigInt(chunkSizes.reduce((a, b) => a + b, 0));
41
- const encData = encryptFile(source, fileHdr, key, nonce, fileSize, encSize);
42
- const digest = sha512Streaming([encData]);
43
- console.log(`[AGENT-DBG] encrypt: encData.len=${encData.length} digest=${_dbgHex(digest, 64)} chunkSizes=[${chunkSizes.join(',')}]`);
44
- return { encData, digest, key, nonce, chunkSizes };
33
+ export async function encryptFileForUpload(source, fileName, options) {
34
+ const { onProgress, onSlice } = options ?? {};
35
+ const { fileHdr, key, nonce, fileSize, encSize, chunkSizes } = prepareEncryption(source.length, fileName);
36
+ if (onSlice) {
37
+ const hashState = sha512Init();
38
+ await encryptFileAsync(source, fileHdr, key, nonce, fileSize, encSize, onProgress, (data) => {
39
+ sha512Update(hashState, data);
40
+ return onSlice(data);
41
+ });
42
+ const digest = sha512Final(hashState);
43
+ return { digest, key, nonce, chunkSizes };
44
+ }
45
+ else {
46
+ const encData = await encryptFileAsync(source, fileHdr, key, nonce, fileSize, encSize, onProgress);
47
+ const digest = sha512Streaming([encData]);
48
+ console.log(`[AGENT-DBG] encrypt: encData.len=${encData.length} digest=${_dbgHex(digest, 64)} chunkSizes=[${chunkSizes.join(',')}]`);
49
+ return { encData, digest, key, nonce, chunkSizes };
50
+ }
45
51
  }
46
52
  const DEFAULT_REDIRECT_THRESHOLD = 400;
47
- const MAX_RECIPIENTS_PER_REQUEST = 200;
53
+ const MAX_RECIPIENTS_PER_REQUEST = 200; // each key is ~46 bytes; 200 keys fit within 16KB XFTP block
54
+ async function uploadSingleChunk(agent, server, chunkNo, chunkData, chunkSize, numRecipients, auth) {
55
+ const sndKp = generateEd25519KeyPair();
56
+ const rcvKps = Array.from({ length: numRecipients }, () => generateEd25519KeyPair());
57
+ const chunkDigest = getChunkDigest(chunkData);
58
+ const fileInfo = {
59
+ sndKey: encodePubKeyEd25519(sndKp.publicKey),
60
+ size: chunkSize,
61
+ digest: chunkDigest
62
+ };
63
+ const firstBatch = Math.min(numRecipients, MAX_RECIPIENTS_PER_REQUEST);
64
+ const firstBatchKeys = rcvKps.slice(0, firstBatch).map(kp => encodePubKeyEd25519(kp.publicKey));
65
+ const { senderId, recipientIds: firstIds } = await createXFTPChunk(agent, server, sndKp.privateKey, fileInfo, firstBatchKeys, auth);
66
+ const allRecipientIds = [...firstIds];
67
+ let added = firstBatch;
68
+ while (added < numRecipients) {
69
+ const batchSize = Math.min(numRecipients - added, MAX_RECIPIENTS_PER_REQUEST);
70
+ const batchKeys = rcvKps.slice(added, added + batchSize).map(kp => encodePubKeyEd25519(kp.publicKey));
71
+ const moreIds = await addXFTPRecipients(agent, server, sndKp.privateKey, senderId, batchKeys);
72
+ allRecipientIds.push(...moreIds);
73
+ added += batchSize;
74
+ }
75
+ await uploadXFTPChunk(agent, server, sndKp.privateKey, senderId, chunkData);
76
+ return {
77
+ chunkNo, senderId, senderKey: sndKp.privateKey,
78
+ recipients: allRecipientIds.map((rid, ri) => ({
79
+ recipientId: rid, recipientKey: rcvKps[ri].privateKey
80
+ })),
81
+ chunkSize, digest: chunkDigest, server
82
+ };
83
+ }
48
84
  export async function uploadFile(agent, servers, encrypted, options) {
49
85
  if (servers.length === 0)
50
86
  throw new Error("uploadFile: servers list is empty");
@@ -75,36 +111,8 @@ export async function uploadFile(agent, servers, encrypted, options) {
75
111
  await Promise.all([...byServer.values()].map(async (jobs) => {
76
112
  for (const { index, spec, server } of jobs) {
77
113
  const chunkNo = index + 1;
78
- const sndKp = generateEd25519KeyPair();
79
- const rcvKps = Array.from({ length: numRecipients }, () => generateEd25519KeyPair());
80
114
  const chunkData = await readChunk(spec.chunkOffset, spec.chunkSize);
81
- const chunkDigest = getChunkDigest(chunkData);
82
- console.log(`[AGENT-DBG] upload chunk=${chunkNo} offset=${spec.chunkOffset} size=${spec.chunkSize} digest=${_dbgHex(chunkDigest, 32)} data[0..8]=${_dbgHex(chunkData)} data[-8..]=${_dbgHex(chunkData.slice(-8))}`);
83
- const fileInfo = {
84
- sndKey: encodePubKeyEd25519(sndKp.publicKey),
85
- size: spec.chunkSize,
86
- digest: chunkDigest
87
- };
88
- const firstBatch = Math.min(numRecipients, MAX_RECIPIENTS_PER_REQUEST);
89
- const firstBatchKeys = rcvKps.slice(0, firstBatch).map(kp => encodePubKeyEd25519(kp.publicKey));
90
- const { senderId, recipientIds: firstIds } = await createXFTPChunk(agent, server, sndKp.privateKey, fileInfo, firstBatchKeys, auth ?? null);
91
- const allRecipientIds = [...firstIds];
92
- let added = firstBatch;
93
- while (added < numRecipients) {
94
- const batchSize = Math.min(numRecipients - added, MAX_RECIPIENTS_PER_REQUEST);
95
- const batchKeys = rcvKps.slice(added, added + batchSize).map(kp => encodePubKeyEd25519(kp.publicKey));
96
- const moreIds = await addXFTPRecipients(agent, server, sndKp.privateKey, senderId, batchKeys);
97
- allRecipientIds.push(...moreIds);
98
- added += batchSize;
99
- }
100
- await uploadXFTPChunk(agent, server, sndKp.privateKey, senderId, chunkData);
101
- sentChunks[index] = {
102
- chunkNo, senderId, senderKey: sndKp.privateKey,
103
- recipients: allRecipientIds.map((rid, ri) => ({
104
- recipientId: rid, recipientKey: rcvKps[ri].privateKey
105
- })),
106
- chunkSize: spec.chunkSize, digest: chunkDigest, server
107
- };
115
+ sentChunks[index] = await uploadSingleChunk(agent, server, chunkNo, chunkData, spec.chunkSize, numRecipients, auth ?? null);
108
116
  uploaded += spec.chunkSize;
109
117
  onProgress?.(uploaded, total);
110
118
  }
@@ -121,6 +129,85 @@ export async function uploadFile(agent, servers, encrypted, options) {
121
129
  }
122
130
  return { rcvDescriptions: finalRcvDescriptions, sndDescription, uri };
123
131
  }
132
+ export async function sendFile(agent, servers, source, fileNameOrSize, fileNameOrOptions, maybeOptions) {
133
+ let sourceSize, fileName, options;
134
+ if (source instanceof Uint8Array) {
135
+ sourceSize = source.length;
136
+ fileName = fileNameOrSize;
137
+ options = fileNameOrOptions;
138
+ }
139
+ else {
140
+ sourceSize = fileNameOrSize;
141
+ fileName = fileNameOrOptions;
142
+ options = maybeOptions;
143
+ }
144
+ if (servers.length === 0)
145
+ throw new Error("sendFile: servers list is empty");
146
+ const { onProgress, auth, numRecipients = 1 } = options ?? {};
147
+ const params = prepareEncryption(sourceSize, fileName);
148
+ const specs = prepareChunkSpecs(params.chunkSizes);
149
+ const total = params.chunkSizes.reduce((a, b) => a + b, 0);
150
+ const encState = sbInit(params.key, params.nonce);
151
+ const hashState = sha512Init();
152
+ const sentChunks = new Array(specs.length);
153
+ let specIdx = 0, chunkOff = 0, uploaded = 0;
154
+ let chunkBuf = new Uint8Array(specs[0].chunkSize);
155
+ async function flushChunk() {
156
+ const server = servers[Math.floor(Math.random() * servers.length)];
157
+ sentChunks[specIdx] = await uploadSingleChunk(agent, server, specIdx + 1, chunkBuf, specs[specIdx].chunkSize, numRecipients, auth ?? null);
158
+ uploaded += specs[specIdx].chunkSize;
159
+ onProgress?.(uploaded, total);
160
+ specIdx++;
161
+ if (specIdx < specs.length) {
162
+ chunkBuf = new Uint8Array(specs[specIdx].chunkSize);
163
+ chunkOff = 0;
164
+ }
165
+ }
166
+ async function feedEncrypted(data) {
167
+ sha512Update(hashState, data);
168
+ let off = 0;
169
+ while (off < data.length) {
170
+ const space = specs[specIdx].chunkSize - chunkOff;
171
+ const n = Math.min(space, data.length - off);
172
+ chunkBuf.set(data.subarray(off, off + n), chunkOff);
173
+ chunkOff += n;
174
+ off += n;
175
+ if (chunkOff === specs[specIdx].chunkSize)
176
+ await flushChunk();
177
+ }
178
+ }
179
+ await feedEncrypted(sbEncryptChunk(encState, concatBytes(encodeInt64(params.fileSize), params.fileHdr)));
180
+ const SLICE = 65536;
181
+ if (source instanceof Uint8Array) {
182
+ for (let off = 0; off < source.length; off += SLICE) {
183
+ await feedEncrypted(sbEncryptChunk(encState, source.subarray(off, Math.min(off + SLICE, source.length))));
184
+ }
185
+ }
186
+ else {
187
+ for await (const chunk of source) {
188
+ for (let off = 0; off < chunk.length; off += SLICE) {
189
+ await feedEncrypted(sbEncryptChunk(encState, chunk.subarray(off, Math.min(off + SLICE, chunk.length))));
190
+ }
191
+ }
192
+ }
193
+ const padLen = Number(params.encSize - 16n - params.fileSize - 8n);
194
+ const padding = new Uint8Array(padLen);
195
+ padding.fill(0x23);
196
+ await feedEncrypted(sbEncryptChunk(encState, padding));
197
+ await feedEncrypted(sbAuth(encState));
198
+ const digest = sha512Final(hashState);
199
+ const encrypted = { digest, key: params.key, nonce: params.nonce, chunkSizes: params.chunkSizes };
200
+ const rcvDescriptions = Array.from({ length: numRecipients }, (_, ri) => buildDescription("recipient", ri, encrypted, sentChunks));
201
+ const sndDescription = buildDescription("sender", 0, encrypted, sentChunks);
202
+ let uri = encodeDescriptionURI(rcvDescriptions[0]);
203
+ let finalRcvDescriptions = rcvDescriptions;
204
+ if (uri.length > DEFAULT_REDIRECT_THRESHOLD && sentChunks.length > 1) {
205
+ const redirected = await uploadRedirectDescription(agent, servers, rcvDescriptions[0], auth);
206
+ finalRcvDescriptions = [redirected, ...rcvDescriptions.slice(1)];
207
+ uri = encodeDescriptionURI(redirected);
208
+ }
209
+ return { rcvDescriptions: finalRcvDescriptions, sndDescription, uri };
210
+ }
124
211
  function buildDescription(party, recipientIndex, enc, chunks) {
125
212
  const defChunkSize = enc.chunkSizes[0];
126
213
  return {
@@ -146,7 +233,7 @@ function buildDescription(party, recipientIndex, enc, chunks) {
146
233
  async function uploadRedirectDescription(agent, servers, innerFd, auth) {
147
234
  const yaml = encodeFileDescription(innerFd);
148
235
  const yamlBytes = new TextEncoder().encode(yaml);
149
- const enc = encryptFileForUpload(yamlBytes, "");
236
+ const enc = await encryptFileForUpload(yamlBytes, "");
150
237
  const specs = prepareChunkSpecs(enc.chunkSizes);
151
238
  const chunkJobs = specs.map((spec, i) => ({
152
239
  index: i,
@@ -164,23 +251,8 @@ async function uploadRedirectDescription(agent, servers, innerFd, auth) {
164
251
  await Promise.all([...byServer.values()].map(async (jobs) => {
165
252
  for (const { index, spec, server } of jobs) {
166
253
  const chunkNo = index + 1;
167
- const sndKp = generateEd25519KeyPair();
168
- const rcvKp = generateEd25519KeyPair();
169
254
  const chunkData = enc.encData.subarray(spec.chunkOffset, spec.chunkOffset + spec.chunkSize);
170
- const chunkDigest = getChunkDigest(chunkData);
171
- const fileInfo = {
172
- sndKey: encodePubKeyEd25519(sndKp.publicKey),
173
- size: spec.chunkSize,
174
- digest: chunkDigest
175
- };
176
- const rcvKeysForChunk = [encodePubKeyEd25519(rcvKp.publicKey)];
177
- const { senderId, recipientIds } = await createXFTPChunk(agent, server, sndKp.privateKey, fileInfo, rcvKeysForChunk, auth ?? null);
178
- await uploadXFTPChunk(agent, server, sndKp.privateKey, senderId, chunkData);
179
- sentChunks[index] = {
180
- chunkNo, senderId, senderKey: sndKp.privateKey,
181
- recipients: [{ recipientId: recipientIds[0], recipientKey: rcvKp.privateKey }],
182
- chunkSize: spec.chunkSize, digest: chunkDigest, server
183
- };
255
+ sentChunks[index] = await uploadSingleChunk(agent, server, chunkNo, chunkData, spec.chunkSize, 1, auth ?? null);
184
256
  }
185
257
  }));
186
258
  return {
@@ -261,6 +333,10 @@ export async function downloadFile(agent, fd, onProgress) {
261
333
  throw new Error("downloadFile: file digest mismatch");
262
334
  return processDownloadedFile(resolvedFd, chunks);
263
335
  }
336
+ export async function receiveFile(agent, uri, options) {
337
+ const fd = decodeDescriptionURI(uri);
338
+ return downloadFile(agent, fd, options?.onProgress);
339
+ }
264
340
  async function resolveRedirect(agent, fd) {
265
341
  const plaintextChunks = new Array(fd.chunks.length);
266
342
  const byServer = new Map();
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -28,38 +28,37 @@ interface ServerConnection {
28
28
  client: Promise<XFTPClient>;
29
29
  queue: Promise<void>;
30
30
  }
31
- export interface XFTPClientAgent {
31
+ export declare class XFTPAgent {
32
32
  connections: Map<string, ServerConnection>;
33
33
  /** @internal Injectable for testing — defaults to connectXFTP */
34
34
  _connectFn: (server: XFTPServer) => Promise<XFTPClient>;
35
+ constructor(connectFn?: (server: XFTPServer) => Promise<XFTPClient>);
36
+ closeServer(server: XFTPServer): void;
37
+ close(): void;
35
38
  }
36
- export declare function newXFTPAgent(): XFTPClientAgent;
37
- export declare function getXFTPServerClient(agent: XFTPClientAgent, server: XFTPServer): Promise<XFTPClient>;
38
- export declare function reconnectClient(agent: XFTPClientAgent, server: XFTPServer): Promise<XFTPClient>;
39
- export declare function removeStaleConnection(agent: XFTPClientAgent, server: XFTPServer, failedP: Promise<XFTPClient>): void;
40
- export declare function closeXFTPServerClient(agent: XFTPClientAgent, server: XFTPServer): void;
41
- export declare function closeXFTPAgent(agent: XFTPClientAgent): void;
39
+ export declare function getXFTPServerClient(agent: XFTPAgent, server: XFTPServer): Promise<XFTPClient>;
40
+ export declare function reconnectClient(agent: XFTPAgent, server: XFTPServer): Promise<XFTPClient>;
41
+ export declare function removeStaleConnection(agent: XFTPAgent, server: XFTPServer, failedP: Promise<XFTPClient>): void;
42
42
  export declare function connectXFTP(server: XFTPServer, config?: Partial<TransportConfig>): Promise<XFTPClient>;
43
- export declare function sendXFTPCommand(agent: XFTPClientAgent, server: XFTPServer, privateKey: Uint8Array, entityId: Uint8Array, cmdBytes: Uint8Array, chunkData?: Uint8Array, maxRetries?: number): Promise<{
43
+ export declare function sendXFTPCommand(agent: XFTPAgent, server: XFTPServer, privateKey: Uint8Array, entityId: Uint8Array, cmdBytes: Uint8Array, chunkData?: Uint8Array, maxRetries?: number): Promise<{
44
44
  response: FileResponse;
45
45
  body: Uint8Array;
46
46
  }>;
47
- export declare function createXFTPChunk(agent: XFTPClientAgent, server: XFTPServer, spKey: Uint8Array, file: FileInfo, rcvKeys: Uint8Array[], auth?: Uint8Array | null): Promise<{
47
+ export declare function createXFTPChunk(agent: XFTPAgent, server: XFTPServer, spKey: Uint8Array, file: FileInfo, rcvKeys: Uint8Array[], auth?: Uint8Array | null): Promise<{
48
48
  senderId: Uint8Array;
49
49
  recipientIds: Uint8Array[];
50
50
  }>;
51
- export declare function addXFTPRecipients(agent: XFTPClientAgent, server: XFTPServer, spKey: Uint8Array, fId: Uint8Array, rcvKeys: Uint8Array[]): Promise<Uint8Array[]>;
52
- export declare function uploadXFTPChunk(agent: XFTPClientAgent, server: XFTPServer, spKey: Uint8Array, fId: Uint8Array, chunkData: Uint8Array): Promise<void>;
51
+ export declare function addXFTPRecipients(agent: XFTPAgent, server: XFTPServer, spKey: Uint8Array, fId: Uint8Array, rcvKeys: Uint8Array[]): Promise<Uint8Array[]>;
52
+ export declare function uploadXFTPChunk(agent: XFTPAgent, server: XFTPServer, spKey: Uint8Array, fId: Uint8Array, chunkData: Uint8Array): Promise<void>;
53
53
  export interface RawChunkResponse {
54
54
  dhSecret: Uint8Array;
55
55
  nonce: Uint8Array;
56
56
  body: Uint8Array;
57
57
  }
58
- export declare function downloadXFTPChunkRaw(agent: XFTPClientAgent, server: XFTPServer, rpKey: Uint8Array, fId: Uint8Array): Promise<RawChunkResponse>;
59
- export declare function downloadXFTPChunk(agent: XFTPClientAgent, server: XFTPServer, rpKey: Uint8Array, fId: Uint8Array, digest?: Uint8Array): Promise<Uint8Array>;
60
- export declare function deleteXFTPChunk(agent: XFTPClientAgent, server: XFTPServer, spKey: Uint8Array, sId: Uint8Array): Promise<void>;
61
- export declare function ackXFTPChunk(agent: XFTPClientAgent, server: XFTPServer, rpKey: Uint8Array, rId: Uint8Array): Promise<void>;
62
- export declare function pingXFTP(agent: XFTPClientAgent, server: XFTPServer): Promise<void>;
63
- export declare function closeXFTP(c: XFTPClient): void;
58
+ export declare function downloadXFTPChunkRaw(agent: XFTPAgent, server: XFTPServer, rpKey: Uint8Array, fId: Uint8Array): Promise<RawChunkResponse>;
59
+ export declare function downloadXFTPChunk(agent: XFTPAgent, server: XFTPServer, rpKey: Uint8Array, fId: Uint8Array, digest?: Uint8Array): Promise<Uint8Array>;
60
+ export declare function deleteXFTPChunk(agent: XFTPAgent, server: XFTPServer, spKey: Uint8Array, sId: Uint8Array): Promise<void>;
61
+ export declare function ackXFTPChunk(agent: XFTPAgent, server: XFTPServer, rpKey: Uint8Array, rId: Uint8Array): Promise<void>;
62
+ export declare function pingXFTP(agent: XFTPAgent, server: XFTPServer): Promise<void>;
64
63
  export {};
65
64
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEW,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EACrE,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAOrD,qBAAa,kBAAmB,SAAQ,KAAK;aACf,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAI9C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aACf,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI/D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAM/C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,CAKjD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAiB9E;AAID,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,UAAU,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;CAClB;AAID,UAAU,SAAS;IACjB,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7E,KAAK,IAAI,IAAI,CAAA;CACd;AA0ED,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC1C,iEAAiE;IACjE,UAAU,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CACxD;AAED,wBAAgB,YAAY,IAAI,eAAe,CAE9C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAanG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAY/F;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GACvE,IAAI,CAON;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAOtF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAK3D;AAID,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAoD5G;AAiDD,wBAAsB,eAAe,CACnC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,UAAU,EACpB,SAAS,CAAC,EAAE,UAAU,EACtB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,CAAC,CAqBrD;AAID,wBAAsB,eAAe,CACnC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAC7E,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,GAAE,UAAU,GAAG,IAAW,GACpD,OAAO,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,UAAU,EAAE,CAAA;CAAC,CAAC,CAI7D;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GACpG,OAAO,CAAC,UAAU,EAAE,CAAC,CAIvB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GACpG,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,CAAA;IACpB,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAC7E,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,UAAU,GAClG,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAC7E,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAC7E,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CASxF;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAE7C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}