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":"parser.js","sourceRoot":"","sources":["../../src/language/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Maybe } from '../jsutils/Maybe.js';\n\nimport type { GraphQLError } from '../error/GraphQLError.js';\nimport { syntaxError } from '../error/syntaxError.js';\n\nimport type {\n ArgumentCoordinateNode,\n ArgumentNode,\n BooleanValueNode,\n ConstArgumentNode,\n ConstDirectiveNode,\n ConstListValueNode,\n ConstObjectFieldNode,\n ConstObjectValueNode,\n ConstValueNode,\n DefinitionNode,\n DirectiveArgumentCoordinateNode,\n DirectiveCoordinateNode,\n DirectiveDefinitionNode,\n DirectiveNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n EnumValueDefinitionNode,\n EnumValueNode,\n FieldDefinitionNode,\n FieldNode,\n FloatValueNode,\n FragmentArgumentNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n IntValueNode,\n ListTypeNode,\n ListValueNode,\n MemberCoordinateNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n NullValueNode,\n ObjectFieldNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n ObjectValueNode,\n OperationDefinitionNode,\n OperationTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n ScalarTypeExtensionNode,\n SchemaCoordinateNode,\n SchemaDefinitionNode,\n SchemaExtensionNode,\n SelectionNode,\n SelectionSetNode,\n StringValueNode,\n Token,\n TypeCoordinateNode,\n TypeNode,\n TypeSystemExtensionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n ValueNode,\n VariableDefinitionNode,\n VariableNode,\n} from './ast.js';\nimport { Location, OperationTypeNode } from './ast.js';\nimport { DirectiveLocation } from './directiveLocation.js';\nimport { Kind } from './kinds.js';\nimport type { LexerInterface } from './lexer.js';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.js';\nimport { SchemaCoordinateLexer } from './schemaCoordinateLexer.js';\nimport { isSource, Source } from './source.js';\nimport { TokenKind } from './tokenKind.js';\n\n/**\n * Configuration options to control parser behavior\n */\nexport interface ParseOptions {\n /**\n * By default, the parser creates AST nodes that know the location\n * in the source that they correspond to. This configuration flag\n * disables that behavior for performance or testing.\n */\n noLocation?: boolean | undefined;\n\n /**\n * Parser CPU and memory usage is linear to the number of tokens in a document\n * however in extreme cases it becomes quadratic due to memory exhaustion.\n * Parsing happens before validation so even invalid queries can burn lots of\n * CPU time and memory.\n * To prevent this you can set a maximum number of tokens allowed within a document.\n */\n maxTokens?: number | undefined;\n\n /**\n * EXPERIMENTAL:\n *\n * If enabled, the parser will understand and parse fragment variable definitions\n * and arguments on fragment spreads. Fragment variable definitions will be represented\n * in the `variableDefinitions` field of the FragmentDefinitionNode.\n * Fragment spread arguments will be represented in the `arguments` field of FragmentSpreadNode.\n *\n * For example:\n *\n * ```graphql\n * {\n * t { ...A(var: true) }\n * }\n * fragment A($var: Boolean = false) on T {\n * ...B(x: $var)\n * }\n * ```\n */\n experimentalFragmentArguments?: boolean | undefined;\n\n /**\n * You may override the Lexer class used to lex the source; this is used by\n * schema coordinates to introduce a lexer with a restricted syntax.\n */\n lexer?: LexerInterface | undefined;\n}\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(\n source: string | Source,\n options?: ParseOptions,\n): DocumentNode {\n const parser = new Parser(source, options);\n const document = parser.parseDocument();\n Object.defineProperty(document, 'tokenCount', {\n enumerable: false,\n value: parser.tokenCount,\n });\n return document;\n}\n\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n */\nexport function parseValue(\n source: string | Source,\n options?: ParseOptions,\n): ValueNode {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\nexport function parseConstValue(\n source: string | Source,\n options?: ParseOptions,\n): ConstValueNode {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\nexport function parseType(\n source: string | Source,\n options?: ParseOptions,\n): TypeNode {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n\n/**\n * Given a string containing a GraphQL Schema Coordinate (ex. `Type.field`),\n * parse the AST for that schema coordinate.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * Consider providing the results to the utility function:\n * resolveASTSchemaCoordinate(). Or calling resolveSchemaCoordinate() directly\n * with an unparsed source.\n */\nexport function parseSchemaCoordinate(\n source: string | Source,\n): SchemaCoordinateNode {\n const sourceObj = isSource(source) ? source : new Source(source);\n const lexer = new SchemaCoordinateLexer(sourceObj);\n const parser = new Parser(source, { lexer });\n parser.expectToken(TokenKind.SOF);\n const coordinate = parser.parseSchemaCoordinate();\n parser.expectToken(TokenKind.EOF);\n return coordinate;\n}\n\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\nexport class Parser {\n protected _options: Omit<ParseOptions, 'lexer'>;\n protected _lexer: LexerInterface;\n protected _tokenCounter: number;\n\n constructor(source: string | Source, options: ParseOptions = {}) {\n const { lexer, ..._options } = options;\n\n if (lexer) {\n this._lexer = lexer;\n } else {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n }\n\n this._options = _options;\n this._tokenCounter = 0;\n }\n\n get tokenCount(): number {\n return this._tokenCounter;\n }\n\n /**\n * Converts a name lex token into a name parse node.\n */\n parseName(): NameNode {\n const token = this.expectToken(TokenKind.NAME);\n return this.node<NameNode>(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n }\n\n // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n parseDocument(): DocumentNode {\n return this.node<DocumentNode>(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n parseDefinition(): DefinitionNode {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n }\n\n // Many definitions begin with a description and require a lookahead.\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (hasDescription && keywordToken.kind === TokenKind.BRACE_L) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are not supported on shorthand queries.',\n );\n }\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n case 'scalar':\n return this.parseScalarTypeDefinition();\n case 'type':\n return this.parseObjectTypeDefinition();\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n case 'union':\n return this.parseUnionTypeDefinition();\n case 'enum':\n return this.parseEnumTypeDefinition();\n case 'input':\n return this.parseInputObjectTypeDefinition();\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n case 'fragment':\n return this.parseFragmentDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, only GraphQL definitions support descriptions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n\n // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n parseOperationDefinition(): OperationDefinitionNode {\n const start = this._lexer.token;\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node<OperationDefinitionNode>(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n description: undefined,\n name: undefined,\n variableDefinitions: undefined,\n directives: undefined,\n selectionSet: this.parseSelectionSet(),\n });\n }\n const description = this.parseDescription();\n const operation = this.parseOperationType();\n let name;\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n return this.node<OperationDefinitionNode>(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n description,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n /**\n * OperationType : one of query mutation subscription\n */\n parseOperationType(): OperationTypeNode {\n const operationToken = this.expectToken(TokenKind.NAME);\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n case 'mutation':\n return OperationTypeNode.MUTATION;\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n parseVariableDefinitions(): Array<VariableDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n parseVariableDefinition(): VariableDefinitionNode {\n return this.node<VariableDefinitionNode>(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n description: this.parseDescription(),\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n\n /**\n * Variable : $ Name\n */\n parseVariable(): VariableNode {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node<VariableNode>(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n parseSelectionSet(): SelectionSetNode {\n return this.node<SelectionSetNode>(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n parseSelection(): SelectionNode {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n parseField(): FieldNode {\n const start = this._lexer.token;\n\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node<FieldNode>(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n parseArguments(isConst: true): Array<ConstArgumentNode> | undefined;\n parseArguments(isConst: boolean): Array<ArgumentNode> | undefined;\n parseArguments(isConst: boolean): Array<ArgumentNode> | undefined {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n\n /* experimental */\n parseFragmentArguments(): Array<FragmentArgumentNode> | undefined {\n const item = this.parseFragmentArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n parseArgument(isConst: true): ConstArgumentNode;\n parseArgument(isConst?: boolean): ArgumentNode;\n parseArgument(isConst: boolean = false): ArgumentNode {\n const start = this._lexer.token;\n const name = this.parseName();\n\n this.expectToken(TokenKind.COLON);\n return this.node<ArgumentNode>(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument(): ConstArgumentNode {\n return this.parseArgument(true);\n }\n\n /* experimental */\n parseFragmentArgument(): FragmentArgumentNode {\n const start = this._lexer.token;\n const name = this.parseName();\n\n this.expectToken(TokenKind.COLON);\n return this.node<FragmentArgumentNode>(start, {\n kind: Kind.FRAGMENT_ARGUMENT,\n name,\n value: this.parseValueLiteral(false),\n });\n }\n\n // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Arguments? Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n parseFragment(): FragmentSpreadNode | InlineFragmentNode {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n\n const hasTypeCondition = this.expectOptionalKeyword('on');\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n const name = this.parseFragmentName();\n if (\n this.peek(TokenKind.PAREN_L) &&\n this._options.experimentalFragmentArguments\n ) {\n return this.node<FragmentSpreadNode>(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name,\n arguments: this.parseFragmentArguments(),\n directives: this.parseDirectives(false),\n });\n }\n return this.node<FragmentSpreadNode>(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name,\n directives: this.parseDirectives(false),\n });\n }\n return this.node<InlineFragmentNode>(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n /**\n * FragmentDefinition :\n * - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n parseFragmentDefinition(): FragmentDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('fragment');\n if (this._options.experimentalFragmentArguments === true) {\n return this.node<FragmentDefinitionNode>(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n description,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n return this.node<FragmentDefinitionNode>(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n description,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n /**\n * FragmentName : Name but not `on`\n */\n parseFragmentName(): NameNode {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n return this.parseName();\n }\n\n // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n parseValueLiteral(isConst: true): ConstValueNode;\n parseValueLiteral(isConst: boolean): ValueNode;\n parseValueLiteral(isConst: boolean): ValueNode {\n const token = this._lexer.token;\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n case TokenKind.INT:\n this.advanceLexer();\n return this.node<IntValueNode>(token, {\n kind: Kind.INT,\n value: token.value,\n });\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node<FloatValueNode>(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n case TokenKind.NAME:\n this.advanceLexer();\n switch (token.value) {\n case 'true':\n return this.node<BooleanValueNode>(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n case 'false':\n return this.node<BooleanValueNode>(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n case 'null':\n return this.node<NullValueNode>(token, { kind: Kind.NULL });\n default:\n return this.node<EnumValueNode>(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n return this.parseVariable();\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral(): ConstValueNode {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral(): StringValueNode {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node<StringValueNode>(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n parseList(isConst: true): ConstListValueNode;\n parseList(isConst: boolean): ListValueNode;\n parseList(isConst: boolean): ListValueNode {\n const item = () => this.parseValueLiteral(isConst);\n return this.node<ListValueNode>(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n parseObject(isConst: true): ConstObjectValueNode;\n parseObject(isConst: boolean): ObjectValueNode;\n parseObject(isConst: boolean): ObjectValueNode {\n const item = () => this.parseObjectField(isConst);\n return this.node<ObjectValueNode>(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n parseObjectField(isConst: true): ConstObjectFieldNode;\n parseObjectField(isConst: boolean): ObjectFieldNode;\n parseObjectField(isConst: boolean): ObjectFieldNode {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node<ObjectFieldNode>(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n parseDirectives(isConst: true): Array<ConstDirectiveNode> | undefined;\n parseDirectives(isConst: boolean): Array<DirectiveNode> | undefined;\n parseDirectives(isConst: boolean): Array<DirectiveNode> | undefined {\n const directives = [];\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n if (directives.length) {\n return directives;\n }\n return undefined;\n }\n\n parseConstDirectives(): Array<ConstDirectiveNode> | undefined {\n return this.parseDirectives(true);\n }\n\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n parseDirective(isConst: true): ConstDirectiveNode;\n parseDirective(isConst: boolean): DirectiveNode;\n parseDirective(isConst: boolean): DirectiveNode {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node<DirectiveNode>(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n }\n\n // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n parseTypeReference(): TypeNode {\n const start = this._lexer.token;\n let type;\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node<ListTypeNode>(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node<NonNullTypeNode>(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n\n /**\n * NamedType : Name\n */\n parseNamedType(): NamedTypeNode {\n return this.node<NamedTypeNode>(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n }\n\n // Implements the parsing rules in the Type Definition section.\n\n peekDescription(): boolean {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n\n /**\n * Description : StringValue\n */\n parseDescription(): undefined | StringValueNode {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n parseSchemaDefinition(): SchemaDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node<SchemaDefinitionNode>(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n parseOperationTypeDefinition(): OperationTypeDefinitionNode {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node<OperationTypeDefinitionNode>(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n parseScalarTypeDefinition(): ScalarTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node<ScalarTypeDefinitionNode>(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n parseObjectTypeDefinition(): ObjectTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node<ObjectTypeDefinitionNode>(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n parseImplementsInterfaces(): Array<NamedTypeNode> | undefined {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : undefined;\n }\n\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n parseFieldsDefinition(): Array<FieldDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n parseFieldDefinition(): FieldDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node<FieldDefinitionNode>(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n parseArgumentDefs(): Array<InputValueDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n parseInputValueDef(): InputValueDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n const directives = this.parseConstDirectives();\n return this.node<InputValueDefinitionNode>(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n parseInterfaceTypeDefinition(): InterfaceTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node<InterfaceTypeDefinitionNode>(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n parseUnionTypeDefinition(): UnionTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node<UnionTypeDefinitionNode>(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n parseUnionMemberTypes(): Array<NamedTypeNode> | undefined {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : undefined;\n }\n\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n parseEnumTypeDefinition(): EnumTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node<EnumTypeDefinitionNode>(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n parseEnumValuesDefinition(): Array<EnumValueDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n parseEnumValueDefinition(): EnumValueDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node<EnumValueDefinitionNode>(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n parseEnumValueName(): NameNode {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n return this.parseName();\n }\n\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n parseInputObjectTypeDefinition(): InputObjectTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node<InputObjectTypeDefinitionNode>(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n parseInputFieldsDefinition(): Array<InputValueDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n parseTypeSystemExtension(): TypeSystemExtensionNode {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n case 'scalar':\n return this.parseScalarTypeExtension();\n case 'type':\n return this.parseObjectTypeExtension();\n case 'interface':\n return this.parseInterfaceTypeExtension();\n case 'union':\n return this.parseUnionTypeExtension();\n case 'enum':\n return this.parseEnumTypeExtension();\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n parseSchemaExtension(): SchemaExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n if (directives === undefined && operationTypes === undefined) {\n throw this.unexpected();\n }\n return this.node<SchemaExtensionNode>(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n parseScalarTypeExtension(): ScalarTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n if (directives === undefined) {\n throw this.unexpected();\n }\n return this.node<ScalarTypeExtensionNode>(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n parseObjectTypeExtension(): ObjectTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n if (\n interfaces === undefined &&\n directives === undefined &&\n fields === undefined\n ) {\n throw this.unexpected();\n }\n return this.node<ObjectTypeExtensionNode>(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n parseInterfaceTypeExtension(): InterfaceTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n if (\n interfaces === undefined &&\n directives === undefined &&\n fields === undefined\n ) {\n throw this.unexpected();\n }\n return this.node<InterfaceTypeExtensionNode>(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n parseUnionTypeExtension(): UnionTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n if (directives === undefined && types === undefined) {\n throw this.unexpected();\n }\n return this.node<UnionTypeExtensionNode>(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n parseEnumTypeExtension(): EnumTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n if (directives === undefined && values === undefined) {\n throw this.unexpected();\n }\n return this.node<EnumTypeExtensionNode>(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n parseInputObjectTypeExtension(): InputObjectTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n if (directives === undefined && fields === undefined) {\n throw this.unexpected();\n }\n return this.node<InputObjectTypeExtensionNode>(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n parseDirectiveDefinition(): DirectiveDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node<DirectiveDefinitionNode>(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n parseDirectiveLocations(): Array<NameNode> {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n parseDirectiveLocation(): NameNode {\n const start = this._lexer.token;\n const name = this.parseName();\n if (Object.hasOwn(DirectiveLocation, name.value)) {\n return name;\n }\n throw this.unexpected(start);\n }\n\n // Implements the parsing rules in the Schema Coordinates section.\n\n /**\n * SchemaCoordinate :\n * - Name\n * - Name . Name\n * - Name . Name ( Name : )\n * - @ Name\n * - @ Name ( Name : )\n */\n parseSchemaCoordinate(): SchemaCoordinateNode {\n const start = this._lexer.token;\n const ofDirective = this.expectOptionalToken(TokenKind.AT);\n const name = this.parseName();\n let memberName: NameNode | undefined;\n if (!ofDirective && this.expectOptionalToken(TokenKind.DOT)) {\n memberName = this.parseName();\n }\n let argumentName: NameNode | undefined;\n if (\n (ofDirective || memberName) &&\n this.expectOptionalToken(TokenKind.PAREN_L)\n ) {\n argumentName = this.parseName();\n this.expectToken(TokenKind.COLON);\n this.expectToken(TokenKind.PAREN_R);\n }\n\n if (ofDirective) {\n if (argumentName) {\n return this.node<DirectiveArgumentCoordinateNode>(start, {\n kind: Kind.DIRECTIVE_ARGUMENT_COORDINATE,\n name,\n argumentName,\n });\n }\n return this.node<DirectiveCoordinateNode>(start, {\n kind: Kind.DIRECTIVE_COORDINATE,\n name,\n });\n } else if (memberName) {\n if (argumentName) {\n return this.node<ArgumentCoordinateNode>(start, {\n kind: Kind.ARGUMENT_COORDINATE,\n name,\n fieldName: memberName,\n argumentName,\n });\n }\n return this.node<MemberCoordinateNode>(start, {\n kind: Kind.MEMBER_COORDINATE,\n name,\n memberName,\n });\n }\n\n return this.node<TypeCoordinateNode>(start, {\n kind: Kind.TYPE_COORDINATE,\n name,\n });\n }\n\n // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n node<T extends { loc?: Location | undefined }>(\n startToken: Token,\n node: T,\n ): T {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n return node;\n }\n\n /**\n * Determines if the next token is of a given kind\n */\n peek(kind: TokenKind): boolean {\n return this._lexer.token.kind === kind;\n }\n\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n expectToken(kind: TokenKind): Token {\n const token = this._lexer.token;\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n expectOptionalToken(kind: TokenKind): boolean {\n const token = this._lexer.token;\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n return false;\n }\n\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n expectKeyword(value: string): void {\n const token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n expectOptionalKeyword(value: string): boolean {\n const token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n return false;\n }\n\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n unexpected(atToken?: Maybe<Token>): GraphQLError {\n const token = atToken ?? this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n any<T>(\n openKind: TokenKind,\n parseFn: () => T,\n closeKind: TokenKind,\n ): Array<T> {\n this.expectToken(openKind);\n const nodes = [];\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n return nodes;\n }\n\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n optionalMany<T>(\n openKind: TokenKind,\n parseFn: () => T,\n closeKind: TokenKind,\n ): Array<T> | undefined {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n return undefined;\n }\n\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n many<T>(\n openKind: TokenKind,\n parseFn: () => T,\n closeKind: TokenKind,\n ): Array<T> {\n this.expectToken(openKind);\n const nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n delimitedMany<T>(delimiterKind: TokenKind, parseFn: () => T): Array<T> {\n this.expectOptionalToken(delimiterKind);\n\n const nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n return nodes;\n }\n\n advanceLexer(): void {\n const { maxTokens } = this._options;\n const token = this._lexer.advance();\n\n if (token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n if (maxTokens !== undefined && this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more than ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n\n/**\n * A helper function to describe a token as a string for debugging.\n */\nfunction getTokenDesc(token: Token): string {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\nfunction getTokenKindDesc(kind: TokenKind): string {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n"]}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/language/parser.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Parsing */\n\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type { GraphQLError } from '../error/GraphQLError.ts';\nimport { syntaxError } from '../error/syntaxError.ts';\n\nimport type {\n ArgumentCoordinateNode,\n ArgumentNode,\n BooleanValueNode,\n ConstArgumentNode,\n ConstDirectiveNode,\n ConstListValueNode,\n ConstObjectFieldNode,\n ConstObjectValueNode,\n ConstValueNode,\n DefinitionNode,\n DirectiveArgumentCoordinateNode,\n DirectiveCoordinateNode,\n DirectiveDefinitionNode,\n DirectiveExtensionNode,\n DirectiveNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n EnumValueDefinitionNode,\n EnumValueNode,\n FieldDefinitionNode,\n FieldNode,\n FloatValueNode,\n FragmentArgumentNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n IntValueNode,\n ListTypeNode,\n ListValueNode,\n MemberCoordinateNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n NullValueNode,\n ObjectFieldNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n ObjectValueNode,\n OperationDefinitionNode,\n OperationTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n ScalarTypeExtensionNode,\n SchemaCoordinateNode,\n SchemaDefinitionNode,\n SchemaExtensionNode,\n SelectionNode,\n SelectionSetNode,\n StringValueNode,\n Token,\n TypeCoordinateNode,\n TypeNode,\n TypeSystemExtensionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n ValueNode,\n VariableDefinitionNode,\n VariableNode,\n} from './ast.ts';\nimport { Location, OperationTypeNode } from './ast.ts';\nimport { DirectiveLocation } from './directiveLocation.ts';\nimport { Kind } from './kinds.ts';\nimport type { LexerInterface } from './lexer.ts';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.ts';\nimport { SchemaCoordinateLexer } from './schemaCoordinateLexer.ts';\nimport { isSource, Source } from './source.ts';\nimport { TokenKind } from './tokenKind.ts';\n\n/** Configuration options to control parser behavior */\nexport interface ParseOptions {\n /**\n * By default, the parser creates AST nodes that know the location\n * in the source that they correspond to. This configuration flag\n * disables that behavior for performance or testing.\n */\n noLocation?: boolean | undefined;\n\n /**\n * Parser CPU and memory usage is linear to the number of tokens in a document\n * however in extreme cases it becomes quadratic due to memory exhaustion.\n * Parsing happens before validation so even invalid queries can burn lots of\n * CPU time and memory.\n * To prevent this you can set a maximum number of tokens allowed within a document.\n */\n maxTokens?: number | undefined;\n\n /**\n * EXPERIMENTAL:\n *\n * If enabled, the parser will understand and parse fragment variable definitions\n * and arguments on fragment spreads. Fragment variable definitions will be represented\n * in the `variableDefinitions` field of the FragmentDefinitionNode.\n * Fragment spread arguments will be represented in the `arguments` field of FragmentSpreadNode.\n * @example\n * ```graphql\n * {\n * t { ...A(var: true) }\n * }\n * fragment A($var: Boolean = false) on T {\n * ...B(x: $var)\n * }\n * ```\n */\n experimentalFragmentArguments?: boolean | undefined;\n\n /**\n * EXPERIMENTAL:\n *\n * If enabled, the parser will parse directives on directive definitions.\n * This syntax is not part of the GraphQL specification and may change.\n * @example\n * ```graphql\n * directive @foo @bar on FIELD\n * ```\n */\n experimentalDirectivesOnDirectiveDefinitions?: boolean | undefined;\n\n /**\n * Internal parser hook for GraphQL.js entry points that need to parse a\n * restricted grammar with an alternate lexer.\n * @internal\n */\n lexer?: LexerInterface | undefined;\n}\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n * @param source - A GraphQL source string or source object.\n * @param options - Optional parser configuration.\n * @returns The parsed GraphQL document AST.\n * @example\n * ```ts\n * // Parse a GraphQL document with the default parser options.\n * import { parse } from 'graphql/language';\n *\n * const document = parse('{ hero { name } }');\n *\n * document.kind; // => 'Document'\n * ```\n * @example\n * ```ts\n * // This variant enables parser options and provides an explicit lexer.\n * import { Lexer, Source, parse } from 'graphql/language';\n *\n * const document = parse(`\n * {\n * t { ...A(var: true) }\n * }\n * fragment A($var: Boolean = false) on T {\n * name\n * }\n * `, {\n * experimentalFragmentArguments: true,\n * maxTokens: 80,\n * noLocation: true,\n * });\n * const directiveDocument = parse('directive @foo @bar on FIELD', {\n * experimentalDirectivesOnDirectiveDefinitions: true,\n * });\n * const source = new Source('{ hero }');\n * const lexerDocument = parse(source, { lexer: new Lexer(source) });\n *\n * document.definitions[0].kind; // => 'OperationDefinition'\n * document.definitions[1].kind; // => 'FragmentDefinition'\n * document.loc; // => undefined\n * directiveDocument.definitions[0].kind; // => 'DirectiveDefinition'\n * lexerDocument.definitions[0].kind; // => 'OperationDefinition'\n * ```\n */\nexport function parse(\n source: string | Source,\n options?: ParseOptions,\n): DocumentNode {\n const parser = new Parser(source, options);\n const document = parser.parseDocument();\n Object.defineProperty(document, 'tokenCount', {\n enumerable: false,\n value: parser.tokenCount,\n });\n return document;\n}\n\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n * @param source - A GraphQL source string or source object containing a value.\n * @param options - Optional parser configuration.\n * @returns The parsed GraphQL value AST.\n * @example\n * ```ts\n * import { parseValue } from 'graphql/language';\n *\n * const value = parseValue('[42]');\n *\n * value.kind; // => 'ListValue'\n * ```\n */\nexport function parseValue(\n source: string | Source,\n options?: ParseOptions,\n): ValueNode {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n * @param source - A GraphQL source string or source object containing a constant value.\n * @param options - Optional parser configuration.\n * @returns The parsed GraphQL constant value AST.\n * @example\n * ```ts\n * import { parseConstValue } from 'graphql/language';\n *\n * const value = parseConstValue('{ enabled: true }');\n *\n * value.kind; // => 'ObjectValue'\n * parseConstValue('$variable'); // throws an error\n * ```\n */\nexport function parseConstValue(\n source: string | Source,\n options?: ParseOptions,\n): ConstValueNode {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n * @param source - A GraphQL source string or source object containing a type reference.\n * @param options - Optional parser configuration.\n * @returns The parsed GraphQL type AST.\n * @example\n * ```ts\n * import { parseType } from 'graphql/language';\n *\n * const type = parseType('[String!]');\n *\n * type.kind; // => 'ListType'\n * ```\n */\nexport function parseType(\n source: string | Source,\n options?: ParseOptions,\n): TypeNode {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n\n/**\n * Given a string containing a GraphQL Schema Coordinate (ex. `Type.field`),\n * parse the AST for that schema coordinate.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * Consider providing the results to the utility function:\n * resolveASTSchemaCoordinate(). Or calling resolveSchemaCoordinate() directly\n * with an unparsed source.\n * @param source - A GraphQL source string or source object containing a schema coordinate.\n * @returns The parsed GraphQL schema coordinate AST.\n * @example\n * ```ts\n * import { parseSchemaCoordinate } from 'graphql/language';\n *\n * const coordinate = parseSchemaCoordinate('Query.hero');\n *\n * coordinate.kind; // => 'MemberCoordinate'\n * ```\n */\nexport function parseSchemaCoordinate(\n source: string | Source,\n): SchemaCoordinateNode {\n const sourceObj = isSource(source) ? source : new Source(source);\n const lexer = new SchemaCoordinateLexer(sourceObj);\n const parser = new Parser(source, { lexer });\n parser.expectToken(TokenKind.SOF);\n const coordinate = parser.parseSchemaCoordinate();\n parser.expectToken(TokenKind.EOF);\n return coordinate;\n}\n\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\nexport class Parser {\n protected _options: Omit<ParseOptions, 'lexer'>;\n protected _lexer: LexerInterface;\n protected _tokenCounter: number;\n\n constructor(source: string | Source, options: ParseOptions = {}) {\n const { lexer, ..._options } = options;\n\n if (lexer) {\n this._lexer = lexer;\n } else {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n }\n\n this._options = _options;\n this._tokenCounter = 0;\n }\n\n get tokenCount(): number {\n return this._tokenCounter;\n }\n\n /**\n * Converts a name lex token into a name parse node.\n *\n * @internal\n */\n parseName(): NameNode {\n const token = this.expectToken(TokenKind.NAME);\n return this.node<NameNode>(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n }\n\n // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n *\n * @internal\n */\n parseDocument(): DocumentNode {\n return this.node<DocumentNode>(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n *\n * @internal\n */\n parseDefinition(): DefinitionNode {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n }\n\n // Many definitions begin with a description and require a lookahead.\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (hasDescription && keywordToken.kind === TokenKind.BRACE_L) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are not supported on shorthand queries.',\n );\n }\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n case 'scalar':\n return this.parseScalarTypeDefinition();\n case 'type':\n return this.parseObjectTypeDefinition();\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n case 'union':\n return this.parseUnionTypeDefinition();\n case 'enum':\n return this.parseEnumTypeDefinition();\n case 'input':\n return this.parseInputObjectTypeDefinition();\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n case 'fragment':\n return this.parseFragmentDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, only GraphQL definitions support descriptions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n\n // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n *\n * @internal\n */\n parseOperationDefinition(): OperationDefinitionNode {\n const start = this._lexer.token;\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node<OperationDefinitionNode>(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n description: undefined,\n name: undefined,\n variableDefinitions: undefined,\n directives: undefined,\n selectionSet: this.parseSelectionSet(),\n });\n }\n const description = this.parseDescription();\n const operation = this.parseOperationType();\n let name;\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n return this.node<OperationDefinitionNode>(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n description,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n /**\n * OperationType : one of query mutation subscription\n *\n * @internal\n */\n parseOperationType(): OperationTypeNode {\n const operationToken = this.expectToken(TokenKind.NAME);\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n case 'mutation':\n return OperationTypeNode.MUTATION;\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n *\n * @internal\n */\n parseVariableDefinitions(): Array<VariableDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n *\n * @internal\n */\n parseVariableDefinition(): VariableDefinitionNode {\n return this.node<VariableDefinitionNode>(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n description: this.parseDescription(),\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n\n /**\n * Variable : $ Name\n *\n * @internal\n */\n parseVariable(): VariableNode {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node<VariableNode>(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n *\n * @internal\n */\n parseSelectionSet(): SelectionSetNode {\n return this.node<SelectionSetNode>(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n *\n * @internal\n */\n parseSelection(): SelectionNode {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n *\n * @internal\n */\n parseField(): FieldNode {\n const start = this._lexer.token;\n\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node<FieldNode>(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n *\n * @internal\n */\n parseArguments(isConst: true): Array<ConstArgumentNode> | undefined;\n parseArguments(isConst: boolean): Array<ArgumentNode> | undefined;\n parseArguments(isConst: boolean): Array<ArgumentNode> | undefined {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n\n /* experimental */\n parseFragmentArguments(): Array<FragmentArgumentNode> | undefined {\n const item = this.parseFragmentArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n\n /**\n * Argument[Const] : Name : Value[?Const]\n *\n * @internal\n */\n parseArgument(isConst: true): ConstArgumentNode;\n parseArgument(isConst?: boolean): ArgumentNode;\n parseArgument(isConst: boolean = false): ArgumentNode {\n const start = this._lexer.token;\n const name = this.parseName();\n\n this.expectToken(TokenKind.COLON);\n return this.node<ArgumentNode>(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument(): ConstArgumentNode {\n return this.parseArgument(true);\n }\n\n /* experimental */\n parseFragmentArgument(): FragmentArgumentNode {\n const start = this._lexer.token;\n const name = this.parseName();\n\n this.expectToken(TokenKind.COLON);\n return this.node<FragmentArgumentNode>(start, {\n kind: Kind.FRAGMENT_ARGUMENT,\n name,\n value: this.parseValueLiteral(false),\n });\n }\n\n // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Arguments? Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n *\n * @internal\n */\n parseFragment(): FragmentSpreadNode | InlineFragmentNode {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n\n const hasTypeCondition = this.expectOptionalKeyword('on');\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n const name = this.parseFragmentName();\n if (\n this.peek(TokenKind.PAREN_L) &&\n this._options.experimentalFragmentArguments\n ) {\n return this.node<FragmentSpreadNode>(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name,\n arguments: this.parseFragmentArguments(),\n directives: this.parseDirectives(false),\n });\n }\n return this.node<FragmentSpreadNode>(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name,\n directives: this.parseDirectives(false),\n });\n }\n return this.node<InlineFragmentNode>(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n /**\n * FragmentDefinition :\n * - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n *\n * @internal\n */\n parseFragmentDefinition(): FragmentDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('fragment');\n if (this._options.experimentalFragmentArguments === true) {\n return this.node<FragmentDefinitionNode>(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n description,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n return this.node<FragmentDefinitionNode>(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n description,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n /**\n * FragmentName : Name but not `on`\n *\n * @internal\n */\n parseFragmentName(): NameNode {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n return this.parseName();\n }\n\n // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n *\n * @internal\n */\n parseValueLiteral(isConst: true): ConstValueNode;\n parseValueLiteral(isConst: boolean): ValueNode;\n parseValueLiteral(isConst: boolean): ValueNode {\n const token = this._lexer.token;\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n case TokenKind.INT:\n this.advanceLexer();\n return this.node<IntValueNode>(token, {\n kind: Kind.INT,\n value: token.value,\n });\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node<FloatValueNode>(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n case TokenKind.NAME:\n this.advanceLexer();\n switch (token.value) {\n case 'true':\n return this.node<BooleanValueNode>(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n case 'false':\n return this.node<BooleanValueNode>(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n case 'null':\n return this.node<NullValueNode>(token, { kind: Kind.NULL });\n default:\n return this.node<EnumValueNode>(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n return this.parseVariable();\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral(): ConstValueNode {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral(): StringValueNode {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node<StringValueNode>(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n *\n * @internal\n */\n parseList(isConst: true): ConstListValueNode;\n parseList(isConst: boolean): ListValueNode;\n parseList(isConst: boolean): ListValueNode {\n const item = () => this.parseValueLiteral(isConst);\n return this.node<ListValueNode>(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n *\n * @internal\n */\n parseObject(isConst: true): ConstObjectValueNode;\n parseObject(isConst: boolean): ObjectValueNode;\n parseObject(isConst: boolean): ObjectValueNode {\n const item = () => this.parseObjectField(isConst);\n return this.node<ObjectValueNode>(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n\n /**\n * ObjectField[Const] : Name : Value[?Const]\n *\n * @internal\n */\n parseObjectField(isConst: true): ConstObjectFieldNode;\n parseObjectField(isConst: boolean): ObjectFieldNode;\n parseObjectField(isConst: boolean): ObjectFieldNode {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node<ObjectFieldNode>(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n *\n * @internal\n */\n parseDirectives(isConst: true): Array<ConstDirectiveNode> | undefined;\n parseDirectives(isConst: boolean): Array<DirectiveNode> | undefined;\n parseDirectives(isConst: boolean): Array<DirectiveNode> | undefined {\n const directives = [];\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n if (directives.length) {\n return directives;\n }\n return undefined;\n }\n\n parseConstDirectives(): Array<ConstDirectiveNode> | undefined {\n return this.parseDirectives(true);\n }\n\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n *\n * @internal\n */\n parseDirective(isConst: true): ConstDirectiveNode;\n parseDirective(isConst: boolean): DirectiveNode;\n parseDirective(isConst: boolean): DirectiveNode {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node<DirectiveNode>(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n }\n\n // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n *\n * @internal\n */\n parseTypeReference(): TypeNode {\n const start = this._lexer.token;\n let type;\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node<ListTypeNode>(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node<NonNullTypeNode>(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n\n /**\n * NamedType : Name\n *\n * @internal\n */\n parseNamedType(): NamedTypeNode {\n return this.node<NamedTypeNode>(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n }\n\n // Implements the parsing rules in the Type Definition section.\n\n peekDescription(): boolean {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n\n /**\n * Description : StringValue\n *\n * @internal\n */\n parseDescription(): undefined | StringValueNode {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n *\n * @internal\n */\n parseSchemaDefinition(): SchemaDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node<SchemaDefinitionNode>(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n\n /**\n * OperationTypeDefinition : OperationType : NamedType\n *\n * @internal\n */\n parseOperationTypeDefinition(): OperationTypeDefinitionNode {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node<OperationTypeDefinitionNode>(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n *\n * @internal\n */\n parseScalarTypeDefinition(): ScalarTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node<ScalarTypeDefinitionNode>(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n *\n * @internal\n */\n parseObjectTypeDefinition(): ObjectTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node<ObjectTypeDefinitionNode>(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n *\n * @internal\n */\n parseImplementsInterfaces(): Array<NamedTypeNode> | undefined {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : undefined;\n }\n\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n *\n * @internal\n */\n parseFieldsDefinition(): Array<FieldDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n *\n * @internal\n */\n parseFieldDefinition(): FieldDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node<FieldDefinitionNode>(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n *\n * @internal\n */\n parseArgumentDefs(): Array<InputValueDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n *\n * @internal\n */\n parseInputValueDef(): InputValueDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n const directives = this.parseConstDirectives();\n return this.node<InputValueDefinitionNode>(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n *\n * @internal\n */\n parseInterfaceTypeDefinition(): InterfaceTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node<InterfaceTypeDefinitionNode>(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n *\n * @internal\n */\n parseUnionTypeDefinition(): UnionTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node<UnionTypeDefinitionNode>(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n *\n * @internal\n */\n parseUnionMemberTypes(): Array<NamedTypeNode> | undefined {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : undefined;\n }\n\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n *\n * @internal\n */\n parseEnumTypeDefinition(): EnumTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node<EnumTypeDefinitionNode>(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n *\n * @internal\n */\n parseEnumValuesDefinition(): Array<EnumValueDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * @internal\n */\n parseEnumValueDefinition(): EnumValueDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node<EnumValueDefinitionNode>(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n *\n * @internal\n */\n parseEnumValueName(): NameNode {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n return this.parseName();\n }\n\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n *\n * @internal\n */\n parseInputObjectTypeDefinition(): InputObjectTypeDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node<InputObjectTypeDefinitionNode>(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n *\n * @internal\n */\n parseInputFieldsDefinition(): Array<InputValueDefinitionNode> | undefined {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n * - DirectiveDefinitionExtension\n *\n * @internal\n */\n parseTypeSystemExtension(): TypeSystemExtensionNode {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n case 'scalar':\n return this.parseScalarTypeExtension();\n case 'type':\n return this.parseObjectTypeExtension();\n case 'interface':\n return this.parseInterfaceTypeExtension();\n case 'union':\n return this.parseUnionTypeExtension();\n case 'enum':\n return this.parseEnumTypeExtension();\n case 'input':\n return this.parseInputObjectTypeExtension();\n case 'directive':\n if (this._options.experimentalDirectivesOnDirectiveDefinitions) {\n return this.parseDirectiveDefinitionExtension();\n }\n break;\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n *\n * @internal\n */\n parseSchemaExtension(): SchemaExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n if (directives === undefined && operationTypes === undefined) {\n throw this.unexpected();\n }\n return this.node<SchemaExtensionNode>(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n *\n * @internal\n */\n parseScalarTypeExtension(): ScalarTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n if (directives === undefined) {\n throw this.unexpected();\n }\n return this.node<ScalarTypeExtensionNode>(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n *\n * @internal\n */\n parseObjectTypeExtension(): ObjectTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n if (\n interfaces === undefined &&\n directives === undefined &&\n fields === undefined\n ) {\n throw this.unexpected();\n }\n return this.node<ObjectTypeExtensionNode>(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n *\n * @internal\n */\n parseInterfaceTypeExtension(): InterfaceTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n if (\n interfaces === undefined &&\n directives === undefined &&\n fields === undefined\n ) {\n throw this.unexpected();\n }\n return this.node<InterfaceTypeExtensionNode>(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n *\n * @internal\n */\n parseUnionTypeExtension(): UnionTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n if (directives === undefined && types === undefined) {\n throw this.unexpected();\n }\n return this.node<UnionTypeExtensionNode>(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n *\n * @internal\n */\n parseEnumTypeExtension(): EnumTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n if (directives === undefined && values === undefined) {\n throw this.unexpected();\n }\n return this.node<EnumTypeExtensionNode>(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n *\n * @internal\n */\n parseInputObjectTypeExtension(): InputObjectTypeExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n if (directives === undefined && fields === undefined) {\n throw this.unexpected();\n }\n return this.node<InputObjectTypeExtensionNode>(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n\n parseDirectiveDefinitionExtension(): DirectiveExtensionNode {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n if (directives === undefined) {\n throw this.unexpected();\n }\n return this.node<DirectiveExtensionNode>(start, {\n kind: Kind.DIRECTIVE_EXTENSION,\n name,\n directives,\n });\n }\n\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n *\n * @internal\n */\n parseDirectiveDefinition(): DirectiveDefinitionNode {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const directives = this._options\n .experimentalDirectivesOnDirectiveDefinitions\n ? this.parseConstDirectives()\n : undefined;\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node<DirectiveDefinitionNode>(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n directives,\n repeatable,\n locations,\n });\n }\n\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n *\n * @internal\n */\n parseDirectiveLocations(): Array<NameNode> {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n * `VARIABLE_DEFINITION`\n * `FRAGMENT_VARIABLE_DEFINITION`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n * `DIRECTIVE_DEFINITION`\n */\n parseDirectiveLocation(): NameNode {\n const start = this._lexer.token;\n const name = this.parseName();\n if (Object.hasOwn(DirectiveLocation, name.value)) {\n return name;\n }\n throw this.unexpected(start);\n }\n\n // Implements the parsing rules in the Schema Coordinates section.\n\n /**\n * SchemaCoordinate :\n * - Name\n * - Name . Name\n * - Name . Name ( Name : )\n * - @ Name\n * - @ Name ( Name : )\n *\n * @internal\n */\n parseSchemaCoordinate(): SchemaCoordinateNode {\n const start = this._lexer.token;\n const ofDirective = this.expectOptionalToken(TokenKind.AT);\n const name = this.parseName();\n let memberName: NameNode | undefined;\n if (!ofDirective && this.expectOptionalToken(TokenKind.DOT)) {\n memberName = this.parseName();\n }\n let argumentName: NameNode | undefined;\n if (\n (ofDirective || memberName) &&\n this.expectOptionalToken(TokenKind.PAREN_L)\n ) {\n argumentName = this.parseName();\n this.expectToken(TokenKind.COLON);\n this.expectToken(TokenKind.PAREN_R);\n }\n\n if (ofDirective) {\n if (argumentName) {\n return this.node<DirectiveArgumentCoordinateNode>(start, {\n kind: Kind.DIRECTIVE_ARGUMENT_COORDINATE,\n name,\n argumentName,\n });\n }\n return this.node<DirectiveCoordinateNode>(start, {\n kind: Kind.DIRECTIVE_COORDINATE,\n name,\n });\n } else if (memberName) {\n if (argumentName) {\n return this.node<ArgumentCoordinateNode>(start, {\n kind: Kind.ARGUMENT_COORDINATE,\n name,\n fieldName: memberName,\n argumentName,\n });\n }\n return this.node<MemberCoordinateNode>(start, {\n kind: Kind.MEMBER_COORDINATE,\n name,\n memberName,\n });\n }\n\n return this.node<TypeCoordinateNode>(start, {\n kind: Kind.TYPE_COORDINATE,\n name,\n });\n }\n\n // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n *\n * @internal\n */\n node<T extends { loc?: Location | undefined }>(\n startToken: Token,\n node: T,\n ): T {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n return node;\n }\n\n /**\n * Determines if the next token is of a given kind\n *\n * @internal\n */\n peek(kind: TokenKind): boolean {\n return this._lexer.token.kind === kind;\n }\n\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n *\n * @internal\n */\n expectToken(kind: TokenKind): Token {\n const token = this._lexer.token;\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n *\n * @internal\n */\n expectOptionalToken(kind: TokenKind): boolean {\n const token = this._lexer.token;\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n return false;\n }\n\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n *\n * @internal\n */\n expectKeyword(value: string): void {\n const token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n *\n * @internal\n */\n expectOptionalKeyword(value: string): boolean {\n const token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n return false;\n }\n\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n *\n * @internal\n */\n unexpected(atToken?: Maybe<Token>): GraphQLError {\n const token = atToken ?? this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n *\n * @internal\n */\n any<T>(\n openKind: TokenKind,\n parseFn: () => T,\n closeKind: TokenKind,\n ): Array<T> {\n this.expectToken(openKind);\n const nodes = [];\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n return nodes;\n }\n\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n *\n * @internal\n */\n optionalMany<T>(\n openKind: TokenKind,\n parseFn: () => T,\n closeKind: TokenKind,\n ): Array<T> | undefined {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n return undefined;\n }\n\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n *\n * @internal\n */\n many<T>(\n openKind: TokenKind,\n parseFn: () => T,\n closeKind: TokenKind,\n ): Array<T> {\n this.expectToken(openKind);\n const nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n *\n * @internal\n */\n delimitedMany<T>(delimiterKind: TokenKind, parseFn: () => T): Array<T> {\n this.expectOptionalToken(delimiterKind);\n\n const nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n return nodes;\n }\n\n advanceLexer(): void {\n const { maxTokens } = this._options;\n const token = this._lexer.advance();\n\n if (token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n if (maxTokens !== undefined && this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more than ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n\n/**\n * A helper function to describe a token as a string for debugging.\n *\n * @internal\n */\nfunction getTokenDesc(token: Token): string {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n\n/**\n * A helper function to describe a token kind as a string for debugging.\n *\n * @internal\n */\nfunction getTokenKindDesc(kind: TokenKind): string {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n"]}
@@ -1,19 +1,200 @@
1
- import type { ASTNode, ConstValueNode, DefinitionNode, ExecutableDefinitionNode, OperationDefinitionNode, SchemaCoordinateNode, SelectionNode, SubscriptionOperationDefinitionNode, TypeDefinitionNode, TypeExtensionNode, TypeNode, TypeSystemDefinitionNode, TypeSystemExtensionNode, ValueNode } from './ast.js';
1
+ /** @category AST Predicates */
2
+ import type { ASTNode, ConstValueNode, DefinitionNode, ExecutableDefinitionNode, OperationDefinitionNode, SchemaCoordinateNode, SelectionNode, SubscriptionOperationDefinitionNode, TypeDefinitionNode, TypeExtensionNode, TypeNode, TypeSystemDefinitionNode, TypeSystemExtensionNode, ValueNode } from "./ast.mjs";
3
+ /**
4
+ * Returns true when the AST node is a definition node.
5
+ * @param node - The AST node to test.
6
+ * @returns True when the AST node is a definition node.
7
+ * @example
8
+ * ```ts
9
+ * import { parse, isDefinitionNode } from 'graphql/language';
10
+ *
11
+ * const document = parse('{ hello }');
12
+ *
13
+ * isDefinitionNode(document.definitions[0]); // => true
14
+ * isDefinitionNode(document); // => false
15
+ * ```
16
+ */
2
17
  export declare function isDefinitionNode(node: ASTNode): node is DefinitionNode;
18
+ /**
19
+ * Returns true when the AST node is an executable definition node.
20
+ * @param node - The AST node to test.
21
+ * @returns True when the AST node is an executable definition node.
22
+ * @example
23
+ * ```ts
24
+ * import { parse, isExecutableDefinitionNode } from 'graphql/language';
25
+ *
26
+ * const query = parse('{ hello }');
27
+ * const schema = parse('type Query { hello: String }');
28
+ *
29
+ * isExecutableDefinitionNode(query.definitions[0]); // => true
30
+ * isExecutableDefinitionNode(schema.definitions[0]); // => false
31
+ * ```
32
+ */
3
33
  export declare function isExecutableDefinitionNode(node: ASTNode): node is ExecutableDefinitionNode;
4
34
  /**
5
35
  * A type predicate for SubscriptionOperationDefinitionNode.
6
36
  * Useful anywhere that must distinguish subscription operations from
7
37
  * queries and mutations, such as the subscription execution pipeline
8
38
  * which routes events through a different code path.
39
+ * @param node - Operation definition node to test.
40
+ * @returns True when the operation definition is a subscription.
41
+ * @example
42
+ * ```ts
43
+ * import { parse, isSubscriptionOperationDefinitionNode } from 'graphql/language';
44
+ *
45
+ * const subscription = parse('subscription { greeting }').definitions[0];
46
+ * const query = parse('{ greeting }').definitions[0];
47
+ *
48
+ * isSubscriptionOperationDefinitionNode(subscription); // => true
49
+ * isSubscriptionOperationDefinitionNode(query); // => false
50
+ * ```
9
51
  */
10
52
  export declare function isSubscriptionOperationDefinitionNode(node: OperationDefinitionNode): node is SubscriptionOperationDefinitionNode;
53
+ /**
54
+ * Returns true when the AST node is a selection node.
55
+ * @param node - The AST node to test.
56
+ * @returns True when the AST node is a selection node.
57
+ * @example
58
+ * ```ts
59
+ * import { Kind, isSelectionNode } from 'graphql/language';
60
+ *
61
+ * const field = { kind: Kind.FIELD, name: { kind: Kind.NAME, value: 'hello' } };
62
+ * const document = { kind: Kind.DOCUMENT, definitions: [] };
63
+ *
64
+ * isSelectionNode(field); // => true
65
+ * isSelectionNode(document); // => false
66
+ * ```
67
+ */
11
68
  export declare function isSelectionNode(node: ASTNode): node is SelectionNode;
69
+ /**
70
+ * Returns true when the AST node is a value node.
71
+ * @param node - The AST node to test.
72
+ * @returns True when the AST node is a value node.
73
+ * @example
74
+ * ```ts
75
+ * import { parseType, parseValue, isValueNode } from 'graphql/language';
76
+ *
77
+ * const value = parseValue('[42]');
78
+ * const type = parseType('[String!]');
79
+ *
80
+ * isValueNode(value); // => true
81
+ * isValueNode(type); // => false
82
+ * ```
83
+ */
12
84
  export declare function isValueNode(node: ASTNode): node is ValueNode;
85
+ /**
86
+ * Returns true when the AST node is a constant value node.
87
+ * @param node - The AST node to test.
88
+ * @returns True when the AST node is a constant value node.
89
+ * @example
90
+ * ```ts
91
+ * import { parseConstValue, parseValue, isConstValueNode } from 'graphql/language';
92
+ *
93
+ * const value = parseConstValue('[42]');
94
+ * const variable = parseValue('$id');
95
+ *
96
+ * isConstValueNode(value); // => true
97
+ * isConstValueNode(variable); // => false
98
+ * ```
99
+ */
13
100
  export declare function isConstValueNode(node: ASTNode): node is ConstValueNode;
101
+ /**
102
+ * Returns true when the AST node is a type node.
103
+ * @param node - The AST node to test.
104
+ * @returns True when the AST node is a type node.
105
+ * @example
106
+ * ```ts
107
+ * import { parseType, parseValue, isTypeNode } from 'graphql/language';
108
+ *
109
+ * const type = parseType('[String!]');
110
+ * const value = parseValue('[42]');
111
+ *
112
+ * isTypeNode(type); // => true
113
+ * isTypeNode(value); // => false
114
+ * ```
115
+ */
14
116
  export declare function isTypeNode(node: ASTNode): node is TypeNode;
117
+ /**
118
+ * Returns true when the AST node is a type system definition node.
119
+ * @param node - The AST node to test.
120
+ * @returns True when the AST node is a type system definition node.
121
+ * @example
122
+ * ```ts
123
+ * import { parse, isTypeSystemDefinitionNode } from 'graphql/language';
124
+ *
125
+ * const schema = parse('type Query { hello: String }');
126
+ * const query = parse('{ hello }');
127
+ *
128
+ * isTypeSystemDefinitionNode(schema.definitions[0]); // => true
129
+ * isTypeSystemDefinitionNode(query.definitions[0]); // => false
130
+ * ```
131
+ */
15
132
  export declare function isTypeSystemDefinitionNode(node: ASTNode): node is TypeSystemDefinitionNode;
133
+ /**
134
+ * Returns true when the AST node is a type definition node.
135
+ * @param node - The AST node to test.
136
+ * @returns True when the AST node is a type definition node.
137
+ * @example
138
+ * ```ts
139
+ * import { parse, isTypeDefinitionNode } from 'graphql/language';
140
+ *
141
+ * const typeDefinition = parse('type Query { hello: String }');
142
+ * const directiveDefinition = parse('directive @cache on FIELD');
143
+ *
144
+ * isTypeDefinitionNode(typeDefinition.definitions[0]); // => true
145
+ * isTypeDefinitionNode(directiveDefinition.definitions[0]); // => false
146
+ * ```
147
+ */
16
148
  export declare function isTypeDefinitionNode(node: ASTNode): node is TypeDefinitionNode;
149
+ /**
150
+ * Returns true when the AST node is a type system extension node.
151
+ * @param node - The AST node to test.
152
+ * @returns True when the AST node is a type system extension node.
153
+ * @example
154
+ * ```ts
155
+ * import { parse, isTypeSystemExtensionNode } from 'graphql/language';
156
+ *
157
+ * const extension = parse('extend type Query { hello: String }');
158
+ * const definition = parse('type Query { hello: String }');
159
+ *
160
+ * isTypeSystemExtensionNode(extension.definitions[0]); // => true
161
+ * isTypeSystemExtensionNode(definition.definitions[0]); // => false
162
+ * ```
163
+ */
17
164
  export declare function isTypeSystemExtensionNode(node: ASTNode): node is TypeSystemExtensionNode;
165
+ /**
166
+ * Returns true when the AST node is a type extension node.
167
+ * @param node - The AST node to test.
168
+ * @returns True when the AST node is a type extension node.
169
+ * @example
170
+ * ```ts
171
+ * import { parse, isTypeExtensionNode } from 'graphql/language';
172
+ *
173
+ * const extension = parse('extend type Query { hello: String }');
174
+ * const schemaExtension = parse('extend schema { query: Query }');
175
+ *
176
+ * isTypeExtensionNode(extension.definitions[0]); // => true
177
+ * isTypeExtensionNode(schemaExtension.definitions[0]); // => false
178
+ * ```
179
+ */
18
180
  export declare function isTypeExtensionNode(node: ASTNode): node is TypeExtensionNode;
181
+ /**
182
+ * Returns true when the AST node is a schema coordinate node.
183
+ * @param node - The AST node to test.
184
+ * @returns True when the AST node is a schema coordinate node.
185
+ * @example
186
+ * ```ts
187
+ * import {
188
+ * parse,
189
+ * parseSchemaCoordinate,
190
+ * isSchemaCoordinateNode,
191
+ * } from 'graphql/language';
192
+ *
193
+ * const coordinate = parseSchemaCoordinate('Query.hero');
194
+ * const document = parse('{ hero }');
195
+ *
196
+ * isSchemaCoordinateNode(coordinate); // => true
197
+ * isSchemaCoordinateNode(document); // => false
198
+ * ```
199
+ */
19
200
  export declare function isSchemaCoordinateNode(node: ASTNode): node is SchemaCoordinateNode;