do-try-tuple
Version:
Catches errors and rejected promises, returns tuple
28 lines (27 loc) • 990 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isSuccess = exports.isFailure = exports.doTry = exports.safe = exports.failure = exports.success = void 0;
const isPromise_js_1 = require("./isPromise.js");
/** @since 3.0.0 */
const success = (value) => [true, undefined, value];
exports.success = success;
/** @since 3.0.0 */
const failure = (err) => [false, err, undefined];
exports.failure = failure;
const safe = (promise) => promise.then(exports.success, exports.failure);
exports.safe = safe;
const doTry = (fn) => {
try {
const result = fn();
return (0, isPromise_js_1.isPromise)(result) ? (0, exports.safe)(result) : (0, exports.success)(result);
}
catch (error) {
return (0, exports.failure)(error);
}
};
exports.doTry = doTry;
const isFailure = (result) => !result[0];
exports.isFailure = isFailure;
const isSuccess = (result) => result[0];
exports.isSuccess = isSuccess;
exports.default = exports.doTry;