UNPKG

@dashkite/joy

Version:

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

136 lines (135 loc) 16.5 kB
var _attempt, all, any, attempt, branch, isPromise, negate, test; import { arity, curry, tee, apply } from "./function"; negate = function(f) { return arity(f.length, function(...ax) { var r, ref; if (((ref = r = 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 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 = apply(p, ax); if (isPromise(r)) { return r.then(function(r) { if (r === true) { if (i === px.length - 1) { return true; } else { return apply(all(px.slice(i + 1)), ax); } } else { return false; } }); } else { if (r === false) { return false; } } } return true; }); }; any = function(px) { return 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 = 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 apply(any(px.slice(i + 1)), ax); } }); } else { if (r === true) { return true; } } } return false; }); }; test = function(f, g) { return arity(g.length, function(...ax) { var _f, r; _f = function(r) { if (r === true) { apply(g, ax); return true; } else { return false; } }; if ((r = 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 = 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; }()); }; export { negate, any, all, test, branch, attempt }; //# 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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