@utx/result
Version:
A typescript implementation of Rust's Result and Option objects.
138 lines (133 loc) • 3.91 kB
JavaScript
/**
* @utx/result v3.4.0
* Author: Gabe M <hey@gabe.mx>
* LICENSE: ISC
*
* https://github.com/fromgmworks/typescript-result
*/
;
var rxjs = require('rxjs');
var index_js = require('rxjs/operators/index.js');
var result = require('../result.js');
function resultMap(mapper) {
return function (source) {
return source.pipe(index_js.map(function (result) { return result.map(mapper); }));
};
}
function resultMapErr(mapper) {
return function (source) {
return source.pipe(index_js.map(function (result) { return result.mapErr(mapper); }));
};
}
function resultMapTo(value) {
return function (source) {
return source.pipe(index_js.map(function (result) { return result.map(function () { return value; }); }));
};
}
function resultMapErrTo(value) {
return function (source) {
return source.pipe(index_js.map(function (result) { return result.mapErr(function () { return value; }); }));
};
}
function elseMap(mapper) {
return function (source) {
return source.pipe(index_js.map(function (result) {
if (result.err) {
return mapper(result.val);
}
else {
return result.val;
}
}));
};
}
function elseMapTo(value) {
return function (source) {
return source.pipe(index_js.map(function (result) {
if (result.err) {
return value;
}
else {
return result.val;
}
}));
};
}
function resultSwitchMap(mapper) {
return function (source) {
return source.pipe(index_js.switchMap(function (result) {
if (result.ok) {
return mapper(result.val);
}
else {
return rxjs.of(result);
}
}), index_js.map(function (result$1) {
if (result.Result.isResult(result$1)) {
return result$1;
}
else {
return new result.Ok(result$1);
}
}));
};
}
function resultMergeMap(mapper) {
return function (source) {
return source.pipe(index_js.mergeMap(function (result) {
if (result.ok) {
return mapper(result.val);
}
else {
return rxjs.of(result);
}
}), index_js.map(function (result$1) {
if (result.Result.isResult(result$1)) {
return result$1;
}
else {
return new result.Ok(result$1);
}
}));
};
}
function filterResultOk() {
return function (source) {
return source.pipe(index_js.filter(function (result) { return result.ok; }), index_js.map(function (result) { return result.val; }));
};
}
function filterResultErr() {
return function (source) {
return source.pipe(index_js.filter(function (result) { return result.err; }), index_js.map(function (result) { return result.val; }));
};
}
function tapResultErr(tapFn) {
return function (source) {
return source.pipe(index_js.tap(function (r) {
if (!r.ok) {
tapFn(r.val);
}
}));
};
}
function tapResultOk(tapFn) {
return function (source) {
return source.pipe(index_js.tap(function (r) {
if (r.ok) {
tapFn(r.val);
}
}));
};
}
exports.elseMap = elseMap;
exports.elseMapTo = elseMapTo;
exports.filterResultErr = filterResultErr;
exports.filterResultOk = filterResultOk;
exports.resultMap = resultMap;
exports.resultMapErr = resultMapErr;
exports.resultMapErrTo = resultMapErrTo;
exports.resultMapTo = resultMapTo;
exports.resultMergeMap = resultMergeMap;
exports.resultSwitchMap = resultSwitchMap;
exports.tapResultErr = tapResultErr;
exports.tapResultOk = tapResultOk;