UNPKG

@mvp-factory/holy-upload

Version:

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

78 lines 2.39 kB
"use strict"; /** * Upload Types * * Type definitions for file upload system * Extracted from Holy Habit upload system */ Object.defineProperty(exports, "__esModule", { value: true }); exports.UPLOAD_ERRORS = exports.DEFAULT_CONFIG = exports.StorageError = exports.FileTypeError = exports.FileSizeError = exports.ValidationError = exports.UploadError = void 0; // Error types class UploadError extends Error { constructor(message, code, statusCode = 400) { super(message); this.code = code; this.statusCode = statusCode; this.name = 'UploadError'; } } exports.UploadError = UploadError; class ValidationError extends UploadError { constructor(message) { super(message, 'VALIDATION_ERROR', 400); this.name = 'ValidationError'; } } exports.ValidationError = ValidationError; class FileSizeError extends UploadError { constructor(message) { super(message, 'FILE_SIZE_ERROR', 413); this.name = 'FileSizeError'; } } exports.FileSizeError = FileSizeError; class FileTypeError extends UploadError { constructor(message) { super(message, 'FILE_TYPE_ERROR', 415); this.name = 'FileTypeError'; } } exports.FileTypeError = FileTypeError; class StorageError extends UploadError { constructor(message) { super(message, 'STORAGE_ERROR', 507); this.name = 'StorageError'; } } exports.StorageError = StorageError; // Constants exports.DEFAULT_CONFIG = { uploadDir: './uploads', maxSize: 10 * 1024 * 1024, // 10MB maxWidth: 1920, maxHeight: 1080, allowedMimeTypes: [ 'image/jpeg', 'image/png', 'image/gif', 'image/webp' ], allowedExtensions: ['jpg', 'jpeg', 'png', 'gif', 'webp'], enableOptimization: true, jpegQuality: 85, pngCompression: 8, webpQuality: 85 }; exports.UPLOAD_ERRORS = { NO_FILE: 'No file uploaded', FILE_TOO_LARGE: 'File size exceeds limit', INVALID_TYPE: 'Invalid file type', INVALID_EXTENSION: 'Invalid file extension', UPLOAD_FAILED: 'Failed to upload file', OPTIMIZATION_FAILED: 'Failed to optimize image', DIRECTORY_ERROR: 'Failed to create upload directory', PERMISSION_DENIED: 'Permission denied', MALICIOUS_FILE: 'File appears to be malicious', RATE_LIMITED: 'Upload rate limit exceeded' }; //# sourceMappingURL=Upload.js.map