UNPKG

redux

Version:

Predictable state container for JavaScript apps

36 lines (33 loc) 1.07 kB
/** * Composes single-argument functions from right to left. The rightmost * function can take multiple arguments as it provides the signature for * the resulting composite function. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing the argument functions * from right to left. For example, compose(f, g, h) is identical to doing * (...args) => f(g(h(...args))). */ export default function compose() { for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } if (funcs.length === 0) { return function (arg) { return arg; }; } else { var _ret = function () { var last = funcs[funcs.length - 1]; var rest = funcs.slice(0, -1); return { v: function v() { return rest.reduceRight(function (composed, f) { return f(composed); }, last.apply(undefined, arguments)); } }; }(); if (typeof _ret === "object") return _ret.v; } }