UNPKG

moltres-utils

Version:
61 lines (48 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _flatten = _interopRequireDefault(require("./flatten")); var _head = _interopRequireDefault(require("./head")); var _identity = _interopRequireDefault(require("./identity")); var _length = _interopRequireDefault(require("./length")); var _reduce = _interopRequireDefault(require("./reduce")); var _tail = _interopRequireDefault(require("./tail")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Performs left-to-right function composition. The leftmost function may have * any arity; the remaining functions must be unary. * * In some libraries this function is named `sequence`. * * **Note:** The result of pipe is not automatically curried. * * @func * @category Function * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z) * @param {...Function} functions * @return {Function} * @example * * const f = pipe(Math.pow, negate, inc); * * f(3, 4); // -(3^4) + 1 * @symb pipe(f, g, h)(a, b) = h(g(f(a, b))) */ const pipe = (...funcs) => { funcs = (0, _flatten.default)(funcs); const size = (0, _length.default)(funcs); if (size === 0) { return _identity.default; } if (size === 1) { return (0, _head.default)(funcs); } const firstFunc = (0, _head.default)(funcs); const rest = (0, _tail.default)(funcs); return (...args) => (0, _reduce.default)((piped, func) => func(piped), firstFunc(...args), rest); }; var _default = pipe; exports.default = _default; //# sourceMappingURL=pipe.js.map