graphql_tools/validation/rules/
defaults.rs

1use crate::validation::validate::ValidationPlan;
2
3use super::{
4    FieldsOnCorrectType, FragmentsOnCompositeTypes, KnownArgumentNames, KnownDirectives,
5    KnownFragmentNames, KnownTypeNames, LeafFieldSelections, LoneAnonymousOperation,
6    NoFragmentsCycle, NoUndefinedVariables, NoUnusedFragments, NoUnusedVariables,
7    OverlappingFieldsCanBeMerged, PossibleFragmentSpreads, ProvidedRequiredArguments,
8    SingleFieldSubscriptions, UniqueArgumentNames, UniqueDirectivesPerLocation,
9    UniqueFragmentNames, UniqueOperationNames, UniqueVariableNames, ValuesOfCorrectType,
10    VariablesAreInputTypes, VariablesInAllowedPosition,
11};
12
13pub fn default_rules_validation_plan() -> ValidationPlan {
14    let mut plan = ValidationPlan { rules: vec![] };
15
16    plan.add_rule(Box::new(UniqueOperationNames::new()));
17    plan.add_rule(Box::new(LoneAnonymousOperation::new()));
18    plan.add_rule(Box::new(SingleFieldSubscriptions::new()));
19    plan.add_rule(Box::new(KnownTypeNames::new()));
20    plan.add_rule(Box::new(FragmentsOnCompositeTypes::new()));
21    plan.add_rule(Box::new(VariablesAreInputTypes::new()));
22    plan.add_rule(Box::new(LeafFieldSelections::new()));
23    plan.add_rule(Box::new(FieldsOnCorrectType::new()));
24    plan.add_rule(Box::new(UniqueFragmentNames::new()));
25    plan.add_rule(Box::new(KnownFragmentNames::new()));
26    plan.add_rule(Box::new(NoUnusedFragments::new()));
27    plan.add_rule(Box::new(OverlappingFieldsCanBeMerged::new()));
28    plan.add_rule(Box::new(NoFragmentsCycle::new()));
29    plan.add_rule(Box::new(PossibleFragmentSpreads::new()));
30    plan.add_rule(Box::new(NoUnusedVariables::new()));
31    plan.add_rule(Box::new(NoUndefinedVariables::new()));
32    plan.add_rule(Box::new(KnownArgumentNames::new()));
33    plan.add_rule(Box::new(UniqueArgumentNames::new()));
34    plan.add_rule(Box::new(UniqueVariableNames::new()));
35    plan.add_rule(Box::new(ProvidedRequiredArguments::new()));
36    plan.add_rule(Box::new(KnownDirectives::new()));
37    plan.add_rule(Box::new(VariablesInAllowedPosition::new()));
38    plan.add_rule(Box::new(ValuesOfCorrectType::new()));
39    plan.add_rule(Box::new(UniqueDirectivesPerLocation::new()));
40
41    plan
42}