import { ZodError } from "zod"; import { configs } from "../configs/index.js"; import handleZodError from "../errors/zodError.js"; import { AppError } from "../utils/app_error.js"; const globalErrorHandler = (err, req, res, next) => { let statusCode = 500; let message = "Something went wrong!"; let errorSources = [ { path: "", message: "Something went wrong", }, ]; if (err instanceof ZodError) { const simplifiedError = handleZodError(err); statusCode = simplifiedError?.statusCode; message = simplifiedError?.message; errorSources = simplifiedError?.errorSources; } else if (err instanceof AppError) { statusCode = err?.statusCode; message = err.message; errorSources = [ { path: "", message: err?.message, }, ]; } else if (err instanceof Error) { message = err.message; errorSources = [ { path: "", message: err?.message, }, ]; } res.status(statusCode).json({ success: false, message, errorSources, err, stack: configs.env === "development" ? err?.stack : null, }); }; export default globalErrorHandler;