chain-able
Version:
interfaces that describe their intentions.
32 lines (25 loc) • 2.65 kB
JavaScript
var tryCatch = require('./tryCatch')
/**
* @since 4.0.0
* @param {Function} call
* @param {Function | undefined} [encaser=tryCatch]
* @return {Function} -> FunctionObject{onInvalid, onValid, rethrow, call}
*/
module.exports = function (call, encaser) {
var encased = encaser ? encaser(call) : tryCatch(call)
// left, right, rethrow
var onInvalid
var onValid
var config = function (a, b, c) { return encased(onValid, onInvalid)(a, b, c); }
config.then = config.onInvalid = function (fn) {
onInvalid = fn
return config
}
config.catch = config.onValid = function (fn) {
onValid = fn
return config
}
return config
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jYXNlLmpzIiwic291cmNlcyI6WyJlbmNhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHRyeUNhdGNoID0gcmVxdWlyZSgnLi90cnlDYXRjaCcpXG5cbi8qKlxuICogQHNpbmNlIDQuMC4wXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbFxuICogQHBhcmFtICB7RnVuY3Rpb24gfCB1bmRlZmluZWR9IFtlbmNhc2VyPXRyeUNhdGNoXVxuICogQHJldHVybiB7RnVuY3Rpb259IC0+IEZ1bmN0aW9uT2JqZWN0e29uSW52YWxpZCwgb25WYWxpZCwgcmV0aHJvdywgY2FsbH1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSAoY2FsbCwgZW5jYXNlcikgPT4ge1xuICBjb25zdCBlbmNhc2VkID0gZW5jYXNlciA/IGVuY2FzZXIoY2FsbCkgOiB0cnlDYXRjaChjYWxsKVxuXG4gIC8vIGxlZnQsIHJpZ2h0LCByZXRocm93XG4gIGxldCBvbkludmFsaWRcbiAgbGV0IG9uVmFsaWRcblxuICBjb25zdCBjb25maWcgPSAoYSwgYiwgYykgPT4gZW5jYXNlZChvblZhbGlkLCBvbkludmFsaWQpKGEsIGIsIGMpXG5cbiAgY29uZmlnLnRoZW4gPSBjb25maWcub25JbnZhbGlkID0gZm4gPT4ge1xuICAgIG9uSW52YWxpZCA9IGZuXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG4gIGNvbmZpZy5jYXRjaCA9IGNvbmZpZy5vblZhbGlkID0gZm4gPT4ge1xuICAgIG9uVmFsaWQgPSBmblxuICAgIHJldHVybiBjb25maWdcbiAgfVxuXG4gIHJldHVybiBjb25maWdcbn1cbiJdLCJuYW1lcyI6WyJjb25zdCIsImxldCJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFFWkEsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDOzs7Ozs7OztBQVF0QyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQUEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEFBQUc7RUFDbENBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDOzs7RUFHeERDLEdBQUcsQ0FBQyxTQUFTO0VBQ2JBLEdBQUcsQ0FBQyxPQUFPOztFQUVYRCxHQUFLLENBQUMsTUFBTSxHQUFHLFNBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFHLFNBQUEsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFBOztFQUVoRSxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsVUFBQSxFQUFFLENBQUEsQ0FBQyxBQUFHO0lBQ3JDLFNBQVMsR0FBRyxFQUFFO0lBQ2QsT0FBTyxNQUFNO0dBQ2Q7RUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBQSxFQUFFLENBQUEsQ0FBQyxBQUFHO0lBQ3BDLE9BQU8sR0FBRyxFQUFFO0lBQ1osT0FBTyxNQUFNO0dBQ2Q7O0VBRUQsT0FBTyxNQUFNO0NBQ2Q7In0=