Allow `validateSchema` to accept validation rules like `validate` does.
- Dominant language
- TypeScript
- Stars
- 20.3k
- Forks
- 2.1k
- Avg merge
- 44m
- Merged PRs (30d)
- 6
Description
By default, the validate function uses an array of `specifiedRules` exported by `graphql/validation`.
```javascript
> var { validate, parse } = require('graphql')
> var { specifiedRules } = require('graphql/validation')
> specifiedRules
[ [Function: ExecutableDefinitions],
[Function: UniqueOperationNames],
[Function: LoneAnonymousOperation],
[Function: SingleFieldSubscriptions],
[Function: KnownTypeNames],
[Function: FragmentsOnCompositeTypes],
[Function: VariablesAreInputTypes],
[Function: ScalarLeafs],
[Function: FieldsOnCorrectType],
[Function: UniqueFragmentNames],
[Function: KnownFragmentNames],
[Function: NoUnusedFragments],
[Function: PossibleFragmentSpreads],
[Function: NoFragmentCycles],
[Function: UniqueVariableNames],
[Function: NoUndefinedVariables],
[Function: NoUnusedVariables],
[Function: KnownDirectives],
[Function: UniqueDirectivesPerLocation],
[Function: KnownArgumentNames],
[Function: UniqueArgumentNames],
[Function: ValuesOfCorrectType],
[Function: ProvidedRequiredArguments],
[Function: VariablesInAllowedPosition],
[Function: OverlappingFieldsCanBeMerged],
[Function: UniqueInputFieldNames] ]
validate(schema, parse(`{ kittens }`), specifiedRules)
```
This allows people to easily extend/replace the default set of rules. `validateSchema` looks like it works in a similar way (internally it runs a series of functions that each accept a context), but it accepts a schema and nothing else.
```js
> var { buildSchema, validateSchema } = require('graphql')
> s = buildSchema(`type Query { hello: String }`)
> validateSchema(s)
[]
```
Would it make sense for `validateSchema` to accept an optional array of rules similar to `validate`?
Contributor guide
Assessment
This issue has not been assessed yet.