dashp
Version:
Utilities for monadic promises.
42 lines (36 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.chain = exports.ap = exports.bimap = exports.map = exports.of = void 0;
var _curry = require("./internal/curry");
var _namefn = _interopRequireDefault(require("./internal/namefn"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const of = (0, _namefn.default)("of", x => Promise.resolve(x));
exports.of = of;
const map = (0, _curry.curry2)("map", (f, p) => p.then(f));
exports.map = map;
const bimap = (0, _curry.curry3)("bimap", (left, right, p) => {
let mark = false; // When set to true, don't run left when right throws.
return p.then(x => {
mark = true;
return right(x);
}).catch(e => {
if (mark) throw e;
return left(e);
});
});
exports.bimap = bimap;
const ap = (0, _curry.curry2)("ap", (pf, p) => Promise.all([pf, p]).then(([f, x]) => f(x)));
exports.ap = ap;
const chain = (0, _curry.curry2)("chain", (f, p) => p.then(f));
exports.chain = chain;
var _default = {
of,
map,
bimap,
ap,
chain
};
exports.default = _default;
//# sourceMappingURL=Future.js.map