middy-middleware-json-error-handler
Version:
A middy JSON error handler middleware.
57 lines • 2.85 kB
JavaScript
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
;