graphql-resolvers
Version:
Resolver composition library for GraphQL.
36 lines (29 loc) • 1.13 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.pipeResolvers = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
/**
* Resolver composition based on the root argument.
*
* @param {[Function]} ...funcs Resolver implementations.
* @return {Promise}.
*/
var pipeResolvers = function pipeResolvers() {
for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
funcs[_key] = arguments[_key];
}
return function () {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return funcs.reduce(function (prevPromise, resolver) {
return prevPromise.then(function (root) {
return root instanceof Error ? root : resolver.apply(void 0, [root].concat((0, _toConsumableArray2["default"])(args.slice(1))));
});
}, Promise.resolve(args[0]));
};
};
exports.pipeResolvers = pipeResolvers;