UNPKG

lodash-decorators

Version:

A collection of decorators using lodash at it's core.

49 lines (38 loc) 1.46 kB
'use strict'; 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'];