Skip to content

Commit 5cdf9a4

Browse files
authored
Merge pull request #808 from graphql/export-rules
[RFC] Export all validation rules directly
2 parents ca70f60 + 2b94926 commit 5cdf9a4

File tree

3 files changed

+158
-0
lines changed

3 files changed

+158
-0
lines changed

src/index.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,36 @@ export type {
247247
export {
248248
validate,
249249
ValidationContext,
250+
251+
// All validation rules in the GraphQL Specification.
250252
specifiedRules,
253+
254+
// Individual validation rules.
255+
ArgumentsOfCorrectTypeRule,
256+
DefaultValuesOfCorrectTypeRule,
257+
FieldsOnCorrectTypeRule,
258+
FragmentsOnCompositeTypesRule,
259+
KnownArgumentNamesRule,
260+
KnownDirectivesRule,
261+
KnownFragmentNamesRule,
262+
KnownTypeNamesRule,
263+
LoneAnonymousOperationRule,
264+
NoFragmentCyclesRule,
265+
NoUndefinedVariablesRule,
266+
NoUnusedFragmentsRule,
267+
NoUnusedVariablesRule,
268+
OverlappingFieldsCanBeMergedRule,
269+
PossibleFragmentSpreadsRule,
270+
ProvidedNonNullArgumentsRule,
271+
ScalarLeafsRule,
272+
UniqueArgumentNamesRule,
273+
UniqueDirectivesPerLocationRule,
274+
UniqueFragmentNamesRule,
275+
UniqueInputFieldNamesRule,
276+
UniqueOperationNamesRule,
277+
UniqueVariableNamesRule,
278+
VariablesAreInputTypesRule,
279+
VariablesInAllowedPositionRule,
251280
} from './validation';
252281

253282

src/validation/index.js

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,130 @@
88
*/
99

1010
export { validate, ValidationContext } from './validate';
11+
1112
export { specifiedRules } from './specifiedRules';
13+
14+
// Spec Section: "Argument Values Type Correctness"
15+
export {
16+
ArgumentsOfCorrectType as ArgumentsOfCorrectTypeRule
17+
} from './rules/ArgumentsOfCorrectType';
18+
19+
// Spec Section: "Variable Default Values Are Correctly Typed"
20+
export {
21+
DefaultValuesOfCorrectType as DefaultValuesOfCorrectTypeRule
22+
} from './rules/DefaultValuesOfCorrectType';
23+
24+
// Spec Section: "Field Selections on Objects, Interfaces, and Unions Types"
25+
export {
26+
FieldsOnCorrectType as FieldsOnCorrectTypeRule
27+
} from './rules/FieldsOnCorrectType';
28+
29+
// Spec Section: "Fragments on Composite Types"
30+
export {
31+
FragmentsOnCompositeTypes as FragmentsOnCompositeTypesRule
32+
} from './rules/FragmentsOnCompositeTypes';
33+
34+
// Spec Section: "Argument Names"
35+
export {
36+
KnownArgumentNames as KnownArgumentNamesRule
37+
} from './rules/KnownArgumentNames';
38+
39+
// Spec Section: "Directives Are Defined"
40+
export {
41+
KnownDirectives as KnownDirectivesRule
42+
} from './rules/KnownDirectives';
43+
44+
// Spec Section: "Fragment spread target defined"
45+
export {
46+
KnownFragmentNames as KnownFragmentNamesRule
47+
} from './rules/KnownFragmentNames';
48+
49+
// Spec Section: "Fragment Spread Type Existence"
50+
export {
51+
KnownTypeNames as KnownTypeNamesRule
52+
} from './rules/KnownTypeNames';
53+
54+
// Spec Section: "Lone Anonymous Operation"
55+
export {
56+
LoneAnonymousOperation as LoneAnonymousOperationRule
57+
} from './rules/LoneAnonymousOperation';
58+
59+
// Spec Section: "Fragments must not form cycles"
60+
export {
61+
NoFragmentCycles as NoFragmentCyclesRule
62+
} from './rules/NoFragmentCycles';
63+
64+
// Spec Section: "All Variable Used Defined"
65+
export {
66+
NoUndefinedVariables as NoUndefinedVariablesRule
67+
} from './rules/NoUndefinedVariables';
68+
69+
// Spec Section: "Fragments must be used"
70+
export {
71+
NoUnusedFragments as NoUnusedFragmentsRule
72+
} from './rules/NoUnusedFragments';
73+
74+
// Spec Section: "All Variables Used"
75+
export {
76+
NoUnusedVariables as NoUnusedVariablesRule
77+
} from './rules/NoUnusedVariables';
78+
79+
// Spec Section: "Field Selection Merging"
80+
export {
81+
OverlappingFieldsCanBeMerged as OverlappingFieldsCanBeMergedRule
82+
} from './rules/OverlappingFieldsCanBeMerged';
83+
84+
// Spec Section: "Fragment spread is possible"
85+
export {
86+
PossibleFragmentSpreads as PossibleFragmentSpreadsRule
87+
} from './rules/PossibleFragmentSpreads';
88+
89+
// Spec Section: "Argument Optionality"
90+
export {
91+
ProvidedNonNullArguments as ProvidedNonNullArgumentsRule
92+
} from './rules/ProvidedNonNullArguments';
93+
94+
// Spec Section: "Leaf Field Selections"
95+
export {
96+
ScalarLeafs as ScalarLeafsRule
97+
} from './rules/ScalarLeafs';
98+
99+
// Spec Section: "Argument Uniqueness"
100+
export {
101+
UniqueArgumentNames as UniqueArgumentNamesRule
102+
} from './rules/UniqueArgumentNames';
103+
104+
// Spec Section: "Directives Are Unique Per Location"
105+
export {
106+
UniqueDirectivesPerLocation as UniqueDirectivesPerLocationRule
107+
} from './rules/UniqueDirectivesPerLocation';
108+
109+
// Spec Section: "Fragment Name Uniqueness"
110+
export {
111+
UniqueFragmentNames as UniqueFragmentNamesRule
112+
} from './rules/UniqueFragmentNames';
113+
114+
// Spec Section: "Input Object Field Uniqueness"
115+
export {
116+
UniqueInputFieldNames as UniqueInputFieldNamesRule
117+
} from './rules/UniqueInputFieldNames';
118+
119+
// Spec Section: "Operation Name Uniqueness"
120+
export {
121+
UniqueOperationNames as UniqueOperationNamesRule
122+
} from './rules/UniqueOperationNames';
123+
124+
// Spec Section: "Variable Uniqueness"
125+
export {
126+
UniqueVariableNames as UniqueVariableNamesRule
127+
} from './rules/UniqueVariableNames';
128+
129+
// Spec Section: "Variables are Input Types"
130+
export {
131+
VariablesAreInputTypes as VariablesAreInputTypesRule
132+
} from './rules/VariablesAreInputTypes';
133+
134+
// Spec Section: "All Variable Usages Are Allowed"
135+
export {
136+
VariablesInAllowedPosition as VariablesInAllowedPositionRule
137+
} from './rules/VariablesInAllowedPosition';

src/validation/specifiedRules.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ import type { ValidationContext } from './index';
9191

9292
/**
9393
* This set includes all validation rules defined by the GraphQL spec.
94+
*
95+
* The order of the rules in this list has been adjusted to lead to the
96+
* most clear output when encountering multiple validation errors.
9497
*/
9598
export const specifiedRules: Array<(context: ValidationContext) => any> = [
9699
UniqueOperationNames,

0 commit comments

Comments
 (0)