seven-boom
Version:
A decorator around Boom (HTTP-friendly error objects) to empower it
64 lines (53 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getWrappedFunc = undefined;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var defaultArgs = {
default: ['message', 'data'],
methodNotAllowed: ['message', 'data', 'allow'],
unauthorized: ['message', 'scheme', 'attributes'],
create: ['statusCode', 'message', 'data'],
wrap: ['error', 'statusCode', 'message']
};
/**
* This function gets a boom function and arguments in new format and return
* a wrapped boom function
*/
function getWrappedFunc(funcName, func) {
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
args[_key - 2] = arguments[_key];
}
var funcDefaultArgs = defaultArgs[funcName] || defaultArgs['default'];
var allArgs = funcDefaultArgs.concat(args);
return function () {
for (var _len2 = arguments.length, allArgs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
allArgs[_key2] = arguments[_key2];
}
var boomArgs = _lodash2.default.take(allArgs, funcDefaultArgs.length);
var result = func.call.apply(func, [null].concat(_toConsumableArray(boomArgs)));
for (var i = 0; i < args.length; i++) {
var currArgVal = allArgs[i + funcDefaultArgs.length];
var argDef = args[i];
// Check if we need to use the defaults
if (currArgVal === undefined) {
// Run the function from the args def
if (_lodash2.default.isFunction(argDef.default)) {
result.output.payload[argDef.name] = argDef.default();
// Add the default value to result
} else if (argDef.default) {
result.output.payload[argDef.name] = argDef.default;
}
// Add the passed value to result
} else {
result.output.payload[argDef.name] = currArgVal;
}
}
return result;
};
}
exports.getWrappedFunc = getWrappedFunc;