import { Request, Response, NextFunction } from 'express'; import { logger } from '../utils/logger'; export interface AppError extends Error { statusCode?: number; isOperational?: boolean; } export class CustomError extends Error implements AppError { statusCode: number; isOperational: boolean; constructor(message: string, statusCode: number = 500) { super(message); this.statusCode = statusCode; this.isOperational = true; Error.captureStackTrace(this, this.constructor); } } export const errorHandler = ( err: AppError, req: Request, res: Response, next: NextFunction ) => { const statusCode = err.statusCode || 500; const message = err.message || 'Internal Server Error'; logger.error({ error: err.message, stack: err.stack, path: req.path, method: req.method, }); res.status(statusCode).json({ success: false, error: { message, ...(process.env.NODE_ENV === 'development' && { stack: err.stack }), }, }); };