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