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
@@ -1,3 +1,4 @@
1
+ /** @category Validation Context */
1
2
  import { Kind } from '../language/kinds.mjs';
2
3
  import { visit } from '../language/visitor.mjs';
3
4
  import { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.mjs';
@@ -6,6 +7,8 @@ import { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.mjs';
6
7
  * An instance of this class is passed as the "this" context to all validators,
7
8
  * allowing access to commonly useful contextual information from within a
8
9
  * validation rule.
10
+ *
11
+ * @internal
9
12
  */
10
13
  export class ASTValidationContext {
11
14
  constructor(ast, onError) {
@@ -103,6 +106,9 @@ export class ASTValidationContext {
103
106
  return fragments;
104
107
  }
105
108
  }
109
+ /** @internal */
110
+
111
+ /** @internal */
106
112
  export class SDLValidationContext extends ASTValidationContext {
107
113
  constructor(ast, schema, onError) {
108
114
  super(ast, onError);
@@ -117,7 +123,43 @@ export class SDLValidationContext extends ASTValidationContext {
117
123
  return this._schema;
118
124
  }
119
125
  }
126
+ /** @internal */
127
+
128
+ /** Validation context passed to query validation rules. */
120
129
  export class ValidationContext extends ASTValidationContext {
130
+ /**
131
+ * Creates a ValidationContext instance.
132
+ * @param schema - Schema used to validate the document.
133
+ * @param ast - Document AST being validated.
134
+ * @param typeInfo - TypeInfo instance used to track traversal state.
135
+ * @param onError - Callback invoked for each validation error.
136
+ * @example
137
+ * ```ts
138
+ * import { parse } from 'graphql/language';
139
+ * import { GraphQLError } from 'graphql/error';
140
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
141
+ * import { ValidationContext } from 'graphql/validation';
142
+ *
143
+ * const schema = buildSchema(`
144
+ * type Query {
145
+ * greeting: String
146
+ * }
147
+ * `);
148
+ * const document = parse('{ greeting }');
149
+ * const errors = [];
150
+ * const context = new ValidationContext(
151
+ * schema,
152
+ * document,
153
+ * new TypeInfo(schema),
154
+ * (error) => errors.push(error),
155
+ * );
156
+ *
157
+ * context.reportError(new GraphQLError('Example validation error.'));
158
+ *
159
+ * context.getSchema(); // => schema
160
+ * errors[0].message; // => 'Example validation error.'
161
+ * ```
162
+ */
121
163
  constructor(schema, ast, typeInfo, onError) {
122
164
  super(ast, onError);
123
165
  this._schema = schema;
@@ -125,14 +167,72 @@ export class ValidationContext extends ASTValidationContext {
125
167
  this._variableUsages = new Map();
126
168
  this._recursiveVariableUsages = new Map();
127
169
  }
170
+ /**
171
+ * Returns the value used by `Object.prototype.toString`.
172
+ * @returns The built-in string tag for this object.
173
+ */
128
174
 
129
175
  get [Symbol.toStringTag]() {
130
176
  return 'ValidationContext';
131
177
  }
178
+ /**
179
+ * Returns the schema being used by this validation context.
180
+ * @returns The schema being validated against.
181
+ * @example
182
+ * ```ts
183
+ * import { parse } from 'graphql/language';
184
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
185
+ * import { ValidationContext } from 'graphql/validation';
186
+ *
187
+ * const schema = buildSchema(`
188
+ * type Query {
189
+ * greeting: String
190
+ * }
191
+ * `);
192
+ * const context = new ValidationContext(
193
+ * schema,
194
+ * parse('{ greeting }'),
195
+ * new TypeInfo(schema),
196
+ * () => {},
197
+ * );
198
+ *
199
+ * context.getSchema().getQueryType()?.name; // => 'Query'
200
+ * ```
201
+ */
132
202
 
133
203
  getSchema() {
134
204
  return this._schema;
135
205
  }
206
+ /**
207
+ * Returns variable usages found directly within this node.
208
+ * @param node - The AST node to inspect or visit.
209
+ * @returns Variable usages found directly within this node.
210
+ * @example
211
+ * ```ts
212
+ * import { parse } from 'graphql/language';
213
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
214
+ * import { ValidationContext } from 'graphql/validation';
215
+ *
216
+ * const schema = buildSchema(`
217
+ * type Query {
218
+ * greeting(name: String): String
219
+ * }
220
+ * `);
221
+ * const document = parse('query ($name: String) { greeting(name: $name) }');
222
+ * const operation = document.definitions[0];
223
+ * const context = new ValidationContext(
224
+ * schema,
225
+ * document,
226
+ * new TypeInfo(schema),
227
+ * () => {},
228
+ * );
229
+ *
230
+ * const usages = context.getVariableUsages(operation);
231
+ *
232
+ * usages[0].node.name.value; // => 'name'
233
+ * String(usages[0].type); // => 'String'
234
+ * ```
235
+ */
136
236
 
137
237
  getVariableUsages(node) {
138
238
  let usages = this._variableUsages.get(node);
@@ -162,6 +262,49 @@ export class ValidationContext extends ASTValidationContext {
162
262
 
163
263
  return usages;
164
264
  }
265
+ /**
266
+ * Returns variable usages for an operation, including variables used by referenced fragments.
267
+ * @param operation - Operation definition to inspect.
268
+ * @returns Variable usages reachable from the operation.
269
+ * @example
270
+ * ```ts
271
+ * import { parse } from 'graphql/language';
272
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
273
+ * import { ValidationContext } from 'graphql/validation';
274
+ *
275
+ * const schema = buildSchema(`
276
+ * type Query {
277
+ * viewer: User
278
+ * }
279
+ *
280
+ * type User {
281
+ * name(prefix: String): String
282
+ * }
283
+ * `);
284
+ * const document = parse(`
285
+ * query ($prefix: String) {
286
+ * viewer {
287
+ * ...UserName
288
+ * }
289
+ * }
290
+ *
291
+ * fragment UserName on User {
292
+ * name(prefix: $prefix)
293
+ * }
294
+ * `);
295
+ * const operation = document.definitions[0];
296
+ * const context = new ValidationContext(
297
+ * schema,
298
+ * document,
299
+ * new TypeInfo(schema),
300
+ * () => {},
301
+ * );
302
+ *
303
+ * const usages = context.getRecursiveVariableUsages(operation);
304
+ *
305
+ * usages.map((usage) => usage.node.name.value); // => ['prefix']
306
+ * ```
307
+ */
165
308
 
166
309
  getRecursiveVariableUsages(operation) {
167
310
  let usages = this._recursiveVariableUsages.get(operation);
@@ -178,36 +321,294 @@ export class ValidationContext extends ASTValidationContext {
178
321
 
179
322
  return usages;
180
323
  }
324
+ /**
325
+ * Returns the current output type at this point in traversal.
326
+ * @returns The current output type, if known.
327
+ * @example
328
+ * ```ts
329
+ * import { parse, visit } from 'graphql/language';
330
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
331
+ * import { ValidationContext } from 'graphql/validation';
332
+ *
333
+ * const schema = buildSchema(`
334
+ * type Query {
335
+ * greeting: String
336
+ * }
337
+ * `);
338
+ * const document = parse('{ greeting }');
339
+ * const typeInfo = new TypeInfo(schema);
340
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
341
+ * let typeName;
342
+ *
343
+ * visit(
344
+ * document,
345
+ * visitWithTypeInfo(typeInfo, {
346
+ * Field: () => {
347
+ * typeName = String(context.getType());
348
+ * },
349
+ * }),
350
+ * );
351
+ *
352
+ * typeName; // => 'String'
353
+ * ```
354
+ */
181
355
 
182
356
  getType() {
183
357
  return this._typeInfo.getType();
184
358
  }
359
+ /**
360
+ * Returns the current parent composite type.
361
+ * @returns The current parent composite type, if known.
362
+ * @example
363
+ * ```ts
364
+ * import { parse, visit } from 'graphql/language';
365
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
366
+ * import { ValidationContext } from 'graphql/validation';
367
+ *
368
+ * const schema = buildSchema(`
369
+ * type Query {
370
+ * greeting: String
371
+ * }
372
+ * `);
373
+ * const document = parse('{ greeting }');
374
+ * const typeInfo = new TypeInfo(schema);
375
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
376
+ * let parentTypeName;
377
+ *
378
+ * visit(
379
+ * document,
380
+ * visitWithTypeInfo(typeInfo, {
381
+ * Field: () => {
382
+ * parentTypeName = context.getParentType()?.name;
383
+ * },
384
+ * }),
385
+ * );
386
+ *
387
+ * parentTypeName; // => 'Query'
388
+ * ```
389
+ */
185
390
 
186
391
  getParentType() {
187
392
  return this._typeInfo.getParentType();
188
393
  }
394
+ /**
395
+ * Returns the current input type at this point in traversal.
396
+ * @returns The current input type, if known.
397
+ * @example
398
+ * ```ts
399
+ * import { parse, visit } from 'graphql/language';
400
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
401
+ * import { ValidationContext } from 'graphql/validation';
402
+ *
403
+ * const schema = buildSchema(`
404
+ * type Query {
405
+ * reviews(limit: Int): [String]
406
+ * }
407
+ * `);
408
+ * const document = parse('{ reviews(limit: 5) }');
409
+ * const typeInfo = new TypeInfo(schema);
410
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
411
+ * let inputTypeName;
412
+ *
413
+ * visit(
414
+ * document,
415
+ * visitWithTypeInfo(typeInfo, {
416
+ * Argument: () => {
417
+ * inputTypeName = String(context.getInputType());
418
+ * },
419
+ * }),
420
+ * );
421
+ *
422
+ * inputTypeName; // => 'Int'
423
+ * ```
424
+ */
189
425
 
190
426
  getInputType() {
191
427
  return this._typeInfo.getInputType();
192
428
  }
429
+ /**
430
+ * Returns the parent input type for the current input position.
431
+ * @returns The parent input type, if known.
432
+ * @example
433
+ * ```ts
434
+ * import { parse, visit } from 'graphql/language';
435
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
436
+ * import { ValidationContext } from 'graphql/validation';
437
+ *
438
+ * const schema = buildSchema(`
439
+ * input ReviewFilter {
440
+ * stars: Int
441
+ * }
442
+ *
443
+ * type Query {
444
+ * reviews(filter: ReviewFilter): [String]
445
+ * }
446
+ * `);
447
+ * const document = parse('{ reviews(filter: { stars: 5 }) }');
448
+ * const typeInfo = new TypeInfo(schema);
449
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
450
+ * let parentInputTypeName;
451
+ *
452
+ * visit(
453
+ * document,
454
+ * visitWithTypeInfo(typeInfo, {
455
+ * ObjectField: () => {
456
+ * parentInputTypeName = String(context.getParentInputType());
457
+ * },
458
+ * }),
459
+ * );
460
+ *
461
+ * parentInputTypeName; // => 'ReviewFilter'
462
+ * ```
463
+ */
193
464
 
194
465
  getParentInputType() {
195
466
  return this._typeInfo.getParentInputType();
196
467
  }
468
+ /**
469
+ * Returns the current field definition.
470
+ * @returns The current field definition, if known.
471
+ * @example
472
+ * ```ts
473
+ * import { parse, visit } from 'graphql/language';
474
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
475
+ * import { ValidationContext } from 'graphql/validation';
476
+ *
477
+ * const schema = buildSchema(`
478
+ * type Query {
479
+ * greeting: String
480
+ * }
481
+ * `);
482
+ * const document = parse('{ greeting }');
483
+ * const typeInfo = new TypeInfo(schema);
484
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
485
+ * let fieldName;
486
+ *
487
+ * visit(
488
+ * document,
489
+ * visitWithTypeInfo(typeInfo, {
490
+ * Field: () => {
491
+ * fieldName = context.getFieldDef()?.name;
492
+ * },
493
+ * }),
494
+ * );
495
+ *
496
+ * fieldName; // => 'greeting'
497
+ * ```
498
+ */
197
499
 
198
500
  getFieldDef() {
199
501
  return this._typeInfo.getFieldDef();
200
502
  }
503
+ /**
504
+ * Returns the current directive definition.
505
+ * @returns The current directive definition, if known.
506
+ * @example
507
+ * ```ts
508
+ * import { parse, visit } from 'graphql/language';
509
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
510
+ * import { ValidationContext } from 'graphql/validation';
511
+ *
512
+ * const schema = buildSchema(`
513
+ * type Query {
514
+ * greeting: String
515
+ * }
516
+ * `);
517
+ * const document = parse('{ greeting @include(if: true) }');
518
+ * const typeInfo = new TypeInfo(schema);
519
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
520
+ * let directiveName;
521
+ *
522
+ * visit(
523
+ * document,
524
+ * visitWithTypeInfo(typeInfo, {
525
+ * Directive: () => {
526
+ * directiveName = context.getDirective()?.name;
527
+ * },
528
+ * }),
529
+ * );
530
+ *
531
+ * directiveName; // => 'include'
532
+ * ```
533
+ */
201
534
 
202
535
  getDirective() {
203
536
  return this._typeInfo.getDirective();
204
537
  }
538
+ /**
539
+ * Returns the current argument definition.
540
+ * @returns The current argument definition, if known.
541
+ * @example
542
+ * ```ts
543
+ * import { parse, visit } from 'graphql/language';
544
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
545
+ * import { ValidationContext } from 'graphql/validation';
546
+ *
547
+ * const schema = buildSchema(`
548
+ * type Query {
549
+ * reviews(limit: Int): [String]
550
+ * }
551
+ * `);
552
+ * const document = parse('{ reviews(limit: 5) }');
553
+ * const typeInfo = new TypeInfo(schema);
554
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
555
+ * let argumentName;
556
+ *
557
+ * visit(
558
+ * document,
559
+ * visitWithTypeInfo(typeInfo, {
560
+ * Argument: () => {
561
+ * argumentName = context.getArgument()?.name;
562
+ * },
563
+ * }),
564
+ * );
565
+ *
566
+ * argumentName; // => 'limit'
567
+ * ```
568
+ */
205
569
 
206
570
  getArgument() {
207
571
  return this._typeInfo.getArgument();
208
572
  }
573
+ /**
574
+ * Returns the current enum value definition.
575
+ * @returns The current enum value definition, if known.
576
+ * @example
577
+ * ```ts
578
+ * import { parse, visit } from 'graphql/language';
579
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
580
+ * import { ValidationContext } from 'graphql/validation';
581
+ *
582
+ * const schema = buildSchema(`
583
+ * enum Sort {
584
+ * NEWEST
585
+ * OLDEST
586
+ * }
587
+ *
588
+ * type Query {
589
+ * reviews(sort: Sort): [String]
590
+ * }
591
+ * `);
592
+ * const document = parse('{ reviews(sort: OLDEST) }');
593
+ * const typeInfo = new TypeInfo(schema);
594
+ * const context = new ValidationContext(schema, document, typeInfo, () => {});
595
+ * let enumValueName;
596
+ *
597
+ * visit(
598
+ * document,
599
+ * visitWithTypeInfo(typeInfo, {
600
+ * EnumValue: () => {
601
+ * enumValueName = context.getEnumValue()?.name;
602
+ * },
603
+ * }),
604
+ * );
605
+ *
606
+ * enumValueName; // => 'OLDEST'
607
+ * ```
608
+ */
209
609
 
210
610
  getEnumValue() {
211
611
  return this._typeInfo.getEnumValue();
212
612
  }
213
613
  }
614
+ /** A function that creates an AST visitor for validating a GraphQL document. */
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Validate GraphQL documents and schemas with the specified validation rules.
3
+ *
4
+ * These exports are also available from the root `graphql` package.
5
+ * @packageDocumentation
6
+ */
1
7
  export { validate } from './validate';
2
8
  export { ValidationContext } from './ValidationContext';
3
9
  export type { ValidationRule } from './ValidationContext';
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Validate GraphQL documents and schemas with the specified validation rules.
3
+ *
4
+ * These exports are also available from the root `graphql` package.
5
+ * @packageDocumentation
6
+ */
1
7
  export { validate } from './validate.mjs';
2
8
  export { ValidationContext } from './ValidationContext.mjs';
3
9
  // All validation rules in the GraphQL Specification.
@@ -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
  * operation or fragment definitions.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-Executable-Definitions
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 { ExecutableDefinitionsRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * type Query {
20
+ * name: String
21
+ * }
22
+ * `);
23
+ *
24
+ * const invalidDocument = parse(`
25
+ * type Extra { field: String }
26
+ * `);
27
+ * const invalidErrors = validate(schema, invalidDocument, [ExecutableDefinitionsRule]);
28
+ *
29
+ * invalidErrors.length; // => 1
30
+ *
31
+ * const validDocument = parse(`
32
+ * { name }
33
+ * `);
34
+ * const validErrors = validate(schema, validDocument, [ExecutableDefinitionsRule]);
35
+ *
36
+ * validErrors; // => []
37
+ * ```
10
38
  */
11
39
  export declare function ExecutableDefinitionsRule(
12
40
  context: ASTValidationContext,
@@ -11,6 +11,8 @@ var _kinds = require('../../language/kinds.js');
11
11
 
12
12
  var _predicates = require('../../language/predicates.js');
13
13
 
14
+ /** @category Validation Rules */
15
+
14
16
  /**
15
17
  * Executable definitions
16
18
  *
@@ -18,6 +20,33 @@ var _predicates = require('../../language/predicates.js');
18
20
  * operation or fragment definitions.
19
21
  *
20
22
  * See https://spec.graphql.org/draft/#sec-Executable-Definitions
23
+ * @param context - The validation context used while checking the document.
24
+ * @returns A visitor that reports validation errors for this rule.
25
+ * @example
26
+ * ```ts
27
+ * import { buildSchema, parse, validate } from 'graphql';
28
+ * import { ExecutableDefinitionsRule } from 'graphql/validation';
29
+ *
30
+ * const schema = buildSchema(`
31
+ * type Query {
32
+ * name: String
33
+ * }
34
+ * `);
35
+ *
36
+ * const invalidDocument = parse(`
37
+ * type Extra { field: String }
38
+ * `);
39
+ * const invalidErrors = validate(schema, invalidDocument, [ExecutableDefinitionsRule]);
40
+ *
41
+ * invalidErrors.length; // => 1
42
+ *
43
+ * const validDocument = parse(`
44
+ * { name }
45
+ * `);
46
+ * const validErrors = validate(schema, validDocument, [ExecutableDefinitionsRule]);
47
+ *
48
+ * validErrors; // => []
49
+ * ```
21
50
  */
22
51
  function ExecutableDefinitionsRule(context) {
23
52
  return {
@@ -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
  import { isExecutableDefinitionNode } from '../../language/predicates.mjs';
@@ -9,6 +10,33 @@ import { isExecutableDefinitionNode } from '../../language/predicates.mjs';
9
10
  * operation or fragment definitions.
10
11
  *
11
12
  * See https://spec.graphql.org/draft/#sec-Executable-Definitions
13
+ * @param context - The validation context used while checking the document.
14
+ * @returns A visitor that reports validation errors for this rule.
15
+ * @example
16
+ * ```ts
17
+ * import { buildSchema, parse, validate } from 'graphql';
18
+ * import { ExecutableDefinitionsRule } from 'graphql/validation';
19
+ *
20
+ * const schema = buildSchema(`
21
+ * type Query {
22
+ * name: String
23
+ * }
24
+ * `);
25
+ *
26
+ * const invalidDocument = parse(`
27
+ * type Extra { field: String }
28
+ * `);
29
+ * const invalidErrors = validate(schema, invalidDocument, [ExecutableDefinitionsRule]);
30
+ *
31
+ * invalidErrors.length; // => 1
32
+ *
33
+ * const validDocument = parse(`
34
+ * { name }
35
+ * `);
36
+ * const validErrors = validate(schema, validDocument, [ExecutableDefinitionsRule]);
37
+ *
38
+ * validErrors; // => []
39
+ * ```
12
40
  */
13
41
  export function ExecutableDefinitionsRule(context) {
14
42
  return {
@@ -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
  * parent type, or are an allowed meta field such as __typename.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-Field-Selections
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 { FieldsOnCorrectTypeRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * type Query {
20
+ * name: String
21
+ * }
22
+ * `);
23
+ *
24
+ * const invalidDocument = parse(`
25
+ * { missing }
26
+ * `);
27
+ * const invalidErrors = validate(schema, invalidDocument, [FieldsOnCorrectTypeRule]);
28
+ *
29
+ * invalidErrors.length; // => 1
30
+ *
31
+ * const validDocument = parse(`
32
+ * { name }
33
+ * `);
34
+ * const validErrors = validate(schema, validDocument, [FieldsOnCorrectTypeRule]);
35
+ *
36
+ * validErrors; // => []
37
+ * ```
10
38
  */
11
39
  export declare function FieldsOnCorrectTypeRule(
12
40
  context: ValidationContext,