Skip to content

Commit 6bde844

Browse files
committed
Improve typings for validation functions
Split out from graphql#1438
1 parent e124ca8 commit 6bde844

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

src/validation/__tests__/harness.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -421,30 +421,30 @@ export const testSchema = new GraphQLSchema({
421421
],
422422
});
423423

424-
function expectValid(schema, rules, queryString) {
425-
const errors = validate(schema, parse(queryString), rules);
424+
function expectValid(schema, rule, queryString) {
425+
const errors = validate(schema, parse(queryString), [rule]);
426426
expect(errors).to.deep.equal([], 'Should validate');
427427
}
428428

429-
function expectInvalid(schema, rules, queryString, expectedErrors) {
430-
const errors = validate(schema, parse(queryString), rules);
429+
function expectInvalid(schema, rule, queryString, expectedErrors) {
430+
const errors = validate(schema, parse(queryString), [rule]);
431431
expect(errors).to.have.length.of.at.least(1, 'Should not validate');
432432
expect(errors).to.deep.equal(expectedErrors);
433433
return errors;
434434
}
435435

436436
export function expectPassesRule(rule, queryString) {
437-
return expectValid(testSchema, [rule], queryString);
437+
return expectValid(testSchema, rule, queryString);
438438
}
439439

440440
export function expectFailsRule(rule, queryString, errors) {
441-
return expectInvalid(testSchema, [rule], queryString, errors);
441+
return expectInvalid(testSchema, rule, queryString, errors);
442442
}
443443

444-
export function expectPassesRuleWithSchema(schema, rule, queryString, errors) {
445-
return expectValid(schema, [rule], queryString, errors);
444+
export function expectPassesRuleWithSchema(schema, rule, queryString) {
445+
return expectValid(schema, rule, queryString);
446446
}
447447

448448
export function expectFailsRuleWithSchema(schema, rule, queryString, errors) {
449-
return expectInvalid(schema, [rule], queryString, errors);
449+
return expectInvalid(schema, rule, queryString, errors);
450450
}

src/validation/specifiedRules.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
* @flow strict
88
*/
99

10+
import type { ASTVisitor } from '../language/visitor';
11+
import type ValidationContext from './ValidationContext';
12+
1013
// Spec Section: "Executable Definitions"
1114
import { ExecutableDefinitions } from './rules/ExecutableDefinitions';
1215

@@ -85,15 +88,13 @@ import { OverlappingFieldsCanBeMerged } from './rules/OverlappingFieldsCanBeMerg
8588
// Spec Section: "Input Object Field Uniqueness"
8689
import { UniqueInputFieldNames } from './rules/UniqueInputFieldNames';
8790

88-
import type ValidationContext from './ValidationContext';
89-
9091
/**
9192
* This set includes all validation rules defined by the GraphQL spec.
9293
*
9394
* The order of the rules in this list has been adjusted to lead to the
9495
* most clear output when encountering multiple validation errors.
9596
*/
96-
export const specifiedRules: Array<(context: ValidationContext) => any> = [
97+
export const specifiedRules: Array<(ValidationContext) => ASTVisitor> = [
9798
ExecutableDefinitions,
9899
UniqueOperationNames,
99100
LoneAnonymousOperation,

src/validation/validate.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import invariant from '../jsutils/invariant';
1111
import type { GraphQLError } from '../error';
12+
import type { ASTVisitor } from '../language/visitor';
1213
import { visit, visitInParallel, visitWithTypeInfo } from '../language/visitor';
1314
import type { DocumentNode } from '../language/ast';
1415
import type { GraphQLSchema } from '../type/schema';
@@ -36,7 +37,7 @@ import ValidationContext from './ValidationContext';
3637
export function validate(
3738
schema: GraphQLSchema,
3839
documentAST: DocumentNode,
39-
rules?: $ReadOnlyArray<any> = specifiedRules,
40+
rules?: $ReadOnlyArray<(ValidationContext) => ASTVisitor> = specifiedRules,
4041
typeInfo?: TypeInfo = new TypeInfo(schema),
4142
): $ReadOnlyArray<GraphQLError> {
4243
invariant(documentAST, 'Must provide document');

0 commit comments

Comments
 (0)