lodash-decorators
Version:
A collection of decorators using lodash at it's core.
49 lines (38 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _lodashCollectionEvery = require('lodash/collection/every');
var _lodashCollectionEvery2 = _interopRequireDefault(_lodashCollectionEvery);
var _decoratorFactory = require('../decoratorFactory');
exports['default'] = (0, _decoratorFactory.createDecorator)(validateDecorator);
function validateDecorator(fn) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var validators = args.map(function (arg) {
return Array.isArray(arg) ? arg : Array.of(arg);
}).map(function (fns) {
return function (arg) {
return (0, _lodashCollectionEvery2['default'])(fns, function (fn) {
return fn(arg);
});
};
});
return function validator() {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
validate(args);
return fn.call.apply(fn, [this].concat(args));
};
function validate(args) {
for (var i = 0, len = args.length; i < len; i++) {
if (validators[i] && !validators[i](args[i])) {
throw new TypeError('Argument did not pass validation. Got ' + typeof arg + '.');
}
}
}
}
module.exports = exports['default'];