UNPKG

lodash-decorators

Version:

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

79 lines (56 loc) 2.37 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _lodashStringCapitalize = require('lodash/string/capitalize'); var _lodashStringCapitalize2 = _interopRequireDefault(_lodashStringCapitalize); var _lodashObjectForOwn = require('lodash/object/forOwn'); var _lodashObjectForOwn2 = _interopRequireDefault(_lodashObjectForOwn); var _lodashObjectAssign = require('lodash/object/assign'); var _lodashObjectAssign2 = _interopRequireDefault(_lodashObjectAssign); var _lodashFunction = require('lodash/function'); var _lodashFunction2 = _interopRequireDefault(_lodashFunction); var _bind = require('./bind'); var _bind2 = _interopRequireDefault(_bind); var _tap = require('./tap'); var _tap2 = _interopRequireDefault(_tap); var _decoratorFactory = require('./decoratorFactory'); var _Applicator = require('./Applicator'); var methods = { instance: { single: ['once'], pre: ['debounce', 'throttle', 'memoize'], post: ['after', 'before'] }, proto: { single: ['spread', 'rearg', 'negate'], pre: ['ary', 'curry', 'curryRight', 'restParam'], partial: ['partial', 'partialRight'], wrap: ['wrap'], compose: ['compose', 'flow', 'flowRight', 'backflow'], partialed: ['delay', 'defer'] } }; var result = {}; (0, _lodashObjectForOwn2['default'])(methods, function (hash, createType) { (0, _lodashObjectForOwn2['default'])(hash, function (list, type) { result = list.reduce(function (res, fnName) { res[fnName] = createType === 'instance' ? (0, _decoratorFactory.createInstanceDecorator)(_lodashFunction2['default'][fnName], _Applicator.applicators[type]) : (0, _decoratorFactory.createDecorator)(_lodashFunction2['default'][fnName], _Applicator.applicators[type]); return res; }, result); }); }); // All other decorators (0, _lodashObjectAssign2['default'])(result, { bind: _bind2['default'], tap: _tap2['default'] }); // Provide aliases @memoize => @Memoize // This is for users who prefer capitalized decorators and // can prevent naming collissions. (0, _lodashObjectForOwn2['default'])(result, function (value, key) { return result[(0, _lodashStringCapitalize2['default'])(key)] = value; }); exports['default'] = result; module.exports = exports['default'];