UNPKG

@utx/result

Version:

A typescript implementation of Rust's Result and Option objects.

138 lines (133 loc) 3.91 kB
/** * @utx/result v3.4.0 * Author: Gabe M <hey@gabe.mx> * LICENSE: ISC * * https://github.com/fromgmworks/typescript-result */ 'use strict'; 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;