UNPKG

@mvp-factory/holy-upload

Version:

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

118 lines 4 kB
/** * Express Upload Middleware * * Express.js integration with Multer for file uploads * Extracted from Holy Habit Express integration */ import { Request, Response, NextFunction } from 'express'; import { UploadHandler } from './UploadHandler'; import { UploadConfig, UploadMiddlewareOptions, UploadResult, MultipleUploadResult } from '../types/Upload'; declare global { namespace Express { interface Request { uploadHandler?: UploadHandler; uploadSingle?: () => Promise<UploadResult>; uploadMultiple?: () => Promise<MultipleUploadResult>; getUserId?: () => string | undefined; } } } export declare class ExpressUploadMiddleware { private uploadHandler; private multerInstance; constructor(config?: Partial<UploadConfig>); /** * Create Multer instance with configuration */ private createMulterInstance; /** * Single file upload middleware * * @param fieldName - Field name for file input * @param options - Upload options * @returns Express middleware */ single(fieldName?: string, options?: UploadMiddlewareOptions): (req: Request, res: Response, next: NextFunction) => void; /** * Multiple files upload middleware * * @param fieldName - Field name for file input * @param maxCount - Maximum number of files * @param options - Upload options * @returns Express middleware */ multiple(fieldName?: string, maxCount?: number, options?: UploadMiddlewareOptions): (req: Request, res: Response, next: NextFunction) => void; /** * Fields upload middleware (mixed uploads) * * @param fields - Array of field configurations * @param options - Upload options * @returns Express middleware */ fields(fields: { name: string; maxCount?: number; }[], options?: UploadMiddlewareOptions): (req: Request, res: Response, next: NextFunction) => void; /** * Create upload route handler * * @param type - Upload type ('single' or 'multiple') * @param fieldName - Field name * @param options - Upload options * @returns Express route handler */ createUploadRoute(type?: 'single' | 'multiple', fieldName?: string, options?: UploadMiddlewareOptions): (req: Request, res: Response) => Promise<void>; /** * Create complete upload endpoint with middleware * * @param type - Upload type * @param fieldName - Field name * @param options - Upload options * @returns Array of middleware functions */ createCompleteEndpoint(type?: 'single' | 'multiple', fieldName?: string, options?: UploadMiddlewareOptions): [(req: Request, res: Response, next: NextFunction) => void, (req: Request, res: Response) => Promise<void>]; /** * Create file serving middleware * * @param urlPath - URL path for files (e.g., '/uploads') * @returns Express middleware */ static createFileServing(urlPath?: string): (req: Request, res: Response, next: NextFunction) => void; /** * Create delete endpoint * * @returns Express route handler */ createDeleteEndpoint(): (req: Request, res: Response) => Promise<void>; /** * Create storage info endpoint * * @returns Express route handler */ createStorageInfoEndpoint(): (req: Request, res: Response) => Promise<void>; /** * Attach upload methods to request object */ private attachUploadMethods; /** * Extract user ID from request */ private extractUserId; /** * Handle Multer errors */ private handleMulterError; /** * Handle general errors */ private handleError; /** * Get upload handler instance */ getUploadHandler(): UploadHandler; /** * Update configuration */ updateConfig(config: Partial<UploadConfig>): void; } //# sourceMappingURL=ExpressUploadMiddleware.d.ts.map