chain-able
Version:
interfaces that describe their intentions.
23 lines (22 loc) • 2.2 kB
JavaScript
/**
* @see https://github.com/fluture-js/Fluture#encase
* @since 4.0.0 <- moved out into a dep
* @since 1.0.0
*
* @param {Function} call
* @return {boolean | any} validation/encased function call result
*/
module.exports = function (call) { return function (onValid, onInvalid, rethrow) { return function (a, b, c) {
var result
try {
result = call(a, b, c)
return onValid ? onValid(result) : result
}
catch (error) {
// error.caught = true
// @NOTE: defaults to rethrow... if (isTrue(rethrow)) throw error
if (onInvalid) { return onInvalid(error) }
else { return error }
}
}; }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ5Q2F0Y2guanMiLCJzb3VyY2VzIjpbInRyeUNhdGNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmx1dHVyZS1qcy9GbHV0dXJlI2VuY2FzZVxuICogQHNpbmNlIDQuMC4wIDwtIG1vdmVkIG91dCBpbnRvIGEgZGVwXG4gKiBAc2luY2UgMS4wLjBcbiAqXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbFxuICogQHJldHVybiB7Ym9vbGVhbiB8IGFueX0gdmFsaWRhdGlvbi9lbmNhc2VkIGZ1bmN0aW9uIGNhbGwgcmVzdWx0XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gY2FsbCA9PiAob25WYWxpZCwgb25JbnZhbGlkLCByZXRocm93KSA9PiAoYSwgYiwgYykgPT4ge1xuICBsZXQgcmVzdWx0XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gY2FsbChhLCBiLCBjKVxuICAgIHJldHVybiBvblZhbGlkID8gb25WYWxpZChyZXN1bHQpIDogcmVzdWx0XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gZXJyb3IuY2F1Z2h0ID0gdHJ1ZVxuICAgIC8vIEBOT1RFOiBkZWZhdWx0cyB0byByZXRocm93Li4uIGlmIChpc1RydWUocmV0aHJvdykpIHRocm93IGVycm9yXG4gICAgaWYgKG9uSW52YWxpZCkgcmV0dXJuIG9uSW52YWxpZChlcnJvcilcbiAgICBlbHNlIHJldHVybiBlcnJvclxuICB9XG59XG4iXSwibmFtZXMiOlsibGV0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7QUFRQSxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQUEsSUFBSSxDQUFBLENBQUMsQUFBRyxTQUFBLFNBQUEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxBQUFHLFNBQUEsU0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEFBQUc7RUFDckVBLEdBQUcsQ0FBQyxNQUFNO0VBQ1YsSUFBSTtJQUNGLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsT0FBTyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU07R0FDMUM7RUFDRCxPQUFPLEtBQUssRUFBRTs7O0lBR1osSUFBSSxTQUFTLEVBQUUsRUFBQSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBQTtTQUNqQyxFQUFBLE9BQU8sS0FBSyxFQUFBO0dBQ2xCO0NBQ0YsTUFBQTsifQ==