Query validation
Stop maliciously complex or invalid queries against your Keystone
instance.
JS
const { validation } = require('@keystonejs/app-graphql');
const app = new GraphQLApp({
apollo: {
validationRules: [validation.depthLimit(3)],
},
});
Validators
depthLimit
: limit nesting depth of queriesdefinitionLimit
: limit number of definitions (queries, fragments, mutations)fieldLimit
: limit total number of fields returned in results (after expanding fragment spreads)
The following GraphQL has two definitions (contact
, info
), four fields (name
, email
, allUsers
, friends
), and a total depth of three:
GraphQL
fragment contact on User {
name
email
}
query info {
allUsers {
friends {
...contact
}
}
}