UNPKG

fp-ts-zio

Version:

fp-ts bindings for Scala ZIO

120 lines 4.83 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var Et = require("fp-ts/lib/Either"); var EitherT_1 = require("fp-ts/lib/EitherT"); var pipeable_1 = require("fp-ts/lib/pipeable"); var rxjs_1 = require("rxjs"); var Rx = require("rxjs/operators"); var Observable_1 = require("./Observable"); var ZIO_1 = require("./ZIO"); var T = EitherT_1.getEitherM(Observable_1.observable); exports.URI = 'Stream'; // require when E exists, unsubscribe stream when error var ensureError = function (ma) { return pipeable_1.pipe(ma, Rx.takeWhile(Et.isRight, true)); }; var fail = T.left; exports.fail = fail; var succeed = T.of; exports.succeed = succeed; var failObservable = function (me) { return pipeable_1.pipe(T.leftM(me), ensureError); }; exports.failObservable = failObservable; var succeedObservable = T.rightM; exports.succeedObservable = succeedObservable; var failLazy = function (me) { return failObservable(Observable_1.observable.fromIO(me)); }; exports.failLazy = failLazy; var succeedLazy = function (ma) { return succeedObservable(Observable_1.observable.fromIO(ma)); }; exports.succeedLazy = succeedLazy; var failPromise = function (me) { return failObservable(Observable_1.observable.fromTask(me)); }; exports.failPromise = failPromise; var succeedPromise = function (ma) { return succeedObservable(Observable_1.observable.fromTask(ma)); }; exports.succeedPromise = succeedPromise; var foldM = function (onError, onSuccess) { return function (ma) { return T.fold(ma, onError, onSuccess); }; }; exports.foldM = foldM; var fold = function (onError, onSuccess) { return foldM(function (e) { return succeed(onError(e)); }, function (a) { return succeed(onSuccess(a)); }); }; exports.fold = fold; var getOrElseM = function (onError) { return foldM(onError, succeed); }; exports.getOrElseM = getOrElseM; var getOrElse = function (onError) { return getOrElseM(function (e) { return succeed(onError(e)); }); }; exports.getOrElse = getOrElse; var orElse = function (onError) { return function (ma) { return T.orElse(ma, onError); }; }; exports.orElse = orElse; var swap = T.swap; exports.swap = swap; var tryCatch = function (f, onError) { return pipeable_1.pipe(f, Rx.map(Et.right), Rx.catchError(onError)); }; exports.tryCatch = tryCatch; var foreachM = function (f) { return function (ma) { return function (r) { return function () { return pipeable_1.pipe(ma, Rx.concatMap(function (ea) { return rxjs_1.defer(function () { return pipeable_1.pipe(ea, Et.fold(function (e) { return ZIO_1.ZIO.fail(e); }, function (a) { return f(a); }), ZIO_1.ZIO.unsafeRun(r)); }); }), ensureError).toPromise(); }; }; }; }; exports.foreachM = foreachM; var foreach = function (f) { return foreachM(function (a) { return ZIO_1.ZIO.succeedLazy(function () { return f(a); }); }); }; exports.foreach = foreach; function bracket(acquire, use, release) { return T.chain(acquire, function (a) { return T.chain(Observable_1.observable.map(use(a), Et.right), function (e) { return T.chain(release(a, e), function () { return (Et.isLeft(e) ? T.left(e.left) : T.of(e.right)); }); }); }); } exports.bracket = bracket; exports.stream = { URI: exports.URI, bimap: T.bimap, mapLeft: T.mapLeft, map: T.map, of: succeed, ap: T.ap, chain: T.chain, alt: T.alt, fromIO: succeedLazy, fromTask: succeedPromise, throwError: fail }; exports.streamSeq = __assign(__assign({}, exports.stream), { ap: function (mab, ma) { return T.chain(mab, function (f) { return T.map(ma, f); }); } }); var _a = pipeable_1.pipeable(exports.stream), 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, filterOrElse = _a.filterOrElse; exports.alt = alt; exports.ap = ap; exports.apFirst = apFirst; exports.apSecond = apSecond; exports.bimap = bimap; exports.chainFirst = chainFirst; exports.flatten = flatten; exports.map = map; exports.fromEither = fromEither; exports.fromOption = fromOption; exports.fromPredicate = fromPredicate; exports.filterOrElse = filterOrElse; var mapError = mapLeft; exports.mapError = mapError; var flatMap = chain; exports.flatMap = flatMap; //# sourceMappingURL=Stream.js.map