UNPKG

redux

Version:

Predictable state container for JavaScript apps

29 lines (25 loc) 830 B
"use strict"; exports.__esModule = true; exports["default"] = compose; /** * Composes single-argument functions from right to left. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing functions from right to * left. For example, compose(f, g, h) is identical to arg => f(g(h(arg))). */ function compose() { for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } return function () { if (funcs.length === 0) { return arguments.length <= 0 ? undefined : arguments[0]; } var last = funcs[funcs.length - 1]; var rest = funcs.slice(0, -1); return rest.reduceRight(function (composed, f) { return f(composed); }, last.apply(undefined, arguments)); }; }