UNPKG

chain-able

Version:

interfaces that describe their intentions.

23 lines (22 loc) 2.2 kB
/** * @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==