UNPKG

@dashkite/joy

Version:

*The simplicity of Lodash with the functional flair of Rambda.*

366 lines (365 loc) 51.1 kB
var _, apply, arity, bcompose, bflow, binary, bind, bpipe, chain, compose, curry, detach, flip, flow, identity, isPromise, map, memoize, once, partial, pipe, proxy, rtee, send, spread, stack, substitute, tee, ternary, unary, wait, wrap, splice = [].splice; identity = function(x) { return x; }; 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 arity = function(N, f) { switch(N){ case 0: return function(...ax) { return f.apply(this, ax); }; 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 an integer between 0 and 10, inclusive."); } }; unary = function(f) { return arity(1, f); }; binary = function(f) { return arity(2, f); }; ternary = function(f) { return arity(3, f); }; flip = function(f) { switch(f.length){ case 0: return f; case 1: return function(a0) { return f.call(this, a0); }; case 2: return function(a0, a1) { return f.call(this, a1, a0); }; case 3: return function(a0, a1, a2) { return f.call(this, a2, a1, a0); }; case 4: return function(a0, a1, a2, a3) { return f.call(this, a3, a2, a1, a0); }; case 5: return function(a0, a1, a2, a3, a4) { return f.call(this, a4, a3, a2, a1, a0); }; case 6: return function(a0, a1, a2, a3, a4, a5) { return f.call(this, a5, a4, a3, a2, a1, a0); }; case 7: return function(a0, a1, a2, a3, a4, a5, a6) { return f.call(this, a6, a4, a3, a2, a1, a0); }; case 8: return function(a0, a1, a2, a3, a4, a5, a6, a7) { return f.call(this, a7, a6, a5, a4, a3, a2, a1, a0); }; case 9: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) { return f.call(this, a8, a7, a6, a5, a4, a3, a2, a1, a0); }; case 10: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { return f.call(this, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0); }; default: return function(...ax) { return f.apply(this, ax.reverse()); }; } }; curry = function(f) { if (f.length > 1) { return arity(f.length, function(...ax) { var length, self; self = this; if (ax.length >= f.length) { return f.apply(self, ax); } else { length = f.length - ax.length; if (length === 1) { return function(x) { return f.apply(self, [ ...ax, x ]); }; } else { return curry(arity(length, function(...bx) { return f.apply(self, [ ...ax, ...bx ]); })); } } }); } else { return f; } }; _ = {}; 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; }); partial = function(f, ax) { var a, j, len, n; n = 0; for(j = 0, len = ax.length; j < len; j++){ a = ax[j]; if (a === _) { n++; } } return arity(n, function(...bx) { return f(...substitute(ax, bx)); }); }; spread = function(f) { return function(ax) { return f(...ax); }; }; stack = function(f) { return function(...ax) { return f(ax); }; }; pipe = function([f, ...gx]) { if (gx.length === 0) { return f != null ? f : identity; } else { return function({ g }) { g = pipe(gx); return arity(f.length, function(...args) { return function({ self, x }) { x = f.apply(self, args); if ((x != null ? x.then : void 0) != null) { return x.then(g.bind(self)); } else { return g.call(self, x); } }({ self: this }); }); }({}); } }; flow = pipe; compose = function(fx) { return pipe(fx.reverse()); }; bpipe = pipe; bflow = pipe; bcompose = function(fx) { return bpipe(fx.reverse()); }; wait = function(f) { return arity(f.length, function(...ax) { return Promise.all(ax).then(function(ax) { return f(...ax); }); }); }; tee = function(f) { return arity(Math.max(f.length, 1), function(a, ...bx) { var k, ref; if (((ref = k = f.apply(this, [ a, ...bx ])) != null ? ref.then : void 0) != null) { return k.then(function() { return a; }); } else { return a; } }); }; 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.apply(this, [ ...ax, b ])) != null ? ref1.then : void 0) != null) { return k.then(function() { return b; }); } else { return b; } }); }; once = function(f) { return function(k) { return arity(f.length, function(...ax) { if (k != null) { return k; } else { return k = f.apply(this, ax); } }); }(void 0); }; memoize = function(f) { return function(cache) { return arity(f.length, function(...ax) { var name1; return cache[name1 = JSON.stringify(ax)] != null ? cache[name1] : cache[name1] = f.apply(this, ax); }); }({}); }; apply = curry(function(f, ax) { return f.apply(null, ax); }); bind = curry(function(f, x) { return f.bind(x); }); detach = function(f) { return curry(arity(f.length + 1, function(x, ...args) { return f.apply(x, args); })); }; send = curry(function(name, ax, object) { return object[name].apply(object, ax); }); isPromise = function(k) { return k instanceof Promise; }; chain = function(f) { return arity(Math.max(f.length, 1), function(...ax) { var k; if (isPromise(k = f.apply(this, ax))) { return k.then(()=>{ return this; }); } else { return this; } }); }; map = function(fx) { return function({ lengths, length }) { lengths = fx.map(function(f) { return f.length; }); length = Math.max(...lengths); return arity(length, function(...args) { var f, j, len, results; results = []; for(j = 0, len = fx.length; j < len; j++){ f = fx[j]; results.push(f.apply(this, args)); } return results; }); }({}); }; proxy = curry(function(name, ax) { return function(...bx) { return this[name].apply(this, [ ...ax, ...bx ]); }; }); export { identity, wrap, arity, unary, binary, ternary, flip, curry, _, substitute, partial, spread, stack, pipe, compose, wait, flow, bpipe, bcompose, bflow, tee, rtee, once, memoize, apply, bind, detach, send, chain, map, proxy }; export default { identity, wrap, arity, unary, binary, ternary, flip, curry, _, substitute, partial, spread, stack, pipe, compose, wait, flow, bpipe, bcompose, bflow, tee, rtee, once, memoize, apply, bind, detach, send, chain, map, proxy }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL2Z1bmN0aW9uLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLENBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLFFBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsUUFBQSxFQUFBLFNBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsVUFBQSxFQUFBLEdBQUEsRUFBQSxPQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBO0VBQUE7O0FBQUEsUUFBQSxHQUFXLFFBQUEsQ0FBQyxDQUFELENBQUE7U0FBTztBQUFQOztBQUVYLElBQUEsR0FBTyxRQUFBLENBQUMsQ0FBRCxDQUFBO1NBQU8sUUFBQSxDQUFBLENBQUE7V0FBRztFQUFIO0FBQVAsRUFGUDs7OztBQU1BLEtBQUEsR0FBUyxRQUFBLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBQTtBQUNQLFVBQU8sQ0FBUDtBQUFBLFNBQ08sQ0FEUDthQUVJLFFBQUEsQ0FBQSxHQUFDLEVBQUQsQ0FBQTtlQUFXLENBQUMsQ0FBQyxLQUFGLENBQVEsSUFBUixFQUFXLEVBQVg7TUFBWDtBQUZKLFNBR08sQ0FIUDthQUlJLFFBQUEsQ0FBQyxFQUFELENBQUE7ZUFBUSxDQUFDLENBQUMsS0FBRixDQUFRLElBQVIsRUFBVyxTQUFYO01BQVI7QUFKSixTQUtPLENBTFA7YUFNSSxRQUFBLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBQTtlQUFhLENBQUMsQ0FBQyxLQUFGLENBQVEsSUFBUixFQUFXLFNBQVg7TUFBYjtBQU5K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QmIsSUFqQmEsRUFrQmIsS0FsQmEsRUFtQmIsUUFuQmEsRUFvQmIsS0FwQmEsRUFxQmIsR0FyQmEsRUFzQmIsSUF0QmEsRUF1QmIsSUF2QmEsRUF3QmIsT0F4QmEsRUF5QmIsS0F6QmEsRUEwQmIsSUExQmEsRUEyQmIsTUEzQmEsRUE0QmIsSUE1QmEsRUE2QmIsS0E3QmEsRUE4QmIsR0E5QmEsRUErQmIsS0EvQmEiLCJzb3VyY2VzQ29udGVudCI6WyJpZGVudGl0eSA9ICh4KSAtPiB4XG5cbndyYXAgPSAoeCkgLT4gLT4geFxuXG4jIEJhc2VkIG9uIF9hcml0eSBmcm9tIFJhbWJkYTpcbiMgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvdjAuMjYuMS9zb3VyY2UvaW50ZXJuYWwvX2FyaXR5LmpzXG5hcml0eSAgPSAoTiwgZikgLT5cbiAgc3dpdGNoIE5cbiAgICB3aGVuIDBcbiAgICAgIChheC4uLikgLT4gZi5hcHBseSBALCBheFxuICAgIHdoZW4gMVxuICAgICAgKGEwKSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gMlxuICAgICAgKGEwLCBhMSkgIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiAzXG4gICAgICAoYTAsIGExLCBhMikgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDRcbiAgICAgIChhMCwgYTEsIGEyLCBhMykgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDVcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA2XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDdcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDhcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA5XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDEwXG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgZWxzZVxuICAgICAgdGhyb3cgbmV3IEVycm9yIFwiRmlyc3QgYXJndW1lbnQgdG8gYXJpdHkgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAsIGluY2x1c2l2ZS5cIlxuXG51bmFyeSA9IChmKSAtPiBhcml0eSAxLCBmXG5cbmJpbmFyeSA9IChmKSAtPiBhcml0eSAyLCBmXG5cbnRlcm5hcnkgPSAoZikgLT4gYXJpdHkgMywgZlxuXG5mbGlwID0gKGYpIC0+XG4gIHN3aXRjaCBmLmxlbmd0aFxuICAgIHdoZW4gMFxuICAgICAgZlxuICAgIHdoZW4gMVxuICAgICAgKGEwKSAtPiBmLmNhbGwgQCwgYTBcbiAgICB3aGVuIDJcbiAgICAgIChhMCwgYTEpICAtPiBmLmNhbGwgQCwgYTEsIGEwXG4gICAgd2hlbiAzXG4gICAgICAoYTAsIGExLCBhMikgLT4gZi5jYWxsIEAsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDRcbiAgICAgIChhMCwgYTEsIGEyLCBhMykgLT4gZi5jYWxsIEAsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiA1XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0KSAtPiBmLmNhbGwgQCwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiA2XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgLT4gZi5jYWxsIEAsIGE1LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDdcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgLT4gZi5jYWxsIEAsIGE2LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDhcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIC0+XG4gICAgICAgIGYuY2FsbCBALCBhNywgYTYsIGE1LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDlcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSAtPlxuICAgICAgICBmLmNhbGwgQCwgYTgsIGE3LCBhNiwgYTUsIGE0LCBhMywgYTIsIGExLCBhMFxuICAgIHdoZW4gMTBcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgLT5cbiAgICAgICAgZi5jYWxsIEAsIGE5LCBhOCwgYTcsIGE2LCBhNSwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgZWxzZVxuICAgICAgKGF4Li4uKSAtPiBmLmFwcGx5IEAsIGF4LnJldmVyc2UoKVxuXG5jdXJyeSA9IChmKSAtPlxuICBpZiBmLmxlbmd0aCA+IDFcbiAgICBhcml0eSBmLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgICAgc2VsZiA9IEBcbiAgICAgIGlmIGF4Lmxlbmd0aCA+PSBmLmxlbmd0aFxuICAgICAgICBmLmFwcGx5IHNlbGYsIGF4XG4gICAgICBlbHNlXG4gICAgICAgIGxlbmd0aCA9IGYubGVuZ3RoIC0gYXgubGVuZ3RoXG4gICAgICAgIGlmIGxlbmd0aCA9PSAxXG4gICAgICAgICAgKHgpIC0+IGYuYXBwbHkgc2VsZiwgWyBheC4uLiwgeCBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjdXJyeSBhcml0eSBsZW5ndGgsIChieC4uLikgLT4gZi5hcHBseSBzZWxmLCBbIGF4Li4uLCBieC4uLiBdXG4gIGVsc2UgZlxuXG5fID0ge31cblxuc3Vic3RpdHV0ZSA9IGN1cnJ5IChheCwgYngpIC0+XG4gIGkgPSAwXG4gIGZvciBhIGluIGF4XG4gICAgaWYgYSA9PSBfXG4gICAgICBieFtpKytdXG4gICAgZWxzZVxuICAgICAgYVxuXG5wYXJ0aWFsID0gKGYsIGF4KSAtPlxuICBuID0gMFxuICBmb3IgYSBpbiBheCB3aGVuIGEgPT0gX1xuICAgIG4rK1xuICBhcml0eSBuLCAoYnguLi4pIC0+IGYgKHN1YnN0aXR1dGUgYXgsIGJ4KS4uLlxuXG5zcHJlYWQgPSAoZikgLT4gKGF4KSAtPiBmIGF4Li4uXG5cbnN0YWNrID0gKGYpIC0+IChheC4uLikgLT4gZiBheFxuXG5waXBlID0gKFsgZiwgZ3guLi4gXSkgLT5cbiAgaWYgZ3gubGVuZ3RoID09IDBcbiAgICBmID8gaWRlbnRpdHlcbiAgZWxzZVxuICAgIGRvICh7IGcgfSA9IHt9KSAtPlxuICAgICAgZyA9IHBpcGUgZ3hcbiAgICAgIGFyaXR5ICggZi5sZW5ndGggKSwgKCBhcmdzLi4uICkgLT5cbiAgICAgICAgZG8gKHsgc2VsZiwgeCB9ID0geyBzZWxmOiBAIH0pIC0+XG4gICAgICAgICAgeCA9IGYuYXBwbHkgc2VsZiwgYXJnc1xuICAgICAgICAgIGlmIHg/LnRoZW4/XG4gICAgICAgICAgICB4LnRoZW4gKCBnLmJpbmQgc2VsZiApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZy5jYWxsIHNlbGYsIHhcblxuZmxvdyA9IHBpcGVcblxuY29tcG9zZSA9IChmeCkgLT4gcGlwZSBmeC5yZXZlcnNlKClcblxuYnBpcGUgPSBwaXBlXG5cbmJmbG93ID0gcGlwZVxuXG5iY29tcG9zZSA9IChmeCkgLT4gYnBpcGUgZngucmV2ZXJzZSgpXG5cbndhaXQgPSAoZikgLT5cbiAgYXJpdHkgZi5sZW5ndGgsIChheC4uLikgLT5cbiAgICBQcm9taXNlLmFsbCBheFxuICAgICAgLnRoZW4gKGF4KSAtPiBmIGF4Li4uXG5cbnRlZSA9IChmKSAtPlxuICBhcml0eSAoTWF0aC5tYXggZi5sZW5ndGgsIDEpLCAoYSwgYnguLi4pIC0+XG4gICAgaWYgKGsgPSAoZi5hcHBseSBALCBbIGEsIGJ4Li4uIF0pKT8udGhlbj9cbiAgICAgIGsudGhlbiAtPiBhXG4gICAgZWxzZVxuICAgICAgYVxuXG5ydGVlID0gKGYpIC0+XG4gIGFyaXR5IChNYXRoLm1heCBmLmxlbmd0aCwgMSksIChheC4uLiwgYikgLT5cbiAgICBpZiAoayA9IChmLmFwcGx5IEAsIFsgYXguLi4sIGIgXSkpPy50aGVuP1xuICAgICAgay50aGVuIC0+IGJcbiAgICBlbHNlXG4gICAgICBiXG5cbm9uY2UgPSAoZikgLT5cbiAgZG8gKGs9dW5kZWZpbmVkKSAtPlxuICAgIGFyaXR5IGYubGVuZ3RoLFxuICAgICAgKGF4Li4uKSAtPiBpZiBrPyB0aGVuIGsgZWxzZSAoayA9IGYuYXBwbHkgQCwgYXgpXG5cbm1lbW9pemUgPSAoZikgLT5cbiAgZG8gKGNhY2hlID0ge30pIC0+XG4gICAgYXJpdHkgZi5sZW5ndGgsIChheC4uLikgLT5cbiAgICAgIGNhY2hlWyBKU09OLnN0cmluZ2lmeSBheCBdID89IGYuYXBwbHkgQCwgYXhcblxuYXBwbHkgPSBjdXJyeSAoZiwgYXgpIC0+IGYuYXBwbHkgbnVsbCwgYXhcblxuYmluZCA9IGN1cnJ5IChmLCB4KSAtPiBmLmJpbmQgeFxuXG5kZXRhY2ggPSAoZikgLT5cbiAgY3VycnkgYXJpdHkgKGYubGVuZ3RoICsgMSksIFxuICAgICh4LCBhcmdzLi4uKSAtPiBmLmFwcGx5IHgsIGFyZ3Ncblxuc2VuZCA9IGN1cnJ5IChuYW1lLCBheCwgb2JqZWN0KSAtPiBvYmplY3RbbmFtZV0uYXBwbHkgb2JqZWN0LCBheFxuXG5pc1Byb21pc2UgPSAoaykgLT4gayBpbnN0YW5jZW9mIFByb21pc2VcblxuY2hhaW4gPSAoZikgLT5cbiAgYXJpdHkgKE1hdGgubWF4IGYubGVuZ3RoLCAxKSwgKGF4Li4uKSAtPlxuICAgIGlmIChpc1Byb21pc2UgKGsgPSAoZi5hcHBseSBALCBheCkpKVxuICAgICAgay50aGVuID0+IEBcbiAgICBlbHNlXG4gICAgICBAXG5cbm1hcCA9ICggZnggKSAtPlxuICBkbyAoeyBsZW5ndGhzLCBsZW5ndGggfSA9IHt9KSAtPlxuICAgIGxlbmd0aHMgPSBmeC5tYXAgKCBmICkgLT4gZi5sZW5ndGhcbiAgICBsZW5ndGggPSBNYXRoLm1heCBsZW5ndGhzLi4uXG4gICAgYXJpdHkgbGVuZ3RoLCAoIGFyZ3MuLi4gKSAtPlxuICAgICAgKCBmLmFwcGx5IEAsIGFyZ3MgKSBmb3IgZiBpbiBmeFxuXG5wcm94eSA9IGN1cnJ5IChuYW1lLCBheCkgLT5cbiAgKGJ4Li4uKSAtPiBAW25hbWVdLmFwcGx5IEAsIFsgYXguLi4sIGJ4Li4uIF1cblxuZXhwb3J0IHtcbiAgaWRlbnRpdHlcbiAgd3JhcFxuICBhcml0eVxuICB1bmFyeVxuICBiaW5hcnlcbiAgdGVybmFyeVxuICBmbGlwXG4gIGN1cnJ5XG4gIF9cbiAgc3Vic3RpdHV0ZVxuICBwYXJ0aWFsXG4gIHNwcmVhZFxuICBzdGFja1xuICBwaXBlXG4gIGNvbXBvc2VcbiAgd2FpdFxuICBmbG93XG4gIGJwaXBlXG4gIGJjb21wb3NlXG4gIGJmbG93XG4gIHRlZVxuICBydGVlXG4gIG9uY2VcbiAgbWVtb2l6ZVxuICBhcHBseVxuICBiaW5kXG4gIGRldGFjaFxuICBzZW5kXG4gIGNoYWluXG4gIG1hcFxuICBwcm94eVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkZW50aXR5XG4gIHdyYXBcbiAgYXJpdHlcbiAgdW5hcnlcbiAgYmluYXJ5XG4gIHRlcm5hcnlcbiAgZmxpcFxuICBjdXJyeVxuICBfXG4gIHN1YnN0aXR1dGVcbiAgcGFydGlhbFxuICBzcHJlYWRcbiAgc3RhY2tcbiAgcGlwZVxuICBjb21wb3NlXG4gIHdhaXRcbiAgZmxvd1xuICBicGlwZVxuICBiY29tcG9zZVxuICBiZmxvd1xuICB0ZWVcbiAgcnRlZVxuICBvbmNlXG4gIG1lbW9pemVcbiAgYXBwbHlcbiAgYmluZFxuICBkZXRhY2hcbiAgc2VuZFxuICBjaGFpblxuICBtYXBcbiAgcHJveHlcbn1cbiJdfQ== //# sourceURL=/@dashkite/joy/src/function.coffee //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvZnVuY3Rpb24uY29mZmVlIl0sInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpZGVudGl0eSA9ICh4KSAtPiB4XG5cbndyYXAgPSAoeCkgLT4gLT4geFxuXG4jIEJhc2VkIG9uIF9hcml0eSBmcm9tIFJhbWJkYTpcbiMgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvdjAuMjYuMS9zb3VyY2UvaW50ZXJuYWwvX2FyaXR5LmpzXG5hcml0eSAgPSAoTiwgZikgLT5cbiAgc3dpdGNoIE5cbiAgICB3aGVuIDBcbiAgICAgIChheC4uLikgLT4gZi5hcHBseSBALCBheFxuICAgIHdoZW4gMVxuICAgICAgKGEwKSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gMlxuICAgICAgKGEwLCBhMSkgIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiAzXG4gICAgICAoYTAsIGExLCBhMikgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDRcbiAgICAgIChhMCwgYTEsIGEyLCBhMykgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDVcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA2XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDdcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDhcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA5XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDEwXG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgZWxzZVxuICAgICAgdGhyb3cgbmV3IEVycm9yIFwiRmlyc3QgYXJndW1lbnQgdG8gYXJpdHkgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAsIGluY2x1c2l2ZS5cIlxuXG51bmFyeSA9IChmKSAtPiBhcml0eSAxLCBmXG5cbmJpbmFyeSA9IChmKSAtPiBhcml0eSAyLCBmXG5cbnRlcm5hcnkgPSAoZikgLT4gYXJpdHkgMywgZlxuXG5mbGlwID0gKGYpIC0+XG4gIHN3aXRjaCBmLmxlbmd0aFxuICAgIHdoZW4gMFxuICAgICAgZlxuICAgIHdoZW4gMVxuICAgICAgKGEwKSAtPiBmLmNhbGwgQCwgYTBcbiAgICB3aGVuIDJcbiAgICAgIChhMCwgYTEpICAtPiBmLmNhbGwgQCwgYTEsIGEwXG4gICAgd2hlbiAzXG4gICAgICAoYTAsIGExLCBhMikgLT4gZi5jYWxsIEAsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDRcbiAgICAgIChhMCwgYTEsIGEyLCBhMykgLT4gZi5jYWxsIEAsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiA1XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0KSAtPiBmLmNhbGwgQCwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiA2XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgLT4gZi5jYWxsIEAsIGE1LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDdcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgLT4gZi5jYWxsIEAsIGE2LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDhcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIC0+XG4gICAgICAgIGYuY2FsbCBALCBhNywgYTYsIGE1LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDlcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSAtPlxuICAgICAgICBmLmNhbGwgQCwgYTgsIGE3LCBhNiwgYTUsIGE0LCBhMywgYTIsIGExLCBhMFxuICAgIHdoZW4gMTBcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgLT5cbiAgICAgICAgZi5jYWxsIEAsIGE5LCBhOCwgYTcsIGE2LCBhNSwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgZWxzZVxuICAgICAgKGF4Li4uKSAtPiBmLmFwcGx5IEAsIGF4LnJldmVyc2UoKVxuXG5jdXJyeSA9IChmKSAtPlxuICBpZiBmLmxlbmd0aCA+IDFcbiAgICBhcml0eSBmLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgICAgc2VsZiA9IEBcbiAgICAgIGlmIGF4Lmxlbmd0aCA+PSBmLmxlbmd0aFxuICAgICAgICBmLmFwcGx5IHNlbGYsIGF4XG4gICAgICBlbHNlXG4gICAgICAgIGxlbmd0aCA9IGYubGVuZ3RoIC0gYXgubGVuZ3RoXG4gICAgICAgIGlmIGxlbmd0aCA9PSAxXG4gICAgICAgICAgKHgpIC0+IGYuYXBwbHkgc2VsZiwgWyBheC4uLiwgeCBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjdXJyeSBhcml0eSBsZW5ndGgsIChieC4uLikgLT4gZi5hcHBseSBzZWxmLCBbIGF4Li4uLCBieC4uLiBdXG4gIGVsc2UgZlxuXG5fID0ge31cblxuc3Vic3RpdHV0ZSA9IGN1cnJ5IChheCwgYngpIC0+XG4gIGkgPSAwXG4gIGZvciBhIGluIGF4XG4gICAgaWYgYSA9PSBfXG4gICAgICBieFtpKytdXG4gICAgZWxzZVxuICAgICAgYVxuXG5wYXJ0aWFsID0gKGYsIGF4KSAtPlxuICBuID0gMFxuICBmb3IgYSBpbiBheCB3aGVuIGEgPT0gX1xuICAgIG4rK1xuICBhcml0eSBuLCAoYnguLi4pIC0+IGYgKHN1YnN0aXR1dGUgYXgsIGJ4KS4uLlxuXG5zcHJlYWQgPSAoZikgLT4gKGF4KSAtPiBmIGF4Li4uXG5cbnN0YWNrID0gKGYpIC0+IChheC4uLikgLT4gZiBheFxuXG5waXBlID0gKFsgZiwgZ3guLi4gXSkgLT5cbiAgaWYgZ3gubGVuZ3RoID09IDBcbiAgICBmID8gaWRlbnRpdHlcbiAgZWxzZVxuICAgIGRvICh7IGcgfSA9IHt9KSAtPlxuICAgICAgZyA9IHBpcGUgZ3hcbiAgICAgIGFyaXR5ICggZi5sZW5ndGggKSwgKCBhcmdzLi4uICkgLT5cbiAgICAgICAgZG8gKHsgc2VsZiwgeCB9ID0geyBzZWxmOiBAIH0pIC0+XG4gICAgICAgICAgeCA9IGYuYXBwbHkgc2VsZiwgYXJnc1xuICAgICAgICAgIGlmIHg/LnRoZW4/XG4gICAgICAgICAgICB4LnRoZW4gKCBnLmJpbmQgc2VsZiApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZy5jYWxsIHNlbGYsIHhcblxuZmxvdyA9IHBpcGVcblxuY29tcG9zZSA9IChmeCkgLT4gcGlwZSBmeC5yZXZlcnNlKClcblxuYnBpcGUgPSBwaXBlXG5cbmJmbG93ID0gcGlwZVxuXG5iY29tcG9zZSA9IChmeCkgLT4gYnBpcGUgZngucmV2ZXJzZSgpXG5cbndhaXQgPSAoZikgLT5cbiAgYXJpdHkgZi5sZW5ndGgsIChheC4uLikgLT5cbiAgICBQcm9taXNlLmFsbCBheFxuICAgICAgLnRoZW4gKGF4KSAtPiBmIGF4Li4uXG5cbnRlZSA9IChmKSAtPlxuICBhcml0eSAoTWF0aC5tYXggZi5sZW5ndGgsIDEpLCAoYSwgYnguLi4pIC0+XG4gICAgaWYgKGsgPSAoZi5hcHBseSBALCBbIGEsIGJ4Li4uIF0pKT8udGhlbj9cbiAgICAgIGsudGhlbiAtPiBhXG4gICAgZWxzZVxuICAgICAgYVxuXG5ydGVlID0gKGYpIC0+XG4gIGFyaXR5IChNYXRoLm1heCBmLmxlbmd0aCwgMSksIChheC4uLiwgYikgLT5cbiAgICBpZiAoayA9IChmLmFwcGx5IEAsIFsgYXguLi4sIGIgXSkpPy50aGVuP1xuICAgICAgay50aGVuIC0+IGJcbiAgICBlbHNlXG4gICAgICBiXG5cbm9uY2UgPSAoZikgLT5cbiAgZG8gKGs9dW5kZWZpbmVkKSAtPlxuICAgIGFyaXR5IGYubGVuZ3RoLFxuICAgICAgKGF4Li4uKSAtPiBpZiBrPyB0aGVuIGsgZWxzZSAoayA9IGYuYXBwbHkgQCwgYXgpXG5cbm1lbW9pemUgPSAoZikgLT5cbiAgZG8gKGNhY2hlID0ge30pIC0+XG4gICAgYXJpdHkgZi5sZW5ndGgsIChheC4uLikgLT5cbiAgICAgIGNhY2hlWyBKU09OLnN0cmluZ2lmeSBheCBdID89IGYuYXBwbHkgQCwgYXhcblxuYXBwbHkgPSBjdXJyeSAoZiwgYXgpIC0+IGYuYXBwbHkgbnVsbCwgYXhcblxuYmluZCA9IGN1cnJ5IChmLCB4KSAtPiBmLmJpbmQgeFxuXG5kZXRhY2ggPSAoZikgLT5cbiAgY3VycnkgYXJpdHkgKGYubGVuZ3RoICsgMSksIFxuICAgICh4LCBhcmdzLi4uKSAtPiBmLmFwcGx5IHgsIGFyZ3Ncblxuc2VuZCA9IGN1cnJ5IChuYW1lLCBheCwgb2JqZWN0KSAtPiBvYmplY3RbbmFtZV0uYXBwbHkgb2JqZWN0LCBheFxuXG5pc1Byb21pc2UgPSAoaykgLT4gayBpbnN0YW5jZW9mIFByb21pc2VcblxuY2hhaW4gPSAoZikgLT5cbiAgYXJpdHkgKE1hdGgubWF4IGYubGVuZ3RoLCAxKSwgKGF4Li4uKSAtPlxuICAgIGlmIChpc1Byb21pc2UgKGsgPSAoZi5hcHBseSBALCBheCkpKVxuICAgICAgay50aGVuID0+IEBcbiAgICBlbHNlXG4gICAgICBAXG5cbm1hcCA9ICggZnggKSAtPlxuICBkbyAoeyBsZW5ndGhzLCBsZW5ndGggfSA9IHt9KSAtPlxuICAgIGxlbmd0aHMgPSBmeC5tYXAgKCBmICkgLT4gZi5sZW5ndGhcbiAgICBsZW5ndGggPSBNYXRoLm1heCBsZW5ndGhzLi4uXG4gICAgYXJpdHkgbGVuZ3RoLCAoIGFyZ3MuLi4gKSAtPlxuICAgICAgKCBmLmFwcGx5IEAsIGFyZ3MgKSBmb3IgZiBpbiBmeFxuXG5wcm94eSA9IGN1cnJ5IChuYW1lLCBheCkgLT5cbiAgKGJ4Li4uKSAtPiBAW25hbWVdLmFwcGx5IEAsIFsgYXguLi4sIGJ4Li4uIF1cblxuZXhwb3J0IHtcbiAgaWRlbnRpdHlcbiAgd3JhcFxuICBhcml0eVxuICB1bmFyeVxuICBiaW5hcnlcbiAgdGVybmFyeVxuICBmbGlwXG4gIGN1cnJ5XG4gIF9cbiAgc3Vic3RpdHV0ZVxuICBwYXJ0aWFsXG4gIHNwcmVhZFxuICBzdGFja1xuICBwaXBlXG4gIGNvbXBvc2VcbiAgd2FpdFxuICBmbG93XG4gIGJwaXBlXG4gIGJjb21wb3NlXG4gIGJmbG93XG4gIHRlZVxuICBydGVlXG4gIG9uY2VcbiAgbWVtb2l6ZVxuICBhcHBseVxuICBiaW5kXG4gIGRldGFjaFxuICBzZW5kXG4gIGNoYWluXG4gIG1hcFxuICBwcm94eVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkZW50aXR5XG4gIHdyYXBcbiAgYXJpdHlcbiAgdW5hcnlcbiAgYmluYXJ5XG4gIHRlcm5hcnlcbiAgZmxpcFxuICBjdXJyeVxuICBfXG4gIHN1YnN0aXR1dGVcbiAgcGFydGlhbFxuICBzcHJlYWRcbiAgc3RhY2tcbiAgcGlwZVxuICBjb21wb3NlXG4gIHdhaXRcbiAgZmxvd1xuICBicGlwZVxuICBiY29tcG9zZVxuICBiZmxvd1xuICB0ZWVcbiAgcnRlZVxuICBvbmNlXG4gIG1lbW9pemVcbiAgYXBwbHlcbiAgYmluZFxuICBkZXRhY2hcbiAgc2VuZFxuICBjaGFpblxuICBtYXBcbiAgcHJveHlcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLENBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLFFBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsUUFBQSxFQUFBLFNBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxPQUFBLEVBQUEsSUFB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