@rustresult/result
Version:
Rust-like Result and ResultAsync for Javascript
38 lines • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resultifyAsync = exports.resultifySync = exports.resultifyPromise = void 0;
const factory_1 = require("./factory");
const RustlikeResultAsync_1 = require("./RustlikeResultAsync");
function resultifyPromise(promise) {
return new RustlikeResultAsync_1.RustlikeResultAsync(promise.then((value) => (0, factory_1.Ok)(value), (err) => (0, factory_1.Err)(err)));
}
exports.resultifyPromise = resultifyPromise;
function resultifySync(fn) {
function curriedResultify(_fn) {
return function resultifiedSyncFn(...args) {
try {
return (0, factory_1.Ok)(_fn(...args));
}
catch (err) {
return (0, factory_1.Err)(err);
}
};
}
return fn ? curriedResultify(fn) : curriedResultify;
}
exports.resultifySync = resultifySync;
function resultifyAsync(fn) {
function curriedResultify(_fn) {
return function resultifiedAsyncFn(...args) {
try {
return resultifyPromise(Promise.resolve(_fn(...args)));
}
catch (err) {
return new RustlikeResultAsync_1.RustlikeResultAsync((0, factory_1.Err)(err));
}
};
}
return fn ? curriedResultify(fn) : curriedResultify;
}
exports.resultifyAsync = resultifyAsync;
//# sourceMappingURL=resultify.js.map