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
package/type/validate.js CHANGED
@@ -22,12 +22,30 @@ var _introspection = require('./introspection.js');
22
22
 
23
23
  var _schema = require('./schema.js');
24
24
 
25
+ /** @category Validation */
26
+
25
27
  /**
26
28
  * Implements the "Type Validation" sub-sections of the specification's
27
29
  * "Type System" section.
28
30
  *
29
31
  * Validation runs synchronously, returning an array of encountered errors, or
30
32
  * an empty array if no errors were encountered and the Schema is valid.
33
+ * @param schema - GraphQL schema to use.
34
+ * @returns Schema validation errors, or an empty array when the schema is valid.
35
+ * @example
36
+ * ```ts
37
+ * import { validateSchema } from 'graphql/type';
38
+ * import { buildSchema } from 'graphql/utilities';
39
+ *
40
+ * const schema = buildSchema(`
41
+ * type Query {
42
+ * name: String
43
+ * }
44
+ * `);
45
+ * const errors = validateSchema(schema);
46
+ *
47
+ * errors; // => []
48
+ * ```
31
49
  */
32
50
  function validateSchema(schema) {
33
51
  // First check to ensure the provided value is in fact a GraphQLSchema.
@@ -50,6 +68,20 @@ function validateSchema(schema) {
50
68
  /**
51
69
  * Utility function which asserts a schema is valid by throwing an error if
52
70
  * it is invalid.
71
+ * @param schema - GraphQL schema to use.
72
+ * @example
73
+ * ```ts
74
+ * import { assertValidSchema } from 'graphql/type';
75
+ * import { buildSchema } from 'graphql/utilities';
76
+ *
77
+ * const schema = buildSchema(`
78
+ * type Query {
79
+ * name: String
80
+ * }
81
+ * `);
82
+ *
83
+ * assertValidSchema(schema); // does not throw
84
+ * ```
53
85
  */
54
86
 
55
87
  function assertValidSchema(schema) {
package/type/validate.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ /** @category Validation */
1
2
  import { inspect } from '../jsutils/inspect.mjs';
2
3
  import { GraphQLError } from '../error/GraphQLError.mjs';
3
4
  import { OperationTypeNode } from '../language/ast.mjs';
@@ -24,6 +25,22 @@ import { assertSchema } from './schema.mjs';
24
25
  *
25
26
  * Validation runs synchronously, returning an array of encountered errors, or
26
27
  * an empty array if no errors were encountered and the Schema is valid.
28
+ * @param schema - GraphQL schema to use.
29
+ * @returns Schema validation errors, or an empty array when the schema is valid.
30
+ * @example
31
+ * ```ts
32
+ * import { validateSchema } from 'graphql/type';
33
+ * import { buildSchema } from 'graphql/utilities';
34
+ *
35
+ * const schema = buildSchema(`
36
+ * type Query {
37
+ * name: String
38
+ * }
39
+ * `);
40
+ * const errors = validateSchema(schema);
41
+ *
42
+ * errors; // => []
43
+ * ```
27
44
  */
28
45
 
29
46
  export function validateSchema(schema) {
@@ -47,6 +64,20 @@ export function validateSchema(schema) {
47
64
  /**
48
65
  * Utility function which asserts a schema is valid by throwing an error if
49
66
  * it is invalid.
67
+ * @param schema - GraphQL schema to use.
68
+ * @example
69
+ * ```ts
70
+ * import { assertValidSchema } from 'graphql/type';
71
+ * import { buildSchema } from 'graphql/utilities';
72
+ *
73
+ * const schema = buildSchema(`
74
+ * type Query {
75
+ * name: String
76
+ * }
77
+ * `);
78
+ *
79
+ * assertValidSchema(schema); // does not throw
80
+ * ```
50
81
  */
51
82
 
52
83
  export function assertValidSchema(schema) {
@@ -1,3 +1,4 @@
1
+ /** @category Type Info */
1
2
  import type { Maybe } from '../jsutils/Maybe';
2
3
  import type { ASTNode, FieldNode } from '../language/ast';
3
4
  import type { ASTVisitor } from '../language/visitor';
@@ -28,6 +29,74 @@ export declare class TypeInfo {
28
29
  private _argument;
29
30
  private _enumValue;
30
31
  private _getFieldDef;
32
+ /**
33
+ * Creates a TypeInfo instance.
34
+ * @param schema - Schema used for type lookups.
35
+ * @param initialType - Optional type to use at the start of traversal.
36
+ * @param getFieldDefFn - Optional field definition lookup override.
37
+ * @example
38
+ * ```ts
39
+ * // Track field types during a visitWithTypeInfo traversal.
40
+ * import { parse, visit } from 'graphql/language';
41
+ * import { buildSchema } from 'graphql/utilities';
42
+ * import { TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
43
+ *
44
+ * const schema = buildSchema(`
45
+ * type Query {
46
+ * greeting: String
47
+ * }
48
+ * `);
49
+ * const typeInfo = new TypeInfo(schema);
50
+ * const seenTypes = [];
51
+ *
52
+ * visit(
53
+ * parse('{ greeting }'),
54
+ * visitWithTypeInfo(typeInfo, {
55
+ * Field: () => {
56
+ * seenTypes.push(String(typeInfo.getType()));
57
+ * },
58
+ * }),
59
+ * );
60
+ *
61
+ * seenTypes; // => ['String']
62
+ * ```
63
+ * @example
64
+ * ```ts
65
+ * // This variant starts from an initial type and supplies a field definition resolver.
66
+ * import { Kind } from 'graphql/language';
67
+ * import { GraphQLString } from 'graphql/type';
68
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
69
+ *
70
+ * const schema = buildSchema(`
71
+ * type Query {
72
+ * greeting: String
73
+ * }
74
+ * `);
75
+ * const typeInfo = new TypeInfo(schema, schema.getQueryType(), () => ({
76
+ * name: 'virtualGreeting',
77
+ * description: undefined,
78
+ * type: GraphQLString,
79
+ * args: [],
80
+ * resolve: undefined,
81
+ * subscribe: undefined,
82
+ * deprecationReason: undefined,
83
+ * extensions: Object.create(null),
84
+ * astNode: undefined,
85
+ * }));
86
+ *
87
+ * typeInfo.enter({
88
+ * kind: Kind.SELECTION_SET,
89
+ * selections: [],
90
+ * });
91
+ * typeInfo.enter({
92
+ * kind: Kind.FIELD,
93
+ * name: { kind: Kind.NAME, value: 'ignored' },
94
+ * });
95
+ *
96
+ * typeInfo.getFieldDef()?.name; // => 'virtualGreeting'
97
+ * String(typeInfo.getType()); // => 'String'
98
+ * ```
99
+ */
31
100
  constructor(
32
101
  schema: GraphQLSchema,
33
102
  /**
@@ -35,20 +104,360 @@ export declare class TypeInfo {
35
104
  * beginning somewhere other than documents.
36
105
  */
37
106
  initialType?: Maybe<GraphQLType>,
38
- /** @deprecated will be removed in 17.0.0 */
107
+ /**
108
+ * Deprecated field definition lookup override. Use TypeInfo's built-in
109
+ * field definition lookup instead because this hook will be removed in v17.
110
+ * @deprecated will be removed in 17.0.0
111
+ */
39
112
  getFieldDefFn?: GetFieldDefFn,
40
113
  );
114
+ /**
115
+ * Returns the value used by `Object.prototype.toString`.
116
+ * @returns The built-in string tag for this object.
117
+ */
41
118
  get [Symbol.toStringTag](): string;
119
+ /**
120
+ * Returns the current output type at this point in traversal.
121
+ * @returns The current output type, if known.
122
+ * @example
123
+ * ```ts
124
+ * import { parse, visit } from 'graphql/language';
125
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
126
+ *
127
+ * const schema = buildSchema(`
128
+ * type Query {
129
+ * viewer: User
130
+ * }
131
+ *
132
+ * type User {
133
+ * name: String
134
+ * }
135
+ * `);
136
+ * const typeInfo = new TypeInfo(schema);
137
+ * const fieldTypes = {};
138
+ *
139
+ * visit(
140
+ * parse('{ viewer { name } }'),
141
+ * visitWithTypeInfo(typeInfo, {
142
+ * Field: (node) => {
143
+ * fieldTypes[node.name.value] = String(typeInfo.getType());
144
+ * },
145
+ * }),
146
+ * );
147
+ *
148
+ * fieldTypes; // => { viewer: 'User', name: 'String' }
149
+ * ```
150
+ */
42
151
  getType(): Maybe<GraphQLOutputType>;
152
+ /**
153
+ * Returns the current parent composite type.
154
+ * @returns The current parent composite type, if known.
155
+ * @example
156
+ * ```ts
157
+ * import { parse, visit } from 'graphql/language';
158
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
159
+ *
160
+ * const schema = buildSchema(`
161
+ * type Query {
162
+ * viewer: User
163
+ * }
164
+ *
165
+ * type User {
166
+ * name: String
167
+ * }
168
+ * `);
169
+ * const typeInfo = new TypeInfo(schema);
170
+ * const parentTypes = {};
171
+ *
172
+ * visit(
173
+ * parse('{ viewer { name } }'),
174
+ * visitWithTypeInfo(typeInfo, {
175
+ * Field: (node) => {
176
+ * parentTypes[node.name.value] = String(typeInfo.getParentType());
177
+ * },
178
+ * }),
179
+ * );
180
+ *
181
+ * parentTypes; // => { viewer: 'Query', name: 'User' }
182
+ * ```
183
+ */
43
184
  getParentType(): Maybe<GraphQLCompositeType>;
185
+ /**
186
+ * Returns the current input type at this point in traversal.
187
+ * @returns The current input type, if known.
188
+ * @example
189
+ * ```ts
190
+ * import { parse, visit } from 'graphql/language';
191
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
192
+ *
193
+ * const schema = buildSchema(`
194
+ * type Query {
195
+ * reviews(stars: Int!, sort: Sort = NEWEST): [String]
196
+ * }
197
+ *
198
+ * enum Sort {
199
+ * NEWEST
200
+ * OLDEST
201
+ * }
202
+ * `);
203
+ * const typeInfo = new TypeInfo(schema);
204
+ * const inputTypes = {};
205
+ *
206
+ * visit(
207
+ * parse('{ reviews(stars: 5, sort: OLDEST) }'),
208
+ * visitWithTypeInfo(typeInfo, {
209
+ * Argument: (node) => {
210
+ * inputTypes[node.name.value] = String(typeInfo.getInputType());
211
+ * },
212
+ * }),
213
+ * );
214
+ *
215
+ * inputTypes; // => { stars: 'Int!', sort: 'Sort' }
216
+ * ```
217
+ */
44
218
  getInputType(): Maybe<GraphQLInputType>;
219
+ /**
220
+ * Returns the parent input type for the current input position.
221
+ * @returns The parent input type, if known.
222
+ * @example
223
+ * ```ts
224
+ * import { parse, visit } from 'graphql/language';
225
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
226
+ *
227
+ * const schema = buildSchema(`
228
+ * input ReviewFilter {
229
+ * stars: Int!
230
+ * }
231
+ *
232
+ * type Query {
233
+ * reviews(filter: ReviewFilter): [String]
234
+ * }
235
+ * `);
236
+ * const typeInfo = new TypeInfo(schema);
237
+ * const parentInputTypes = {};
238
+ *
239
+ * visit(
240
+ * parse('{ reviews(filter: { stars: 5 }) }'),
241
+ * visitWithTypeInfo(typeInfo, {
242
+ * ObjectField: (node) => {
243
+ * parentInputTypes[node.name.value] = String(typeInfo.getParentInputType());
244
+ * },
245
+ * }),
246
+ * );
247
+ *
248
+ * parentInputTypes; // => { stars: 'ReviewFilter' }
249
+ * ```
250
+ */
45
251
  getParentInputType(): Maybe<GraphQLInputType>;
252
+ /**
253
+ * Returns the current field definition.
254
+ * @returns The current field definition, if known.
255
+ * @example
256
+ * ```ts
257
+ * import { parse, visit } from 'graphql/language';
258
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
259
+ *
260
+ * const schema = buildSchema(`
261
+ * type Query {
262
+ * greeting: String
263
+ * }
264
+ * `);
265
+ * const typeInfo = new TypeInfo(schema);
266
+ * let fieldName;
267
+ *
268
+ * visit(
269
+ * parse('{ greeting }'),
270
+ * visitWithTypeInfo(typeInfo, {
271
+ * Field: () => {
272
+ * fieldName = typeInfo.getFieldDef()?.name;
273
+ * },
274
+ * }),
275
+ * );
276
+ *
277
+ * fieldName; // => 'greeting'
278
+ * ```
279
+ */
46
280
  getFieldDef(): Maybe<GraphQLField<unknown, unknown>>;
281
+ /**
282
+ * Returns the default value for the current input position.
283
+ * @returns The current default value, if one is available.
284
+ * @example
285
+ * ```ts
286
+ * import { parse, visit } from 'graphql/language';
287
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
288
+ *
289
+ * const schema = buildSchema(`
290
+ * type Query {
291
+ * reviews(limit: Int = 10): [String]
292
+ * }
293
+ * `);
294
+ * const typeInfo = new TypeInfo(schema);
295
+ * let defaultLimit;
296
+ *
297
+ * visit(
298
+ * parse('{ reviews(limit: 5) }'),
299
+ * visitWithTypeInfo(typeInfo, {
300
+ * Argument: () => {
301
+ * defaultLimit = typeInfo.getDefaultValue();
302
+ * },
303
+ * }),
304
+ * );
305
+ *
306
+ * defaultLimit; // => 10
307
+ * ```
308
+ */
47
309
  getDefaultValue(): Maybe<unknown>;
310
+ /**
311
+ * Returns the current directive definition.
312
+ * @returns The current directive definition, if known.
313
+ * @example
314
+ * ```ts
315
+ * import { parse, visit } from 'graphql/language';
316
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
317
+ *
318
+ * const schema = buildSchema(`
319
+ * type Query {
320
+ * greeting: String
321
+ * }
322
+ * `);
323
+ * const typeInfo = new TypeInfo(schema);
324
+ * let directiveName;
325
+ *
326
+ * visit(
327
+ * parse('{ greeting @include(if: true) }'),
328
+ * visitWithTypeInfo(typeInfo, {
329
+ * Directive: () => {
330
+ * directiveName = typeInfo.getDirective()?.name;
331
+ * },
332
+ * }),
333
+ * );
334
+ *
335
+ * directiveName; // => 'include'
336
+ * ```
337
+ */
48
338
  getDirective(): Maybe<GraphQLDirective>;
339
+ /**
340
+ * Returns the current argument definition.
341
+ * @returns The current argument definition, if known.
342
+ * @example
343
+ * ```ts
344
+ * import { parse, visit } from 'graphql/language';
345
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
346
+ *
347
+ * const schema = buildSchema(`
348
+ * type Query {
349
+ * reviews(limit: Int = 10): [String]
350
+ * }
351
+ * `);
352
+ * const typeInfo = new TypeInfo(schema);
353
+ * let argumentName;
354
+ *
355
+ * visit(
356
+ * parse('{ reviews(limit: 5) }'),
357
+ * visitWithTypeInfo(typeInfo, {
358
+ * Argument: () => {
359
+ * argumentName = typeInfo.getArgument()?.name;
360
+ * },
361
+ * }),
362
+ * );
363
+ *
364
+ * argumentName; // => 'limit'
365
+ * ```
366
+ */
49
367
  getArgument(): Maybe<GraphQLArgument>;
368
+ /**
369
+ * Returns the current enum value definition.
370
+ * @returns The current enum value definition, if known.
371
+ * @example
372
+ * ```ts
373
+ * import { parse, visit } from 'graphql/language';
374
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
375
+ *
376
+ * const schema = buildSchema(`
377
+ * enum Sort {
378
+ * NEWEST
379
+ * OLDEST
380
+ * }
381
+ *
382
+ * type Query {
383
+ * reviews(sort: Sort = NEWEST): [String]
384
+ * }
385
+ * `);
386
+ * const typeInfo = new TypeInfo(schema);
387
+ * let enumValueName;
388
+ *
389
+ * visit(
390
+ * parse('{ reviews(sort: OLDEST) }'),
391
+ * visitWithTypeInfo(typeInfo, {
392
+ * EnumValue: () => {
393
+ * enumValueName = typeInfo.getEnumValue()?.name;
394
+ * },
395
+ * }),
396
+ * );
397
+ *
398
+ * enumValueName; // => 'OLDEST'
399
+ * ```
400
+ */
50
401
  getEnumValue(): Maybe<GraphQLEnumValue>;
402
+ /**
403
+ * Updates this TypeInfo instance for an entered AST node.
404
+ * @param node - AST node being entered.
405
+ * @returns Nothing.
406
+ * @example
407
+ * ```ts
408
+ * import { Kind, parse } from 'graphql/language';
409
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
410
+ *
411
+ * const schema = buildSchema(`
412
+ * type Query {
413
+ * greeting: String
414
+ * }
415
+ * `);
416
+ * const document = parse('{ greeting }');
417
+ * const operation = document.definitions[0];
418
+ * const selectionSet = operation.selectionSet;
419
+ * const field = selectionSet.selections[0];
420
+ * const typeInfo = new TypeInfo(schema);
421
+ *
422
+ * typeInfo.enter(operation);
423
+ * typeInfo.enter(selectionSet);
424
+ * typeInfo.enter(field);
425
+ *
426
+ * field.kind; // => Kind.FIELD
427
+ * typeInfo.getParentType()?.name; // => 'Query'
428
+ * String(typeInfo.getType()); // => 'String'
429
+ * ```
430
+ */
51
431
  enter(node: ASTNode): void;
432
+ /**
433
+ * Updates this TypeInfo instance for a left AST node.
434
+ * @param node - AST node being entered.
435
+ * @returns Nothing.
436
+ * @example
437
+ * ```ts
438
+ * import { parse } from 'graphql/language';
439
+ * import { buildSchema, TypeInfo } from 'graphql/utilities';
440
+ *
441
+ * const schema = buildSchema(`
442
+ * type Query {
443
+ * greeting: String
444
+ * }
445
+ * `);
446
+ * const document = parse('{ greeting }');
447
+ * const operation = document.definitions[0];
448
+ * const selectionSet = operation.selectionSet;
449
+ * const field = selectionSet.selections[0];
450
+ * const typeInfo = new TypeInfo(schema);
451
+ *
452
+ * typeInfo.enter(operation);
453
+ * typeInfo.enter(selectionSet);
454
+ * typeInfo.enter(field);
455
+ * String(typeInfo.getType()); // => 'String'
456
+ *
457
+ * typeInfo.leave(field);
458
+ * typeInfo.getType(); // => undefined
459
+ * ```
460
+ */
52
461
  leave(node: ASTNode): void;
53
462
  }
54
463
  declare type GetFieldDefFn = (
@@ -59,6 +468,37 @@ declare type GetFieldDefFn = (
59
468
  /**
60
469
  * Creates a new visitor instance which maintains a provided TypeInfo instance
61
470
  * along with visiting visitor.
471
+ * @param typeInfo - TypeInfo instance to update during traversal.
472
+ * @param visitor - Visitor callbacks to wrap with TypeInfo updates.
473
+ * @returns A visitor that keeps TypeInfo in sync while delegating callbacks.
474
+ * @example
475
+ * ```ts
476
+ * import { parse, visit } from 'graphql/language';
477
+ * import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
478
+ *
479
+ * const schema = buildSchema(`
480
+ * type Query {
481
+ * greeting: String
482
+ * }
483
+ * `);
484
+ * const typeInfo = new TypeInfo(schema);
485
+ * const fields = [];
486
+ *
487
+ * visit(
488
+ * parse('{ greeting }'),
489
+ * visitWithTypeInfo(typeInfo, {
490
+ * Field: (node) => {
491
+ * fields.push({
492
+ * name: node.name.value,
493
+ * parentType: String(typeInfo.getParentType()),
494
+ * type: String(typeInfo.getType()),
495
+ * });
496
+ * },
497
+ * }),
498
+ * );
499
+ *
500
+ * fields; // => [{ name: 'greeting', parentType: 'Query', type: 'String' }]
501
+ * ```
62
502
  */
63
503
  export declare function visitWithTypeInfo(
64
504
  typeInfo: TypeInfo,