"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.asyncHandler = exports.createError = exports.errorHandler = void 0; const logger_1 = require("../utils/logger"); const errorHandler = (error, req, res, next) => { const statusCode = error.statusCode || 500; const message = error.message || 'Internal Server Error'; logger_1.logger.error('Error occurred:', { error: error.message, stack: error.stack, url: req.url, method: req.method, ip: req.ip, userAgent: req.get('User-Agent'), }); const isDevelopment = process.env.NODE_ENV === 'development'; res.status(statusCode).json({ success: false, message: isDevelopment ? message : 'Something went wrong', ...(isDevelopment && { stack: error.stack }), }); }; exports.errorHandler = errorHandler; const createError = (message, statusCode = 500) => { const error = new Error(message); error.statusCode = statusCode; error.isOperational = true; return error; }; exports.createError = createError; const asyncHandler = (fn) => { return (req, res, next) => { Promise.resolve(fn(req, res, next)).catch(next); }; }; exports.asyncHandler = asyncHandler; //# sourceMappingURL=errorHandler.js.map