graphql 16.14.0 → 16.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/error/GraphQLError.d.ts +151 -15
  2. package/error/GraphQLError.js +143 -12
  3. package/error/GraphQLError.mjs +143 -12
  4. package/error/index.d.ts +6 -0
  5. package/error/index.mjs +6 -0
  6. package/error/locatedError.d.ts +20 -0
  7. package/error/locatedError.js +21 -0
  8. package/error/locatedError.mjs +20 -0
  9. package/error/syntaxError.d.ts +15 -0
  10. package/error/syntaxError.js +16 -0
  11. package/error/syntaxError.mjs +15 -0
  12. package/execution/collectFields.js +6 -0
  13. package/execution/collectFields.mjs +6 -0
  14. package/execution/execute.d.ts +211 -12
  15. package/execution/execute.js +214 -23
  16. package/execution/execute.mjs +213 -23
  17. package/execution/index.d.ts +6 -0
  18. package/execution/index.mjs +6 -0
  19. package/execution/mapAsyncIterator.d.ts +2 -0
  20. package/execution/mapAsyncIterator.js +2 -0
  21. package/execution/mapAsyncIterator.mjs +2 -0
  22. package/execution/subscribe.d.ts +195 -5
  23. package/execution/subscribe.js +154 -11
  24. package/execution/subscribe.mjs +153 -11
  25. package/execution/values.d.ts +167 -10
  26. package/execution/values.js +149 -5
  27. package/execution/values.mjs +148 -5
  28. package/graphql.d.ts +163 -41
  29. package/graphql.js +126 -4
  30. package/graphql.mjs +131 -41
  31. package/index.d.ts +11 -17
  32. package/index.mjs +13 -19
  33. package/jsutils/Maybe.d.ts +5 -1
  34. package/jsutils/ObjMap.d.ts +4 -0
  35. package/jsutils/Path.d.ts +30 -0
  36. package/jsutils/Path.js +29 -0
  37. package/jsutils/Path.mjs +29 -0
  38. package/jsutils/PromiseOrValue.d.ts +1 -0
  39. package/jsutils/devAssert.d.ts +1 -0
  40. package/jsutils/devAssert.js +1 -0
  41. package/jsutils/devAssert.mjs +1 -0
  42. package/jsutils/didYouMean.d.ts +4 -1
  43. package/jsutils/didYouMean.js +4 -1
  44. package/jsutils/didYouMean.mjs +4 -1
  45. package/jsutils/groupBy.d.ts +2 -0
  46. package/jsutils/groupBy.js +2 -0
  47. package/jsutils/groupBy.mjs +2 -0
  48. package/jsutils/identityFunc.d.ts +2 -0
  49. package/jsutils/identityFunc.js +2 -0
  50. package/jsutils/identityFunc.mjs +2 -0
  51. package/jsutils/inspect.d.ts +2 -0
  52. package/jsutils/inspect.js +2 -0
  53. package/jsutils/inspect.mjs +2 -0
  54. package/jsutils/instanceOf.d.ts +2 -0
  55. package/jsutils/instanceOf.js +2 -0
  56. package/jsutils/instanceOf.mjs +2 -0
  57. package/jsutils/invariant.d.ts +1 -0
  58. package/jsutils/invariant.js +1 -0
  59. package/jsutils/invariant.mjs +1 -0
  60. package/jsutils/isAsyncIterable.d.ts +2 -0
  61. package/jsutils/isAsyncIterable.js +2 -0
  62. package/jsutils/isAsyncIterable.mjs +2 -0
  63. package/jsutils/isIterableObject.d.ts +6 -5
  64. package/jsutils/isIterableObject.js +6 -5
  65. package/jsutils/isIterableObject.mjs +6 -5
  66. package/jsutils/isObjectLike.d.ts +2 -0
  67. package/jsutils/isObjectLike.js +2 -0
  68. package/jsutils/isObjectLike.mjs +2 -0
  69. package/jsutils/isPromise.d.ts +2 -0
  70. package/jsutils/isPromise.js +2 -0
  71. package/jsutils/isPromise.mjs +2 -0
  72. package/jsutils/keyMap.d.ts +7 -14
  73. package/jsutils/keyMap.js +7 -14
  74. package/jsutils/keyMap.mjs +7 -14
  75. package/jsutils/keyValMap.d.ts +9 -6
  76. package/jsutils/keyValMap.js +9 -6
  77. package/jsutils/keyValMap.mjs +9 -6
  78. package/jsutils/mapValue.d.ts +2 -0
  79. package/jsutils/mapValue.js +2 -0
  80. package/jsutils/mapValue.mjs +2 -0
  81. package/jsutils/memoize3.d.ts +2 -0
  82. package/jsutils/memoize3.js +2 -0
  83. package/jsutils/memoize3.mjs +2 -0
  84. package/jsutils/naturalCompare.d.ts +2 -0
  85. package/jsutils/naturalCompare.js +2 -0
  86. package/jsutils/naturalCompare.mjs +2 -0
  87. package/jsutils/printPathArray.d.ts +2 -0
  88. package/jsutils/printPathArray.js +2 -0
  89. package/jsutils/printPathArray.mjs +2 -0
  90. package/jsutils/promiseForObject.d.ts +2 -0
  91. package/jsutils/promiseForObject.js +2 -0
  92. package/jsutils/promiseForObject.mjs +2 -0
  93. package/jsutils/promiseReduce.d.ts +2 -0
  94. package/jsutils/promiseReduce.js +2 -0
  95. package/jsutils/promiseReduce.mjs +2 -0
  96. package/jsutils/suggestionList.d.ts +2 -0
  97. package/jsutils/suggestionList.js +4 -0
  98. package/jsutils/suggestionList.mjs +4 -0
  99. package/jsutils/toError.d.ts +2 -0
  100. package/jsutils/toError.js +2 -0
  101. package/jsutils/toError.mjs +2 -0
  102. package/jsutils/toObjMap.d.ts +1 -0
  103. package/jsutils/toObjMap.js +1 -0
  104. package/jsutils/toObjMap.mjs +1 -0
  105. package/language/ast.d.ts +412 -54
  106. package/language/ast.js +95 -38
  107. package/language/ast.mjs +95 -38
  108. package/language/blockString.d.ts +1 -3
  109. package/language/blockString.js +1 -3
  110. package/language/blockString.mjs +1 -3
  111. package/language/directiveLocation.d.ts +28 -8
  112. package/language/directiveLocation.js +9 -6
  113. package/language/directiveLocation.mjs +9 -6
  114. package/language/index.d.ts +6 -0
  115. package/language/index.mjs +6 -0
  116. package/language/kinds.d.ts +57 -18
  117. package/language/kinds.js +9 -6
  118. package/language/kinds.mjs +9 -6
  119. package/language/lexer.d.ts +47 -14
  120. package/language/lexer.js +71 -13
  121. package/language/lexer.mjs +70 -13
  122. package/language/location.d.ts +16 -3
  123. package/language/location.js +14 -3
  124. package/language/location.mjs +14 -3
  125. package/language/parser.d.ts +236 -13
  126. package/language/parser.js +224 -0
  127. package/language/parser.mjs +224 -3
  128. package/language/predicates.d.ts +169 -0
  129. package/language/predicates.js +170 -0
  130. package/language/predicates.mjs +180 -0
  131. package/language/printLocation.d.ts +28 -0
  132. package/language/printLocation.js +29 -0
  133. package/language/printLocation.mjs +28 -0
  134. package/language/printString.d.ts +2 -0
  135. package/language/printString.js +5 -1
  136. package/language/printString.mjs +5 -1
  137. package/language/printer.d.ts +12 -0
  138. package/language/printer.js +19 -0
  139. package/language/printer.mjs +18 -0
  140. package/language/schemaCoordinateLexer.d.ts +8 -6
  141. package/language/schemaCoordinateLexer.js +10 -6
  142. package/language/schemaCoordinateLexer.mjs +10 -6
  143. package/language/source.d.ts +28 -0
  144. package/language/source.js +32 -0
  145. package/language/source.mjs +31 -0
  146. package/language/tokenKind.d.ts +30 -3
  147. package/language/tokenKind.js +8 -3
  148. package/language/tokenKind.mjs +8 -3
  149. package/language/visitor.d.ts +200 -72
  150. package/language/visitor.js +122 -50
  151. package/language/visitor.mjs +122 -54
  152. package/package.json +1 -1
  153. package/subscription/index.d.ts +9 -3
  154. package/subscription/index.mjs +9 -3
  155. package/type/assertName.d.ts +18 -1
  156. package/type/assertName.js +19 -1
  157. package/type/assertName.mjs +18 -1
  158. package/type/definition.d.ts +2540 -79
  159. package/type/definition.js +2214 -61
  160. package/type/definition.mjs +2241 -60
  161. package/type/directives.d.ts +193 -18
  162. package/type/directives.js +196 -19
  163. package/type/directives.mjs +196 -19
  164. package/type/index.d.ts +6 -0
  165. package/type/index.mjs +6 -0
  166. package/type/introspection.d.ts +36 -0
  167. package/type/introspection.js +33 -0
  168. package/type/introspection.mjs +41 -0
  169. package/type/scalars.d.ts +29 -2
  170. package/type/scalars.js +37 -2
  171. package/type/scalars.mjs +36 -2
  172. package/type/schema.d.ts +490 -28
  173. package/type/schema.js +484 -26
  174. package/type/schema.mjs +484 -26
  175. package/type/validate.d.ts +31 -0
  176. package/type/validate.js +32 -0
  177. package/type/validate.mjs +31 -0
  178. package/utilities/TypeInfo.d.ts +441 -1
  179. package/utilities/TypeInfo.js +444 -1
  180. package/utilities/TypeInfo.mjs +443 -1
  181. package/utilities/assertValidName.d.ts +27 -2
  182. package/utilities/assertValidName.js +28 -2
  183. package/utilities/assertValidName.mjs +27 -2
  184. package/utilities/astFromValue.d.ts +33 -3
  185. package/utilities/astFromValue.js +36 -3
  186. package/utilities/astFromValue.mjs +35 -3
  187. package/utilities/buildASTSchema.d.ts +65 -6
  188. package/utilities/buildASTSchema.js +65 -6
  189. package/utilities/buildASTSchema.mjs +65 -6
  190. package/utilities/buildClientSchema.d.ts +15 -0
  191. package/utilities/buildClientSchema.js +16 -0
  192. package/utilities/buildClientSchema.mjs +15 -0
  193. package/utilities/coerceInputValue.d.ts +46 -0
  194. package/utilities/coerceInputValue.js +47 -0
  195. package/utilities/coerceInputValue.mjs +46 -0
  196. package/utilities/concatAST.d.ts +12 -0
  197. package/utilities/concatAST.js +13 -0
  198. package/utilities/concatAST.mjs +12 -0
  199. package/utilities/extendSchema.d.ts +56 -3
  200. package/utilities/extendSchema.js +63 -3
  201. package/utilities/extendSchema.mjs +62 -3
  202. package/utilities/findBreakingChanges.d.ts +95 -0
  203. package/utilities/findBreakingChanges.js +68 -0
  204. package/utilities/findBreakingChanges.mjs +70 -0
  205. package/utilities/getIntrospectionQuery.d.ts +132 -0
  206. package/utilities/getIntrospectionQuery.js +41 -0
  207. package/utilities/getIntrospectionQuery.mjs +41 -0
  208. package/utilities/getOperationAST.d.ts +15 -0
  209. package/utilities/getOperationAST.js +16 -0
  210. package/utilities/getOperationAST.mjs +15 -0
  211. package/utilities/getOperationRootType.d.ts +18 -1
  212. package/utilities/getOperationRootType.js +19 -1
  213. package/utilities/getOperationRootType.mjs +18 -1
  214. package/utilities/index.d.ts +7 -0
  215. package/utilities/index.mjs +7 -0
  216. package/utilities/introspectionFromSchema.d.ts +54 -0
  217. package/utilities/introspectionFromSchema.js +55 -0
  218. package/utilities/introspectionFromSchema.mjs +54 -0
  219. package/utilities/lexicographicSortSchema.d.ts +35 -0
  220. package/utilities/lexicographicSortSchema.js +36 -0
  221. package/utilities/lexicographicSortSchema.mjs +35 -0
  222. package/utilities/printSchema.d.ts +63 -0
  223. package/utilities/printSchema.js +66 -0
  224. package/utilities/printSchema.mjs +67 -0
  225. package/utilities/resolveSchemaCoordinate.d.ts +62 -0
  226. package/utilities/resolveSchemaCoordinate.js +64 -0
  227. package/utilities/resolveSchemaCoordinate.mjs +63 -0
  228. package/utilities/separateOperations.d.ts +30 -0
  229. package/utilities/separateOperations.js +31 -0
  230. package/utilities/separateOperations.mjs +30 -0
  231. package/utilities/stripIgnoredCharacters.d.ts +13 -6
  232. package/utilities/stripIgnoredCharacters.js +16 -6
  233. package/utilities/stripIgnoredCharacters.mjs +15 -6
  234. package/utilities/typeComparators.d.ts +84 -0
  235. package/utilities/typeComparators.js +85 -0
  236. package/utilities/typeComparators.mjs +84 -0
  237. package/utilities/typeFromAST.d.ts +86 -0
  238. package/utilities/typeFromAST.js +3 -0
  239. package/utilities/typeFromAST.mjs +3 -0
  240. package/utilities/typedQueryDocumentNode.d.ts +4 -0
  241. package/utilities/valueFromAST.d.ts +38 -0
  242. package/utilities/valueFromAST.js +39 -0
  243. package/utilities/valueFromAST.mjs +38 -0
  244. package/utilities/valueFromASTUntyped.d.ts +15 -2
  245. package/utilities/valueFromASTUntyped.js +16 -2
  246. package/utilities/valueFromASTUntyped.mjs +15 -2
  247. package/validation/ValidationContext.d.ts +399 -0
  248. package/validation/ValidationContext.js +400 -0
  249. package/validation/ValidationContext.mjs +401 -0
  250. package/validation/index.d.ts +6 -0
  251. package/validation/index.mjs +6 -0
  252. package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
  253. package/validation/rules/ExecutableDefinitionsRule.js +29 -0
  254. package/validation/rules/ExecutableDefinitionsRule.mjs +28 -0
  255. package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
  256. package/validation/rules/FieldsOnCorrectTypeRule.js +33 -0
  257. package/validation/rules/FieldsOnCorrectTypeRule.mjs +32 -0
  258. package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
  259. package/validation/rules/FragmentsOnCompositeTypesRule.js +29 -0
  260. package/validation/rules/FragmentsOnCompositeTypesRule.mjs +28 -0
  261. package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
  262. package/validation/rules/KnownArgumentNamesRule.js +30 -3
  263. package/validation/rules/KnownArgumentNamesRule.mjs +29 -3
  264. package/validation/rules/KnownDirectivesRule.d.ts +28 -0
  265. package/validation/rules/KnownDirectivesRule.js +29 -0
  266. package/validation/rules/KnownDirectivesRule.mjs +28 -0
  267. package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
  268. package/validation/rules/KnownFragmentNamesRule.js +29 -0
  269. package/validation/rules/KnownFragmentNamesRule.mjs +28 -0
  270. package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
  271. package/validation/rules/KnownTypeNamesRule.js +29 -0
  272. package/validation/rules/KnownTypeNamesRule.mjs +28 -0
  273. package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
  274. package/validation/rules/LoneAnonymousOperationRule.js +29 -0
  275. package/validation/rules/LoneAnonymousOperationRule.mjs +28 -0
  276. package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
  277. package/validation/rules/LoneSchemaDefinitionRule.js +22 -0
  278. package/validation/rules/LoneSchemaDefinitionRule.mjs +21 -0
  279. package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
  280. package/validation/rules/MaxIntrospectionDepthRule.js +33 -0
  281. package/validation/rules/MaxIntrospectionDepthRule.mjs +34 -0
  282. package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
  283. package/validation/rules/NoFragmentCyclesRule.js +29 -0
  284. package/validation/rules/NoFragmentCyclesRule.mjs +28 -0
  285. package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
  286. package/validation/rules/NoUndefinedVariablesRule.js +29 -0
  287. package/validation/rules/NoUndefinedVariablesRule.mjs +28 -0
  288. package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
  289. package/validation/rules/NoUnusedFragmentsRule.js +29 -0
  290. package/validation/rules/NoUnusedFragmentsRule.mjs +28 -0
  291. package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
  292. package/validation/rules/NoUnusedVariablesRule.js +30 -0
  293. package/validation/rules/NoUnusedVariablesRule.mjs +29 -0
  294. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
  295. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +45 -6
  296. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +45 -6
  297. package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
  298. package/validation/rules/PossibleFragmentSpreadsRule.js +37 -0
  299. package/validation/rules/PossibleFragmentSpreadsRule.mjs +36 -0
  300. package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
  301. package/validation/rules/PossibleTypeExtensionsRule.js +22 -0
  302. package/validation/rules/PossibleTypeExtensionsRule.mjs +21 -0
  303. package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
  304. package/validation/rules/ProvidedRequiredArgumentsRule.js +30 -3
  305. package/validation/rules/ProvidedRequiredArgumentsRule.mjs +29 -3
  306. package/validation/rules/ScalarLeafsRule.d.ts +28 -0
  307. package/validation/rules/ScalarLeafsRule.js +29 -0
  308. package/validation/rules/ScalarLeafsRule.mjs +28 -0
  309. package/validation/rules/SingleFieldSubscriptionsRule.d.ts +33 -0
  310. package/validation/rules/SingleFieldSubscriptionsRule.js +34 -0
  311. package/validation/rules/SingleFieldSubscriptionsRule.mjs +33 -0
  312. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
  313. package/validation/rules/UniqueArgumentDefinitionNamesRule.js +22 -0
  314. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +21 -0
  315. package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
  316. package/validation/rules/UniqueArgumentNamesRule.js +29 -0
  317. package/validation/rules/UniqueArgumentNamesRule.mjs +28 -0
  318. package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
  319. package/validation/rules/UniqueDirectiveNamesRule.js +22 -0
  320. package/validation/rules/UniqueDirectiveNamesRule.mjs +21 -0
  321. package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
  322. package/validation/rules/UniqueDirectivesPerLocationRule.js +29 -0
  323. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +28 -0
  324. package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
  325. package/validation/rules/UniqueEnumValueNamesRule.js +22 -0
  326. package/validation/rules/UniqueEnumValueNamesRule.mjs +21 -0
  327. package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
  328. package/validation/rules/UniqueFieldDefinitionNamesRule.js +22 -0
  329. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +21 -0
  330. package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
  331. package/validation/rules/UniqueFragmentNamesRule.js +29 -0
  332. package/validation/rules/UniqueFragmentNamesRule.mjs +28 -0
  333. package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
  334. package/validation/rules/UniqueInputFieldNamesRule.js +33 -0
  335. package/validation/rules/UniqueInputFieldNamesRule.mjs +32 -0
  336. package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
  337. package/validation/rules/UniqueOperationNamesRule.js +29 -0
  338. package/validation/rules/UniqueOperationNamesRule.mjs +28 -0
  339. package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
  340. package/validation/rules/UniqueOperationTypesRule.js +22 -0
  341. package/validation/rules/UniqueOperationTypesRule.mjs +21 -0
  342. package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
  343. package/validation/rules/UniqueTypeNamesRule.js +22 -0
  344. package/validation/rules/UniqueTypeNamesRule.mjs +21 -0
  345. package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
  346. package/validation/rules/UniqueVariableNamesRule.js +29 -0
  347. package/validation/rules/UniqueVariableNamesRule.mjs +28 -0
  348. package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
  349. package/validation/rules/ValuesOfCorrectTypeRule.js +31 -0
  350. package/validation/rules/ValuesOfCorrectTypeRule.mjs +30 -0
  351. package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
  352. package/validation/rules/VariablesAreInputTypesRule.js +33 -0
  353. package/validation/rules/VariablesAreInputTypesRule.mjs +32 -0
  354. package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
  355. package/validation/rules/VariablesInAllowedPositionRule.js +35 -1
  356. package/validation/rules/VariablesInAllowedPositionRule.mjs +34 -1
  357. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
  358. package/validation/rules/custom/NoDeprecatedCustomRule.js +42 -0
  359. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +41 -0
  360. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
  361. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +29 -0
  362. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +28 -0
  363. package/validation/specifiedRules.d.ts +2 -3
  364. package/validation/specifiedRules.js +2 -3
  365. package/validation/specifiedRules.mjs +2 -3
  366. package/validation/validate.d.ts +70 -9
  367. package/validation/validate.js +63 -7
  368. package/validation/validate.mjs +63 -7
  369. package/version.d.ts +3 -6
  370. package/version.js +6 -8
  371. package/version.mjs +5 -8
@@ -17,6 +17,8 @@ var _introspection = require('../../type/introspection.js');
17
17
 
18
18
  var _scalars = require('../../type/scalars.js');
19
19
 
20
+ /** @category Validation Rules */
21
+
20
22
  /**
21
23
  * Known type names
22
24
  *
@@ -24,6 +26,33 @@ var _scalars = require('../../type/scalars.js');
24
26
  * variable definitions and fragment conditions) are defined by the type schema.
25
27
  *
26
28
  * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
29
+ * @param context - The validation context used while checking the document.
30
+ * @returns A visitor that reports validation errors for this rule.
31
+ * @example
32
+ * ```ts
33
+ * import { buildSchema, parse, validate } from 'graphql';
34
+ * import { KnownTypeNamesRule } from 'graphql/validation';
35
+ *
36
+ * const schema = buildSchema(`
37
+ * type Query {
38
+ * name: String
39
+ * }
40
+ * `);
41
+ *
42
+ * const invalidDocument = parse(`
43
+ * fragment Bad on Missing { name }
44
+ * `);
45
+ * const invalidErrors = validate(schema, invalidDocument, [KnownTypeNamesRule]);
46
+ *
47
+ * invalidErrors.length; // => 1
48
+ *
49
+ * const validDocument = parse(`
50
+ * fragment Good on Query { name }
51
+ * `);
52
+ * const validErrors = validate(schema, validDocument, [KnownTypeNamesRule]);
53
+ *
54
+ * validErrors; // => []
55
+ * ```
27
56
  */
28
57
  function KnownTypeNamesRule(context) {
29
58
  const schema = context.getSchema();
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { didYouMean } from '../../jsutils/didYouMean.mjs';
2
3
  import { suggestionList } from '../../jsutils/suggestionList.mjs';
3
4
  import { GraphQLError } from '../../error/GraphQLError.mjs';
@@ -16,6 +17,33 @@ import { specifiedScalarTypes } from '../../type/scalars.mjs';
16
17
  * variable definitions and fragment conditions) are defined by the type schema.
17
18
  *
18
19
  * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
20
+ * @param context - The validation context used while checking the document.
21
+ * @returns A visitor that reports validation errors for this rule.
22
+ * @example
23
+ * ```ts
24
+ * import { buildSchema, parse, validate } from 'graphql';
25
+ * import { KnownTypeNamesRule } from 'graphql/validation';
26
+ *
27
+ * const schema = buildSchema(`
28
+ * type Query {
29
+ * name: String
30
+ * }
31
+ * `);
32
+ *
33
+ * const invalidDocument = parse(`
34
+ * fragment Bad on Missing { name }
35
+ * `);
36
+ * const invalidErrors = validate(schema, invalidDocument, [KnownTypeNamesRule]);
37
+ *
38
+ * invalidErrors.length; // => 1
39
+ *
40
+ * const validDocument = parse(`
41
+ * fragment Good on Query { name }
42
+ * `);
43
+ * const validErrors = validate(schema, validDocument, [KnownTypeNamesRule]);
44
+ *
45
+ * validErrors; // => []
46
+ * ```
19
47
  */
20
48
  export function KnownTypeNamesRule(context) {
21
49
  const schema = context.getSchema();
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { ASTValidationContext } from '../ValidationContext';
3
4
  /**
@@ -7,6 +8,33 @@ import type { ASTValidationContext } from '../ValidationContext';
7
8
  * (the query short-hand) that it contains only that one operation definition.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
11
+ * @param context - The validation context used while checking the document.
12
+ * @returns A visitor that reports validation errors for this rule.
13
+ * @example
14
+ * ```ts
15
+ * import { buildSchema, parse, validate } from 'graphql';
16
+ * import { LoneAnonymousOperationRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * type Query {
20
+ * name: String
21
+ * }
22
+ * `);
23
+ *
24
+ * const invalidDocument = parse(`
25
+ * query { name } query Other { name }
26
+ * `);
27
+ * const invalidErrors = validate(schema, invalidDocument, [LoneAnonymousOperationRule]);
28
+ *
29
+ * invalidErrors.length; // => 1
30
+ *
31
+ * const validDocument = parse(`
32
+ * { name }
33
+ * `);
34
+ * const validErrors = validate(schema, validDocument, [LoneAnonymousOperationRule]);
35
+ *
36
+ * validErrors; // => []
37
+ * ```
10
38
  */
11
39
  export declare function LoneAnonymousOperationRule(
12
40
  context: ASTValidationContext,
@@ -9,6 +9,8 @@ var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
10
  var _kinds = require('../../language/kinds.js');
11
11
 
12
+ /** @category Validation Rules */
13
+
12
14
  /**
13
15
  * Lone anonymous operation
14
16
  *
@@ -16,6 +18,33 @@ var _kinds = require('../../language/kinds.js');
16
18
  * (the query short-hand) that it contains only that one operation definition.
17
19
  *
18
20
  * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
21
+ * @param context - The validation context used while checking the document.
22
+ * @returns A visitor that reports validation errors for this rule.
23
+ * @example
24
+ * ```ts
25
+ * import { buildSchema, parse, validate } from 'graphql';
26
+ * import { LoneAnonymousOperationRule } from 'graphql/validation';
27
+ *
28
+ * const schema = buildSchema(`
29
+ * type Query {
30
+ * name: String
31
+ * }
32
+ * `);
33
+ *
34
+ * const invalidDocument = parse(`
35
+ * query { name } query Other { name }
36
+ * `);
37
+ * const invalidErrors = validate(schema, invalidDocument, [LoneAnonymousOperationRule]);
38
+ *
39
+ * invalidErrors.length; // => 1
40
+ *
41
+ * const validDocument = parse(`
42
+ * { name }
43
+ * `);
44
+ * const validErrors = validate(schema, validDocument, [LoneAnonymousOperationRule]);
45
+ *
46
+ * validErrors; // => []
47
+ * ```
19
48
  */
20
49
  function LoneAnonymousOperationRule(context) {
21
50
  let operationCount = 0;
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
  import { Kind } from '../../language/kinds.mjs';
3
4
 
@@ -8,6 +9,33 @@ import { Kind } from '../../language/kinds.mjs';
8
9
  * (the query short-hand) that it contains only that one operation definition.
9
10
  *
10
11
  * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
12
+ * @param context - The validation context used while checking the document.
13
+ * @returns A visitor that reports validation errors for this rule.
14
+ * @example
15
+ * ```ts
16
+ * import { buildSchema, parse, validate } from 'graphql';
17
+ * import { LoneAnonymousOperationRule } from 'graphql/validation';
18
+ *
19
+ * const schema = buildSchema(`
20
+ * type Query {
21
+ * name: String
22
+ * }
23
+ * `);
24
+ *
25
+ * const invalidDocument = parse(`
26
+ * query { name } query Other { name }
27
+ * `);
28
+ * const invalidErrors = validate(schema, invalidDocument, [LoneAnonymousOperationRule]);
29
+ *
30
+ * invalidErrors.length; // => 1
31
+ *
32
+ * const validDocument = parse(`
33
+ * { name }
34
+ * `);
35
+ * const validErrors = validate(schema, validDocument, [LoneAnonymousOperationRule]);
36
+ *
37
+ * validErrors; // => []
38
+ * ```
11
39
  */
12
40
  export function LoneAnonymousOperationRule(context) {
13
41
  let operationCount = 0;
@@ -1,9 +1,30 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { SDLValidationContext } from '../ValidationContext';
3
4
  /**
4
5
  * Lone Schema definition
5
6
  *
6
7
  * A GraphQL document is only valid if it contains only one schema definition.
8
+ * @param context - The validation context used while checking the document.
9
+ * @returns A visitor that reports validation errors for this rule.
10
+ * @example
11
+ * ```ts
12
+ * import { buildSchema } from 'graphql';
13
+ * import { LoneSchemaDefinitionRule } from 'graphql/validation';
14
+ *
15
+ * const invalidSDL = `
16
+ * schema { query: Query } schema { query: Query } type Query { name: String }
17
+ * `;
18
+ *
19
+ * LoneSchemaDefinitionRule.name; // => 'LoneSchemaDefinitionRule'
20
+ * buildSchema(invalidSDL); // throws an error
21
+ *
22
+ * const validSDL = `
23
+ * schema { query: Query } type Query { name: String }
24
+ * `;
25
+ *
26
+ * buildSchema(validSDL); // does not throw
27
+ * ```
7
28
  */
8
29
  export declare function LoneSchemaDefinitionRule(
9
30
  context: SDLValidationContext,
@@ -7,10 +7,32 @@ exports.LoneSchemaDefinitionRule = LoneSchemaDefinitionRule;
7
7
 
8
8
  var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
+ /** @category Validation Rules */
11
+
10
12
  /**
11
13
  * Lone Schema definition
12
14
  *
13
15
  * A GraphQL document is only valid if it contains only one schema definition.
16
+ * @param context - The validation context used while checking the document.
17
+ * @returns A visitor that reports validation errors for this rule.
18
+ * @example
19
+ * ```ts
20
+ * import { buildSchema } from 'graphql';
21
+ * import { LoneSchemaDefinitionRule } from 'graphql/validation';
22
+ *
23
+ * const invalidSDL = `
24
+ * schema { query: Query } schema { query: Query } type Query { name: String }
25
+ * `;
26
+ *
27
+ * LoneSchemaDefinitionRule.name; // => 'LoneSchemaDefinitionRule'
28
+ * buildSchema(invalidSDL); // throws an error
29
+ *
30
+ * const validSDL = `
31
+ * schema { query: Query } type Query { name: String }
32
+ * `;
33
+ *
34
+ * buildSchema(validSDL); // does not throw
35
+ * ```
14
36
  */
15
37
  function LoneSchemaDefinitionRule(context) {
16
38
  var _ref, _ref2, _oldSchema$astNode;
@@ -1,9 +1,30 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
 
3
4
  /**
4
5
  * Lone Schema definition
5
6
  *
6
7
  * A GraphQL document is only valid if it contains only one schema definition.
8
+ * @param context - The validation context used while checking the document.
9
+ * @returns A visitor that reports validation errors for this rule.
10
+ * @example
11
+ * ```ts
12
+ * import { buildSchema } from 'graphql';
13
+ * import { LoneSchemaDefinitionRule } from 'graphql/validation';
14
+ *
15
+ * const invalidSDL = `
16
+ * schema { query: Query } schema { query: Query } type Query { name: String }
17
+ * `;
18
+ *
19
+ * LoneSchemaDefinitionRule.name; // => 'LoneSchemaDefinitionRule'
20
+ * buildSchema(invalidSDL); // throws an error
21
+ *
22
+ * const validSDL = `
23
+ * schema { query: Query } type Query { name: String }
24
+ * `;
25
+ *
26
+ * buildSchema(validSDL); // does not throw
27
+ * ```
7
28
  */
8
29
  export function LoneSchemaDefinitionRule(context) {
9
30
  var _ref, _ref2, _oldSchema$astNode;
@@ -1,5 +1,36 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { ASTValidationContext } from '../ValidationContext';
4
+ /**
5
+ * Implements the max introspection depth validation rule.
6
+ * @param context - The validation context used while checking the document.
7
+ * @returns A visitor that reports validation errors for this rule.
8
+ * @example
9
+ * ```ts
10
+ * import { buildSchema, parse, validate } from 'graphql';
11
+ * import { MaxIntrospectionDepthRule } from 'graphql/validation';
12
+ *
13
+ * const schema = buildSchema(`
14
+ * type Query {
15
+ * name: String
16
+ * }
17
+ * `);
18
+ *
19
+ * const invalidDocument = parse(`
20
+ * { __schema { types { fields { type { fields { type { fields { name } } } } } } } }
21
+ * `);
22
+ * const invalidErrors = validate(schema, invalidDocument, [MaxIntrospectionDepthRule]);
23
+ *
24
+ * invalidErrors.length; // => 1
25
+ *
26
+ * const validDocument = parse(`
27
+ * { __schema { queryType { name } } }
28
+ * `);
29
+ * const validErrors = validate(schema, validDocument, [MaxIntrospectionDepthRule]);
30
+ *
31
+ * validErrors; // => []
32
+ * ```
33
+ */
3
34
  export declare function MaxIntrospectionDepthRule(
4
35
  context: ASTValidationContext,
5
36
  ): ASTVisitor;
@@ -9,12 +9,45 @@ var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
10
  var _kinds = require('../../language/kinds.js');
11
11
 
12
+ /** @category Validation Rules */
12
13
  const MAX_LISTS_DEPTH = 3;
14
+ /**
15
+ * Implements the max introspection depth validation rule.
16
+ * @param context - The validation context used while checking the document.
17
+ * @returns A visitor that reports validation errors for this rule.
18
+ * @example
19
+ * ```ts
20
+ * import { buildSchema, parse, validate } from 'graphql';
21
+ * import { MaxIntrospectionDepthRule } from 'graphql/validation';
22
+ *
23
+ * const schema = buildSchema(`
24
+ * type Query {
25
+ * name: String
26
+ * }
27
+ * `);
28
+ *
29
+ * const invalidDocument = parse(`
30
+ * { __schema { types { fields { type { fields { type { fields { name } } } } } } } }
31
+ * `);
32
+ * const invalidErrors = validate(schema, invalidDocument, [MaxIntrospectionDepthRule]);
33
+ *
34
+ * invalidErrors.length; // => 1
35
+ *
36
+ * const validDocument = parse(`
37
+ * { __schema { queryType { name } } }
38
+ * `);
39
+ * const validErrors = validate(schema, validDocument, [MaxIntrospectionDepthRule]);
40
+ *
41
+ * validErrors; // => []
42
+ * ```
43
+ */
13
44
 
14
45
  function MaxIntrospectionDepthRule(context) {
15
46
  /**
16
47
  * Counts the depth of list fields in "__Type" recursively and
17
48
  * returns `true` if the limit has been reached.
49
+ *
50
+ * @internal
18
51
  */
19
52
  function checkDepth(node, visitedFragments = Object.create(null), depth = 0) {
20
53
  if (node.kind === _kinds.Kind.FRAGMENT_SPREAD) {
@@ -1,10 +1,44 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
  import { Kind } from '../../language/kinds.mjs';
3
4
  const MAX_LISTS_DEPTH = 3;
5
+ /**
6
+ * Implements the max introspection depth validation rule.
7
+ * @param context - The validation context used while checking the document.
8
+ * @returns A visitor that reports validation errors for this rule.
9
+ * @example
10
+ * ```ts
11
+ * import { buildSchema, parse, validate } from 'graphql';
12
+ * import { MaxIntrospectionDepthRule } from 'graphql/validation';
13
+ *
14
+ * const schema = buildSchema(`
15
+ * type Query {
16
+ * name: String
17
+ * }
18
+ * `);
19
+ *
20
+ * const invalidDocument = parse(`
21
+ * { __schema { types { fields { type { fields { type { fields { name } } } } } } } }
22
+ * `);
23
+ * const invalidErrors = validate(schema, invalidDocument, [MaxIntrospectionDepthRule]);
24
+ *
25
+ * invalidErrors.length; // => 1
26
+ *
27
+ * const validDocument = parse(`
28
+ * { __schema { queryType { name } } }
29
+ * `);
30
+ * const validErrors = validate(schema, validDocument, [MaxIntrospectionDepthRule]);
31
+ *
32
+ * validErrors; // => []
33
+ * ```
34
+ */
35
+
4
36
  export function MaxIntrospectionDepthRule(context) {
5
37
  /**
6
38
  * Counts the depth of list fields in "__Type" recursively and
7
39
  * returns `true` if the limit has been reached.
40
+ *
41
+ * @internal
8
42
  */
9
43
  function checkDepth(node, visitedFragments = Object.create(null), depth = 0) {
10
44
  if (node.kind === Kind.FRAGMENT_SPREAD) {
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { ASTValidationContext } from '../ValidationContext';
3
4
  /**
@@ -7,6 +8,33 @@ import type { ASTValidationContext } from '../ValidationContext';
7
8
  * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
11
+ * @param context - The validation context used while checking the document.
12
+ * @returns A visitor that reports validation errors for this rule.
13
+ * @example
14
+ * ```ts
15
+ * import { buildSchema, parse, validate } from 'graphql';
16
+ * import { NoFragmentCyclesRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * type Query {
20
+ * name: String
21
+ * }
22
+ * `);
23
+ *
24
+ * const invalidDocument = parse(`
25
+ * fragment A on Query { ...B } fragment B on Query { ...A } query { ...A }
26
+ * `);
27
+ * const invalidErrors = validate(schema, invalidDocument, [NoFragmentCyclesRule]);
28
+ *
29
+ * invalidErrors.length; // => 1
30
+ *
31
+ * const validDocument = parse(`
32
+ * fragment A on Query { name } query { ...A }
33
+ * `);
34
+ * const validErrors = validate(schema, validDocument, [NoFragmentCyclesRule]);
35
+ *
36
+ * validErrors; // => []
37
+ * ```
10
38
  */
11
39
  export declare function NoFragmentCyclesRule(
12
40
  context: ASTValidationContext,
@@ -7,6 +7,8 @@ exports.NoFragmentCyclesRule = NoFragmentCyclesRule;
7
7
 
8
8
  var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
+ /** @category Validation Rules */
11
+
10
12
  /**
11
13
  * No fragment cycles
12
14
  *
@@ -14,6 +16,33 @@ var _GraphQLError = require('../../error/GraphQLError.js');
14
16
  * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
15
17
  *
16
18
  * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
19
+ * @param context - The validation context used while checking the document.
20
+ * @returns A visitor that reports validation errors for this rule.
21
+ * @example
22
+ * ```ts
23
+ * import { buildSchema, parse, validate } from 'graphql';
24
+ * import { NoFragmentCyclesRule } from 'graphql/validation';
25
+ *
26
+ * const schema = buildSchema(`
27
+ * type Query {
28
+ * name: String
29
+ * }
30
+ * `);
31
+ *
32
+ * const invalidDocument = parse(`
33
+ * fragment A on Query { ...B } fragment B on Query { ...A } query { ...A }
34
+ * `);
35
+ * const invalidErrors = validate(schema, invalidDocument, [NoFragmentCyclesRule]);
36
+ *
37
+ * invalidErrors.length; // => 1
38
+ *
39
+ * const validDocument = parse(`
40
+ * fragment A on Query { name } query { ...A }
41
+ * `);
42
+ * const validErrors = validate(schema, validDocument, [NoFragmentCyclesRule]);
43
+ *
44
+ * validErrors; // => []
45
+ * ```
17
46
  */
18
47
  function NoFragmentCyclesRule(context) {
19
48
  // Tracks already visited fragments to maintain O(N) and to ensure that cycles
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
 
3
4
  /**
@@ -7,6 +8,33 @@ import { GraphQLError } from '../../error/GraphQLError.mjs';
7
8
  * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
11
+ * @param context - The validation context used while checking the document.
12
+ * @returns A visitor that reports validation errors for this rule.
13
+ * @example
14
+ * ```ts
15
+ * import { buildSchema, parse, validate } from 'graphql';
16
+ * import { NoFragmentCyclesRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * type Query {
20
+ * name: String
21
+ * }
22
+ * `);
23
+ *
24
+ * const invalidDocument = parse(`
25
+ * fragment A on Query { ...B } fragment B on Query { ...A } query { ...A }
26
+ * `);
27
+ * const invalidErrors = validate(schema, invalidDocument, [NoFragmentCyclesRule]);
28
+ *
29
+ * invalidErrors.length; // => 1
30
+ *
31
+ * const validDocument = parse(`
32
+ * fragment A on Query { name } query { ...A }
33
+ * `);
34
+ * const validErrors = validate(schema, validDocument, [NoFragmentCyclesRule]);
35
+ *
36
+ * validErrors; // => []
37
+ * ```
10
38
  */
11
39
  export function NoFragmentCyclesRule(context) {
12
40
  // Tracks already visited fragments to maintain O(N) and to ensure that cycles
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { ValidationContext } from '../ValidationContext';
3
4
  /**
@@ -7,6 +8,33 @@ import type { ValidationContext } from '../ValidationContext';
7
8
  * and via fragment spreads, are defined by that operation.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
11
+ * @param context - The validation context used while checking the document.
12
+ * @returns A visitor that reports validation errors for this rule.
13
+ * @example
14
+ * ```ts
15
+ * import { buildSchema, parse, validate } from 'graphql';
16
+ * import { NoUndefinedVariablesRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * type Query {
20
+ * field(arg: ID): String
21
+ * }
22
+ * `);
23
+ *
24
+ * const invalidDocument = parse(`
25
+ * query ($id: ID) { field(arg: $missing) }
26
+ * `);
27
+ * const invalidErrors = validate(schema, invalidDocument, [NoUndefinedVariablesRule]);
28
+ *
29
+ * invalidErrors.length; // => 1
30
+ *
31
+ * const validDocument = parse(`
32
+ * query ($id: ID) { field(arg: $id) }
33
+ * `);
34
+ * const validErrors = validate(schema, validDocument, [NoUndefinedVariablesRule]);
35
+ *
36
+ * validErrors; // => []
37
+ * ```
10
38
  */
11
39
  export declare function NoUndefinedVariablesRule(
12
40
  context: ValidationContext,
@@ -7,6 +7,8 @@ exports.NoUndefinedVariablesRule = NoUndefinedVariablesRule;
7
7
 
8
8
  var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
+ /** @category Validation Rules */
11
+
10
12
  /**
11
13
  * No undefined variables
12
14
  *
@@ -14,6 +16,33 @@ var _GraphQLError = require('../../error/GraphQLError.js');
14
16
  * and via fragment spreads, are defined by that operation.
15
17
  *
16
18
  * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
19
+ * @param context - The validation context used while checking the document.
20
+ * @returns A visitor that reports validation errors for this rule.
21
+ * @example
22
+ * ```ts
23
+ * import { buildSchema, parse, validate } from 'graphql';
24
+ * import { NoUndefinedVariablesRule } from 'graphql/validation';
25
+ *
26
+ * const schema = buildSchema(`
27
+ * type Query {
28
+ * field(arg: ID): String
29
+ * }
30
+ * `);
31
+ *
32
+ * const invalidDocument = parse(`
33
+ * query ($id: ID) { field(arg: $missing) }
34
+ * `);
35
+ * const invalidErrors = validate(schema, invalidDocument, [NoUndefinedVariablesRule]);
36
+ *
37
+ * invalidErrors.length; // => 1
38
+ *
39
+ * const validDocument = parse(`
40
+ * query ($id: ID) { field(arg: $id) }
41
+ * `);
42
+ * const validErrors = validate(schema, validDocument, [NoUndefinedVariablesRule]);
43
+ *
44
+ * validErrors; // => []
45
+ * ```
17
46
  */
18
47
  function NoUndefinedVariablesRule(context) {
19
48
  let variableNameDefined = Object.create(null);
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
 
3
4
  /**
@@ -7,6 +8,33 @@ import { GraphQLError } from '../../error/GraphQLError.mjs';
7
8
  * and via fragment spreads, are defined by that operation.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
11
+ * @param context - The validation context used while checking the document.
12
+ * @returns A visitor that reports validation errors for this rule.
13
+ * @example
14
+ * ```ts
15
+ * import { buildSchema, parse, validate } from 'graphql';
16
+ * import { NoUndefinedVariablesRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * type Query {
20
+ * field(arg: ID): String
21
+ * }
22
+ * `);
23
+ *
24
+ * const invalidDocument = parse(`
25
+ * query ($id: ID) { field(arg: $missing) }
26
+ * `);
27
+ * const invalidErrors = validate(schema, invalidDocument, [NoUndefinedVariablesRule]);
28
+ *
29
+ * invalidErrors.length; // => 1
30
+ *
31
+ * const validDocument = parse(`
32
+ * query ($id: ID) { field(arg: $id) }
33
+ * `);
34
+ * const validErrors = validate(schema, validDocument, [NoUndefinedVariablesRule]);
35
+ *
36
+ * validErrors; // => []
37
+ * ```
10
38
  */
11
39
  export function NoUndefinedVariablesRule(context) {
12
40
  let variableNameDefined = Object.create(null);