UNPKG

restifyx.js

Version:

Advanced API endpoint handler system with automatic documentation

60 lines 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createErrorHandler = createErrorHandler; const ApiError_1 = require("./ApiError"); const logger_1 = require("../../utils/logger"); function createErrorHandler(options = {}) { const logger = (0, logger_1.getLogger)(); return (err, req, res, next) => { if (options.logErrors) { if (err instanceof ApiError_1.ApiError) { logger.warn(`API Error: ${err.message}`, { error: err, stack: options.logStackTrace ? err.stack : undefined, path: req.path, method: req.method, }); } else { logger.error(`Unhandled error: ${err.message}`, { error: err, stack: options.logStackTrace ? err.stack : undefined, path: req.path, method: req.method, }); } } if (err instanceof ApiError_1.ApiError) { const response = { status: "error", statusCode: err.statusCode, message: err.message, errorCode: err.errorCode, details: err.details, timestamp: err.timestamp || Date.now(), }; res.status(err.statusCode).json(response); return; } const statusCode = 500; const response = { status: "error", statusCode, message: "Internal server error", errorCode: "INTERNAL_ERROR", timestamp: Date.now(), }; if (options.includeErrorInResponse || options.debug) { response.error = err.message; } if (options.includeStackInResponse || options.debug) { response.stack = err.stack; } if (options.errorFormatter) { const formattedError = options.errorFormatter(err); Object.assign(response, formattedError); } res.status(statusCode).json(response); }; } //# sourceMappingURL=ErrorHandler.js.map