Manager API
Configuration
Section titled “Configuration”const manager = new FirebaseUploadManager({ maxConcurrentUploads: 5, // 1-50, default: 5 chunkSize: 5 * 1024 * 1024, // 64KB-100MB, default: 5MB retryAttempts: 3, // 0-10, default: 3 retryDelay: 1000, // 100-60000ms, default: 1000ms autoStart: true, // default: false enableSmartScheduling: true, // default: false maxBandwidthMbps: 10, // 0.1-1000, default: 10 adaptiveBandwidth: true, // default: false maxMemoryItems: 1000, // 10-100000, default: 1000 enablePersistence: false, // IndexedDB persistence, default: false});
manager.setStorage(storage);Reactive State
Section titled “Reactive State”All state properties are reactive using Svelte 5 $state. Use them directly in your components.
| Property | Type | Description |
|---|---|---|
queue | UploadItem[] | Files queued for upload |
active | Map<string, UploadItem> | Currently uploading files |
completed | Map<string, UploadItem> | Successfully uploaded files |
failed | Map<string, UploadItem> | Failed uploads |
paused | Set<string> | Paused file IDs |
isProcessing | boolean | Currently processing uploads |
isPaused | boolean | Global pause state |
totalProgress | number | Overall progress 0-100 |
currentSpeed | number | Upload speed in bytes/sec |
estimatedTimeRemaining | number | null | ETA in seconds (null when not computing) |
successCount | number | Successful upload count |
failureCount | number | Failed upload count |
isActive | boolean | Has active uploads |
isIdle | boolean | No processing, active, or queued files |
File Management
Section titled “File Management”Adding Files
Section titled “Adding Files”// Basic — returns number of files addedawait manager.addFiles(fileList, { path: 'photos/' });
// With validation — returns detailed resultsconst result = await manager.addFilesWithValidation(files, { validate: true, validationRules: { maxSize: 10 * 1024 * 1024, allowedTypes: ['image/*', '.pdf'] }, skipDuplicates: true, checkResume: true});// result: { added, validated, duplicates, resumed, errors }Querying Files
Section titled “Querying Files”manager.getFile(fileId); // Single file by IDmanager.getAllFiles(); // All filesmanager.getAllFiles('uploading'); // Filter by statusRemoving Files
Section titled “Removing Files”await manager.removeFile(fileId);await manager.clearCompleted();manager.clearFailed();Upload Control
Section titled “Upload Control”await manager.start(); // Start processing queueawait manager.pause(); // Pause all uploadsawait manager.resume(); // Resume paused uploadsawait manager.stop(); // Stop and clear everythingmanager.retryFailed(); // Retry all failed uploadsawait manager.destroy(); // Clean up all resourcesValidation
Section titled “Validation”// Single fileconst result = await manager.validateFile(file, { maxSize: 10 * 1024 * 1024, allowedTypes: ['image/*', '.pdf']});// result: { valid: boolean, errors: string[], warnings: string[] }
// Multiple filesconst results = await manager.validateFiles(files, rules);// returns Map<File, ValidationResult>
// Duplicate detectionconst dupes = await manager.detectDuplicates(files);// returns Map<string, File[]> grouped by hash
// File metadataconst meta = await manager.getFileMetadata(file);// { size, type, lastModified, hash, dimensions?, duration? }Runtime Configuration
Section titled “Runtime Configuration”const result = manager.updateConfig('maxConcurrentUploads', 10);// { success: boolean, error?: string, warning?: string }
const config = manager.getConfig(); // Readonly snapshotNetwork & Bandwidth
Section titled “Network & Bandwidth”manager.getBandwidthStats();// { current, average, peak, limit, utilization }
manager.getNetworkQuality();// 'excellent' | 'good' | 'poor' | 'unknown'
manager.getRecommendedSettings();// { maxConcurrent, chunkSize, timeout }Health Checks
Section titled “Health Checks”const health = await manager.performHealthCheck();// { status, timestamp, duration, checks, details }// checks: { connection, storage, permissions, network, memory, bandwidth }
const { canStart, healthResult } = await manager.startWithHealthCheck();
manager.getHealthStatus(); // Current statusmanager.getLastHealthCheck(); // Last resultawait manager.forceHealthCheck(); // Force re-checkQueue Statistics
Section titled “Queue Statistics”manager.getQueueStats();// { totalFiles, totalSize, sizeDistribution, estimatedCompletionTime, quickWinsAvailable }