UNPKG

@mvp-factory/holy-upload

Version:

File upload processing system extracted from Holy Habit project with security validation and image optimization

143 lines 3.95 kB
/** * Upload Handler * * Main handler for file upload operations * Extracted from Holy Habit upload system */ import { UploadConfig, UploadResult, MultipleUploadResult, UploadedFile, ValidationOptions, ImageOptimizationOptions, StorageInfo, CleanupResult, FileCleanupOptions } from '../types/Upload'; export declare class UploadHandler { private config; private uploadDir; constructor(config?: Partial<UploadConfig>); /** * Upload single file * * @param file - Multer file object * @param userId - User ID (optional) * @param options - Upload options * @returns Upload result */ uploadSingle(file: Express.Multer.File, userId?: string, options?: { validation?: ValidationOptions; optimization?: ImageOptimizationOptions; prefix?: string; }): Promise<UploadResult>; /** * Upload multiple files * * @param files - Array of Multer file objects * @param userId - User ID (optional) * @param options - Upload options * @returns Multiple upload result */ uploadMultiple(files: Express.Multer.File[], userId?: string, options?: { validation?: ValidationOptions; optimization?: ImageOptimizationOptions; prefix?: string; continueOnError?: boolean; }): Promise<MultipleUploadResult>; /** * Delete uploaded file * * @param filename - Filename to delete * @param userId - User ID (for security check) * @returns True if deleted successfully */ deleteFile(filename: string, userId?: string): Promise<boolean>; /** * Get file information * * @param filename - Filename * @returns File information or null if not found */ getFileInfo(filename: string): Promise<UploadedFile | null>; /** * Get storage information * * @param userId - User ID (optional, for user-specific stats) * @returns Storage information */ getStorageInfo(userId?: string): Promise<StorageInfo>; /** * Clean up old files * * @param options - Cleanup options * @returns Cleanup result */ cleanupFiles(options?: FileCleanupOptions): Promise<CleanupResult>; /** * Generate thumbnails for image * * @param filename - Image filename * @param sizes - Thumbnail sizes * @returns Generated thumbnails */ generateThumbnails(filename: string, sizes?: { width: number; height: number; suffix: string; }[]): Promise<{ path: string; width: number; height: number; size: number; }[]>; /** * Convert image to WebP * * @param filename - Original filename * @param quality - WebP quality * @returns Conversion result */ convertToWebP(filename: string, quality?: number): Promise<{ success: boolean; webpFilename?: string; originalSize: number; webpSize: number; savings: number; }>; /** * Get user files * * @param userId - User ID * @returns Array of user files */ private getUserFiles; /** * Check if file is an image * * @param mimeType - MIME type * @returns True if image */ private isImageFile; /** * Get file URL * * @param filename - Filename * @returns File URL */ private getFileUrl; /** * Update configuration * * @param config - New configuration */ updateConfig(config: Partial<UploadConfig>): void; /** * Get current configuration * * @returns Current configuration */ getConfig(): UploadConfig; /** * Health check for upload system * * @returns Health status */ healthCheck(): Promise<{ healthy: boolean; issues: string[]; storageInfo: StorageInfo; }>; } //# sourceMappingURL=UploadHandler.d.ts.map