import type { Request, Response, NextFunction } from "express";

export const errorHandlerMiddleware = (
  err: any,
  _req: Request,
  res: Response,
  _next: NextFunction
): void => {
  // Malformed or empty JSON body sent with Content-Type: application/json
  if (err.type === "entity.parse.failed") {
    res.status(400).json({ message: "Invalid JSON: request body is empty or malformed." });
    return;
  }

  console.error("[Global Error]", err);
  const statusCode = err.status || err.statusCode || 500;
  const message = err.message || "Internal server error";

  res.status(statusCode).json({
    message,
    ...(process.env.NODE_ENV !== "production" ? { stack: err.stack } : {}),
  });
};
