apollo-resolvers
Version:
Expressive and composable resolvers for Apollostack's GraphQL server
35 lines • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const resolver_1 = require("./resolver");
const merge = require("deepmerge");
// Helper function to combine multiple resolver definition hashes into a single hash for consumption by Apollostack's graphql-server
exports.combineResolvers = (resolvers = []) => resolvers
.reduce((combined, resolver) => merge(combined, resolver));
// Accepts multiple authentication resolvers and returns a function which will be called
// if all of the authentication resolvers succeed, or throw an error if one of them fails
exports.and = (...conditions) => resolver => {
return conditions.reduceRight((p, c) => {
return c.createResolver(p);
}, resolver);
};
// Accepts multiple authentication resolvers and returns a function which will be called
// if any of the authentication resolvers succeed, or throw an error if all of them fail
exports.or = (...conditions) => resolver => (root, args, context, info) => {
return new Promise((resolve, reject) => {
let limit = conditions.length - 1;
const attempt = (i) => resolver_1.createResolver(conditions[i])(root, args, context, info)
.then(() => {
resolver_1.createResolver(resolver)(root, args, context, info)
.then(res => resolve(res))
.catch(err => reject(err));
})
.catch(err => {
if (i === limit)
reject(err);
else
attempt(i + 1);
});
attempt(0);
});
};
//# sourceMappingURL=helper.js.map