import { ZodError } from "zod"; import { AppError } from "../shared/errors/index.js"; export function errorHandler(err, _req, res, _next) { if (err instanceof ZodError) { return res.status(400).json({ error: "validation_error", details: err.errors }); } if (err instanceof AppError) { return res.status(err.statusCode).json({ error: err.message, ...(err.details ?? {}) }); } if (err?.code === "ER_DUP_ENTRY" || err?.nativeError?.code === "ER_DUP_ENTRY") { return res.status(409).json({ error: "Registro duplicado (login ou email já cadastrado)." }); } const status = Number(err?.statusCode ?? err?.status ?? 500); const message = typeof err?.message === "string" ? err.message : "internal_error"; if (status >= 500) { console.error("[error]", err); } res.status(status).json({ error: message }); }