@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
TypeScript
/**
* 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