import { Request, Response, NextFunction } from 'express'; export interface ApiError extends Error { statusCode?: number; code?: string; } export const errorHandler = ( err: ApiError, _req: Request, res: Response, _next: NextFunction ) => { console.error('Error:', err); const statusCode = err.statusCode || 500; const message = err.message || 'Internal Server Error'; res.status(statusCode).json({ error: { message, code: err.code || 'INTERNAL_ERROR', ...(process.env.NODE_ENV === 'development' && { stack: err.stack }) } }); }; export const asyncHandler = (fn: Function) => { return (req: Request, res: Response, next: NextFunction) => { Promise.resolve(fn(req, res, next)).catch(next); }; };