trapx
Version:
A plug-and-play middleware for standardized error handling in TypeScript-based Express.js applications
33 lines (32 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createExpressErrorHandler = createExpressErrorHandler;
const BaseError_1 = require("../../core/errors/BaseError");
function createExpressErrorHandler(options = {}) {
const { includeStackTrace = process.env.NODE_ENV === 'development', logError = console.error, transformError, } = options;
return (error, _req, res, _next) => {
logError(error);
let processedError;
if (error instanceof BaseError_1.BaseError) {
processedError = error;
}
else {
processedError = transformError?.(error) || {
message: 'Internal Server Error',
statusCode: 500,
code: 'INTERNAL_SERVER_ERROR',
isOperational: false,
};
}
const response = {
success: false,
error: {
message: processedError.message || 'Internal Server Error',
code: processedError.code || 'INTERNAL_SERVER_ERROR',
...(processedError.details && { details: processedError.details }),
...(includeStackTrace && { stack: error.stack }),
},
};
res.status(processedError.statusCode || 500).json(response);
};
}