Provides a middleware-like capability to your GraphQL api by enabling the combination of multiple resolvers through a simple and expressive API.
Resolvers solved
npm i graphql-resolved --save
yarn add graphql-resolved
Return a resolver that is the sum of the ones in the supplied array.
The execution order follows the order from left to right.
The last resolver being the one to return the final expect value.
chain([1, 2, 3, 4])
import { chain } from 'graphql-resolved';
import { isAuthenticated, isAdmin, isTopContributer } from './auth/resolvers';
import * as UserResolvers from './user/resolvers';
const getMe = chain([isAuthenticated, UserResolvers.getMe])
const Query = {
getMe
}
const resolvers = {
Query,
}
Applies a list of resolvers
to each of those supplied by the to
object.
resolvers
The execution order follows the order from left to right.
const allUserResolvers = apply({ resolvers: [isAuthenticated], to: UserResolvers })
const Query = {
...allUserResolvers
}
The protect key work take three arguments:
it
(Optional) a resolver function, if suppliedprotect
returns a new resolver functionall
(Optional) a map of resolvers, if suppliedprotect
returns an object with the exact same resolvers names as keysusing
a list of resolvers to apply(The order matters from left to right).
const getMe = protect({
it: UserResolvers.getMe,
using: [isAuthenticated]
});
const adminResolvers = protect({
all: { PostResolvers.deletePost, PostResolvers.correctPost },
using: [isAuthenticated, isAdmin]
});
const Query = {
getMe
...adminResolvers
}
npm test
yarn test
Please feel free to drop an issue or propose a feature or pull request.
MIT