@mvp-factory/holy-upload
Version:
File upload processing system extracted from Holy Habit project with security validation and image optimization
118 lines • 4 kB
TypeScript
/**
* 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