fp-ts-zio
Version:
fp-ts bindings for Scala ZIO
79 lines • 3.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var E = require("fp-ts/lib/Either");
var function_1 = require("fp-ts/lib/function");
var O = require("fp-ts/lib/Option");
var pipeable_1 = require("fp-ts/lib/pipeable");
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
/**
* @since 0.6.0
*/
exports.URI = 'Observable';
/**
* @since 0.6.0
*/
function getMonoid() {
return {
concat: function (x, y) { return rxjs_1.merge(x, y); },
empty: rxjs_1.EMPTY
};
}
exports.getMonoid = getMonoid;
exports.fromTask = function (fa) { return rxjs_1.defer(function () { return fa(); }); };
function fromIO(ma) {
return rxjs_1.defer(function () { return rxjs_1.of(ma()); });
}
exports.fromIO = fromIO;
/**
* @since 0.6.0
*/
exports.observable = {
URI: exports.URI,
map: function (fa, f) { return fa.pipe(operators_1.map(f)); },
of: rxjs_1.of,
ap: function (fab, fa) { return rxjs_1.combineLatest([fab, fa]).pipe(operators_1.map(function (_a) {
var f = _a[0], a = _a[1];
return f(a);
})); },
chain: function (fa, f) { return fa.pipe(operators_1.mergeMap(f)); },
zero: function () { return rxjs_1.EMPTY; },
alt: function (fx, f) { return rxjs_1.merge(fx, f()); },
compact: function (fa) { return exports.observable.filterMap(fa, function_1.identity); },
separate: function (fa) { return exports.observable.partitionMap(fa, function_1.identity); },
partitionMap: function (fa, f) { return ({
left: exports.observable.filterMap(fa, function (a) {
return pipeable_1.pipe(f(a), E.fold(O.some, function () { return O.none; }));
}),
right: exports.observable.filterMap(fa, function (a) {
return pipeable_1.pipe(f(a), E.fold(function () { return O.none; }, O.some));
})
}); },
partition: function (fa, p) { return exports.observable.partitionMap(fa, E.fromPredicate(p, function_1.identity)); },
filterMap: function (fa, f) {
return fa.pipe(operators_1.mergeMap(function (a) {
return pipeable_1.pipe(f(a),
// tslint:disable-next-line: deprecation
O.fold(function () { return rxjs_1.EMPTY; }, rxjs_1.of));
}));
},
filter: function (fa, p) { return exports.observable.filterMap(fa, O.fromPredicate(p)); },
fromTask: exports.fromTask,
fromIO: fromIO
};
var _a = pipeable_1.pipeable(exports.observable), alt = _a.alt, ap = _a.ap, apFirst = _a.apFirst, apSecond = _a.apSecond, chain = _a.chain, chainFirst = _a.chainFirst, compact = _a.compact, filter = _a.filter, filterMap = _a.filterMap, flatten = _a.flatten, map = _a.map, partition = _a.partition, partitionMap = _a.partitionMap, separate = _a.separate;
exports.alt = alt;
exports.ap = ap;
exports.apFirst = apFirst;
exports.apSecond = apSecond;
exports.chain = chain;
exports.chainFirst = chainFirst;
exports.compact = compact;
exports.filter = filter;
exports.filterMap = filterMap;
exports.flatten = flatten;
exports.map = map;
exports.partition = partition;
exports.partitionMap = partitionMap;
exports.separate = separate;
//# sourceMappingURL=Observable.js.map