Skip to content

Commit 4a9505f

Browse files
committed
Split out 'ASTValidationContext'
1 parent a1ee52a commit 4a9505f

31 files changed

+71
-58
lines changed

src/utilities/isValidLiteralValue.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { visit, visitWithTypeInfo } from '../language/visitor';
1515
import type { GraphQLInputType } from '../type/definition';
1616
import { GraphQLSchema } from '../type/schema';
1717
import { ValuesOfCorrectType } from '../validation/rules/ValuesOfCorrectType';
18-
import ValidationContext from '../validation/ValidationContext';
18+
import { ValidationContext } from '../validation/ValidationContext';
1919

2020
/**
2121
* Utility which determines if a value literal node is valid for an input type.

src/validation/ValidationContext.js

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,31 @@ type VariableUsage = {|
4242
* allowing access to commonly useful contextual information from within a
4343
* validation rule.
4444
*/
45-
export default class ValidationContext {
46-
_schema: GraphQLSchema;
45+
export class ASTValidationContext {
4746
_ast: DocumentNode;
48-
_typeInfo: TypeInfo;
4947
_errors: Array<GraphQLError>;
48+
49+
constructor(ast: DocumentNode): void {
50+
this._ast = ast;
51+
this._errors = [];
52+
}
53+
54+
reportError(error: GraphQLError): void {
55+
this._errors.push(error);
56+
}
57+
58+
getErrors(): $ReadOnlyArray<GraphQLError> {
59+
return this._errors;
60+
}
61+
62+
getDocument(): DocumentNode {
63+
return this._ast;
64+
}
65+
}
66+
67+
export class ValidationContext extends ASTValidationContext {
68+
_schema: GraphQLSchema;
69+
_typeInfo: TypeInfo;
5070
_fragments: ObjMap<FragmentDefinitionNode>;
5171
_fragmentSpreads: Map<SelectionSetNode, $ReadOnlyArray<FragmentSpreadNode>>;
5272
_recursivelyReferencedFragments: Map<
@@ -64,32 +84,19 @@ export default class ValidationContext {
6484
ast: DocumentNode,
6585
typeInfo: TypeInfo,
6686
): void {
87+
super(ast);
6788
this._schema = schema;
68-
this._ast = ast;
6989
this._typeInfo = typeInfo;
70-
this._errors = [];
7190
this._fragmentSpreads = new Map();
7291
this._recursivelyReferencedFragments = new Map();
7392
this._variableUsages = new Map();
7493
this._recursiveVariableUsages = new Map();
7594
}
7695

77-
reportError(error: GraphQLError): void {
78-
this._errors.push(error);
79-
}
80-
81-
getErrors(): $ReadOnlyArray<GraphQLError> {
82-
return this._errors;
83-
}
84-
8596
getSchema(): GraphQLSchema {
8697
return this._schema;
8798
}
8899

89-
getDocument(): DocumentNode {
90-
return this._ast;
91-
}
92-
93100
getFragment(name: string): ?FragmentDefinitionNode {
94101
let fragments = this._fragments;
95102
if (!fragments) {

src/validation/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99

1010
export { validate } from './validate';
1111

12-
// https://github.com/tc39/proposal-export-default-from
13-
import ValidationContext from './ValidationContext';
14-
export { ValidationContext };
12+
export { ValidationContext } from './ValidationContext';
1513

1614
export { specifiedRules } from './specifiedRules';
1715

src/validation/rules/ExecutableDefinitions.js

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

10-
import type ValidationContext from '../ValidationContext';
10+
import type { ASTValidationContext } from '../ValidationContext';
1111
import { GraphQLError } from '../../error';
1212
import { Kind } from '../../language/kinds';
1313
import type { ASTVisitor } from '../../language/visitor';
@@ -22,7 +22,9 @@ export function nonExecutableDefinitionMessage(defName: string): string {
2222
* A GraphQL document is only valid for execution if all definitions are either
2323
* operation or fragment definitions.
2424
*/
25-
export function ExecutableDefinitions(context: ValidationContext): ASTVisitor {
25+
export function ExecutableDefinitions(
26+
context: ASTValidationContext,
27+
): ASTVisitor {
2628
return {
2729
Document(node) {
2830
for (const definition of node.definitions) {

src/validation/rules/FieldsOnCorrectType.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow strict
88
*/
99

10-
import type ValidationContext from '../ValidationContext';
10+
import type { ValidationContext } from '../ValidationContext';
1111
import { GraphQLError } from '../../error';
1212
import suggestionList from '../../jsutils/suggestionList';
1313
import quotedOrList from '../../jsutils/quotedOrList';

src/validation/rules/FragmentsOnCompositeTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow strict
88
*/
99

10-
import type ValidationContext from '../ValidationContext';
10+
import type { ValidationContext } from '../ValidationContext';
1111
import { GraphQLError } from '../../error';
1212
import { print } from '../../language/printer';
1313
import type { ASTVisitor } from '../../language/visitor';

src/validation/rules/KnownArgumentNames.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow strict
88
*/
99

10-
import type ValidationContext from '../ValidationContext';
10+
import type { ValidationContext } from '../ValidationContext';
1111
import { GraphQLError } from '../../error';
1212
import type { ASTVisitor } from '../../language/visitor';
1313
import suggestionList from '../../jsutils/suggestionList';

src/validation/rules/KnownDirectives.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow strict
88
*/
99

10-
import type ValidationContext from '../ValidationContext';
10+
import type { ValidationContext } from '../ValidationContext';
1111
import { GraphQLError } from '../../error';
1212
import find from '../../jsutils/find';
1313
import { Kind } from '../../language/kinds';

src/validation/rules/KnownFragmentNames.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow strict
88
*/
99

10-
import type ValidationContext from '../ValidationContext';
10+
import type { ValidationContext } from '../ValidationContext';
1111
import { GraphQLError } from '../../error';
1212
import type { ASTVisitor } from '../../language/visitor';
1313

src/validation/rules/KnownTypeNames.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow strict
88
*/
99

10-
import type ValidationContext from '../ValidationContext';
10+
import type { ValidationContext } from '../ValidationContext';
1111
import { GraphQLError } from '../../error';
1212
import suggestionList from '../../jsutils/suggestionList';
1313
import quotedOrList from '../../jsutils/quotedOrList';

0 commit comments

Comments
 (0)