UNPKG

svelte-firebase-upload

Version:

Enterprise-grade file upload manager for Svelte with Firebase Storage integration, featuring concurrent uploads, resumable transfers, validation, health monitoring, and plugin system

69 lines (68 loc) 2.18 kB
import type { ValidationRule, ValidationResult } from '../types.js'; /** * Comprehensive file validation utility with security and performance features. * * Features: * - File size and type validation * - Content-based duplicate detection using SHA-256 hashing * - Image dimension extraction * - Video duration detection * - Security checks for dangerous file types * - Custom validation rules support * - Batch validation with error recovery * * @example * ```typescript * const validator = new FileValidator(); * * // Validate single file * const result = await validator.validateFile(file, { * maxSize: 10 * 1024 * 1024, // 10MB * allowedTypes: ['image/*', '.pdf'] * }); * * // Batch validate files * const results = await validator.validateFiles(files, { * maxSize: 5 * 1024 * 1024, * allowedTypes: ['image/jpeg', 'image/png'] * }); * * // Detect duplicates * const duplicates = await validator.detectDuplicates(files); * ``` */ export declare class FileValidator { private _objectUrls; private static readonly FILE_SIGNATURES; constructor(); private _defaultRules; validateFile(file: File, rules?: Partial<ValidationRule>): Promise<ValidationResult>; validateFiles(files: File[], rules?: Partial<ValidationRule>): Promise<Map<File, ValidationResult>>; detectDuplicates(files: File[]): Promise<Map<string, File[]>>; calculateFileHash(file: File, algorithm?: 'SHA-1' | 'SHA-256'): Promise<string>; getFileMetadata(file: File): Promise<{ size: number; type: string; lastModified: number; hash: string; dimensions?: { width: number; height: number; }; duration?: number; }>; private isFileTypeAllowed; private performAdditionalChecks; private getImageDimensions; private getVideoDuration; private validateFileContent; private readFileHeader; private readTextSample; private detectFileTypeFromSignature; private matchesSignature; private isDangerousFileType; private containsExecutableSignature; private containsScriptContent; destroy(): void; private formatBytes; }