import { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule';
import { FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectTypeRule';
import { FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypesRule';
import {
KnownArgumentNamesOnDirectivesRule,
KnownArgumentNamesRule,
} from './rules/KnownArgumentNamesRule';
import { KnownDirectivesRule } from './rules/KnownDirectivesRule';
import { KnownFragmentNamesRule } from './rules/KnownFragmentNamesRule';
import { KnownTypeNamesRule } from './rules/KnownTypeNamesRule';
import { LoneAnonymousOperationRule } from './rules/LoneAnonymousOperationRule';
import { LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinitionRule';
import { MaxIntrospectionDepthRule } from './rules/MaxIntrospectionDepthRule';
import { NoFragmentCyclesRule } from './rules/NoFragmentCyclesRule';
import { NoUndefinedVariablesRule } from './rules/NoUndefinedVariablesRule';
import { NoUnusedFragmentsRule } from './rules/NoUnusedFragmentsRule';
import { NoUnusedVariablesRule } from './rules/NoUnusedVariablesRule';
import { OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMergedRule';
import { PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreadsRule';
import { PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensionsRule';
import {
ProvidedRequiredArgumentsOnDirectivesRule,
ProvidedRequiredArgumentsRule,
} from './rules/ProvidedRequiredArgumentsRule';
import { ScalarLeafsRule } from './rules/ScalarLeafsRule';
import { SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptionsRule';
import { UniqueArgumentDefinitionNamesRule } from './rules/UniqueArgumentDefinitionNamesRule';
import { UniqueArgumentNamesRule } from './rules/UniqueArgumentNamesRule';
import { UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNamesRule';
import { UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocationRule';
import { UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNamesRule';
import { UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNamesRule';
import { UniqueFragmentNamesRule } from './rules/UniqueFragmentNamesRule';
import { UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNamesRule';
import { UniqueOperationNamesRule } from './rules/UniqueOperationNamesRule';
import { UniqueOperationTypesRule } from './rules/UniqueOperationTypesRule';
import { UniqueTypeNamesRule } from './rules/UniqueTypeNamesRule';
import { UniqueVariableNamesRule } from './rules/UniqueVariableNamesRule';
import { ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectTypeRule';
import { VariablesAreInputTypesRule } from './rules/VariablesAreInputTypesRule';
import { VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPositionRule';
import type { SDLValidationRule, ValidationRule } from './ValidationContext';
export const recommendedRules = Object.freeze([MaxIntrospectionDepthRule]);
export const specifiedRules: ReadonlyArray<ValidationRule> = Object.freeze([
ExecutableDefinitionsRule,
UniqueOperationNamesRule,
LoneAnonymousOperationRule,
SingleFieldSubscriptionsRule,
KnownTypeNamesRule,
FragmentsOnCompositeTypesRule,
VariablesAreInputTypesRule,
ScalarLeafsRule,
FieldsOnCorrectTypeRule,
UniqueFragmentNamesRule,
KnownFragmentNamesRule,
NoUnusedFragmentsRule,
PossibleFragmentSpreadsRule,
NoFragmentCyclesRule,
UniqueVariableNamesRule,
NoUndefinedVariablesRule,
NoUnusedVariablesRule,
KnownDirectivesRule,
UniqueDirectivesPerLocationRule,
KnownArgumentNamesRule,
UniqueArgumentNamesRule,
ValuesOfCorrectTypeRule,
ProvidedRequiredArgumentsRule,
VariablesInAllowedPositionRule,
OverlappingFieldsCanBeMergedRule,
UniqueInputFieldNamesRule,
...recommendedRules,
]);
export const specifiedSDLRules: ReadonlyArray<SDLValidationRule> =
Object.freeze([
LoneSchemaDefinitionRule,
UniqueOperationTypesRule,
UniqueTypeNamesRule,
UniqueEnumValueNamesRule,
UniqueFieldDefinitionNamesRule,
UniqueArgumentDefinitionNamesRule,
UniqueDirectiveNamesRule,
KnownTypeNamesRule,
KnownDirectivesRule,
UniqueDirectivesPerLocationRule,
PossibleTypeExtensionsRule,
KnownArgumentNamesOnDirectivesRule,
UniqueArgumentNamesRule,
UniqueInputFieldNamesRule,
ProvidedRequiredArgumentsOnDirectivesRule,
]);