UNPKG

middy-middleware-json-error-handler

Version:
57 lines 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JSONErrorHandlerMiddleware = void 0; var tslib_1 = require("tslib"); /** * # JSON Error Handler Middleware */ /** An additional comment to make sure Typedoc attributes the comment above to the file itself */ var debug_1 = tslib_1.__importDefault(require("debug")); var IErrorWithExpose_1 = require("./interfaces/IErrorWithExpose"); var IErrorWithStatusCode_1 = require("./interfaces/IErrorWithStatusCode"); var omit_1 = require("./helpers/omit"); var serialize_error_1 = require("serialize-error"); /** The actual middleware */ var JSONErrorHandlerMiddleware = /** @class */ (function () { /** Creates a new JSON error handler middleware */ function JSONErrorHandlerMiddleware(_a) { var _b = _a === void 0 ? {} : _a, _c = _b.errorPropertiesToOmit, errorPropertiesToOmit = _c === void 0 ? ['stack', 'expose'] : _c; var _this = this; this.onError = function (request) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var error; return tslib_1.__generator(this, function (_a) { error = request.error; if ((0, IErrorWithStatusCode_1.isErrorWithStatusCode)(error) && this.shouldExposeError(error)) { this.logger("Responding with full error as statusCode is ".concat(error.statusCode)); request.response = { body: JSON.stringify((0, omit_1.omit)(this.errorPropertiesToOmit, (0, serialize_error_1.serializeError)(error))), statusCode: error.statusCode }; return [2 /*return*/]; } this.logger('Responding with internal server error'); request.response = { body: JSON.stringify({ message: 'Internal server error', statusCode: 500 }), statusCode: 500 }; return [2 /*return*/]; }); }); }; this.logger = (0, debug_1.default)('middy-middleware-json-error-handler'); this.logger('Setting up JSONErrorHandlerMiddleware'); this.errorPropertiesToOmit = errorPropertiesToOmit; } JSONErrorHandlerMiddleware.create = function (options) { return new JSONErrorHandlerMiddleware(options); }; JSONErrorHandlerMiddleware.prototype.shouldExposeError = function (error) { return (0, IErrorWithExpose_1.isErrorWithExpose)(error) ? error.expose : error.statusCode < 500; }; return JSONErrorHandlerMiddleware; }()); exports.JSONErrorHandlerMiddleware = JSONErrorHandlerMiddleware; exports.default = JSONErrorHandlerMiddleware.create; //# sourceMappingURL=JSONErrorHandlerMiddleware.js.map