@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
JavaScript
;
/**
* 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