filepizza-client 2.0.1 → 2.1.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.
@@ -1,16 +1,11 @@
1
- // src/filepizza-downloader.ts
2
- import Peer from 'peerjs';
3
1
  import { EventEmitter } from './event-emitter';
4
2
  import { DownloadHelper } from './download-helper';
5
- import { ConnectionStatus, MessageType } from './types';
3
+ import { ConnectionStatus, MessageType, } from './types';
4
+ import { createPeer } from './peerjs';
6
5
  /**
7
- * FilePizza Downloader - connects to FilePizza uploads
6
+ * FilePizza Downloader - connects to FilePizza uploads.
8
7
  */
9
8
  export class FilePizzaDownloader extends EventEmitter {
10
- /**
11
- * Create a new FilePizza downloader
12
- * @param options Configuration options
13
- */
14
9
  constructor(options = {}) {
15
10
  super();
16
11
  this.filesInfo = [];
@@ -24,37 +19,20 @@ export class FilePizzaDownloader extends EventEmitter {
24
19
  this.isPasswordInvalid = false;
25
20
  this.completedFiles = [];
26
21
  this.filePizzaServerUrl = options.filePizzaServerUrl || 'http://localhost:8081';
22
+ this.peerJSSignalingServer = options.peerJSSignalingServer;
23
+ this.discoverPeerJSSignalingServer =
24
+ options.discoverPeerJSSignalingServer ?? true;
27
25
  }
28
- /**
29
- * Initialize the downloader
30
- */
31
26
  async initialize() {
32
27
  if (this.peer) {
33
28
  return;
34
29
  }
35
- // Get ICE servers
36
- await this.getIceServers();
37
- // Initialize PeerJS
38
- this.peer = new Peer({
39
- config: {
40
- iceServers: this.iceServers || [{ urls: 'stun:stun.l.google.com:19302' }],
41
- },
42
- debug: 2,
30
+ this.peer = await createPeer({
31
+ filePizzaServerUrl: this.filePizzaServerUrl,
32
+ peerJSSignalingServer: this.peerJSSignalingServer,
33
+ discoverPeerJSSignalingServer: this.discoverPeerJSSignalingServer,
43
34
  });
44
- // Wait for peer to be ready
45
- if (!this.peer.id) {
46
- await new Promise((resolve) => {
47
- const onOpen = () => {
48
- this.peer?.off('open', onOpen);
49
- resolve();
50
- };
51
- this.peer?.on('open', onOpen);
52
- });
53
- }
54
35
  }
55
- /**
56
- * Connect to an uploader using a FilePizza URL or slug
57
- */
58
36
  async connect(urlOrSlug) {
59
37
  this.resetConnectionState();
60
38
  const slug = this.extractSlug(urlOrSlug);
@@ -68,9 +46,6 @@ export class FilePizzaDownloader extends EventEmitter {
68
46
  return false;
69
47
  }
70
48
  }
71
- /**
72
- * Reset the connection state to begin new download
73
- */
74
49
  resetConnectionState() {
75
50
  this.cleanupFileStreams();
76
51
  this.filesInfo = [];
@@ -82,14 +57,12 @@ export class FilePizzaDownloader extends EventEmitter {
82
57
  this.isPasswordRequired = false;
83
58
  this.isPasswordInvalid = false;
84
59
  this.errorMessage = undefined;
60
+ this.status = ConnectionStatus.Pending;
85
61
  if (this.connection && this.connection.open) {
86
62
  this.connection.close();
87
63
  }
88
64
  this.connection = undefined;
89
65
  }
90
- /**
91
- * Submit password for protected download
92
- */
93
66
  submitPassword(password) {
94
67
  if (!this.connection || this.status !== ConnectionStatus.Authenticating) {
95
68
  throw new Error('Not in authentication state');
@@ -99,9 +72,6 @@ export class FilePizzaDownloader extends EventEmitter {
99
72
  password,
100
73
  });
101
74
  }
102
- /**
103
- * Start downloading the files
104
- */
105
75
  async startDownload() {
106
76
  if (!this.connection) {
107
77
  throw new Error('Not connected');
@@ -116,14 +86,9 @@ export class FilePizzaDownloader extends EventEmitter {
116
86
  this.currentFileIndex = 0;
117
87
  this.currentFileBytesReceived = 0;
118
88
  this.totalBytesReceived = 0;
119
- // Initialize file streams
120
89
  this.initializeFileStreams();
121
- // Request the first file
122
90
  this.requestNextFile();
123
91
  }
124
- /**
125
- * Pause the download
126
- */
127
92
  pauseDownload() {
128
93
  if (!this.connection || this.status !== ConnectionStatus.Downloading) {
129
94
  return;
@@ -133,24 +98,20 @@ export class FilePizzaDownloader extends EventEmitter {
133
98
  this.emit('paused');
134
99
  }
135
100
  /**
136
- * Resume the download
101
+ * Kept for public API compatibility.
102
+ *
103
+ * The server frontend protocol currently supports pause/stop, not resume.
104
+ * A paused transfer should be restarted by creating a new connection.
137
105
  */
138
106
  resumeDownload() {
139
- if (!this.connection || this.status !== ConnectionStatus.Paused) {
107
+ if (this.status !== ConnectionStatus.Paused) {
140
108
  return;
141
109
  }
142
- const currentFile = this.filesInfo[this.currentFileIndex];
143
- this.connection.send({
144
- type: MessageType.Resume,
145
- fileName: currentFile.fileName,
146
- offset: this.currentFileBytesReceived,
147
- });
148
- this.status = ConnectionStatus.Downloading;
149
- this.emit('resumed');
110
+ this.errorMessage =
111
+ 'Resume is not supported by the current FilePizza server protocol. Please reconnect and restart the download.';
112
+ this.status = ConnectionStatus.Error;
113
+ this.emit('error', this.errorMessage);
150
114
  }
151
- /**
152
- * Cancel the download
153
- */
154
115
  cancelDownload() {
155
116
  this.cleanupFileStreams();
156
117
  if (this.connection) {
@@ -162,9 +123,6 @@ export class FilePizzaDownloader extends EventEmitter {
162
123
  this.status = ConnectionStatus.Closed;
163
124
  this.emit('cancelled');
164
125
  }
165
- /**
166
- * Cleanup resources when done
167
- */
168
126
  cleanupFileStreams() {
169
127
  for (const [fileName, fileStreamData] of this.fileStreams.entries()) {
170
128
  try {
@@ -178,15 +136,9 @@ export class FilePizzaDownloader extends EventEmitter {
178
136
  }
179
137
  this.fileStreams.clear();
180
138
  }
181
- /**
182
- * Get file information
183
- */
184
139
  getFileInfo() {
185
140
  return this.filesInfo;
186
141
  }
187
- /**
188
- * Get download status
189
- */
190
142
  getStatus() {
191
143
  return {
192
144
  status: this.status,
@@ -195,9 +147,6 @@ export class FilePizzaDownloader extends EventEmitter {
195
147
  errorMessage: this.errorMessage,
196
148
  };
197
149
  }
198
- /**
199
- * Get progress information
200
- */
201
150
  getProgress() {
202
151
  return {
203
152
  fileIndex: this.currentFileIndex,
@@ -210,93 +159,79 @@ export class FilePizzaDownloader extends EventEmitter {
210
159
  totalBytes: this.totalBytes,
211
160
  };
212
161
  }
213
- /**
214
- * Extract slug from URL or use directly
215
- */
216
162
  extractSlug(urlOrSlug) {
217
- // Check if it's a URL
218
163
  if (urlOrSlug.startsWith('http')) {
219
164
  const url = new URL(urlOrSlug);
220
165
  const pathParts = url.pathname.split('/').filter(Boolean);
221
- // Extract the download slug
222
166
  if (pathParts[0] === 'download' && pathParts.length > 1) {
223
167
  return pathParts.slice(1).join('/');
224
168
  }
225
- else {
226
- throw new Error('Invalid FilePizza URL');
227
- }
169
+ throw new Error('Invalid FilePizza URL');
228
170
  }
229
- // If it's not a URL, assume it's already a slug
230
171
  return urlOrSlug;
231
172
  }
173
+ async fetchChannel(slug) {
174
+ const response = await fetch(`${this.filePizzaServerUrl}/api/channel/${slug}`);
175
+ if (!response.ok) {
176
+ throw new Error(`FilePizza server returned ${response.status}`);
177
+ }
178
+ return response.json();
179
+ }
232
180
  /**
233
- * Extract uploader peer IDs from the FilePizza server when multiple uploaders are present
181
+ * Fallback for older FilePizza servers that do not expose /api/channel/:slug.
234
182
  */
235
- async extractUploaderPeerIDs(slug) {
236
- try {
237
- const response = await fetch(`${this.filePizzaServerUrl}/download/${slug}`);
238
- if (!response.ok) {
239
- throw new Error(`FilePizza server returned ${response.status}`);
240
- }
241
- const html = await response.text();
242
- if (!html || html.trim() === '') {
243
- throw new Error('Received empty response from server');
244
- }
245
- // Match either "uploaderPeerID" (for single uploader) or "primaryUploaderID" and "additionalUploaders" (for multiple)
246
- const primaryMatch = html.match(/\\"primaryUploaderID\\":\\"([^\\]+)\\"/);
247
- const singleMatch = html.match(/\\"uploaderPeerID\\":\\"([^\\]+)\\"/);
248
- if (primaryMatch && primaryMatch[1]) {
249
- // Handle multiple uploader case
250
- const uploaderIDs = [primaryMatch[1]];
251
- // Look for additional uploaders
252
- const additionalMatch = html.match(/\\"additionalUploaders\\":\[([^\]]+)\]/);
253
- if (additionalMatch && additionalMatch[1]) {
254
- // Parse additional uploader IDs from JSON string
255
- const additionalIDs = additionalMatch[1].split(',')
256
- .map(id => id.trim().replace(/\\"|"/g, ''))
257
- .filter(id => id.length > 0);
258
- uploaderIDs.push(...additionalIDs);
259
- }
260
- return uploaderIDs;
261
- }
262
- else if (singleMatch && singleMatch[1]) {
263
- // Handle single uploader case
264
- return [singleMatch[1]];
183
+ async extractUploaderPeerIDsFromHtml(slug) {
184
+ const response = await fetch(`${this.filePizzaServerUrl}/download/${slug}`);
185
+ if (!response.ok) {
186
+ throw new Error(`FilePizza server returned ${response.status}`);
187
+ }
188
+ const html = await response.text();
189
+ if (!html || html.trim() === '') {
190
+ throw new Error('Received empty response from server');
191
+ }
192
+ const primaryMatch = html.match(/\\"primaryUploaderID\\":\\"([^\\]+)\\"/);
193
+ const singleMatch = html.match(/\\"uploaderPeerID\\":\\"([^\\]+)\\"/);
194
+ if (primaryMatch && primaryMatch[1]) {
195
+ const uploaderIDs = [primaryMatch[1]];
196
+ const additionalMatch = html.match(/\\"additionalUploaders\\":\[([^\]]+)\]/);
197
+ if (additionalMatch && additionalMatch[1]) {
198
+ const additionalIDs = additionalMatch[1]
199
+ .split(',')
200
+ .map((id) => id.trim().replace(/\\"|"/g, ''))
201
+ .filter((id) => id.length > 0);
202
+ uploaderIDs.push(...additionalIDs);
265
203
  }
266
- throw new Error('Could not find uploader peer ID');
204
+ return uploaderIDs;
267
205
  }
268
- catch (error) {
269
- console.error('Error extracting uploader peer IDs:', error);
270
- throw new Error('Failed to look up uploader information');
206
+ if (singleMatch && singleMatch[1]) {
207
+ return [singleMatch[1]];
271
208
  }
209
+ throw new Error('Could not find uploader peer ID');
272
210
  }
273
- /**
274
- * Look up the uploader's peer ID from the FilePizza server
275
- */
276
- async lookupUploaderPeerID(slug) {
211
+ async extractUploaderPeerIDs(slug) {
277
212
  try {
278
- const uploaderIDs = await this.extractUploaderPeerIDs(slug);
279
- if (uploaderIDs.length === 0) {
280
- throw new Error('No uploader peer IDs found');
281
- }
282
- // Return the first uploader ID by default
283
- return uploaderIDs[0];
213
+ const channel = await this.fetchChannel(slug);
214
+ return [
215
+ channel.uploaderPeerID,
216
+ ...(channel.additionalUploaders || []),
217
+ ].filter(Boolean);
284
218
  }
285
219
  catch (error) {
286
- console.error('Error looking up uploader peer ID:', error);
287
- throw new Error('Failed to look up uploader information');
220
+ console.warn('Falling back to HTML parsing because /api/channel lookup failed:', error);
221
+ return this.extractUploaderPeerIDsFromHtml(slug);
288
222
  }
289
223
  }
290
- /**
291
- * Connect to a specific uploader by ID
292
- */
224
+ async lookupUploaderPeerID(slug) {
225
+ const uploaderIDs = await this.extractUploaderPeerIDs(slug);
226
+ if (uploaderIDs.length === 0) {
227
+ throw new Error('No uploader peer IDs found');
228
+ }
229
+ return uploaderIDs[0];
230
+ }
293
231
  async getAvailableUploaders(urlOrSlug) {
294
232
  const slug = this.extractSlug(urlOrSlug);
295
233
  return this.extractUploaderPeerIDs(slug);
296
234
  }
297
- /**
298
- * Connect to a specific uploader by ID
299
- */
300
235
  async connectToUploader(uploaderId) {
301
236
  try {
302
237
  return this.connectToPeer(uploaderId);
@@ -307,44 +242,17 @@ export class FilePizzaDownloader extends EventEmitter {
307
242
  return false;
308
243
  }
309
244
  }
310
- /**
311
- * Get ICE servers from the FilePizza server
312
- */
313
- async getIceServers() {
314
- try {
315
- const response = await fetch(`${this.filePizzaServerUrl}/api/ice`, {
316
- method: 'POST',
317
- });
318
- if (!response.ok) {
319
- throw new Error(`Failed to get ICE servers: ${response.status}`);
320
- }
321
- const data = await response.json();
322
- this.iceServers = data.iceServers;
323
- return data.iceServers;
324
- }
325
- catch (error) {
326
- console.error('Error getting ICE servers:', error);
327
- return [{ urls: 'stun:stun.l.google.com:19302' }];
328
- }
329
- }
330
- /**
331
- * Connect directly to a peer
332
- */
333
245
  async connectToPeer(peerId) {
334
- // Make sure we're initialized
335
246
  await this.initialize();
336
247
  if (!this.peer) {
337
248
  throw new Error('Peer not initialized');
338
249
  }
339
250
  try {
340
- // Close existing connection if any
341
251
  if (this.connection) {
342
252
  this.connection.close();
343
253
  }
344
- // Connect to the uploader
345
254
  this.connection = this.peer.connect(peerId, { reliable: true });
346
255
  this.status = ConnectionStatus.Pending;
347
- // Set up connection event handlers
348
256
  return new Promise((resolve) => {
349
257
  if (!this.connection) {
350
258
  resolve(false);
@@ -352,18 +260,15 @@ export class FilePizzaDownloader extends EventEmitter {
352
260
  }
353
261
  this.connection.on('open', () => {
354
262
  this.status = ConnectionStatus.Ready;
355
- // Send request for file info
356
- if (this.connection) {
357
- this.connection.send({
358
- type: MessageType.RequestInfo,
359
- browserName: this.getBrowserName(),
360
- browserVersion: this.getBrowserVersion(),
361
- osName: this.getOSName(),
362
- osVersion: this.getOSVersion(),
363
- mobileVendor: this.getMobileVendor(),
364
- mobileModel: this.getMobileModel(),
365
- });
366
- }
263
+ this.connection?.send({
264
+ type: MessageType.RequestInfo,
265
+ browserName: this.getBrowserName(),
266
+ browserVersion: this.getBrowserVersion(),
267
+ osName: this.getOSName(),
268
+ osVersion: this.getOSVersion(),
269
+ mobileVendor: this.getMobileVendor(),
270
+ mobileModel: this.getMobileModel(),
271
+ });
367
272
  this.emit('connected');
368
273
  resolve(true);
369
274
  });
@@ -385,12 +290,8 @@ export class FilePizzaDownloader extends EventEmitter {
385
290
  return false;
386
291
  }
387
292
  }
388
- /**
389
- * Handle incoming data from uploader
390
- */
391
293
  handleData(data) {
392
294
  try {
393
- // WebRTC messages follow a specific format with a type field
394
295
  const message = data;
395
296
  switch (message.type) {
396
297
  case MessageType.PasswordRequired:
@@ -416,9 +317,6 @@ export class FilePizzaDownloader extends EventEmitter {
416
317
  this.emit('error', this.errorMessage);
417
318
  }
418
319
  }
419
- /**
420
- * Handle password required message
421
- */
422
320
  handlePasswordRequired(message) {
423
321
  this.isPasswordRequired = true;
424
322
  this.status = ConnectionStatus.Authenticating;
@@ -431,40 +329,28 @@ export class FilePizzaDownloader extends EventEmitter {
431
329
  this.emit('passwordRequired');
432
330
  }
433
331
  }
434
- /**
435
- * Handle file info message
436
- */
437
332
  handleInfo(message) {
438
333
  this.filesInfo = message.files;
439
334
  this.totalBytes = this.filesInfo.reduce((sum, file) => sum + file.size, 0);
440
335
  this.isPasswordRequired = false;
441
336
  this.isPasswordInvalid = false;
337
+ this.errorMessage = undefined;
442
338
  this.status = ConnectionStatus.Ready;
443
339
  this.emit('info', this.filesInfo);
444
340
  }
445
- /**
446
- * Handle error message
447
- */
448
341
  handleError(message) {
449
342
  this.errorMessage = message.error;
450
343
  this.status = ConnectionStatus.Error;
451
344
  this.emit('error', this.errorMessage);
452
345
  }
453
- /**
454
- * Handle report message (channel reported for violation)
455
- */
456
346
  handleReport() {
457
347
  this.emit('reported');
458
- // Redirect to reported page if in browser
459
348
  if (typeof window !== 'undefined') {
460
349
  window.location.href = `${this.filePizzaServerUrl}/reported`;
461
350
  }
462
351
  }
463
- /**
464
- * Handle chunk message
465
- */
466
352
  handleChunk(message) {
467
- const { fileName, bytes, final } = message;
353
+ const { fileName, bytes, final, offset } = message;
468
354
  const fileStream = this.fileStreams.get(fileName);
469
355
  if (!fileStream) {
470
356
  console.error(`No stream found for file: ${fileName}`);
@@ -480,6 +366,12 @@ export class FilePizzaDownloader extends EventEmitter {
480
366
  console.error(`Error enqueueing data for ${fileName}:`, error);
481
367
  return;
482
368
  }
369
+ this.connection?.send({
370
+ type: MessageType.ChunkAck,
371
+ fileName,
372
+ offset,
373
+ bytesReceived: data.byteLength,
374
+ });
483
375
  this.emit('progress', this.getProgress());
484
376
  if (final) {
485
377
  try {
@@ -496,13 +388,11 @@ export class FilePizzaDownloader extends EventEmitter {
496
388
  }
497
389
  else {
498
390
  this.status = ConnectionStatus.Done;
391
+ this.connection?.send({ type: MessageType.Done });
499
392
  this.emit('complete', this.completedFiles);
500
393
  }
501
394
  }
502
395
  }
503
- /**
504
- * Initialize streams for all files
505
- */
506
396
  initializeFileStreams() {
507
397
  this.cleanupFileStreams();
508
398
  for (const fileInfo of this.filesInfo) {
@@ -531,12 +421,9 @@ export class FilePizzaDownloader extends EventEmitter {
531
421
  });
532
422
  }
533
423
  }
534
- /**
535
- * Store a completed file
536
- */
537
424
  async storeCompletedFile(fileName) {
538
425
  const fileStream = this.fileStreams.get(fileName);
539
- const fileInfo = this.filesInfo.find(info => info.fileName === fileName);
426
+ const fileInfo = this.filesInfo.find((info) => info.fileName === fileName);
540
427
  if (!fileStream || !fileInfo) {
541
428
  console.error(`No stream or file info found for file: ${fileName}`);
542
429
  return;
@@ -555,11 +442,8 @@ export class FilePizzaDownloader extends EventEmitter {
555
442
  this.emit('error', `Failed to store file: ${error.message}`);
556
443
  }
557
444
  }
558
- /**
559
- * Download a completed file
560
- */
561
445
  async downloadFile(fileName) {
562
- const completedFile = this.completedFiles.find(file => file.fileName === fileName);
446
+ const completedFile = this.completedFiles.find((file) => file.fileName === fileName);
563
447
  if (!completedFile) {
564
448
  throw new Error(`File not found: ${fileName}`);
565
449
  }
@@ -571,15 +455,9 @@ export class FilePizzaDownloader extends EventEmitter {
571
455
  throw new Error(`Failed to download file: ${error.message}`);
572
456
  }
573
457
  }
574
- /**
575
- * Get completed files
576
- */
577
458
  getCompletedFiles() {
578
459
  return [...this.completedFiles];
579
460
  }
580
- /**
581
- * Download all completed files
582
- */
583
461
  async downloadAllFiles() {
584
462
  for (const file of this.completedFiles) {
585
463
  try {
@@ -587,13 +465,9 @@ export class FilePizzaDownloader extends EventEmitter {
587
465
  }
588
466
  catch (error) {
589
467
  console.error(`Error downloading file ${file.fileName}:`, error);
590
- // Continue with other files even if one fails
591
468
  }
592
469
  }
593
470
  }
594
- /**
595
- * Request the next file
596
- */
597
471
  requestNextFile() {
598
472
  if (!this.connection || this.currentFileIndex >= this.filesInfo.length) {
599
473
  return;
@@ -605,7 +479,6 @@ export class FilePizzaDownloader extends EventEmitter {
605
479
  offset: 0,
606
480
  });
607
481
  }
608
- // Browser detection helper methods
609
482
  getBrowserName() {
610
483
  if (typeof navigator === 'undefined')
611
484
  return 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"filepizza-downloader.js","sourceRoot":"","sources":["../src/filepizza-downloader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filepizza-downloader.js","sourceRoot":"","sources":["../src/filepizza-downloader.ts"],"names":[],"mappings":"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"}