All files combineResolvers.js

100% Statements 9/9
100% Branches 2/2
100% Functions 5/5
100% Lines 5/5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  1x               386x 220x 220x   1x  
 
import { skip } from './utils'
 
/**
 * Left-first composition for methods of any type.
 *
 * @param {[Function]} ...funcs Resolver implementations.
 * @return {Promise}.
 */
export const combineResolvers = (...funcs) => (...args) => funcs.reduce(
  (prevPromise, resolver) => prevPromise.then(
    prev => prev === skip ? resolver(...args) : prev
  ), Promise.resolve()
).catch(err => err)