UNPKG

seven-boom

Version:

A decorator around Boom (HTTP-friendly error objects) to empower it

64 lines (53 loc) 2.23 kB
'use strict'; 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;