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
@@ -49,10 +49,14 @@ var _collectFields = require('./collectFields.js');
49
49
 
50
50
  var _values = require('./values.js');
51
51
 
52
+ /** @category Execution */
53
+
52
54
  /**
53
55
  * A memoized collection of relevant subfields with regard to the return
54
56
  * type. Memoizing ensures the subfields are not repeatedly calculated, which
55
57
  * saves overhead when resolving lists of values.
58
+ *
59
+ * @internal
56
60
  */
57
61
  const collectSubfields = (0, _memoize.memoize3)(
58
62
  (exeContext, returnType, fieldNodes) =>
@@ -89,11 +93,10 @@ const collectSubfields = (0, _memoize.memoize3)(
89
93
  *
90
94
  * Namely, schema of the type system that is currently executing,
91
95
  * and the fragments defined in the query document
92
- */
93
-
94
- /**
96
+ *
95
97
  * @internal
96
98
  */
99
+
97
100
  class CollectedErrors {
98
101
  constructor() {
99
102
  this._errorPositions = new Set();
@@ -133,11 +136,9 @@ class CollectedErrors {
133
136
  }
134
137
  }
135
138
  /**
136
- * The result of GraphQL execution.
137
- *
138
- * - `errors` is included when any errors occurred as a non-empty array.
139
- * - `data` is the result of a successful execution of the query.
140
- * - `extensions` is reserved for adding non-standard properties.
139
+ * Represents the response produced by executing a GraphQL operation.
140
+ * @typeParam TData - Shape of the execution data payload.
141
+ * @typeParam TExtensions - Shape of the extensions payload.
141
142
  */
142
143
 
143
144
  /**
@@ -149,6 +150,139 @@ class CollectedErrors {
149
150
  *
150
151
  * If the arguments to this function do not result in a legal execution context,
151
152
  * a GraphQLError will be thrown immediately explaining the invalid input.
153
+ *
154
+ * Field errors are collected into the response instead of rejecting the
155
+ * returned promise. Only the field that produced the error and its descendants
156
+ * are omitted; sibling fields continue to execute. Errors from fields of
157
+ * non-null type may propagate to the nearest nullable parent, which can be the
158
+ * entire response data.
159
+ * @param args - The arguments used to perform the operation.
160
+ * @returns A completed execution result, or a promise resolving to one when execution is asynchronous.
161
+ * @example
162
+ * ```ts
163
+ * // Execute an asynchronous operation with variables.
164
+ * import { parse } from 'graphql/language';
165
+ * import { buildSchema } from 'graphql/utilities';
166
+ * import { execute } from 'graphql/execution';
167
+ *
168
+ * const schema = buildSchema(`
169
+ * type Query {
170
+ * greeting(name: String!): String
171
+ * }
172
+ * `);
173
+ *
174
+ * const result = await execute({
175
+ * schema,
176
+ * document: parse('query ($name: String!) { greeting(name: $name) }'),
177
+ * rootValue: {
178
+ * greeting: ({ name }) => `Hello, ${name}!`,
179
+ * },
180
+ * variableValues: { name: 'Ada' },
181
+ * });
182
+ *
183
+ * result; // => { data: { greeting: 'Hello, Ada!' } }
184
+ * ```
185
+ * @example
186
+ * ```ts
187
+ * // This variant supplies context plus custom field and type resolvers.
188
+ * import { parse } from 'graphql/language';
189
+ * import { buildSchema } from 'graphql/utilities';
190
+ * import { execute } from 'graphql/execution';
191
+ *
192
+ * const schema = buildSchema(`
193
+ * interface Named {
194
+ * name: String!
195
+ * }
196
+ *
197
+ * type User implements Named {
198
+ * name: String!
199
+ * }
200
+ *
201
+ * type Query {
202
+ * viewer: Named
203
+ * }
204
+ * `);
205
+ *
206
+ * const result = await execute({
207
+ * schema,
208
+ * document: parse('query Viewer { viewer { __typename name } }'),
209
+ * rootValue: { viewer: { kind: 'user', name: 'Ada' } },
210
+ * contextValue: { locale: 'en' },
211
+ * operationName: 'Viewer',
212
+ * fieldResolver: (source, _args, contextValue, info) => {
213
+ * contextValue.locale; // => 'en'
214
+ * return source[info.fieldName];
215
+ * },
216
+ * typeResolver: (value) => {
217
+ * return value.kind === 'user' ? 'User' : undefined;
218
+ * },
219
+ * });
220
+ *
221
+ * result; // => { data: { viewer: { __typename: 'User', name: 'Ada' } } }
222
+ * ```
223
+ * @example
224
+ * ```ts
225
+ * // This variant shows how resolver errors become field errors in the result.
226
+ * import { parse } from 'graphql/language';
227
+ * import { buildSchema } from 'graphql/utilities';
228
+ * import { execute } from 'graphql/execution';
229
+ *
230
+ * const schema = buildSchema(`
231
+ * type Query {
232
+ * broken: String
233
+ * }
234
+ * `);
235
+ * const document = parse('{ broken }');
236
+ *
237
+ * const result = await execute({
238
+ * schema,
239
+ * document,
240
+ * rootValue: {
241
+ * broken: () => {
242
+ * throw new Error('Resolver failed.');
243
+ * },
244
+ * },
245
+ * });
246
+ *
247
+ * result.data.broken; // => null
248
+ * result.errors[0].message; // => 'Resolver failed.'
249
+ * ```
250
+ * @example
251
+ * ```ts
252
+ * // This variant limits how many variable coercion errors are reported.
253
+ * import { parse } from 'graphql/language';
254
+ * import { buildSchema } from 'graphql/utilities';
255
+ * import { execute } from 'graphql/execution';
256
+ *
257
+ * const schema = buildSchema(`
258
+ * input ReviewInput {
259
+ * stars: Int!
260
+ * }
261
+ *
262
+ * type Query {
263
+ * review(input: ReviewInput!): String
264
+ * }
265
+ * `);
266
+ * const document = parse(`
267
+ * query ($first: ReviewInput!, $second: ReviewInput!) {
268
+ * first: review(input: $first)
269
+ * second: review(input: $second)
270
+ * }
271
+ * `);
272
+ *
273
+ * const result = await execute({
274
+ * schema,
275
+ * document,
276
+ * variableValues: {
277
+ * first: { stars: 'bad' },
278
+ * second: { stars: 'also bad' },
279
+ * },
280
+ * options: { maxCoercionErrors: 1 },
281
+ * });
282
+ *
283
+ * result.errors.length; // => 2
284
+ * result.errors[1].message; // matches /error limit reached/
285
+ * ```
152
286
  */
153
287
  function execute(args) {
154
288
  // Temporary for v15 to v16 migration. Remove in v17
@@ -168,17 +302,7 @@ function execute(args) {
168
302
  return {
169
303
  errors: exeContext,
170
304
  };
171
- } // Return a Promise that will eventually resolve to the data described by
172
- // The "Response" section of the GraphQL specification.
173
- //
174
- // If errors are encountered while executing a GraphQL field, only that
175
- // field and its descendants will be omitted, and sibling fields will still
176
- // be executed. An execution which encounters errors will still result in a
177
- // resolved Promise.
178
- //
179
- // Errors from sub-fields of a NonNull type may propagate to the top level,
180
- // at which point we still log the error and null the parent field, which
181
- // in this case is the entire response.
305
+ }
182
306
 
183
307
  try {
184
308
  const { operation } = exeContext;
@@ -204,6 +328,53 @@ function execute(args) {
204
328
  * Also implements the "Executing requests" section of the GraphQL specification.
205
329
  * However, it guarantees to complete synchronously (or throw an error) assuming
206
330
  * that all field resolvers are also synchronous.
331
+ * @param args - The arguments used to perform the operation.
332
+ * @returns Completed execution output for a synchronous operation.
333
+ * @example
334
+ * ```ts
335
+ * // Execute an operation synchronously when all resolvers are synchronous.
336
+ * import { parse } from 'graphql/language';
337
+ * import { buildSchema } from 'graphql/utilities';
338
+ * import { executeSync } from 'graphql/execution';
339
+ *
340
+ * const schema = buildSchema(`
341
+ * type Query {
342
+ * greeting: String
343
+ * }
344
+ * `);
345
+ * const document = parse('{ greeting }');
346
+ *
347
+ * const result = executeSync({
348
+ * schema,
349
+ * document,
350
+ * rootValue: {
351
+ * greeting: 'Hello',
352
+ * },
353
+ * });
354
+ *
355
+ * result; // => { data: { greeting: 'Hello' } }
356
+ * ```
357
+ * @example
358
+ * ```ts
359
+ * // This variant shows executeSync throwing when a resolver returns a promise.
360
+ * import { parse } from 'graphql/language';
361
+ * import { buildSchema } from 'graphql/utilities';
362
+ * import { executeSync } from 'graphql/execution';
363
+ *
364
+ * const schema = buildSchema(`
365
+ * type Query {
366
+ * greeting: String
367
+ * }
368
+ * `);
369
+ *
370
+ * executeSync({
371
+ * schema,
372
+ * document: parse('{ greeting }'),
373
+ * rootValue: {
374
+ * greeting: async () => 'Hello',
375
+ * },
376
+ * }); // throws an error
377
+ * ```
207
378
  */
208
379
 
209
380
  function executeSync(args) {
@@ -218,6 +389,8 @@ function executeSync(args) {
218
389
  /**
219
390
  * Given a completed execution context and data, build the `{ errors, data }`
220
391
  * response defined by the "Response" section of the GraphQL specification.
392
+ *
393
+ * @internal
221
394
  */
222
395
 
223
396
  function buildResponse(data, errors) {
@@ -232,7 +405,9 @@ function buildResponse(data, errors) {
232
405
  }
233
406
  /**
234
407
  * Essential assertions before executing to provide developer feedback for
235
- * improper use of the GraphQL library.
408
+ * improper use of the GraphQL library. This deprecated internal helper will be
409
+ * removed in v17; call `assertValidSchema()` and rely on TypeScript checks
410
+ * instead.
236
411
  *
237
412
  * @deprecated will be removed in v17 in favor of assertValidSchema() and TS checks
238
413
  * @internal
@@ -374,6 +549,8 @@ function buildExecutionContext(args) {
374
549
  }
375
550
  /**
376
551
  * Implements the "Executing operations" section of the spec.
552
+ *
553
+ * @internal
377
554
  */
378
555
 
379
556
  function executeOperation(exeContext, operation, rootValue) {
@@ -419,6 +596,8 @@ function executeOperation(exeContext, operation, rootValue) {
419
596
  /**
420
597
  * Implements the "Executing selection sets" section of the spec
421
598
  * for fields that must be executed serially.
599
+ *
600
+ * @internal
422
601
  */
423
602
 
424
603
  function executeFieldsSerially(
@@ -460,6 +639,8 @@ function executeFieldsSerially(
460
639
  /**
461
640
  * Implements the "Executing selection sets" section of the spec
462
641
  * for fields that may be executed in parallel.
642
+ *
643
+ * @internal
463
644
  */
464
645
 
465
646
  function executeFields(exeContext, parentType, sourceValue, path, fields) {
@@ -509,6 +690,8 @@ function executeFields(exeContext, parentType, sourceValue, path, fields) {
509
690
  * In particular, this function figures out the value that the field returns by
510
691
  * calling its resolve function, then calls completeValue to complete promises,
511
692
  * serialize scalars, or execute the sub-selection-set for objects.
693
+ *
694
+ * @internal
512
695
  */
513
696
 
514
697
  function executeField(exeContext, parentType, source, fieldNodes, path) {
@@ -588,9 +771,7 @@ function executeField(exeContext, parentType, source, fieldNodes, path) {
588
771
  return handleFieldError(error, returnType, path, exeContext);
589
772
  }
590
773
  }
591
- /**
592
- * @internal
593
- */
774
+ /** @internal */
594
775
 
595
776
  function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {
596
777
  // The resolve function's optional fourth argument is a collection of
@@ -640,6 +821,8 @@ function handleFieldError(error, returnType, path, exeContext) {
640
821
  *
641
822
  * Otherwise, the field type expects a sub-selection set, and will complete the
642
823
  * value by executing all sub-selections.
824
+ *
825
+ * @internal
643
826
  */
644
827
 
645
828
  function completeValue(exeContext, returnType, fieldNodes, info, path, result) {
@@ -723,6 +906,8 @@ function completeValue(exeContext, returnType, fieldNodes, info, path, result) {
723
906
  /**
724
907
  * Complete a list value by completing each item in the list with the
725
908
  * inner type
909
+ *
910
+ * @internal
726
911
  */
727
912
 
728
913
  function completeListValue(
@@ -801,6 +986,8 @@ function completeListValue(
801
986
  /**
802
987
  * Complete a Scalar or Enum by serializing to a valid value, returning
803
988
  * null if serialization is not possible.
989
+ *
990
+ * @internal
804
991
  */
805
992
 
806
993
  function completeLeafValue(returnType, result) {
@@ -821,6 +1008,8 @@ function completeLeafValue(returnType, result) {
821
1008
  /**
822
1009
  * Complete a value of an abstract type by determining the runtime object type
823
1010
  * of that value, then complete the value for that type.
1011
+ *
1012
+ * @internal
824
1013
  */
825
1014
 
826
1015
  function completeAbstractValue(
@@ -941,6 +1130,8 @@ function ensureValidRuntimeType(
941
1130
  }
942
1131
  /**
943
1132
  * Complete an Object value by executing all sub-selections.
1133
+ *
1134
+ * @internal
944
1135
  */
945
1136
 
946
1137
  function completeObjectValue(