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":"validate.js","sourceRoot":"","sources":["../../src/type/validate.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccumulatorMap } from '../jsutils/AccumulatorMap.js';\nimport { capitalize } from '../jsutils/capitalize.js';\nimport { andList } from '../jsutils/formatList.js';\nimport { inspect } from '../jsutils/inspect.js';\nimport { invariant } from '../jsutils/invariant.js';\nimport { isIterableObject } from '../jsutils/isIterableObject.js';\nimport { isObjectLike } from '../jsutils/isObjectLike.js';\nimport { keyMap } from '../jsutils/keyMap.js';\nimport { mapValue } from '../jsutils/mapValue.js';\nimport type { Maybe } from '../jsutils/Maybe.js';\nimport type { ObjMap } from '../jsutils/ObjMap.js';\nimport { printPathArray } from '../jsutils/printPathArray.js';\n\nimport { GraphQLError } from '../error/GraphQLError.js';\n\nimport type {\n ASTNode,\n ConstValueNode,\n DirectiveNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n} from '../language/ast.js';\nimport { OperationTypeNode } from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\n\nimport { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators.js';\nimport {\n validateInputLiteral,\n validateInputValue,\n} from '../utilities/validateInputValue.js';\n\nimport type {\n GraphQLArgument,\n GraphQLDefaultInput,\n GraphQLEnumType,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInputType,\n GraphQLInterfaceType,\n GraphQLObjectType,\n GraphQLUnionType,\n} from './definition.js';\nimport {\n assertLeafType,\n getNamedType,\n isEnumType,\n isInputObjectType,\n isInputType,\n isInterfaceType,\n isListType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isOutputType,\n isRequiredArgument,\n isRequiredInputField,\n isUnionType,\n} from './definition.js';\nimport { GraphQLDeprecatedDirective, isDirective } from './directives.js';\nimport { isIntrospectionType } from './introspection.js';\nimport type { GraphQLSchema } from './schema.js';\nimport { assertSchema } from './schema.js';\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\nexport function validateSchema(\n schema: GraphQLSchema,\n): ReadonlyArray<GraphQLError> {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema);\n\n // If this Schema has already been validated, return the previous results.\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n }\n\n // Validate the schema, producing a list of errors.\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context);\n\n // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\nexport function assertValidSchema(schema: GraphQLSchema): void {\n const errors = validateSchema(schema);\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n readonly _errors: Array<GraphQLError>;\n readonly schema: GraphQLSchema;\n\n constructor(schema: GraphQLSchema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(\n message: string,\n nodes?: ReadonlyArray<Maybe<ASTNode>> | Maybe<ASTNode>,\n ): void {\n const _nodes = Array.isArray(nodes)\n ? (nodes.filter(Boolean) as ReadonlyArray<ASTNode>)\n : (nodes as Maybe<ASTNode>);\n this._errors.push(new GraphQLError(message, { nodes: _nodes }));\n }\n\n getErrors(): ReadonlyArray<GraphQLError> {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context: SchemaValidationContext): void {\n const schema = context.schema;\n\n if (schema.getQueryType() == null) {\n context.reportError('Query root type must be provided.', schema.astNode);\n }\n\n const rootTypesMap = new AccumulatorMap<\n GraphQLObjectType,\n OperationTypeNode\n >();\n for (const operationType of Object.values(OperationTypeNode)) {\n const rootType = schema.getRootType(operationType);\n\n if (rootType != null) {\n if (!isObjectType(rootType)) {\n const operationTypeStr = capitalize(operationType);\n const rootTypeStr = inspect(rootType);\n context.reportError(\n operationType === OperationTypeNode.QUERY\n ? `${operationTypeStr} root type must be Object type, it cannot be ${rootTypeStr}.`\n : `${operationTypeStr} root type must be Object type if provided, it cannot be ${rootTypeStr}.`,\n getOperationTypeNode(schema, operationType) ??\n (rootType as any).astNode,\n );\n } else {\n rootTypesMap.add(rootType, operationType);\n }\n }\n }\n\n for (const [rootType, operationTypes] of rootTypesMap) {\n if (operationTypes.length > 1) {\n const operationList = andList(operationTypes);\n context.reportError(\n `All root types must be different, \"${rootType}\" type is used as ${operationList} root types.`,\n operationTypes.map((operationType) =>\n getOperationTypeNode(schema, operationType),\n ),\n );\n }\n }\n}\n\nfunction getOperationTypeNode(\n schema: GraphQLSchema,\n operation: OperationTypeNode,\n): Maybe<ASTNode> {\n return [schema.astNode, ...schema.extensionASTNodes]\n .flatMap((schemaNode) => schemaNode?.operationTypes ?? [])\n .find((operationNode) => operationNode.operation === operation)?.type;\n}\n\nfunction validateDirectives(context: SchemaValidationContext): void {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!isDirective(directive)) {\n context.reportError(\n `Expected directive but got: ${inspect(directive)}.`,\n (directive as any)?.astNode,\n );\n continue;\n }\n\n // Ensure they are named correctly.\n validateName(context, directive);\n\n if (directive.locations.length === 0) {\n context.reportError(\n `Directive ${directive} must include 1 or more locations.`,\n directive.astNode,\n );\n }\n\n // Ensure the arguments are valid.\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg);\n\n // Ensure the type is an input type.\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of ${arg} must be Input Type ` +\n `but got: ${inspect(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n context.reportError(`Required argument ${arg} cannot be deprecated.`, [\n getDeprecatedDirectiveNode(arg.astNode),\n arg.astNode?.type,\n ]);\n }\n\n validateDefaultValue(context, arg);\n }\n }\n}\n\nfunction validateDefaultValue(\n context: SchemaValidationContext,\n inputValue: GraphQLArgument | GraphQLInputField,\n): void {\n const defaultInput = inputValue.default;\n\n if (!defaultInput) {\n return;\n }\n\n const errors: Array<[GraphQLError, ReadonlyArray<string | number>]> = [];\n validateDefaultInput(defaultInput, inputValue.type, (error, path) => {\n errors.push([error, path]);\n });\n\n if (errors.length === 0) {\n return;\n }\n\n if (!defaultInput.literal) {\n // If there were validation errors, check to see if it can be \"uncoerced\"\n // and then correctly validated. If so, report a clear error with a path\n // to resolution.\n try {\n const uncoercedValue = uncoerceDefaultValue(\n defaultInput.value,\n inputValue.type,\n );\n\n const uncoercedErrors = [];\n validateInputValue(uncoercedValue, inputValue.type, (error, path) => {\n uncoercedErrors.push([error, path]);\n });\n\n if (uncoercedErrors.length === 0) {\n context.reportError(\n `${inputValue} has invalid default value: ${inspect(\n defaultInput.value,\n )}. Did you mean: ${inspect(uncoercedValue)}?`,\n inputValue.astNode?.defaultValue,\n );\n return;\n }\n } catch (_error) {\n // ignore\n }\n }\n\n // Otherwise report the original set of errors.\n for (const [error, path] of errors) {\n context.reportError(\n `${inputValue} has invalid default value${printPathArray(path)}: ${\n error.message\n }`,\n error.nodes ?? inputValue.astNode?.defaultValue,\n );\n }\n}\n\n/**\n * @internal\n */\nexport function validateDefaultInput(\n defaultInput: GraphQLDefaultInput,\n inputType: GraphQLInputType,\n onError: (error: GraphQLError, path: ReadonlyArray<string | number>) => void,\n hideSuggestions?: Maybe<boolean>,\n): void {\n if (defaultInput.literal) {\n validateInputLiteral(\n defaultInput.literal,\n inputType,\n onError,\n undefined,\n undefined,\n hideSuggestions,\n );\n return;\n }\n validateInputValue(defaultInput.value, inputType, onError, hideSuggestions);\n}\n\n/**\n * Historically GraphQL.js allowed default values to be provided as\n * assumed-coerced \"internal\" values, however default values should be provided\n * as \"external\" pre-coerced values. `uncoerceDefaultValue()` will convert such\n * \"internal\" values to \"external\" values to display as part of validation.\n *\n * This performs the \"opposite\" of `coerceInputValue()`. Given an \"internal\"\n * coerced value, reverse the process to provide an \"external\" uncoerced value.\n */\nfunction uncoerceDefaultValue(value: unknown, type: GraphQLInputType): unknown {\n if (isNonNullType(type)) {\n return uncoerceDefaultValue(value, type.ofType);\n }\n\n if (value === null) {\n return null;\n }\n\n if (isListType(type)) {\n if (isIterableObject(value)) {\n return Array.from(value, (itemValue) =>\n uncoerceDefaultValue(itemValue, type.ofType),\n );\n }\n return [uncoerceDefaultValue(value, type.ofType)];\n }\n\n if (isInputObjectType(type)) {\n invariant(isObjectLike(value));\n const fieldDefs = type.getFields();\n return mapValue(value, (fieldValue, fieldName) => {\n invariant(fieldName in fieldDefs);\n return uncoerceDefaultValue(fieldValue, fieldDefs[fieldName].type);\n });\n }\n\n assertLeafType(type);\n\n // For most leaf types (Scalars, Enums), output value coercion (\"serialize\") is\n // the inverse of input coercion (\"parseValue\") and will produce an\n // \"external\" value. Historically, this method was also used as part of the\n // now-deprecated \"astFromValue\" to perform the same behavior.\n return type.coerceOutputValue(value);\n}\n\nfunction validateName(\n context: SchemaValidationContext,\n node: { readonly name: string; readonly astNode: Maybe<ASTNode> },\n): void {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context: SchemaValidationContext): void {\n // Ensure Input Objects do not contain non-nullable circular references.\n const validateInputObjectNonNullCircularRefs =\n createInputObjectNonNullCircularRefsValidator(context);\n const validateInputObjectDefaultValueCircularRefs =\n createInputObjectDefaultValueCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!isNamedType(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${inspect(type)}.`,\n (type as any).astNode,\n );\n continue;\n }\n\n // Ensure it is named correctly (excluding introspection types).\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type);\n\n // Ensure objects implement the interfaces they claim to.\n validateInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type);\n\n // Ensure interfaces implement the interfaces they claim to.\n validateInterfaces(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type);\n\n // Ensure Input Objects do not contain invalid field circular references.\n // Ensure Input Objects do not contain non-nullable circular references.\n validateInputObjectNonNullCircularRefs(type);\n\n // Ensure Input Objects do not contain invalid default value circular references.\n validateInputObjectDefaultValueCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n): void {\n const fields = Object.values(type.getFields());\n\n // Objects and Interfaces both must define one or more fields.\n if (fields.length === 0) {\n context.reportError(`Type ${type} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field);\n\n // Ensure the type is an output type\n if (!isOutputType(field.type)) {\n context.reportError(\n `The type of ${field} must be Output Type ` +\n `but got: ${inspect(field.type)}.`,\n field.astNode?.type,\n );\n }\n\n // Ensure the arguments are valid\n for (const arg of field.args) {\n // Ensure they are named correctly.\n validateName(context, arg);\n\n // Ensure the type is an input type\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of ${arg} must be Input Type but got: ${inspect(arg.type)}.`,\n arg.astNode?.type,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n context.reportError(`Required argument ${arg} cannot be deprecated.`, [\n getDeprecatedDirectiveNode(arg.astNode),\n arg.astNode?.type,\n ]);\n }\n\n validateDefaultValue(context, arg);\n }\n }\n}\n\nfunction validateInterfaces(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n): void {\n const ifaceTypeNames = new Set<string>();\n for (const iface of type.getInterfaces()) {\n if (!isInterfaceType(iface)) {\n context.reportError(\n `Type ${type} must only implement Interface types, ` +\n `it cannot implement ${inspect(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames.has(iface.name)) {\n context.reportError(\n `Type ${type} can only implement ${iface} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames.add(iface.name);\n\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): void {\n const typeFieldMap = type.getFields();\n\n // Assert each interface field is implemented.\n for (const ifaceField of Object.values(iface.getFields())) {\n const typeField = typeFieldMap[ifaceField.name];\n\n // Assert interface field exists on type.\n if (typeField == null) {\n context.reportError(\n `Interface field ${ifaceField} expected but ${type} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n }\n\n // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) {\n context.reportError(\n `Interface field ${ifaceField} expects type ${ifaceField.type} ` +\n `but ${typeField} is type ${typeField.type}.`,\n [ifaceField.astNode?.type, typeField.astNode?.type],\n );\n }\n\n // Assert each interface field arg is implemented.\n for (const ifaceArg of ifaceField.args) {\n const typeArg = typeField.args.find((arg) => arg.name === ifaceArg.name);\n\n // Assert interface field arg exists on object field.\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${ifaceArg} expected but ${typeField} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n }\n\n // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n if (!isEqualType(ifaceArg.type, typeArg.type)) {\n context.reportError(\n `Interface field argument ${ifaceArg} expects type ${ifaceArg.type} ` +\n `but ${typeArg} is type ${typeArg.type}.`,\n [ifaceArg.astNode?.type, typeArg.astNode?.type],\n );\n }\n }\n\n // Assert additional arguments must not be required.\n for (const typeArg of typeField.args) {\n if (isRequiredArgument(typeArg)) {\n const ifaceArg = ifaceField.args.find(\n (arg) => arg.name === typeArg.name,\n );\n if (!ifaceArg) {\n context.reportError(\n `Argument \"${typeArg}\" must not be required type \"${typeArg.type}\" ` +\n `if not provided by the Interface field \"${ifaceField}\".`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n\n // Asserts that field is not deprecated unless interface field is\n if (\n typeField.deprecationReason != null &&\n ifaceField.deprecationReason == null\n ) {\n context.reportError(\n `Interface field ${iface.name}.${ifaceField.name} is not deprecated, so ` +\n `implementation field ${type.name}.${typeField.name} must not be deprecated.`,\n [\n getDeprecatedDirectiveNode(typeField.astNode),\n typeField.astNode?.type,\n ],\n );\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): void {\n const ifaceInterfaces = type.getInterfaces();\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type} cannot implement ${iface} because it would create a circular reference.`\n : `Type ${type} must implement ${transitive} because it is implemented by ${iface}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(\n context: SchemaValidationContext,\n union: GraphQLUnionType,\n): void {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = new Set<string>();\n for (const memberType of memberTypes) {\n if (includedTypeNames.has(memberType.name)) {\n context.reportError(\n `Union type ${union} can only include type ${memberType} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n includedTypeNames.add(memberType.name);\n if (!isObjectType(memberType)) {\n context.reportError(\n `Union type ${union} can only include Object types, ` +\n `it cannot include ${inspect(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(\n context: SchemaValidationContext,\n enumType: GraphQLEnumType,\n): void {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(\n context: SchemaValidationContext,\n inputObj: GraphQLInputObjectType,\n): void {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n }\n\n // Ensure the input fields are valid\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field);\n\n // Ensure the type is an input type\n if (!isInputType(field.type)) {\n context.reportError(\n `The type of ${field} must be Input Type ` +\n `but got: ${inspect(field.type)}.`,\n field.astNode?.type,\n );\n }\n\n if (isRequiredInputField(field) && field.deprecationReason != null) {\n context.reportError(\n `Required input field ${field} cannot be deprecated.`,\n [getDeprecatedDirectiveNode(field.astNode), field.astNode?.type],\n );\n }\n\n validateDefaultValue(context, field);\n\n if (inputObj.isOneOf) {\n validateOneOfInputObjectField(inputObj, field, context);\n }\n }\n}\n\nfunction validateOneOfInputObjectField(\n type: GraphQLInputObjectType,\n field: GraphQLInputField,\n context: SchemaValidationContext,\n): void {\n if (isNonNullType(field.type)) {\n context.reportError(\n `OneOf input field ${type}.${field.name} must be nullable.`,\n field.astNode?.type,\n );\n }\n\n if (field.default !== undefined || field.defaultValue !== undefined) {\n context.reportError(\n `OneOf input field ${type}.${field.name} cannot have a default value.`,\n field.astNode,\n );\n }\n}\n\nfunction createInputObjectNonNullCircularRefsValidator(\n context: SchemaValidationContext,\n): (inputObj: GraphQLInputObjectType) => void {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedTypes = new Set<GraphQLInputObjectType>();\n\n // Array of types nodes used to produce meaningful errors\n const fieldPath: Array<{ fieldStr: string; astNode: Maybe<ASTNode> }> = [];\n\n // Position in the type path\n const fieldPathIndexByTypeName: ObjMap<number | undefined> =\n Object.create(null);\n\n return detectCycleRecursive;\n\n // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n function detectCycleRecursive(inputObj: GraphQLInputObjectType): void {\n if (visitedTypes.has(inputObj)) {\n return;\n }\n\n visitedTypes.add(inputObj);\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n\n const fields = Object.values(inputObj.getFields());\n for (const field of fields) {\n if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) {\n const fieldType = field.type.ofType;\n const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n\n fieldPath.push({\n fieldStr: `${inputObj}.${field.name}`,\n astNode: field.astNode,\n });\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n const cyclePath = fieldPath.slice(cycleIndex);\n const pathStr = cyclePath\n .map((fieldObj) => fieldObj.fieldStr)\n .join(', ');\n context.reportError(\n `Invalid circular reference. The Input Object ${fieldType} references itself ${\n cyclePath.length > 1\n ? 'via the non-null fields:'\n : 'in the non-null field'\n } ${pathStr}.`,\n cyclePath.map((fieldObj) => fieldObj.astNode),\n );\n }\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction createInputObjectDefaultValueCircularRefsValidator(\n context: SchemaValidationContext,\n): (inputObj: GraphQLInputObjectType) => void {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedFields = Object.create(null);\n\n // Array of keys for fields and default values used to produce meaningful errors.\n const fieldPath: Array<\n [fieldStr: string, defaultValue: ConstValueNode | undefined]\n > = [];\n\n // Position in the path\n const fieldPathIndex: ObjMap<number | undefined> = Object.create(null);\n\n // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n return function validateInputObjectDefaultValueCircularRefs(\n inputObj: GraphQLInputObjectType,\n ): void {\n // Start with an empty object as a way to visit every field in this input\n // object type and apply every default value.\n return detectValueDefaultValueCycle(inputObj, Object.create(null));\n };\n\n function detectValueDefaultValueCycle(\n inputObj: GraphQLInputObjectType,\n defaultValue: unknown,\n ): void {\n // If the value is a List, recursively check each entry for a cycle.\n // Otherwise, only object values can contain a cycle.\n if (isIterableObject(defaultValue)) {\n for (const itemValue of defaultValue) {\n detectValueDefaultValueCycle(inputObj, itemValue);\n }\n return;\n } else if (!isObjectLike(defaultValue)) {\n return;\n }\n\n // Check each defined field for a cycle.\n for (const field of Object.values(inputObj.getFields())) {\n const namedFieldType = getNamedType(field.type);\n\n // Only input object type fields can result in a cycle.\n if (!isInputObjectType(namedFieldType)) {\n continue;\n }\n\n if (Object.hasOwn(defaultValue, field.name)) {\n // If the provided value has this field defined, recursively check it\n // for cycles.\n detectValueDefaultValueCycle(namedFieldType, defaultValue[field.name]);\n } else {\n // Otherwise check this field's default value for cycles.\n detectFieldDefaultValueCycle(\n field,\n namedFieldType,\n `${inputObj}.${field.name}`,\n );\n }\n }\n }\n\n function detectLiteralDefaultValueCycle(\n inputObj: GraphQLInputObjectType,\n defaultValue: ConstValueNode,\n ): void {\n // If the value is a List, recursively check each entry for a cycle.\n // Otherwise, only object values can contain a cycle.\n if (defaultValue.kind === Kind.LIST) {\n for (const itemLiteral of defaultValue.values) {\n detectLiteralDefaultValueCycle(inputObj, itemLiteral);\n }\n return;\n } else if (defaultValue.kind !== Kind.OBJECT) {\n return;\n }\n\n // Check each defined field for a cycle.\n const fieldNodes = keyMap(defaultValue.fields, (field) => field.name.value);\n for (const field of Object.values(inputObj.getFields())) {\n const namedFieldType = getNamedType(field.type);\n\n // Only input object type fields can result in a cycle.\n if (!isInputObjectType(namedFieldType)) {\n continue;\n }\n\n if (Object.hasOwn(fieldNodes, field.name)) {\n // If the provided value has this field defined, recursively check it\n // for cycles.\n detectLiteralDefaultValueCycle(\n namedFieldType,\n fieldNodes[field.name].value,\n );\n } else {\n // Otherwise check this field's default value for cycles.\n detectFieldDefaultValueCycle(\n field,\n namedFieldType,\n `${inputObj}.${field.name}`,\n );\n }\n }\n }\n\n function detectFieldDefaultValueCycle(\n field: GraphQLInputField,\n fieldType: GraphQLInputObjectType,\n fieldStr: string,\n ): void {\n // Only a field with a default value can result in a cycle.\n const defaultInput = field.default;\n if (defaultInput === undefined) {\n return;\n }\n\n // Check to see if there is cycle.\n const cycleIndex = fieldPathIndex[fieldStr];\n if (cycleIndex !== undefined) {\n context.reportError(\n `Invalid circular reference. The default value of Input Object field ${fieldStr} references itself${\n cycleIndex < fieldPath.length\n ? ` via the default values of: ${fieldPath\n .slice(cycleIndex)\n .map(([stringForMessage]) => stringForMessage)\n .join(', ')}`\n : ''\n }.`,\n fieldPath.slice(cycleIndex - 1).map(([, node]) => node),\n );\n return;\n }\n\n // Recurse into this field's default value once, tracking the path.\n if (visitedFields[fieldStr] === undefined) {\n visitedFields[fieldStr] = true;\n fieldPathIndex[fieldStr] = fieldPath.push([\n fieldStr,\n field.astNode?.defaultValue,\n ]);\n if (defaultInput.literal) {\n detectLiteralDefaultValueCycle(fieldType, defaultInput.literal);\n } else {\n detectValueDefaultValueCycle(fieldType, defaultInput.value);\n }\n fieldPath.pop();\n fieldPathIndex[fieldStr] = undefined;\n }\n }\n}\n\nfunction getAllImplementsInterfaceNodes(\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): ReadonlyArray<NamedTypeNode> {\n const { astNode, extensionASTNodes } = type;\n const nodes: ReadonlyArray<\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n > = astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes;\n\n return nodes\n .flatMap((typeNode) => typeNode.interfaces ?? [])\n .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(\n union: GraphQLUnionType,\n typeName: string,\n): ReadonlyArray<NamedTypeNode> {\n const { astNode, extensionASTNodes } = union;\n const nodes: ReadonlyArray<UnionTypeDefinitionNode | UnionTypeExtensionNode> =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes;\n\n return nodes\n .flatMap((unionNode) => /* c8 ignore next */ unionNode.types ?? [])\n .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(\n definitionNode: Maybe<{\n readonly directives?: ReadonlyArray<DirectiveNode> | undefined;\n }>,\n): Maybe<DirectiveNode> {\n return definitionNode?.directives?.find(\n (node) => node.name.value === GraphQLDeprecatedDirective.name,\n );\n}\n"]}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/type/validate.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Validation */\n\nimport { AccumulatorMap } from '../jsutils/AccumulatorMap.ts';\nimport { capitalize } from '../jsutils/capitalize.ts';\nimport { andList } from '../jsutils/formatList.ts';\nimport { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport { isIterableObject } from '../jsutils/isIterableObject.ts';\nimport { isObjectLike } from '../jsutils/isObjectLike.ts';\nimport { keyMap } from '../jsutils/keyMap.ts';\nimport { mapValue } from '../jsutils/mapValue.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\nimport { printPathArray } from '../jsutils/printPathArray.ts';\n\nimport { GraphQLError } from '../error/GraphQLError.ts';\n\nimport type {\n ASTNode,\n ConstValueNode,\n DirectiveNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n} from '../language/ast.ts';\nimport { OperationTypeNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators.ts';\nimport {\n validateInputLiteral,\n validateInputValue,\n} from '../utilities/validateInputValue.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLDefaultInput,\n GraphQLEnumType,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInputType,\n GraphQLInterfaceType,\n GraphQLObjectType,\n GraphQLUnionType,\n} from './definition.ts';\nimport {\n assertLeafType,\n getNamedType,\n isEnumType,\n isInputObjectType,\n isInputType,\n isInterfaceType,\n isListType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isOutputType,\n isRequiredArgument,\n isRequiredInputField,\n isUnionType,\n} from './definition.ts';\nimport { GraphQLDeprecatedDirective, isDirective } from './directives.ts';\nimport { isIntrospectionType } from './introspection.ts';\nimport type { GraphQLSchema } from './schema.ts';\nimport { assertSchema } from './schema.ts';\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n * @param schema - GraphQL schema to use.\n * @returns Schema validation errors, or an empty array when the schema is valid.\n * @example\n * ```ts\n * import { validateSchema } from 'graphql/type';\n * import { buildSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String\n * }\n * `);\n * const errors = validateSchema(schema);\n *\n * errors; // => []\n * ```\n */\nexport function validateSchema(\n schema: GraphQLSchema,\n): ReadonlyArray<GraphQLError> {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema);\n\n // If this Schema has already been validated, return the previous results.\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n }\n\n // Validate the schema, producing a list of errors.\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context);\n\n // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n * @param schema - GraphQL schema to use.\n * @example\n * ```ts\n * import { assertValidSchema } from 'graphql/type';\n * import { buildSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String\n * }\n * `);\n *\n * assertValidSchema(schema); // does not throw\n * ```\n */\nexport function assertValidSchema(schema: GraphQLSchema): void {\n const errors = validateSchema(schema);\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n readonly _errors: Array<GraphQLError>;\n readonly schema: GraphQLSchema;\n\n constructor(schema: GraphQLSchema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(\n message: string,\n nodes?: ReadonlyArray<Maybe<ASTNode>> | Maybe<ASTNode>,\n ): void {\n const _nodes = Array.isArray(nodes)\n ? (nodes.filter(Boolean) as ReadonlyArray<ASTNode>)\n : (nodes as Maybe<ASTNode>);\n this._errors.push(new GraphQLError(message, { nodes: _nodes }));\n }\n\n getErrors(): ReadonlyArray<GraphQLError> {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context: SchemaValidationContext): void {\n const schema = context.schema;\n\n if (schema.getQueryType() == null) {\n context.reportError('Query root type must be provided.', schema.astNode);\n }\n\n const rootTypesMap = new AccumulatorMap<\n GraphQLObjectType,\n OperationTypeNode\n >();\n for (const operationType of Object.values(OperationTypeNode)) {\n const rootType = schema.getRootType(operationType);\n\n if (rootType != null) {\n if (!isObjectType(rootType)) {\n const operationTypeStr = capitalize(operationType);\n const rootTypeStr = inspect(rootType);\n context.reportError(\n operationType === OperationTypeNode.QUERY\n ? `${operationTypeStr} root type must be Object type, it cannot be ${rootTypeStr}.`\n : `${operationTypeStr} root type must be Object type if provided, it cannot be ${rootTypeStr}.`,\n getOperationTypeNode(schema, operationType) ??\n (rootType as any).astNode,\n );\n } else {\n rootTypesMap.add(rootType, operationType);\n }\n }\n }\n\n for (const [rootType, operationTypes] of rootTypesMap) {\n if (operationTypes.length > 1) {\n const operationList = andList(operationTypes);\n context.reportError(\n `All root types must be different, \"${rootType}\" type is used as ${operationList} root types.`,\n operationTypes.map((operationType) =>\n getOperationTypeNode(schema, operationType),\n ),\n );\n }\n }\n}\n\nfunction getOperationTypeNode(\n schema: GraphQLSchema,\n operation: OperationTypeNode,\n): Maybe<ASTNode> {\n return [schema.astNode, ...schema.extensionASTNodes]\n .flatMap((schemaNode) => schemaNode?.operationTypes ?? [])\n .find((operationNode) => operationNode.operation === operation)?.type;\n}\n\nfunction validateDirectives(context: SchemaValidationContext): void {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!isDirective(directive)) {\n context.reportError(\n `Expected directive but got: ${inspect(directive)}.`,\n (directive as any)?.astNode,\n );\n continue;\n }\n\n // Ensure they are named correctly.\n validateName(context, directive);\n\n if (directive.locations.length === 0) {\n context.reportError(\n `Directive ${directive} must include 1 or more locations.`,\n directive.astNode,\n );\n }\n\n // Ensure the arguments are valid.\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg);\n\n // Ensure the type is an input type.\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of ${arg} must be Input Type ` +\n `but got: ${inspect(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n context.reportError(`Required argument ${arg} cannot be deprecated.`, [\n getDeprecatedDirectiveNode(arg.astNode),\n arg.astNode?.type,\n ]);\n }\n\n validateDefaultValue(context, arg);\n }\n }\n}\n\nfunction validateDefaultValue(\n context: SchemaValidationContext,\n inputValue: GraphQLArgument | GraphQLInputField,\n): void {\n const defaultInput = inputValue.default;\n\n if (!defaultInput) {\n return;\n }\n\n const errors: Array<[GraphQLError, ReadonlyArray<string | number>]> = [];\n validateDefaultInput(defaultInput, inputValue.type, (error, path) => {\n errors.push([error, path]);\n });\n\n if (errors.length === 0) {\n return;\n }\n\n if (!defaultInput.literal) {\n // If there were validation errors, check to see if it can be \"uncoerced\"\n // and then correctly validated. If so, report a clear error with a path\n // to resolution.\n try {\n const uncoercedValue = uncoerceDefaultValue(\n defaultInput.value,\n inputValue.type,\n );\n\n const uncoercedErrors = [];\n validateInputValue(uncoercedValue, inputValue.type, (error, path) => {\n uncoercedErrors.push([error, path]);\n });\n\n if (uncoercedErrors.length === 0) {\n context.reportError(\n `${inputValue} has invalid default value: ${inspect(\n defaultInput.value,\n )}. Did you mean: ${inspect(uncoercedValue)}?`,\n inputValue.astNode?.defaultValue,\n );\n return;\n }\n } catch (_error) {\n // ignore\n }\n }\n\n // Otherwise report the original set of errors.\n for (const [error, path] of errors) {\n context.reportError(\n `${inputValue} has invalid default value${printPathArray(path)}: ${\n error.message\n }`,\n error.nodes ?? inputValue.astNode?.defaultValue,\n );\n }\n}\n\n/** @internal */\nexport function validateDefaultInput(\n defaultInput: GraphQLDefaultInput,\n inputType: GraphQLInputType,\n onError: (error: GraphQLError, path: ReadonlyArray<string | number>) => void,\n hideSuggestions?: Maybe<boolean>,\n): void {\n if (defaultInput.literal) {\n validateInputLiteral(\n defaultInput.literal,\n inputType,\n onError,\n undefined,\n undefined,\n hideSuggestions,\n );\n return;\n }\n validateInputValue(defaultInput.value, inputType, onError, hideSuggestions);\n}\n\n/**\n * Historically GraphQL.js allowed default values to be provided as\n * assumed-coerced \"internal\" values, however default values should be provided\n * as \"external\" pre-coerced values. `uncoerceDefaultValue()` will convert such\n * \"internal\" values to \"external\" values to display as part of validation.\n *\n * This performs the \"opposite\" of `coerceInputValue()`. Given an \"internal\"\n * coerced value, reverse the process to provide an \"external\" uncoerced value.\n *\n * @internal\n */\nfunction uncoerceDefaultValue(value: unknown, type: GraphQLInputType): unknown {\n if (isNonNullType(type)) {\n return uncoerceDefaultValue(value, type.ofType);\n }\n\n if (value === null) {\n return null;\n }\n\n if (isListType(type)) {\n if (isIterableObject(value)) {\n return Array.from(value, (itemValue) =>\n uncoerceDefaultValue(itemValue, type.ofType),\n );\n }\n return [uncoerceDefaultValue(value, type.ofType)];\n }\n\n if (isInputObjectType(type)) {\n invariant(isObjectLike(value));\n const fieldDefs = type.getFields();\n return mapValue(value, (fieldValue, fieldName) => {\n invariant(fieldName in fieldDefs);\n return uncoerceDefaultValue(fieldValue, fieldDefs[fieldName].type);\n });\n }\n\n assertLeafType(type);\n\n // For most leaf types (Scalars, Enums), output value coercion (\"serialize\") is\n // the inverse of input coercion (\"parseValue\") and will produce an\n // \"external\" value. Historically, this method was also used as part of the\n // now-deprecated \"astFromValue\" to perform the same behavior.\n return type.coerceOutputValue(value);\n}\n\nfunction validateName(\n context: SchemaValidationContext,\n node: { readonly name: string; readonly astNode: Maybe<ASTNode> },\n): void {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context: SchemaValidationContext): void {\n // Ensure Input Objects do not contain non-nullable circular references.\n const validateInputObjectNonNullCircularRefs =\n createInputObjectNonNullCircularRefsValidator(context);\n const validateInputObjectDefaultValueCircularRefs =\n createInputObjectDefaultValueCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!isNamedType(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${inspect(type)}.`,\n (type as any).astNode,\n );\n continue;\n }\n\n // Ensure it is named correctly (excluding introspection types).\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type);\n\n // Ensure objects implement the interfaces they claim to.\n validateInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type);\n\n // Ensure interfaces implement the interfaces they claim to.\n validateInterfaces(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type);\n\n // Ensure Input Objects do not contain invalid field circular references.\n // Ensure Input Objects do not contain non-nullable circular references.\n validateInputObjectNonNullCircularRefs(type);\n\n // Ensure Input Objects do not contain invalid default value circular references.\n validateInputObjectDefaultValueCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n): void {\n const fields = Object.values(type.getFields());\n\n // Objects and Interfaces both must define one or more fields.\n if (fields.length === 0) {\n context.reportError(`Type ${type} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field);\n\n // Ensure the type is an output type\n if (!isOutputType(field.type)) {\n context.reportError(\n `The type of ${field} must be Output Type ` +\n `but got: ${inspect(field.type)}.`,\n field.astNode?.type,\n );\n }\n\n // Ensure the arguments are valid\n for (const arg of field.args) {\n // Ensure they are named correctly.\n validateName(context, arg);\n\n // Ensure the type is an input type\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of ${arg} must be Input Type but got: ${inspect(arg.type)}.`,\n arg.astNode?.type,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n context.reportError(`Required argument ${arg} cannot be deprecated.`, [\n getDeprecatedDirectiveNode(arg.astNode),\n arg.astNode?.type,\n ]);\n }\n\n validateDefaultValue(context, arg);\n }\n }\n}\n\nfunction validateInterfaces(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n): void {\n const ifaceTypeNames = new Set<string>();\n for (const iface of type.getInterfaces()) {\n if (!isInterfaceType(iface)) {\n context.reportError(\n `Type ${type} must only implement Interface types, ` +\n `it cannot implement ${inspect(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames.has(iface.name)) {\n context.reportError(\n `Type ${type} can only implement ${iface} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames.add(iface.name);\n\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): void {\n const typeFieldMap = type.getFields();\n\n // Assert each interface field is implemented.\n for (const ifaceField of Object.values(iface.getFields())) {\n const typeField = typeFieldMap[ifaceField.name];\n\n // Assert interface field exists on type.\n if (typeField == null) {\n context.reportError(\n `Interface field ${ifaceField} expected but ${type} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n }\n\n // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) {\n context.reportError(\n `Interface field ${ifaceField} expects type ${ifaceField.type} ` +\n `but ${typeField} is type ${typeField.type}.`,\n [ifaceField.astNode?.type, typeField.astNode?.type],\n );\n }\n\n // Assert each interface field arg is implemented.\n for (const ifaceArg of ifaceField.args) {\n const typeArg = typeField.args.find((arg) => arg.name === ifaceArg.name);\n\n // Assert interface field arg exists on object field.\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${ifaceArg} expected but ${typeField} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n }\n\n // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n if (!isEqualType(ifaceArg.type, typeArg.type)) {\n context.reportError(\n `Interface field argument ${ifaceArg} expects type ${ifaceArg.type} ` +\n `but ${typeArg} is type ${typeArg.type}.`,\n [ifaceArg.astNode?.type, typeArg.astNode?.type],\n );\n }\n }\n\n // Assert additional arguments must not be required.\n for (const typeArg of typeField.args) {\n if (isRequiredArgument(typeArg)) {\n const ifaceArg = ifaceField.args.find(\n (arg) => arg.name === typeArg.name,\n );\n if (!ifaceArg) {\n context.reportError(\n `Argument \"${typeArg}\" must not be required type \"${typeArg.type}\" ` +\n `if not provided by the Interface field \"${ifaceField}\".`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n\n // Asserts that field is not deprecated unless interface field is\n if (\n typeField.deprecationReason != null &&\n ifaceField.deprecationReason == null\n ) {\n context.reportError(\n `Interface field ${iface.name}.${ifaceField.name} is not deprecated, so ` +\n `implementation field ${type.name}.${typeField.name} must not be deprecated.`,\n [\n getDeprecatedDirectiveNode(typeField.astNode),\n typeField.astNode?.type,\n ],\n );\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): void {\n const ifaceInterfaces = type.getInterfaces();\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type} cannot implement ${iface} because it would create a circular reference.`\n : `Type ${type} must implement ${transitive} because it is implemented by ${iface}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(\n context: SchemaValidationContext,\n union: GraphQLUnionType,\n): void {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = new Set<string>();\n for (const memberType of memberTypes) {\n if (includedTypeNames.has(memberType.name)) {\n context.reportError(\n `Union type ${union} can only include type ${memberType} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n includedTypeNames.add(memberType.name);\n if (!isObjectType(memberType)) {\n context.reportError(\n `Union type ${union} can only include Object types, ` +\n `it cannot include ${inspect(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(\n context: SchemaValidationContext,\n enumType: GraphQLEnumType,\n): void {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(\n context: SchemaValidationContext,\n inputObj: GraphQLInputObjectType,\n): void {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n }\n\n // Ensure the input fields are valid\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field);\n\n // Ensure the type is an input type\n if (!isInputType(field.type)) {\n context.reportError(\n `The type of ${field} must be Input Type ` +\n `but got: ${inspect(field.type)}.`,\n field.astNode?.type,\n );\n }\n\n if (isRequiredInputField(field) && field.deprecationReason != null) {\n context.reportError(\n `Required input field ${field} cannot be deprecated.`,\n [getDeprecatedDirectiveNode(field.astNode), field.astNode?.type],\n );\n }\n\n validateDefaultValue(context, field);\n\n if (inputObj.isOneOf) {\n validateOneOfInputObjectField(inputObj, field, context);\n }\n }\n}\n\nfunction validateOneOfInputObjectField(\n type: GraphQLInputObjectType,\n field: GraphQLInputField,\n context: SchemaValidationContext,\n): void {\n if (isNonNullType(field.type)) {\n context.reportError(\n `OneOf input field ${type}.${field.name} must be nullable.`,\n field.astNode?.type,\n );\n }\n\n if (field.default !== undefined || field.defaultValue !== undefined) {\n context.reportError(\n `OneOf input field ${type}.${field.name} cannot have a default value.`,\n field.astNode,\n );\n }\n}\n\nfunction createInputObjectNonNullCircularRefsValidator(\n context: SchemaValidationContext,\n): (inputObj: GraphQLInputObjectType) => void {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedTypes = new Set<GraphQLInputObjectType>();\n\n // Array of types nodes used to produce meaningful errors\n const fieldPath: Array<{ fieldStr: string; astNode: Maybe<ASTNode> }> = [];\n\n // Position in the type path\n const fieldPathIndexByTypeName: ObjMap<number | undefined> =\n Object.create(null);\n\n return detectCycleRecursive;\n\n // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n function detectCycleRecursive(inputObj: GraphQLInputObjectType): void {\n if (visitedTypes.has(inputObj)) {\n return;\n }\n\n visitedTypes.add(inputObj);\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n\n const fields = Object.values(inputObj.getFields());\n for (const field of fields) {\n if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) {\n const fieldType = field.type.ofType;\n const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n\n fieldPath.push({\n fieldStr: `${inputObj}.${field.name}`,\n astNode: field.astNode,\n });\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n const cyclePath = fieldPath.slice(cycleIndex);\n const pathStr = cyclePath\n .map((fieldObj) => fieldObj.fieldStr)\n .join(', ');\n context.reportError(\n `Invalid circular reference. The Input Object ${fieldType} references itself ${\n cyclePath.length > 1\n ? 'via the non-null fields:'\n : 'in the non-null field'\n } ${pathStr}.`,\n cyclePath.map((fieldObj) => fieldObj.astNode),\n );\n }\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction createInputObjectDefaultValueCircularRefsValidator(\n context: SchemaValidationContext,\n): (inputObj: GraphQLInputObjectType) => void {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedFields = Object.create(null);\n\n // Array of keys for fields and default values used to produce meaningful errors.\n const fieldPath: Array<\n [fieldStr: string, defaultValue: ConstValueNode | undefined]\n > = [];\n\n // Position in the path\n const fieldPathIndex: ObjMap<number | undefined> = Object.create(null);\n\n // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n return function validateInputObjectDefaultValueCircularRefs(\n inputObj: GraphQLInputObjectType,\n ): void {\n // Start with an empty object as a way to visit every field in this input\n // object type and apply every default value.\n return detectValueDefaultValueCycle(inputObj, Object.create(null));\n };\n\n function detectValueDefaultValueCycle(\n inputObj: GraphQLInputObjectType,\n defaultValue: unknown,\n ): void {\n // If the value is a List, recursively check each entry for a cycle.\n // Otherwise, only object values can contain a cycle.\n if (isIterableObject(defaultValue)) {\n for (const itemValue of defaultValue) {\n detectValueDefaultValueCycle(inputObj, itemValue);\n }\n return;\n } else if (!isObjectLike(defaultValue)) {\n return;\n }\n\n // Check each defined field for a cycle.\n for (const field of Object.values(inputObj.getFields())) {\n const namedFieldType = getNamedType(field.type);\n\n // Only input object type fields can result in a cycle.\n if (!isInputObjectType(namedFieldType)) {\n continue;\n }\n\n if (Object.hasOwn(defaultValue, field.name)) {\n // If the provided value has this field defined, recursively check it\n // for cycles.\n detectValueDefaultValueCycle(namedFieldType, defaultValue[field.name]);\n } else {\n // Otherwise check this field's default value for cycles.\n detectFieldDefaultValueCycle(\n field,\n namedFieldType,\n `${inputObj}.${field.name}`,\n );\n }\n }\n }\n\n function detectLiteralDefaultValueCycle(\n inputObj: GraphQLInputObjectType,\n defaultValue: ConstValueNode,\n ): void {\n // If the value is a List, recursively check each entry for a cycle.\n // Otherwise, only object values can contain a cycle.\n if (defaultValue.kind === Kind.LIST) {\n for (const itemLiteral of defaultValue.values) {\n detectLiteralDefaultValueCycle(inputObj, itemLiteral);\n }\n return;\n } else if (defaultValue.kind !== Kind.OBJECT) {\n return;\n }\n\n // Check each defined field for a cycle.\n const fieldNodes = keyMap(defaultValue.fields, (field) => field.name.value);\n for (const field of Object.values(inputObj.getFields())) {\n const namedFieldType = getNamedType(field.type);\n\n // Only input object type fields can result in a cycle.\n if (!isInputObjectType(namedFieldType)) {\n continue;\n }\n\n if (Object.hasOwn(fieldNodes, field.name)) {\n // If the provided value has this field defined, recursively check it\n // for cycles.\n detectLiteralDefaultValueCycle(\n namedFieldType,\n fieldNodes[field.name].value,\n );\n } else {\n // Otherwise check this field's default value for cycles.\n detectFieldDefaultValueCycle(\n field,\n namedFieldType,\n `${inputObj}.${field.name}`,\n );\n }\n }\n }\n\n function detectFieldDefaultValueCycle(\n field: GraphQLInputField,\n fieldType: GraphQLInputObjectType,\n fieldStr: string,\n ): void {\n // Only a field with a default value can result in a cycle.\n const defaultInput = field.default;\n if (defaultInput === undefined) {\n return;\n }\n\n // Check to see if there is cycle.\n const cycleIndex = fieldPathIndex[fieldStr];\n if (cycleIndex !== undefined) {\n context.reportError(\n `Invalid circular reference. The default value of Input Object field ${fieldStr} references itself${\n cycleIndex < fieldPath.length\n ? ` via the default values of: ${fieldPath\n .slice(cycleIndex)\n .map(([stringForMessage]) => stringForMessage)\n .join(', ')}`\n : ''\n }.`,\n fieldPath.slice(cycleIndex - 1).map(([, node]) => node),\n );\n return;\n }\n\n // Recurse into this field's default value once, tracking the path.\n if (visitedFields[fieldStr] === undefined) {\n visitedFields[fieldStr] = true;\n fieldPathIndex[fieldStr] = fieldPath.push([\n fieldStr,\n field.astNode?.defaultValue,\n ]);\n if (defaultInput.literal) {\n detectLiteralDefaultValueCycle(fieldType, defaultInput.literal);\n } else {\n detectValueDefaultValueCycle(fieldType, defaultInput.value);\n }\n fieldPath.pop();\n fieldPathIndex[fieldStr] = undefined;\n }\n }\n}\n\nfunction getAllImplementsInterfaceNodes(\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): ReadonlyArray<NamedTypeNode> {\n const { astNode, extensionASTNodes } = type;\n const nodes: ReadonlyArray<\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n > = astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes;\n\n return nodes\n .flatMap((typeNode) => typeNode.interfaces ?? [])\n .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(\n union: GraphQLUnionType,\n typeName: string,\n): ReadonlyArray<NamedTypeNode> {\n const { astNode, extensionASTNodes } = union;\n const nodes: ReadonlyArray<UnionTypeDefinitionNode | UnionTypeExtensionNode> =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes;\n\n return nodes\n .flatMap((unionNode) => unionNode.types ?? [])\n .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(\n definitionNode: Maybe<{\n readonly directives?: ReadonlyArray<DirectiveNode> | undefined;\n }>,\n): Maybe<DirectiveNode> {\n return definitionNode?.directives?.find(\n (node) => node.name.value === GraphQLDeprecatedDirective.name,\n );\n}\n"]}
package/type/validate.mjs CHANGED
@@ -17,35 +17,19 @@ import { assertLeafType, getNamedType, isEnumType, isInputObjectType, isInputTyp
17
17
  import { GraphQLDeprecatedDirective, isDirective } from "./directives.mjs";
18
18
  import { isIntrospectionType } from "./introspection.mjs";
19
19
  import { assertSchema } from "./schema.mjs";
20
- /**
21
- * Implements the "Type Validation" sub-sections of the specification's
22
- * "Type System" section.
23
- *
24
- * Validation runs synchronously, returning an array of encountered errors, or
25
- * an empty array if no errors were encountered and the Schema is valid.
26
- */
27
20
  export function validateSchema(schema) {
28
- // First check to ensure the provided value is in fact a GraphQLSchema.
29
21
  assertSchema(schema);
30
- // If this Schema has already been validated, return the previous results.
31
22
  if (schema.__validationErrors) {
32
23
  return schema.__validationErrors;
33
24
  }
34
- // Validate the schema, producing a list of errors.
35
25
  const context = new SchemaValidationContext(schema);
36
26
  validateRootTypes(context);
37
27
  validateDirectives(context);
38
28
  validateTypes(context);
39
- // Persist the results of validation before returning to ensure validation
40
- // does not run multiple times for this schema.
41
29
  const errors = context.getErrors();
42
30
  schema.__validationErrors = errors;
43
31
  return errors;
44
32
  }
45
- /**
46
- * Utility function which asserts a schema is valid by throwing an error if
47
- * it is invalid.
48
- */
49
33
  export function assertValidSchema(schema) {
50
34
  const errors = validateSchema(schema);
51
35
  if (errors.length !== 0) {
@@ -103,21 +87,16 @@ function getOperationTypeNode(schema, operation) {
103
87
  }
104
88
  function validateDirectives(context) {
105
89
  for (const directive of context.schema.getDirectives()) {
106
- // Ensure all directives are in fact GraphQL directives.
107
90
  if (!isDirective(directive)) {
108
91
  context.reportError(`Expected directive but got: ${inspect(directive)}.`, directive?.astNode);
109
92
  continue;
110
93
  }
111
- // Ensure they are named correctly.
112
94
  validateName(context, directive);
113
95
  if (directive.locations.length === 0) {
114
96
  context.reportError(`Directive ${directive} must include 1 or more locations.`, directive.astNode);
115
97
  }
116
- // Ensure the arguments are valid.
117
98
  for (const arg of directive.args) {
118
- // Ensure they are named correctly.
119
99
  validateName(context, arg);
120
- // Ensure the type is an input type.
121
100
  if (!isInputType(arg.type)) {
122
101
  context.reportError(`The type of ${arg} must be Input Type ` +
123
102
  `but got: ${inspect(arg.type)}.`, arg.astNode);
@@ -145,9 +124,6 @@ function validateDefaultValue(context, inputValue) {
145
124
  return;
146
125
  }
147
126
  if (!defaultInput.literal) {
148
- // If there were validation errors, check to see if it can be "uncoerced"
149
- // and then correctly validated. If so, report a clear error with a path
150
- // to resolution.
151
127
  try {
152
128
  const uncoercedValue = uncoerceDefaultValue(defaultInput.value, inputValue.type);
153
129
  const uncoercedErrors = [];
@@ -160,17 +136,12 @@ function validateDefaultValue(context, inputValue) {
160
136
  }
161
137
  }
162
138
  catch (_error) {
163
- // ignore
164
139
  }
165
140
  }
166
- // Otherwise report the original set of errors.
167
141
  for (const [error, path] of errors) {
168
142
  context.reportError(`${inputValue} has invalid default value${printPathArray(path)}: ${error.message}`, error.nodes ?? inputValue.astNode?.defaultValue);
169
143
  }
170
144
  }
171
- /**
172
- * @internal
173
- */
174
145
  export function validateDefaultInput(defaultInput, inputType, onError, hideSuggestions) {
175
146
  if (defaultInput.literal) {
176
147
  validateInputLiteral(defaultInput.literal, inputType, onError, undefined, undefined, hideSuggestions);
@@ -178,15 +149,6 @@ export function validateDefaultInput(defaultInput, inputType, onError, hideSugge
178
149
  }
179
150
  validateInputValue(defaultInput.value, inputType, onError, hideSuggestions);
180
151
  }
181
- /**
182
- * Historically GraphQL.js allowed default values to be provided as
183
- * assumed-coerced "internal" values, however default values should be provided
184
- * as "external" pre-coerced values. `uncoerceDefaultValue()` will convert such
185
- * "internal" values to "external" values to display as part of validation.
186
- *
187
- * This performs the "opposite" of `coerceInputValue()`. Given an "internal"
188
- * coerced value, reverse the process to provide an "external" uncoerced value.
189
- */
190
152
  function uncoerceDefaultValue(value, type) {
191
153
  if (isNonNullType(type)) {
192
154
  return uncoerceDefaultValue(value, type.ofType);
@@ -211,67 +173,48 @@ function uncoerceDefaultValue(value, type) {
211
173
  });
212
174
  }
213
175
  assertLeafType(type);
214
- // For most leaf types (Scalars, Enums), output value coercion ("serialize") is
215
- // the inverse of input coercion ("parseValue") and will produce an
216
- // "external" value. Historically, this method was also used as part of the
217
- // now-deprecated "astFromValue" to perform the same behavior.
218
176
  return type.coerceOutputValue(value);
219
177
  }
220
178
  function validateName(context, node) {
221
- // Ensure names are valid, however introspection types opt out.
222
179
  if (node.name.startsWith('__')) {
223
180
  context.reportError(`Name "${node.name}" must not begin with "__", which is reserved by GraphQL introspection.`, node.astNode);
224
181
  }
225
182
  }
226
183
  function validateTypes(context) {
227
- // Ensure Input Objects do not contain non-nullable circular references.
228
184
  const validateInputObjectNonNullCircularRefs = createInputObjectNonNullCircularRefsValidator(context);
229
185
  const validateInputObjectDefaultValueCircularRefs = createInputObjectDefaultValueCircularRefsValidator(context);
230
186
  const typeMap = context.schema.getTypeMap();
231
187
  for (const type of Object.values(typeMap)) {
232
- // Ensure all provided types are in fact GraphQL type.
233
188
  if (!isNamedType(type)) {
234
189
  context.reportError(`Expected GraphQL named type but got: ${inspect(type)}.`, type.astNode);
235
190
  continue;
236
191
  }
237
- // Ensure it is named correctly (excluding introspection types).
238
192
  if (!isIntrospectionType(type)) {
239
193
  validateName(context, type);
240
194
  }
241
195
  if (isObjectType(type)) {
242
- // Ensure fields are valid
243
196
  validateFields(context, type);
244
- // Ensure objects implement the interfaces they claim to.
245
197
  validateInterfaces(context, type);
246
198
  }
247
199
  else if (isInterfaceType(type)) {
248
- // Ensure fields are valid.
249
200
  validateFields(context, type);
250
- // Ensure interfaces implement the interfaces they claim to.
251
201
  validateInterfaces(context, type);
252
202
  }
253
203
  else if (isUnionType(type)) {
254
- // Ensure Unions include valid member types.
255
204
  validateUnionMembers(context, type);
256
205
  }
257
206
  else if (isEnumType(type)) {
258
- // Ensure Enums have valid values.
259
207
  validateEnumValues(context, type);
260
208
  }
261
209
  else if (isInputObjectType(type)) {
262
- // Ensure Input Object fields are valid.
263
210
  validateInputFields(context, type);
264
- // Ensure Input Objects do not contain invalid field circular references.
265
- // Ensure Input Objects do not contain non-nullable circular references.
266
211
  validateInputObjectNonNullCircularRefs(type);
267
- // Ensure Input Objects do not contain invalid default value circular references.
268
212
  validateInputObjectDefaultValueCircularRefs(type);
269
213
  }
270
214
  }
271
215
  }
272
216
  function validateFields(context, type) {
273
217
  const fields = Object.values(type.getFields());
274
- // Objects and Interfaces both must define one or more fields.
275
218
  if (fields.length === 0) {
276
219
  context.reportError(`Type ${type} must define one or more fields.`, [
277
220
  type.astNode,
@@ -279,18 +222,13 @@ function validateFields(context, type) {
279
222
  ]);
280
223
  }
281
224
  for (const field of fields) {
282
- // Ensure they are named correctly.
283
225
  validateName(context, field);
284
- // Ensure the type is an output type
285
226
  if (!isOutputType(field.type)) {
286
227
  context.reportError(`The type of ${field} must be Output Type ` +
287
228
  `but got: ${inspect(field.type)}.`, field.astNode?.type);
288
229
  }
289
- // Ensure the arguments are valid
290
230
  for (const arg of field.args) {
291
- // Ensure they are named correctly.
292
231
  validateName(context, arg);
293
- // Ensure the type is an input type
294
232
  if (!isInputType(arg.type)) {
295
233
  context.reportError(`The type of ${arg} must be Input Type but got: ${inspect(arg.type)}.`, arg.astNode?.type);
296
234
  }
@@ -327,37 +265,27 @@ function validateInterfaces(context, type) {
327
265
  }
328
266
  function validateTypeImplementsInterface(context, type, iface) {
329
267
  const typeFieldMap = type.getFields();
330
- // Assert each interface field is implemented.
331
268
  for (const ifaceField of Object.values(iface.getFields())) {
332
269
  const typeField = typeFieldMap[ifaceField.name];
333
- // Assert interface field exists on type.
334
270
  if (typeField == null) {
335
271
  context.reportError(`Interface field ${ifaceField} expected but ${type} does not provide it.`, [ifaceField.astNode, type.astNode, ...type.extensionASTNodes]);
336
272
  continue;
337
273
  }
338
- // Assert interface field type is satisfied by type field type, by being
339
- // a valid subtype. (covariant)
340
274
  if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) {
341
275
  context.reportError(`Interface field ${ifaceField} expects type ${ifaceField.type} ` +
342
276
  `but ${typeField} is type ${typeField.type}.`, [ifaceField.astNode?.type, typeField.astNode?.type]);
343
277
  }
344
- // Assert each interface field arg is implemented.
345
278
  for (const ifaceArg of ifaceField.args) {
346
279
  const typeArg = typeField.args.find((arg) => arg.name === ifaceArg.name);
347
- // Assert interface field arg exists on object field.
348
280
  if (!typeArg) {
349
281
  context.reportError(`Interface field argument ${ifaceArg} expected but ${typeField} does not provide it.`, [ifaceArg.astNode, typeField.astNode]);
350
282
  continue;
351
283
  }
352
- // Assert interface field arg type matches object field arg type.
353
- // (invariant)
354
- // TODO: change to contravariant?
355
284
  if (!isEqualType(ifaceArg.type, typeArg.type)) {
356
285
  context.reportError(`Interface field argument ${ifaceArg} expects type ${ifaceArg.type} ` +
357
286
  `but ${typeArg} is type ${typeArg.type}.`, [ifaceArg.astNode?.type, typeArg.astNode?.type]);
358
287
  }
359
288
  }
360
- // Assert additional arguments must not be required.
361
289
  for (const typeArg of typeField.args) {
362
290
  if (isRequiredArgument(typeArg)) {
363
291
  const ifaceArg = ifaceField.args.find((arg) => arg.name === typeArg.name);
@@ -367,7 +295,6 @@ function validateTypeImplementsInterface(context, type, iface) {
367
295
  }
368
296
  }
369
297
  }
370
- // Asserts that field is not deprecated unless interface field is
371
298
  if (typeField.deprecationReason != null &&
372
299
  ifaceField.deprecationReason == null) {
373
300
  context.reportError(`Interface field ${iface.name}.${ifaceField.name} is not deprecated, so ` +
@@ -415,7 +342,6 @@ function validateEnumValues(context, enumType) {
415
342
  context.reportError(`Enum type ${enumType} must define one or more values.`, [enumType.astNode, ...enumType.extensionASTNodes]);
416
343
  }
417
344
  for (const enumValue of enumValues) {
418
- // Ensure valid name.
419
345
  validateName(context, enumValue);
420
346
  }
421
347
  }
@@ -424,11 +350,8 @@ function validateInputFields(context, inputObj) {
424
350
  if (fields.length === 0) {
425
351
  context.reportError(`Input Object type ${inputObj} must define one or more fields.`, [inputObj.astNode, ...inputObj.extensionASTNodes]);
426
352
  }
427
- // Ensure the input fields are valid
428
353
  for (const field of fields) {
429
- // Ensure they are named correctly.
430
354
  validateName(context, field);
431
- // Ensure the type is an input type
432
355
  if (!isInputType(field.type)) {
433
356
  context.reportError(`The type of ${field} must be Input Type ` +
434
357
  `but got: ${inspect(field.type)}.`, field.astNode?.type);
@@ -451,18 +374,10 @@ function validateOneOfInputObjectField(type, field, context) {
451
374
  }
452
375
  }
453
376
  function createInputObjectNonNullCircularRefsValidator(context) {
454
- // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.
455
- // Tracks already visited types to maintain O(N) and to ensure that cycles
456
- // are not redundantly reported.
457
377
  const visitedTypes = new Set();
458
- // Array of types nodes used to produce meaningful errors
459
378
  const fieldPath = [];
460
- // Position in the type path
461
379
  const fieldPathIndexByTypeName = Object.create(null);
462
380
  return detectCycleRecursive;
463
- // This does a straight-forward DFS to find cycles.
464
- // It does not terminate when a cycle was found but continues to explore
465
- // the graph to find all possible cycles.
466
381
  function detectCycleRecursive(inputObj) {
467
382
  if (visitedTypes.has(inputObj)) {
468
383
  return;
@@ -497,25 +412,13 @@ function createInputObjectNonNullCircularRefsValidator(context) {
497
412
  }
498
413
  }
499
414
  function createInputObjectDefaultValueCircularRefsValidator(context) {
500
- // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.
501
- // Tracks already visited types to maintain O(N) and to ensure that cycles
502
- // are not redundantly reported.
503
415
  const visitedFields = Object.create(null);
504
- // Array of keys for fields and default values used to produce meaningful errors.
505
416
  const fieldPath = [];
506
- // Position in the path
507
417
  const fieldPathIndex = Object.create(null);
508
- // This does a straight-forward DFS to find cycles.
509
- // It does not terminate when a cycle was found but continues to explore
510
- // the graph to find all possible cycles.
511
418
  return function validateInputObjectDefaultValueCircularRefs(inputObj) {
512
- // Start with an empty object as a way to visit every field in this input
513
- // object type and apply every default value.
514
419
  return detectValueDefaultValueCycle(inputObj, Object.create(null));
515
420
  };
516
421
  function detectValueDefaultValueCycle(inputObj, defaultValue) {
517
- // If the value is a List, recursively check each entry for a cycle.
518
- // Otherwise, only object values can contain a cycle.
519
422
  if (isIterableObject(defaultValue)) {
520
423
  for (const itemValue of defaultValue) {
521
424
  detectValueDefaultValueCycle(inputObj, itemValue);
@@ -525,27 +428,20 @@ function createInputObjectDefaultValueCircularRefsValidator(context) {
525
428
  else if (!isObjectLike(defaultValue)) {
526
429
  return;
527
430
  }
528
- // Check each defined field for a cycle.
529
431
  for (const field of Object.values(inputObj.getFields())) {
530
432
  const namedFieldType = getNamedType(field.type);
531
- // Only input object type fields can result in a cycle.
532
433
  if (!isInputObjectType(namedFieldType)) {
533
434
  continue;
534
435
  }
535
436
  if (Object.hasOwn(defaultValue, field.name)) {
536
- // If the provided value has this field defined, recursively check it
537
- // for cycles.
538
437
  detectValueDefaultValueCycle(namedFieldType, defaultValue[field.name]);
539
438
  }
540
439
  else {
541
- // Otherwise check this field's default value for cycles.
542
440
  detectFieldDefaultValueCycle(field, namedFieldType, `${inputObj}.${field.name}`);
543
441
  }
544
442
  }
545
443
  }
546
444
  function detectLiteralDefaultValueCycle(inputObj, defaultValue) {
547
- // If the value is a List, recursively check each entry for a cycle.
548
- // Otherwise, only object values can contain a cycle.
549
445
  if (defaultValue.kind === Kind.LIST) {
550
446
  for (const itemLiteral of defaultValue.values) {
551
447
  detectLiteralDefaultValueCycle(inputObj, itemLiteral);
@@ -555,32 +451,25 @@ function createInputObjectDefaultValueCircularRefsValidator(context) {
555
451
  else if (defaultValue.kind !== Kind.OBJECT) {
556
452
  return;
557
453
  }
558
- // Check each defined field for a cycle.
559
454
  const fieldNodes = keyMap(defaultValue.fields, (field) => field.name.value);
560
455
  for (const field of Object.values(inputObj.getFields())) {
561
456
  const namedFieldType = getNamedType(field.type);
562
- // Only input object type fields can result in a cycle.
563
457
  if (!isInputObjectType(namedFieldType)) {
564
458
  continue;
565
459
  }
566
460
  if (Object.hasOwn(fieldNodes, field.name)) {
567
- // If the provided value has this field defined, recursively check it
568
- // for cycles.
569
461
  detectLiteralDefaultValueCycle(namedFieldType, fieldNodes[field.name].value);
570
462
  }
571
463
  else {
572
- // Otherwise check this field's default value for cycles.
573
464
  detectFieldDefaultValueCycle(field, namedFieldType, `${inputObj}.${field.name}`);
574
465
  }
575
466
  }
576
467
  }
577
468
  function detectFieldDefaultValueCycle(field, fieldType, fieldStr) {
578
- // Only a field with a default value can result in a cycle.
579
469
  const defaultInput = field.default;
580
470
  if (defaultInput === undefined) {
581
471
  return;
582
472
  }
583
- // Check to see if there is cycle.
584
473
  const cycleIndex = fieldPathIndex[fieldStr];
585
474
  if (cycleIndex !== undefined) {
586
475
  context.reportError(`Invalid circular reference. The default value of Input Object field ${fieldStr} references itself${cycleIndex < fieldPath.length
@@ -591,7 +480,6 @@ function createInputObjectDefaultValueCircularRefsValidator(context) {
591
480
  : ''}.`, fieldPath.slice(cycleIndex - 1).map(([, node]) => node));
592
481
  return;
593
482
  }
594
- // Recurse into this field's default value once, tracking the path.
595
483
  if (visitedFields[fieldStr] === undefined) {
596
484
  visitedFields[fieldStr] = true;
597
485
  fieldPathIndex[fieldStr] = fieldPath.push([
@@ -620,7 +508,7 @@ function getUnionMemberTypeNodes(union, typeName) {
620
508
  const { astNode, extensionASTNodes } = union;
621
509
  const nodes = astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes;
622
510
  return nodes
623
- .flatMap((unionNode) => /* c8 ignore next */ unionNode.types ?? [])
511
+ .flatMap((unionNode) => unionNode.types ?? [])
624
512
  .filter((typeNode) => typeNode.name.value === typeName);
625
513
  }
626
514
  function getDeprecatedDirectiveNode(definitionNode) {