graphql 16.13.2 → 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 +12 -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 +422 -55
  106. package/language/ast.js +103 -39
  107. package/language/ast.mjs +103 -39
  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 +29 -8
  112. package/language/directiveLocation.js +10 -6
  113. package/language/directiveLocation.mjs +10 -6
  114. package/language/index.d.ts +7 -0
  115. package/language/index.mjs +6 -0
  116. package/language/kinds.d.ts +58 -18
  117. package/language/kinds.js +10 -6
  118. package/language/kinds.mjs +10 -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 +248 -11
  126. package/language/parser.js +257 -0
  127. package/language/parser.mjs +257 -3
  128. package/language/predicates.d.ts +169 -0
  129. package/language/predicates.js +173 -1
  130. package/language/predicates.mjs +185 -1
  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 +32 -1
  139. package/language/printer.mjs +31 -1
  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 +202 -19
  162. package/type/directives.js +206 -20
  163. package/type/directives.mjs +206 -20
  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 +57 -1
  168. package/type/introspection.mjs +65 -1
  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 +69 -6
  189. package/utilities/buildASTSchema.mjs +69 -6
  190. package/utilities/buildClientSchema.d.ts +15 -0
  191. package/utilities/buildClientSchema.js +17 -0
  192. package/utilities/buildClientSchema.mjs +16 -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 +121 -6
  201. package/utilities/extendSchema.mjs +120 -6
  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 +148 -0
  206. package/utilities/getIntrospectionQuery.js +72 -38
  207. package/utilities/getIntrospectionQuery.mjs +72 -38
  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 +56 -0
  218. package/utilities/introspectionFromSchema.mjs +55 -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 +67 -0
  224. package/utilities/printSchema.mjs +68 -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 +51 -2
  243. package/utilities/valueFromAST.mjs +50 -2
  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 +33 -0
  266. package/validation/rules/KnownDirectivesRule.mjs +32 -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 +41 -0
  323. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +40 -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 +7 -9
  371. package/version.mjs +6 -9
@@ -25,8 +25,55 @@ var _GraphQLError = require('../error/GraphQLError.js');
25
25
 
26
26
  var _definition = require('../type/definition.js');
27
27
 
28
+ /** @category Values */
29
+
28
30
  /**
29
31
  * Coerces a JavaScript value given a GraphQL Input Type.
32
+ * @param inputValue - JavaScript value to coerce.
33
+ * @param type - GraphQL input type to coerce the value against.
34
+ * @param onError - Callback invoked for each coercion error.
35
+ * @returns Coerced value, or undefined if coercion failed and errors were reported.
36
+ * @example
37
+ * ```ts
38
+ * // Coerce runtime input values and throw on invalid input by default.
39
+ * import {
40
+ * GraphQLInputObjectType,
41
+ * GraphQLInt,
42
+ * GraphQLList,
43
+ * GraphQLNonNull,
44
+ * GraphQLString,
45
+ * } from 'graphql/type';
46
+ * import { coerceInputValue } from 'graphql/utilities';
47
+ *
48
+ * const ReviewInput = new GraphQLInputObjectType({
49
+ * name: 'ReviewInput',
50
+ * fields: {
51
+ * stars: { type: new GraphQLNonNull(GraphQLInt) },
52
+ * tags: { type: new GraphQLList(GraphQLString) },
53
+ * },
54
+ * });
55
+ *
56
+ * coerceInputValue({ stars: '5', tags: ['featured'] }, ReviewInput); // => { stars: 5, tags: ['featured'] }
57
+ * coerceInputValue({ stars: 'bad' }, ReviewInput); // throws an error
58
+ * ```
59
+ * @example
60
+ * ```ts
61
+ * // This variant collects coercion errors with a custom onError callback.
62
+ * import { GraphQLInt, GraphQLNonNull } from 'graphql/type';
63
+ * import { coerceInputValue } from 'graphql/utilities';
64
+ *
65
+ * const errors = [];
66
+ * const value = coerceInputValue(
67
+ * null,
68
+ * new GraphQLNonNull(GraphQLInt),
69
+ * (path, invalidValue, error) => {
70
+ * errors.push({ path, invalidValue, message: error.message });
71
+ * },
72
+ * );
73
+ *
74
+ * value; // => undefined
75
+ * errors; // => [ { path: [], invalidValue: null, message: 'Expected non-nullable type "Int!" not to be null.' } ]
76
+ * ```
30
77
  */
31
78
  function coerceInputValue(inputValue, type, onError = defaultOnError) {
32
79
  return coerceInputValueImpl(inputValue, type, onError, undefined);
@@ -1,3 +1,4 @@
1
+ /** @category Values */
1
2
  import { didYouMean } from '../jsutils/didYouMean.mjs';
2
3
  import { inspect } from '../jsutils/inspect.mjs';
3
4
  import { invariant } from '../jsutils/invariant.mjs';
@@ -16,6 +17,51 @@ import {
16
17
 
17
18
  /**
18
19
  * Coerces a JavaScript value given a GraphQL Input Type.
20
+ * @param inputValue - JavaScript value to coerce.
21
+ * @param type - GraphQL input type to coerce the value against.
22
+ * @param onError - Callback invoked for each coercion error.
23
+ * @returns Coerced value, or undefined if coercion failed and errors were reported.
24
+ * @example
25
+ * ```ts
26
+ * // Coerce runtime input values and throw on invalid input by default.
27
+ * import {
28
+ * GraphQLInputObjectType,
29
+ * GraphQLInt,
30
+ * GraphQLList,
31
+ * GraphQLNonNull,
32
+ * GraphQLString,
33
+ * } from 'graphql/type';
34
+ * import { coerceInputValue } from 'graphql/utilities';
35
+ *
36
+ * const ReviewInput = new GraphQLInputObjectType({
37
+ * name: 'ReviewInput',
38
+ * fields: {
39
+ * stars: { type: new GraphQLNonNull(GraphQLInt) },
40
+ * tags: { type: new GraphQLList(GraphQLString) },
41
+ * },
42
+ * });
43
+ *
44
+ * coerceInputValue({ stars: '5', tags: ['featured'] }, ReviewInput); // => { stars: 5, tags: ['featured'] }
45
+ * coerceInputValue({ stars: 'bad' }, ReviewInput); // throws an error
46
+ * ```
47
+ * @example
48
+ * ```ts
49
+ * // This variant collects coercion errors with a custom onError callback.
50
+ * import { GraphQLInt, GraphQLNonNull } from 'graphql/type';
51
+ * import { coerceInputValue } from 'graphql/utilities';
52
+ *
53
+ * const errors = [];
54
+ * const value = coerceInputValue(
55
+ * null,
56
+ * new GraphQLNonNull(GraphQLInt),
57
+ * (path, invalidValue, error) => {
58
+ * errors.push({ path, invalidValue, message: error.message });
59
+ * },
60
+ * );
61
+ *
62
+ * value; // => undefined
63
+ * errors; // => [ { path: [], invalidValue: null, message: 'Expected non-nullable type "Int!" not to be null.' } ]
64
+ * ```
19
65
  */
20
66
  export function coerceInputValue(inputValue, type, onError = defaultOnError) {
21
67
  return coerceInputValueImpl(inputValue, type, onError, undefined);
@@ -1,8 +1,20 @@
1
+ /** @category AST Utilities */
1
2
  import type { DocumentNode } from '../language/ast';
2
3
  /**
3
4
  * Provided a collection of ASTs, presumably each from different files,
4
5
  * concatenate the ASTs together into batched AST, useful for validating many
5
6
  * GraphQL source files which together represent one conceptual application.
7
+ * @param documents - Document ASTs to concatenate.
8
+ * @returns A document AST containing all definitions from the provided documents.
9
+ * @example
10
+ * ```ts
11
+ * import { parse } from 'graphql/language';
12
+ * import { concatAST } from 'graphql/utilities';
13
+ *
14
+ * const document = concatAST([parse('type Query { a: String }'), parse('type User { id: ID }')]);
15
+ *
16
+ * document.definitions.length; // => 2
17
+ * ```
6
18
  */
7
19
  export declare function concatAST(
8
20
  documents: ReadonlyArray<DocumentNode>,
@@ -7,10 +7,23 @@ exports.concatAST = concatAST;
7
7
 
8
8
  var _kinds = require('../language/kinds.js');
9
9
 
10
+ /** @category AST Utilities */
11
+
10
12
  /**
11
13
  * Provided a collection of ASTs, presumably each from different files,
12
14
  * concatenate the ASTs together into batched AST, useful for validating many
13
15
  * GraphQL source files which together represent one conceptual application.
16
+ * @param documents - Document ASTs to concatenate.
17
+ * @returns A document AST containing all definitions from the provided documents.
18
+ * @example
19
+ * ```ts
20
+ * import { parse } from 'graphql/language';
21
+ * import { concatAST } from 'graphql/utilities';
22
+ *
23
+ * const document = concatAST([parse('type Query { a: String }'), parse('type User { id: ID }')]);
24
+ *
25
+ * document.definitions.length; // => 2
26
+ * ```
14
27
  */
15
28
  function concatAST(documents) {
16
29
  const definitions = [];
@@ -1,8 +1,20 @@
1
+ /** @category AST Utilities */
1
2
  import { Kind } from '../language/kinds.mjs';
2
3
  /**
3
4
  * Provided a collection of ASTs, presumably each from different files,
4
5
  * concatenate the ASTs together into batched AST, useful for validating many
5
6
  * GraphQL source files which together represent one conceptual application.
7
+ * @param documents - Document ASTs to concatenate.
8
+ * @returns A document AST containing all definitions from the provided documents.
9
+ * @example
10
+ * ```ts
11
+ * import { parse } from 'graphql/language';
12
+ * import { concatAST } from 'graphql/utilities';
13
+ *
14
+ * const document = concatAST([parse('type Query { a: String }'), parse('type User { id: ID }')]);
15
+ *
16
+ * document.definitions.length; // => 2
17
+ * ```
6
18
  */
7
19
 
8
20
  export function concatAST(documents) {
@@ -1,3 +1,4 @@
1
+ /** @category Schema Construction */
1
2
  import type { DocumentNode } from '../language/ast';
2
3
  import type {
3
4
  GraphQLSchemaNormalizedConfig,
@@ -23,15 +24,67 @@ interface Options extends GraphQLSchemaValidationOptions {
23
24
  *
24
25
  * This algorithm copies the provided schema, applying extensions while
25
26
  * producing the copy. The original schema remains unaltered.
27
+ * @param schema - GraphQL schema to use.
28
+ * @param documentAST - The parsed GraphQL document AST.
29
+ * @param options - Optional configuration for this operation.
30
+ * @returns A new schema with the extensions and definitions applied.
31
+ * @example
32
+ * ```ts
33
+ * // Extend a schema with new fields and types.
34
+ * import { parse } from 'graphql/language';
35
+ * import { buildSchema, extendSchema } from 'graphql/utilities';
36
+ *
37
+ * const schema = buildSchema(`
38
+ * type Query {
39
+ * greeting: String
40
+ * }
41
+ * `);
42
+ * const extensionAST = parse(`
43
+ * extend type Query {
44
+ * farewell: String
45
+ * }
46
+ *
47
+ * type Review {
48
+ * body: String
49
+ * }
50
+ * `);
51
+ *
52
+ * const extendedSchema = extendSchema(schema, extensionAST);
53
+ *
54
+ * schema.getType('Review'); // => undefined
55
+ * extendedSchema.getType('Review')?.name; // => 'Review'
56
+ * Object.keys(extendedSchema.getQueryType().getFields()); // => ['greeting', 'farewell']
57
+ * ```
58
+ * @example
59
+ * ```ts
60
+ * // This variant bypasses validation for an otherwise invalid extension.
61
+ * import { parse } from 'graphql/language';
62
+ * import { buildSchema, extendSchema } from 'graphql/utilities';
63
+ *
64
+ * const schema = buildSchema(`
65
+ * type Query {
66
+ * greeting: String
67
+ * }
68
+ * `);
69
+ * const invalidExtension = parse(`
70
+ * extend type Missing {
71
+ * field: String
72
+ * }
73
+ * `);
74
+ *
75
+ * extendSchema(schema, invalidExtension); // throws an error
76
+ * extendSchema(schema, invalidExtension, {
77
+ * assumeValid: true,
78
+ * assumeValidSDL: true,
79
+ * }); // does not throw
80
+ * ```
26
81
  */
27
82
  export declare function extendSchema(
28
83
  schema: GraphQLSchema,
29
84
  documentAST: DocumentNode,
30
85
  options?: Options,
31
86
  ): GraphQLSchema;
32
- /**
33
- * @internal
34
- */
87
+ /** @internal */
35
88
  export declare function extendSchemaImpl(
36
89
  schemaConfig: GraphQLSchemaNormalizedConfig,
37
90
  documentAST: DocumentNode,
@@ -36,6 +36,8 @@ var _values = require('../execution/values.js');
36
36
 
37
37
  var _valueFromAST = require('./valueFromAST.js');
38
38
 
39
+ /** @category Schema Construction */
40
+
39
41
  /**
40
42
  * Produces a new schema given an existing schema and a document which may
41
43
  * contain GraphQL type extensions and definitions. The original schema will
@@ -47,6 +49,60 @@ var _valueFromAST = require('./valueFromAST.js');
47
49
  *
48
50
  * This algorithm copies the provided schema, applying extensions while
49
51
  * producing the copy. The original schema remains unaltered.
52
+ * @param schema - GraphQL schema to use.
53
+ * @param documentAST - The parsed GraphQL document AST.
54
+ * @param options - Optional configuration for this operation.
55
+ * @returns A new schema with the extensions and definitions applied.
56
+ * @example
57
+ * ```ts
58
+ * // Extend a schema with new fields and types.
59
+ * import { parse } from 'graphql/language';
60
+ * import { buildSchema, extendSchema } from 'graphql/utilities';
61
+ *
62
+ * const schema = buildSchema(`
63
+ * type Query {
64
+ * greeting: String
65
+ * }
66
+ * `);
67
+ * const extensionAST = parse(`
68
+ * extend type Query {
69
+ * farewell: String
70
+ * }
71
+ *
72
+ * type Review {
73
+ * body: String
74
+ * }
75
+ * `);
76
+ *
77
+ * const extendedSchema = extendSchema(schema, extensionAST);
78
+ *
79
+ * schema.getType('Review'); // => undefined
80
+ * extendedSchema.getType('Review')?.name; // => 'Review'
81
+ * Object.keys(extendedSchema.getQueryType().getFields()); // => ['greeting', 'farewell']
82
+ * ```
83
+ * @example
84
+ * ```ts
85
+ * // This variant bypasses validation for an otherwise invalid extension.
86
+ * import { parse } from 'graphql/language';
87
+ * import { buildSchema, extendSchema } from 'graphql/utilities';
88
+ *
89
+ * const schema = buildSchema(`
90
+ * type Query {
91
+ * greeting: String
92
+ * }
93
+ * `);
94
+ * const invalidExtension = parse(`
95
+ * extend type Missing {
96
+ * field: String
97
+ * }
98
+ * `);
99
+ *
100
+ * extendSchema(schema, invalidExtension); // throws an error
101
+ * extendSchema(schema, invalidExtension, {
102
+ * assumeValid: true,
103
+ * assumeValidSDL: true,
104
+ * }); // does not throw
105
+ * ```
50
106
  */
51
107
  function extendSchema(schema, documentAST, options) {
52
108
  (0, _schema.assertSchema)(schema);
@@ -69,16 +125,15 @@ function extendSchema(schema, documentAST, options) {
69
125
  ? schema
70
126
  : new _schema.GraphQLSchema(extendedConfig);
71
127
  }
72
- /**
73
- * @internal
74
- */
128
+ /** @internal */
75
129
 
76
130
  function extendSchemaImpl(schemaConfig, documentAST, options) {
77
131
  var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;
78
132
 
79
133
  // Collect the type definitions and extensions found in the document.
80
134
  const typeDefs = [];
81
- const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can
135
+ const typeExtensionsMap = Object.create(null);
136
+ const directiveExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can
82
137
  // have the same name. For example, a type named "skip".
83
138
 
84
139
  const directiveDefs = [];
@@ -101,6 +156,14 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
101
156
  : [def];
102
157
  } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {
103
158
  directiveDefs.push(def);
159
+ } else if (def.kind === _kinds.Kind.DIRECTIVE_EXTENSION) {
160
+ const extendedDirectiveName = def.name.value;
161
+ const existingDirectiveExtensions =
162
+ directiveExtensionsMap[extendedDirectiveName];
163
+ directiveExtensionsMap[extendedDirectiveName] =
164
+ existingDirectiveExtensions
165
+ ? existingDirectiveExtensions.concat([def])
166
+ : [def];
104
167
  }
105
168
  } // If this document contains no new types, extensions, or directives then
106
169
  // return the same unmodified GraphQLSchema instance.
@@ -108,6 +171,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
108
171
  if (
109
172
  Object.keys(typeExtensionsMap).length === 0 &&
110
173
  typeDefs.length === 0 &&
174
+ Object.keys(directiveExtensionsMap).length === 0 &&
111
175
  directiveDefs.length === 0 &&
112
176
  schemaExtensions.length === 0 &&
113
177
  schemaDef == null
@@ -132,6 +196,12 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
132
196
  : buildType(typeNode);
133
197
  }
134
198
 
199
+ const directiveMap = Object.create(null);
200
+
201
+ for (const existingDirective of schemaConfig.directives) {
202
+ directiveMap[existingDirective.name] = extendDirective(existingDirective);
203
+ }
204
+
135
205
  const operationTypes = {
136
206
  // Get the extended root operation types.
137
207
  query: schemaConfig.query && replaceNamedType(schemaConfig.query),
@@ -143,6 +213,8 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
143
213
  ...getOperationTypes(schemaExtensions),
144
214
  }; // Then produce and return a Schema config with these types.
145
215
 
216
+ const directives = Object.values(directiveMap); // will be `Array<GraphQLDirective>`
217
+
146
218
  return {
147
219
  description:
148
220
  (_schemaDef = schemaDef) === null || _schemaDef === void 0
@@ -154,7 +226,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
154
226
  ...operationTypes,
155
227
  types: Object.values(typeMap),
156
228
  directives: [
157
- ...schemaConfig.directives.map(replaceDirective),
229
+ ...directives.map(replaceDirective),
158
230
  ...directiveDefs.map(buildDirective),
159
231
  ],
160
232
  extensions: Object.create(null),
@@ -413,6 +485,29 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
413
485
  return opTypes;
414
486
  }
415
487
 
488
+ function extendDirective(directive) {
489
+ var _directiveExtensionsM, _config$deprecationRe;
490
+
491
+ const config = directive.toConfig();
492
+ const extensions =
493
+ (_directiveExtensionsM = directiveExtensionsMap[config.name]) !== null &&
494
+ _directiveExtensionsM !== void 0
495
+ ? _directiveExtensionsM
496
+ : [];
497
+ const deprecationReason =
498
+ (_config$deprecationRe = config.deprecationReason) !== null &&
499
+ _config$deprecationRe !== void 0
500
+ ? _config$deprecationRe
501
+ : extensions
502
+ .map((ext) => getDeprecationReason(ext))
503
+ .find((reason) => reason != null);
504
+ return new _directives.GraphQLDirective({
505
+ ...config,
506
+ deprecationReason,
507
+ extensionASTNodes: config.extensionASTNodes.concat(extensions),
508
+ });
509
+ }
510
+
416
511
  function getNamedType(node) {
417
512
  var _stdTypeMap$name2;
418
513
 
@@ -443,8 +538,20 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
443
538
  }
444
539
 
445
540
  function buildDirective(node) {
446
- var _node$description;
541
+ var _directiveExtensionsM2, _getDeprecationReason, _node$description;
447
542
 
543
+ const extensions =
544
+ (_directiveExtensionsM2 = directiveExtensionsMap[node.name.value]) !==
545
+ null && _directiveExtensionsM2 !== void 0
546
+ ? _directiveExtensionsM2
547
+ : [];
548
+ const deprecationReason =
549
+ (_getDeprecationReason = getDeprecationReason(node)) !== null &&
550
+ _getDeprecationReason !== void 0
551
+ ? _getDeprecationReason
552
+ : extensions
553
+ .map((ext) => getDeprecationReason(ext))
554
+ .find((reason) => reason != null);
448
555
  return new _directives.GraphQLDirective({
449
556
  name: node.name.value,
450
557
  description:
@@ -456,7 +563,9 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
456
563
  locations: node.locations.map(({ value }) => value),
457
564
  isRepeatable: node.repeatable,
458
565
  args: buildArgumentMap(node.arguments),
566
+ deprecationReason,
459
567
  astNode: node,
568
+ extensionASTNodes: extensions,
460
569
  });
461
570
  }
462
571
 
@@ -771,6 +880,8 @@ const stdTypeMap = (0, _keyMap.keyMap)(
771
880
  /**
772
881
  * Given a field or enum value node, returns the string value for the
773
882
  * deprecation reason.
883
+ *
884
+ * @internal
774
885
  */
775
886
 
776
887
  function getDeprecationReason(node) {
@@ -785,6 +896,8 @@ function getDeprecationReason(node) {
785
896
  }
786
897
  /**
787
898
  * Given a scalar node, returns the string value for the specifiedByURL.
899
+ *
900
+ * @internal
788
901
  */
789
902
 
790
903
  function getSpecifiedByURL(node) {
@@ -799,6 +912,8 @@ function getSpecifiedByURL(node) {
799
912
  }
800
913
  /**
801
914
  * Given an input object node, returns if the node should be OneOf.
915
+ *
916
+ * @internal
802
917
  */
803
918
 
804
919
  function isOneOf(node) {