specifiedRules.mjs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. // Spec Section: "Executable Definitions"
  2. import { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule.mjs'; // Spec Section: "Field Selections on Objects, Interfaces, and Unions Types"
  3. import { FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectTypeRule.mjs'; // Spec Section: "Fragments on Composite Types"
  4. import { FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypesRule.mjs'; // Spec Section: "Argument Names"
  5. import {
  6. KnownArgumentNamesOnDirectivesRule,
  7. KnownArgumentNamesRule,
  8. } from './rules/KnownArgumentNamesRule.mjs'; // Spec Section: "Directives Are Defined"
  9. import { KnownDirectivesRule } from './rules/KnownDirectivesRule.mjs'; // Spec Section: "Fragment spread target defined"
  10. import { KnownFragmentNamesRule } from './rules/KnownFragmentNamesRule.mjs'; // Spec Section: "Fragment Spread Type Existence"
  11. import { KnownTypeNamesRule } from './rules/KnownTypeNamesRule.mjs'; // Spec Section: "Lone Anonymous Operation"
  12. import { LoneAnonymousOperationRule } from './rules/LoneAnonymousOperationRule.mjs'; // SDL-specific validation rules
  13. import { LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinitionRule.mjs'; // Spec Section: "Fragments must not form cycles"
  14. import { NoFragmentCyclesRule } from './rules/NoFragmentCyclesRule.mjs'; // Spec Section: "All Variable Used Defined"
  15. import { NoUndefinedVariablesRule } from './rules/NoUndefinedVariablesRule.mjs'; // Spec Section: "Fragments must be used"
  16. import { NoUnusedFragmentsRule } from './rules/NoUnusedFragmentsRule.mjs'; // Spec Section: "All Variables Used"
  17. import { NoUnusedVariablesRule } from './rules/NoUnusedVariablesRule.mjs'; // Spec Section: "Field Selection Merging"
  18. import { OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMergedRule.mjs'; // Spec Section: "Fragment spread is possible"
  19. import { PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreadsRule.mjs';
  20. import { PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensionsRule.mjs'; // Spec Section: "Argument Optionality"
  21. import {
  22. ProvidedRequiredArgumentsOnDirectivesRule,
  23. ProvidedRequiredArgumentsRule,
  24. } from './rules/ProvidedRequiredArgumentsRule.mjs'; // Spec Section: "Leaf Field Selections"
  25. import { ScalarLeafsRule } from './rules/ScalarLeafsRule.mjs'; // Spec Section: "Subscriptions with Single Root Field"
  26. import { SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptionsRule.mjs';
  27. import { UniqueArgumentDefinitionNamesRule } from './rules/UniqueArgumentDefinitionNamesRule.mjs'; // Spec Section: "Argument Uniqueness"
  28. import { UniqueArgumentNamesRule } from './rules/UniqueArgumentNamesRule.mjs';
  29. import { UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNamesRule.mjs'; // Spec Section: "Directives Are Unique Per Location"
  30. import { UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocationRule.mjs';
  31. import { UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNamesRule.mjs';
  32. import { UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNamesRule.mjs'; // Spec Section: "Fragment Name Uniqueness"
  33. import { UniqueFragmentNamesRule } from './rules/UniqueFragmentNamesRule.mjs'; // Spec Section: "Input Object Field Uniqueness"
  34. import { UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNamesRule.mjs'; // Spec Section: "Operation Name Uniqueness"
  35. import { UniqueOperationNamesRule } from './rules/UniqueOperationNamesRule.mjs';
  36. import { UniqueOperationTypesRule } from './rules/UniqueOperationTypesRule.mjs';
  37. import { UniqueTypeNamesRule } from './rules/UniqueTypeNamesRule.mjs'; // Spec Section: "Variable Uniqueness"
  38. import { UniqueVariableNamesRule } from './rules/UniqueVariableNamesRule.mjs'; // Spec Section: "Value Type Correctness"
  39. import { ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectTypeRule.mjs'; // Spec Section: "Variables are Input Types"
  40. import { VariablesAreInputTypesRule } from './rules/VariablesAreInputTypesRule.mjs'; // Spec Section: "All Variable Usages Are Allowed"
  41. import { VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPositionRule.mjs';
  42. /**
  43. * This set includes all validation rules defined by the GraphQL spec.
  44. *
  45. * The order of the rules in this list has been adjusted to lead to the
  46. * most clear output when encountering multiple validation errors.
  47. */
  48. export const specifiedRules = Object.freeze([
  49. ExecutableDefinitionsRule,
  50. UniqueOperationNamesRule,
  51. LoneAnonymousOperationRule,
  52. SingleFieldSubscriptionsRule,
  53. KnownTypeNamesRule,
  54. FragmentsOnCompositeTypesRule,
  55. VariablesAreInputTypesRule,
  56. ScalarLeafsRule,
  57. FieldsOnCorrectTypeRule,
  58. UniqueFragmentNamesRule,
  59. KnownFragmentNamesRule,
  60. NoUnusedFragmentsRule,
  61. PossibleFragmentSpreadsRule,
  62. NoFragmentCyclesRule,
  63. UniqueVariableNamesRule,
  64. NoUndefinedVariablesRule,
  65. NoUnusedVariablesRule,
  66. KnownDirectivesRule,
  67. UniqueDirectivesPerLocationRule,
  68. KnownArgumentNamesRule,
  69. UniqueArgumentNamesRule,
  70. ValuesOfCorrectTypeRule,
  71. ProvidedRequiredArgumentsRule,
  72. VariablesInAllowedPositionRule,
  73. OverlappingFieldsCanBeMergedRule,
  74. UniqueInputFieldNamesRule,
  75. ]);
  76. /**
  77. * @internal
  78. */
  79. export const specifiedSDLRules = Object.freeze([
  80. LoneSchemaDefinitionRule,
  81. UniqueOperationTypesRule,
  82. UniqueTypeNamesRule,
  83. UniqueEnumValueNamesRule,
  84. UniqueFieldDefinitionNamesRule,
  85. UniqueArgumentDefinitionNamesRule,
  86. UniqueDirectiveNamesRule,
  87. KnownTypeNamesRule,
  88. KnownDirectivesRule,
  89. UniqueDirectivesPerLocationRule,
  90. PossibleTypeExtensionsRule,
  91. KnownArgumentNamesOnDirectivesRule,
  92. UniqueArgumentNamesRule,
  93. UniqueInputFieldNamesRule,
  94. ProvidedRequiredArgumentsOnDirectivesRule,
  95. ]);