import { Request, Response, NextFunction } from 'express'; import { ZodError } from 'zod'; export class AppError extends Error { constructor( public statusCode: number, message: string, ) { super(message); this.name = 'AppError'; } } export function errorHandler( err: Error, _req: Request, res: Response, _next: NextFunction, ): void { if (err instanceof AppError) { res.status(err.statusCode).json({ error: err.message }); return; } if (err instanceof ZodError) { res.status(400).json({ error: err.errors.map((e) => e.message).join(', ') }); return; } console.error('Unhandled error:', err); res.status(500).json({ error: 'Internal server error' }); }