import type { Request, Response, NextFunction } from "express"; import { ZodError } from "zod"; import { logger } from "./logger.js"; import { HttpError } from "../errors.js"; export function errorHandler( err: unknown, _req: Request, res: Response, _next: NextFunction, ) { if (err instanceof HttpError) { res.status(err.status).json({ error: err.message, ...(err.details ? { details: err.details } : {}), }); return; } if (err instanceof ZodError) { res.status(400).json({ error: "Validation error", details: err.errors }); return; } logger.error(err, "Unhandled error"); res.status(500).json({ error: "Internal server error" }); }