graphql 17.0.0-beta.0 → 17.0.0-beta.2

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 (1193) hide show
  1. package/__dev__/devMode.d.ts +1 -1
  2. package/__dev__/error/GraphQLError.d.ts +1 -1
  3. package/__dev__/error/ensureGraphQLError.d.ts +1 -1
  4. package/__dev__/error/index.d.ts +1 -1
  5. package/__dev__/error/locatedError.d.ts +1 -1
  6. package/__dev__/error/syntaxError.d.ts +1 -1
  7. package/__dev__/execution/AbortedGraphQLExecutionError.d.ts +1 -1
  8. package/__dev__/execution/AsyncWorkTracker.d.ts +1 -1
  9. package/__dev__/execution/ExecutionArgs.d.mts +1 -0
  10. package/__dev__/execution/ExecutionArgs.d.ts +1 -0
  11. package/__dev__/execution/ExecutionArgs.js +3 -0
  12. package/__dev__/execution/ExecutionArgs.mjs +3 -0
  13. package/__dev__/execution/Executor.d.ts +1 -1
  14. package/__dev__/execution/ExecutorThrowingOnIncremental.d.ts +1 -1
  15. package/__dev__/execution/buildResolveInfo.d.mts +1 -0
  16. package/__dev__/execution/buildResolveInfo.d.ts +1 -0
  17. package/__dev__/execution/buildResolveInfo.js +3 -0
  18. package/__dev__/execution/buildResolveInfo.mjs +3 -0
  19. package/__dev__/execution/cancellablePromise.d.ts +1 -1
  20. package/__dev__/execution/collectFields.d.ts +1 -1
  21. package/__dev__/execution/collectIteratorPromises.d.ts +1 -1
  22. package/__dev__/execution/createSharedExecutionContext.d.ts +1 -1
  23. package/__dev__/execution/execute.d.ts +1 -1
  24. package/__dev__/execution/getStreamUsage.d.ts +1 -1
  25. package/__dev__/execution/getVariableSignature.d.ts +1 -1
  26. package/__dev__/execution/hooks.d.ts +1 -1
  27. package/__dev__/execution/incremental/Computation.d.ts +1 -1
  28. package/__dev__/execution/incremental/IncrementalExecutor.d.ts +1 -1
  29. package/__dev__/execution/incremental/IncrementalPublisher.d.ts +1 -1
  30. package/__dev__/execution/incremental/Queue.d.ts +1 -1
  31. package/__dev__/execution/incremental/WorkQueue.d.ts +1 -1
  32. package/__dev__/execution/incremental/buildExecutionPlan.d.ts +1 -1
  33. package/__dev__/execution/index.d.ts +1 -1
  34. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +1 -0
  35. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +1 -0
  36. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.js +3 -0
  37. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +3 -0
  38. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +1 -0
  39. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +1 -0
  40. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.js +3 -0
  41. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +3 -0
  42. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +1 -0
  43. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +1 -0
  44. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.js +3 -0
  45. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.mjs +3 -0
  46. package/__dev__/execution/mapAsyncIterable.d.ts +1 -1
  47. package/__dev__/execution/returnIteratorCatchingErrors.d.ts +1 -1
  48. package/__dev__/execution/values.d.ts +1 -1
  49. package/__dev__/execution/withConcurrentAbruptClose.d.ts +1 -1
  50. package/__dev__/graphql.d.ts +1 -1
  51. package/__dev__/harness.d.ts +1 -1
  52. package/__dev__/index.d.ts +1 -1
  53. package/__dev__/jsutils/AccumulatorMap.d.ts +1 -1
  54. package/__dev__/jsutils/Maybe.d.ts +1 -1
  55. package/__dev__/jsutils/ObjMap.d.ts +1 -1
  56. package/__dev__/jsutils/Path.d.ts +1 -1
  57. package/__dev__/jsutils/PromiseOrValue.d.ts +1 -1
  58. package/__dev__/jsutils/capitalize.d.ts +1 -1
  59. package/__dev__/jsutils/devAssert.d.ts +1 -1
  60. package/__dev__/jsutils/didYouMean.d.ts +1 -1
  61. package/__dev__/jsutils/formatList.d.ts +1 -1
  62. package/__dev__/jsutils/getBySet.d.ts +1 -1
  63. package/__dev__/jsutils/groupBy.d.ts +1 -1
  64. package/__dev__/jsutils/identityFunc.d.ts +1 -1
  65. package/__dev__/jsutils/inspect.d.ts +1 -1
  66. package/__dev__/jsutils/instanceOf.d.ts +1 -1
  67. package/__dev__/jsutils/invariant.d.ts +1 -1
  68. package/__dev__/jsutils/isAsyncIterable.d.ts +1 -1
  69. package/__dev__/jsutils/isIterableObject.d.ts +1 -1
  70. package/__dev__/jsutils/isObjectLike.d.ts +1 -1
  71. package/__dev__/jsutils/isPromise.d.ts +1 -1
  72. package/__dev__/jsutils/isSameSet.d.ts +1 -1
  73. package/__dev__/jsutils/keyMap.d.ts +1 -1
  74. package/__dev__/jsutils/keyValMap.d.ts +1 -1
  75. package/__dev__/jsutils/mapValue.d.ts +1 -1
  76. package/__dev__/jsutils/memoize1.d.ts +1 -1
  77. package/__dev__/jsutils/memoize2.d.ts +1 -1
  78. package/__dev__/jsutils/memoize3.d.ts +1 -1
  79. package/__dev__/jsutils/naturalCompare.d.ts +1 -1
  80. package/__dev__/jsutils/printPathArray.d.ts +1 -1
  81. package/__dev__/jsutils/promiseForObject.d.ts +1 -1
  82. package/__dev__/jsutils/promiseReduce.d.ts +1 -1
  83. package/__dev__/jsutils/promiseWithResolvers.d.ts +1 -1
  84. package/__dev__/jsutils/suggestionList.d.ts +1 -1
  85. package/__dev__/jsutils/toError.d.ts +1 -1
  86. package/__dev__/jsutils/toObjMap.d.ts +1 -1
  87. package/__dev__/language/KindTypeMap.d.ts +1 -1
  88. package/__dev__/language/ast.d.ts +1 -1
  89. package/__dev__/language/blockString.d.ts +1 -1
  90. package/__dev__/language/characterClasses.d.ts +1 -1
  91. package/__dev__/language/directiveLocation.d.ts +1 -1
  92. package/__dev__/language/index.d.ts +1 -1
  93. package/__dev__/language/kinds.d.ts +1 -1
  94. package/__dev__/language/kinds_.d.ts +1 -1
  95. package/__dev__/language/lexer.d.ts +1 -1
  96. package/__dev__/language/location.d.ts +1 -1
  97. package/__dev__/language/parser.d.ts +1 -1
  98. package/__dev__/language/predicates.d.ts +1 -1
  99. package/__dev__/language/printLocation.d.ts +1 -1
  100. package/__dev__/language/printString.d.ts +1 -1
  101. package/__dev__/language/printer.d.ts +1 -1
  102. package/__dev__/language/schemaCoordinateLexer.d.ts +1 -1
  103. package/__dev__/language/source.d.ts +1 -1
  104. package/__dev__/language/tokenKind.d.ts +1 -1
  105. package/__dev__/language/visitor.d.ts +1 -1
  106. package/__dev__/type/assertName.d.ts +1 -1
  107. package/__dev__/type/definition.d.ts +1 -1
  108. package/__dev__/type/directives.d.ts +1 -1
  109. package/__dev__/type/index.d.ts +1 -1
  110. package/__dev__/type/introspection.d.ts +1 -1
  111. package/__dev__/type/scalars.d.ts +1 -1
  112. package/__dev__/type/schema.d.ts +1 -1
  113. package/__dev__/type/validate.d.ts +1 -1
  114. package/__dev__/utilities/TypeInfo.d.ts +1 -1
  115. package/__dev__/utilities/astFromValue.d.ts +1 -1
  116. package/__dev__/utilities/buildASTSchema.d.ts +1 -1
  117. package/__dev__/utilities/buildClientSchema.d.ts +1 -1
  118. package/__dev__/utilities/coerceInputValue.d.ts +1 -1
  119. package/__dev__/utilities/concatAST.d.ts +1 -1
  120. package/__dev__/utilities/extendSchema.d.ts +1 -1
  121. package/__dev__/utilities/findSchemaChanges.d.ts +1 -1
  122. package/__dev__/utilities/getDefaultValueAST.d.ts +1 -1
  123. package/__dev__/utilities/getIntrospectionQuery.d.ts +1 -1
  124. package/__dev__/utilities/getOperationAST.d.ts +1 -1
  125. package/__dev__/utilities/index.d.ts +1 -1
  126. package/__dev__/utilities/introspectionFromSchema.d.ts +1 -1
  127. package/__dev__/utilities/lexicographicSortSchema.d.ts +1 -1
  128. package/__dev__/utilities/mapSchemaConfig.d.ts +1 -1
  129. package/__dev__/utilities/printSchema.d.ts +1 -1
  130. package/__dev__/utilities/replaceVariables.d.ts +1 -1
  131. package/__dev__/utilities/resolveSchemaCoordinate.d.ts +1 -1
  132. package/__dev__/utilities/separateOperations.d.ts +1 -1
  133. package/__dev__/utilities/sortValueNode.d.ts +1 -1
  134. package/__dev__/utilities/stripIgnoredCharacters.d.ts +1 -1
  135. package/__dev__/utilities/typeComparators.d.ts +1 -1
  136. package/__dev__/utilities/typeFromAST.d.ts +1 -1
  137. package/__dev__/utilities/typedQueryDocumentNode.d.ts +1 -1
  138. package/__dev__/utilities/validateInputValue.d.ts +1 -1
  139. package/__dev__/utilities/valueFromAST.d.ts +1 -1
  140. package/__dev__/utilities/valueFromASTUntyped.d.ts +1 -1
  141. package/__dev__/utilities/valueToLiteral.d.ts +1 -1
  142. package/__dev__/validation/ValidationContext.d.ts +1 -1
  143. package/__dev__/validation/index.d.ts +1 -1
  144. package/__dev__/validation/rules/DeferStreamDirectiveLabelRule.d.ts +1 -1
  145. package/__dev__/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +1 -1
  146. package/__dev__/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +1 -1
  147. package/__dev__/validation/rules/ExecutableDefinitionsRule.d.ts +1 -1
  148. package/__dev__/validation/rules/FieldsOnCorrectTypeRule.d.ts +1 -1
  149. package/__dev__/validation/rules/FragmentsOnCompositeTypesRule.d.ts +1 -1
  150. package/__dev__/validation/rules/KnownArgumentNamesRule.d.ts +1 -1
  151. package/__dev__/validation/rules/KnownDirectivesRule.d.ts +1 -1
  152. package/__dev__/validation/rules/KnownFragmentNamesRule.d.ts +1 -1
  153. package/__dev__/validation/rules/KnownOperationTypesRule.d.ts +1 -1
  154. package/__dev__/validation/rules/KnownTypeNamesRule.d.ts +1 -1
  155. package/__dev__/validation/rules/LoneAnonymousOperationRule.d.ts +1 -1
  156. package/__dev__/validation/rules/LoneSchemaDefinitionRule.d.ts +1 -1
  157. package/__dev__/validation/rules/MaxIntrospectionDepthRule.d.ts +1 -1
  158. package/__dev__/validation/rules/NoFragmentCyclesRule.d.ts +1 -1
  159. package/__dev__/validation/rules/NoUndefinedVariablesRule.d.ts +1 -1
  160. package/__dev__/validation/rules/NoUnusedFragmentsRule.d.ts +1 -1
  161. package/__dev__/validation/rules/NoUnusedVariablesRule.d.ts +1 -1
  162. package/__dev__/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +1 -1
  163. package/__dev__/validation/rules/PossibleFragmentSpreadsRule.d.ts +1 -1
  164. package/__dev__/validation/rules/PossibleTypeExtensionsRule.d.ts +1 -1
  165. package/__dev__/validation/rules/ProvidedRequiredArgumentsRule.d.ts +1 -1
  166. package/__dev__/validation/rules/ScalarLeafsRule.d.ts +1 -1
  167. package/__dev__/validation/rules/SingleFieldSubscriptionsRule.d.ts +1 -1
  168. package/__dev__/validation/rules/StreamDirectiveOnListFieldRule.d.ts +1 -1
  169. package/__dev__/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +1 -1
  170. package/__dev__/validation/rules/UniqueArgumentNamesRule.d.ts +1 -1
  171. package/__dev__/validation/rules/UniqueDirectiveNamesRule.d.ts +1 -1
  172. package/__dev__/validation/rules/UniqueDirectivesPerLocationRule.d.ts +1 -1
  173. package/__dev__/validation/rules/UniqueEnumValueNamesRule.d.ts +1 -1
  174. package/__dev__/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +1 -1
  175. package/__dev__/validation/rules/UniqueFragmentNamesRule.d.ts +1 -1
  176. package/__dev__/validation/rules/UniqueInputFieldNamesRule.d.ts +1 -1
  177. package/__dev__/validation/rules/UniqueOperationNamesRule.d.ts +1 -1
  178. package/__dev__/validation/rules/UniqueOperationTypesRule.d.ts +1 -1
  179. package/__dev__/validation/rules/UniqueTypeNamesRule.d.ts +1 -1
  180. package/__dev__/validation/rules/UniqueVariableNamesRule.d.ts +1 -1
  181. package/__dev__/validation/rules/ValuesOfCorrectTypeRule.d.ts +1 -1
  182. package/__dev__/validation/rules/VariablesAreInputTypesRule.d.ts +1 -1
  183. package/__dev__/validation/rules/VariablesInAllowedPositionRule.d.ts +1 -1
  184. package/__dev__/validation/rules/custom/NoDeprecatedCustomRule.d.ts +1 -1
  185. package/__dev__/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +1 -1
  186. package/__dev__/validation/specifiedRules.d.ts +1 -1
  187. package/__dev__/validation/validate.d.ts +1 -1
  188. package/__dev__/version.d.ts +1 -1
  189. package/devMode.d.mts +29 -0
  190. package/devMode.d.ts +29 -0
  191. package/devMode.js +2 -2
  192. package/devMode.js.map +1 -1
  193. package/devMode.mjs.map +1 -1
  194. package/error/GraphQLError.d.mts +98 -14
  195. package/error/GraphQLError.d.ts +98 -14
  196. package/error/GraphQLError.js +18 -28
  197. package/error/GraphQLError.js.map +1 -1
  198. package/error/GraphQLError.mjs +11 -21
  199. package/error/GraphQLError.mjs.map +1 -1
  200. package/error/ensureGraphQLError.d.mts +3 -1
  201. package/error/ensureGraphQLError.d.ts +3 -1
  202. package/error/ensureGraphQLError.js +5 -8
  203. package/error/ensureGraphQLError.js.map +1 -1
  204. package/error/ensureGraphQLError.mjs +0 -3
  205. package/error/ensureGraphQLError.mjs.map +1 -1
  206. package/error/index.d.mts +10 -4
  207. package/error/index.d.ts +10 -4
  208. package/error/index.js +6 -6
  209. package/error/index.js.map +1 -1
  210. package/error/index.mjs.map +1 -1
  211. package/error/locatedError.d.mts +23 -3
  212. package/error/locatedError.d.ts +23 -3
  213. package/error/locatedError.js +4 -10
  214. package/error/locatedError.js.map +1 -1
  215. package/error/locatedError.mjs +0 -6
  216. package/error/locatedError.mjs.map +1 -1
  217. package/error/syntaxError.d.mts +17 -2
  218. package/error/syntaxError.d.ts +17 -2
  219. package/error/syntaxError.js +2 -6
  220. package/error/syntaxError.js.map +1 -1
  221. package/error/syntaxError.mjs +0 -4
  222. package/error/syntaxError.mjs.map +1 -1
  223. package/execution/AbortedGraphQLExecutionError.d.mts +28 -1
  224. package/execution/AbortedGraphQLExecutionError.d.ts +28 -1
  225. package/execution/AbortedGraphQLExecutionError.js.map +1 -1
  226. package/execution/AbortedGraphQLExecutionError.mjs.map +1 -1
  227. package/execution/AsyncWorkTracker.d.mts +1 -1
  228. package/execution/AsyncWorkTracker.d.ts +1 -1
  229. package/execution/AsyncWorkTracker.js +3 -7
  230. package/execution/AsyncWorkTracker.js.map +1 -1
  231. package/execution/AsyncWorkTracker.mjs +1 -5
  232. package/execution/AsyncWorkTracker.mjs.map +1 -1
  233. package/execution/ExecutionArgs.d.mts +101 -0
  234. package/execution/ExecutionArgs.d.ts +101 -0
  235. package/execution/ExecutionArgs.js +3 -0
  236. package/execution/ExecutionArgs.js.map +1 -0
  237. package/execution/ExecutionArgs.mjs +2 -0
  238. package/execution/ExecutionArgs.mjs.map +1 -0
  239. package/execution/Executor.d.mts +55 -52
  240. package/execution/Executor.d.ts +55 -52
  241. package/execution/Executor.js +84 -206
  242. package/execution/Executor.js.map +1 -1
  243. package/execution/Executor.mjs +3 -125
  244. package/execution/Executor.mjs.map +1 -1
  245. package/execution/ExecutorThrowingOnIncremental.d.mts +6 -6
  246. package/execution/ExecutorThrowingOnIncremental.d.ts +6 -6
  247. package/execution/ExecutorThrowingOnIncremental.js +11 -13
  248. package/execution/ExecutorThrowingOnIncremental.js.map +1 -1
  249. package/execution/ExecutorThrowingOnIncremental.mjs +0 -2
  250. package/execution/ExecutorThrowingOnIncremental.mjs.map +1 -1
  251. package/execution/buildResolveInfo.d.mts +16 -0
  252. package/execution/buildResolveInfo.d.ts +16 -0
  253. package/execution/buildResolveInfo.js +21 -0
  254. package/execution/buildResolveInfo.js.map +1 -0
  255. package/execution/buildResolveInfo.mjs +18 -0
  256. package/execution/buildResolveInfo.mjs.map +1 -0
  257. package/execution/cancellablePromise.d.mts +3 -0
  258. package/execution/cancellablePromise.d.ts +3 -0
  259. package/execution/cancellablePromise.js +2 -2
  260. package/execution/cancellablePromise.js.map +1 -1
  261. package/execution/cancellablePromise.mjs.map +1 -1
  262. package/execution/collectFields.d.mts +15 -9
  263. package/execution/collectFields.d.ts +15 -9
  264. package/execution/collectFields.js +19 -60
  265. package/execution/collectFields.js.map +1 -1
  266. package/execution/collectFields.mjs +0 -41
  267. package/execution/collectFields.mjs.map +1 -1
  268. package/execution/collectIteratorPromises.d.mts +2 -0
  269. package/execution/collectIteratorPromises.d.ts +2 -0
  270. package/execution/collectIteratorPromises.js +2 -7
  271. package/execution/collectIteratorPromises.js.map +1 -1
  272. package/execution/collectIteratorPromises.mjs +0 -5
  273. package/execution/collectIteratorPromises.mjs.map +1 -1
  274. package/execution/createSharedExecutionContext.d.mts +3 -2
  275. package/execution/createSharedExecutionContext.d.ts +3 -2
  276. package/execution/createSharedExecutionContext.js +2 -2
  277. package/execution/createSharedExecutionContext.js.map +1 -1
  278. package/execution/createSharedExecutionContext.mjs.map +1 -1
  279. package/execution/execute.d.mts +412 -47
  280. package/execution/execute.d.ts +412 -47
  281. package/execution/execute.js +73 -254
  282. package/execution/execute.js.map +1 -1
  283. package/execution/execute.mjs +12 -193
  284. package/execution/execute.mjs.map +1 -1
  285. package/execution/getStreamUsage.d.mts +5 -2
  286. package/execution/getStreamUsage.d.ts +5 -2
  287. package/execution/getStreamUsage.js +9 -16
  288. package/execution/getStreamUsage.js.map +1 -1
  289. package/execution/getStreamUsage.mjs +0 -7
  290. package/execution/getStreamUsage.mjs.map +1 -1
  291. package/execution/getVariableSignature.d.mts +7 -4
  292. package/execution/getVariableSignature.d.ts +7 -4
  293. package/execution/getVariableSignature.js +8 -10
  294. package/execution/getVariableSignature.js.map +1 -1
  295. package/execution/getVariableSignature.mjs +0 -2
  296. package/execution/getVariableSignature.mjs.map +1 -1
  297. package/execution/hooks.d.mts +4 -8
  298. package/execution/hooks.d.ts +4 -8
  299. package/execution/hooks.js +0 -1
  300. package/execution/hooks.js.map +1 -1
  301. package/execution/hooks.mjs +0 -1
  302. package/execution/hooks.mjs.map +1 -1
  303. package/execution/incremental/Computation.d.mts +2 -2
  304. package/execution/incremental/Computation.d.ts +2 -2
  305. package/execution/incremental/Computation.js +2 -3
  306. package/execution/incremental/Computation.js.map +1 -1
  307. package/execution/incremental/Computation.mjs +0 -1
  308. package/execution/incremental/Computation.mjs.map +1 -1
  309. package/execution/incremental/IncrementalExecutor.d.mts +137 -22
  310. package/execution/incremental/IncrementalExecutor.d.ts +137 -22
  311. package/execution/incremental/IncrementalExecutor.js +47 -77
  312. package/execution/incremental/IncrementalExecutor.js.map +1 -1
  313. package/execution/incremental/IncrementalExecutor.mjs +2 -32
  314. package/execution/incremental/IncrementalExecutor.mjs.map +1 -1
  315. package/execution/incremental/IncrementalPublisher.d.mts +4 -6
  316. package/execution/incremental/IncrementalPublisher.d.ts +4 -6
  317. package/execution/incremental/IncrementalPublisher.js +12 -18
  318. package/execution/incremental/IncrementalPublisher.js.map +1 -1
  319. package/execution/incremental/IncrementalPublisher.mjs +0 -6
  320. package/execution/incremental/IncrementalPublisher.mjs.map +1 -1
  321. package/execution/incremental/Queue.d.mts +1 -1
  322. package/execution/incremental/Queue.d.ts +1 -1
  323. package/execution/incremental/Queue.js +22 -79
  324. package/execution/incremental/Queue.js.map +1 -1
  325. package/execution/incremental/Queue.mjs +8 -64
  326. package/execution/incremental/Queue.mjs.map +1 -1
  327. package/execution/incremental/WorkQueue.d.mts +10 -2
  328. package/execution/incremental/WorkQueue.d.ts +10 -2
  329. package/execution/incremental/WorkQueue.js +7 -22
  330. package/execution/incremental/WorkQueue.js.map +1 -1
  331. package/execution/incremental/WorkQueue.mjs +0 -15
  332. package/execution/incremental/WorkQueue.mjs.map +1 -1
  333. package/execution/incremental/buildExecutionPlan.d.mts +4 -1
  334. package/execution/incremental/buildExecutionPlan.d.ts +4 -1
  335. package/execution/incremental/buildExecutionPlan.js +4 -4
  336. package/execution/incremental/buildExecutionPlan.js.map +1 -1
  337. package/execution/incremental/buildExecutionPlan.mjs.map +1 -1
  338. package/execution/index.d.mts +17 -8
  339. package/execution/index.d.ts +17 -8
  340. package/execution/index.js +26 -22
  341. package/execution/index.js.map +1 -1
  342. package/execution/index.mjs +2 -1
  343. package/execution/index.mjs.map +1 -1
  344. package/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +175 -0
  345. package/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +175 -0
  346. package/execution/legacyIncremental/BranchingIncrementalExecutor.js +69 -0
  347. package/execution/legacyIncremental/BranchingIncrementalExecutor.js.map +1 -0
  348. package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +65 -0
  349. package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs.map +1 -0
  350. package/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +12 -0
  351. package/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +12 -0
  352. package/execution/legacyIncremental/BranchingIncrementalPublisher.js +131 -0
  353. package/execution/legacyIncremental/BranchingIncrementalPublisher.js.map +1 -0
  354. package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +127 -0
  355. package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs.map +1 -0
  356. package/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +165 -0
  357. package/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +165 -0
  358. package/execution/legacyIncremental/legacyExecuteIncrementally.js +17 -0
  359. package/execution/legacyIncremental/legacyExecuteIncrementally.js.map +1 -0
  360. package/execution/legacyIncremental/legacyExecuteIncrementally.mjs +13 -0
  361. package/execution/legacyIncremental/legacyExecuteIncrementally.mjs.map +1 -0
  362. package/execution/mapAsyncIterable.d.mts +3 -1
  363. package/execution/mapAsyncIterable.d.ts +3 -1
  364. package/execution/mapAsyncIterable.js +4 -9
  365. package/execution/mapAsyncIterable.js.map +1 -1
  366. package/execution/mapAsyncIterable.mjs +0 -5
  367. package/execution/mapAsyncIterable.mjs.map +1 -1
  368. package/execution/returnIteratorCatchingErrors.d.mts +1 -0
  369. package/execution/returnIteratorCatchingErrors.d.ts +1 -0
  370. package/execution/returnIteratorCatchingErrors.js +1 -2
  371. package/execution/returnIteratorCatchingErrors.js.map +1 -1
  372. package/execution/returnIteratorCatchingErrors.mjs +1 -2
  373. package/execution/returnIteratorCatchingErrors.mjs.map +1 -1
  374. package/execution/values.d.mts +196 -14
  375. package/execution/values.d.ts +196 -14
  376. package/execution/values.js +45 -86
  377. package/execution/values.js.map +1 -1
  378. package/execution/values.mjs +14 -55
  379. package/execution/values.mjs.map +1 -1
  380. package/execution/withConcurrentAbruptClose.d.mts +3 -1
  381. package/execution/withConcurrentAbruptClose.d.ts +3 -1
  382. package/execution/withConcurrentAbruptClose.js +3 -17
  383. package/execution/withConcurrentAbruptClose.js.map +1 -1
  384. package/execution/withConcurrentAbruptClose.mjs +1 -15
  385. package/execution/withConcurrentAbruptClose.mjs.map +1 -1
  386. package/graphql.d.mts +198 -50
  387. package/graphql.d.ts +198 -50
  388. package/graphql.js +11 -23
  389. package/graphql.js.map +1 -1
  390. package/graphql.mjs +0 -12
  391. package/graphql.mjs.map +1 -1
  392. package/harness.d.mts +21 -4
  393. package/harness.d.ts +21 -4
  394. package/harness.js +7 -7
  395. package/harness.js.map +1 -1
  396. package/harness.mjs.map +1 -1
  397. package/index.d.mts +41 -39
  398. package/index.d.ts +41 -39
  399. package/index.js +260 -346
  400. package/index.js.map +1 -1
  401. package/index.mjs +5 -149
  402. package/index.mjs.map +1 -1
  403. package/jsutils/AccumulatorMap.d.mts +2 -0
  404. package/jsutils/AccumulatorMap.d.ts +2 -0
  405. package/jsutils/AccumulatorMap.js +0 -4
  406. package/jsutils/AccumulatorMap.js.map +1 -1
  407. package/jsutils/AccumulatorMap.mjs +0 -4
  408. package/jsutils/AccumulatorMap.mjs.map +1 -1
  409. package/jsutils/Maybe.d.mts +5 -1
  410. package/jsutils/Maybe.d.ts +5 -1
  411. package/jsutils/Maybe.js.map +1 -1
  412. package/jsutils/Maybe.mjs.map +1 -1
  413. package/jsutils/ObjMap.d.mts +6 -0
  414. package/jsutils/ObjMap.d.ts +6 -0
  415. package/jsutils/ObjMap.js.map +1 -1
  416. package/jsutils/ObjMap.mjs.map +1 -1
  417. package/jsutils/Path.d.mts +31 -1
  418. package/jsutils/Path.d.ts +31 -1
  419. package/jsutils/Path.js +0 -6
  420. package/jsutils/Path.js.map +1 -1
  421. package/jsutils/Path.mjs +0 -6
  422. package/jsutils/Path.mjs.map +1 -1
  423. package/jsutils/PromiseOrValue.d.mts +1 -0
  424. package/jsutils/PromiseOrValue.d.ts +1 -0
  425. package/jsutils/PromiseOrValue.js.map +1 -1
  426. package/jsutils/PromiseOrValue.mjs.map +1 -1
  427. package/jsutils/capitalize.d.mts +2 -0
  428. package/jsutils/capitalize.d.ts +2 -0
  429. package/jsutils/capitalize.js +0 -3
  430. package/jsutils/capitalize.js.map +1 -1
  431. package/jsutils/capitalize.mjs +0 -3
  432. package/jsutils/capitalize.mjs.map +1 -1
  433. package/jsutils/devAssert.d.mts +1 -0
  434. package/jsutils/devAssert.d.ts +1 -0
  435. package/jsutils/devAssert.js.map +1 -1
  436. package/jsutils/devAssert.mjs.map +1 -1
  437. package/jsutils/didYouMean.d.mts +4 -1
  438. package/jsutils/didYouMean.d.ts +4 -1
  439. package/jsutils/didYouMean.js +2 -2
  440. package/jsutils/didYouMean.js.map +1 -1
  441. package/jsutils/didYouMean.mjs.map +1 -1
  442. package/jsutils/formatList.d.mts +6 -2
  443. package/jsutils/formatList.d.ts +6 -2
  444. package/jsutils/formatList.js +2 -8
  445. package/jsutils/formatList.js.map +1 -1
  446. package/jsutils/formatList.mjs +0 -6
  447. package/jsutils/formatList.mjs.map +1 -1
  448. package/jsutils/getBySet.d.mts +1 -0
  449. package/jsutils/getBySet.d.ts +1 -0
  450. package/jsutils/getBySet.js +2 -2
  451. package/jsutils/getBySet.js.map +1 -1
  452. package/jsutils/getBySet.mjs.map +1 -1
  453. package/jsutils/groupBy.d.mts +2 -0
  454. package/jsutils/groupBy.d.ts +2 -0
  455. package/jsutils/groupBy.js +2 -5
  456. package/jsutils/groupBy.js.map +1 -1
  457. package/jsutils/groupBy.mjs +0 -3
  458. package/jsutils/groupBy.mjs.map +1 -1
  459. package/jsutils/identityFunc.d.mts +2 -0
  460. package/jsutils/identityFunc.d.ts +2 -0
  461. package/jsutils/identityFunc.js +0 -3
  462. package/jsutils/identityFunc.js.map +1 -1
  463. package/jsutils/identityFunc.mjs +0 -3
  464. package/jsutils/identityFunc.mjs.map +1 -1
  465. package/jsutils/inspect.d.mts +2 -0
  466. package/jsutils/inspect.d.ts +2 -0
  467. package/jsutils/inspect.js +0 -4
  468. package/jsutils/inspect.js.map +1 -1
  469. package/jsutils/inspect.mjs +0 -4
  470. package/jsutils/inspect.mjs.map +1 -1
  471. package/jsutils/instanceOf.d.mts +2 -0
  472. package/jsutils/instanceOf.d.ts +2 -0
  473. package/jsutils/instanceOf.js +3 -14
  474. package/jsutils/instanceOf.js.map +1 -1
  475. package/jsutils/instanceOf.mjs +1 -12
  476. package/jsutils/instanceOf.mjs.map +1 -1
  477. package/jsutils/invariant.d.mts +1 -0
  478. package/jsutils/invariant.d.ts +1 -0
  479. package/jsutils/invariant.js.map +1 -1
  480. package/jsutils/invariant.mjs.map +1 -1
  481. package/jsutils/isAsyncIterable.d.mts +2 -0
  482. package/jsutils/isAsyncIterable.d.ts +2 -0
  483. package/jsutils/isAsyncIterable.js +0 -4
  484. package/jsutils/isAsyncIterable.js.map +1 -1
  485. package/jsutils/isAsyncIterable.mjs +0 -4
  486. package/jsutils/isAsyncIterable.mjs.map +1 -1
  487. package/jsutils/isIterableObject.d.mts +6 -5
  488. package/jsutils/isIterableObject.d.ts +6 -5
  489. package/jsutils/isIterableObject.js +0 -17
  490. package/jsutils/isIterableObject.js.map +1 -1
  491. package/jsutils/isIterableObject.mjs +0 -17
  492. package/jsutils/isIterableObject.mjs.map +1 -1
  493. package/jsutils/isObjectLike.d.mts +2 -0
  494. package/jsutils/isObjectLike.d.ts +2 -0
  495. package/jsutils/isObjectLike.js +0 -4
  496. package/jsutils/isObjectLike.js.map +1 -1
  497. package/jsutils/isObjectLike.mjs +0 -4
  498. package/jsutils/isObjectLike.mjs.map +1 -1
  499. package/jsutils/isPromise.d.mts +3 -0
  500. package/jsutils/isPromise.d.ts +3 -0
  501. package/jsutils/isPromise.js +0 -4
  502. package/jsutils/isPromise.js.map +1 -1
  503. package/jsutils/isPromise.mjs +0 -4
  504. package/jsutils/isPromise.mjs.map +1 -1
  505. package/jsutils/isSameSet.d.mts +1 -0
  506. package/jsutils/isSameSet.d.ts +1 -0
  507. package/jsutils/isSameSet.js.map +1 -1
  508. package/jsutils/isSameSet.mjs.map +1 -1
  509. package/jsutils/keyMap.d.mts +8 -15
  510. package/jsutils/keyMap.d.ts +8 -15
  511. package/jsutils/keyMap.js +0 -27
  512. package/jsutils/keyMap.js.map +1 -1
  513. package/jsutils/keyMap.mjs +0 -27
  514. package/jsutils/keyMap.mjs.map +1 -1
  515. package/jsutils/keyValMap.d.mts +10 -7
  516. package/jsutils/keyValMap.d.ts +10 -7
  517. package/jsutils/keyValMap.js +0 -17
  518. package/jsutils/keyValMap.js.map +1 -1
  519. package/jsutils/keyValMap.mjs +0 -17
  520. package/jsutils/keyValMap.mjs.map +1 -1
  521. package/jsutils/mapValue.d.mts +3 -1
  522. package/jsutils/mapValue.d.ts +3 -1
  523. package/jsutils/mapValue.js +0 -4
  524. package/jsutils/mapValue.js.map +1 -1
  525. package/jsutils/mapValue.mjs +0 -4
  526. package/jsutils/mapValue.mjs.map +1 -1
  527. package/jsutils/memoize1.d.mts +2 -0
  528. package/jsutils/memoize1.d.ts +2 -0
  529. package/jsutils/memoize1.js +0 -3
  530. package/jsutils/memoize1.js.map +1 -1
  531. package/jsutils/memoize1.mjs +0 -3
  532. package/jsutils/memoize1.mjs.map +1 -1
  533. package/jsutils/memoize2.d.mts +2 -0
  534. package/jsutils/memoize2.d.ts +2 -0
  535. package/jsutils/memoize2.js +0 -3
  536. package/jsutils/memoize2.js.map +1 -1
  537. package/jsutils/memoize2.mjs +0 -3
  538. package/jsutils/memoize2.mjs.map +1 -1
  539. package/jsutils/memoize3.d.mts +2 -0
  540. package/jsutils/memoize3.d.ts +2 -0
  541. package/jsutils/memoize3.js +0 -3
  542. package/jsutils/memoize3.js.map +1 -1
  543. package/jsutils/memoize3.mjs +0 -3
  544. package/jsutils/memoize3.mjs.map +1 -1
  545. package/jsutils/naturalCompare.d.mts +1 -0
  546. package/jsutils/naturalCompare.d.ts +1 -0
  547. package/jsutils/naturalCompare.js +0 -7
  548. package/jsutils/naturalCompare.js.map +1 -1
  549. package/jsutils/naturalCompare.mjs +0 -7
  550. package/jsutils/naturalCompare.mjs.map +1 -1
  551. package/jsutils/printPathArray.d.mts +2 -0
  552. package/jsutils/printPathArray.d.ts +2 -0
  553. package/jsutils/printPathArray.js +0 -3
  554. package/jsutils/printPathArray.js.map +1 -1
  555. package/jsutils/printPathArray.mjs +0 -3
  556. package/jsutils/printPathArray.mjs.map +1 -1
  557. package/jsutils/promiseForObject.d.mts +4 -2
  558. package/jsutils/promiseForObject.d.ts +4 -2
  559. package/jsutils/promiseForObject.js +0 -7
  560. package/jsutils/promiseForObject.js.map +1 -1
  561. package/jsutils/promiseForObject.mjs +0 -7
  562. package/jsutils/promiseForObject.mjs.map +1 -1
  563. package/jsutils/promiseReduce.d.mts +3 -1
  564. package/jsutils/promiseReduce.d.ts +3 -1
  565. package/jsutils/promiseReduce.js +2 -9
  566. package/jsutils/promiseReduce.js.map +1 -1
  567. package/jsutils/promiseReduce.mjs +0 -7
  568. package/jsutils/promiseReduce.mjs.map +1 -1
  569. package/jsutils/promiseWithResolvers.d.mts +3 -1
  570. package/jsutils/promiseWithResolvers.d.ts +3 -1
  571. package/jsutils/promiseWithResolvers.js +0 -5
  572. package/jsutils/promiseWithResolvers.js.map +1 -1
  573. package/jsutils/promiseWithResolvers.mjs +0 -5
  574. package/jsutils/promiseWithResolvers.mjs.map +1 -1
  575. package/jsutils/suggestionList.d.mts +2 -0
  576. package/jsutils/suggestionList.d.ts +2 -0
  577. package/jsutils/suggestionList.js +3 -26
  578. package/jsutils/suggestionList.js.map +1 -1
  579. package/jsutils/suggestionList.mjs +1 -24
  580. package/jsutils/suggestionList.mjs.map +1 -1
  581. package/jsutils/toError.d.mts +2 -0
  582. package/jsutils/toError.d.ts +2 -0
  583. package/jsutils/toError.js +2 -5
  584. package/jsutils/toError.js.map +1 -1
  585. package/jsutils/toError.mjs +0 -3
  586. package/jsutils/toError.mjs.map +1 -1
  587. package/jsutils/toObjMap.d.mts +4 -2
  588. package/jsutils/toObjMap.d.ts +4 -2
  589. package/jsutils/toObjMap.js.map +1 -1
  590. package/jsutils/toObjMap.mjs.map +1 -1
  591. package/language/KindTypeMap.d.mts +2 -1
  592. package/language/KindTypeMap.d.ts +2 -1
  593. package/language/KindTypeMap.js.map +1 -1
  594. package/language/KindTypeMap.mjs.map +1 -1
  595. package/language/ast.d.mts +425 -58
  596. package/language/ast.d.ts +425 -58
  597. package/language/ast.js +8 -21
  598. package/language/ast.js.map +1 -1
  599. package/language/ast.mjs +8 -21
  600. package/language/ast.mjs.map +1 -1
  601. package/language/blockString.d.mts +1 -3
  602. package/language/blockString.d.ts +1 -3
  603. package/language/blockString.js +15 -41
  604. package/language/blockString.js.map +1 -1
  605. package/language/blockString.mjs +11 -37
  606. package/language/blockString.mjs.map +1 -1
  607. package/language/characterClasses.js +2 -45
  608. package/language/characterClasses.js.map +1 -1
  609. package/language/characterClasses.mjs +2 -45
  610. package/language/characterClasses.mjs.map +1 -1
  611. package/language/directiveLocation.d.mts +26 -6
  612. package/language/directiveLocation.d.ts +26 -6
  613. package/language/directiveLocation.js +2 -6
  614. package/language/directiveLocation.js.map +1 -1
  615. package/language/directiveLocation.mjs +2 -6
  616. package/language/directiveLocation.mjs.map +1 -1
  617. package/language/index.d.mts +22 -16
  618. package/language/index.d.ts +22 -16
  619. package/language/index.js +45 -49
  620. package/language/index.js.map +1 -1
  621. package/language/index.mjs +0 -4
  622. package/language/index.mjs.map +1 -1
  623. package/language/kinds.d.mts +5 -2
  624. package/language/kinds.d.ts +5 -2
  625. package/language/kinds.js.map +1 -1
  626. package/language/kinds.mjs.map +1 -1
  627. package/language/kinds_.d.mts +102 -12
  628. package/language/kinds_.d.ts +102 -12
  629. package/language/kinds_.js +2 -14
  630. package/language/kinds_.js.map +1 -1
  631. package/language/kinds_.mjs +1 -13
  632. package/language/kinds_.mjs.map +1 -1
  633. package/language/lexer.d.mts +51 -18
  634. package/language/lexer.d.ts +51 -18
  635. package/language/lexer.js +102 -343
  636. package/language/lexer.js.map +1 -1
  637. package/language/lexer.mjs +37 -278
  638. package/language/lexer.mjs.map +1 -1
  639. package/language/location.d.mts +17 -4
  640. package/language/location.d.ts +17 -4
  641. package/language/location.js +2 -6
  642. package/language/location.js.map +1 -1
  643. package/language/location.mjs +0 -4
  644. package/language/location.mjs.map +1 -1
  645. package/language/parser.d.mts +243 -15
  646. package/language/parser.d.ts +243 -15
  647. package/language/parser.js +183 -528
  648. package/language/parser.js.map +1 -1
  649. package/language/parser.mjs +26 -371
  650. package/language/parser.mjs.map +1 -1
  651. package/language/predicates.d.mts +182 -1
  652. package/language/predicates.d.ts +182 -1
  653. package/language/predicates.js +45 -49
  654. package/language/predicates.js.map +1 -1
  655. package/language/predicates.mjs +3 -7
  656. package/language/predicates.mjs.map +1 -1
  657. package/language/printLocation.d.mts +31 -3
  658. package/language/printLocation.d.ts +31 -3
  659. package/language/printLocation.js +2 -10
  660. package/language/printLocation.js.map +1 -1
  661. package/language/printLocation.mjs +0 -8
  662. package/language/printLocation.mjs.map +1 -1
  663. package/language/printString.d.mts +2 -0
  664. package/language/printString.d.ts +2 -0
  665. package/language/printString.js +5 -11
  666. package/language/printString.js.map +1 -1
  667. package/language/printString.mjs +5 -11
  668. package/language/printString.mjs.map +1 -1
  669. package/language/printer.d.mts +13 -1
  670. package/language/printer.d.ts +13 -1
  671. package/language/printer.js +10 -31
  672. package/language/printer.js.map +1 -1
  673. package/language/printer.mjs +5 -26
  674. package/language/printer.mjs.map +1 -1
  675. package/language/schemaCoordinateLexer.d.mts +17 -3
  676. package/language/schemaCoordinateLexer.d.ts +17 -3
  677. package/language/schemaCoordinateLexer.js +21 -51
  678. package/language/schemaCoordinateLexer.js.map +1 -1
  679. package/language/schemaCoordinateLexer.mjs +5 -35
  680. package/language/schemaCoordinateLexer.mjs.map +1 -1
  681. package/language/source.d.mts +28 -1
  682. package/language/source.d.ts +28 -1
  683. package/language/source.js +5 -17
  684. package/language/source.js.map +1 -1
  685. package/language/source.mjs +0 -12
  686. package/language/source.mjs.map +1 -1
  687. package/language/tokenKind.d.mts +5 -0
  688. package/language/tokenKind.d.ts +5 -0
  689. package/language/tokenKind.js +0 -4
  690. package/language/tokenKind.js.map +1 -1
  691. package/language/tokenKind.mjs +0 -4
  692. package/language/tokenKind.mjs.map +1 -1
  693. package/language/visitor.d.mts +184 -74
  694. package/language/visitor.d.ts +184 -74
  695. package/language/visitor.js +10 -25
  696. package/language/visitor.js.map +1 -1
  697. package/language/visitor.mjs +0 -15
  698. package/language/visitor.mjs.map +1 -1
  699. package/package.json +2 -2
  700. package/type/assertName.d.mts +18 -1
  701. package/type/assertName.d.ts +18 -1
  702. package/type/assertName.js +8 -16
  703. package/type/assertName.js.map +1 -1
  704. package/type/assertName.mjs +0 -8
  705. package/type/assertName.mjs.map +1 -1
  706. package/type/definition.d.mts +3268 -138
  707. package/type/definition.d.ts +3268 -138
  708. package/type/definition.js +99 -346
  709. package/type/definition.js.map +1 -1
  710. package/type/definition.mjs +5 -252
  711. package/type/definition.mjs.map +1 -1
  712. package/type/directives.d.mts +220 -26
  713. package/type/directives.d.ts +220 -26
  714. package/type/directives.js +51 -83
  715. package/type/directives.js.map +1 -1
  716. package/type/directives.mjs +5 -37
  717. package/type/directives.mjs.map +1 -1
  718. package/type/index.d.mts +18 -12
  719. package/type/index.d.ts +18 -12
  720. package/type/index.js +106 -129
  721. package/type/index.js.map +1 -1
  722. package/type/index.mjs +5 -48
  723. package/type/index.mjs.map +1 -1
  724. package/type/introspection.d.mts +38 -2
  725. package/type/introspection.d.ts +38 -2
  726. package/type/introspection.js +122 -107
  727. package/type/introspection.js.map +1 -1
  728. package/type/introspection.mjs +24 -9
  729. package/type/introspection.mjs.map +1 -1
  730. package/type/scalars.d.mts +31 -4
  731. package/type/scalars.d.ts +31 -4
  732. package/type/scalars.js +61 -76
  733. package/type/scalars.js.map +1 -1
  734. package/type/scalars.mjs +0 -15
  735. package/type/scalars.mjs.map +1 -1
  736. package/type/schema.d.mts +514 -38
  737. package/type/schema.d.ts +514 -38
  738. package/type/schema.js +32 -129
  739. package/type/schema.js.map +1 -1
  740. package/type/schema.mjs +0 -97
  741. package/type/schema.mjs.map +1 -1
  742. package/type/validate.d.mts +36 -7
  743. package/type/validate.d.ts +36 -7
  744. package/type/validate.js +83 -195
  745. package/type/validate.js.map +1 -1
  746. package/type/validate.mjs +1 -113
  747. package/type/validate.mjs.map +1 -1
  748. package/utilities/TypeInfo.d.mts +570 -7
  749. package/utilities/TypeInfo.d.ts +570 -7
  750. package/utilities/TypeInfo.js +62 -85
  751. package/utilities/TypeInfo.js.map +1 -1
  752. package/utilities/TypeInfo.mjs +2 -25
  753. package/utilities/TypeInfo.mjs.map +1 -1
  754. package/utilities/astFromValue.d.mts +39 -6
  755. package/utilities/astFromValue.d.ts +39 -6
  756. package/utilities/astFromValue.js +30 -74
  757. package/utilities/astFromValue.js.map +1 -1
  758. package/utilities/astFromValue.mjs +0 -44
  759. package/utilities/astFromValue.mjs.map +1 -1
  760. package/utilities/buildASTSchema.d.mts +71 -11
  761. package/utilities/buildASTSchema.d.ts +71 -11
  762. package/utilities/buildASTSchema.js +11 -31
  763. package/utilities/buildASTSchema.js.map +1 -1
  764. package/utilities/buildASTSchema.mjs +1 -21
  765. package/utilities/buildASTSchema.mjs.map +1 -1
  766. package/utilities/buildClientSchema.d.mts +20 -5
  767. package/utilities/buildClientSchema.d.ts +20 -5
  768. package/utilities/buildClientSchema.js +53 -83
  769. package/utilities/buildClientSchema.js.map +1 -1
  770. package/utilities/buildClientSchema.mjs +1 -30
  771. package/utilities/buildClientSchema.mjs.map +1 -1
  772. package/utilities/coerceInputValue.d.mts +88 -6
  773. package/utilities/coerceInputValue.d.ts +88 -6
  774. package/utilities/coerceInputValue.js +52 -81
  775. package/utilities/coerceInputValue.js.map +1 -1
  776. package/utilities/coerceInputValue.mjs +21 -50
  777. package/utilities/coerceInputValue.mjs.map +1 -1
  778. package/utilities/concatAST.d.mts +13 -1
  779. package/utilities/concatAST.d.ts +13 -1
  780. package/utilities/concatAST.js +2 -7
  781. package/utilities/concatAST.js.map +1 -1
  782. package/utilities/concatAST.mjs +0 -5
  783. package/utilities/concatAST.mjs.map +1 -1
  784. package/utilities/extendSchema.d.mts +61 -6
  785. package/utilities/extendSchema.d.ts +61 -6
  786. package/utilities/extendSchema.js +92 -126
  787. package/utilities/extendSchema.js.map +1 -1
  788. package/utilities/extendSchema.mjs +27 -61
  789. package/utilities/extendSchema.mjs.map +1 -1
  790. package/utilities/findSchemaChanges.d.mts +100 -2
  791. package/utilities/findSchemaChanges.d.ts +100 -2
  792. package/utilities/findSchemaChanges.js +41 -75
  793. package/utilities/findSchemaChanges.js.map +1 -1
  794. package/utilities/findSchemaChanges.mjs +3 -37
  795. package/utilities/findSchemaChanges.mjs.map +1 -1
  796. package/utilities/getDefaultValueAST.d.mts +3 -2
  797. package/utilities/getDefaultValueAST.d.ts +3 -2
  798. package/utilities/getDefaultValueAST.js +7 -7
  799. package/utilities/getDefaultValueAST.js.map +1 -1
  800. package/utilities/getDefaultValueAST.mjs.map +1 -1
  801. package/utilities/getIntrospectionQuery.d.mts +151 -3
  802. package/utilities/getIntrospectionQuery.d.ts +151 -3
  803. package/utilities/getIntrospectionQuery.js +22 -42
  804. package/utilities/getIntrospectionQuery.js.map +1 -1
  805. package/utilities/getIntrospectionQuery.mjs +22 -42
  806. package/utilities/getIntrospectionQuery.mjs.map +1 -1
  807. package/utilities/getOperationAST.d.mts +17 -2
  808. package/utilities/getOperationAST.d.ts +17 -2
  809. package/utilities/getOperationAST.js +2 -10
  810. package/utilities/getOperationAST.js.map +1 -1
  811. package/utilities/getOperationAST.mjs +0 -8
  812. package/utilities/getOperationAST.mjs.map +1 -1
  813. package/utilities/index.d.mts +45 -30
  814. package/utilities/index.d.ts +45 -30
  815. package/utilities/index.js +61 -88
  816. package/utilities/index.js.map +1 -1
  817. package/utilities/index.mjs +4 -37
  818. package/utilities/index.mjs.map +1 -1
  819. package/utilities/introspectionFromSchema.d.mts +56 -2
  820. package/utilities/introspectionFromSchema.d.ts +56 -2
  821. package/utilities/introspectionFromSchema.js +8 -16
  822. package/utilities/introspectionFromSchema.js.map +1 -1
  823. package/utilities/introspectionFromSchema.mjs +1 -9
  824. package/utilities/introspectionFromSchema.mjs.map +1 -1
  825. package/utilities/lexicographicSortSchema.d.mts +36 -1
  826. package/utilities/lexicographicSortSchema.d.ts +36 -1
  827. package/utilities/lexicographicSortSchema.js +14 -19
  828. package/utilities/lexicographicSortSchema.js.map +1 -1
  829. package/utilities/lexicographicSortSchema.mjs +0 -5
  830. package/utilities/lexicographicSortSchema.mjs.map +1 -1
  831. package/utilities/mapSchemaConfig.d.mts +9 -6
  832. package/utilities/mapSchemaConfig.d.ts +9 -6
  833. package/utilities/mapSchemaConfig.js +28 -40
  834. package/utilities/mapSchemaConfig.js.map +1 -1
  835. package/utilities/mapSchemaConfig.mjs +0 -12
  836. package/utilities/mapSchemaConfig.mjs.map +1 -1
  837. package/utilities/printSchema.d.mts +87 -3
  838. package/utilities/printSchema.d.ts +87 -3
  839. package/utilities/printSchema.js +30 -59
  840. package/utilities/printSchema.js.map +1 -1
  841. package/utilities/printSchema.mjs +1 -30
  842. package/utilities/printSchema.mjs.map +1 -1
  843. package/utilities/replaceVariables.d.mts +40 -4
  844. package/utilities/replaceVariables.d.ts +40 -4
  845. package/utilities/replaceVariables.js +9 -17
  846. package/utilities/replaceVariables.js.map +1 -1
  847. package/utilities/replaceVariables.mjs +0 -8
  848. package/utilities/replaceVariables.mjs.map +1 -1
  849. package/utilities/resolveSchemaCoordinate.d.mts +67 -5
  850. package/utilities/resolveSchemaCoordinate.d.ts +67 -5
  851. package/utilities/resolveSchemaCoordinate.js +23 -79
  852. package/utilities/resolveSchemaCoordinate.js.map +1 -1
  853. package/utilities/resolveSchemaCoordinate.mjs +0 -56
  854. package/utilities/resolveSchemaCoordinate.mjs.map +1 -1
  855. package/utilities/separateOperations.d.mts +32 -2
  856. package/utilities/separateOperations.d.ts +32 -2
  857. package/utilities/separateOperations.js +7 -22
  858. package/utilities/separateOperations.js.map +1 -1
  859. package/utilities/separateOperations.mjs +0 -15
  860. package/utilities/separateOperations.mjs.map +1 -1
  861. package/utilities/sortValueNode.d.mts +1 -1
  862. package/utilities/sortValueNode.d.ts +1 -1
  863. package/utilities/sortValueNode.js +12 -19
  864. package/utilities/sortValueNode.js.map +1 -1
  865. package/utilities/sortValueNode.mjs +0 -7
  866. package/utilities/sortValueNode.mjs.map +1 -1
  867. package/utilities/stripIgnoredCharacters.d.mts +14 -7
  868. package/utilities/stripIgnoredCharacters.d.ts +14 -7
  869. package/utilities/stripIgnoredCharacters.js +11 -76
  870. package/utilities/stripIgnoredCharacters.js.map +1 -1
  871. package/utilities/stripIgnoredCharacters.mjs +0 -65
  872. package/utilities/stripIgnoredCharacters.mjs.map +1 -1
  873. package/utilities/typeComparators.d.mts +86 -2
  874. package/utilities/typeComparators.d.ts +86 -2
  875. package/utilities/typeComparators.js +14 -47
  876. package/utilities/typeComparators.js.map +1 -1
  877. package/utilities/typeComparators.mjs +0 -33
  878. package/utilities/typeComparators.mjs.map +1 -1
  879. package/utilities/typeFromAST.d.mts +90 -4
  880. package/utilities/typeFromAST.d.ts +90 -4
  881. package/utilities/typeFromAST.js +7 -7
  882. package/utilities/typeFromAST.js.map +1 -1
  883. package/utilities/typeFromAST.mjs.map +1 -1
  884. package/utilities/typedQueryDocumentNode.d.mts +5 -1
  885. package/utilities/typedQueryDocumentNode.d.ts +5 -1
  886. package/utilities/typedQueryDocumentNode.js.map +1 -1
  887. package/utilities/typedQueryDocumentNode.mjs.map +1 -1
  888. package/utilities/validateInputValue.d.mts +129 -6
  889. package/utilities/validateInputValue.d.ts +129 -6
  890. package/utilities/validateInputValue.js +60 -80
  891. package/utilities/validateInputValue.js.map +1 -1
  892. package/utilities/validateInputValue.mjs +0 -20
  893. package/utilities/validateInputValue.mjs.map +1 -1
  894. package/utilities/valueFromAST.d.mts +45 -4
  895. package/utilities/valueFromAST.d.ts +45 -4
  896. package/utilities/valueFromAST.js +32 -72
  897. package/utilities/valueFromAST.js.map +1 -1
  898. package/utilities/valueFromAST.mjs +13 -53
  899. package/utilities/valueFromAST.mjs.map +1 -1
  900. package/utilities/valueFromASTUntyped.d.mts +18 -5
  901. package/utilities/valueFromASTUntyped.d.ts +18 -5
  902. package/utilities/valueFromASTUntyped.js +12 -28
  903. package/utilities/valueFromASTUntyped.js.map +1 -1
  904. package/utilities/valueFromASTUntyped.mjs +0 -16
  905. package/utilities/valueFromASTUntyped.mjs.map +1 -1
  906. package/utilities/valueToLiteral.d.mts +32 -3
  907. package/utilities/valueToLiteral.d.ts +32 -3
  908. package/utilities/valueToLiteral.js +37 -70
  909. package/utilities/valueToLiteral.js.map +1 -1
  910. package/utilities/valueToLiteral.mjs +7 -40
  911. package/utilities/valueToLiteral.mjs.map +1 -1
  912. package/validation/ValidationContext.d.mts +499 -9
  913. package/validation/ValidationContext.d.ts +499 -9
  914. package/validation/ValidationContext.js +9 -16
  915. package/validation/ValidationContext.js.map +1 -1
  916. package/validation/ValidationContext.mjs +1 -8
  917. package/validation/ValidationContext.mjs.map +1 -1
  918. package/validation/index.d.mts +53 -46
  919. package/validation/index.d.ts +53 -46
  920. package/validation/index.js +91 -125
  921. package/validation/index.js.map +1 -1
  922. package/validation/index.mjs +0 -34
  923. package/validation/index.mjs.map +1 -1
  924. package/validation/rules/DeferStreamDirectiveLabelRule.d.mts +32 -2
  925. package/validation/rules/DeferStreamDirectiveLabelRule.d.ts +32 -2
  926. package/validation/rules/DeferStreamDirectiveLabelRule.js +9 -14
  927. package/validation/rules/DeferStreamDirectiveLabelRule.js.map +1 -1
  928. package/validation/rules/DeferStreamDirectiveLabelRule.mjs +0 -5
  929. package/validation/rules/DeferStreamDirectiveLabelRule.mjs.map +1 -1
  930. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +30 -2
  931. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +30 -2
  932. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js +8 -13
  933. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
  934. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs +0 -5
  935. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
  936. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.mts +54 -2
  937. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +54 -2
  938. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js +14 -19
  939. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js.map +1 -1
  940. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs +0 -5
  941. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs.map +1 -1
  942. package/validation/rules/ExecutableDefinitionsRule.d.mts +30 -2
  943. package/validation/rules/ExecutableDefinitionsRule.d.ts +30 -2
  944. package/validation/rules/ExecutableDefinitionsRule.js +7 -15
  945. package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
  946. package/validation/rules/ExecutableDefinitionsRule.mjs +0 -8
  947. package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
  948. package/validation/rules/FieldsOnCorrectTypeRule.d.mts +30 -2
  949. package/validation/rules/FieldsOnCorrectTypeRule.d.ts +30 -2
  950. package/validation/rules/FieldsOnCorrectTypeRule.js +14 -41
  951. package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
  952. package/validation/rules/FieldsOnCorrectTypeRule.mjs +0 -27
  953. package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
  954. package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +30 -2
  955. package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +30 -2
  956. package/validation/rules/FragmentsOnCompositeTypesRule.js +12 -21
  957. package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
  958. package/validation/rules/FragmentsOnCompositeTypesRule.mjs +0 -9
  959. package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
  960. package/validation/rules/KnownArgumentNamesRule.d.mts +31 -5
  961. package/validation/rules/KnownArgumentNamesRule.d.ts +31 -5
  962. package/validation/rules/KnownArgumentNamesRule.js +16 -29
  963. package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
  964. package/validation/rules/KnownArgumentNamesRule.mjs +0 -13
  965. package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
  966. package/validation/rules/KnownDirectivesRule.d.mts +30 -2
  967. package/validation/rules/KnownDirectivesRule.d.ts +30 -2
  968. package/validation/rules/KnownDirectivesRule.js +66 -73
  969. package/validation/rules/KnownDirectivesRule.js.map +1 -1
  970. package/validation/rules/KnownDirectivesRule.mjs +3 -10
  971. package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
  972. package/validation/rules/KnownFragmentNamesRule.d.mts +30 -2
  973. package/validation/rules/KnownFragmentNamesRule.d.ts +30 -2
  974. package/validation/rules/KnownFragmentNamesRule.js +2 -10
  975. package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
  976. package/validation/rules/KnownFragmentNamesRule.mjs +0 -8
  977. package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
  978. package/validation/rules/KnownOperationTypesRule.d.mts +22 -2
  979. package/validation/rules/KnownOperationTypesRule.d.ts +22 -2
  980. package/validation/rules/KnownOperationTypesRule.js +2 -10
  981. package/validation/rules/KnownOperationTypesRule.js.map +1 -1
  982. package/validation/rules/KnownOperationTypesRule.mjs +0 -8
  983. package/validation/rules/KnownOperationTypesRule.mjs.map +1 -1
  984. package/validation/rules/KnownTypeNamesRule.d.mts +30 -2
  985. package/validation/rules/KnownTypeNamesRule.d.ts +30 -2
  986. package/validation/rules/KnownTypeNamesRule.js +11 -19
  987. package/validation/rules/KnownTypeNamesRule.js.map +1 -1
  988. package/validation/rules/KnownTypeNamesRule.mjs +0 -8
  989. package/validation/rules/KnownTypeNamesRule.mjs.map +1 -1
  990. package/validation/rules/LoneAnonymousOperationRule.d.mts +30 -2
  991. package/validation/rules/LoneAnonymousOperationRule.d.ts +30 -2
  992. package/validation/rules/LoneAnonymousOperationRule.js +4 -12
  993. package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
  994. package/validation/rules/LoneAnonymousOperationRule.mjs +0 -8
  995. package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
  996. package/validation/rules/LoneSchemaDefinitionRule.d.mts +23 -2
  997. package/validation/rules/LoneSchemaDefinitionRule.d.ts +23 -2
  998. package/validation/rules/LoneSchemaDefinitionRule.js +3 -8
  999. package/validation/rules/LoneSchemaDefinitionRule.js.map +1 -1
  1000. package/validation/rules/LoneSchemaDefinitionRule.mjs +0 -5
  1001. package/validation/rules/LoneSchemaDefinitionRule.mjs.map +1 -1
  1002. package/validation/rules/MaxIntrospectionDepthRule.d.mts +33 -2
  1003. package/validation/rules/MaxIntrospectionDepthRule.d.ts +33 -2
  1004. package/validation/rules/MaxIntrospectionDepthRule.js +5 -19
  1005. package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
  1006. package/validation/rules/MaxIntrospectionDepthRule.mjs +0 -14
  1007. package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
  1008. package/validation/rules/NoFragmentCyclesRule.d.mts +30 -2
  1009. package/validation/rules/NoFragmentCyclesRule.d.ts +30 -2
  1010. package/validation/rules/NoFragmentCyclesRule.js +2 -17
  1011. package/validation/rules/NoFragmentCyclesRule.js.map +1 -1
  1012. package/validation/rules/NoFragmentCyclesRule.mjs +0 -15
  1013. package/validation/rules/NoFragmentCyclesRule.mjs.map +1 -1
  1014. package/validation/rules/NoUndefinedVariablesRule.d.mts +30 -2
  1015. package/validation/rules/NoUndefinedVariablesRule.d.ts +30 -2
  1016. package/validation/rules/NoUndefinedVariablesRule.js +2 -10
  1017. package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
  1018. package/validation/rules/NoUndefinedVariablesRule.mjs +0 -8
  1019. package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
  1020. package/validation/rules/NoUnusedFragmentsRule.d.mts +30 -2
  1021. package/validation/rules/NoUnusedFragmentsRule.d.ts +30 -2
  1022. package/validation/rules/NoUnusedFragmentsRule.js +2 -10
  1023. package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
  1024. package/validation/rules/NoUnusedFragmentsRule.mjs +0 -8
  1025. package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
  1026. package/validation/rules/NoUnusedVariablesRule.d.mts +31 -2
  1027. package/validation/rules/NoUnusedVariablesRule.d.ts +31 -2
  1028. package/validation/rules/NoUnusedVariablesRule.js +3 -11
  1029. package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
  1030. package/validation/rules/NoUnusedVariablesRule.mjs +0 -8
  1031. package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
  1032. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +35 -2
  1033. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +35 -2
  1034. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +32 -206
  1035. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
  1036. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +1 -175
  1037. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
  1038. package/validation/rules/PossibleFragmentSpreadsRule.d.mts +38 -2
  1039. package/validation/rules/PossibleFragmentSpreadsRule.d.ts +38 -2
  1040. package/validation/rules/PossibleFragmentSpreadsRule.js +17 -24
  1041. package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
  1042. package/validation/rules/PossibleFragmentSpreadsRule.mjs +0 -7
  1043. package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
  1044. package/validation/rules/PossibleTypeExtensionsRule.d.mts +23 -2
  1045. package/validation/rules/PossibleTypeExtensionsRule.d.ts +23 -2
  1046. package/validation/rules/PossibleTypeExtensionsRule.js +38 -49
  1047. package/validation/rules/PossibleTypeExtensionsRule.js.map +1 -1
  1048. package/validation/rules/PossibleTypeExtensionsRule.mjs +0 -11
  1049. package/validation/rules/PossibleTypeExtensionsRule.mjs.map +1 -1
  1050. package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +31 -5
  1051. package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +31 -5
  1052. package/validation/rules/ProvidedRequiredArgumentsRule.js +20 -33
  1053. package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
  1054. package/validation/rules/ProvidedRequiredArgumentsRule.mjs +0 -13
  1055. package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
  1056. package/validation/rules/ScalarLeafsRule.d.mts +30 -2
  1057. package/validation/rules/ScalarLeafsRule.d.ts +30 -2
  1058. package/validation/rules/ScalarLeafsRule.js +10 -16
  1059. package/validation/rules/ScalarLeafsRule.js.map +1 -1
  1060. package/validation/rules/ScalarLeafsRule.mjs +0 -6
  1061. package/validation/rules/ScalarLeafsRule.mjs.map +1 -1
  1062. package/validation/rules/SingleFieldSubscriptionsRule.d.mts +36 -4
  1063. package/validation/rules/SingleFieldSubscriptionsRule.d.ts +36 -4
  1064. package/validation/rules/SingleFieldSubscriptionsRule.js +8 -17
  1065. package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
  1066. package/validation/rules/SingleFieldSubscriptionsRule.mjs +0 -9
  1067. package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
  1068. package/validation/rules/StreamDirectiveOnListFieldRule.d.mts +23 -2
  1069. package/validation/rules/StreamDirectiveOnListFieldRule.d.ts +23 -2
  1070. package/validation/rules/StreamDirectiveOnListFieldRule.js +7 -12
  1071. package/validation/rules/StreamDirectiveOnListFieldRule.js.map +1 -1
  1072. package/validation/rules/StreamDirectiveOnListFieldRule.mjs +0 -5
  1073. package/validation/rules/StreamDirectiveOnListFieldRule.mjs.map +1 -1
  1074. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.mts +23 -2
  1075. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +23 -2
  1076. package/validation/rules/UniqueArgumentDefinitionNamesRule.js +4 -10
  1077. package/validation/rules/UniqueArgumentDefinitionNamesRule.js.map +1 -1
  1078. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +0 -6
  1079. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs.map +1 -1
  1080. package/validation/rules/UniqueArgumentNamesRule.d.mts +30 -2
  1081. package/validation/rules/UniqueArgumentNamesRule.d.ts +30 -2
  1082. package/validation/rules/UniqueArgumentNamesRule.js +4 -12
  1083. package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
  1084. package/validation/rules/UniqueArgumentNamesRule.mjs +0 -8
  1085. package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
  1086. package/validation/rules/UniqueDirectiveNamesRule.d.mts +23 -2
  1087. package/validation/rules/UniqueDirectiveNamesRule.d.ts +23 -2
  1088. package/validation/rules/UniqueDirectiveNamesRule.js +3 -8
  1089. package/validation/rules/UniqueDirectiveNamesRule.js.map +1 -1
  1090. package/validation/rules/UniqueDirectiveNamesRule.mjs +0 -5
  1091. package/validation/rules/UniqueDirectiveNamesRule.mjs.map +1 -1
  1092. package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +30 -2
  1093. package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +30 -2
  1094. package/validation/rules/UniqueDirectivesPerLocationRule.js +20 -21
  1095. package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
  1096. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +10 -11
  1097. package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
  1098. package/validation/rules/UniqueEnumValueNamesRule.d.mts +23 -2
  1099. package/validation/rules/UniqueEnumValueNamesRule.d.ts +23 -2
  1100. package/validation/rules/UniqueEnumValueNamesRule.js +5 -10
  1101. package/validation/rules/UniqueEnumValueNamesRule.js.map +1 -1
  1102. package/validation/rules/UniqueEnumValueNamesRule.mjs +0 -5
  1103. package/validation/rules/UniqueEnumValueNamesRule.mjs.map +1 -1
  1104. package/validation/rules/UniqueFieldDefinitionNamesRule.d.mts +23 -2
  1105. package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +23 -2
  1106. package/validation/rules/UniqueFieldDefinitionNamesRule.js +5 -10
  1107. package/validation/rules/UniqueFieldDefinitionNamesRule.js.map +1 -1
  1108. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +0 -5
  1109. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs.map +1 -1
  1110. package/validation/rules/UniqueFragmentNamesRule.d.mts +30 -2
  1111. package/validation/rules/UniqueFragmentNamesRule.d.ts +30 -2
  1112. package/validation/rules/UniqueFragmentNamesRule.js +2 -9
  1113. package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
  1114. package/validation/rules/UniqueFragmentNamesRule.mjs +0 -7
  1115. package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
  1116. package/validation/rules/UniqueInputFieldNamesRule.d.mts +34 -2
  1117. package/validation/rules/UniqueInputFieldNamesRule.d.ts +34 -2
  1118. package/validation/rules/UniqueInputFieldNamesRule.js +4 -12
  1119. package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
  1120. package/validation/rules/UniqueInputFieldNamesRule.mjs +0 -8
  1121. package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
  1122. package/validation/rules/UniqueOperationNamesRule.d.mts +30 -2
  1123. package/validation/rules/UniqueOperationNamesRule.d.ts +30 -2
  1124. package/validation/rules/UniqueOperationNamesRule.js +2 -9
  1125. package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
  1126. package/validation/rules/UniqueOperationNamesRule.mjs +0 -7
  1127. package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
  1128. package/validation/rules/UniqueOperationTypesRule.d.mts +23 -2
  1129. package/validation/rules/UniqueOperationTypesRule.d.ts +23 -2
  1130. package/validation/rules/UniqueOperationTypesRule.js +3 -8
  1131. package/validation/rules/UniqueOperationTypesRule.js.map +1 -1
  1132. package/validation/rules/UniqueOperationTypesRule.mjs +0 -5
  1133. package/validation/rules/UniqueOperationTypesRule.mjs.map +1 -1
  1134. package/validation/rules/UniqueTypeNamesRule.d.mts +23 -2
  1135. package/validation/rules/UniqueTypeNamesRule.d.ts +23 -2
  1136. package/validation/rules/UniqueTypeNamesRule.js +3 -8
  1137. package/validation/rules/UniqueTypeNamesRule.js.map +1 -1
  1138. package/validation/rules/UniqueTypeNamesRule.mjs +0 -5
  1139. package/validation/rules/UniqueTypeNamesRule.mjs.map +1 -1
  1140. package/validation/rules/UniqueVariableNamesRule.d.mts +30 -2
  1141. package/validation/rules/UniqueVariableNamesRule.d.ts +30 -2
  1142. package/validation/rules/UniqueVariableNamesRule.js +4 -9
  1143. package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
  1144. package/validation/rules/UniqueVariableNamesRule.mjs +0 -5
  1145. package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
  1146. package/validation/rules/ValuesOfCorrectTypeRule.d.mts +30 -2
  1147. package/validation/rules/ValuesOfCorrectTypeRule.d.ts +30 -2
  1148. package/validation/rules/ValuesOfCorrectTypeRule.js +3 -23
  1149. package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
  1150. package/validation/rules/ValuesOfCorrectTypeRule.mjs +1 -21
  1151. package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
  1152. package/validation/rules/VariablesAreInputTypesRule.d.mts +34 -2
  1153. package/validation/rules/VariablesAreInputTypesRule.d.ts +34 -2
  1154. package/validation/rules/VariablesAreInputTypesRule.js +8 -16
  1155. package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
  1156. package/validation/rules/VariablesAreInputTypesRule.mjs +0 -8
  1157. package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
  1158. package/validation/rules/VariablesInAllowedPositionRule.d.mts +30 -2
  1159. package/validation/rules/VariablesInAllowedPositionRule.d.ts +30 -2
  1160. package/validation/rules/VariablesInAllowedPositionRule.js +14 -34
  1161. package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
  1162. package/validation/rules/VariablesInAllowedPositionRule.mjs +0 -20
  1163. package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
  1164. package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +43 -2
  1165. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +43 -2
  1166. package/validation/rules/custom/NoDeprecatedCustomRule.js +8 -18
  1167. package/validation/rules/custom/NoDeprecatedCustomRule.js.map +1 -1
  1168. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +0 -10
  1169. package/validation/rules/custom/NoDeprecatedCustomRule.mjs.map +1 -1
  1170. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.mts +30 -2
  1171. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +30 -2
  1172. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +6 -16
  1173. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
  1174. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +0 -10
  1175. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
  1176. package/validation/specifiedRules.d.mts +3 -4
  1177. package/validation/specifiedRules.d.ts +3 -4
  1178. package/validation/specifiedRules.js +87 -133
  1179. package/validation/specifiedRules.js.map +1 -1
  1180. package/validation/specifiedRules.mjs +0 -46
  1181. package/validation/specifiedRules.mjs.map +1 -1
  1182. package/validation/validate.d.mts +70 -12
  1183. package/validation/validate.d.ts +70 -12
  1184. package/validation/validate.js +19 -60
  1185. package/validation/validate.js.map +1 -1
  1186. package/validation/validate.mjs +0 -41
  1187. package/validation/validate.mjs.map +1 -1
  1188. package/version.d.mts +3 -6
  1189. package/version.d.ts +3 -6
  1190. package/version.js +2 -10
  1191. package/version.js.map +1 -1
  1192. package/version.mjs +2 -10
  1193. package/version.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/type/definition.ts"],"names":[],"mappings":"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","sourcesContent":["import { devAssert } from '../jsutils/devAssert.js';\nimport { didYouMean } from '../jsutils/didYouMean.js';\nimport { identityFunc } from '../jsutils/identityFunc.js';\nimport { inspect } from '../jsutils/inspect.js';\nimport { instanceOf } from '../jsutils/instanceOf.js';\nimport { keyMap } from '../jsutils/keyMap.js';\nimport { keyValMap } from '../jsutils/keyValMap.js';\nimport { mapValue } from '../jsutils/mapValue.js';\nimport type { Maybe } from '../jsutils/Maybe.js';\nimport type { ObjMap } from '../jsutils/ObjMap.js';\nimport type { Path } from '../jsutils/Path.js';\nimport type { PromiseOrValue } from '../jsutils/PromiseOrValue.js';\nimport { suggestionList } from '../jsutils/suggestionList.js';\nimport { toObjMapWithSymbols } from '../jsutils/toObjMap.js';\n\nimport { GraphQLError } from '../error/GraphQLError.js';\n\nimport type {\n ConstValueNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n EnumValueDefinitionNode,\n FieldDefinitionNode,\n FieldNode,\n FragmentDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n OperationDefinitionNode,\n ScalarTypeDefinitionNode,\n ScalarTypeExtensionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n ValueNode,\n} from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\nimport { print } from '../language/printer.js';\n\nimport type { GraphQLVariableSignature } from '../execution/getVariableSignature.js';\nimport type { VariableValues } from '../execution/values.js';\n\nimport { valueFromASTUntyped } from '../utilities/valueFromASTUntyped.js';\n\nimport { assertEnumValueName, assertName } from './assertName.js';\nimport type { GraphQLDirective } from './directives.js';\nimport type { GraphQLSchema } from './schema.js';\n\n// Predicates & Assertions\n\n/**\n * These are all of the possible kinds of types.\n */\nexport type GraphQLType = GraphQLNamedType | GraphQLWrappingType;\n\nexport function isType(type: unknown): type is GraphQLType {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n isListType(type) ||\n isNonNullType(type)\n );\n}\n\nexport function assertType(type: unknown): GraphQLType {\n if (!isType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL type.`);\n }\n return type;\n}\n\nconst scalarSymbol: unique symbol = Symbol('Scalar');\n\n/**\n * There are predicates for each GraphQL schema element.\n */\nexport function isScalarType(type: unknown): type is GraphQLScalarType {\n return instanceOf(type, scalarSymbol, GraphQLScalarType);\n}\n\nexport function assertScalarType(type: unknown): GraphQLScalarType {\n if (!isScalarType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Scalar type.`);\n }\n return type;\n}\n\nconst objectSymbol: unique symbol = Symbol('Object');\n\nexport function isObjectType(type: unknown): type is GraphQLObjectType {\n return instanceOf(type, objectSymbol, GraphQLObjectType);\n}\n\nexport function assertObjectType(type: unknown): GraphQLObjectType {\n if (!isObjectType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Object type.`);\n }\n return type;\n}\n\nconst fieldSymbol: unique symbol = Symbol('Field');\n\nexport function isField(field: unknown): field is GraphQLField {\n return instanceOf(field, fieldSymbol, GraphQLField);\n}\n\nexport function assertField(field: unknown): GraphQLField {\n if (!isField(field)) {\n throw new Error(`Expected ${inspect(field)} to be a GraphQL field.`);\n }\n return field;\n}\n\nconst argumentSymbol: unique symbol = Symbol('Argument');\n\nexport function isArgument(arg: unknown): arg is GraphQLArgument {\n return instanceOf(arg, argumentSymbol, GraphQLArgument);\n}\n\nexport function assertArgument(arg: unknown): GraphQLArgument {\n if (!isArgument(arg)) {\n throw new Error(`Expected ${inspect(arg)} to be a GraphQL argument.`);\n }\n return arg;\n}\n\nconst interfaceSymbol: unique symbol = Symbol('Interface');\n\nexport function isInterfaceType(type: unknown): type is GraphQLInterfaceType {\n return instanceOf(type, interfaceSymbol, GraphQLInterfaceType);\n}\n\nexport function assertInterfaceType(type: unknown): GraphQLInterfaceType {\n if (!isInterfaceType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL Interface type.`,\n );\n }\n return type;\n}\n\nconst unionSymbol: unique symbol = Symbol('Union');\n\nexport function isUnionType(type: unknown): type is GraphQLUnionType {\n return instanceOf(type, unionSymbol, GraphQLUnionType);\n}\n\nexport function assertUnionType(type: unknown): GraphQLUnionType {\n if (!isUnionType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Union type.`);\n }\n return type;\n}\n\nconst enumSymbol: unique symbol = Symbol('Enum');\n\nexport function isEnumType(type: unknown): type is GraphQLEnumType {\n return instanceOf(type, enumSymbol, GraphQLEnumType);\n}\n\nexport function assertEnumType(type: unknown): GraphQLEnumType {\n if (!isEnumType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Enum type.`);\n }\n return type;\n}\n\nconst enumValueSymbol: unique symbol = Symbol('EnumValue');\n\nexport function isEnumValue(value: unknown): value is GraphQLEnumValue {\n return instanceOf(value, enumValueSymbol, GraphQLEnumValue);\n}\n\nexport function assertEnumValue(value: unknown): GraphQLEnumValue {\n if (!isEnumValue(value)) {\n throw new Error(`Expected ${inspect(value)} to be a GraphQL Enum value.`);\n }\n return value;\n}\n\nconst inputObjectSymbol: unique symbol = Symbol('InputObject');\n\nexport function isInputObjectType(\n type: unknown,\n): type is GraphQLInputObjectType {\n return instanceOf(type, inputObjectSymbol, GraphQLInputObjectType);\n}\n\nexport function assertInputObjectType(type: unknown): GraphQLInputObjectType {\n if (!isInputObjectType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL Input Object type.`,\n );\n }\n return type;\n}\n\nconst inputFieldSymbol: unique symbol = Symbol('InputField');\n\nexport function isInputField(field: unknown): field is GraphQLInputField {\n return instanceOf(field, inputFieldSymbol, GraphQLInputField);\n}\n\nexport function assertInputField(field: unknown): GraphQLInputField {\n if (!isInputField(field)) {\n throw new Error(`Expected ${inspect(field)} to be a GraphQL input field.`);\n }\n return field;\n}\n\nconst listSymbol: unique symbol = Symbol('List');\n\nexport function isListType(\n type: GraphQLInputType,\n): type is GraphQLList<GraphQLInputType>;\nexport function isListType(\n type: GraphQLOutputType,\n): type is GraphQLList<GraphQLOutputType>;\nexport function isListType(type: unknown): type is GraphQLList<GraphQLType>;\nexport function isListType(type: unknown): type is GraphQLList<GraphQLType> {\n return instanceOf(type, listSymbol, GraphQLList);\n}\n\nexport function assertListType(type: unknown): GraphQLList<GraphQLType> {\n if (!isListType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL List type.`);\n }\n return type;\n}\n\nconst nonNullSymbol: unique symbol = Symbol('NonNull');\n\nexport function isNonNullType(\n type: GraphQLInputType,\n): type is GraphQLNonNull<GraphQLNullableInputType>;\nexport function isNonNullType(\n type: GraphQLOutputType,\n): type is GraphQLNonNull<GraphQLNullableOutputType>;\nexport function isNonNullType(\n type: unknown,\n): type is GraphQLNonNull<GraphQLNullableType>;\nexport function isNonNullType(\n type: unknown,\n): type is GraphQLNonNull<GraphQLNullableType> {\n return instanceOf(type, nonNullSymbol, GraphQLNonNull);\n}\n\nexport function assertNonNullType(\n type: unknown,\n): GraphQLNonNull<GraphQLNullableType> {\n if (!isNonNullType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Non-Null type.`);\n }\n return type;\n}\n\n/**\n * These types may be used as input types for arguments and directives.\n */\nexport type GraphQLNullableInputType =\n | GraphQLNamedInputType\n | GraphQLList<GraphQLInputType>;\n\nexport type GraphQLInputType =\n | GraphQLNullableInputType\n | GraphQLNonNull<GraphQLNullableInputType>;\n\nexport function isInputType(type: unknown): type is GraphQLInputType {\n return (\n isScalarType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n (isWrappingType(type) && isInputType(type.ofType))\n );\n}\n\nexport function assertInputType(type: unknown): GraphQLInputType {\n if (!isInputType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL input type.`);\n }\n return type;\n}\n\n/**\n * These types may be used as output types as the result of fields.\n */\nexport type GraphQLNullableOutputType =\n | GraphQLNamedOutputType\n | GraphQLList<GraphQLOutputType>;\n\nexport type GraphQLOutputType =\n | GraphQLNullableOutputType\n | GraphQLNonNull<GraphQLNullableOutputType>;\n\nexport function isOutputType(type: unknown): type is GraphQLOutputType {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n (isWrappingType(type) && isOutputType(type.ofType))\n );\n}\n\nexport function assertOutputType(type: unknown): GraphQLOutputType {\n if (!isOutputType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL output type.`);\n }\n return type;\n}\n\n/**\n * These types may describe types which may be leaf values.\n */\nexport type GraphQLLeafType = GraphQLScalarType | GraphQLEnumType;\n\nexport function isLeafType(type: unknown): type is GraphQLLeafType {\n return isScalarType(type) || isEnumType(type);\n}\n\nexport function assertLeafType(type: unknown): GraphQLLeafType {\n if (!isLeafType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL leaf type.`);\n }\n return type;\n}\n\n/**\n * These types may describe the parent context of a selection set.\n */\nexport type GraphQLCompositeType =\n | GraphQLObjectType\n | GraphQLInterfaceType\n | GraphQLUnionType;\n\nexport function isCompositeType(type: unknown): type is GraphQLCompositeType {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n\nexport function assertCompositeType(type: unknown): GraphQLCompositeType {\n if (!isCompositeType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL composite type.`,\n );\n }\n return type;\n}\n\n/**\n * These types may describe the parent context of a selection set.\n */\nexport type GraphQLAbstractType = GraphQLInterfaceType | GraphQLUnionType;\n\nexport function isAbstractType(type: unknown): type is GraphQLAbstractType {\n return isInterfaceType(type) || isUnionType(type);\n}\n\nexport function assertAbstractType(type: unknown): GraphQLAbstractType {\n if (!isAbstractType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL abstract type.`);\n }\n return type;\n}\n\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: new GraphQLList(PersonType) },\n * children: { type: new GraphQLList(PersonType) },\n * })\n * })\n * ```\n */\nexport class GraphQLList<\n T extends GraphQLType,\n> implements GraphQLSchemaElement {\n readonly __kind: symbol;\n readonly ofType: T;\n\n constructor(ofType: T) {\n this.__kind = listSymbol;\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLList';\n }\n\n toString(): string {\n return '[' + String(this.ofType) + ']';\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: new GraphQLNonNull(GraphQLString) },\n * })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\nexport class GraphQLNonNull<\n T extends GraphQLNullableType,\n> implements GraphQLSchemaElement {\n readonly __kind: symbol;\n readonly ofType: T;\n\n constructor(ofType: T) {\n this.__kind = nonNullSymbol;\n this.ofType = ofType;\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLNonNull';\n }\n\n toString(): string {\n return String(this.ofType) + '!';\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * These types wrap and modify other types\n */\n\nexport type GraphQLWrappingType =\n | GraphQLList<GraphQLType>\n | GraphQLNonNull<GraphQLNullableType>;\n\nexport function isWrappingType(type: unknown): type is GraphQLWrappingType {\n return isListType(type) || isNonNullType(type);\n}\n\nexport function assertWrappingType(type: unknown): GraphQLWrappingType {\n if (!isWrappingType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL wrapping type.`);\n }\n return type;\n}\n\n/**\n * These types can all accept null as a value.\n */\nexport type GraphQLNullableType = GraphQLNamedType | GraphQLList<GraphQLType>;\n\nexport function isNullableType(type: unknown): type is GraphQLNullableType {\n return isType(type) && !isNonNullType(type);\n}\n\nexport function assertNullableType(type: unknown): GraphQLNullableType {\n if (!isNullableType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL nullable type.`);\n }\n return type;\n}\n\nexport function getNullableType(type: undefined | null): void;\nexport function getNullableType<T extends GraphQLNullableType>(\n type: T | GraphQLNonNull<T>,\n): T;\nexport function getNullableType(\n type: Maybe<GraphQLType>,\n): GraphQLNullableType | undefined;\nexport function getNullableType(\n type: Maybe<GraphQLType>,\n): GraphQLNullableType | undefined {\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n\n/**\n * These named types do not include modifiers like List or NonNull.\n */\nexport type GraphQLNamedType = GraphQLNamedInputType | GraphQLNamedOutputType;\n\nexport type GraphQLNamedInputType =\n | GraphQLScalarType\n | GraphQLEnumType\n | GraphQLInputObjectType;\n\nexport type GraphQLNamedOutputType =\n | GraphQLScalarType\n | GraphQLObjectType\n | GraphQLInterfaceType\n | GraphQLUnionType\n | GraphQLEnumType;\n\nexport function isNamedType(type: unknown): type is GraphQLNamedType {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type)\n );\n}\n\nexport function assertNamedType(type: unknown): GraphQLNamedType {\n if (!isNamedType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL named type.`);\n }\n return type;\n}\n\nexport function getNamedType(type: undefined | null): void;\nexport function getNamedType(type: GraphQLInputType): GraphQLNamedInputType;\nexport function getNamedType(type: GraphQLOutputType): GraphQLNamedOutputType;\nexport function getNamedType(type: GraphQLType): GraphQLNamedType;\nexport function getNamedType(\n type: Maybe<GraphQLType>,\n): GraphQLNamedType | undefined;\nexport function getNamedType(\n type: Maybe<GraphQLType>,\n): GraphQLNamedType | undefined {\n if (type) {\n let unwrappedType = type;\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n return unwrappedType;\n }\n}\n\n/**\n * An interface for all Schema Elements.\n */\n\nexport interface GraphQLSchemaElement {\n toString: () => string;\n toJSON: () => string;\n}\n\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\nexport type ThunkReadonlyArray<T> = (() => ReadonlyArray<T>) | ReadonlyArray<T>;\nexport type ThunkObjMap<T> = (() => ObjMap<T>) | ObjMap<T>;\n\nexport function resolveReadonlyArrayThunk<T>(\n thunk: ThunkReadonlyArray<T>,\n): ReadonlyArray<T> {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\nexport function resolveObjMapThunk<T>(thunk: ThunkObjMap<T>): ObjMap<T> {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLScalarTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's coerceOutputValue function returns `null` or does not return a\n * value (i.e. it returns `undefined`) then an error will be raised and a\n * `null` value will be returned in the response. It is always better to\n * validate.\n *\n * Example:\n *\n * ```ts\n * function ensureOdd(value) {\n * if (!Number.isFinite(value)) {\n * throw new Error(\n * `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n * );\n * }\n *\n * if (value % 2 === 0) {\n * throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n * }\n * }\n *\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * coerceOutputValue(value) {\n * return ensureOdd(value);\n * },\n * coerceInputValue(value) {\n * return ensureOdd(value);\n * }\n * valueToLiteral(value) {\n * return parse(`${ensureOdd(value)`);\n * }\n * });\n * ```\n *\n * Custom scalars behavior is defined via the following functions:\n *\n * - coerceOutputValue(value): Implements \"Result Coercion\". Given an internal value,\n * produces an external value valid for this type. Returns undefined or\n * throws an error to indicate invalid values.\n *\n * - coerceInputValue(value): Implements \"Input Coercion\" for values. Given an\n * external value (for example, variable values), produces an internal value\n * valid for this type. Returns undefined or throws an error to indicate\n * invalid values.\n *\n * - coerceInputLiteral(ast): Implements \"Input Coercion\" for constant literals.\n * Given an GraphQL literal (AST) (for example, an argument value), produces\n * an internal value valid for this type. Returns undefined or throws an\n * error to indicate invalid values.\n *\n * - valueToLiteral(value): Converts an external value to a GraphQL\n * literal (AST). Returns undefined or throws an error to indicate\n * invalid values.\n *\n * Deprecated, to be removed in v18:\n *\n * - serialize(value): Implements \"Result Coercion\". Renamed to\n * `coerceOutputValue()`.\n *\n * - parseValue(value): Implements \"Input Coercion\" for values. Renamed to\n * `coerceInputValue()`.\n *\n * - parseLiteral(ast): Implements \"Input Coercion\" for literals including\n * non-specified replacement of variables embedded within complex scalars.\n * Replaced by the combination of the `replaceVariables()` utility and the\n * `coerceInputLiteral()` method.\n *\n */\nexport class GraphQLScalarType<\n TInternal = unknown,\n TExternal = TInternal,\n> implements GraphQLSchemaElement {\n readonly __kind: symbol;\n name: string;\n description: Maybe<string>;\n specifiedByURL: Maybe<string>;\n /** @deprecated use `coerceOutputValue()` instead, `serialize()` will be removed in v18 */\n serialize: GraphQLScalarSerializer<TExternal>;\n /** @deprecated use `coerceInputValue()` instead, `parseValue()` will be removed in v18 */\n parseValue: GraphQLScalarValueParser<TInternal>;\n /** @deprecated use `replaceVariables()` and `coerceInputLiteral()` instead, `parseLiteral()` will be removed in v18 */\n parseLiteral: GraphQLScalarLiteralParser<TInternal>;\n coerceOutputValue: GraphQLScalarOutputValueCoercer<TExternal>;\n coerceInputValue: GraphQLScalarInputValueCoercer<TInternal>;\n coerceInputLiteral: GraphQLScalarInputLiteralCoercer<TInternal> | undefined;\n valueToLiteral: GraphQLScalarValueToLiteral | undefined;\n extensions: Readonly<GraphQLScalarTypeExtensions>;\n astNode: Maybe<ScalarTypeDefinitionNode>;\n extensionASTNodes: ReadonlyArray<ScalarTypeExtensionNode>;\n\n constructor(config: Readonly<GraphQLScalarTypeConfig<TInternal, TExternal>>) {\n this.__kind = scalarSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.specifiedByURL = config.specifiedByURL;\n this.serialize =\n config.serialize ??\n config.coerceOutputValue ??\n (identityFunc as GraphQLScalarSerializer<TExternal>);\n this.parseValue =\n config.parseValue ??\n config.coerceInputValue ??\n (identityFunc as GraphQLScalarValueParser<TInternal>);\n this.parseLiteral =\n config.parseLiteral ??\n ((node, variables) =>\n this.coerceInputValue(valueFromASTUntyped(node, variables)));\n this.coerceOutputValue = config.coerceOutputValue ?? this.serialize;\n this.coerceInputValue = config.coerceInputValue ?? this.parseValue;\n this.coerceInputLiteral = config.coerceInputLiteral;\n this.valueToLiteral = config.valueToLiteral;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n\n if (config.parseLiteral) {\n devAssert(\n typeof config.parseValue === 'function' &&\n typeof config.parseLiteral === 'function',\n `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n );\n }\n\n if (config.coerceInputLiteral) {\n devAssert(\n typeof config.coerceInputValue === 'function' &&\n typeof config.coerceInputLiteral === 'function',\n `${this.name} must provide both \"coerceInputValue\" and \"coerceInputLiteral\" functions.`,\n );\n }\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLScalarType';\n }\n\n toConfig(): GraphQLScalarTypeNormalizedConfig<TInternal, TExternal> {\n return {\n name: this.name,\n description: this.description,\n specifiedByURL: this.specifiedByURL,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n coerceOutputValue: this.coerceOutputValue,\n coerceInputValue: this.coerceInputValue,\n coerceInputLiteral: this.coerceInputLiteral,\n valueToLiteral: this.valueToLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString(): string {\n return this.name;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\n/* @deprecated in favor of GraphQLScalarOutputValueCoercer, will be removed in v18 */\nexport type GraphQLScalarSerializer<TExternal> = (\n outputValue: unknown,\n) => TExternal;\n\nexport type GraphQLScalarOutputValueCoercer<TExternal> = (\n outputValue: unknown,\n) => TExternal;\n\n/* @deprecated in favor of GraphQLScalarInputValueCoercer, will be removed in v18 */\nexport type GraphQLScalarValueParser<TInternal> = (\n inputValue: unknown,\n) => TInternal;\n\nexport type GraphQLScalarInputValueCoercer<TInternal> = (\n inputValue: unknown,\n) => TInternal;\n\n/* @deprecated in favor of GraphQLScalarInputLiteralCoercer, will be removed in v18 */\nexport type GraphQLScalarLiteralParser<TInternal> = (\n valueNode: ValueNode,\n variables: Maybe<ObjMap<unknown>>,\n) => Maybe<TInternal>;\n\nexport type GraphQLScalarInputLiteralCoercer<TInternal> = (\n valueNode: ConstValueNode,\n) => Maybe<TInternal>;\n\nexport type GraphQLScalarValueToLiteral = (\n inputValue: unknown,\n) => ConstValueNode | undefined;\n\nexport interface GraphQLScalarTypeConfig<TInternal, TExternal> {\n name: string;\n description?: Maybe<string>;\n specifiedByURL?: Maybe<string>;\n /** Serializes an internal value to include in a response. */\n /** @deprecated use `coerceOutputValue()` instead, `serialize()` will be removed in v18 */\n serialize?: GraphQLScalarSerializer<TExternal> | undefined;\n /** Parses an externally provided value to use as an input. */\n /** @deprecated use `coerceInputValue()` instead, `parseValue()` will be removed in v18 */\n parseValue?: GraphQLScalarValueParser<TInternal> | undefined;\n /** Parses an externally provided literal value to use as an input. */\n /** @deprecated use `replaceVariables()` and `coerceInputLiteral()` instead, `parseLiteral()` will be removed in v18 */\n parseLiteral?: GraphQLScalarLiteralParser<TInternal> | undefined;\n /** Coerces an internal value to include in a response. */\n coerceOutputValue?: GraphQLScalarOutputValueCoercer<TExternal> | undefined;\n /** Coerces an externally provided value to use as an input. */\n coerceInputValue?: GraphQLScalarInputValueCoercer<TInternal> | undefined;\n /** Coerces an externally provided const literal value to use as an input. */\n coerceInputLiteral?: GraphQLScalarInputLiteralCoercer<TInternal> | undefined;\n /** Translates an externally provided value to a literal (AST). */\n valueToLiteral?: GraphQLScalarValueToLiteral | undefined;\n extensions?: Maybe<Readonly<GraphQLScalarTypeExtensions>>;\n astNode?: Maybe<ScalarTypeDefinitionNode>;\n extensionASTNodes?: Maybe<ReadonlyArray<ScalarTypeExtensionNode>>;\n}\n\nexport interface GraphQLScalarTypeNormalizedConfig<\n TInternal,\n TExternal,\n> extends GraphQLScalarTypeConfig<TInternal, TExternal> {\n serialize: GraphQLScalarSerializer<TExternal>;\n parseValue: GraphQLScalarValueParser<TInternal>;\n parseLiteral: GraphQLScalarLiteralParser<TInternal>;\n coerceOutputValue: GraphQLScalarOutputValueCoercer<TExternal>;\n coerceInputValue: GraphQLScalarInputValueCoercer<TInternal>;\n coerceInputLiteral: GraphQLScalarInputLiteralCoercer<TInternal> | undefined;\n extensions: Readonly<GraphQLScalarTypeExtensions>;\n extensionASTNodes: ReadonlyArray<ScalarTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n *\n * We've provided these template arguments because this is an open type and\n * you may find them useful.\n */\nexport interface GraphQLObjectTypeExtensions<_TSource = any, _TContext = any> {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve(obj) {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n * ```\n */\nexport class GraphQLObjectType<\n TSource = any,\n TContext = any,\n TAbstract = any,\n> implements GraphQLSchemaElement {\n readonly __kind: typeof objectSymbol = objectSymbol;\n name: string;\n description: Maybe<string>;\n isTypeOf: Maybe<GraphQLIsTypeOfFn<TAbstract, TContext>>;\n extensions: Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>;\n astNode: Maybe<ObjectTypeDefinitionNode>;\n extensionASTNodes: ReadonlyArray<ObjectTypeExtensionNode>;\n\n private _fields: ThunkObjMap<GraphQLField<TSource, TContext>>;\n private _interfaces: ThunkReadonlyArray<GraphQLInterfaceType>;\n\n constructor(\n config: Readonly<GraphQLObjectTypeConfig<TSource, TContext, TAbstract>>,\n ) {\n this.__kind = objectSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n this._fields = (defineFieldMap<TSource, TContext>).bind(\n undefined,\n this,\n config.fields,\n );\n this._interfaces = defineInterfaces.bind(undefined, config.interfaces);\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLObjectType';\n }\n\n getFields(): GraphQLFieldMap<TSource, TContext> {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n return this._fields;\n }\n\n getInterfaces(): ReadonlyArray<GraphQLInterfaceType> {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n return this._interfaces;\n }\n\n toConfig(): GraphQLObjectTypeNormalizedConfig<TSource, TContext, TAbstract> {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: mapValue(this.getFields(), (field) => field.toConfig()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString(): string {\n return this.name;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineInterfaces(\n interfaces: Maybe<ThunkReadonlyArray<GraphQLInterfaceType>>,\n): ReadonlyArray<GraphQLInterfaceType> {\n return resolveReadonlyArrayThunk(interfaces ?? []);\n}\n\nfunction defineFieldMap<TSource, TContext>(\n parentType:\n | GraphQLObjectType<TSource, TContext>\n | GraphQLInterfaceType<TSource, TContext>,\n fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>,\n): GraphQLFieldMap<TSource, TContext> {\n const fieldMap = resolveObjMapThunk(fields);\n\n return mapValue(\n fieldMap,\n (fieldConfig, fieldName) =>\n new GraphQLField(parentType, fieldName, fieldConfig),\n );\n}\n\nexport interface GraphQLObjectTypeConfig<\n TSource,\n TContext,\n TAbstract = unknown,\n> {\n name: string;\n description?: Maybe<string>;\n interfaces?: ThunkReadonlyArray<GraphQLInterfaceType> | undefined;\n fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>;\n isTypeOf?: Maybe<GraphQLIsTypeOfFn<TAbstract, TContext>>;\n extensions?: Maybe<Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>>;\n astNode?: Maybe<ObjectTypeDefinitionNode>;\n extensionASTNodes?: Maybe<ReadonlyArray<ObjectTypeExtensionNode>>;\n}\n\nexport interface GraphQLObjectTypeNormalizedConfig<\n TSource,\n TContext,\n TAbstract = unknown,\n> extends GraphQLObjectTypeConfig<TSource, TContext, TAbstract> {\n interfaces: ReadonlyArray<GraphQLInterfaceType>;\n fields: GraphQLFieldNormalizedConfigMap<TSource, TContext>;\n extensions: Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>;\n extensionASTNodes: ReadonlyArray<ObjectTypeExtensionNode>;\n}\n\nexport type GraphQLTypeResolver<TSource, TContext> = (\n value: TSource,\n context: TContext,\n info: GraphQLResolveInfo,\n abstractType: GraphQLAbstractType,\n) => PromiseOrValue<string | undefined>;\n\nexport type GraphQLIsTypeOfFn<TAbstract, TContext> = (\n value: TAbstract,\n context: TContext,\n info: GraphQLResolveInfo,\n) => PromiseOrValue<boolean>;\n\nexport type GraphQLFieldResolver<\n TSource,\n TContext,\n TArgs = any,\n TResult = unknown,\n> = (\n source: TSource,\n args: TArgs,\n context: TContext,\n info: GraphQLResolveInfo,\n) => TResult;\n\nexport interface GraphQLResolveInfoHelpers {\n /**\n * Promise.all wrapper that allows rejected branches to be tracked\n * as execution async work.\n *\n * Intended use: return or await this promise from resolver work.\n * Un-awaited async side effects are an anti-pattern:\n *\n * const { promiseAll } = info.getAsyncHelpers();\n * promiseAll([someAsyncWork(), someOtherAsyncWork()]).catch(() => undefined);\n *\n * In that anti-pattern, tracking starts only after rejection (on a\n * later microtask), so this work is not guaranteed to delay\n * `hooks.asyncWorkFinished`.\n *\n * Use `track(...)` for un-awaited async side effects:\n *\n * const { track } = info.getAsyncHelpers();\n * track([\n * someAsyncWork().catch(() => undefined),\n * someOtherAsyncWork().catch(() => undefined)\n * ]);\n */\n readonly promiseAll: <T>(\n values: ReadonlyArray<PromiseLike<T> | T>,\n ) => Promise<Array<T>>;\n readonly track: (maybePromises: ReadonlyArray<unknown>) => void;\n}\n\nexport interface GraphQLResolveInfo {\n readonly fieldName: string;\n readonly fieldNodes: ReadonlyArray<FieldNode>;\n readonly returnType: GraphQLOutputType;\n readonly parentType: GraphQLObjectType;\n readonly path: Path;\n readonly schema: GraphQLSchema;\n readonly fragments: ObjMap<FragmentDefinitionNode>;\n readonly rootValue: unknown;\n readonly operation: OperationDefinitionNode;\n readonly variableValues: VariableValues;\n readonly getAbortSignal: () => AbortSignal | undefined;\n readonly getAsyncHelpers: () => GraphQLResolveInfoHelpers;\n}\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n *\n * We've provided these template arguments because this is an open type and\n * you may find them useful.\n */\nexport interface GraphQLFieldExtensions<_TSource, _TContext, _TArgs = any> {\n [attributeName: string | symbol]: unknown;\n}\n\nexport interface GraphQLFieldConfig<TSource, TContext, TArgs = any> {\n description?: Maybe<string>;\n type: GraphQLOutputType;\n args?: GraphQLFieldConfigArgumentMap | undefined;\n resolve?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n deprecationReason?: Maybe<string>;\n extensions?: Maybe<\n Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>\n >;\n astNode?: Maybe<FieldDefinitionNode>;\n}\n\nexport interface GraphQLFieldNormalizedConfig<\n TSource,\n TContext,\n TArgs = any,\n> extends GraphQLFieldConfig<TSource, TContext, TArgs> {\n args: GraphQLFieldNormalizedConfigArgumentMap;\n extensions: Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>;\n}\n\nexport type GraphQLFieldConfigArgumentMap = ObjMap<GraphQLArgumentConfig>;\n\nexport type GraphQLFieldNormalizedConfigArgumentMap =\n ObjMap<GraphQLArgumentNormalizedConfig>;\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLArgumentExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\nexport interface GraphQLArgumentConfig {\n description?: Maybe<string>;\n type: GraphQLInputType;\n /** @deprecated use default instead, defaultValue will be removed in v18 **/\n defaultValue?: unknown;\n default?: GraphQLDefaultInput | undefined;\n deprecationReason?: Maybe<string>;\n extensions?: Maybe<Readonly<GraphQLArgumentExtensions>>;\n astNode?: Maybe<InputValueDefinitionNode>;\n}\n\nexport interface GraphQLArgumentNormalizedConfig extends GraphQLArgumentConfig {\n default: GraphQLDefaultInput | undefined;\n extensions: Readonly<GraphQLArgumentExtensions>;\n}\n\nexport type GraphQLFieldConfigMap<TSource, TContext> = ObjMap<\n GraphQLFieldConfig<TSource, TContext>\n>;\n\nexport type GraphQLFieldNormalizedConfigMap<TSource, TContext> = ObjMap<\n GraphQLFieldNormalizedConfig<TSource, TContext>\n>;\n\nexport class GraphQLField<\n TSource = any,\n TContext = any,\n TArgs = any,\n> implements GraphQLSchemaElement {\n readonly __kind: symbol;\n parentType:\n | GraphQLObjectType<TSource, TContext>\n | GraphQLInterfaceType<TSource, TContext>\n | undefined;\n name: string;\n description: Maybe<string>;\n type: GraphQLOutputType;\n args: ReadonlyArray<GraphQLArgument>;\n resolve?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n deprecationReason: Maybe<string>;\n extensions: Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>;\n astNode: Maybe<FieldDefinitionNode>;\n\n constructor(\n parentType:\n | GraphQLObjectType<TSource, TContext>\n | GraphQLInterfaceType<TSource, TContext>\n | undefined,\n name: string,\n config: GraphQLFieldConfig<TSource, TContext, TArgs>,\n ) {\n this.__kind = fieldSymbol;\n this.parentType = parentType;\n this.name = assertName(name);\n this.description = config.description;\n this.type = config.type;\n\n const argsConfig = config.args;\n this.args = argsConfig\n ? Object.entries(argsConfig).map(\n ([argName, argConfig]) =>\n new GraphQLArgument(this, argName, argConfig),\n )\n : [];\n\n this.resolve = config.resolve;\n this.subscribe = config.subscribe;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLField';\n }\n\n toConfig(): GraphQLFieldNormalizedConfig<TSource, TContext, TArgs> {\n return {\n description: this.description,\n type: this.type,\n args: keyValMap(\n this.args,\n (arg) => arg.name,\n (arg) => arg.toConfig(),\n ),\n resolve: this.resolve,\n subscribe: this.subscribe,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString(): string {\n return `${this.parentType ?? '<meta>'}.${this.name}`;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nexport class GraphQLArgument implements GraphQLSchemaElement {\n readonly __kind: symbol;\n parent: GraphQLField | GraphQLDirective;\n name: string;\n description: Maybe<string>;\n type: GraphQLInputType;\n defaultValue: unknown;\n default: GraphQLDefaultInput | undefined;\n deprecationReason: Maybe<string>;\n extensions: Readonly<GraphQLArgumentExtensions>;\n astNode: Maybe<InputValueDefinitionNode>;\n\n constructor(\n parent: GraphQLField | GraphQLDirective,\n name: string,\n config: GraphQLArgumentConfig,\n ) {\n this.__kind = argumentSymbol;\n this.parent = parent;\n this.name = assertName(name);\n this.description = config.description;\n this.type = config.type;\n this.defaultValue = config.defaultValue;\n this.default = config.default;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLArgument';\n }\n\n toConfig(): GraphQLArgumentNormalizedConfig {\n return {\n description: this.description,\n type: this.type,\n defaultValue: this.defaultValue,\n default: this.default,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString(): string {\n return `${this.parent}(${this.name}:)`;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nexport function isRequiredArgument(\n arg: GraphQLArgument | GraphQLVariableSignature,\n): boolean {\n return (\n isNonNullType(arg.type) &&\n arg.default === undefined &&\n arg.defaultValue === undefined\n );\n}\n\nexport type GraphQLFieldMap<TSource, TContext> = ObjMap<\n GraphQLField<TSource, TContext>\n>;\n\nexport type GraphQLDefaultInput =\n | { value: unknown; literal?: never }\n | { literal: ConstValueNode; value?: never };\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLInterfaceTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n * ```\n */\nexport class GraphQLInterfaceType<\n TSource = any,\n TContext = any,\n> implements GraphQLSchemaElement {\n readonly __kind: symbol;\n name: string;\n description: Maybe<string>;\n resolveType: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n extensions: Readonly<GraphQLInterfaceTypeExtensions>;\n astNode: Maybe<InterfaceTypeDefinitionNode>;\n extensionASTNodes: ReadonlyArray<InterfaceTypeExtensionNode>;\n\n private _fields: ThunkObjMap<GraphQLField<TSource, TContext>>;\n private _interfaces: ThunkReadonlyArray<GraphQLInterfaceType>;\n\n constructor(config: Readonly<GraphQLInterfaceTypeConfig<TSource, TContext>>) {\n this.__kind = interfaceSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n this._fields = (defineFieldMap<TSource, TContext>).bind(\n undefined,\n this,\n config.fields,\n );\n this._interfaces = defineInterfaces.bind(undefined, config.interfaces);\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLInterfaceType';\n }\n\n getFields(): GraphQLFieldMap<TSource, TContext> {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n return this._fields;\n }\n\n getInterfaces(): ReadonlyArray<GraphQLInterfaceType> {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n return this._interfaces;\n }\n\n toConfig(): GraphQLInterfaceTypeNormalizedConfig<TSource, TContext> {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: mapValue(this.getFields(), (field) => field.toConfig()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString(): string {\n return this.name;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nexport interface GraphQLInterfaceTypeConfig<TSource, TContext> {\n name: string;\n description?: Maybe<string>;\n interfaces?: ThunkReadonlyArray<GraphQLInterfaceType> | undefined;\n fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>;\n /**\n * Optionally provide a custom type resolver function. If one is not provided,\n * the default implementation will call `isTypeOf` on each implementing\n * Object type.\n */\n resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n extensions?: Maybe<Readonly<GraphQLInterfaceTypeExtensions>>;\n astNode?: Maybe<InterfaceTypeDefinitionNode>;\n extensionASTNodes?: Maybe<ReadonlyArray<InterfaceTypeExtensionNode>>;\n}\n\nexport interface GraphQLInterfaceTypeNormalizedConfig<\n TSource,\n TContext,\n> extends GraphQLInterfaceTypeConfig<TSource, TContext> {\n interfaces: ReadonlyArray<GraphQLInterfaceType>;\n fields: GraphQLFieldNormalizedConfigMap<TSource, TContext>;\n extensions: Readonly<GraphQLInterfaceTypeExtensions>;\n extensionASTNodes: ReadonlyArray<InterfaceTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLUnionTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [ DogType, CatType ],\n * resolveType(value) {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n * ```\n */\nexport class GraphQLUnionType<\n TSource = any,\n TContext = any,\n> implements GraphQLSchemaElement {\n readonly __kind: symbol;\n name: string;\n description: Maybe<string>;\n resolveType: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n extensions: Readonly<GraphQLUnionTypeExtensions>;\n astNode: Maybe<UnionTypeDefinitionNode>;\n extensionASTNodes: ReadonlyArray<UnionTypeExtensionNode>;\n\n private _types: ThunkReadonlyArray<GraphQLObjectType>;\n\n constructor(config: Readonly<GraphQLUnionTypeConfig<TSource, TContext>>) {\n this.__kind = unionSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n\n this._types = defineTypes.bind(undefined, config.types);\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLUnionType';\n }\n\n getTypes(): ReadonlyArray<GraphQLObjectType> {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n return this._types;\n }\n\n toConfig(): GraphQLUnionTypeNormalizedConfig<TSource, TContext> {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString(): string {\n return this.name;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineTypes(\n types: ThunkReadonlyArray<GraphQLObjectType>,\n): ReadonlyArray<GraphQLObjectType> {\n return resolveReadonlyArrayThunk(types);\n}\n\nexport interface GraphQLUnionTypeConfig<TSource, TContext> {\n name: string;\n description?: Maybe<string>;\n types: ThunkReadonlyArray<GraphQLObjectType>;\n /**\n * Optionally provide a custom type resolver function. If one is not provided,\n * the default implementation will call `isTypeOf` on each implementing\n * Object type.\n */\n resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n extensions?: Maybe<Readonly<GraphQLUnionTypeExtensions>>;\n astNode?: Maybe<UnionTypeDefinitionNode>;\n extensionASTNodes?: Maybe<ReadonlyArray<UnionTypeExtensionNode>>;\n}\n\nexport interface GraphQLUnionTypeNormalizedConfig<\n TSource,\n TContext,\n> extends GraphQLUnionTypeConfig<TSource, TContext> {\n types: ReadonlyArray<GraphQLObjectType>;\n extensions: Readonly<GraphQLUnionTypeExtensions>;\n extensionASTNodes: ReadonlyArray<UnionTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLEnumTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL coerces\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 }\n * }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nexport class GraphQLEnumType /* <T> */ implements GraphQLSchemaElement {\n readonly __kind: symbol;\n name: string;\n description: Maybe<string>;\n extensions: Readonly<GraphQLEnumTypeExtensions>;\n astNode: Maybe<EnumTypeDefinitionNode>;\n extensionASTNodes: ReadonlyArray<EnumTypeExtensionNode>;\n\n private _values:\n | ReadonlyArray<GraphQLEnumValue /* <T> */>\n | (() => ReadonlyArray<GraphQLEnumValue>) /* <T> */;\n\n private _valueLookup: ReadonlyMap<any /* T */, GraphQLEnumValue> | null;\n private _nameLookup: ObjMap<GraphQLEnumValue> | null;\n\n constructor(config: Readonly<GraphQLEnumTypeConfig /* <T> */>) {\n this.__kind = enumSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n\n this._values = defineEnumValues.bind(undefined, this, config.values);\n this._valueLookup = null;\n this._nameLookup = null;\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLEnumType';\n }\n\n getValues(): ReadonlyArray<GraphQLEnumValue /* <T> */> {\n if (typeof this._values === 'function') {\n this._values = this._values();\n }\n return this._values;\n }\n\n getValue(name: string): Maybe<GraphQLEnumValue> {\n this._nameLookup ??= keyMap(this.getValues(), (value) => value.name);\n return this._nameLookup[name];\n }\n\n /** @deprecated use `coerceOutputValue()` instead, `serialize()` will be removed in v18 */\n serialize(outputValue: unknown /* T */): Maybe<string> {\n return this.coerceOutputValue(outputValue);\n }\n\n coerceOutputValue(outputValue: unknown /* T */): Maybe<string> {\n this._valueLookup ??= new Map(\n this.getValues().map((enumValue) => [enumValue.value, enumValue]),\n );\n const enumValue = this._valueLookup.get(outputValue);\n if (enumValue === undefined) {\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent value: ${inspect(outputValue)}`,\n );\n }\n return enumValue.name;\n }\n\n /** @deprecated use `coerceInputValue()` instead, `parseValue()` will be removed in v18 */\n parseValue(\n inputValue: unknown,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n return this.coerceInputValue(inputValue, hideSuggestions);\n }\n\n coerceInputValue(\n inputValue: unknown,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n if (typeof inputValue !== 'string') {\n const valueStr = inspect(inputValue);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, valueStr)),\n );\n }\n\n const enumValue = this.getValue(inputValue);\n if (enumValue == null) {\n throw new GraphQLError(\n `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, inputValue)),\n );\n }\n return enumValue.value;\n }\n\n /** @deprecated use `coerceInputLiteral()` instead, `parseLiteral()` will be removed in v18 */\n parseLiteral(\n valueNode: ValueNode,\n _variables: Maybe<ObjMap<unknown>>,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n // Note: variables will be resolved to a value before calling this function.\n return this.coerceInputLiteral(\n valueNode as ConstValueNode,\n hideSuggestions,\n );\n }\n\n coerceInputLiteral(\n valueNode: ConstValueNode,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n if (valueNode.kind !== Kind.ENUM) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, valueStr)),\n { nodes: valueNode },\n );\n }\n\n const enumValue = this.getValue(valueNode.value);\n if (enumValue == null) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, valueStr)),\n { nodes: valueNode },\n );\n }\n return enumValue.value;\n }\n\n valueToLiteral(value: unknown): ConstValueNode | undefined {\n if (typeof value === 'string' && this.getValue(value)) {\n return { kind: Kind.ENUM, value };\n }\n }\n\n toConfig(): GraphQLEnumTypeNormalizedConfig {\n return {\n name: this.name,\n description: this.description,\n values: keyValMap(\n this.getValues(),\n (value) => value.name,\n (value) => value.toConfig(),\n ),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n toString(): string {\n return this.name;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineEnumValues(\n parentEnum: GraphQLEnumType,\n values: ThunkObjMap<GraphQLEnumValueConfig /* <T> */>,\n): ReadonlyArray<GraphQLEnumValue> {\n const valueMap = resolveObjMapThunk(values);\n\n return Object.entries(valueMap).map(\n ([valueName, valueConfig]) =>\n new GraphQLEnumValue(parentEnum, valueName, valueConfig),\n );\n}\n\nfunction didYouMeanEnumValue(\n enumType: GraphQLEnumType,\n unknownValueStr: string,\n): string {\n const allNames = enumType.getValues().map((value) => value.name);\n const suggestedValues = suggestionList(unknownValueStr, allNames);\n\n return didYouMean('the enum value', suggestedValues);\n}\n\nexport interface GraphQLEnumTypeConfig {\n name: string;\n description?: Maybe<string>;\n values: ThunkObjMap<GraphQLEnumValueConfig /* <T> */>;\n extensions?: Maybe<Readonly<GraphQLEnumTypeExtensions>>;\n astNode?: Maybe<EnumTypeDefinitionNode>;\n extensionASTNodes?: Maybe<ReadonlyArray<EnumTypeExtensionNode>>;\n}\n\nexport interface GraphQLEnumTypeNormalizedConfig extends GraphQLEnumTypeConfig {\n values: GraphQLEnumValueNormalizedConfigMap;\n extensions: Readonly<GraphQLEnumTypeExtensions>;\n extensionASTNodes: ReadonlyArray<EnumTypeExtensionNode>;\n}\n\nexport type GraphQLEnumValueConfigMap /* <T> */ =\n ObjMap<GraphQLEnumValueConfig /* <T> */>;\n\nexport type GraphQLEnumValueNormalizedConfigMap /* <T> */ =\n ObjMap<GraphQLEnumValueNormalizedConfig /* <T> */>;\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLEnumValueExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\nexport interface GraphQLEnumValueConfig {\n description?: Maybe<string>;\n value?: any /* T */;\n deprecationReason?: Maybe<string>;\n extensions?: Maybe<Readonly<GraphQLEnumValueExtensions>>;\n astNode?: Maybe<EnumValueDefinitionNode>;\n}\n\nexport interface GraphQLEnumValueNormalizedConfig extends GraphQLEnumValueConfig {\n extensions: Readonly<GraphQLEnumValueExtensions>;\n}\n\nexport class GraphQLEnumValue implements GraphQLSchemaElement {\n readonly __kind: symbol;\n parentEnum: GraphQLEnumType;\n name: string;\n description: Maybe<string>;\n value: any /* T */;\n deprecationReason: Maybe<string>;\n extensions: Readonly<GraphQLEnumValueExtensions>;\n astNode: Maybe<EnumValueDefinitionNode>;\n\n constructor(\n parentEnum: GraphQLEnumType,\n name: string,\n config: GraphQLEnumValueConfig,\n ) {\n this.__kind = enumValueSymbol;\n this.parentEnum = parentEnum;\n this.name = assertEnumValueName(name);\n this.description = config.description;\n this.value = config.value !== undefined ? config.value : name;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLEnumValue';\n }\n\n toConfig(): GraphQLEnumValueNormalizedConfig {\n return {\n description: this.description,\n value: this.value,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString(): string {\n return `${this.parentEnum.name}.${this.name}`;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLInputObjectTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: new GraphQLNonNull(GraphQLFloat) },\n * lon: { type: new GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, defaultValue: 0 },\n * }\n * });\n * ```\n */\nexport class GraphQLInputObjectType implements GraphQLSchemaElement {\n readonly __kind: symbol;\n name: string;\n description: Maybe<string>;\n extensions: Readonly<GraphQLInputObjectTypeExtensions>;\n astNode: Maybe<InputObjectTypeDefinitionNode>;\n extensionASTNodes: ReadonlyArray<InputObjectTypeExtensionNode>;\n isOneOf: boolean;\n\n private _fields: ThunkObjMap<GraphQLInputField>;\n\n constructor(config: Readonly<GraphQLInputObjectTypeConfig>) {\n this.__kind = inputObjectSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n this.isOneOf = config.isOneOf ?? false;\n\n this._fields = defineInputFieldMap.bind(undefined, this, config.fields);\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLInputObjectType';\n }\n\n getFields(): GraphQLInputFieldMap {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n return this._fields;\n }\n\n toConfig(): GraphQLInputObjectTypeNormalizedConfig {\n return {\n name: this.name,\n description: this.description,\n fields: mapValue(this.getFields(), (field) => field.toConfig()),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n isOneOf: this.isOneOf,\n };\n }\n\n toString(): string {\n return this.name;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineInputFieldMap(\n parentType: GraphQLInputObjectType,\n fields: ThunkObjMap<GraphQLInputFieldConfig>,\n): GraphQLInputFieldMap {\n const fieldMap = resolveObjMapThunk(fields);\n return mapValue(\n fieldMap,\n (fieldConfig, fieldName) =>\n new GraphQLInputField(parentType, fieldName, fieldConfig),\n );\n}\n\nexport interface GraphQLInputObjectTypeConfig {\n name: string;\n description?: Maybe<string>;\n fields: ThunkObjMap<GraphQLInputFieldConfig>;\n extensions?: Maybe<Readonly<GraphQLInputObjectTypeExtensions>>;\n astNode?: Maybe<InputObjectTypeDefinitionNode>;\n extensionASTNodes?: Maybe<ReadonlyArray<InputObjectTypeExtensionNode>>;\n isOneOf?: boolean;\n}\n\nexport interface GraphQLInputObjectTypeNormalizedConfig extends GraphQLInputObjectTypeConfig {\n fields: GraphQLInputFieldNormalizedConfigMap;\n extensions: Readonly<GraphQLInputObjectTypeExtensions>;\n extensionASTNodes: ReadonlyArray<InputObjectTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLInputFieldExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\nexport interface GraphQLInputFieldConfig {\n description?: Maybe<string>;\n type: GraphQLInputType;\n /** @deprecated use default instead, defaultValue will be removed in v18 **/\n defaultValue?: unknown;\n default?: GraphQLDefaultInput | undefined;\n deprecationReason?: Maybe<string>;\n extensions?: Maybe<Readonly<GraphQLInputFieldExtensions>>;\n astNode?: Maybe<InputValueDefinitionNode>;\n}\n\nexport type GraphQLInputFieldConfigMap = ObjMap<GraphQLInputFieldConfig>;\n\nexport interface GraphQLInputFieldNormalizedConfig extends GraphQLInputFieldConfig {\n default: GraphQLDefaultInput | undefined;\n extensions: Readonly<GraphQLInputFieldExtensions>;\n}\n\nexport type GraphQLInputFieldNormalizedConfigMap =\n ObjMap<GraphQLInputFieldNormalizedConfig>;\n\nexport class GraphQLInputField implements GraphQLSchemaElement {\n readonly __kind: symbol;\n parentType: GraphQLInputObjectType;\n name: string;\n description: Maybe<string>;\n type: GraphQLInputType;\n defaultValue: unknown;\n default: GraphQLDefaultInput | undefined;\n deprecationReason: Maybe<string>;\n extensions: Readonly<GraphQLInputFieldExtensions>;\n astNode: Maybe<InputValueDefinitionNode>;\n\n constructor(\n parentType: GraphQLInputObjectType,\n name: string,\n config: GraphQLInputFieldConfig,\n ) {\n devAssert(\n !('resolve' in config),\n `${parentType}.${name} field has a resolve property, but Input Types cannot define resolvers.`,\n );\n\n this.__kind = inputFieldSymbol;\n this.parentType = parentType;\n this.name = assertName(name);\n this.description = config.description;\n this.type = config.type;\n this.defaultValue = config.defaultValue;\n this.default = config.default;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n get [Symbol.toStringTag](): string {\n return 'GraphQLInputField';\n }\n\n toConfig(): GraphQLInputFieldNormalizedConfig {\n return {\n description: this.description,\n type: this.type,\n defaultValue: this.defaultValue,\n default: this.default,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString(): string {\n return `${this.parentType}.${this.name}`;\n }\n\n toJSON(): string {\n return this.toString();\n }\n}\n\nexport function isRequiredInputField(field: GraphQLInputField): boolean {\n return (\n isNonNullType(field.type) &&\n field.defaultValue === undefined &&\n field.default === undefined\n );\n}\n\nexport type GraphQLInputFieldMap = ObjMap<GraphQLInputField>;\n"]}
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/type/definition.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Types */\n\nimport { devAssert } from '../jsutils/devAssert.ts';\nimport { didYouMean } from '../jsutils/didYouMean.ts';\nimport { identityFunc } from '../jsutils/identityFunc.ts';\nimport { inspect } from '../jsutils/inspect.ts';\nimport { instanceOf } from '../jsutils/instanceOf.ts';\nimport { keyMap } from '../jsutils/keyMap.ts';\nimport { keyValMap } from '../jsutils/keyValMap.ts';\nimport { mapValue } from '../jsutils/mapValue.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\nimport type { Path } from '../jsutils/Path.ts';\nimport type { PromiseOrValue } from '../jsutils/PromiseOrValue.ts';\nimport { suggestionList } from '../jsutils/suggestionList.ts';\nimport { toObjMapWithSymbols } from '../jsutils/toObjMap.ts';\n\nimport { GraphQLError } from '../error/GraphQLError.ts';\n\nimport type {\n ConstValueNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n EnumValueDefinitionNode,\n FieldDefinitionNode,\n FieldNode,\n FragmentDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n OperationDefinitionNode,\n ScalarTypeDefinitionNode,\n ScalarTypeExtensionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n ValueNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\nimport { print } from '../language/printer.ts';\n\nimport type { GraphQLVariableSignature } from '../execution/getVariableSignature.ts';\nimport type { VariableValues } from '../execution/values.ts';\n\nimport { valueFromASTUntyped } from '../utilities/valueFromASTUntyped.ts';\n\nimport { assertEnumValueName, assertName } from './assertName.ts';\nimport type { GraphQLDirective } from './directives.ts';\nimport type { GraphQLSchema } from './schema.ts';\n\n// Predicates & Assertions\n\n/** These are all of the possible kinds of types. */\nexport type GraphQLType = GraphQLNamedType | GraphQLWrappingType;\n\n/**\n * Returns true when the value is any GraphQL type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is any GraphQL type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { GraphQLList, GraphQLString, isType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String\n * }\n * `);\n *\n * isType(GraphQLString); // => true\n * isType(new GraphQLList(GraphQLString)); // => true\n * isType(schema.getType('Query')); // => true\n * isType('String'); // => false\n * ```\n */\nexport function isType(type: unknown): type is GraphQLType {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n isListType(type) ||\n isNonNullType(type)\n );\n}\n\n/**\n * Returns the value as a GraphQL type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String\n * }\n * `);\n *\n * const queryType = assertType(schema.getType('Query'));\n *\n * queryType.toString(); // => 'Query'\n * assertType('Query'); // throws an error\n * ```\n */\nexport function assertType(type: unknown): GraphQLType {\n if (!isType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL type.`);\n }\n return type;\n}\n\n/** @private */\nconst scalarSymbol: unique symbol = Symbol('Scalar');\n\n/**\n * There are predicates for each kind of GraphQL type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLScalarType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isScalarType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * scalar DateTime\n *\n * type Query {\n * createdAt: DateTime\n * }\n * `);\n *\n * isScalarType(schema.getType('DateTime')); // => true\n * isScalarType(schema.getType('Query')); // => false\n * ```\n */\nexport function isScalarType(type: unknown): type is GraphQLScalarType {\n return instanceOf(type, scalarSymbol, GraphQLScalarType);\n}\n\n/**\n * Returns the value as a GraphQLScalarType, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLScalarType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertScalarType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * scalar DateTime\n *\n * type Query {\n * createdAt: DateTime\n * }\n * `);\n *\n * const dateTimeType = assertScalarType(schema.getType('DateTime'));\n *\n * dateTimeType.name; // => 'DateTime'\n * assertScalarType(schema.getType('Query')); // throws an error\n * ```\n */\nexport function assertScalarType(type: unknown): GraphQLScalarType {\n if (!isScalarType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Scalar type.`);\n }\n return type;\n}\n\n/** @private */\nconst objectSymbol: unique symbol = Symbol('Object');\n\n/**\n * Returns true when the value is a GraphQLObjectType.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLObjectType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type User {\n * name: String\n * }\n *\n * type Query {\n * user: User\n * }\n * `);\n *\n * isObjectType(schema.getType('User')); // => true\n * isObjectType(schema.getType('ReviewInput')); // => false\n * ```\n */\nexport function isObjectType(type: unknown): type is GraphQLObjectType {\n return instanceOf(type, objectSymbol, GraphQLObjectType);\n}\n\n/**\n * Returns the value as a GraphQLObjectType, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLObjectType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type User {\n * name: String\n * }\n *\n * type Query {\n * user: User\n * }\n * `);\n *\n * const userType = assertObjectType(schema.getType('User'));\n *\n * Object.keys(userType.getFields()); // => ['name']\n * assertObjectType(schema.getType('ReviewInput')); // throws an error\n * ```\n */\nexport function assertObjectType(type: unknown): GraphQLObjectType {\n if (!isObjectType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Object type.`);\n }\n return type;\n}\n\n/** @private */\nconst fieldSymbol: unique symbol = Symbol('Field');\n\n/**\n * Returns true when the value is a resolved GraphQL field definition.\n * @param field - Value to inspect.\n * @returns True when the value is a GraphQLField.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isField } from 'graphql/type';\n *\n * const schema = buildSchema('type Query { greeting: String }');\n * const field = schema.getQueryType().getFields().greeting;\n *\n * isField(field); // => true\n * isField(schema.getQueryType()); // => false\n * ```\n */\nexport function isField(field: unknown): field is GraphQLField {\n return instanceOf(field, fieldSymbol, GraphQLField);\n}\n\n/**\n * Returns the value as a GraphQLField, or throws if it is not one.\n * @param field - Value to inspect.\n * @returns The value typed as a GraphQLField.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertField } from 'graphql/type';\n *\n * const schema = buildSchema('type Query { greeting: String }');\n * const field = assertField(schema.getQueryType().getFields().greeting);\n *\n * field.name; // => 'greeting'\n * assertField(schema.getQueryType()); // throws an error\n * ```\n */\nexport function assertField(field: unknown): GraphQLField {\n if (!isField(field)) {\n throw new Error(`Expected ${inspect(field)} to be a GraphQL field.`);\n }\n return field;\n}\n\n/** @private */\nconst argumentSymbol: unique symbol = Symbol('Argument');\n\n/**\n * Returns true when the value is a resolved GraphQL argument definition.\n * @param arg - Value to inspect.\n * @returns True when the value is a GraphQLArgument.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isArgument } from 'graphql/type';\n *\n * const schema = buildSchema('type Query { greeting(name: String): String }');\n * const arg = schema.getQueryType().getFields().greeting.args[0];\n *\n * isArgument(arg); // => true\n * isArgument(schema.getQueryType()); // => false\n * ```\n */\nexport function isArgument(arg: unknown): arg is GraphQLArgument {\n return instanceOf(arg, argumentSymbol, GraphQLArgument);\n}\n\n/**\n * Returns the value as a GraphQLArgument, or throws if it is not one.\n * @param arg - Value to inspect.\n * @returns The value typed as a GraphQLArgument.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertArgument } from 'graphql/type';\n *\n * const schema = buildSchema('type Query { greeting(name: String): String }');\n * const arg = assertArgument(schema.getQueryType().getFields().greeting.args[0]);\n *\n * arg.name; // => 'name'\n * assertArgument(schema.getQueryType()); // throws an error\n * ```\n */\nexport function assertArgument(arg: unknown): GraphQLArgument {\n if (!isArgument(arg)) {\n throw new Error(`Expected ${inspect(arg)} to be a GraphQL argument.`);\n }\n return arg;\n}\n\n/** @private */\nconst interfaceSymbol: unique symbol = Symbol('Interface');\n\n/**\n * Returns true when the value is a GraphQLInterfaceType.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLInterfaceType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isInterfaceType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * type Query {\n * node: Node\n * }\n * `);\n *\n * isInterfaceType(schema.getType('Node')); // => true\n * isInterfaceType(schema.getType('User')); // => false\n * ```\n */\nexport function isInterfaceType(type: unknown): type is GraphQLInterfaceType {\n return instanceOf(type, interfaceSymbol, GraphQLInterfaceType);\n}\n\n/**\n * Returns the value as a GraphQLInterfaceType, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLInterfaceType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInterfaceType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * type Query {\n * node: Node\n * }\n * `);\n *\n * const nodeType = assertInterfaceType(schema.getType('Node'));\n *\n * nodeType.name; // => 'Node'\n * assertInterfaceType(schema.getType('User')); // throws an error\n * ```\n */\nexport function assertInterfaceType(type: unknown): GraphQLInterfaceType {\n if (!isInterfaceType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL Interface type.`,\n );\n }\n return type;\n}\n\n/** @private */\nconst unionSymbol: unique symbol = Symbol('Union');\n\n/**\n * Returns true when the value is a GraphQLUnionType.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLUnionType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isUnionType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Photo {\n * url: String!\n * }\n *\n * type Video {\n * url: String!\n * }\n *\n * union Media = Photo | Video\n *\n * type Query {\n * media: [Media]\n * }\n * `);\n *\n * isUnionType(schema.getType('Media')); // => true\n * isUnionType(schema.getType('Photo')); // => false\n * ```\n */\nexport function isUnionType(type: unknown): type is GraphQLUnionType {\n return instanceOf(type, unionSymbol, GraphQLUnionType);\n}\n\n/**\n * Returns the value as a GraphQLUnionType, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLUnionType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertUnionType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Photo {\n * url: String!\n * }\n *\n * type Video {\n * url: String!\n * }\n *\n * union Media = Photo | Video\n *\n * type Query {\n * media: [Media]\n * }\n * `);\n *\n * const mediaType = assertUnionType(schema.getType('Media'));\n *\n * mediaType.getTypes().map((type) => type.name); // => ['Photo', 'Video']\n * assertUnionType(schema.getType('Photo')); // throws an error\n * ```\n */\nexport function assertUnionType(type: unknown): GraphQLUnionType {\n if (!isUnionType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Union type.`);\n }\n return type;\n}\n\n/** @private */\nconst enumSymbol: unique symbol = Symbol('Enum');\n\n/**\n * Returns true when the value is a GraphQLEnumType.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLEnumType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isEnumType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * }\n *\n * type Query {\n * favoriteEpisode: Episode\n * }\n * `);\n *\n * isEnumType(schema.getType('Episode')); // => true\n * isEnumType(schema.getType('Query')); // => false\n * ```\n */\nexport function isEnumType(type: unknown): type is GraphQLEnumType {\n return instanceOf(type, enumSymbol, GraphQLEnumType);\n}\n\n/**\n * Returns the value as a GraphQLEnumType, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLEnumType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertEnumType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * }\n *\n * type Query {\n * favoriteEpisode: Episode\n * }\n * `);\n *\n * const episodeType = assertEnumType(schema.getType('Episode'));\n *\n * episodeType.getValues().map((value) => value.name); // => ['NEW_HOPE', 'EMPIRE']\n * assertEnumType(schema.getType('Query')); // throws an error\n * ```\n */\nexport function assertEnumType(type: unknown): GraphQLEnumType {\n if (!isEnumType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Enum type.`);\n }\n return type;\n}\n\n/** @private */\nconst enumValueSymbol: unique symbol = Symbol('EnumValue');\n\n/**\n * Returns true when the value is a resolved GraphQL enum value definition.\n * @param value - Value to inspect.\n * @returns True when the value is a GraphQLEnumValue.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertEnumType, isEnumValue } from 'graphql/type';\n *\n * const schema = buildSchema('enum Episode { NEW_HOPE } type Query { episode: Episode }');\n * const enumValue = assertEnumType(schema.getType('Episode')).getValues()[0];\n *\n * isEnumValue(enumValue); // => true\n * isEnumValue(schema.getType('Episode')); // => false\n * ```\n */\nexport function isEnumValue(value: unknown): value is GraphQLEnumValue {\n return instanceOf(value, enumValueSymbol, GraphQLEnumValue);\n}\n\n/**\n * Returns the value as a GraphQLEnumValue, or throws if it is not one.\n * @param value - Value to inspect.\n * @returns The value typed as a GraphQLEnumValue.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertEnumType, assertEnumValue } from 'graphql/type';\n *\n * const schema = buildSchema('enum Episode { NEW_HOPE } type Query { episode: Episode }');\n * const enumValue = assertEnumValue(\n * assertEnumType(schema.getType('Episode')).getValues()[0],\n * );\n *\n * enumValue.name; // => 'NEW_HOPE'\n * assertEnumValue(schema.getType('Episode')); // throws an error\n * ```\n */\nexport function assertEnumValue(value: unknown): GraphQLEnumValue {\n if (!isEnumValue(value)) {\n throw new Error(`Expected ${inspect(value)} to be a GraphQL Enum value.`);\n }\n return value;\n}\n\n/** @private */\nconst inputObjectSymbol: unique symbol = Symbol('InputObject');\n\n/**\n * Returns true when the value is a GraphQLInputObjectType.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLInputObjectType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isInputObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput): Review\n * }\n * `);\n *\n * isInputObjectType(schema.getType('ReviewInput')); // => true\n * isInputObjectType(schema.getType('Review')); // => false\n * ```\n */\nexport function isInputObjectType(\n type: unknown,\n): type is GraphQLInputObjectType {\n return instanceOf(type, inputObjectSymbol, GraphQLInputObjectType);\n}\n\n/**\n * Returns the value as a GraphQLInputObjectType, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLInputObjectType.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInputObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput): Review\n * }\n * `);\n *\n * const inputType = assertInputObjectType(schema.getType('ReviewInput'));\n *\n * Object.keys(inputType.getFields()); // => ['stars']\n * assertInputObjectType(schema.getType('Review')); // throws an error\n * ```\n */\nexport function assertInputObjectType(type: unknown): GraphQLInputObjectType {\n if (!isInputObjectType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL Input Object type.`,\n );\n }\n return type;\n}\n\n/** @private */\nconst inputFieldSymbol: unique symbol = Symbol('InputField');\n\n/**\n * Returns true when the value is a resolved GraphQL input field definition.\n * @param field - Value to inspect.\n * @returns True when the value is a GraphQLInputField.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInputObjectType, isInputField } from 'graphql/type';\n *\n * const schema = buildSchema('input ReviewInput { stars: Int } type Query { ok: Boolean }');\n * const inputField = assertInputObjectType(schema.getType('ReviewInput')).getFields().stars;\n *\n * isInputField(inputField); // => true\n * isInputField(schema.getQueryType()); // => false\n * ```\n */\nexport function isInputField(field: unknown): field is GraphQLInputField {\n return instanceOf(field, inputFieldSymbol, GraphQLInputField);\n}\n\n/**\n * Returns the value as a GraphQLInputField, or throws if it is not one.\n * @param field - Value to inspect.\n * @returns The value typed as a GraphQLInputField.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInputField, assertInputObjectType } from 'graphql/type';\n *\n * const schema = buildSchema('input ReviewInput { stars: Int } type Query { ok: Boolean }');\n * const inputField = assertInputField(\n * assertInputObjectType(schema.getType('ReviewInput')).getFields().stars,\n * );\n *\n * inputField.name; // => 'stars'\n * assertInputField(schema.getQueryType()); // throws an error\n * ```\n */\nexport function assertInputField(field: unknown): GraphQLInputField {\n if (!isInputField(field)) {\n throw new Error(`Expected ${inspect(field)} to be a GraphQL input field.`);\n }\n return field;\n}\n\n/** @private */\nconst listSymbol: unique symbol = Symbol('List');\n\n/**\n * Returns true when the value is a GraphQLList.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLList.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { GraphQLList, GraphQLString, isListType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Query {\n * tags: [String!]!\n * }\n * `);\n *\n * const tagsField = schema.getQueryType()?.getFields().tags;\n *\n * isListType(new GraphQLList(GraphQLString)); // => true\n * isListType(GraphQLString); // => false\n * isListType(tagsField?.type); // => false\n * ```\n */\nexport function isListType(\n type: GraphQLInputType,\n): type is GraphQLList<GraphQLInputType>;\n/**\n * Returns true when the output type is a GraphQLList.\n * @param type - The GraphQL output type to inspect.\n * @returns True when the output type is a list type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { getNullableType, isListType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Query {\n * tags: [String!]!\n * }\n * `);\n *\n * const tagsField = schema.getQueryType()?.getFields().tags;\n * const nullableTagsType = getNullableType(tagsField?.type);\n *\n * isListType(nullableTagsType); // => true\n * ```\n */\nexport function isListType(\n type: GraphQLOutputType,\n): type is GraphQLList<GraphQLOutputType>;\n/**\n * Returns true when the value is a GraphQLList.\n * @param type - The value to inspect.\n * @returns True when the value is a list type.\n * @example\n * ```ts\n * import { isListType } from 'graphql/type';\n *\n * isListType('[String]'); // => false\n * isListType(null); // => false\n * ```\n */\nexport function isListType(type: unknown): type is GraphQLList<GraphQLType>;\n/**\n * Returns true when the value is a GraphQLList.\n * @internal\n */\nexport function isListType(type: unknown): type is GraphQLList<GraphQLType> {\n return instanceOf(type, listSymbol, GraphQLList);\n}\n\n/**\n * Returns the value as a GraphQLList, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLList.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLString, assertListType } from 'graphql/type';\n *\n * const listType = assertListType(new GraphQLList(GraphQLString));\n *\n * listType.ofType; // => GraphQLString\n * assertListType(GraphQLString); // throws an error\n * ```\n */\nexport function assertListType(type: unknown): GraphQLList<GraphQLType> {\n if (!isListType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL List type.`);\n }\n return type;\n}\n\n/** @private */\nconst nonNullSymbol: unique symbol = Symbol('NonNull');\n\n/**\n * Returns true when the value is a GraphQLNonNull.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQLNonNull.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { GraphQLNonNull, GraphQLString, isNonNullType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String!\n * nickname: String\n * }\n * `);\n *\n * const fields = schema.getQueryType()?.getFields();\n *\n * isNonNullType(new GraphQLNonNull(GraphQLString)); // => true\n * isNonNullType(fields?.name.type); // => true\n * isNonNullType(fields?.nickname.type); // => false\n * ```\n */\nexport function isNonNullType(\n type: GraphQLInputType,\n): type is GraphQLNonNull<GraphQLNullableInputType>;\n/**\n * Returns true when the output type is a GraphQLNonNull.\n * @param type - The GraphQL output type to inspect.\n * @returns True when the output type is a non-null type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isNonNullType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String!\n * nickname: String\n * }\n * `);\n *\n * const fields = schema.getQueryType()?.getFields();\n *\n * isNonNullType(fields?.name.type); // => true\n * isNonNullType(fields?.nickname.type); // => false\n * ```\n */\nexport function isNonNullType(\n type: GraphQLOutputType,\n): type is GraphQLNonNull<GraphQLNullableOutputType>;\n/**\n * Returns true when the value is a GraphQLNonNull.\n * @param type - The value to inspect.\n * @returns True when the value is a non-null type.\n * @example\n * ```ts\n * import { isNonNullType } from 'graphql/type';\n *\n * isNonNullType('String!'); // => false\n * isNonNullType(null); // => false\n * ```\n */\nexport function isNonNullType(\n type: unknown,\n): type is GraphQLNonNull<GraphQLNullableType>;\n/**\n * Returns true when the value is a GraphQLNonNull.\n * @internal\n */\nexport function isNonNullType(\n type: unknown,\n): type is GraphQLNonNull<GraphQLNullableType> {\n return instanceOf(type, nonNullSymbol, GraphQLNonNull);\n}\n\n/**\n * Returns the value as a GraphQLNonNull, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQLNonNull.\n * @example\n * ```ts\n * import { GraphQLNonNull, GraphQLString, assertNonNullType } from 'graphql/type';\n *\n * const nonNullType = assertNonNullType(new GraphQLNonNull(GraphQLString));\n *\n * nonNullType.ofType; // => GraphQLString\n * assertNonNullType(GraphQLString); // throws an error\n * ```\n */\nexport function assertNonNullType(\n type: unknown,\n): GraphQLNonNull<GraphQLNullableType> {\n if (!isNonNullType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL Non-Null type.`);\n }\n return type;\n}\n\n/** These types may be used as input types for arguments and directives. */\nexport type GraphQLNullableInputType =\n | GraphQLNamedInputType\n | GraphQLList<GraphQLInputType>;\n\n/** These types may be used as input types for arguments and directives. */\nexport type GraphQLInputType =\n | GraphQLNullableInputType\n | GraphQLNonNull<GraphQLNullableInputType>;\n\n/**\n * Returns true when the value can be used as a GraphQL input type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value can be used as a GraphQL input type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isInputType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput): Review\n * }\n * `);\n *\n * isInputType(schema.getType('ReviewInput')); // => true\n * isInputType(schema.getType('Review')); // => false\n * ```\n */\nexport function isInputType(type: unknown): type is GraphQLInputType {\n return (\n isScalarType(type) ||\n isEnumType(type) ||\n isInputObjectType(type) ||\n (isWrappingType(type) && isInputType(type.ofType))\n );\n}\n\n/**\n * Returns the value as a GraphQL input type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL input type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInputType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput): Review\n * }\n * `);\n *\n * const inputType = assertInputType(schema.getType('ReviewInput'));\n *\n * inputType.toString(); // => 'ReviewInput'\n * assertInputType(schema.getType('Review')); // throws an error\n * ```\n */\nexport function assertInputType(type: unknown): GraphQLInputType {\n if (!isInputType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL input type.`);\n }\n return type;\n}\n\n/** These types may be used as output types as the result of fields. */\nexport type GraphQLNullableOutputType =\n | GraphQLNamedOutputType\n | GraphQLList<GraphQLOutputType>;\n\n/** These types may be used as output types as the result of fields. */\nexport type GraphQLOutputType =\n | GraphQLNullableOutputType\n | GraphQLNonNull<GraphQLNullableOutputType>;\n\n/**\n * Returns true when the value can be used as a GraphQL output type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value can be used as a GraphQL output type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isOutputType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput): Review\n * }\n * `);\n *\n * isOutputType(schema.getType('Review')); // => true\n * isOutputType(schema.getType('ReviewInput')); // => false\n * ```\n */\nexport function isOutputType(type: unknown): type is GraphQLOutputType {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n (isWrappingType(type) && isOutputType(type.ofType))\n );\n}\n\n/**\n * Returns the value as a GraphQL output type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL output type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertOutputType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput): Review\n * }\n * `);\n *\n * const outputType = assertOutputType(schema.getType('Review'));\n *\n * outputType.toString(); // => 'Review'\n * assertOutputType(schema.getType('ReviewInput')); // throws an error\n * ```\n */\nexport function assertOutputType(type: unknown): GraphQLOutputType {\n if (!isOutputType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL output type.`);\n }\n return type;\n}\n\n/** These types may describe types which may be leaf values. */\nexport type GraphQLLeafType = GraphQLScalarType | GraphQLEnumType;\n\n/**\n * Returns true when the value is a GraphQL scalar or enum type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQL scalar or enum type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isLeafType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * episode: Episode\n * review: Review\n * }\n * `);\n *\n * isLeafType(schema.getType('Episode')); // => true\n * isLeafType(schema.getType('String')); // => true\n * isLeafType(schema.getType('Review')); // => false\n * ```\n */\nexport function isLeafType(type: unknown): type is GraphQLLeafType {\n return isScalarType(type) || isEnumType(type);\n}\n\n/**\n * Returns the value as a GraphQL leaf type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL leaf type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertLeafType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * }\n *\n * type Review {\n * stars: Int!\n * }\n *\n * type Query {\n * episode: Episode\n * review: Review\n * }\n * `);\n *\n * const episodeType = assertLeafType(schema.getType('Episode'));\n *\n * episodeType.toString(); // => 'Episode'\n * assertLeafType(schema.getType('Review')); // throws an error\n * ```\n */\nexport function assertLeafType(type: unknown): GraphQLLeafType {\n if (!isLeafType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL leaf type.`);\n }\n return type;\n}\n\n/** These types may describe the parent context of a selection set. */\nexport type GraphQLCompositeType =\n | GraphQLObjectType\n | GraphQLInterfaceType\n | GraphQLUnionType;\n\n/**\n * Returns true when the value is a GraphQL object, interface, or union type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQL object, interface, or union type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isCompositeType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * union SearchResult = User\n *\n * type Query {\n * node: Node\n * search: [SearchResult]\n * }\n * `);\n *\n * isCompositeType(schema.getType('User')); // => true\n * isCompositeType(schema.getType('Node')); // => true\n * isCompositeType(schema.getType('SearchResult')); // => true\n * isCompositeType(schema.getType('String')); // => false\n * ```\n */\nexport function isCompositeType(type: unknown): type is GraphQLCompositeType {\n return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n\n/**\n * Returns the value as a GraphQL composite type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL composite type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertCompositeType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * type Query {\n * node: Node\n * }\n * `);\n *\n * const userType = assertCompositeType(schema.getType('User'));\n *\n * userType.toString(); // => 'User'\n * assertCompositeType(schema.getType('String')); // throws an error\n * ```\n */\nexport function assertCompositeType(type: unknown): GraphQLCompositeType {\n if (!isCompositeType(type)) {\n throw new Error(\n `Expected ${inspect(type)} to be a GraphQL composite type.`,\n );\n }\n return type;\n}\n\n/** These types may describe the parent context of a selection set. */\nexport type GraphQLAbstractType = GraphQLInterfaceType | GraphQLUnionType;\n\n/**\n * Returns true when the value is a GraphQL interface or union type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQL interface or union type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { isAbstractType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * union SearchResult = User\n *\n * type Query {\n * node: Node\n * search: [SearchResult]\n * }\n * `);\n *\n * isAbstractType(schema.getType('Node')); // => true\n * isAbstractType(schema.getType('SearchResult')); // => true\n * isAbstractType(schema.getType('User')); // => false\n * ```\n */\nexport function isAbstractType(type: unknown): type is GraphQLAbstractType {\n return isInterfaceType(type) || isUnionType(type);\n}\n\n/**\n * Returns the value as a GraphQL abstract type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL abstract type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertAbstractType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * type Query {\n * node: Node\n * }\n * `);\n *\n * const nodeType = assertAbstractType(schema.getType('Node'));\n *\n * nodeType.toString(); // => 'Node'\n * assertAbstractType(schema.getType('User')); // throws an error\n * ```\n */\nexport function assertAbstractType(type: unknown): GraphQLAbstractType {\n if (!isAbstractType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL abstract type.`);\n }\n return type;\n}\n\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n * @typeParam T - The GraphQL type wrapped by this list type.\n * @example\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * parents: { type: new GraphQLList(PersonType) },\n * children: { type: new GraphQLList(PersonType) },\n * })\n * })\n * ```\n */\nexport class GraphQLList<\n T extends GraphQLType,\n> implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLList instances.\n * @private\n */\n readonly __kind: symbol;\n /** The type wrapped by this list or non-null type. */\n readonly ofType: T;\n // eslint-disable-next-line @typescript-eslint/no-unused-private-class-members\n declare private readonly __GraphQLListTypeBrand: never;\n\n /**\n * Creates a GraphQLList instance.\n * @param ofType - The type to wrap.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLString } from 'graphql/type';\n *\n * const stringList = new GraphQLList(GraphQLString);\n *\n * stringList.ofType; // => GraphQLString\n * String(stringList); // => '[String]'\n * ```\n */\n constructor(ofType: T) {\n this.__kind = listSymbol;\n this.ofType = ofType;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLList';\n }\n\n /**\n * Returns this wrapping type as a GraphQL type-reference string.\n * @returns The GraphQL type-reference string.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLNonNull, GraphQLString } from 'graphql/type';\n *\n * const stringList = new GraphQLList(GraphQLString);\n * const requiredStringList = new GraphQLList(new GraphQLNonNull(GraphQLString));\n *\n * stringList.toString(); // => '[String]'\n * requiredStringList.toString(); // => '[String!]'\n * ```\n */\n toString(): string {\n return '[' + String(this.ofType) + ']';\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLString } from 'graphql/type';\n *\n * const stringList = new GraphQLList(GraphQLString);\n *\n * stringList.toJSON(); // => '[String]'\n * JSON.stringify({ type: stringList }); // => '{\"type\":\"[String]\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n * @typeParam T - The nullable GraphQL type wrapped by this non-null type.\n * @example\n * ```ts\n * const RowType = new GraphQLObjectType({\n * name: 'Row',\n * fields: () => ({\n * id: { type: new GraphQLNonNull(GraphQLString) },\n * })\n * })\n * ```\n *\n * Note: the enforcement of non-nullability occurs within the executor.\n */\nexport class GraphQLNonNull<\n T extends GraphQLNullableType,\n> implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLNonNull instances.\n * @private\n */\n readonly __kind: symbol;\n /** The type wrapped by this list or non-null type. */\n readonly ofType: T;\n // eslint-disable-next-line @typescript-eslint/no-unused-private-class-members\n declare private readonly __GraphQLNonNullTypeBrand: never;\n\n /**\n * Creates a GraphQLNonNull instance.\n * @param ofType - The type to wrap.\n * @example\n * ```ts\n * import { GraphQLNonNull, GraphQLString } from 'graphql/type';\n *\n * const requiredString = new GraphQLNonNull(GraphQLString);\n *\n * requiredString.ofType; // => GraphQLString\n * String(requiredString); // => 'String!'\n * ```\n */\n constructor(ofType: T) {\n this.__kind = nonNullSymbol;\n this.ofType = ofType;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLNonNull';\n }\n\n /**\n * Returns this wrapping type as a GraphQL type-reference string.\n * @returns The GraphQL type-reference string.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLNonNull, GraphQLString } from 'graphql/type';\n *\n * const requiredString = new GraphQLNonNull(GraphQLString);\n * const requiredStringList = new GraphQLNonNull(\n * new GraphQLList(GraphQLString),\n * );\n *\n * requiredString.toString(); // => 'String!'\n * requiredStringList.toString(); // => '[String]!'\n * ```\n */\n toString(): string {\n return String(this.ofType) + '!';\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLNonNull, GraphQLString } from 'graphql/type';\n *\n * const requiredString = new GraphQLNonNull(GraphQLString);\n *\n * requiredString.toJSON(); // => 'String!'\n * JSON.stringify({ type: requiredString }); // => '{\"type\":\"String!\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/** These types wrap and modify other types */\n\nexport type GraphQLWrappingType =\n | GraphQLList<GraphQLType>\n | GraphQLNonNull<GraphQLNullableType>;\n\n/**\n * Returns true when the value is a GraphQL list or non-null wrapper type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQL list or non-null wrapper type.\n * @example\n * ```ts\n * import {\n * GraphQLList,\n * GraphQLNonNull,\n * GraphQLString,\n * isWrappingType,\n * } from 'graphql/type';\n *\n * isWrappingType(new GraphQLList(GraphQLString)); // => true\n * isWrappingType(new GraphQLNonNull(GraphQLString)); // => true\n * isWrappingType(GraphQLString); // => false\n * ```\n */\nexport function isWrappingType(type: unknown): type is GraphQLWrappingType {\n return isListType(type) || isNonNullType(type);\n}\n\n/**\n * Returns the value as a GraphQL wrapping type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL wrapping type.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLString, assertWrappingType } from 'graphql/type';\n *\n * const wrappingType = assertWrappingType(new GraphQLList(GraphQLString));\n *\n * wrappingType.toString(); // => '[String]'\n * assertWrappingType(GraphQLString); // throws an error\n * ```\n */\nexport function assertWrappingType(type: unknown): GraphQLWrappingType {\n if (!isWrappingType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL wrapping type.`);\n }\n return type;\n}\n\n/** These types can all accept null as a value. */\nexport type GraphQLNullableType = GraphQLNamedType | GraphQLList<GraphQLType>;\n\n/**\n * Returns true when the value is a GraphQL type that can accept null.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQL type that can accept null.\n * @example\n * ```ts\n * import { GraphQLNonNull, GraphQLString, isNullableType } from 'graphql/type';\n *\n * isNullableType(GraphQLString); // => true\n * isNullableType(new GraphQLNonNull(GraphQLString)); // => false\n * isNullableType(null); // => false\n * ```\n */\nexport function isNullableType(type: unknown): type is GraphQLNullableType {\n return isType(type) && !isNonNullType(type);\n}\n\n/**\n * Returns the value as a nullable GraphQL type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a nullable GraphQL type.\n * @example\n * ```ts\n * import {\n * GraphQLNonNull,\n * GraphQLString,\n * assertNullableType,\n * } from 'graphql/type';\n *\n * const nullableType = assertNullableType(GraphQLString);\n *\n * nullableType; // => GraphQLString\n * assertNullableType(new GraphQLNonNull(GraphQLString)); // throws an error\n * ```\n */\nexport function assertNullableType(type: unknown): GraphQLNullableType {\n if (!isNullableType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL nullable type.`);\n }\n return type;\n}\n\n/**\n * Returns the nullable type.\n * @param type - The GraphQL type to inspect.\n * @returns The nullable type after removing one non-null wrapper, if present.\n * @example\n * ```ts\n * import { getNullableType } from 'graphql/type';\n *\n * getNullableType(null); // => undefined\n * getNullableType(undefined); // => undefined\n * ```\n */\nexport function getNullableType(type: undefined | null): void;\n/**\n * Returns the nullable type after removing one non-null wrapper.\n * @param type - A nullable type or non-null wrapper.\n * @returns The nullable type after removing one non-null wrapper, if present.\n * @typeParam T - The nullable GraphQL type returned after removing one non-null wrapper.\n * @example\n * ```ts\n * import {\n * GraphQLList,\n * GraphQLNonNull,\n * GraphQLString,\n * getNullableType,\n * } from 'graphql/type';\n *\n * const requiredString = new GraphQLNonNull(GraphQLString);\n * const stringList = new GraphQLList(GraphQLString);\n *\n * getNullableType(requiredString); // => GraphQLString\n * getNullableType(stringList); // => stringList\n * ```\n */\nexport function getNullableType<T extends GraphQLNullableType>(\n type: T | GraphQLNonNull<T>,\n): T;\n/**\n * Returns the nullable type after removing one non-null wrapper.\n * @param type - The GraphQL type to inspect.\n * @returns The nullable type after removing one non-null wrapper, if present.\n * @example\n * ```ts\n * import {\n * GraphQLList,\n * GraphQLNonNull,\n * GraphQLString,\n * getNullableType,\n * } from 'graphql/type';\n *\n * const requiredStringList = new GraphQLNonNull(\n * new GraphQLList(GraphQLString),\n * );\n *\n * getNullableType(requiredStringList).toString(); // => '[String]'\n * getNullableType(GraphQLString); // => GraphQLString\n * ```\n */\nexport function getNullableType(\n type: Maybe<GraphQLType>,\n): GraphQLNullableType | undefined;\n/**\n * Returns the nullable type after removing one non-null wrapper.\n * @internal\n */\nexport function getNullableType(\n type: Maybe<GraphQLType>,\n): GraphQLNullableType | undefined {\n if (type) {\n return isNonNullType(type) ? type.ofType : type;\n }\n}\n\n/** These named types do not include modifiers like List or NonNull. */\nexport type GraphQLNamedType = GraphQLNamedInputType | GraphQLNamedOutputType;\n\n/** A named GraphQL type that can be used as an input type. */\nexport type GraphQLNamedInputType =\n | GraphQLScalarType\n | GraphQLEnumType\n | GraphQLInputObjectType;\n\n/** A named GraphQL type that can be used as an output type. */\nexport type GraphQLNamedOutputType =\n | GraphQLScalarType\n | GraphQLObjectType\n | GraphQLInterfaceType\n | GraphQLUnionType\n | GraphQLEnumType;\n\n/**\n * Returns true when the value is a GraphQL named type.\n * @param type - The GraphQL type to inspect.\n * @returns True when the value is a GraphQL named type.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLString, isNamedType } from 'graphql/type';\n *\n * isNamedType(GraphQLString); // => true\n * isNamedType(new GraphQLList(GraphQLString)); // => false\n * isNamedType(null); // => false\n * ```\n */\nexport function isNamedType(type: unknown): type is GraphQLNamedType {\n return (\n isScalarType(type) ||\n isObjectType(type) ||\n isInterfaceType(type) ||\n isUnionType(type) ||\n isEnumType(type) ||\n isInputObjectType(type)\n );\n}\n\n/**\n * Returns the value as a GraphQL named type, or throws if it is not one.\n * @param type - The GraphQL type to inspect.\n * @returns The value typed as a GraphQL named type.\n * @example\n * ```ts\n * import { GraphQLList, GraphQLString, assertNamedType } from 'graphql/type';\n *\n * const namedType = assertNamedType(GraphQLString);\n *\n * namedType.name; // => 'String'\n * assertNamedType(new GraphQLList(GraphQLString)); // throws an error\n * ```\n */\nexport function assertNamedType(type: unknown): GraphQLNamedType {\n if (!isNamedType(type)) {\n throw new Error(`Expected ${inspect(type)} to be a GraphQL named type.`);\n }\n return type;\n}\n\n/**\n * Returns the named type.\n * @param type - The GraphQL type to inspect.\n * @returns The named type after unwrapping all list and non-null wrappers.\n * @example\n * ```ts\n * import { getNamedType } from 'graphql/type';\n *\n * getNamedType(null); // => undefined\n * getNamedType(undefined); // => undefined\n * ```\n */\nexport function getNamedType(type: undefined | null): void;\n/**\n * Returns the named input type after unwrapping all list and non-null wrappers.\n * @param type - The GraphQL input type to inspect.\n * @returns The named input type after unwrapping all wrappers.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { getNamedType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: [ReviewInput!]!): Boolean\n * }\n * `);\n *\n * const inputArg = schema.getQueryType()?.getFields().review.args[0];\n *\n * getNamedType(inputArg?.type).toString(); // => 'ReviewInput'\n * ```\n */\nexport function getNamedType(type: GraphQLInputType): GraphQLNamedInputType;\n/**\n * Returns the named output type after unwrapping all list and non-null wrappers.\n * @param type - The GraphQL output type to inspect.\n * @returns The named output type after unwrapping all wrappers.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { getNamedType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type User {\n * name: String\n * }\n *\n * type Query {\n * users: [User!]!\n * }\n * `);\n *\n * const usersField = schema.getQueryType()?.getFields().users;\n *\n * getNamedType(usersField?.type).toString(); // => 'User'\n * ```\n */\nexport function getNamedType(type: GraphQLOutputType): GraphQLNamedOutputType;\n/**\n * Returns the named type after unwrapping all list and non-null wrappers.\n * @param type - The GraphQL type to inspect.\n * @returns The named type after unwrapping all wrappers.\n * @example\n * ```ts\n * import {\n * GraphQLList,\n * GraphQLNonNull,\n * GraphQLString,\n * getNamedType,\n * } from 'graphql/type';\n *\n * const nestedType = new GraphQLNonNull(\n * new GraphQLList(new GraphQLNonNull(GraphQLString)),\n * );\n *\n * getNamedType(nestedType); // => GraphQLString\n * ```\n */\nexport function getNamedType(type: GraphQLType): GraphQLNamedType;\n/**\n * Returns the named type after unwrapping all list and non-null wrappers.\n * @param type - The GraphQL type to inspect.\n * @returns The named type after unwrapping all wrappers, or undefined for nullish input.\n * @example\n * ```ts\n * import {\n * GraphQLList,\n * GraphQLString,\n * getNamedType,\n * } from 'graphql/type';\n *\n * getNamedType(new GraphQLList(GraphQLString)); // => GraphQLString\n * getNamedType(undefined); // => undefined\n * ```\n */\nexport function getNamedType(\n type: Maybe<GraphQLType>,\n): GraphQLNamedType | undefined;\n/**\n * Returns the named type after unwrapping all list and non-null wrappers.\n * @internal\n */\nexport function getNamedType(\n type: Maybe<GraphQLType>,\n): GraphQLNamedType | undefined {\n if (type) {\n let unwrappedType = type;\n while (isWrappingType(unwrappedType)) {\n unwrappedType = unwrappedType.ofType;\n }\n return unwrappedType;\n }\n}\n\n/**\n * An interface for all Schema Elements.\n *\n * @internal\n */\n\nexport interface GraphQLSchemaElement {\n toString: () => string;\n toJSON: () => string;\n}\n\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n * @typeParam T - The element type returned by the thunk or array.\n */\nexport type ThunkReadonlyArray<T> = (() => ReadonlyArray<T>) | ReadonlyArray<T>;\n/**\n * A thunk that resolves to an object map.\n * @typeParam T - Value type stored in the object map.\n */\nexport type ThunkObjMap<T> = (() => ObjMap<T>) | ObjMap<T>;\n\n/**\n * Resolves a thunked readonly array.\n * @param thunk - The thunk or value to resolve.\n * @returns The resolved readonly array.\n * @typeParam T - The element type resolved from the thunk or array.\n * @example\n * ```ts\n * import { GraphQLString, resolveReadonlyArrayThunk } from 'graphql/type';\n *\n * const lazyFields = resolveReadonlyArrayThunk(() => [GraphQLString]);\n * const fields = resolveReadonlyArrayThunk([GraphQLString]);\n *\n * lazyFields; // => [GraphQLString]\n * fields; // => [GraphQLString]\n * ```\n */\nexport function resolveReadonlyArrayThunk<T>(\n thunk: ThunkReadonlyArray<T>,\n): ReadonlyArray<T> {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\n/**\n * Resolves a thunked object map.\n * @param thunk - The thunk or value to resolve.\n * @returns The resolved object map.\n * @typeParam T - The object-map value type resolved from the thunk or map.\n * @example\n * ```ts\n * import { GraphQLString, resolveObjMapThunk } from 'graphql/type';\n *\n * const lazyFields = resolveObjMapThunk(() => ({ name: GraphQLString }));\n * const fields = resolveObjMapThunk({ name: GraphQLString });\n *\n * lazyFields.name; // => GraphQLString\n * fields.name; // => GraphQLString\n * ```\n */\nexport function resolveObjMapThunk<T>(thunk: ThunkObjMap<T>): ObjMap<T> {\n return typeof thunk === 'function' ? thunk() : thunk;\n}\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLScalarTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Scalar Type Definition\n *\n * Scalar types define the leaf values of a GraphQL response and the input\n * values accepted by arguments and input object fields. A scalar type has a\n * name and coercion functions that validate and convert runtime values and\n * GraphQL literals.\n *\n * If a type's coerceOutputValue function returns `null` or does not return a\n * value (i.e. it returns `undefined`) then an error will be raised and a\n * `null` value will be returned in the response. Prefer validating inputs\n * before execution so clients receive input diagnostics before result coercion\n * fails.\n * Custom scalar behavior is defined via the following functions:\n *\n * - coerceOutputValue(value): Implements \"Result Coercion\". Given an internal value,\n * produces an external value valid for this type. Returns undefined or\n * throws an error to indicate invalid values.\n *\n * - coerceInputValue(value): Implements \"Input Coercion\" for values. Given an\n * external value (for example, variable values), produces an internal value\n * valid for this type. Returns undefined or throws an error to indicate\n * invalid values.\n *\n * - coerceInputLiteral(ast): Implements \"Input Coercion\" for constant literals.\n * Given a GraphQL literal (AST) (for example, an argument value), produces\n * an internal value valid for this type. Returns undefined or throws an\n * error to indicate invalid values.\n *\n * - valueToLiteral(value): Converts an external value to a GraphQL\n * literal (AST). Returns undefined or throws an error to indicate\n * invalid values.\n *\n * Deprecated, to be removed in v18:\n *\n * - serialize(value): Implements \"Result Coercion\". Renamed to\n * `coerceOutputValue()`.\n *\n * - parseValue(value): Implements \"Input Coercion\" for values. Renamed to\n * `coerceInputValue()`.\n *\n * - parseLiteral(ast): Implements \"Input Coercion\" for literals including\n * non-specified replacement of variables embedded within complex scalars.\n * Replaced by the combination of the `replaceVariables()` utility and the\n * `coerceInputLiteral()` method.\n * @typeParam TInternal - Internal runtime representation for this scalar.\n * @typeParam TExternal - External representation accepted from or returned to callers.\n * @example\n * ```ts\n * import { GraphQLScalarType, Kind } from 'graphql';\n *\n * const ensureOdd = (value) => {\n * if (!Number.isFinite(value)) {\n * throw new Error(\n * `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n * );\n * }\n *\n * if (value % 2 === 0) {\n * throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n * }\n *\n * return value;\n * };\n *\n * const OddType = new GraphQLScalarType({\n * name: 'Odd',\n * coerceOutputValue: (value) => {\n * return ensureOdd(value);\n * },\n * coerceInputValue: (value) => {\n * return ensureOdd(value);\n * },\n * valueToLiteral: (value) => {\n * return { kind: Kind.INT, value: String(ensureOdd(value)) };\n * }\n * });\n * ```\n */\nexport class GraphQLScalarType<\n TInternal = unknown,\n TExternal = TInternal,\n> implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLScalarType instances.\n * @private\n */\n readonly __kind: symbol;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** URL identifying the behavior specified for this custom scalar. */\n specifiedByURL: Maybe<string>;\n /**\n * Deprecated legacy serializer used to convert internal values for response\n * output. Use `coerceOutputValue()` instead.\n * @deprecated use `coerceOutputValue()` instead, `serialize()` will be removed in v18\n */\n serialize: GraphQLScalarSerializer<TExternal>;\n /**\n * Deprecated legacy parser used to convert externally provided input values.\n * Use `coerceInputValue()` instead.\n * @deprecated use `coerceInputValue()` instead, `parseValue()` will be removed in v18\n */\n parseValue: GraphQLScalarValueParser<TInternal>;\n /**\n * Deprecated legacy parser used to convert externally provided input\n * literals. Use `replaceVariables()` and `coerceInputLiteral()` instead.\n * @deprecated use `replaceVariables()` and `coerceInputLiteral()` instead, `parseLiteral()` will be removed in v18\n */\n parseLiteral: GraphQLScalarLiteralParser<TInternal>;\n /** Coercer used to convert internal scalar values for response output. */\n coerceOutputValue: GraphQLScalarOutputValueCoercer<TExternal>;\n /** Coercer used to convert externally provided scalar input values. */\n coerceInputValue: GraphQLScalarInputValueCoercer<TInternal>;\n /** Coercer used to convert GraphQL scalar input literals. */\n coerceInputLiteral: GraphQLScalarInputLiteralCoercer<TInternal> | undefined;\n /** Converter used to produce GraphQL literals from runtime input values. */\n valueToLiteral: GraphQLScalarValueToLiteral | undefined;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLScalarTypeExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<ScalarTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes: ReadonlyArray<ScalarTypeExtensionNode>;\n\n /**\n * Creates a GraphQLScalarType instance.\n * @param config - Configuration describing this object.\n * @example\n * ```ts\n * import { Kind, parse } from 'graphql/language';\n * import { GraphQLScalarType } from 'graphql/type';\n *\n * const document = parse(`\n * \"Odd integer values.\"\n * scalar Odd @specifiedBy(url: \"https://example.com/odd\")\n *\n * extend scalar Odd @specifiedBy(url: \"https://example.com/odd-v2\")\n * `);\n *\n * const Odd = new GraphQLScalarType({\n * name: 'Odd',\n * description: 'Odd integer values.',\n * specifiedByURL: 'https://example.com/odd',\n * coerceOutputValue: (value) => {\n * if (typeof value !== 'number' || value % 2 === 0) {\n * throw new TypeError('Odd can only produce odd numbers.');\n * }\n * return value;\n * },\n * coerceInputValue: (value) => {\n * if (typeof value !== 'number' || value % 2 === 0) {\n * throw new TypeError('Odd can only accept odd numbers.');\n * }\n * return value;\n * },\n * coerceInputLiteral: (ast) => {\n * if (ast.kind !== Kind.INT) {\n * throw new TypeError('Odd can only accept integer literals.');\n * }\n * const value = Number(ast.value);\n * if (value % 2 === 0) {\n * throw new TypeError('Odd can only accept odd integer literals.');\n * }\n * return value;\n * },\n * valueToLiteral: (value) => {\n * return { kind: Kind.INT, value: String(ensureOdd(value)) };\n * },\n * extensions: { numeric: true },\n * astNode: document.definitions[0],\n * extensionASTNodes: [ document.definitions[1] ],\n * });\n *\n * Odd.description; // => 'Odd integer values.'\n * Odd.specifiedByURL; // => 'https://example.com/odd'\n * Odd.coerceOutputValue(3); // => 3\n * Odd.coerceInputValue(5); // => 5\n * Odd.extensions; // => { numeric: true }\n * ```\n */\n constructor(config: Readonly<GraphQLScalarTypeConfig<TInternal, TExternal>>) {\n this.__kind = scalarSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.specifiedByURL = config.specifiedByURL;\n this.serialize =\n config.serialize ??\n config.coerceOutputValue ??\n (identityFunc as GraphQLScalarSerializer<TExternal>);\n this.parseValue =\n config.parseValue ??\n config.coerceInputValue ??\n (identityFunc as GraphQLScalarValueParser<TInternal>);\n this.parseLiteral =\n config.parseLiteral ??\n ((node, variables) =>\n this.coerceInputValue(valueFromASTUntyped(node, variables)));\n this.coerceOutputValue = config.coerceOutputValue ?? this.serialize;\n this.coerceInputValue = config.coerceInputValue ?? this.parseValue;\n this.coerceInputLiteral = config.coerceInputLiteral;\n this.valueToLiteral = config.valueToLiteral;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n\n if (config.parseLiteral) {\n devAssert(\n typeof config.parseValue === 'function' &&\n typeof config.parseLiteral === 'function',\n `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n );\n }\n\n if (config.coerceInputLiteral) {\n devAssert(\n typeof config.coerceInputValue === 'function' &&\n typeof config.coerceInputLiteral === 'function',\n `${this.name} must provide both \"coerceInputValue\" and \"coerceInputLiteral\" functions.`,\n );\n }\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLScalarType';\n }\n\n /**\n * Returns a normalized configuration object for this object.\n * @returns A configuration object that can be used to recreate this object.\n * @example\n * ```ts\n * import { GraphQLScalarType } from 'graphql/type';\n *\n * const Url = new GraphQLScalarType({\n * name: 'Url',\n * description: 'An absolute URL string.',\n * specifiedByURL: 'https://url.spec.whatwg.org/',\n * });\n *\n * const config = Url.toConfig();\n * const UrlCopy = new GraphQLScalarType(config);\n *\n * config.name; // => 'Url'\n * config.specifiedByURL; // => 'https://url.spec.whatwg.org/'\n * UrlCopy.name; // => Url.name\n * ```\n */\n toConfig(): GraphQLScalarTypeNormalizedConfig<TInternal, TExternal> {\n return {\n name: this.name,\n description: this.description,\n specifiedByURL: this.specifiedByURL,\n serialize: this.serialize,\n parseValue: this.parseValue,\n parseLiteral: this.parseLiteral,\n coerceOutputValue: this.coerceOutputValue,\n coerceInputValue: this.coerceInputValue,\n coerceInputLiteral: this.coerceInputLiteral,\n valueToLiteral: this.valueToLiteral,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n /**\n * Returns the schema coordinate identifying this scalar type.\n * @returns The schema coordinate for this scalar type.\n * @example\n * ```ts\n * import { GraphQLScalarType } from 'graphql/type';\n *\n * const DateTime = new GraphQLScalarType({ name: 'DateTime' });\n *\n * DateTime.toString(); // => 'DateTime'\n * String(DateTime); // => 'DateTime'\n * ```\n */\n toString(): string {\n return this.name;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLScalarType } from 'graphql/type';\n *\n * const DateTime = new GraphQLScalarType({ name: 'DateTime' });\n *\n * DateTime.toJSON(); // => 'DateTime'\n * JSON.stringify({ type: DateTime }); // => '{\"type\":\"DateTime\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Deprecated function type that serializes a runtime value as a scalar output\n * value. Use `GraphQLScalarOutputValueCoercer` instead.\n * @typeParam TExternal - External representation accepted from or returned to callers.\n * @deprecated Use GraphQLScalarOutputValueCoercer instead. Will be removed in v18.\n */\nexport type GraphQLScalarSerializer<TExternal> = (\n outputValue: unknown,\n) => TExternal;\n\n/**\n * Function used to coerce internal scalar values for response output.\n * @typeParam TExternal - External representation accepted from or returned to callers.\n */\nexport type GraphQLScalarOutputValueCoercer<TExternal> = (\n outputValue: unknown,\n) => TExternal;\n\n/**\n * Deprecated function type that parses a runtime input value as a scalar input\n * value. Use `GraphQLScalarInputValueCoercer` instead.\n * @typeParam TInternal - Internal runtime representation for this scalar.\n * @deprecated Use GraphQLScalarInputValueCoercer instead. Will be removed in v18.\n */\nexport type GraphQLScalarValueParser<TInternal> = (\n inputValue: unknown,\n) => TInternal;\n\n/**\n * Function used to coerce externally provided scalar input values.\n * @typeParam TInternal - Internal runtime representation for this scalar.\n */\nexport type GraphQLScalarInputValueCoercer<TInternal> = (\n inputValue: unknown,\n) => TInternal;\n\n/**\n * Deprecated function type that parses a GraphQL value literal as a scalar\n * input value. Use `GraphQLScalarInputLiteralCoercer` instead.\n * @typeParam TInternal - Internal runtime representation for this scalar.\n * @deprecated Use GraphQLScalarInputLiteralCoercer instead. Will be removed in v18.\n */\nexport type GraphQLScalarLiteralParser<TInternal> = (\n valueNode: ValueNode,\n variables: Maybe<ObjMap<unknown>>,\n) => Maybe<TInternal>;\n\n/**\n * Function used to coerce GraphQL scalar input literals.\n * @typeParam TInternal - Internal runtime representation for this scalar.\n */\nexport type GraphQLScalarInputLiteralCoercer<TInternal> = (\n valueNode: ConstValueNode,\n) => Maybe<TInternal>;\n\n/** @internal */\nexport type GraphQLScalarValueToLiteral = (\n inputValue: unknown,\n) => ConstValueNode | undefined;\n\n/**\n * Configuration used to construct a GraphQLScalarType.\n * @typeParam TInternal - Internal runtime representation for this scalar.\n * @typeParam TExternal - External representation accepted from or returned to callers.\n */\nexport interface GraphQLScalarTypeConfig<TInternal, TExternal> {\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** URL identifying the behavior specified for this custom scalar. */\n specifiedByURL?: Maybe<string>;\n /**\n * Deprecated legacy serializer used to convert internal values for response\n * output. Use `coerceOutputValue()` instead.\n * @deprecated use `coerceOutputValue()` instead, `serialize()` will be removed in v18\n */\n serialize?: GraphQLScalarSerializer<TExternal> | undefined;\n /**\n * Deprecated legacy parser used to convert externally provided input values.\n * Use `coerceInputValue()` instead.\n * @deprecated use `coerceInputValue()` instead, `parseValue()` will be removed in v18\n */\n parseValue?: GraphQLScalarValueParser<TInternal> | undefined;\n /**\n * Deprecated legacy parser used to convert externally provided input\n * literals. Use `replaceVariables()` and `coerceInputLiteral()` instead.\n * @deprecated use `replaceVariables()` and `coerceInputLiteral()` instead, `parseLiteral()` will be removed in v18\n */\n parseLiteral?: GraphQLScalarLiteralParser<TInternal> | undefined;\n /** Coerces an internal value to include in a response. */\n coerceOutputValue?: GraphQLScalarOutputValueCoercer<TExternal> | undefined;\n /** Coerces an externally provided value to use as an input. */\n coerceInputValue?: GraphQLScalarInputValueCoercer<TInternal> | undefined;\n /** Coerces an externally provided const literal value to use as an input. */\n coerceInputLiteral?: GraphQLScalarInputLiteralCoercer<TInternal> | undefined;\n /** Translates an externally provided value to a literal (AST). */\n valueToLiteral?: GraphQLScalarValueToLiteral | undefined;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLScalarTypeExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<ScalarTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes?: Maybe<ReadonlyArray<ScalarTypeExtensionNode>>;\n}\n\n/** @internal */\nexport interface GraphQLScalarTypeNormalizedConfig<\n TInternal,\n TExternal,\n> extends GraphQLScalarTypeConfig<TInternal, TExternal> {\n serialize: GraphQLScalarSerializer<TExternal>;\n parseValue: GraphQLScalarValueParser<TInternal>;\n parseLiteral: GraphQLScalarLiteralParser<TInternal>;\n coerceOutputValue: GraphQLScalarOutputValueCoercer<TExternal>;\n coerceInputValue: GraphQLScalarInputValueCoercer<TInternal>;\n coerceInputLiteral: GraphQLScalarInputLiteralCoercer<TInternal> | undefined;\n extensions: Readonly<GraphQLScalarTypeExtensions>;\n extensionASTNodes: ReadonlyArray<ScalarTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n * We've provided these template arguments because this is an open type and\n * you may find them useful.\n * @typeParam _TSource - Reserved source type parameter for extension typing.\n * @typeParam _TContext - Reserved context type parameter for extension typing.\n */\nexport interface GraphQLObjectTypeExtensions<_TSource = any, _TContext = any> {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n * @typeParam TAbstract - Runtime value type used for abstract type resolution.\n * @example\n * ```ts\n * const AddressType = new GraphQLObjectType({\n * name: 'Address',\n * fields: {\n * street: { type: GraphQLString },\n * number: { type: GraphQLInt },\n * formatted: {\n * type: GraphQLString,\n * resolve: (obj) => {\n * return obj.number + ' ' + obj.street\n * }\n * }\n * }\n * });\n * ```\n * @example\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n * name: 'Person',\n * fields: () => ({\n * name: { type: GraphQLString },\n * bestFriend: { type: PersonType },\n * })\n * });\n * ```\n */\nexport class GraphQLObjectType<\n TSource = any,\n TContext = any,\n TAbstract = any,\n> implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLObjectType instances.\n * @private\n */\n readonly __kind: typeof objectSymbol = objectSymbol;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** Predicate used to determine whether a runtime value belongs to this object type. */\n isTypeOf: Maybe<GraphQLIsTypeOfFn<TAbstract, TContext>>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<ObjectTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes: ReadonlyArray<ObjectTypeExtensionNode>;\n\n private _fields: ThunkObjMap<GraphQLField<TSource, TContext>>;\n private _interfaces: ThunkReadonlyArray<GraphQLInterfaceType>;\n\n /**\n * Creates a GraphQLObjectType instance.\n * @param config - Configuration describing this object.\n * @example\n * ```ts\n * // Configure an object type with interfaces, fields, arguments, and metadata.\n * import { parse } from 'graphql/language';\n * import {\n * GraphQLID,\n * GraphQLInterfaceType,\n * GraphQLNonNull,\n * GraphQLObjectType,\n * GraphQLString,\n * } from 'graphql/type';\n *\n * const document = parse(`\n * type User implements Node {\n * id: ID!\n * name(format: String = \"short\"): String\n * }\n *\n * extend type User {\n * displayName: String\n * }\n * `);\n * const definition = document.definitions[0];\n * const nameField = definition.fields[1];\n * const formatArg = nameField.arguments[0];\n *\n * const Node = new GraphQLInterfaceType({\n * name: 'Node',\n * fields: {\n * id: { type: new GraphQLNonNull(GraphQLID) },\n * },\n * });\n *\n * const User = new GraphQLObjectType({\n * name: 'User',\n * description: 'A registered user.',\n * interfaces: [Node],\n * fields: {\n * id: { type: new GraphQLNonNull(GraphQLID) },\n * name: {\n * description: 'The formatted user name.',\n * type: GraphQLString,\n * args: {\n * format: {\n * description: 'Controls the name format.',\n * type: GraphQLString,\n * default: { value: 'short' },\n * deprecationReason: 'Use locale instead.',\n * extensions: { public: true },\n * astNode: formatArg,\n * },\n * },\n * resolve: (user, { format }) => {\n * return format === 'long' ? user.fullName : user.name;\n * },\n * deprecationReason: 'Use displayName.',\n * extensions: { cacheSeconds: 60 },\n * astNode: nameField,\n * },\n * },\n * isTypeOf: (value) => {\n * return typeof value === 'object' && value != null && 'id' in value;\n * },\n * extensions: { entity: 'User' },\n * astNode: definition,\n * extensionASTNodes: [ document.definitions[1] ],\n * });\n *\n * User.name; // => 'User'\n * User.getInterfaces(); // => [Node]\n * Object.keys(User.getFields()); // => ['id', 'name']\n * User.getFields().name.args[0].default.value; // => 'short'\n * User.extensions; // => { entity: 'User' }\n * ```\n * @example\n * ```ts\n * // This variant configures a subscription field with subscribe and resolve functions.\n * import { GraphQLObjectType, GraphQLString } from 'graphql/type';\n *\n * const Subscription = new GraphQLObjectType({\n * name: 'Subscription',\n * fields: {\n * greeting: {\n * type: GraphQLString,\n * subscribe: async function* () {\n * yield { greeting: 'Hello!' };\n * },\n * resolve: (event) => {\n * return event.greeting;\n * },\n * },\n * },\n * });\n *\n * typeof Subscription.getFields().greeting.subscribe; // => 'function'\n * ```\n */\n constructor(\n config: Readonly<GraphQLObjectTypeConfig<TSource, TContext, TAbstract>>,\n ) {\n this.__kind = objectSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.isTypeOf = config.isTypeOf;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n this._fields = (defineFieldMap<TSource, TContext>).bind(\n undefined,\n this,\n config.fields,\n );\n this._interfaces = defineInterfaces.bind(undefined, config.interfaces);\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLObjectType';\n }\n\n /**\n * Returns the fields defined by this type.\n * @returns The fields keyed by field name.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type User {\n * id: ID!\n * name: String\n * }\n *\n * type Query {\n * viewer: User\n * }\n * `);\n *\n * const User = assertObjectType(schema.getType('User'));\n * const fields = User.getFields();\n *\n * Object.keys(fields); // => ['id', 'name']\n * String(fields.id.type); // => 'ID!'\n * ```\n */\n getFields(): GraphQLFieldMap<TSource, TContext> {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n return this._fields;\n }\n\n /**\n * Returns the interfaces implemented by this type.\n * @returns The implemented interfaces.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * type Query {\n * viewer: User\n * }\n * `);\n *\n * const User = assertObjectType(schema.getType('User'));\n *\n * User.getInterfaces().map((type) => type.name); // => ['Node']\n * ```\n */\n getInterfaces(): ReadonlyArray<GraphQLInterfaceType> {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n return this._interfaces;\n }\n\n /**\n * Returns a normalized configuration object for this object.\n * @returns A configuration object that can be used to recreate this object.\n * @example\n * ```ts\n * import { GraphQLObjectType, GraphQLString } from 'graphql/type';\n *\n * const User = new GraphQLObjectType({\n * name: 'User',\n * fields: {\n * name: { type: GraphQLString },\n * },\n * });\n *\n * const config = User.toConfig();\n * const UserCopy = new GraphQLObjectType(config);\n *\n * config.fields.name.type; // => GraphQLString\n * UserCopy.getFields().name.type; // => GraphQLString\n * ```\n */\n toConfig(): GraphQLObjectTypeNormalizedConfig<TSource, TContext, TAbstract> {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: mapValue(this.getFields(), (field) => field.toConfig()),\n isTypeOf: this.isTypeOf,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n /**\n * Returns the schema coordinate identifying this object type.\n * @returns The schema coordinate for this object type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type User {\n * name: String\n * }\n *\n * type Query {\n * viewer: User\n * }\n * `);\n *\n * const User = assertObjectType(schema.getType('User'));\n *\n * User.toString(); // => 'User'\n * ```\n */\n toString(): string {\n return this.name;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLObjectType, GraphQLString } from 'graphql/type';\n *\n * const User = new GraphQLObjectType({\n * name: 'User',\n * fields: { name: { type: GraphQLString } },\n * });\n *\n * User.toJSON(); // => 'User'\n * JSON.stringify({ type: User }); // => '{\"type\":\"User\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineInterfaces(\n interfaces: Maybe<ThunkReadonlyArray<GraphQLInterfaceType>>,\n): ReadonlyArray<GraphQLInterfaceType> {\n return resolveReadonlyArrayThunk(interfaces ?? []);\n}\n\nfunction defineFieldMap<TSource, TContext>(\n parentType:\n | GraphQLObjectType<TSource, TContext>\n | GraphQLInterfaceType<TSource, TContext>,\n fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>,\n): GraphQLFieldMap<TSource, TContext> {\n const fieldMap = resolveObjMapThunk(fields);\n\n return mapValue(\n fieldMap,\n (fieldConfig, fieldName) =>\n new GraphQLField(parentType, fieldName, fieldConfig),\n );\n}\n\n/**\n * Configuration used to construct a GraphQLObjectType.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n * @typeParam TAbstract - Runtime value type used for abstract type resolution.\n */\nexport interface GraphQLObjectTypeConfig<\n TSource,\n TContext,\n TAbstract = unknown,\n> {\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** Interfaces implemented by this object or interface type. */\n interfaces?: ThunkReadonlyArray<GraphQLInterfaceType> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>;\n /** Predicate used to determine whether a runtime value belongs to this object type. */\n isTypeOf?: Maybe<GraphQLIsTypeOfFn<TAbstract, TContext>>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<ObjectTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes?: Maybe<ReadonlyArray<ObjectTypeExtensionNode>>;\n}\n\n/** @internal */\nexport interface GraphQLObjectTypeNormalizedConfig<\n TSource,\n TContext,\n TAbstract = unknown,\n> extends GraphQLObjectTypeConfig<TSource, TContext, TAbstract> {\n interfaces: ReadonlyArray<GraphQLInterfaceType>;\n fields: GraphQLFieldNormalizedConfigMap<TSource, TContext>;\n extensions: Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>;\n extensionASTNodes: ReadonlyArray<ObjectTypeExtensionNode>;\n}\n\n/**\n * Resolves the concrete object type for an abstract GraphQL type.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n */\nexport type GraphQLTypeResolver<TSource, TContext> = (\n value: TSource,\n context: TContext,\n info: GraphQLResolveInfo,\n abstractType: GraphQLAbstractType,\n) => PromiseOrValue<string | undefined>;\n\n/**\n * Checks whether a runtime value belongs to a GraphQL object type.\n * @typeParam TAbstract - Runtime value type used for abstract type resolution.\n * @typeParam TContext - Context object type passed to resolvers.\n */\nexport type GraphQLIsTypeOfFn<TAbstract, TContext> = (\n value: TAbstract,\n context: TContext,\n info: GraphQLResolveInfo,\n) => PromiseOrValue<boolean>;\n\n/**\n * Resolves the runtime value for a GraphQL field.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n * @typeParam TArgs - Argument object type passed to resolvers.\n * @typeParam TResult - Result value type.\n */\nexport type GraphQLFieldResolver<\n TSource,\n TContext,\n TArgs = any,\n TResult = unknown,\n> = (\n source: TSource,\n args: TArgs,\n context: TContext,\n info: GraphQLResolveInfo,\n) => TResult;\n\n/** Utilities available from resolver info for tracking asynchronous work. */\nexport interface GraphQLResolveInfoHelpers {\n /**\n * Promise.all wrapper that allows rejected branches to be tracked\n * as execution async work.\n *\n * Intended use: return or await this promise from resolver work.\n * Un-awaited async side effects are an anti-pattern:\n *\n * const { promiseAll } = info.getAsyncHelpers();\n * promiseAll([someAsyncWork(), someOtherAsyncWork()]).catch(() => undefined);\n *\n * In that anti-pattern, tracking starts only after rejection (on a\n * later microtask), so this work is not guaranteed to delay\n * `hooks.asyncWorkFinished`.\n *\n * Use `track(...)` for un-awaited async side effects:\n *\n * const { track } = info.getAsyncHelpers();\n * track([\n * someAsyncWork().catch(() => undefined),\n * someOtherAsyncWork().catch(() => undefined)\n * ]);\n */\n readonly promiseAll: <T>(\n values: ReadonlyArray<PromiseLike<T> | T>,\n ) => Promise<Array<T>>;\n /** Tracks asynchronous work that should delay execution completion hooks. */\n readonly track: (maybePromises: ReadonlyArray<unknown>) => void;\n}\n\n/** Information about the currently executing GraphQL field. */\nexport interface GraphQLResolveInfo {\n /** The field name referenced by this schema coordinate. */\n readonly fieldName: string;\n /** AST field nodes that contributed to the current field execution. */\n readonly fieldNodes: ReadonlyArray<FieldNode>;\n /** GraphQL output type declared for the current field. */\n readonly returnType: GraphQLOutputType;\n /** Object type that owns the current field. */\n readonly parentType: GraphQLObjectType;\n /** Response path where this error occurred during execution. */\n readonly path: Path;\n /** The schema used for validation or execution. */\n readonly schema: GraphQLSchema;\n /** Fragment definitions in the operation document keyed by fragment name. */\n readonly fragments: ObjMap<FragmentDefinitionNode>;\n /** Initial root value passed to the operation. */\n readonly rootValue: unknown;\n /** The operation selected for execution. */\n readonly operation: OperationDefinitionNode;\n /**\n * Coerced variable values and source metadata for this operation. Resolver\n * code that needs runtime variable values should read `variableValues.coerced`.\n */\n readonly variableValues: VariableValues;\n /** Returns the AbortSignal supplied for this execution, if any. */\n readonly getAbortSignal: () => AbortSignal | undefined;\n /** Returns helper functions for tracking asynchronous resolver work. */\n readonly getAsyncHelpers: () => GraphQLResolveInfoHelpers;\n}\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n * We've provided these template arguments because this is an open type and\n * you may find them useful.\n * @typeParam _TSource - Reserved source type parameter for extension typing.\n * @typeParam _TContext - Reserved context type parameter for extension typing.\n * @typeParam _TArgs - Reserved argument type parameter for extension typing.\n */\nexport interface GraphQLFieldExtensions<_TSource, _TContext, _TArgs = any> {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Configuration used to define a GraphQL field.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n * @typeParam TArgs - Argument object type passed to resolvers.\n */\nexport interface GraphQLFieldConfig<TSource, TContext, TArgs = any> {\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** The GraphQL type reference or runtime type for this element. */\n type: GraphQLOutputType;\n /** Arguments accepted by this field or directive. */\n args?: GraphQLFieldConfigArgumentMap | undefined;\n /** Resolver function used to produce this field value. */\n resolve?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n /** Resolver function used to create a subscription event stream for this field. */\n subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason?: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<\n Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>\n >;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<FieldDefinitionNode>;\n}\n\n/** @internal */\nexport interface GraphQLFieldNormalizedConfig<\n TSource,\n TContext,\n TArgs = any,\n> extends GraphQLFieldConfig<TSource, TContext, TArgs> {\n args: GraphQLFieldNormalizedConfigArgumentMap;\n extensions: Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>;\n}\n\n/** A map of argument names to argument configuration objects. */\nexport type GraphQLFieldConfigArgumentMap = ObjMap<GraphQLArgumentConfig>;\n\n/** @internal */\nexport type GraphQLFieldNormalizedConfigArgumentMap =\n ObjMap<GraphQLArgumentNormalizedConfig>;\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLArgumentExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/** Configuration used to define a GraphQL argument. */\nexport interface GraphQLArgumentConfig {\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** The GraphQL type reference or runtime type for this element. */\n type: GraphQLInputType;\n /**\n * Deprecated legacy default value for this argument. Use `default` instead.\n * @deprecated use `default` instead, `defaultValue` will be removed in v18\n */\n defaultValue?: unknown;\n /** Default value represented as either a runtime value or a GraphQL literal. */\n default?: GraphQLDefaultInput | undefined;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason?: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLArgumentExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<InputValueDefinitionNode>;\n}\n\n/** @internal */\nexport interface GraphQLArgumentNormalizedConfig extends GraphQLArgumentConfig {\n default: GraphQLDefaultInput | undefined;\n extensions: Readonly<GraphQLArgumentExtensions>;\n}\n\n/**\n * A map of field names to field configuration objects.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n */\nexport type GraphQLFieldConfigMap<TSource, TContext> = ObjMap<\n GraphQLFieldConfig<TSource, TContext>\n>;\n\n/** @internal */\nexport type GraphQLFieldNormalizedConfigMap<TSource, TContext> = ObjMap<\n GraphQLFieldNormalizedConfig<TSource, TContext>\n>;\n\n/**\n * A resolved GraphQL field definition.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n * @typeParam TArgs - Argument object type passed to resolvers.\n */\nexport class GraphQLField<\n TSource = any,\n TContext = any,\n TArgs = any,\n> implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLField instances.\n * @private\n */\n readonly __kind: symbol;\n /** Object or interface type that owns this field, if known. */\n parentType:\n | GraphQLObjectType<TSource, TContext>\n | GraphQLInterfaceType<TSource, TContext>\n | undefined;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** The GraphQL type reference or runtime type for this element. */\n type: GraphQLOutputType;\n /** Arguments accepted by this field or directive. */\n args: ReadonlyArray<GraphQLArgument>;\n /** Resolver function used to produce this field value. */\n resolve?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n /** Resolver function used to create a subscription event stream for this field. */\n subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<FieldDefinitionNode>;\n\n /**\n * Creates a resolved GraphQL field definition.\n * @param parentType - Object or interface type that owns this field, if known.\n * @param name - Field name.\n * @param config - Field configuration.\n * @example\n * ```ts\n * import { parse } from 'graphql/language';\n * import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const document = parse('type Query { greeting: String }');\n * const fieldNode = document.definitions[0].fields[0];\n * const field = new GraphQLField(Query, 'greeting', {\n * description: 'Greeting text.',\n * type: GraphQLString,\n * args: {\n * name: { type: GraphQLString, default: { value: 'world' } },\n * },\n * resolve: (_source, { name }) => `Hello, ${name}!`,\n * subscribe: async function* () {\n * yield { greeting: 'Hello!' };\n * },\n * deprecationReason: 'Use hello.',\n * extensions: { cacheSeconds: 60 },\n * astNode: fieldNode,\n * });\n *\n * field.parentType; // => Query\n * field.name; // => 'greeting'\n * field.args[0].default.value; // => 'world'\n * typeof field.subscribe; // => 'function'\n * field.deprecationReason; // => 'Use hello.'\n * field.astNode; // => fieldNode\n * ```\n */\n constructor(\n parentType:\n | GraphQLObjectType<TSource, TContext>\n | GraphQLInterfaceType<TSource, TContext>\n | undefined,\n name: string,\n config: GraphQLFieldConfig<TSource, TContext, TArgs>,\n ) {\n this.__kind = fieldSymbol;\n this.parentType = parentType;\n this.name = assertName(name);\n this.description = config.description;\n this.type = config.type;\n\n const argsConfig = config.args;\n this.args = argsConfig\n ? Object.entries(argsConfig).map(\n ([argName, argConfig]) =>\n new GraphQLArgument(this, argName, argConfig),\n )\n : [];\n\n this.resolve = config.resolve;\n this.subscribe = config.subscribe;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLField';\n }\n\n /**\n * Returns a normalized configuration object for this field.\n * @returns A configuration object that can be used to recreate this field.\n * @example\n * ```ts\n * import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'greeting', {\n * type: GraphQLString,\n * extensions: { cacheSeconds: 60 },\n * });\n *\n * field.toConfig().type; // => GraphQLString\n * field.toConfig().extensions; // => { cacheSeconds: 60 }\n * ```\n */\n toConfig(): GraphQLFieldNormalizedConfig<TSource, TContext, TArgs> {\n return {\n description: this.description,\n type: this.type,\n args: keyValMap(\n this.args,\n (arg) => arg.name,\n (arg) => arg.toConfig(),\n ),\n resolve: this.resolve,\n subscribe: this.subscribe,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n /**\n * Returns this field as a schema coordinate string.\n * @returns The field coordinate.\n * @example\n * ```ts\n * import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });\n *\n * field.toString(); // => 'Query.greeting'\n * ```\n */\n toString(): string {\n return `${this.parentType ?? '<meta>'}.${this.name}`;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The field coordinate.\n * @example\n * ```ts\n * import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });\n *\n * JSON.stringify(field); // => '\"Query.greeting\"'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/** A resolved GraphQL argument definition. */\nexport class GraphQLArgument implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLArgument instances.\n * @private\n */\n readonly __kind: symbol;\n /** Field or directive that owns this argument. */\n parent: GraphQLField | GraphQLDirective;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** The GraphQL type reference or runtime type for this element. */\n type: GraphQLInputType;\n /**\n * Deprecated legacy default value used when no explicit value is supplied.\n * Use `default` instead.\n * @deprecated use `default` instead, `defaultValue` will be removed in v18\n */\n defaultValue: unknown;\n /** Default value represented as either a runtime value or a GraphQL literal. */\n default: GraphQLDefaultInput | undefined;\n /**\n * Cached coerced default value.\n * @private\n */\n _memoizedCoercedDefaultValue: unknown;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLArgumentExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<InputValueDefinitionNode>;\n\n /**\n * Creates a resolved GraphQL argument definition.\n * @param parent - Field or directive that owns this argument.\n * @param name - Argument name.\n * @param config - Argument configuration.\n * @example\n * ```ts\n * import {\n * GraphQLArgument,\n * GraphQLField,\n * GraphQLObjectType,\n * GraphQLString,\n * } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });\n * const arg = new GraphQLArgument(field, 'name', {\n * type: GraphQLString,\n * default: { value: 'world' },\n * });\n *\n * arg.parent; // => field\n * arg.name; // => 'name'\n * arg.default.value; // => 'world'\n * ```\n */\n constructor(\n parent: GraphQLField | GraphQLDirective,\n name: string,\n config: GraphQLArgumentConfig,\n ) {\n this.__kind = argumentSymbol;\n this.parent = parent;\n this.name = assertName(name);\n this.description = config.description;\n this.type = config.type;\n this.defaultValue = config.defaultValue;\n this.default = config.default;\n this._memoizedCoercedDefaultValue = undefined;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLArgument';\n }\n\n /**\n * Returns a normalized configuration object for this argument.\n * @returns A configuration object that can be used to recreate this argument.\n * @example\n * ```ts\n * import {\n * GraphQLArgument,\n * GraphQLField,\n * GraphQLObjectType,\n * GraphQLString,\n * } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });\n * const arg = new GraphQLArgument(field, 'name', {\n * type: GraphQLString,\n * default: { value: 'world' },\n * });\n *\n * arg.toConfig().default.value; // => 'world'\n * ```\n */\n toConfig(): GraphQLArgumentNormalizedConfig {\n return {\n description: this.description,\n type: this.type,\n defaultValue: this.defaultValue,\n default: this.default,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n /**\n * Returns this argument as a schema coordinate string.\n * @returns The argument coordinate.\n * @example\n * ```ts\n * import {\n * GraphQLArgument,\n * GraphQLField,\n * GraphQLObjectType,\n * GraphQLString,\n * } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });\n * const arg = new GraphQLArgument(field, 'name', { type: GraphQLString });\n *\n * arg.toString(); // => 'Query.greeting(name:)'\n * ```\n */\n toString(): string {\n return `${this.parent}(${this.name}:)`;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The argument coordinate.\n * @example\n * ```ts\n * import {\n * GraphQLArgument,\n * GraphQLField,\n * GraphQLObjectType,\n * GraphQLString,\n * } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });\n * const arg = new GraphQLArgument(field, 'name', { type: GraphQLString });\n *\n * JSON.stringify(arg); // => '\"Query.greeting(name:)\"'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Returns true when the argument is non-null and has no default value.\n * @param arg - The argument definition to inspect.\n * @returns True when the argument is non-null and has no default value.\n * @example\n * ```ts\n * import {\n * GraphQLArgument,\n * GraphQLField,\n * GraphQLInt,\n * GraphQLNonNull,\n * GraphQLObjectType,\n * GraphQLString,\n * isRequiredArgument,\n * } from 'graphql/type';\n *\n * const Query = new GraphQLObjectType({ name: 'Query', fields: {} });\n * const field = new GraphQLField(Query, 'reviews', { type: GraphQLString });\n * const requiredArgument = new GraphQLArgument(field, 'id', {\n * type: new GraphQLNonNull(GraphQLInt),\n * });\n * const optionalArgument = new GraphQLArgument(field, 'name', {\n * type: GraphQLString,\n * });\n * const argumentWithDefault = new GraphQLArgument(field, 'limit', {\n * type: new GraphQLNonNull(GraphQLInt),\n * default: { value: 10 },\n * });\n *\n * isRequiredArgument(requiredArgument); // => true\n * isRequiredArgument(optionalArgument); // => false\n * isRequiredArgument(argumentWithDefault); // => false\n * ```\n */\nexport function isRequiredArgument(\n arg: GraphQLArgument | GraphQLVariableSignature,\n): boolean {\n return (\n isNonNullType(arg.type) &&\n arg.default === undefined &&\n arg.defaultValue === undefined\n );\n}\n\n/**\n * A map of field names to resolved field definitions.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n */\nexport type GraphQLFieldMap<TSource, TContext> = ObjMap<\n GraphQLField<TSource, TContext>\n>;\n\n/** Default input represented as either a runtime value or a GraphQL literal. */\nexport type GraphQLDefaultInput =\n | {\n /** Runtime default value. */\n value: unknown;\n /** GraphQL literal default value is not provided in this variant. */\n literal?: never;\n }\n | {\n /** GraphQL literal default value. */\n literal: ConstValueNode;\n /** Runtime default value is not provided in this variant. */\n value?: never;\n };\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLInterfaceTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n * @example\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n * name: 'Entity',\n * fields: {\n * name: { type: GraphQLString }\n * }\n * });\n * ```\n */\nexport class GraphQLInterfaceType<\n TSource = any,\n TContext = any,\n> implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLInterfaceType instances.\n * @private\n */\n readonly __kind: symbol;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** Function that resolves the concrete object type for this abstract type. */\n resolveType: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLInterfaceTypeExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<InterfaceTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes: ReadonlyArray<InterfaceTypeExtensionNode>;\n\n private _fields: ThunkObjMap<GraphQLField<TSource, TContext>>;\n private _interfaces: ThunkReadonlyArray<GraphQLInterfaceType>;\n\n /**\n * Creates a GraphQLInterfaceType instance.\n * @param config - Configuration describing this object.\n * @example\n * ```ts\n * import { parse } from 'graphql/language';\n * import { GraphQLID, GraphQLInterfaceType, GraphQLNonNull } from 'graphql/type';\n *\n * const document = parse(`\n * interface Node {\n * id: ID!\n * }\n *\n * interface Resource implements Node {\n * id: ID!\n * }\n *\n * extend interface Resource {\n * url: String\n * }\n * `);\n *\n * const Node = new GraphQLInterfaceType({\n * name: 'Node',\n * fields: {\n * id: { type: new GraphQLNonNull(GraphQLID) },\n * },\n * });\n *\n * const Resource = new GraphQLInterfaceType({\n * name: 'Resource',\n * description: 'An addressable resource.',\n * interfaces: [Node],\n * fields: {\n * id: { type: new GraphQLNonNull(GraphQLID) },\n * },\n * resolveType: (value) => {\n * return typeof value === 'object' && value != null && 'url' in value\n * ? 'WebPage'\n * : null;\n * },\n * extensions: { abstract: true },\n * astNode: document.definitions[1],\n * extensionASTNodes: [ document.definitions[2] ],\n * });\n *\n * Resource.name; // => 'Resource'\n * Resource.getInterfaces(); // => [Node]\n * Object.keys(Resource.getFields()); // => ['id']\n * Resource.extensions; // => { abstract: true }\n * ```\n */\n constructor(config: Readonly<GraphQLInterfaceTypeConfig<TSource, TContext>>) {\n this.__kind = interfaceSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n this._fields = (defineFieldMap<TSource, TContext>).bind(\n undefined,\n this,\n config.fields,\n );\n this._interfaces = defineInterfaces.bind(undefined, config.interfaces);\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLInterfaceType';\n }\n\n /**\n * Returns the fields defined by this type.\n * @returns The fields keyed by field name.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInterfaceType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * type Query {\n * node: Node\n * }\n * `);\n *\n * const Node = assertInterfaceType(schema.getType('Node'));\n * const fields = Node.getFields();\n *\n * Object.keys(fields); // => ['id']\n * String(fields.id.type); // => 'ID!'\n * ```\n */\n getFields(): GraphQLFieldMap<TSource, TContext> {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n return this._fields;\n }\n\n /**\n * Returns the interfaces implemented by this type.\n * @returns The implemented interfaces.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInterfaceType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Resource {\n * url: String!\n * }\n *\n * interface Image implements Resource {\n * url: String!\n * width: Int\n * }\n *\n * type Photo implements Resource & Image {\n * url: String!\n * width: Int\n * }\n *\n * type Query {\n * image: Image\n * }\n * `);\n *\n * const Image = assertInterfaceType(schema.getType('Image'));\n *\n * Image.getInterfaces().map((type) => type.name); // => ['Resource']\n * ```\n */\n getInterfaces(): ReadonlyArray<GraphQLInterfaceType> {\n if (typeof this._interfaces === 'function') {\n this._interfaces = this._interfaces();\n }\n return this._interfaces;\n }\n\n /**\n * Returns a normalized configuration object for this object.\n * @returns A configuration object that can be used to recreate this object.\n * @example\n * ```ts\n * import { GraphQLID, GraphQLInterfaceType, GraphQLNonNull } from 'graphql/type';\n *\n * const Node = new GraphQLInterfaceType({\n * name: 'Node',\n * fields: {\n * id: { type: new GraphQLNonNull(GraphQLID) },\n * },\n * });\n *\n * const config = Node.toConfig();\n * const NodeCopy = new GraphQLInterfaceType(config);\n *\n * String(config.fields.id.type); // => 'ID!'\n * String(NodeCopy.getFields().id.type); // => 'ID!'\n * ```\n */\n toConfig(): GraphQLInterfaceTypeNormalizedConfig<TSource, TContext> {\n return {\n name: this.name,\n description: this.description,\n interfaces: this.getInterfaces(),\n fields: mapValue(this.getFields(), (field) => field.toConfig()),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n /**\n * Returns the schema coordinate identifying this interface type.\n * @returns The schema coordinate for this interface type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInterfaceType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * interface Node {\n * id: ID!\n * }\n *\n * type User implements Node {\n * id: ID!\n * }\n *\n * type Query {\n * node: Node\n * }\n * `);\n *\n * const Node = assertInterfaceType(schema.getType('Node'));\n *\n * Node.toString(); // => 'Node'\n * ```\n */\n toString(): string {\n return this.name;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLInterfaceType, GraphQLString } from 'graphql/type';\n *\n * const Named = new GraphQLInterfaceType({\n * name: 'Named',\n * fields: { name: { type: GraphQLString } },\n * });\n *\n * Named.toJSON(); // => 'Named'\n * JSON.stringify({ type: Named }); // => '{\"type\":\"Named\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Configuration used to construct a GraphQLInterfaceType.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n */\nexport interface GraphQLInterfaceTypeConfig<TSource, TContext> {\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** Interfaces implemented by this object or interface type. */\n interfaces?: ThunkReadonlyArray<GraphQLInterfaceType> | undefined;\n /** Fields declared by this object, interface, input object, or literal. */\n fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>;\n /**\n * Optionally provide a custom type resolver function. If one is not provided,\n * the default implementation will call `isTypeOf` on each implementing\n * Object type.\n */\n resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLInterfaceTypeExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<InterfaceTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes?: Maybe<ReadonlyArray<InterfaceTypeExtensionNode>>;\n}\n\n/** @internal */\nexport interface GraphQLInterfaceTypeNormalizedConfig<\n TSource,\n TContext,\n> extends GraphQLInterfaceTypeConfig<TSource, TContext> {\n interfaces: ReadonlyArray<GraphQLInterfaceType>;\n fields: GraphQLFieldNormalizedConfigMap<TSource, TContext>;\n extensions: Readonly<GraphQLInterfaceTypeExtensions>;\n extensionASTNodes: ReadonlyArray<InterfaceTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLUnionTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n * @example\n * ```ts\n * const PetType = new GraphQLUnionType({\n * name: 'Pet',\n * types: [DogType, CatType],\n * resolveType: (value) => {\n * if (value instanceof Dog) {\n * return DogType;\n * }\n * if (value instanceof Cat) {\n * return CatType;\n * }\n * }\n * });\n * ```\n */\nexport class GraphQLUnionType<\n TSource = any,\n TContext = any,\n> implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLUnionType instances.\n * @private\n */\n readonly __kind: symbol;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** Function that resolves the concrete object type for this abstract type. */\n resolveType: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLUnionTypeExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<UnionTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes: ReadonlyArray<UnionTypeExtensionNode>;\n\n private _types: ThunkReadonlyArray<GraphQLObjectType>;\n\n /**\n * Creates a GraphQLUnionType instance.\n * @param config - Configuration describing this object.\n * @example\n * ```ts\n * import { parse } from 'graphql/language';\n * import { GraphQLObjectType, GraphQLString, GraphQLUnionType } from 'graphql/type';\n *\n * const document = parse(`\n * union Media = Photo | Video\n *\n * extend union Media = Audio\n * `);\n *\n * const Photo = new GraphQLObjectType({\n * name: 'Photo',\n * fields: { url: { type: GraphQLString } },\n * });\n * const Video = new GraphQLObjectType({\n * name: 'Video',\n * fields: { url: { type: GraphQLString } },\n * });\n *\n * const Media = new GraphQLUnionType({\n * name: 'Media',\n * description: 'Media that can appear in a search result.',\n * types: [Photo, Video],\n * resolveType: (value) => {\n * return typeof value === 'object' && value != null && 'duration' in value\n * ? 'Video'\n * : 'Photo';\n * },\n * extensions: { searchable: true },\n * astNode: document.definitions[0],\n * extensionASTNodes: [ document.definitions[1] ],\n * });\n *\n * Media.description; // => 'Media that can appear in a search result.'\n * Media.getTypes().map((type) => type.name); // => ['Photo', 'Video']\n * Media.extensions; // => { searchable: true }\n * ```\n */\n constructor(config: Readonly<GraphQLUnionTypeConfig<TSource, TContext>>) {\n this.__kind = unionSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.resolveType = config.resolveType;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n\n this._types = defineTypes.bind(undefined, config.types);\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLUnionType';\n }\n\n /**\n * Returns the object types included in this union.\n * @returns The union member object types.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertUnionType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Photo {\n * url: String!\n * }\n *\n * type Video {\n * url: String!\n * }\n *\n * union Media = Photo | Video\n *\n * type Query {\n * media: [Media]\n * }\n * `);\n *\n * const Media = assertUnionType(schema.getType('Media'));\n *\n * Media.getTypes().map((type) => type.name); // => ['Photo', 'Video']\n * ```\n */\n getTypes(): ReadonlyArray<GraphQLObjectType> {\n if (typeof this._types === 'function') {\n this._types = this._types();\n }\n return this._types;\n }\n\n /**\n * Returns a normalized configuration object for this object.\n * @returns A configuration object that can be used to recreate this object.\n * @example\n * ```ts\n * import { GraphQLObjectType, GraphQLString, GraphQLUnionType } from 'graphql/type';\n *\n * const Photo = new GraphQLObjectType({\n * name: 'Photo',\n * fields: { url: { type: GraphQLString } },\n * });\n * const Video = new GraphQLObjectType({\n * name: 'Video',\n * fields: { url: { type: GraphQLString } },\n * });\n * const Media = new GraphQLUnionType({\n * name: 'Media',\n * types: [Photo, Video],\n * });\n *\n * const config = Media.toConfig();\n * const MediaCopy = new GraphQLUnionType(config);\n *\n * MediaCopy.getTypes().map((type) => type.name); // => ['Photo', 'Video']\n * ```\n */\n toConfig(): GraphQLUnionTypeNormalizedConfig<TSource, TContext> {\n return {\n name: this.name,\n description: this.description,\n types: this.getTypes(),\n resolveType: this.resolveType,\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n /**\n * Returns the schema coordinate identifying this union type.\n * @returns The schema coordinate for this union type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertUnionType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * type Photo {\n * url: String!\n * }\n *\n * union SearchResult = Photo\n *\n * type Query {\n * search: [SearchResult]\n * }\n * `);\n *\n * const SearchResult = assertUnionType(schema.getType('SearchResult'));\n *\n * SearchResult.toString(); // => 'SearchResult'\n * ```\n */\n toString(): string {\n return this.name;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLObjectType, GraphQLString, GraphQLUnionType } from 'graphql/type';\n *\n * const Photo = new GraphQLObjectType({\n * name: 'Photo',\n * fields: { url: { type: GraphQLString } },\n * });\n * const SearchResult = new GraphQLUnionType({\n * name: 'SearchResult',\n * types: [Photo],\n * });\n *\n * SearchResult.toJSON(); // => 'SearchResult'\n * JSON.stringify({ type: SearchResult }); // => '{\"type\":\"SearchResult\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineTypes(\n types: ThunkReadonlyArray<GraphQLObjectType>,\n): ReadonlyArray<GraphQLObjectType> {\n return resolveReadonlyArrayThunk(types);\n}\n\n/**\n * Configuration used to construct a GraphQLUnionType.\n * @typeParam TSource - Source object type passed to resolvers.\n * @typeParam TContext - Context object type passed to resolvers.\n */\nexport interface GraphQLUnionTypeConfig<TSource, TContext> {\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** Object types that belong to this union type. */\n types: ThunkReadonlyArray<GraphQLObjectType>;\n /**\n * Optionally provide a custom type resolver function. If one is not provided,\n * the default implementation will call `isTypeOf` on each implementing\n * Object type.\n */\n resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext>>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLUnionTypeExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<UnionTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes?: Maybe<ReadonlyArray<UnionTypeExtensionNode>>;\n}\n\n/** @internal */\nexport interface GraphQLUnionTypeNormalizedConfig<\n TSource,\n TContext,\n> extends GraphQLUnionTypeConfig<TSource, TContext> {\n types: ReadonlyArray<GraphQLObjectType>;\n extensions: Readonly<GraphQLUnionTypeExtensions>;\n extensionASTNodes: ReadonlyArray<UnionTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLEnumTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Enum Type Definition\n *\n * Enum types define leaf values whose serialized form is one of a fixed set\n * of GraphQL enum names. Internally, enum values can map to any runtime value,\n * often integers.\n * @example\n * ```ts\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGBType = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * RGBType.getValue('GREEN')?.value; // => 1\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nexport class GraphQLEnumType /* <T> */ implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLEnumType instances.\n * @private\n */\n readonly __kind: symbol;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLEnumTypeExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<EnumTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes: ReadonlyArray<EnumTypeExtensionNode>;\n\n private _values:\n | ReadonlyArray<GraphQLEnumValue /* <T> */>\n | (() => ReadonlyArray<GraphQLEnumValue>) /* <T> */;\n\n private _valueLookup: ReadonlyMap<any /* T */, GraphQLEnumValue> | null;\n private _nameLookup: ObjMap<GraphQLEnumValue> | null;\n\n /**\n * Creates a GraphQLEnumType instance.\n * @param config - Configuration describing this object.\n * @example\n * ```ts\n * import { parse } from 'graphql/language';\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const document = parse(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * JEDI\n * }\n *\n * extend enum Episode {\n * FORCE_AWAKENS\n * }\n * `);\n * const definition = document.definitions[0];\n *\n * const Episode = new GraphQLEnumType({\n * name: 'Episode',\n * description: 'A Star Wars film episode.',\n * values: {\n * NEW_HOPE: {\n * value: 4,\n * description: 'Released in 1977.',\n * extensions: { trilogy: 'original' },\n * astNode: definition.values[0],\n * },\n * EMPIRE: { value: 5, astNode: definition.values[1] },\n * JEDI: {\n * value: 6,\n * deprecationReason: 'Use RETURN_OF_THE_JEDI.',\n * astNode: definition.values[2],\n * },\n * },\n * extensions: { catalog: 'films' },\n * astNode: definition,\n * extensionASTNodes: [ document.definitions[1] ],\n * });\n *\n * Episode.description; // => 'A Star Wars film episode.'\n * Episode.coerceOutputValue(5); // => 'EMPIRE'\n * Episode.coerceInputValue('JEDI'); // => 6\n * Episode.getValue('JEDI').deprecationReason; // => 'Use RETURN_OF_THE_JEDI.'\n * Episode.extensions; // => { catalog: 'films' }\n * ```\n */\n constructor(config: Readonly<GraphQLEnumTypeConfig /* <T> */>) {\n this.__kind = enumSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n\n this._values = defineEnumValues.bind(undefined, this, config.values);\n this._valueLookup = null;\n this._nameLookup = null;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLEnumType';\n }\n\n /**\n * Returns the values defined by this enum type.\n * @returns Enum value definitions in schema order.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertEnumType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * JEDI\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n *\n * const Episode = assertEnumType(schema.getType('Episode'));\n *\n * Episode.getValues().map((value) => value.name); // => ['NEW_HOPE', 'EMPIRE', 'JEDI']\n * ```\n */\n getValues(): ReadonlyArray<GraphQLEnumValue /* <T> */> {\n if (typeof this._values === 'function') {\n this._values = this._values();\n }\n return this._values;\n }\n\n /**\n * Returns the enum value definition for a value name.\n * @param name - The GraphQL name to look up.\n * @returns The matching enum value definition, if it exists.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertEnumType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n *\n * const Episode = assertEnumType(schema.getType('Episode'));\n *\n * Episode.getValue('EMPIRE')?.name; // => 'EMPIRE'\n * Episode.getValue('JEDI'); // => undefined\n * ```\n */\n getValue(name: string): Maybe<GraphQLEnumValue> {\n this._nameLookup ??= keyMap(this.getValues(), (value) => value.name);\n return this._nameLookup[name];\n }\n\n /**\n * Serializes a runtime enum value as a GraphQL enum name.\n * @param outputValue - Runtime enum value to serialize.\n * @returns The GraphQL enum name for the runtime value.\n *\n * This deprecated method delegates to `coerceOutputValue()`; call\n * `coerceOutputValue()` directly instead.\n * @example\n * ```ts\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * RGB.serialize(1); // => 'GREEN'\n * RGB.serialize(3); // throws an error\n * ```\n * @deprecated use `coerceOutputValue()` instead, `serialize()` will be removed in v18\n */\n serialize(outputValue: unknown /* T */): Maybe<string> {\n return this.coerceOutputValue(outputValue);\n }\n\n /**\n * Coerces a runtime enum value to a GraphQL enum name.\n * @param outputValue - Runtime enum value to coerce.\n * @returns The GraphQL enum name for the runtime value.\n * @example\n * ```ts\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * RGB.coerceOutputValue(1); // => 'GREEN'\n * RGB.coerceOutputValue(3); // throws an error\n * ```\n */\n coerceOutputValue(outputValue: unknown /* T */): Maybe<string> {\n this._valueLookup ??= new Map(\n this.getValues().map((enumValue) => [enumValue.value, enumValue]),\n );\n const enumValue = this._valueLookup.get(outputValue);\n if (enumValue === undefined) {\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent value: ${inspect(outputValue)}`,\n );\n }\n return enumValue.name;\n }\n\n /**\n * Deprecated legacy enum parser for externally provided input values. Use\n * `coerceInputValue()` instead.\n * @param inputValue - External enum name to parse.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns The internal runtime value for the enum name.\n * @example\n * ```ts\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * RGB.parseValue('BLUE'); // => 2\n * RGB.parseValue('PURPLE', true); // throws an error\n * ```\n * @deprecated use `coerceInputValue()` instead, `parseValue()` will be removed in v18\n */\n parseValue(\n inputValue: unknown,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n return this.coerceInputValue(inputValue, hideSuggestions);\n }\n\n /**\n * Coerces an external enum name to its internal runtime value.\n * @param inputValue - External enum name to coerce.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns The internal runtime value for the enum name.\n * @example\n * ```ts\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * RGB.coerceInputValue('BLUE'); // => 2\n * RGB.coerceInputValue('PURPLE'); // throws an error\n * RGB.coerceInputValue(2); // throws an error\n * ```\n */\n coerceInputValue(\n inputValue: unknown,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n if (typeof inputValue !== 'string') {\n const valueStr = inspect(inputValue);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, valueStr)),\n );\n }\n\n const enumValue = this.getValue(inputValue);\n if (enumValue == null) {\n throw new GraphQLError(\n `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, inputValue)),\n );\n }\n return enumValue.value;\n }\n\n /**\n * Deprecated legacy enum parser for externally provided input literals. Use\n * `coerceInputLiteral()` instead.\n * @param valueNode - Enum value AST node to parse.\n * @param _variables - Deprecated variable values parameter that is no longer used.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns The internal runtime value for the enum literal.\n * @example\n * ```ts\n * import { parseValue } from 'graphql/language';\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * RGB.parseLiteral(parseValue('RED')); // => 0\n * RGB.parseLiteral(parseValue('\"RED\"')); // throws an error\n * ```\n * @deprecated use `coerceInputLiteral()` instead, `parseLiteral()` will be removed in v18\n */\n parseLiteral(\n valueNode: ValueNode,\n _variables: Maybe<ObjMap<unknown>>,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n // Note: variables will be resolved to a value before calling this function.\n return this.coerceInputLiteral(\n valueNode as ConstValueNode,\n hideSuggestions,\n );\n }\n\n /**\n * Coerces an enum value AST node to its internal runtime value.\n * @param valueNode - Enum value AST node to coerce.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns The internal runtime value for the enum literal.\n * @example\n * ```ts\n * import { parseConstValue } from 'graphql/language';\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * RGB.coerceInputLiteral(parseConstValue('RED')); // => 0\n * RGB.coerceInputLiteral(parseConstValue('\"RED\"'), true); // throws an error\n * ```\n */\n coerceInputLiteral(\n valueNode: ConstValueNode,\n hideSuggestions?: Maybe<boolean>,\n ): Maybe<any> /* T */ {\n if (valueNode.kind !== Kind.ENUM) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, valueStr)),\n { nodes: valueNode },\n );\n }\n\n const enumValue = this.getValue(valueNode.value);\n if (enumValue == null) {\n const valueStr = print(valueNode);\n throw new GraphQLError(\n `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n (hideSuggestions ? '' : didYouMeanEnumValue(this, valueStr)),\n { nodes: valueNode },\n );\n }\n return enumValue.value;\n }\n\n /**\n * Converts a runtime enum value to a GraphQL enum value AST node.\n * @param value - Runtime enum value to convert.\n * @returns Enum value AST node, or undefined if the value is invalid.\n * @example\n * ```ts\n * import { print } from 'graphql/language';\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * print(RGB.valueToLiteral(2)); // => 'BLUE'\n * RGB.valueToLiteral(3); // => undefined\n * ```\n */\n valueToLiteral(value: unknown): ConstValueNode | undefined {\n if (typeof value === 'string' && this.getValue(value)) {\n return { kind: Kind.ENUM, value };\n }\n }\n\n /**\n * Returns a normalized configuration object for this object.\n * @returns A configuration object that can be used to recreate this object.\n * @example\n * ```ts\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const RGB = new GraphQLEnumType({\n * name: 'RGB',\n * values: {\n * RED: { value: 0 },\n * GREEN: { value: 1 },\n * BLUE: { value: 2 },\n * },\n * });\n *\n * const config = RGB.toConfig();\n * const RGBCopy = new GraphQLEnumType(config);\n *\n * config.values.GREEN.value; // => 1\n * RGBCopy.coerceOutputValue(2); // => 'BLUE'\n * ```\n */\n toConfig(): GraphQLEnumTypeNormalizedConfig {\n return {\n name: this.name,\n description: this.description,\n values: keyValMap(\n this.getValues(),\n (value) => value.name,\n (value) => value.toConfig(),\n ),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n };\n }\n\n /**\n * Returns the schema coordinate identifying this enum type.\n * @returns The schema coordinate for this enum type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertEnumType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n *\n * const Episode = assertEnumType(schema.getType('Episode'));\n *\n * Episode.toString(); // => 'Episode'\n * ```\n */\n toString(): string {\n return this.name;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLEnumType } from 'graphql/type';\n *\n * const Episode = new GraphQLEnumType({\n * name: 'Episode',\n * values: {\n * NEW_HOPE: {},\n * },\n * });\n *\n * Episode.toJSON(); // => 'Episode'\n * JSON.stringify({ type: Episode }); // => '{\"type\":\"Episode\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineEnumValues(\n parentEnum: GraphQLEnumType,\n values: ThunkObjMap<GraphQLEnumValueConfig /* <T> */>,\n): ReadonlyArray<GraphQLEnumValue> {\n const valueMap = resolveObjMapThunk(values);\n\n return Object.entries(valueMap).map(\n ([valueName, valueConfig]) =>\n new GraphQLEnumValue(parentEnum, valueName, valueConfig),\n );\n}\n\nfunction didYouMeanEnumValue(\n enumType: GraphQLEnumType,\n unknownValueStr: string,\n): string {\n const allNames = enumType.getValues().map((value) => value.name);\n const suggestedValues = suggestionList(unknownValueStr, allNames);\n\n return didYouMean('the enum value', suggestedValues);\n}\n\n/** Configuration used to construct a GraphQLEnumType. */\nexport interface GraphQLEnumTypeConfig {\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** Values contained in this enum, list, or input-object definition. */\n values: ThunkObjMap<GraphQLEnumValueConfig /* <T> */>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLEnumTypeExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<EnumTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes?: Maybe<ReadonlyArray<EnumTypeExtensionNode>>;\n}\n\n/** @internal */\nexport interface GraphQLEnumTypeNormalizedConfig extends GraphQLEnumTypeConfig {\n values: GraphQLEnumValueNormalizedConfigMap;\n extensions: Readonly<GraphQLEnumTypeExtensions>;\n extensionASTNodes: ReadonlyArray<EnumTypeExtensionNode>;\n}\n\n/** A map of enum value names to enum value configuration objects. */\nexport type GraphQLEnumValueConfigMap /* <T> */ =\n ObjMap<GraphQLEnumValueConfig /* <T> */>;\n\n/** @internal */\nexport type GraphQLEnumValueNormalizedConfigMap /* <T> */ =\n ObjMap<GraphQLEnumValueNormalizedConfig /* <T> */>;\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLEnumValueExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/** Configuration used to define a GraphQL enum value. */\nexport interface GraphQLEnumValueConfig {\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** Parsed value represented by this node. */\n value?: any /* T */;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason?: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLEnumValueExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<EnumValueDefinitionNode>;\n}\n\n/** @internal */\nexport interface GraphQLEnumValueNormalizedConfig extends GraphQLEnumValueConfig {\n extensions: Readonly<GraphQLEnumValueExtensions>;\n}\n\n/** A resolved GraphQL enum value definition. */\nexport class GraphQLEnumValue implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLEnumValue instances.\n * @private\n */\n readonly __kind: symbol;\n /** Enum type that owns this enum value. */\n parentEnum: GraphQLEnumType;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** Parsed value represented by this node. */\n value: any /* T */;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLEnumValueExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<EnumValueDefinitionNode>;\n\n /**\n * Creates a resolved GraphQL enum value definition.\n * @param parentEnum - Enum type that owns this enum value.\n * @param name - Enum value name.\n * @param config - Enum value configuration.\n * @example\n * ```ts\n * import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';\n *\n * const Episode = new GraphQLEnumType({\n * name: 'Episode',\n * values: { NEW_HOPE: { value: 4 } },\n * });\n * const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', {\n * value: 5,\n * description: 'Released in 1980.',\n * });\n *\n * enumValue.parentEnum; // => Episode\n * enumValue.name; // => 'EMPIRE'\n * enumValue.value; // => 5\n * ```\n */\n constructor(\n parentEnum: GraphQLEnumType,\n name: string,\n config: GraphQLEnumValueConfig,\n ) {\n this.__kind = enumValueSymbol;\n this.parentEnum = parentEnum;\n this.name = assertEnumValueName(name);\n this.description = config.description;\n this.value = config.value !== undefined ? config.value : name;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLEnumValue';\n }\n\n /**\n * Returns a normalized configuration object for this enum value.\n * @returns A configuration object that can be used to recreate this enum value.\n * @example\n * ```ts\n * import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';\n *\n * const Episode = new GraphQLEnumType({\n * name: 'Episode',\n * values: { NEW_HOPE: { value: 4 } },\n * });\n * const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', {\n * value: 5,\n * extensions: { trilogy: 'original' },\n * });\n *\n * enumValue.toConfig(); // => { description: undefined, value: 5, deprecationReason: undefined, extensions: { trilogy: 'original' }, astNode: undefined }\n * ```\n */\n toConfig(): GraphQLEnumValueNormalizedConfig {\n return {\n description: this.description,\n value: this.value,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n /**\n * Returns this enum value as a schema coordinate string.\n * @returns Enum value coordinate.\n * @example\n * ```ts\n * import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';\n *\n * const Episode = new GraphQLEnumType({\n * name: 'Episode',\n * values: { NEW_HOPE: { value: 4 } },\n * });\n * const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', { value: 5 });\n *\n * enumValue.toString(); // => 'Episode.EMPIRE'\n * ```\n */\n toString(): string {\n return `${this.parentEnum.name}.${this.name}`;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns Enum value coordinate.\n * @example\n * ```ts\n * import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';\n *\n * const Episode = new GraphQLEnumType({\n * name: 'Episode',\n * values: { NEW_HOPE: { value: 4 } },\n * });\n * const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', { value: 5 });\n *\n * JSON.stringify(enumValue); // => '\"Episode.EMPIRE\"'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLInputObjectTypeExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n * @example\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n * name: 'GeoPoint',\n * fields: {\n * lat: { type: new GraphQLNonNull(GraphQLFloat) },\n * lon: { type: new GraphQLNonNull(GraphQLFloat) },\n * alt: { type: GraphQLFloat, default: { value: 0 } },\n * }\n * });\n * ```\n */\nexport class GraphQLInputObjectType implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLInputObjectType instances.\n * @private\n */\n readonly __kind: symbol;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLInputObjectTypeExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<InputObjectTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes: ReadonlyArray<InputObjectTypeExtensionNode>;\n /** Whether this input object uses the experimental OneOf input object semantics. */\n isOneOf: boolean;\n\n private _fields: ThunkObjMap<GraphQLInputField>;\n\n /**\n * Creates a GraphQLInputObjectType instance.\n * @param config - Configuration describing this object.\n * @example\n * ```ts\n * import { parse } from 'graphql/language';\n * import {\n * GraphQLID,\n * GraphQLInputObjectType,\n * GraphQLInt,\n * GraphQLNonNull,\n * GraphQLString,\n * } from 'graphql/type';\n *\n * const document = parse(`\n * input ReviewInput {\n * stars: Int!\n * commentary: String\n * }\n *\n * extend input ReviewInput {\n * body: String\n * }\n * `);\n * const definition = document.definitions[0];\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * description: 'Input collected when reviewing a product.',\n * fields: {\n * stars: {\n * description: 'Star rating from one to five.',\n * type: new GraphQLNonNull(GraphQLInt),\n * extensions: { min: 1, max: 5 },\n * astNode: definition.fields[0],\n * },\n * commentary: {\n * type: GraphQLString,\n * default: { value: '' },\n * deprecationReason: 'Use body.',\n * astNode: definition.fields[1],\n * },\n * },\n * extensions: { form: 'review' },\n * astNode: definition,\n * extensionASTNodes: [ document.definitions[1] ],\n * isOneOf: false,\n * });\n * const SearchBy = new GraphQLInputObjectType({\n * name: 'SearchBy',\n * fields: {\n * id: { type: GraphQLID },\n * slug: { type: GraphQLString },\n * },\n * isOneOf: true,\n * });\n *\n * const fields = ReviewInput.getFields();\n *\n * ReviewInput.description; // => 'Input collected when reviewing a product.'\n * String(fields.stars.type); // => 'Int!'\n * fields.stars.extensions; // => { min: 1, max: 5 }\n * fields.commentary.default.value; // => ''\n * fields.commentary.deprecationReason; // => 'Use body.'\n * ReviewInput.isOneOf; // => false\n * SearchBy.isOneOf; // => true\n * ```\n */\n constructor(config: Readonly<GraphQLInputObjectTypeConfig>) {\n this.__kind = inputObjectSymbol;\n this.name = assertName(config.name);\n this.description = config.description;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes = config.extensionASTNodes ?? [];\n this.isOneOf = config.isOneOf ?? false;\n\n this._fields = defineInputFieldMap.bind(undefined, this, config.fields);\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLInputObjectType';\n }\n\n /**\n * Returns the fields defined by this type.\n * @returns The fields keyed by field name.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInputObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * commentary: String = \"\"\n * }\n *\n * type Query {\n * reviews(filter: ReviewInput): [String]\n * }\n * `);\n *\n * const ReviewInput = assertInputObjectType(schema.getType('ReviewInput'));\n * const fields = ReviewInput.getFields();\n *\n * Object.keys(fields); // => ['stars', 'commentary']\n * fields.commentary.default; // => { literal: { kind: 'StringValue', value: '' } }\n * ```\n */\n getFields(): GraphQLInputFieldMap {\n if (typeof this._fields === 'function') {\n this._fields = this._fields();\n }\n return this._fields;\n }\n\n /**\n * Returns a normalized configuration object for this object.\n * @returns A configuration object that can be used to recreate this object.\n * @example\n * ```ts\n * import {\n * GraphQLInputObjectType,\n * GraphQLInt,\n * GraphQLNonNull,\n * } from 'graphql/type';\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * fields: {\n * stars: { type: new GraphQLNonNull(GraphQLInt) },\n * },\n * });\n *\n * const config = ReviewInput.toConfig();\n * const ReviewInputCopy = new GraphQLInputObjectType(config);\n *\n * String(config.fields.stars.type); // => 'Int!'\n * String(ReviewInputCopy.getFields().stars.type); // => 'Int!'\n * ```\n */\n toConfig(): GraphQLInputObjectTypeNormalizedConfig {\n return {\n name: this.name,\n description: this.description,\n fields: mapValue(this.getFields(), (field) => field.toConfig()),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n isOneOf: this.isOneOf,\n };\n }\n\n /**\n * Returns the schema coordinate identifying this input object type.\n * @returns The schema coordinate for this input object type.\n * @example\n * ```ts\n * import { buildSchema } from 'graphql/utilities';\n * import { assertInputObjectType } from 'graphql/type';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Query {\n * reviews(filter: ReviewInput): [String]\n * }\n * `);\n *\n * const ReviewInput = assertInputObjectType(schema.getType('ReviewInput'));\n *\n * ReviewInput.toString(); // => 'ReviewInput'\n * ```\n */\n toString(): string {\n return this.name;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The JSON-serializable representation.\n * @example\n * ```ts\n * import { GraphQLInputObjectType, GraphQLString } from 'graphql/type';\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * fields: {\n * commentary: { type: GraphQLString },\n * },\n * });\n *\n * ReviewInput.toJSON(); // => 'ReviewInput'\n * JSON.stringify({ type: ReviewInput }); // => '{\"type\":\"ReviewInput\"}'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\nfunction defineInputFieldMap(\n parentType: GraphQLInputObjectType,\n fields: ThunkObjMap<GraphQLInputFieldConfig>,\n): GraphQLInputFieldMap {\n const fieldMap = resolveObjMapThunk(fields);\n return mapValue(\n fieldMap,\n (fieldConfig, fieldName) =>\n new GraphQLInputField(parentType, fieldName, fieldConfig),\n );\n}\n\n/** Configuration used to construct a GraphQLInputObjectType. */\nexport interface GraphQLInputObjectTypeConfig {\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** Fields declared by this object, interface, input object, or literal. */\n fields: ThunkObjMap<GraphQLInputFieldConfig>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLInputObjectTypeExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<InputObjectTypeDefinitionNode>;\n /** AST extension nodes applied to this schema element. */\n extensionASTNodes?: Maybe<ReadonlyArray<InputObjectTypeExtensionNode>>;\n /** Whether this input object uses the experimental OneOf input object semantics. */\n isOneOf?: boolean;\n}\n\n/** @internal */\nexport interface GraphQLInputObjectTypeNormalizedConfig extends GraphQLInputObjectTypeConfig {\n fields: GraphQLInputFieldNormalizedConfigMap;\n extensions: Readonly<GraphQLInputObjectTypeExtensions>;\n extensionASTNodes: ReadonlyArray<InputObjectTypeExtensionNode>;\n}\n\n/**\n * Custom extensions\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\nexport interface GraphQLInputFieldExtensions {\n [attributeName: string | symbol]: unknown;\n}\n\n/** Configuration used to define a GraphQL input field. */\nexport interface GraphQLInputFieldConfig {\n /** Human-readable description for this schema element, if provided. */\n description?: Maybe<string>;\n /** The GraphQL type reference or runtime type for this element. */\n type: GraphQLInputType;\n /**\n * Deprecated legacy default value for this input field. Use `default`\n * instead.\n * @deprecated use `default` instead, `defaultValue` will be removed in v18\n */\n defaultValue?: unknown;\n /** Default value represented as either a runtime value or a GraphQL literal. */\n default?: GraphQLDefaultInput | undefined;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason?: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions?: Maybe<Readonly<GraphQLInputFieldExtensions>>;\n /** AST node from which this schema element was built, if available. */\n astNode?: Maybe<InputValueDefinitionNode>;\n}\n\n/** A map of input field names to input field configuration objects. */\nexport type GraphQLInputFieldConfigMap = ObjMap<GraphQLInputFieldConfig>;\n\n/** @internal */\nexport interface GraphQLInputFieldNormalizedConfig extends GraphQLInputFieldConfig {\n default: GraphQLDefaultInput | undefined;\n extensions: Readonly<GraphQLInputFieldExtensions>;\n}\n\n/** @internal */\nexport type GraphQLInputFieldNormalizedConfigMap =\n ObjMap<GraphQLInputFieldNormalizedConfig>;\n\n/** A resolved GraphQL input field definition. */\nexport class GraphQLInputField implements GraphQLSchemaElement {\n /**\n * Internal runtime marker used to identify GraphQLInputField instances.\n * @private\n */\n readonly __kind: symbol;\n /** Input object type that owns this input field. */\n parentType: GraphQLInputObjectType;\n /** The GraphQL name for this schema element. */\n name: string;\n /** Human-readable description for this schema element, if provided. */\n description: Maybe<string>;\n /** The GraphQL type reference or runtime type for this element. */\n type: GraphQLInputType;\n /**\n * Deprecated legacy default value used when no explicit value is supplied.\n * Use `default` instead.\n * @deprecated use `default` instead, `defaultValue` will be removed in v18\n */\n defaultValue: unknown;\n /** Default value represented as either a runtime value or a GraphQL literal. */\n default: GraphQLDefaultInput | undefined;\n /**\n * Cached coerced default value.\n * @private\n */\n _memoizedCoercedDefaultValue: unknown;\n /** Reason this element is deprecated, if one was provided. */\n deprecationReason: Maybe<string>;\n /** Extension fields to include in the formatted result. */\n extensions: Readonly<GraphQLInputFieldExtensions>;\n /** AST node from which this schema element was built, if available. */\n astNode: Maybe<InputValueDefinitionNode>;\n\n /**\n * Creates a resolved GraphQL input field definition.\n * @param parentType - Input object type that owns this field.\n * @param name - Input field name.\n * @param config - Input field configuration.\n * @example\n * ```ts\n * import { GraphQLInputField, GraphQLInputObjectType, GraphQLString } from 'graphql/type';\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * fields: {},\n * });\n * const field = new GraphQLInputField(ReviewInput, 'commentary', {\n * type: GraphQLString,\n * default: { value: '' },\n * });\n *\n * field.parentType; // => ReviewInput\n * field.name; // => 'commentary'\n * field.default.value; // => ''\n * ```\n */\n constructor(\n parentType: GraphQLInputObjectType,\n name: string,\n config: GraphQLInputFieldConfig,\n ) {\n devAssert(\n !('resolve' in config),\n `${parentType}.${name} field has a resolve property, but Input Types cannot define resolvers.`,\n );\n\n this.__kind = inputFieldSymbol;\n this.parentType = parentType;\n this.name = assertName(name);\n this.description = config.description;\n this.type = config.type;\n this.defaultValue = config.defaultValue;\n this.default = config.default;\n this._memoizedCoercedDefaultValue = undefined;\n this.deprecationReason = config.deprecationReason;\n this.extensions = toObjMapWithSymbols(config.extensions);\n this.astNode = config.astNode;\n }\n\n /**\n * Returns the value used by `Object.prototype.toString`.\n * @returns The built-in string tag for this object.\n */\n get [Symbol.toStringTag](): string {\n return 'GraphQLInputField';\n }\n\n /**\n * Returns a normalized configuration object for this input field.\n * @returns A configuration object that can be used to recreate this input field.\n * @example\n * ```ts\n * import { GraphQLInputField, GraphQLInputObjectType, GraphQLString } from 'graphql/type';\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * fields: {},\n * });\n * const field = new GraphQLInputField(ReviewInput, 'commentary', {\n * type: GraphQLString,\n * extensions: { form: 'review' },\n * });\n *\n * field.toConfig().extensions; // => { form: 'review' }\n * ```\n */\n toConfig(): GraphQLInputFieldNormalizedConfig {\n return {\n description: this.description,\n type: this.type,\n defaultValue: this.defaultValue,\n default: this.default,\n deprecationReason: this.deprecationReason,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n /**\n * Returns this input field as a schema coordinate string.\n * @returns The input field coordinate.\n * @example\n * ```ts\n * import { GraphQLInputField, GraphQLInputObjectType, GraphQLString } from 'graphql/type';\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * fields: {},\n * });\n * const field = new GraphQLInputField(ReviewInput, 'commentary', {\n * type: GraphQLString,\n * });\n *\n * field.toString(); // => 'ReviewInput.commentary'\n * ```\n */\n toString(): string {\n return `${this.parentType}.${this.name}`;\n }\n\n /**\n * Returns the JSON representation used when this object is serialized.\n * @returns The input field coordinate.\n * @example\n * ```ts\n * import { GraphQLInputField, GraphQLInputObjectType, GraphQLString } from 'graphql/type';\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * fields: {},\n * });\n * const field = new GraphQLInputField(ReviewInput, 'commentary', {\n * type: GraphQLString,\n * });\n *\n * JSON.stringify(field); // => '\"ReviewInput.commentary\"'\n * ```\n */\n toJSON(): string {\n return this.toString();\n }\n}\n\n/**\n * Returns true when the input field is non-null and has no default value.\n * @param field - The input field definition to inspect.\n * @returns True when the input field is non-null and has no default value.\n * @example\n * ```ts\n * import {\n * GraphQLInputField,\n * GraphQLInputObjectType,\n * GraphQLInt,\n * GraphQLNonNull,\n * GraphQLString,\n * isRequiredInputField,\n * } from 'graphql/type';\n *\n * const ReviewInput = new GraphQLInputObjectType({\n * name: 'ReviewInput',\n * fields: {},\n * });\n * const requiredField = new GraphQLInputField(ReviewInput, 'id', {\n * type: new GraphQLNonNull(GraphQLInt),\n * });\n * const optionalField = new GraphQLInputField(ReviewInput, 'name', {\n * type: GraphQLString,\n * });\n * const fieldWithDefault = new GraphQLInputField(ReviewInput, 'limit', {\n * type: new GraphQLNonNull(GraphQLInt),\n * default: { value: 10 },\n * });\n *\n * isRequiredInputField(requiredField); // => true\n * isRequiredInputField(optionalField); // => false\n * isRequiredInputField(fieldWithDefault); // => false\n * ```\n */\nexport function isRequiredInputField(field: GraphQLInputField): boolean {\n return (\n isNonNullType(field.type) &&\n field.defaultValue === undefined &&\n field.default === undefined\n );\n}\n\n/** A map of input field names to resolved input field definitions. */\nexport type GraphQLInputFieldMap = ObjMap<GraphQLInputField>;\n"]}