UNPKG

panda-garden

Version:

Functional programming helpers for JavaScript.

345 lines (292 loc) 20.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.memoize = exports.given = exports.rtee = exports.tee = exports.once = exports.negate = exports.apply = exports.flow = exports.wait = exports.spread = exports.pipe = exports.compose = exports.flip = exports.partial = exports.substitute = exports._ = exports.curry = exports.ternary = exports.binary = exports.unary = exports.arity = exports.wrap = exports.identity = exports.noOp = void 0; var _, apply, arity, binary, compose, curry, flip, flow, given, identity, memoize, negate, noOp, once, partial, pipe, rtee, spread, substitute, tee, ternary, unary, wait, wrap, splice = [].splice; exports.wrap = wrap; exports.wait = wait; exports.unary = unary; exports.ternary = ternary; exports.tee = tee; exports.substitute = substitute; exports.spread = spread; exports.rtee = rtee; exports.pipe = pipe; exports.partial = partial; exports.once = once; exports.noOp = noOp; exports.negate = negate; exports.memoize = memoize; exports.identity = identity; exports.given = given; exports.flow = flow; exports.flip = flip; exports.curry = curry; exports.compose = compose; exports.binary = binary; exports.arity = arity; exports.apply = apply; exports._ = _; exports.noOp = noOp = function () {}; exports.identity = identity = function (x) { return x; }; exports.wrap = wrap = function (x) { return function () { return x; }; }; // Based on _arity from Rambda: https://github.com/ramda/ramda/blob/v0.26.1/source/internal/_arity.js exports.arity = arity = function (N, f) { switch (N) { case 0: return function () { return f.apply(this, arguments); }; case 1: return function (a0) { return f.apply(this, arguments); }; case 2: return function (a0, a1) { return f.apply(this, arguments); }; case 3: return function (a0, a1, a2) { return f.apply(this, arguments); }; case 4: return function (a0, a1, a2, a3) { return f.apply(this, arguments); }; case 5: return function (a0, a1, a2, a3, a4) { return f.apply(this, arguments); }; case 6: return function (a0, a1, a2, a3, a4, a5) { return f.apply(this, arguments); }; case 7: return function (a0, a1, a2, a3, a4, a5, a6) { return f.apply(this, arguments); }; case 8: return function (a0, a1, a2, a3, a4, a5, a6, a7) { return f.apply(this, arguments); }; case 9: return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { return f.apply(this, arguments); }; case 10: return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { return f.apply(this, arguments); }; default: throw new Error("First argument to arity must be a non-negative integer no greater than ten"); } }; exports.unary = unary = function (f) { return arity(1, f); }; exports.binary = binary = function (f) { return arity(2, f); }; exports.ternary = ternary = function (f) { return arity(3, f); }; exports.curry = curry = function (f) { return arity(f.length, function (...ax) { var length; if (ax.length >= f.length) { return f(...ax); } else { length = f.length - ax.length; if (length === 1) { return function (x) { return f(...ax, x); }; } else { return curry(arity(length, function (...bx) { return f(...ax, ...bx); })); } } }); }; exports._ = _ = {}; exports.substitute = substitute = curry(function (ax, bx) { var a, i, j, len, results; i = 0; results = []; for (j = 0, len = ax.length; j < len; j++) { a = ax[j]; if (a === _) { results.push(bx[i++]); } else { results.push(a); } } return results; }); exports.partial = partial = function (f, ...ax) { return function (...bx) { return f(...substitute(ax, bx)); }; }; exports.flip = flip = function (f) { switch (f.length) { case 1: return f; case 2: return function (y, x) { return f(x, y); }; case 3: return function (z, y, x) { return f(x, y, z); }; default: return function (...ax) { return f(...ax.reverse()); }; } }; exports.compose = compose = function (...fx) { var f, g, ref; ref = fx, [...fx] = ref, [f] = splice.call(fx, -1); if (fx.length === 0) { return f; } else { g = compose(...fx); return function (...ax) { var fax, ref1; if (((ref1 = fax = f(...ax)) != null ? ref1.then : void 0) != null) { return fax.then(g); } else { return g(fax); } }; } }; exports.pipe = pipe = flip(compose); exports.spread = spread = function (f) { return function (ax) { return f(...ax); }; }; exports.wait = wait = function (f) { return function (x) { if ((x != null ? x.then : void 0) != null) { return x.then(function (a) { return f(a); }); } else { return f(x); } }; }; exports.flow = flow = function (...fx) { var ref; if (fx.length === 0) { return void 0; } else if (fx.length === 1 && fx[0] == null) { return void 0; } else if (fx.length === 1 && ((ref = fx[0]) != null ? ref[Symbol.iterator] : void 0) != null) { return flow(...fx[0]); } else { return function (...ax) { var g, gx, j, len, result, start; [start, ...gx] = fx; result = start(...ax); for (j = 0, len = gx.length; j < len; j++) { g = gx[j]; result = wait(g)(result); } return result; }; } }; exports.apply = apply = function (f, ...args) { return f(...args); }; exports.negate = negate = function (f) { return function () { return !f(...arguments); }; }; exports.given = given = function (...args) { var f, ref; ref = args, [...args] = ref, [f] = splice.call(args, -1); return f(...args); }; exports.tee = tee = function (f) { return arity(Math.max(f.length, 1), function (a, ...bx) { var k, ref; if (((ref = k = f(a, ...bx)) != null ? ref.then : void 0) != null) { return k.then(function () { return a; }); } else { return a; } }); }; exports.rtee = rtee = function (f) { return arity(Math.max(f.length, 1), function (...ax) { var b, k, ref, ref1; ref = ax, [...ax] = ref, [b] = splice.call(ax, -1); if (((ref1 = k = f(...ax, b)) != null ? ref1.then : void 0) != null) { return k.then(function () { return b; }); } else { return b; } }); }; exports.once = once = function (f) { return function (k) { return function () { if (k != null) { return k; } else { return k = f(); } }; }(void 0); }; exports.memoize = memoize = function (f) { return function (cache) { return function (...args) { return cache[args] != null ? cache[args] : cache[args] = f(...args); }; }({}); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYXZpZC9yZXBvcy9wYW5kYS1nYXJkZW4vc3JjL2luZGV4LmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQSxDQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQSxNQUFBO0FBQUEsSUFBQSxPQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQSxRQUFBO0FBQUEsSUFBQSxPQUFBO0FBQUEsSUFBQSxNQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxPQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxNQUFBO0FBQUEsSUFBQSxVQUFBO0FBQUEsSUFBQSxHQUFBO0FBQUEsSUFBQSxPQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxJQUFBO0FBQUEsSUFBQSxNQUFBLEdBQUEsR0FBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxlQUFBLElBQUEsR0FBTyxZQUFBLENBQUEsQ0FBUDs7QUFFQSxtQkFBQSxRQUFBLEdBQVcsVUFBQSxDQUFBLEVBQUE7U0FBTyxDO0FBQVAsQ0FBWDs7QUFFQSxlQUFBLElBQUEsR0FBTyxVQUFBLENBQUEsRUFBQTtTQUFPLFlBQUE7V0FBRyxDO0FBQUgsRztBQUpkLENBSUEsQzs7O0FBR0EsZ0JBQUEsS0FBQSxHQUFTLFVBQUEsQ0FBQSxFQUFBLENBQUEsRUFBQTtBQUNQLFVBQUEsQ0FBQTtBQUFBLFNBQUEsQ0FBQTthQUNlLFlBQUE7ZUFBRyxDQUFDLENBQUQsS0FBQSxDQUFBLElBQUEsRUFBQSxTQUFBLEM7QUFBSCxPOztBQURmLFNBQUEsQ0FBQTthQUVlLFVBQUEsRUFBQSxFQUFBO2VBQVEsQ0FBQyxDQUFELEtBQUEsQ0FBQSxJQUFBLEVBQUEsU0FBQSxDO0FB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ID0gKHgpIC0+IHhcblxud3JhcCA9ICh4KSAtPiAtPiB4XG5cbiMgQmFzZWQgb24gX2FyaXR5IGZyb20gUmFtYmRhOiBodHRwczovL2dpdGh1Yi5jb20vcmFtZGEvcmFtZGEvYmxvYi92MC4yNi4xL3NvdXJjZS9pbnRlcm5hbC9fYXJpdHkuanMgXG5hcml0eSAgPSAoTiwgZikgLT5cbiAgc3dpdGNoIE5cbiAgICB3aGVuIDAgdGhlbiAgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDEgdGhlbiAgKGEwKSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gMiB0aGVuICAoYTAsIGExKSAgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDMgdGhlbiAgKGEwLCBhMSwgYTIpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA0IHRoZW4gIChhMCwgYTEsIGEyLCBhMykgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDUgdGhlbiAgKGEwLCBhMSwgYTIsIGEzLCBhNCkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDYgdGhlbiAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA3IHRoZW4gIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDggdGhlbiAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDkgdGhlbiAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiAxMFxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIGVsc2VcbiAgICAgIHRocm93IG5ldyBFcnJvciBcIkZpcnN0IGFyZ3VtZW50IHRvIGFyaXR5IG11c3QgYmUgYSBub24tbmVnYXRpdmVcbiAgICAgICAgaW50ZWdlciBubyBncmVhdGVyIHRoYW4gdGVuXCJcblxuXG51bmFyeSA9IChmKSAtPiBhcml0eSAxLCBmXG5cbmJpbmFyeSA9IChmKSAtPiBhcml0eSAyLCBmXG5cbnRlcm5hcnkgPSAoZikgLT4gYXJpdHkgMywgZlxuXG5jdXJyeSA9IChmKSAtPlxuICBhcml0eSBmLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgIGlmIGF4Lmxlbmd0aCA+PSBmLmxlbmd0aFxuICAgICAgZiBheC4uLlxuICAgIGVsc2VcbiAgICAgIGxlbmd0aCA9IGYubGVuZ3RoIC0gYXgubGVuZ3RoXG4gICAgICBpZiBsZW5ndGggPT0gMVxuICAgICAgICAoeCkgLT4gZiBheC4uLiwgeFxuICAgICAgZWxzZVxuICAgICAgICBjdXJyeSBhcml0eSBsZW5ndGgsIChieC4uLikgLT4gZiBheC4uLiwgYnguLi5cblxuXyA9IHt9XG5cbnN1YnN0aXR1dGUgPSBjdXJyeSAoYXgsIGJ4KSAtPlxuICBpID0gMFxuICBmb3IgYSBpbiBheFxuICAgIGlmIGEgPT0gX1xuICAgICAgYnhbaSsrXVxuICAgIGVsc2VcbiAgICAgIGFcblxucGFydGlhbCA9IChmLCBheC4uLikgLT5cbiAgKGJ4Li4uKSAtPiBmIChzdWJzdGl0dXRlIGF4LCBieCkuLi5cblxuZmxpcCA9IChmKSAtPlxuICBzd2l0Y2ggZi5sZW5ndGhcbiAgICB3aGVuIDEgdGhlbiBmXG4gICAgd2hlbiAyIHRoZW4gKHksIHgpIC0+IGYoeCwgeSlcbiAgICB3aGVuIDMgdGhlbiAoeiwgeSwgeCkgLT4gZih4LCB5LCB6KVxuICAgIGVsc2UgKGF4Li4uKSAtPiBmKGF4LnJldmVyc2UoKS4uLilcblxuY29tcG9zZSA9IChmeC4uLiwgZikgLT5cbiAgaWYgZngubGVuZ3RoID09IDBcbiAgICBmXG4gIGVsc2VcbiAgICBnID0gY29tcG9zZSBmeC4uLlxuICAgIChheC4uLikgLT5cbiAgICAgIGlmIChmYXggPSBmIGF4Li4uKT8udGhlbj8gdGhlbiAoZmF4LnRoZW4gZykgZWxzZSAoZyBmYXgpXG5cbnBpcGUgPSBmbGlwIGNvbXBvc2Vcblxuc3ByZWFkID0gKGYpIC0+IChheCkgLT4gZiBheC4uLlxuXG53YWl0ID0gKGYpIC0+ICh4KSAtPiBpZiB4Py50aGVuPyB0aGVuICh4LnRoZW4gKGEpIC0+IGYgYSkgZWxzZSAoZiB4KVxuXG5mbG93ID0gKGZ4Li4uKSAtPlxuICBpZiBmeC5sZW5ndGggPT0gMFxuICAgIHVuZGVmaW5lZFxuICBlbHNlIGlmIGZ4Lmxlbmd0aCA9PSAxICYmICFmeFswXT9cbiAgICB1bmRlZmluZWRcbiAgZWxzZSBpZiBmeC5sZW5ndGggPT0gMSAmJiBmeFswXT9bU3ltYm9sLml0ZXJhdG9yXT9cbiAgICBmbG93IGZ4WzBdLi4uXG4gIGVsc2VcbiAgICAoYXguLi4pIC0+XG4gICAgICBbc3RhcnQsIGd4Li4uXSA9IGZ4XG4gICAgICByZXN1bHQgPSBzdGFydCBheC4uLlxuICAgICAgcmVzdWx0ID0gKHdhaXQgZykgcmVzdWx0IGZvciBnIGluIGd4XG4gICAgICByZXN1bHRcblxuYXBwbHkgPSAoZiwgYXJncy4uLikgLT4gKGYgYXJncy4uLilcblxubmVnYXRlID0gKGYpIC0+IC0+ICEoZiBhcmd1bWVudHMuLi4pXG5cbmdpdmVuID0gKGFyZ3MuLi4sIGYpIC0+IGYgYXJncy4uLlxuXG50ZWUgPSAoZikgLT5cbiAgYXJpdHkgKE1hdGgubWF4IGYubGVuZ3RoLCAxKSwgKGEsIGJ4Li4uKSAtPlxuICAgIGlmIChrID0gKGYgYSwgYnguLi4pKT8udGhlbj9cbiAgICAgIGsudGhlbiAtPiBhXG4gICAgZWxzZVxuICAgICAgYVxuXG5ydGVlID0gKGYpIC0+XG4gIGFyaXR5IChNYXRoLm1heCBmLmxlbmd0aCwgMSksIChheC4uLiwgYikgLT5cbiAgICBpZiAoayA9IChmIGF4Li4uLCBiKSk/LnRoZW4/XG4gICAgICBrLnRoZW4gLT4gYlxuICAgIGVsc2VcbiAgICAgIGJcblxub25jZSA9IChmKSAtPlxuICBkbyAoaz11bmRlZmluZWQpIC0+XG4gICAgLT4gaWYgaz8gdGhlbiBrIGVsc2UgKGsgPSBmKCkpXG5cbm1lbW9pemUgPSAoZikgLT5cbiAgZG8gKGNhY2hlPXt9KSAtPiAoYXJncy4uLikgLT4gY2FjaGVbYXJnc10gPz0gZiBhcmdzLi4uXG5cbmV4cG9ydCB7bm9PcCwgaWRlbnRpdHksIHdyYXAsXG4gIGFyaXR5LCB1bmFyeSwgYmluYXJ5LCB0ZXJuYXJ5LFxuICBjdXJyeSwgXywgc3Vic3RpdHV0ZSxcbiAgcGFydGlhbCwgZmxpcCwgY29tcG9zZSwgcGlwZSwgc3ByZWFkLCB3YWl0LCBmbG93LFxuICBhcHBseSwgbmVnYXRlLCBvbmNlLCB0ZWUsIHJ0ZWUsIGdpdmVuLCBtZW1vaXplfVxuIl0sInNvdXJjZVJvb3QiOiIifQ== //# sourceURL=/Users/david/repos/panda-garden/src/index.coffee