@rustresult/result
Version:
Rust-like Result and ResultAsync for Javascript
32 lines • 1.03 kB
JavaScript
import { Err, Ok } from './factory';
import { RustlikeResultAsync } from './RustlikeResultAsync';
export function resultifyPromise(promise) {
return new RustlikeResultAsync(promise.then((value) => Ok(value), (err) => Err(err)));
}
export function resultifySync(fn) {
function curriedResultify(_fn) {
return function resultifiedSyncFn(...args) {
try {
return Ok(_fn(...args));
}
catch (err) {
return Err(err);
}
};
}
return fn ? curriedResultify(fn) : curriedResultify;
}
export function resultifyAsync(fn) {
function curriedResultify(_fn) {
return function resultifiedAsyncFn(...args) {
try {
return resultifyPromise(Promise.resolve(_fn(...args)));
}
catch (err) {
return new RustlikeResultAsync(Err(err));
}
};
}
return fn ? curriedResultify(fn) : curriedResultify;
}
//# sourceMappingURL=resultify.js.map