UNPKG

fp-ts-fluture

Version:
113 lines (112 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * @since 0.5.0 */ var F = require("fluture"); var E = require("fp-ts/lib/Either"); var pipeable_1 = require("fp-ts/lib/pipeable"); /** * @since 0.5.0 */ exports.URI = 'Fluture/Future'; /** * @since 0.6.4 */ exports.left = F.reject; /** * @since 0.6.4 */ exports.right = F.resolve; /** * @since 0.6.4 */ function leftIO(ma) { return F.swap(F.attempt(ma)); } exports.leftIO = leftIO; /** * @since 0.6.4 */ exports.rightIO = F.attempt; /** * @since 0.6.4 */ function leftTask(ma) { return F.swap(F.attemptP(ma)); } exports.leftTask = leftTask; /** * @since 0.6.4 */ exports.rightTask = F.attemptP; /** * @since 0.6.4 */ function orElse(onLeft) { return F.chainRej(onLeft); } exports.orElse = orElse; /** * @since 0.6.4 */ function fold(onLeft, onRight) { return function (ma) { return function () { return F.promise(F.coalesce(onLeft)(onRight)(ma)).then(function (mb) { return mb(); }); }; }; } exports.fold = fold; /** * @since 0.6.4 */ exports.swap = F.swap; function futurify(f) { return function () { var args = Array.prototype.slice.call(arguments); return F.node(function (done) { var cbResolver = function (e, r) { return (e != null ? done(e) : done(null, r)); }; f.apply(null, args.concat(cbResolver)); }); }; } exports.futurify = futurify; /** * @since 0.5.0 */ exports.future = { URI: exports.URI, map: function (fa, f) { return F.map(f)(fa); }, of: F.resolve, ap: function (fab, fa) { return F.ap(fa)(fab); }, chain: function (fa, f) { return F.chain(f)(fa); }, bimap: function (fea, f, g) { return F.bimap(f)(g)(fea); }, mapLeft: function (fea, f) { return F.mapRej(f)(fea); }, alt: function (fx, f) { return F.alt(f())(fx); }, chainRec: function (a, f) { return (function recur(a) { return exports.future.chain(f(a), E.fold(recur, F.resolve)); })(a); }, throwError: exports.left, fromTask: F.attemptP, fromIO: F.attempt }; /** * @since 0.6.4 */ function delay(millis) { return chain(F.after(millis)); } exports.delay = delay; var _a = pipeable_1.pipeable(exports.future), alt = _a.alt, ap = _a.ap, apFirst = _a.apFirst, apSecond = _a.apSecond, bimap = _a.bimap, chain = _a.chain, chainFirst = _a.chainFirst, flatten = _a.flatten, map = _a.map, mapLeft = _a.mapLeft, fromEither = _a.fromEither, fromOption = _a.fromOption, fromPredicate = _a.fromPredicate; exports.alt = alt; exports.ap = ap; exports.apFirst = apFirst; exports.apSecond = apSecond; exports.bimap = bimap; exports.chain = chain; exports.chainFirst = chainFirst; exports.flatten = flatten; exports.map = map; exports.mapLeft = mapLeft; exports.fromEither = fromEither; exports.fromOption = fromOption; exports.fromPredicate = fromPredicate;