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
@@ -14,10 +14,14 @@ var _visitor = require('../language/visitor.js');
14
14
 
15
15
  var _TypeInfo = require('../utilities/TypeInfo.js');
16
16
 
17
+ /** @category Validation Context */
18
+
17
19
  /**
18
20
  * An instance of this class is passed as the "this" context to all validators,
19
21
  * allowing access to commonly useful contextual information from within a
20
22
  * validation rule.
23
+ *
24
+ * @internal
21
25
  */
22
26
  class ASTValidationContext {
23
27
  constructor(ast, onError) {
@@ -115,9 +119,11 @@ class ASTValidationContext {
115
119
  return fragments;
116
120
  }
117
121
  }
122
+ /** @internal */
118
123
 
119
124
  exports.ASTValidationContext = ASTValidationContext;
120
125
 
126
+ /** @internal */
121
127
  class SDLValidationContext extends ASTValidationContext {
122
128
  constructor(ast, schema, onError) {
123
129
  super(ast, onError);
@@ -132,10 +138,45 @@ class SDLValidationContext extends ASTValidationContext {
132
138
  return this._schema;
133
139
  }
134
140
  }
141
+ /** @internal */
135
142
 
136
143
  exports.SDLValidationContext = SDLValidationContext;
137
144
 
145
+ /** Validation context passed to query validation rules. */
138
146
  class ValidationContext extends ASTValidationContext {
147
+ /**
148
+ * Creates a ValidationContext instance.
149
+ * @param schema - Schema used to validate the document.
150
+ * @param ast - Document AST being validated.
151
+ * @param typeInfo - TypeInfo instance used to track traversal state.
152
+ * @param onError - Callback invoked for each validation error.
153
+ * @example
154
+ * ```ts
155
+ * import { parse } from 'graphql/language';
156
+ * import { GraphQLError } from 'graphql/error';
157
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
158
+ * import { ValidationContext } from 'graphql/validation';
159
+ *
160
+ * const schema = buildSchema(`
161
+ * type Query {
162
+ * greeting: String
163
+ * }
164
+ * `);
165
+ * const document = parse('{ greeting }');
166
+ * const errors = [];
167
+ * const context = new ValidationContext(
168
+ * schema,
169
+ * document,
170
+ * new TypeInfo(schema),
171
+ * (error) => errors.push(error),
172
+ * );
173
+ *
174
+ * context.reportError(new GraphQLError('Example validation error.'));
175
+ *
176
+ * context.getSchema(); // => schema
177
+ * errors[0].message; // => 'Example validation error.'
178
+ * ```
179
+ */
139
180
  constructor(schema, ast, typeInfo, onError) {
140
181
  super(ast, onError);
141
182
  this._schema = schema;
@@ -143,14 +184,72 @@ class ValidationContext extends ASTValidationContext {
143
184
  this._variableUsages = new Map();
144
185
  this._recursiveVariableUsages = new Map();
145
186
  }
187
+ /**
188
+ * Returns the value used by `Object.prototype.toString`.
189
+ * @returns The built-in string tag for this object.
190
+ */
146
191
 
147
192
  get [Symbol.toStringTag]() {
148
193
  return 'ValidationContext';
149
194
  }
195
+ /**
196
+ * Returns the schema being used by this validation context.
197
+ * @returns The schema being validated against.
198
+ * @example
199
+ * ```ts
200
+ * import { parse } from 'graphql/language';
201
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
202
+ * import { ValidationContext } from 'graphql/validation';
203
+ *
204
+ * const schema = buildSchema(`
205
+ * type Query {
206
+ * greeting: String
207
+ * }
208
+ * `);
209
+ * const context = new ValidationContext(
210
+ * schema,
211
+ * parse('{ greeting }'),
212
+ * new TypeInfo(schema),
213
+ * () => {},
214
+ * );
215
+ *
216
+ * context.getSchema().getQueryType()?.name; // => 'Query'
217
+ * ```
218
+ */
150
219
 
151
220
  getSchema() {
152
221
  return this._schema;
153
222
  }
223
+ /**
224
+ * Returns variable usages found directly within this node.
225
+ * @param node - The AST node to inspect or visit.
226
+ * @returns Variable usages found directly within this node.
227
+ * @example
228
+ * ```ts
229
+ * import { parse } from 'graphql/language';
230
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
231
+ * import { ValidationContext } from 'graphql/validation';
232
+ *
233
+ * const schema = buildSchema(`
234
+ * type Query {
235
+ * greeting(name: String): String
236
+ * }
237
+ * `);
238
+ * const document = parse('query ($name: String) { greeting(name: $name) }');
239
+ * const operation = document.definitions[0];
240
+ * const context = new ValidationContext(
241
+ * schema,
242
+ * document,
243
+ * new TypeInfo(schema),
244
+ * () => {},
245
+ * );
246
+ *
247
+ * const usages = context.getVariableUsages(operation);
248
+ *
249
+ * usages[0].node.name.value; // => 'name'
250
+ * String(usages[0].type); // => 'String'
251
+ * ```
252
+ */
154
253
 
155
254
  getVariableUsages(node) {
156
255
  let usages = this._variableUsages.get(node);
@@ -180,6 +279,49 @@ class ValidationContext extends ASTValidationContext {
180
279
 
181
280
  return usages;
182
281
  }
282
+ /**
283
+ * Returns variable usages for an operation, including variables used by referenced fragments.
284
+ * @param operation - Operation definition to inspect.
285
+ * @returns Variable usages reachable from the operation.
286
+ * @example
287
+ * ```ts
288
+ * import { parse } from 'graphql/language';
289
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
290
+ * import { ValidationContext } from 'graphql/validation';
291
+ *
292
+ * const schema = buildSchema(`
293
+ * type Query {
294
+ * viewer: User
295
+ * }
296
+ *
297
+ * type User {
298
+ * name(prefix: String): String
299
+ * }
300
+ * `);
301
+ * const document = parse(`
302
+ * query ($prefix: String) {
303
+ * viewer {
304
+ * ...UserName
305
+ * }
306
+ * }
307
+ *
308
+ * fragment UserName on User {
309
+ * name(prefix: $prefix)
310
+ * }
311
+ * `);
312
+ * const operation = document.definitions[0];
313
+ * const context = new ValidationContext(
314
+ * schema,
315
+ * document,
316
+ * new TypeInfo(schema),
317
+ * () => {},
318
+ * );
319
+ *
320
+ * const usages = context.getRecursiveVariableUsages(operation);
321
+ *
322
+ * usages.map((usage) => usage.node.name.value); // => ['prefix']
323
+ * ```
324
+ */
183
325
 
184
326
  getRecursiveVariableUsages(operation) {
185
327
  let usages = this._recursiveVariableUsages.get(operation);
@@ -196,38 +338,296 @@ class ValidationContext extends ASTValidationContext {
196
338
 
197
339
  return usages;
198
340
  }
341
+ /**
342
+ * Returns the current output type at this point in traversal.
343
+ * @returns The current output type, if known.
344
+ * @example
345
+ * ```ts
346
+ * import { parse, visit } from 'graphql/language';
347
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
348
+ * import { ValidationContext } from 'graphql/validation';
349
+ *
350
+ * const schema = buildSchema(`
351
+ * type Query {
352
+ * greeting: String
353
+ * }
354
+ * `);
355
+ * const document = parse('{ greeting }');
356
+ * const typeInfo = new TypeInfo(schema);
357
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
358
+ * let typeName;
359
+ *
360
+ * visit(
361
+ * document,
362
+ * visitWithTypeInfo(typeInfo, {
363
+ * Field: () => {
364
+ * typeName = String(context.getType());
365
+ * },
366
+ * }),
367
+ * );
368
+ *
369
+ * typeName; // => 'String'
370
+ * ```
371
+ */
199
372
 
200
373
  getType() {
201
374
  return this._typeInfo.getType();
202
375
  }
376
+ /**
377
+ * Returns the current parent composite type.
378
+ * @returns The current parent composite type, if known.
379
+ * @example
380
+ * ```ts
381
+ * import { parse, visit } from 'graphql/language';
382
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
383
+ * import { ValidationContext } from 'graphql/validation';
384
+ *
385
+ * const schema = buildSchema(`
386
+ * type Query {
387
+ * greeting: String
388
+ * }
389
+ * `);
390
+ * const document = parse('{ greeting }');
391
+ * const typeInfo = new TypeInfo(schema);
392
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
393
+ * let parentTypeName;
394
+ *
395
+ * visit(
396
+ * document,
397
+ * visitWithTypeInfo(typeInfo, {
398
+ * Field: () => {
399
+ * parentTypeName = context.getParentType()?.name;
400
+ * },
401
+ * }),
402
+ * );
403
+ *
404
+ * parentTypeName; // => 'Query'
405
+ * ```
406
+ */
203
407
 
204
408
  getParentType() {
205
409
  return this._typeInfo.getParentType();
206
410
  }
411
+ /**
412
+ * Returns the current input type at this point in traversal.
413
+ * @returns The current input type, if known.
414
+ * @example
415
+ * ```ts
416
+ * import { parse, visit } from 'graphql/language';
417
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
418
+ * import { ValidationContext } from 'graphql/validation';
419
+ *
420
+ * const schema = buildSchema(`
421
+ * type Query {
422
+ * reviews(limit: Int): [String]
423
+ * }
424
+ * `);
425
+ * const document = parse('{ reviews(limit: 5) }');
426
+ * const typeInfo = new TypeInfo(schema);
427
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
428
+ * let inputTypeName;
429
+ *
430
+ * visit(
431
+ * document,
432
+ * visitWithTypeInfo(typeInfo, {
433
+ * Argument: () => {
434
+ * inputTypeName = String(context.getInputType());
435
+ * },
436
+ * }),
437
+ * );
438
+ *
439
+ * inputTypeName; // => 'Int'
440
+ * ```
441
+ */
207
442
 
208
443
  getInputType() {
209
444
  return this._typeInfo.getInputType();
210
445
  }
446
+ /**
447
+ * Returns the parent input type for the current input position.
448
+ * @returns The parent input type, if known.
449
+ * @example
450
+ * ```ts
451
+ * import { parse, visit } from 'graphql/language';
452
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
453
+ * import { ValidationContext } from 'graphql/validation';
454
+ *
455
+ * const schema = buildSchema(`
456
+ * input ReviewFilter {
457
+ * stars: Int
458
+ * }
459
+ *
460
+ * type Query {
461
+ * reviews(filter: ReviewFilter): [String]
462
+ * }
463
+ * `);
464
+ * const document = parse('{ reviews(filter: { stars: 5 }) }');
465
+ * const typeInfo = new TypeInfo(schema);
466
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
467
+ * let parentInputTypeName;
468
+ *
469
+ * visit(
470
+ * document,
471
+ * visitWithTypeInfo(typeInfo, {
472
+ * ObjectField: () => {
473
+ * parentInputTypeName = String(context.getParentInputType());
474
+ * },
475
+ * }),
476
+ * );
477
+ *
478
+ * parentInputTypeName; // => 'ReviewFilter'
479
+ * ```
480
+ */
211
481
 
212
482
  getParentInputType() {
213
483
  return this._typeInfo.getParentInputType();
214
484
  }
485
+ /**
486
+ * Returns the current field definition.
487
+ * @returns The current field definition, if known.
488
+ * @example
489
+ * ```ts
490
+ * import { parse, visit } from 'graphql/language';
491
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
492
+ * import { ValidationContext } from 'graphql/validation';
493
+ *
494
+ * const schema = buildSchema(`
495
+ * type Query {
496
+ * greeting: String
497
+ * }
498
+ * `);
499
+ * const document = parse('{ greeting }');
500
+ * const typeInfo = new TypeInfo(schema);
501
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
502
+ * let fieldName;
503
+ *
504
+ * visit(
505
+ * document,
506
+ * visitWithTypeInfo(typeInfo, {
507
+ * Field: () => {
508
+ * fieldName = context.getFieldDef()?.name;
509
+ * },
510
+ * }),
511
+ * );
512
+ *
513
+ * fieldName; // => 'greeting'
514
+ * ```
515
+ */
215
516
 
216
517
  getFieldDef() {
217
518
  return this._typeInfo.getFieldDef();
218
519
  }
520
+ /**
521
+ * Returns the current directive definition.
522
+ * @returns The current directive definition, if known.
523
+ * @example
524
+ * ```ts
525
+ * import { parse, visit } from 'graphql/language';
526
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
527
+ * import { ValidationContext } from 'graphql/validation';
528
+ *
529
+ * const schema = buildSchema(`
530
+ * type Query {
531
+ * greeting: String
532
+ * }
533
+ * `);
534
+ * const document = parse('{ greeting @include(if: true) }');
535
+ * const typeInfo = new TypeInfo(schema);
536
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
537
+ * let directiveName;
538
+ *
539
+ * visit(
540
+ * document,
541
+ * visitWithTypeInfo(typeInfo, {
542
+ * Directive: () => {
543
+ * directiveName = context.getDirective()?.name;
544
+ * },
545
+ * }),
546
+ * );
547
+ *
548
+ * directiveName; // => 'include'
549
+ * ```
550
+ */
219
551
 
220
552
  getDirective() {
221
553
  return this._typeInfo.getDirective();
222
554
  }
555
+ /**
556
+ * Returns the current argument definition.
557
+ * @returns The current argument definition, if known.
558
+ * @example
559
+ * ```ts
560
+ * import { parse, visit } from 'graphql/language';
561
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
562
+ * import { ValidationContext } from 'graphql/validation';
563
+ *
564
+ * const schema = buildSchema(`
565
+ * type Query {
566
+ * reviews(limit: Int): [String]
567
+ * }
568
+ * `);
569
+ * const document = parse('{ reviews(limit: 5) }');
570
+ * const typeInfo = new TypeInfo(schema);
571
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
572
+ * let argumentName;
573
+ *
574
+ * visit(
575
+ * document,
576
+ * visitWithTypeInfo(typeInfo, {
577
+ * Argument: () => {
578
+ * argumentName = context.getArgument()?.name;
579
+ * },
580
+ * }),
581
+ * );
582
+ *
583
+ * argumentName; // => 'limit'
584
+ * ```
585
+ */
223
586
 
224
587
  getArgument() {
225
588
  return this._typeInfo.getArgument();
226
589
  }
590
+ /**
591
+ * Returns the current enum value definition.
592
+ * @returns The current enum value definition, if known.
593
+ * @example
594
+ * ```ts
595
+ * import { parse, visit } from 'graphql/language';
596
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
597
+ * import { ValidationContext } from 'graphql/validation';
598
+ *
599
+ * const schema = buildSchema(`
600
+ * enum Sort {
601
+ * NEWEST
602
+ * OLDEST
603
+ * }
604
+ *
605
+ * type Query {
606
+ * reviews(sort: Sort): [String]
607
+ * }
608
+ * `);
609
+ * const document = parse('{ reviews(sort: OLDEST) }');
610
+ * const typeInfo = new TypeInfo(schema);
611
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
612
+ * let enumValueName;
613
+ *
614
+ * visit(
615
+ * document,
616
+ * visitWithTypeInfo(typeInfo, {
617
+ * EnumValue: () => {
618
+ * enumValueName = context.getEnumValue()?.name;
619
+ * },
620
+ * }),
621
+ * );
622
+ *
623
+ * enumValueName; // => 'OLDEST'
624
+ * ```
625
+ */
227
626
 
228
627
  getEnumValue() {
229
628
  return this._typeInfo.getEnumValue();
230
629
  }
231
630
  }
631
+ /** A function that creates an AST visitor for validating a GraphQL document. */
232
632
 
233
633
  exports.ValidationContext = ValidationContext;