UNPKG

@dashkite/joy

Version:

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

166 lines (165 loc) 17.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get all () { return all; }, get any () { return any; }, get attempt () { return attempt; }, get branch () { return branch; }, get negate () { return negate; }, get test () { return test; } }); const _function = require("./function"); var _attempt, all, any, attempt, branch, isPromise, negate, test; negate = function(f) { return (0, _function.arity)(f.length, function(...ax) { var r, ref; if (((ref = r = (0, _function.apply)(f, ax)) != null ? ref.then : void 0) != null) { return r.then(function(x) { return !x; }); } else { return !r; } }); }; // We don't use Promise.all and Promise.any here because we want // to 'short-circuit' execution as soon as the predicate fails isPromise = function(value) { return value instanceof Promise; }; all = function(px) { return (0, _function.arity)(px[0].length, function(...ax) { var i, j, len, p, r; for(i = j = 0, len = px.length; j < len; i = ++j){ p = px[i]; r = (0, _function.apply)(p, ax); if (isPromise(r)) { return r.then(function(r) { if (r === true) { if (i === px.length - 1) { return true; } else { return (0, _function.apply)(all(px.slice(i + 1)), ax); } } else { return false; } }); } else { if (r === false) { return false; } } } return true; }); }; any = function(px) { return (0, _function.arity)(px[0].length, function(...ax) { var i, j, len, p, r; for(i = j = 0, len = px.length; j < len; i = ++j){ p = px[i]; r = (0, _function.apply)(p, ax); if (isPromise(r)) { return r.then(function(r) { if (r === true) { return true; } else if (i === px.length - 1) { return false; } else { return (0, _function.apply)(any(px.slice(i + 1)), ax); } }); } else { if (r === true) { return true; } } } return false; }); }; test = function(f, g) { return (0, _function.arity)(g.length, function(...ax) { var _f, r; _f = function(r) { if (r === true) { (0, _function.apply)(g, ax); return true; } else { return false; } }; if ((r = (0, _function.apply)(f, ax)).then != null) { return r.then(_f); } else { return _f(r); } }); }; branch = function(fx) { var f, g; return any(function() { var j, len, results; results = []; for(j = 0, len = fx.length; j < len; j++){ [f, g] = fx[j]; results.push(test(f, g)); } return results; }()); }; _attempt = function(f) { return function(...ax) { var r; try { r = (0, _function.apply)(f, ax); if (isPromise(r)) { return r.then(function() { return true; }).catch(function() { return false; }); } else { return true; } } catch (error) { return false; } }; }; attempt = function(fx) { var f; return any(function() { var j, len, results; results = []; for(j = 0, len = fx.length; j < len; j++){ f = fx[j]; results.push(_attempt(f)); } return results; }()); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3ByZWRpY2F0ZS5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxRQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxPQUFBLEVBQUEsTUFBQSxFQUFBLFNBQUEsRUFBQSxNQUFBLEVBQUE7O0FBQUEsT0FBQTtFQUFRLEtBQVI7RUFBZSxLQUFmO0VBQXNCLEdBQXRCO0VBQTJCLEtBQTNCO0NBQUEsTUFBQTs7QUFFQSxNQUFBLEdBQVMsUUFBQSxDQUFDLENBQUQsQ0FBQTtTQUFPLEtBQUEsQ0FBTSxDQUFDLENBQUMsTUFBUixFQUFnQixRQUFBLENBQUEsR0FBQyxFQUFELENBQUE7QUFDaEMsUUFBQSxDQUFBLEVBQUE7SUFBRSxJQUFHLGdFQUFIO2FBQ0UsQ0FBQyxDQUFDLElBQUYsQ0FBTyxRQUFBLENBQUMsQ0FBRCxDQUFBO2VBQU8sQ0FBQztNQUFSLENBQVAsRUFERjtLQUFBLE1BQUE7YUFHRSxDQUFDLEVBSEg7O0VBRDhCLENBQWhCO0FBQVAsRUFGVDs7OztBQVdBLFNBQUEsR0FBWSxRQUFBLENBQUMsS0FBRCxDQUFBO1NBQVcsS0FBQSxZQUFpQjtBQUE1Qjs7QUFFWixHQUFBLEdBQU0sUUFBQSxDQUFDLEVBQUQsQ0FBQTtTQUNKLEtBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBRCxDQUFHLENBQUMsTUFBWixFQUFvQixRQUFBLENBQUEsR0FBQyxFQUFELENBQUE7QUFDdEIsUUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLEdBQUEsRUFBQSxDQUFBLEVBQUE7SUFBSSxLQUFBLDRDQUFBOztNQUNFLENBQUEsR0FBSSxLQUFBLENBQU0sQ0FBTixFQUFTLEVBQVQ7TUFDSixJQUFHLFNBQUEsQ0FBVSxDQUFWLENBQUg7QUFDRSxlQUFPLENBQUMsQ0FBQyxJQUFGLENBQU8sUUFBQSxDQUFDLENBQUQsQ0FBQTtVQUNaLElBQUcsQ0FBQSxLQUFLLElBQVI7WUFDRSxJ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TUFERjtFQUVFLEdBRkY7RUFHRSxHQUhGO0VBSUUsSUFKRjtFQUtFLE1BTEY7RUFNRSxPQU5GIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthcml0eSwgY3VycnksIHRlZSwgYXBwbHl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxubmVnYXRlID0gKGYpIC0+IGFyaXR5IGYubGVuZ3RoLCAoYXguLi4pIC0+XG4gIGlmIChyID0gYXBwbHkgZiwgYXgpPy50aGVuP1xuICAgIHIudGhlbiAoeCkgLT4gIXhcbiAgZWxzZVxuICAgICFyXG5cbiMgV2UgZG9uJ3QgdXNlIFByb21pc2UuYWxsIGFuZCBQcm9taXNlLmFueSBoZXJlIGJlY2F1c2Ugd2Ugd2FudFxuIyB0byAnc2hvcnQtY2lyY3VpdCcgZXhlY3V0aW9uIGFzIHNvb24gYXMgdGhlIHByZWRpY2F0ZSBmYWlsc1xuXG5pc1Byb21pc2UgPSAodmFsdWUpIC0+IHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZVxuXG5hbGwgPSAocHgpIC0+XG4gIGFyaXR5IHB4WzBdLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgIGZvciBwLCBpIGluIHB4XG4gICAgICByID0gYXBwbHkgcCwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJldHVybiByLnRoZW4gKHIpIC0+XG4gICAgICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgICAgICBpZiBpID09IHB4Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhcHBseSAoYWxsIHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGlmIHIgPT0gZmFsc2UgdGhlbiByZXR1cm4gZmFsc2VcbiAgICB0cnVlXG5cbmFueSA9IChweCkgLT5cbiAgYXJpdHkgcHhbMF0ubGVuZ3RoLCAoYXguLi4pIC0+XG4gICAgZm9yIHAsIGkgaW4gcHhcbiAgICAgIHIgPSBhcHBseSBwLCBheFxuICAgICAgaWYgaXNQcm9taXNlIHJcbiAgICAgICAgcmV0dXJuIHIudGhlbiAocikgLT5cbiAgICAgICAgICBpZiByID09IHRydWVcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICBlbHNlIGlmIGkgPT0gcHgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhcHBseSAoYW55IHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgZWxzZVxuICAgICAgICBpZiByID09IHRydWUgdGhlbiByZXR1cm4gdHJ1ZVxuICAgIGZhbHNlXG5cbnRlc3QgPSAoZiwgZykgLT5cbiAgYXJpdHkgZy5sZW5ndGgsIChheC4uLikgLT5cbiAgICBfZiA9IChyKSAtPlxuICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgIGFwcGx5IGcsIGF4XG4gICAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZmFsc2VcbiAgICBpZiAociA9IGFwcGx5IGYsIGF4KS50aGVuPyB0aGVuIChyLnRoZW4gX2YpIGVsc2UgKF9mIHIpXG5cbmJyYW5jaCA9IChmeCkgLT4gYW55ICgodGVzdCBmLCBnKSBmb3IgW2YsIGddIGluIGZ4KVxuXG5fYXR0ZW1wdCA9IChmKSAtPlxuICAoYXguLi4pIC0+XG4gICAgdHJ5XG4gICAgICByID0gYXBwbHkgZiwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJcbiAgICAgICAgICAudGhlbiAtPiB0cnVlXG4gICAgICAgICAgLmNhdGNoIC0+IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHRydWVcbiAgICBjYXRjaFxuICAgICAgZmFsc2VcbiAgICAgIFxuYXR0ZW1wdCA9IChmeCkgLT5cbiAgYW55IChfYXR0ZW1wdCBmIGZvciBmIGluIGZ4KVxuXG5cbmV4cG9ydCB7XG4gIG5lZ2F0ZVxuICBhbnlcbiAgYWxsXG4gIHRlc3RcbiAgYnJhbmNoXG4gIGF0dGVtcHRcbn1cbiJdfQ== //# sourceURL=/@dashkite/joy/src/predicate.coffee //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvcHJlZGljYXRlLmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthcml0eSwgY3VycnksIHRlZSwgYXBwbHl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxubmVnYXRlID0gKGYpIC0+IGFyaXR5IGYubGVuZ3RoLCAoYXguLi4pIC0+XG4gIGlmIChyID0gYXBwbHkgZiwgYXgpPy50aGVuP1xuICAgIHIudGhlbiAoeCkgLT4gIXhcbiAgZWxzZVxuICAgICFyXG5cbiMgV2UgZG9uJ3QgdXNlIFByb21pc2UuYWxsIGFuZCBQcm9taXNlLmFueSBoZXJlIGJlY2F1c2Ugd2Ugd2FudFxuIyB0byAnc2hvcnQtY2lyY3VpdCcgZXhlY3V0aW9uIGFzIHNvb24gYXMgdGhlIHByZWRpY2F0ZSBmYWlsc1xuXG5pc1Byb21pc2UgPSAodmFsdWUpIC0+IHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZVxuXG5hbGwgPSAocHgpIC0+XG4gIGFyaXR5IHB4WzBdLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgIGZvciBwLCBpIGluIHB4XG4gICAgICByID0gYXBwbHkgcCwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJldHVybiByLnRoZW4gKHIpIC0+XG4gICAgICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgICAgICBpZiBpID09IHB4Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhcHBseSAoYWxsIHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGlmIHIgPT0gZmFsc2UgdGhlbiByZXR1cm4gZmFsc2VcbiAgICB0cnVlXG5cbmFueSA9IChweCkgLT5cbiAgYXJpdHkgcHhbMF0ubGVuZ3RoLCAoYXguLi4pIC0+XG4gICAgZm9yIHAsIGkgaW4gcHhcbiAgICAgIHIgPSBhcHBseSBwLCBheFxuICAgICAgaWYgaXNQcm9taXNlIHJcbiAgICAgICAgcmV0dXJuIHIudGhlbiAocikgLT5cbiAgICAgICAgICBpZiByID09IHRydWVcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICBlbHNlIGlmIGkgPT0gcHgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhcHBseSAoYW55IHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgZWxzZVxuICAgICAgICBpZiByID09IHRydWUgdGhlbiByZXR1cm4gdHJ1ZVxuICAgIGZhbHNlXG5cbnRlc3QgPSAoZiwgZykgLT5cbiAgYXJpdHkgZy5sZW5ndGgsIChheC4uLikgLT5cbiAgICBfZiA9IChyKSAtPlxuICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgIGFwcGx5IGcsIGF4XG4gICAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZmFsc2VcbiAgICBpZiAociA9IGFwcGx5IGYsIGF4KS50aGVuPyB0aGVuIChyLnRoZW4gX2YpIGVsc2UgKF9mIHIpXG5cbmJyYW5jaCA9IChmeCkgLT4gYW55ICgodGVzdCBmLCBnKSBmb3IgW2YsIGddIGluIGZ4KVxuXG5fYXR0ZW1wdCA9IChmKSAtPlxuICAoYXguLi4pIC0+XG4gICAgdHJ5XG4gICAgICByID0gYXBwbHkgZiwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJcbiAgICAgICAgICAudGhlbiAtPiB0cnVlXG4gICAgICAgICAgLmNhdGNoIC0+IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHRydWVcbiAgICBjYXRjaFxuICAgICAgZmFsc2VcbiAgICAgIFxuYXR0ZW1wdCA9IChmeCkgLT5cbiAgYW55IChfYXR0ZW1wdCBmIGZvciBmIGluIGZ4KVxuXG5cbmV4cG9ydCB7XG4gIG5lZ2F0ZVxuICBhbnlcbiAgYWxsXG4gIHRlc3RcbiAgYnJhbmNoXG4gIGF0dGVt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