express-boom-v2
Version:
Boom response objects in Express
31 lines (23 loc) • 860 B
JavaScript
var boom = require('@hapi/boom');
var helperMethods = ['wrap', 'create'];
module.exports = function () {
return function (req, res, next) {
if (res.boom) throw new Error('boom already exists on response object');
res.boom = {};
Object.getOwnPropertyNames(boom).forEach(function (key) {
if (typeof boom[key] !== 'function') return;
if (helperMethods.indexOf(key) !== -1) {
res.boom[key] = function () {
return boom[key].apply(boom, arguments);
};
} else {
res.boom[key] = function () {
var boomed = boom[key].apply(boom, arguments);
var boomedPayloadAndAdditionalResponse = Object.assign(boomed.output.payload, arguments[1])
return res.status(boomed.output.statusCode).send(boomedPayloadAndAdditionalResponse);
};
}
});
next();
};
};