UNPKG

@mvp-factory/holy-upload

Version:

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

93 lines 2.66 kB
/** * File Validator * * Validates uploaded files for security and compliance * Extracted from Holy Habit upload system with enhanced security */ import { ValidationResult, ValidationOptions, ValidationError } from '../types/Upload'; export declare class FileValidator { private static readonly MAGIC_NUMBERS; private static readonly MALICIOUS_PATTERNS; /** * Validate uploaded file * * @param file - Multer file object * @param options - Validation options * @returns Validation result */ static validate(file: Express.Multer.File, options?: ValidationOptions): Promise<ValidationResult>; /** * Detect MIME type using multiple methods * * @param file - Multer file object * @returns Detected MIME type */ private static detectMimeType; /** * Detect MIME type from magic number * * @param file - Multer file object * @returns Detected MIME type */ private static detectFromMagicNumber; /** * Validate magic number against MIME type * * @param file - Multer file object * @param expectedMimeType - Expected MIME type * @returns True if magic number matches */ private static validateMagicNumber; /** * Check for malicious content * * @param file - Multer file object * @returns Malicious check result */ private static checkMaliciousContent; /** * Validate filename * * @param filename - Original filename * @returns Validation result */ private static validateFilename; /** * Get file extension * * @param filename - Filename * @returns File extension (without dot) */ private static getFileExtension; /** * Check if MIME type is an image * * @param mimeType - MIME type * @returns True if image type */ private static isImageType; /** * Format bytes to human readable format * * @param bytes - Bytes * @returns Formatted string */ private static formatBytes; /** * Create validation error * * @param result - Validation result * @returns Validation error */ static createError(result: ValidationResult): ValidationError; /** * Quick validation for common cases * * @param file - Multer file object * @param maxSize - Maximum file size * @param allowedTypes - Allowed MIME types * @returns True if valid */ static quickValidate(file: Express.Multer.File, maxSize?: number, allowedTypes?: string[]): Promise<boolean>; } //# sourceMappingURL=FileValidator.d.ts.map