graphql 17.0.0-beta.0 → 17.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (733) hide show
  1. package/__dev__/execution/buildResolveInfo.d.mts +1 -0
  2. package/__dev__/execution/buildResolveInfo.d.ts +1 -0
  3. package/__dev__/execution/buildResolveInfo.js +3 -0
  4. package/__dev__/execution/buildResolveInfo.mjs +3 -0
  5. package/devMode.js +2 -2
  6. package/devMode.js.map +1 -1
  7. package/devMode.mjs.map +1 -1
  8. package/error/GraphQLError.d.mts +4 -4
  9. package/error/GraphQLError.d.ts +4 -4
  10. package/error/GraphQLError.js +10 -11
  11. package/error/GraphQLError.js.map +1 -1
  12. package/error/GraphQLError.mjs +2 -3
  13. package/error/GraphQLError.mjs.map +1 -1
  14. package/error/ensureGraphQLError.d.mts +1 -1
  15. package/error/ensureGraphQLError.d.ts +1 -1
  16. package/error/ensureGraphQLError.js +5 -5
  17. package/error/ensureGraphQLError.js.map +1 -1
  18. package/error/ensureGraphQLError.mjs.map +1 -1
  19. package/error/index.d.mts +4 -4
  20. package/error/index.d.ts +4 -4
  21. package/error/index.js +6 -6
  22. package/error/index.js.map +1 -1
  23. package/error/index.mjs.map +1 -1
  24. package/error/locatedError.d.mts +3 -3
  25. package/error/locatedError.d.ts +3 -3
  26. package/error/locatedError.js +4 -4
  27. package/error/locatedError.js.map +1 -1
  28. package/error/locatedError.mjs.map +1 -1
  29. package/error/syntaxError.d.mts +2 -2
  30. package/error/syntaxError.d.ts +2 -2
  31. package/error/syntaxError.js +2 -2
  32. package/error/syntaxError.js.map +1 -1
  33. package/error/syntaxError.mjs.map +1 -1
  34. package/execution/AbortedGraphQLExecutionError.d.mts +1 -1
  35. package/execution/AbortedGraphQLExecutionError.d.ts +1 -1
  36. package/execution/AbortedGraphQLExecutionError.js.map +1 -1
  37. package/execution/AbortedGraphQLExecutionError.mjs.map +1 -1
  38. package/execution/AsyncWorkTracker.js +2 -2
  39. package/execution/AsyncWorkTracker.js.map +1 -1
  40. package/execution/AsyncWorkTracker.mjs.map +1 -1
  41. package/execution/Executor.d.mts +16 -17
  42. package/execution/Executor.d.ts +16 -17
  43. package/execution/Executor.js +83 -85
  44. package/execution/Executor.js.map +1 -1
  45. package/execution/Executor.mjs +3 -5
  46. package/execution/Executor.mjs.map +1 -1
  47. package/execution/ExecutorThrowingOnIncremental.d.mts +6 -6
  48. package/execution/ExecutorThrowingOnIncremental.d.ts +6 -6
  49. package/execution/ExecutorThrowingOnIncremental.js +11 -11
  50. package/execution/ExecutorThrowingOnIncremental.js.map +1 -1
  51. package/execution/ExecutorThrowingOnIncremental.mjs.map +1 -1
  52. package/execution/buildResolveInfo.d.mts +14 -0
  53. package/execution/buildResolveInfo.d.ts +14 -0
  54. package/execution/buildResolveInfo.js +24 -0
  55. package/execution/buildResolveInfo.js.map +1 -0
  56. package/execution/buildResolveInfo.mjs +21 -0
  57. package/execution/buildResolveInfo.mjs.map +1 -0
  58. package/execution/cancellablePromise.js +2 -2
  59. package/execution/cancellablePromise.js.map +1 -1
  60. package/execution/cancellablePromise.mjs.map +1 -1
  61. package/execution/collectFields.d.mts +6 -6
  62. package/execution/collectFields.d.ts +6 -6
  63. package/execution/collectFields.js +19 -19
  64. package/execution/collectFields.js.map +1 -1
  65. package/execution/collectFields.mjs.map +1 -1
  66. package/execution/collectIteratorPromises.js +2 -2
  67. package/execution/collectIteratorPromises.js.map +1 -1
  68. package/execution/collectIteratorPromises.mjs.map +1 -1
  69. package/execution/createSharedExecutionContext.d.mts +2 -2
  70. package/execution/createSharedExecutionContext.d.ts +2 -2
  71. package/execution/createSharedExecutionContext.js +2 -2
  72. package/execution/createSharedExecutionContext.js.map +1 -1
  73. package/execution/createSharedExecutionContext.mjs.map +1 -1
  74. package/execution/execute.d.mts +14 -14
  75. package/execution/execute.d.ts +14 -14
  76. package/execution/execute.js +78 -98
  77. package/execution/execute.js.map +1 -1
  78. package/execution/execute.mjs +17 -37
  79. package/execution/execute.mjs.map +1 -1
  80. package/execution/getStreamUsage.d.mts +2 -2
  81. package/execution/getStreamUsage.d.ts +2 -2
  82. package/execution/getStreamUsage.js +9 -9
  83. package/execution/getStreamUsage.js.map +1 -1
  84. package/execution/getStreamUsage.mjs.map +1 -1
  85. package/execution/getVariableSignature.d.mts +3 -3
  86. package/execution/getVariableSignature.d.ts +3 -3
  87. package/execution/getVariableSignature.js +8 -8
  88. package/execution/getVariableSignature.js.map +1 -1
  89. package/execution/getVariableSignature.mjs.map +1 -1
  90. package/execution/hooks.d.mts +2 -2
  91. package/execution/hooks.d.ts +2 -2
  92. package/execution/hooks.js.map +1 -1
  93. package/execution/hooks.mjs.map +1 -1
  94. package/execution/incremental/Computation.d.mts +1 -1
  95. package/execution/incremental/Computation.d.ts +1 -1
  96. package/execution/incremental/Computation.js +2 -2
  97. package/execution/incremental/Computation.js.map +1 -1
  98. package/execution/incremental/Computation.mjs.map +1 -1
  99. package/execution/incremental/IncrementalExecutor.d.mts +14 -14
  100. package/execution/incremental/IncrementalExecutor.d.ts +14 -14
  101. package/execution/incremental/IncrementalExecutor.js +48 -48
  102. package/execution/incremental/IncrementalExecutor.js.map +1 -1
  103. package/execution/incremental/IncrementalExecutor.mjs +3 -3
  104. package/execution/incremental/IncrementalExecutor.mjs.map +1 -1
  105. package/execution/incremental/IncrementalPublisher.d.mts +3 -3
  106. package/execution/incremental/IncrementalPublisher.d.ts +3 -3
  107. package/execution/incremental/IncrementalPublisher.js +13 -14
  108. package/execution/incremental/IncrementalPublisher.js.map +1 -1
  109. package/execution/incremental/IncrementalPublisher.mjs +1 -2
  110. package/execution/incremental/IncrementalPublisher.mjs.map +1 -1
  111. package/execution/incremental/Queue.d.mts +1 -1
  112. package/execution/incremental/Queue.d.ts +1 -1
  113. package/execution/incremental/Queue.js +26 -22
  114. package/execution/incremental/Queue.js.map +1 -1
  115. package/execution/incremental/Queue.mjs +10 -6
  116. package/execution/incremental/Queue.mjs.map +1 -1
  117. package/execution/incremental/WorkQueue.d.mts +2 -2
  118. package/execution/incremental/WorkQueue.d.ts +2 -2
  119. package/execution/incremental/WorkQueue.js +7 -7
  120. package/execution/incremental/WorkQueue.js.map +1 -1
  121. package/execution/incremental/WorkQueue.mjs.map +1 -1
  122. package/execution/incremental/buildExecutionPlan.d.mts +1 -1
  123. package/execution/incremental/buildExecutionPlan.d.ts +1 -1
  124. package/execution/incremental/buildExecutionPlan.js +4 -4
  125. package/execution/incremental/buildExecutionPlan.js.map +1 -1
  126. package/execution/incremental/buildExecutionPlan.mjs.map +1 -1
  127. package/execution/index.d.mts +8 -8
  128. package/execution/index.d.ts +8 -8
  129. package/execution/index.js +23 -22
  130. package/execution/index.js.map +1 -1
  131. package/execution/index.mjs +1 -1
  132. package/execution/index.mjs.map +1 -1
  133. package/execution/mapAsyncIterable.d.mts +1 -1
  134. package/execution/mapAsyncIterable.d.ts +1 -1
  135. package/execution/mapAsyncIterable.js +4 -4
  136. package/execution/mapAsyncIterable.js.map +1 -1
  137. package/execution/mapAsyncIterable.mjs.map +1 -1
  138. package/execution/returnIteratorCatchingErrors.js +1 -1
  139. package/execution/returnIteratorCatchingErrors.js.map +1 -1
  140. package/execution/returnIteratorCatchingErrors.mjs +1 -1
  141. package/execution/returnIteratorCatchingErrors.mjs.map +1 -1
  142. package/execution/values.d.mts +9 -9
  143. package/execution/values.d.ts +9 -9
  144. package/execution/values.js +34 -34
  145. package/execution/values.js.map +1 -1
  146. package/execution/values.mjs +2 -2
  147. package/execution/values.mjs.map +1 -1
  148. package/execution/withConcurrentAbruptClose.d.mts +1 -1
  149. package/execution/withConcurrentAbruptClose.d.ts +1 -1
  150. package/execution/withConcurrentAbruptClose.js +4 -4
  151. package/execution/withConcurrentAbruptClose.js.map +1 -1
  152. package/execution/withConcurrentAbruptClose.mjs +2 -2
  153. package/execution/withConcurrentAbruptClose.mjs.map +1 -1
  154. package/graphql.d.mts +7 -7
  155. package/graphql.d.ts +7 -7
  156. package/graphql.js +11 -11
  157. package/graphql.js.map +1 -1
  158. package/graphql.mjs.map +1 -1
  159. package/harness.d.mts +4 -4
  160. package/harness.d.ts +4 -4
  161. package/harness.js +7 -7
  162. package/harness.js.map +1 -1
  163. package/harness.mjs.map +1 -1
  164. package/index.d.mts +20 -20
  165. package/index.d.ts +20 -20
  166. package/index.js +253 -252
  167. package/index.js.map +1 -1
  168. package/index.mjs +1 -1
  169. package/index.mjs.map +1 -1
  170. package/jsutils/Path.d.mts +1 -1
  171. package/jsutils/Path.d.ts +1 -1
  172. package/jsutils/Path.js.map +1 -1
  173. package/jsutils/Path.mjs.map +1 -1
  174. package/jsutils/didYouMean.js +2 -2
  175. package/jsutils/didYouMean.js.map +1 -1
  176. package/jsutils/didYouMean.mjs.map +1 -1
  177. package/jsutils/formatList.js +2 -2
  178. package/jsutils/formatList.js.map +1 -1
  179. package/jsutils/formatList.mjs.map +1 -1
  180. package/jsutils/getBySet.js +2 -2
  181. package/jsutils/getBySet.js.map +1 -1
  182. package/jsutils/getBySet.mjs.map +1 -1
  183. package/jsutils/groupBy.js +2 -2
  184. package/jsutils/groupBy.js.map +1 -1
  185. package/jsutils/groupBy.mjs.map +1 -1
  186. package/jsutils/instanceOf.js +2 -2
  187. package/jsutils/instanceOf.js.map +1 -1
  188. package/jsutils/instanceOf.mjs.map +1 -1
  189. package/jsutils/keyMap.d.mts +1 -1
  190. package/jsutils/keyMap.d.ts +1 -1
  191. package/jsutils/keyMap.js.map +1 -1
  192. package/jsutils/keyMap.mjs.map +1 -1
  193. package/jsutils/keyValMap.d.mts +1 -1
  194. package/jsutils/keyValMap.d.ts +1 -1
  195. package/jsutils/keyValMap.js.map +1 -1
  196. package/jsutils/keyValMap.mjs.map +1 -1
  197. package/jsutils/mapValue.d.mts +1 -1
  198. package/jsutils/mapValue.d.ts +1 -1
  199. package/jsutils/mapValue.js.map +1 -1
  200. package/jsutils/mapValue.mjs.map +1 -1
  201. package/jsutils/promiseForObject.d.mts +2 -2
  202. package/jsutils/promiseForObject.d.ts +2 -2
  203. package/jsutils/promiseForObject.js.map +1 -1
  204. package/jsutils/promiseForObject.mjs.map +1 -1
  205. package/jsutils/promiseReduce.d.mts +1 -1
  206. package/jsutils/promiseReduce.d.ts +1 -1
  207. package/jsutils/promiseReduce.js +2 -2
  208. package/jsutils/promiseReduce.js.map +1 -1
  209. package/jsutils/promiseReduce.mjs.map +1 -1
  210. package/jsutils/promiseWithResolvers.d.mts +1 -1
  211. package/jsutils/promiseWithResolvers.d.ts +1 -1
  212. package/jsutils/promiseWithResolvers.js.map +1 -1
  213. package/jsutils/promiseWithResolvers.mjs.map +1 -1
  214. package/jsutils/suggestionList.js +2 -2
  215. package/jsutils/suggestionList.js.map +1 -1
  216. package/jsutils/suggestionList.mjs.map +1 -1
  217. package/jsutils/toError.js +2 -2
  218. package/jsutils/toError.js.map +1 -1
  219. package/jsutils/toError.mjs.map +1 -1
  220. package/jsutils/toObjMap.d.mts +2 -2
  221. package/jsutils/toObjMap.d.ts +2 -2
  222. package/jsutils/toObjMap.js.map +1 -1
  223. package/jsutils/toObjMap.mjs.map +1 -1
  224. package/language/KindTypeMap.d.mts +1 -1
  225. package/language/KindTypeMap.d.ts +1 -1
  226. package/language/KindTypeMap.js.map +1 -1
  227. package/language/KindTypeMap.mjs.map +1 -1
  228. package/language/ast.d.mts +12 -5
  229. package/language/ast.d.ts +12 -5
  230. package/language/ast.js +8 -1
  231. package/language/ast.js.map +1 -1
  232. package/language/ast.mjs +8 -1
  233. package/language/ast.mjs.map +1 -1
  234. package/language/blockString.js +4 -4
  235. package/language/blockString.js.map +1 -1
  236. package/language/blockString.mjs.map +1 -1
  237. package/language/directiveLocation.d.mts +2 -1
  238. package/language/directiveLocation.d.ts +2 -1
  239. package/language/directiveLocation.js +2 -1
  240. package/language/directiveLocation.js.map +1 -1
  241. package/language/directiveLocation.mjs +2 -1
  242. package/language/directiveLocation.mjs.map +1 -1
  243. package/language/index.d.mts +16 -16
  244. package/language/index.d.ts +16 -16
  245. package/language/index.js +45 -45
  246. package/language/index.js.map +1 -1
  247. package/language/index.mjs.map +1 -1
  248. package/language/kinds.d.mts +2 -2
  249. package/language/kinds.d.ts +2 -2
  250. package/language/kinds.js.map +1 -1
  251. package/language/kinds.mjs.map +1 -1
  252. package/language/kinds_.d.mts +2 -0
  253. package/language/kinds_.d.ts +2 -0
  254. package/language/kinds_.js +2 -1
  255. package/language/kinds_.js.map +1 -1
  256. package/language/kinds_.mjs +1 -0
  257. package/language/kinds_.mjs.map +1 -1
  258. package/language/lexer.d.mts +3 -3
  259. package/language/lexer.d.ts +3 -3
  260. package/language/lexer.js +67 -67
  261. package/language/lexer.js.map +1 -1
  262. package/language/lexer.mjs.map +1 -1
  263. package/language/location.d.mts +1 -1
  264. package/language/location.d.ts +1 -1
  265. package/language/location.js +2 -2
  266. package/language/location.js.map +1 -1
  267. package/language/location.mjs.map +1 -1
  268. package/language/parser.d.mts +20 -7
  269. package/language/parser.d.ts +20 -7
  270. package/language/parser.js +185 -155
  271. package/language/parser.js.map +1 -1
  272. package/language/parser.mjs +30 -0
  273. package/language/parser.mjs.map +1 -1
  274. package/language/predicates.d.mts +1 -1
  275. package/language/predicates.d.ts +1 -1
  276. package/language/predicates.js +45 -43
  277. package/language/predicates.js.map +1 -1
  278. package/language/predicates.mjs +3 -1
  279. package/language/predicates.mjs.map +1 -1
  280. package/language/printLocation.d.mts +3 -3
  281. package/language/printLocation.d.ts +3 -3
  282. package/language/printLocation.js +2 -2
  283. package/language/printLocation.js.map +1 -1
  284. package/language/printLocation.mjs.map +1 -1
  285. package/language/printer.d.mts +1 -1
  286. package/language/printer.d.ts +1 -1
  287. package/language/printer.js +10 -6
  288. package/language/printer.js.map +1 -1
  289. package/language/printer.mjs +5 -1
  290. package/language/printer.mjs.map +1 -1
  291. package/language/schemaCoordinateLexer.d.mts +3 -3
  292. package/language/schemaCoordinateLexer.d.ts +3 -3
  293. package/language/schemaCoordinateLexer.js +16 -16
  294. package/language/schemaCoordinateLexer.js.map +1 -1
  295. package/language/schemaCoordinateLexer.mjs.map +1 -1
  296. package/language/source.js +5 -5
  297. package/language/source.js.map +1 -1
  298. package/language/source.mjs.map +1 -1
  299. package/language/visitor.d.mts +2 -2
  300. package/language/visitor.d.ts +2 -2
  301. package/language/visitor.js +10 -10
  302. package/language/visitor.js.map +1 -1
  303. package/language/visitor.mjs.map +1 -1
  304. package/package.json +2 -2
  305. package/type/assertName.js +8 -8
  306. package/type/assertName.js.map +1 -1
  307. package/type/assertName.mjs.map +1 -1
  308. package/type/definition.d.mts +9 -9
  309. package/type/definition.d.ts +9 -9
  310. package/type/definition.js +94 -94
  311. package/type/definition.js.map +1 -1
  312. package/type/definition.mjs.map +1 -1
  313. package/type/directives.d.mts +11 -6
  314. package/type/directives.d.ts +11 -6
  315. package/type/directives.js +51 -46
  316. package/type/directives.js.map +1 -1
  317. package/type/directives.mjs +5 -0
  318. package/type/directives.mjs.map +1 -1
  319. package/type/index.d.mts +12 -12
  320. package/type/index.d.ts +12 -12
  321. package/type/index.js +106 -106
  322. package/type/index.js.map +1 -1
  323. package/type/index.mjs.map +1 -1
  324. package/type/introspection.d.mts +2 -2
  325. package/type/introspection.d.ts +2 -2
  326. package/type/introspection.js +123 -103
  327. package/type/introspection.js.map +1 -1
  328. package/type/introspection.mjs +25 -5
  329. package/type/introspection.mjs.map +1 -1
  330. package/type/scalars.d.mts +2 -2
  331. package/type/scalars.d.ts +2 -2
  332. package/type/scalars.js +61 -61
  333. package/type/scalars.js.map +1 -1
  334. package/type/scalars.mjs.map +1 -1
  335. package/type/schema.d.mts +7 -7
  336. package/type/schema.d.ts +7 -7
  337. package/type/schema.js +32 -32
  338. package/type/schema.js.map +1 -1
  339. package/type/schema.mjs.map +1 -1
  340. package/type/validate.d.mts +4 -4
  341. package/type/validate.d.ts +4 -4
  342. package/type/validate.js +83 -83
  343. package/type/validate.js.map +1 -1
  344. package/type/validate.mjs +1 -1
  345. package/type/validate.mjs.map +1 -1
  346. package/utilities/TypeInfo.d.mts +6 -6
  347. package/utilities/TypeInfo.d.ts +6 -6
  348. package/utilities/TypeInfo.js +61 -61
  349. package/utilities/TypeInfo.js.map +1 -1
  350. package/utilities/TypeInfo.mjs +1 -1
  351. package/utilities/TypeInfo.mjs.map +1 -1
  352. package/utilities/astFromValue.d.mts +3 -3
  353. package/utilities/astFromValue.d.ts +3 -3
  354. package/utilities/astFromValue.js +31 -33
  355. package/utilities/astFromValue.js.map +1 -1
  356. package/utilities/astFromValue.mjs +1 -3
  357. package/utilities/astFromValue.mjs.map +1 -1
  358. package/utilities/buildASTSchema.d.mts +5 -5
  359. package/utilities/buildASTSchema.d.ts +5 -5
  360. package/utilities/buildASTSchema.js +11 -10
  361. package/utilities/buildASTSchema.js.map +1 -1
  362. package/utilities/buildASTSchema.mjs +1 -0
  363. package/utilities/buildASTSchema.mjs.map +1 -1
  364. package/utilities/buildClientSchema.d.mts +3 -3
  365. package/utilities/buildClientSchema.d.ts +3 -3
  366. package/utilities/buildClientSchema.js +53 -52
  367. package/utilities/buildClientSchema.js.map +1 -1
  368. package/utilities/buildClientSchema.mjs +1 -0
  369. package/utilities/buildClientSchema.mjs.map +1 -1
  370. package/utilities/coerceInputValue.d.mts +5 -5
  371. package/utilities/coerceInputValue.d.ts +5 -5
  372. package/utilities/coerceInputValue.js +31 -31
  373. package/utilities/coerceInputValue.js.map +1 -1
  374. package/utilities/coerceInputValue.mjs.map +1 -1
  375. package/utilities/concatAST.d.mts +1 -1
  376. package/utilities/concatAST.d.ts +1 -1
  377. package/utilities/concatAST.js +2 -2
  378. package/utilities/concatAST.js.map +1 -1
  379. package/utilities/concatAST.mjs.map +1 -1
  380. package/utilities/extendSchema.d.mts +3 -3
  381. package/utilities/extendSchema.d.ts +3 -3
  382. package/utilities/extendSchema.js +92 -66
  383. package/utilities/extendSchema.js.map +1 -1
  384. package/utilities/extendSchema.mjs +27 -1
  385. package/utilities/extendSchema.mjs.map +1 -1
  386. package/utilities/findSchemaChanges.d.mts +1 -1
  387. package/utilities/findSchemaChanges.d.ts +1 -1
  388. package/utilities/findSchemaChanges.js +42 -44
  389. package/utilities/findSchemaChanges.js.map +1 -1
  390. package/utilities/findSchemaChanges.mjs +1 -3
  391. package/utilities/findSchemaChanges.mjs.map +1 -1
  392. package/utilities/getDefaultValueAST.d.mts +2 -2
  393. package/utilities/getDefaultValueAST.d.ts +2 -2
  394. package/utilities/getDefaultValueAST.js +9 -7
  395. package/utilities/getDefaultValueAST.js.map +1 -1
  396. package/utilities/getDefaultValueAST.mjs +2 -0
  397. package/utilities/getDefaultValueAST.mjs.map +1 -1
  398. package/utilities/getIntrospectionQuery.d.mts +19 -3
  399. package/utilities/getIntrospectionQuery.d.ts +19 -3
  400. package/utilities/getIntrospectionQuery.js +22 -38
  401. package/utilities/getIntrospectionQuery.js.map +1 -1
  402. package/utilities/getIntrospectionQuery.mjs +22 -38
  403. package/utilities/getIntrospectionQuery.mjs.map +1 -1
  404. package/utilities/getOperationAST.d.mts +2 -2
  405. package/utilities/getOperationAST.d.ts +2 -2
  406. package/utilities/getOperationAST.js +2 -2
  407. package/utilities/getOperationAST.js.map +1 -1
  408. package/utilities/getOperationAST.mjs.map +1 -1
  409. package/utilities/index.d.mts +28 -28
  410. package/utilities/index.d.ts +28 -28
  411. package/utilities/index.js +61 -61
  412. package/utilities/index.js.map +1 -1
  413. package/utilities/index.mjs.map +1 -1
  414. package/utilities/introspectionFromSchema.d.mts +2 -2
  415. package/utilities/introspectionFromSchema.d.ts +2 -2
  416. package/utilities/introspectionFromSchema.js +8 -7
  417. package/utilities/introspectionFromSchema.js.map +1 -1
  418. package/utilities/introspectionFromSchema.mjs +1 -0
  419. package/utilities/introspectionFromSchema.mjs.map +1 -1
  420. package/utilities/lexicographicSortSchema.d.mts +1 -1
  421. package/utilities/lexicographicSortSchema.d.ts +1 -1
  422. package/utilities/lexicographicSortSchema.js +14 -14
  423. package/utilities/lexicographicSortSchema.js.map +1 -1
  424. package/utilities/lexicographicSortSchema.mjs.map +1 -1
  425. package/utilities/mapSchemaConfig.d.mts +3 -3
  426. package/utilities/mapSchemaConfig.d.ts +3 -3
  427. package/utilities/mapSchemaConfig.js +29 -31
  428. package/utilities/mapSchemaConfig.js.map +1 -1
  429. package/utilities/mapSchemaConfig.mjs +1 -3
  430. package/utilities/mapSchemaConfig.mjs.map +1 -1
  431. package/utilities/printSchema.d.mts +3 -3
  432. package/utilities/printSchema.d.ts +3 -3
  433. package/utilities/printSchema.js +31 -32
  434. package/utilities/printSchema.js.map +1 -1
  435. package/utilities/printSchema.mjs +2 -3
  436. package/utilities/printSchema.mjs.map +1 -1
  437. package/utilities/replaceVariables.d.mts +4 -4
  438. package/utilities/replaceVariables.d.ts +4 -4
  439. package/utilities/replaceVariables.js +9 -9
  440. package/utilities/replaceVariables.js.map +1 -1
  441. package/utilities/replaceVariables.mjs.map +1 -1
  442. package/utilities/resolveSchemaCoordinate.d.mts +5 -5
  443. package/utilities/resolveSchemaCoordinate.d.ts +5 -5
  444. package/utilities/resolveSchemaCoordinate.js +23 -23
  445. package/utilities/resolveSchemaCoordinate.js.map +1 -1
  446. package/utilities/resolveSchemaCoordinate.mjs.map +1 -1
  447. package/utilities/separateOperations.d.mts +2 -2
  448. package/utilities/separateOperations.d.ts +2 -2
  449. package/utilities/separateOperations.js +7 -7
  450. package/utilities/separateOperations.js.map +1 -1
  451. package/utilities/separateOperations.mjs.map +1 -1
  452. package/utilities/sortValueNode.d.mts +1 -1
  453. package/utilities/sortValueNode.d.ts +1 -1
  454. package/utilities/sortValueNode.js +12 -12
  455. package/utilities/sortValueNode.js.map +1 -1
  456. package/utilities/sortValueNode.mjs.map +1 -1
  457. package/utilities/stripIgnoredCharacters.d.mts +1 -1
  458. package/utilities/stripIgnoredCharacters.d.ts +1 -1
  459. package/utilities/stripIgnoredCharacters.js +11 -11
  460. package/utilities/stripIgnoredCharacters.js.map +1 -1
  461. package/utilities/stripIgnoredCharacters.mjs.map +1 -1
  462. package/utilities/typeComparators.d.mts +2 -2
  463. package/utilities/typeComparators.d.ts +2 -2
  464. package/utilities/typeComparators.js +14 -14
  465. package/utilities/typeComparators.js.map +1 -1
  466. package/utilities/typeComparators.mjs.map +1 -1
  467. package/utilities/typeFromAST.d.mts +4 -4
  468. package/utilities/typeFromAST.d.ts +4 -4
  469. package/utilities/typeFromAST.js +7 -7
  470. package/utilities/typeFromAST.js.map +1 -1
  471. package/utilities/typeFromAST.mjs.map +1 -1
  472. package/utilities/typedQueryDocumentNode.d.mts +1 -1
  473. package/utilities/typedQueryDocumentNode.d.ts +1 -1
  474. package/utilities/typedQueryDocumentNode.js.map +1 -1
  475. package/utilities/typedQueryDocumentNode.mjs.map +1 -1
  476. package/utilities/validateInputValue.d.mts +6 -6
  477. package/utilities/validateInputValue.d.ts +6 -6
  478. package/utilities/validateInputValue.js +60 -60
  479. package/utilities/validateInputValue.js.map +1 -1
  480. package/utilities/validateInputValue.mjs.map +1 -1
  481. package/utilities/valueFromAST.d.mts +4 -4
  482. package/utilities/valueFromAST.d.ts +4 -4
  483. package/utilities/valueFromAST.js +20 -22
  484. package/utilities/valueFromAST.js.map +1 -1
  485. package/utilities/valueFromAST.mjs +1 -3
  486. package/utilities/valueFromAST.mjs.map +1 -1
  487. package/utilities/valueFromASTUntyped.d.mts +3 -3
  488. package/utilities/valueFromASTUntyped.d.ts +3 -3
  489. package/utilities/valueFromASTUntyped.js +12 -12
  490. package/utilities/valueFromASTUntyped.js.map +1 -1
  491. package/utilities/valueFromASTUntyped.mjs.map +1 -1
  492. package/utilities/valueToLiteral.d.mts +2 -2
  493. package/utilities/valueToLiteral.d.ts +2 -2
  494. package/utilities/valueToLiteral.js +30 -30
  495. package/utilities/valueToLiteral.js.map +1 -1
  496. package/utilities/valueToLiteral.mjs.map +1 -1
  497. package/validation/ValidationContext.d.mts +9 -9
  498. package/validation/ValidationContext.d.ts +9 -9
  499. package/validation/ValidationContext.js +8 -8
  500. package/validation/ValidationContext.js.map +1 -1
  501. package/validation/ValidationContext.mjs.map +1 -1
  502. package/validation/index.d.mts +46 -46
  503. package/validation/index.d.ts +46 -46
  504. package/validation/index.js +91 -91
  505. package/validation/index.js.map +1 -1
  506. package/validation/index.mjs.map +1 -1
  507. package/validation/rules/DeferStreamDirectiveLabelRule.d.mts +2 -2
  508. package/validation/rules/DeferStreamDirectiveLabelRule.d.ts +2 -2
  509. package/validation/rules/DeferStreamDirectiveLabelRule.js +9 -9
  510. package/validation/rules/DeferStreamDirectiveLabelRule.js.map +1 -1
  511. package/validation/rules/DeferStreamDirectiveLabelRule.mjs.map +1 -1
  512. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +2 -2
  513. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +2 -2
  514. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js +8 -8
  515. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
  516. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
  517. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.mts +2 -2
  518. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +2 -2
  519. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js +14 -14
  520. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js.map +1 -1
  521. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs.map +1 -1
  522. package/validation/rules/ExecutableDefinitionsRule.d.mts +2 -2
  523. package/validation/rules/ExecutableDefinitionsRule.d.ts +2 -2
  524. package/validation/rules/ExecutableDefinitionsRule.js +7 -7
  525. package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
  526. package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
  527. package/validation/rules/FieldsOnCorrectTypeRule.d.mts +2 -2
  528. package/validation/rules/FieldsOnCorrectTypeRule.d.ts +2 -2
  529. package/validation/rules/FieldsOnCorrectTypeRule.js +14 -14
  530. package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
  531. package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
  532. package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +2 -2
  533. package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +2 -2
  534. package/validation/rules/FragmentsOnCompositeTypesRule.js +12 -12
  535. package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
  536. package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
  537. package/validation/rules/KnownArgumentNamesRule.d.mts +2 -2
  538. package/validation/rules/KnownArgumentNamesRule.d.ts +2 -2
  539. package/validation/rules/KnownArgumentNamesRule.js +16 -16
  540. package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
  541. package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
  542. package/validation/rules/KnownDirectivesRule.d.mts +2 -2
  543. package/validation/rules/KnownDirectivesRule.d.ts +2 -2
  544. package/validation/rules/KnownDirectivesRule.js +67 -64
  545. package/validation/rules/KnownDirectivesRule.js.map +1 -1
  546. package/validation/rules/KnownDirectivesRule.mjs +4 -1
  547. package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
  548. package/validation/rules/KnownFragmentNamesRule.d.mts +2 -2
  549. package/validation/rules/KnownFragmentNamesRule.d.ts +2 -2
  550. package/validation/rules/KnownFragmentNamesRule.js +2 -2
  551. package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
  552. package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
  553. package/validation/rules/KnownOperationTypesRule.d.mts +2 -2
  554. package/validation/rules/KnownOperationTypesRule.d.ts +2 -2
  555. package/validation/rules/KnownOperationTypesRule.js +2 -2
  556. package/validation/rules/KnownOperationTypesRule.js.map +1 -1
  557. package/validation/rules/KnownOperationTypesRule.mjs.map +1 -1
  558. package/validation/rules/KnownTypeNamesRule.d.mts +2 -2
  559. package/validation/rules/KnownTypeNamesRule.d.ts +2 -2
  560. package/validation/rules/KnownTypeNamesRule.js +11 -11
  561. package/validation/rules/KnownTypeNamesRule.js.map +1 -1
  562. package/validation/rules/KnownTypeNamesRule.mjs.map +1 -1
  563. package/validation/rules/LoneAnonymousOperationRule.d.mts +2 -2
  564. package/validation/rules/LoneAnonymousOperationRule.d.ts +2 -2
  565. package/validation/rules/LoneAnonymousOperationRule.js +4 -4
  566. package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
  567. package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
  568. package/validation/rules/LoneSchemaDefinitionRule.d.mts +2 -2
  569. package/validation/rules/LoneSchemaDefinitionRule.d.ts +2 -2
  570. package/validation/rules/LoneSchemaDefinitionRule.js +3 -3
  571. package/validation/rules/LoneSchemaDefinitionRule.js.map +1 -1
  572. package/validation/rules/LoneSchemaDefinitionRule.mjs.map +1 -1
  573. package/validation/rules/MaxIntrospectionDepthRule.d.mts +2 -2
  574. package/validation/rules/MaxIntrospectionDepthRule.d.ts +2 -2
  575. package/validation/rules/MaxIntrospectionDepthRule.js +5 -5
  576. package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
  577. package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
  578. package/validation/rules/NoFragmentCyclesRule.d.mts +2 -2
  579. package/validation/rules/NoFragmentCyclesRule.d.ts +2 -2
  580. package/validation/rules/NoFragmentCyclesRule.js +2 -2
  581. package/validation/rules/NoFragmentCyclesRule.js.map +1 -1
  582. package/validation/rules/NoFragmentCyclesRule.mjs.map +1 -1
  583. package/validation/rules/NoUndefinedVariablesRule.d.mts +2 -2
  584. package/validation/rules/NoUndefinedVariablesRule.d.ts +2 -2
  585. package/validation/rules/NoUndefinedVariablesRule.js +2 -2
  586. package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
  587. package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
  588. package/validation/rules/NoUnusedFragmentsRule.d.mts +2 -2
  589. package/validation/rules/NoUnusedFragmentsRule.d.ts +2 -2
  590. package/validation/rules/NoUnusedFragmentsRule.js +2 -2
  591. package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
  592. package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
  593. package/validation/rules/NoUnusedVariablesRule.d.mts +2 -2
  594. package/validation/rules/NoUnusedVariablesRule.d.ts +2 -2
  595. package/validation/rules/NoUnusedVariablesRule.js +3 -3
  596. package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
  597. package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
  598. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +2 -2
  599. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +2 -2
  600. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +31 -31
  601. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
  602. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
  603. package/validation/rules/PossibleFragmentSpreadsRule.d.mts +2 -2
  604. package/validation/rules/PossibleFragmentSpreadsRule.d.ts +2 -2
  605. package/validation/rules/PossibleFragmentSpreadsRule.js +17 -17
  606. package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
  607. package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
  608. package/validation/rules/PossibleTypeExtensionsRule.d.mts +2 -2
  609. package/validation/rules/PossibleTypeExtensionsRule.d.ts +2 -2
  610. package/validation/rules/PossibleTypeExtensionsRule.js +40 -42
  611. package/validation/rules/PossibleTypeExtensionsRule.js.map +1 -1
  612. package/validation/rules/PossibleTypeExtensionsRule.mjs +2 -4
  613. package/validation/rules/PossibleTypeExtensionsRule.mjs.map +1 -1
  614. package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +2 -2
  615. package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +2 -2
  616. package/validation/rules/ProvidedRequiredArgumentsRule.js +20 -20
  617. package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
  618. package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
  619. package/validation/rules/ScalarLeafsRule.d.mts +2 -2
  620. package/validation/rules/ScalarLeafsRule.d.ts +2 -2
  621. package/validation/rules/ScalarLeafsRule.js +10 -10
  622. package/validation/rules/ScalarLeafsRule.js.map +1 -1
  623. package/validation/rules/ScalarLeafsRule.mjs.map +1 -1
  624. package/validation/rules/SingleFieldSubscriptionsRule.d.mts +2 -2
  625. package/validation/rules/SingleFieldSubscriptionsRule.d.ts +2 -2
  626. package/validation/rules/SingleFieldSubscriptionsRule.js +8 -8
  627. package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
  628. package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
  629. package/validation/rules/StreamDirectiveOnListFieldRule.d.mts +2 -2
  630. package/validation/rules/StreamDirectiveOnListFieldRule.d.ts +2 -2
  631. package/validation/rules/StreamDirectiveOnListFieldRule.js +7 -7
  632. package/validation/rules/StreamDirectiveOnListFieldRule.js.map +1 -1
  633. package/validation/rules/StreamDirectiveOnListFieldRule.mjs.map +1 -1
  634. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.mts +2 -2
  635. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +2 -2
  636. package/validation/rules/UniqueArgumentDefinitionNamesRule.js +4 -4
  637. package/validation/rules/UniqueArgumentDefinitionNamesRule.js.map +1 -1
  638. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs.map +1 -1
  639. package/validation/rules/UniqueArgumentNamesRule.d.mts +2 -2
  640. package/validation/rules/UniqueArgumentNamesRule.d.ts +2 -2
  641. package/validation/rules/UniqueArgumentNamesRule.js +4 -4
  642. package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
  643. package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
  644. package/validation/rules/UniqueDirectiveNamesRule.d.mts +2 -2
  645. package/validation/rules/UniqueDirectiveNamesRule.d.ts +2 -2
  646. package/validation/rules/UniqueDirectiveNamesRule.js +3 -3
  647. package/validation/rules/UniqueDirectiveNamesRule.js.map +1 -1
  648. package/validation/rules/UniqueDirectiveNamesRule.mjs.map +1 -1
  649. package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +2 -2
  650. package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +2 -2
  651. package/validation/rules/UniqueDirectivesPerLocationRule.js +20 -10
  652. package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
  653. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +10 -0
  654. package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
  655. package/validation/rules/UniqueEnumValueNamesRule.d.mts +2 -2
  656. package/validation/rules/UniqueEnumValueNamesRule.d.ts +2 -2
  657. package/validation/rules/UniqueEnumValueNamesRule.js +5 -5
  658. package/validation/rules/UniqueEnumValueNamesRule.js.map +1 -1
  659. package/validation/rules/UniqueEnumValueNamesRule.mjs.map +1 -1
  660. package/validation/rules/UniqueFieldDefinitionNamesRule.d.mts +2 -2
  661. package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +2 -2
  662. package/validation/rules/UniqueFieldDefinitionNamesRule.js +5 -5
  663. package/validation/rules/UniqueFieldDefinitionNamesRule.js.map +1 -1
  664. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs.map +1 -1
  665. package/validation/rules/UniqueFragmentNamesRule.d.mts +2 -2
  666. package/validation/rules/UniqueFragmentNamesRule.d.ts +2 -2
  667. package/validation/rules/UniqueFragmentNamesRule.js +2 -2
  668. package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
  669. package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
  670. package/validation/rules/UniqueInputFieldNamesRule.d.mts +2 -2
  671. package/validation/rules/UniqueInputFieldNamesRule.d.ts +2 -2
  672. package/validation/rules/UniqueInputFieldNamesRule.js +4 -4
  673. package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
  674. package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
  675. package/validation/rules/UniqueOperationNamesRule.d.mts +2 -2
  676. package/validation/rules/UniqueOperationNamesRule.d.ts +2 -2
  677. package/validation/rules/UniqueOperationNamesRule.js +2 -2
  678. package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
  679. package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
  680. package/validation/rules/UniqueOperationTypesRule.d.mts +2 -2
  681. package/validation/rules/UniqueOperationTypesRule.d.ts +2 -2
  682. package/validation/rules/UniqueOperationTypesRule.js +3 -3
  683. package/validation/rules/UniqueOperationTypesRule.js.map +1 -1
  684. package/validation/rules/UniqueOperationTypesRule.mjs.map +1 -1
  685. package/validation/rules/UniqueTypeNamesRule.d.mts +2 -2
  686. package/validation/rules/UniqueTypeNamesRule.d.ts +2 -2
  687. package/validation/rules/UniqueTypeNamesRule.js +3 -3
  688. package/validation/rules/UniqueTypeNamesRule.js.map +1 -1
  689. package/validation/rules/UniqueTypeNamesRule.mjs.map +1 -1
  690. package/validation/rules/UniqueVariableNamesRule.d.mts +2 -2
  691. package/validation/rules/UniqueVariableNamesRule.d.ts +2 -2
  692. package/validation/rules/UniqueVariableNamesRule.js +4 -4
  693. package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
  694. package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
  695. package/validation/rules/ValuesOfCorrectTypeRule.d.mts +2 -2
  696. package/validation/rules/ValuesOfCorrectTypeRule.d.ts +2 -2
  697. package/validation/rules/ValuesOfCorrectTypeRule.js +2 -2
  698. package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
  699. package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
  700. package/validation/rules/VariablesAreInputTypesRule.d.mts +2 -2
  701. package/validation/rules/VariablesAreInputTypesRule.d.ts +2 -2
  702. package/validation/rules/VariablesAreInputTypesRule.js +8 -8
  703. package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
  704. package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
  705. package/validation/rules/VariablesInAllowedPositionRule.d.mts +2 -2
  706. package/validation/rules/VariablesInAllowedPositionRule.d.ts +2 -2
  707. package/validation/rules/VariablesInAllowedPositionRule.js +14 -14
  708. package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
  709. package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
  710. package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +2 -2
  711. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +2 -2
  712. package/validation/rules/custom/NoDeprecatedCustomRule.js +8 -8
  713. package/validation/rules/custom/NoDeprecatedCustomRule.js.map +1 -1
  714. package/validation/rules/custom/NoDeprecatedCustomRule.mjs.map +1 -1
  715. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.mts +2 -2
  716. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +2 -2
  717. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +6 -6
  718. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
  719. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
  720. package/validation/specifiedRules.d.mts +1 -1
  721. package/validation/specifiedRules.d.ts +1 -1
  722. package/validation/specifiedRules.js +87 -87
  723. package/validation/specifiedRules.js.map +1 -1
  724. package/validation/specifiedRules.mjs.map +1 -1
  725. package/validation/validate.d.mts +5 -5
  726. package/validation/validate.d.ts +5 -5
  727. package/validation/validate.js +19 -19
  728. package/validation/validate.js.map +1 -1
  729. package/validation/validate.mjs.map +1 -1
  730. package/version.js +2 -2
  731. package/version.js.map +1 -1
  732. package/version.mjs +2 -2
  733. package/version.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"valueFromASTUntyped.js","sourceRoot":"","sources":["../../src/utilities/valueFromASTUntyped.ts"],"names":[],"mappings":";;AAuBA,kDA4BC;AAnDD,0DAAoD;AAKpD,mDAA4C;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CACjC,SAAoB,EACpB,SAAkC;IAElC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,eAAI,CAAC,IAAI;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,eAAI,CAAC,GAAG;YACX,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,eAAI,CAAC,KAAK;YACb,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,eAAI,CAAC,MAAM,CAAC;QACjB,KAAK,eAAI,CAAC,IAAI,CAAC;QACf,KAAK,eAAI,CAAC,OAAO;YACf,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,KAAK,eAAI,CAAC,IAAI;YACZ,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CACrC,CAAC;QACJ,KAAK,eAAI,CAAC,MAAM;YACd,OAAO,IAAA,wBAAS,EACd,SAAS,CAAC,MAAM,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CACvD,CAAC;QACJ,KAAK,eAAI,CAAC,QAAQ;YAChB,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC","sourcesContent":["import { keyValMap } from '../jsutils/keyValMap.js';\nimport type { Maybe } from '../jsutils/Maybe.js';\nimport type { ObjMap } from '../jsutils/ObjMap.js';\n\nimport type { ValueNode } from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * No type is provided. The resulting JavaScript value will reflect the\n * provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\nexport function valueFromASTUntyped(\n valueNode: ValueNode,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n case Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n case Kind.OBJECT:\n return keyValMap(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n case Kind.VARIABLE:\n return variables?.[valueNode.name.value];\n }\n}\n"]}
1
+ {"version":3,"file":"valueFromASTUntyped.js","sourceRoot":"","sources":["../../src/utilities/valueFromASTUntyped.ts"],"names":[],"mappings":";;AAuBA,kDA4BC;AAnDD,0DAAoD;AAKpD,mDAA4C;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CACjC,SAAoB,EACpB,SAAkC;IAElC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,eAAI,CAAC,IAAI;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,eAAI,CAAC,GAAG;YACX,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,eAAI,CAAC,KAAK;YACb,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,eAAI,CAAC,MAAM,CAAC;QACjB,KAAK,eAAI,CAAC,IAAI,CAAC;QACf,KAAK,eAAI,CAAC,OAAO;YACf,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,KAAK,eAAI,CAAC,IAAI;YACZ,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CACrC,CAAC;QACJ,KAAK,eAAI,CAAC,MAAM;YACd,OAAO,IAAA,wBAAS,EACd,SAAS,CAAC,MAAM,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CACvD,CAAC;QACJ,KAAK,eAAI,CAAC,QAAQ;YAChB,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC","sourcesContent":["import { keyValMap } from '../jsutils/keyValMap.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\n\nimport type { ValueNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * No type is provided. The resulting JavaScript value will reflect the\n * provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\nexport function valueFromASTUntyped(\n valueNode: ValueNode,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n case Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n case Kind.OBJECT:\n return keyValMap(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n case Kind.VARIABLE:\n return variables?.[valueNode.name.value];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"valueFromASTUntyped.js","sourceRoot":"","sources":["../../src/utilities/valueFromASTUntyped.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AAKpD,OAAO,EAAE,IAAI,EAAE,8BAA6B;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAoB,EACpB,SAAkC;IAElC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,IAAI,CAAC,GAAG;YACX,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,KAAK;YACb,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,MAAM,CAAC;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,OAAO;YACf,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CACrC,CAAC;QACJ,KAAK,IAAI,CAAC,MAAM;YACd,OAAO,SAAS,CACd,SAAS,CAAC,MAAM,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CACvD,CAAC;QACJ,KAAK,IAAI,CAAC,QAAQ;YAChB,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC","sourcesContent":["import { keyValMap } from '../jsutils/keyValMap.js';\nimport type { Maybe } from '../jsutils/Maybe.js';\nimport type { ObjMap } from '../jsutils/ObjMap.js';\n\nimport type { ValueNode } from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * No type is provided. The resulting JavaScript value will reflect the\n * provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\nexport function valueFromASTUntyped(\n valueNode: ValueNode,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n case Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n case Kind.OBJECT:\n return keyValMap(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n case Kind.VARIABLE:\n return variables?.[valueNode.name.value];\n }\n}\n"]}
1
+ {"version":3,"file":"valueFromASTUntyped.js","sourceRoot":"","sources":["../../src/utilities/valueFromASTUntyped.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AAKpD,OAAO,EAAE,IAAI,EAAE,8BAA6B;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAoB,EACpB,SAAkC;IAElC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,IAAI,CAAC,GAAG;YACX,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,KAAK;YACb,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,MAAM,CAAC;QACjB,KAAK,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,OAAO;YACf,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CACrC,CAAC;QACJ,KAAK,IAAI,CAAC,MAAM;YACd,OAAO,SAAS,CACd,SAAS,CAAC,MAAM,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CACvD,CAAC;QACJ,KAAK,IAAI,CAAC,QAAQ;YAChB,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC","sourcesContent":["import { keyValMap } from '../jsutils/keyValMap.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\n\nimport type { ValueNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * No type is provided. The resulting JavaScript value will reflect the\n * provided GraphQL value AST.\n *\n * | GraphQL Value | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String / Enum | String |\n * | Int / Float | Number |\n * | Null | null |\n *\n */\nexport function valueFromASTUntyped(\n valueNode: ValueNode,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n switch (valueNode.kind) {\n case Kind.NULL:\n return null;\n case Kind.INT:\n return parseInt(valueNode.value, 10);\n case Kind.FLOAT:\n return parseFloat(valueNode.value);\n case Kind.STRING:\n case Kind.ENUM:\n case Kind.BOOLEAN:\n return valueNode.value;\n case Kind.LIST:\n return valueNode.values.map((node) =>\n valueFromASTUntyped(node, variables),\n );\n case Kind.OBJECT:\n return keyValMap(\n valueNode.fields,\n (field) => field.name.value,\n (field) => valueFromASTUntyped(field.value, variables),\n );\n case Kind.VARIABLE:\n return variables?.[valueNode.name.value];\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { ConstValueNode } from '../language/ast.js';
2
- import type { GraphQLInputType } from '../type/definition.js';
1
+ import type { ConstValueNode } from "../language/ast.mjs";
2
+ import type { GraphQLInputType } from "../type/definition.mjs";
3
3
  /**
4
4
  * Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.
5
5
  *
@@ -1,5 +1,5 @@
1
- import type { ConstValueNode } from '../language/ast.js';
2
- import type { GraphQLInputType } from '../type/definition.js';
1
+ import type { ConstValueNode } from "../language/ast.js";
2
+ import type { GraphQLInputType } from "../type/definition.js";
3
3
  /**
4
4
  * Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.
5
5
  *
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.valueToLiteral = valueToLiteral;
4
4
  exports.defaultScalarValueToLiteral = defaultScalarValueToLiteral;
5
- const inspect_js_1 = require("../jsutils/inspect.js");
6
- const isIterableObject_js_1 = require("../jsutils/isIterableObject.js");
7
- const isObjectLike_js_1 = require("../jsutils/isObjectLike.js");
8
- const kinds_js_1 = require("../language/kinds.js");
9
- const definition_js_1 = require("../type/definition.js");
5
+ const inspect_ts_1 = require("../jsutils/inspect.js");
6
+ const isIterableObject_ts_1 = require("../jsutils/isIterableObject.js");
7
+ const isObjectLike_ts_1 = require("../jsutils/isObjectLike.js");
8
+ const kinds_ts_1 = require("../language/kinds.js");
9
+ const definition_ts_1 = require("../type/definition.js");
10
10
  /**
11
11
  * Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.
12
12
  *
@@ -20,7 +20,7 @@ const definition_js_1 = require("../type/definition.js");
20
20
  * value.
21
21
  */
22
22
  function valueToLiteral(value, type) {
23
- if ((0, definition_js_1.isNonNullType)(type)) {
23
+ if ((0, definition_ts_1.isNonNullType)(type)) {
24
24
  if (value == null) {
25
25
  return; // Invalid: intentionally return no value.
26
26
  }
@@ -28,10 +28,10 @@ function valueToLiteral(value, type) {
28
28
  }
29
29
  // Like JSON, a null literal is produced for both null and undefined.
30
30
  if (value == null) {
31
- return { kind: kinds_js_1.Kind.NULL };
31
+ return { kind: kinds_ts_1.Kind.NULL };
32
32
  }
33
- if ((0, definition_js_1.isListType)(type)) {
34
- if (!(0, isIterableObject_js_1.isIterableObject)(value)) {
33
+ if ((0, definition_ts_1.isListType)(type)) {
34
+ if (!(0, isIterableObject_ts_1.isIterableObject)(value)) {
35
35
  return valueToLiteral(value, type.ofType);
36
36
  }
37
37
  const values = [];
@@ -42,10 +42,10 @@ function valueToLiteral(value, type) {
42
42
  }
43
43
  values.push(itemNode);
44
44
  }
45
- return { kind: kinds_js_1.Kind.LIST, values };
45
+ return { kind: kinds_ts_1.Kind.LIST, values };
46
46
  }
47
- if ((0, definition_js_1.isInputObjectType)(type)) {
48
- if (!(0, isObjectLike_js_1.isObjectLike)(value)) {
47
+ if ((0, definition_ts_1.isInputObjectType)(type)) {
48
+ if (!(0, isObjectLike_ts_1.isObjectLike)(value)) {
49
49
  return; // Invalid: intentionally return no value.
50
50
  }
51
51
  const fields = [];
@@ -57,7 +57,7 @@ function valueToLiteral(value, type) {
57
57
  for (const field of Object.values(type.getFields())) {
58
58
  const fieldValue = value[field.name];
59
59
  if (fieldValue === undefined) {
60
- if ((0, definition_js_1.isRequiredInputField)(field)) {
60
+ if ((0, definition_ts_1.isRequiredInputField)(field)) {
61
61
  return; // Invalid: intentionally return no value.
62
62
  }
63
63
  }
@@ -67,15 +67,15 @@ function valueToLiteral(value, type) {
67
67
  return; // Invalid: intentionally return no value.
68
68
  }
69
69
  fields.push({
70
- kind: kinds_js_1.Kind.OBJECT_FIELD,
71
- name: { kind: kinds_js_1.Kind.NAME, value: field.name },
70
+ kind: kinds_ts_1.Kind.OBJECT_FIELD,
71
+ name: { kind: kinds_ts_1.Kind.NAME, value: field.name },
72
72
  value: fieldNode,
73
73
  });
74
74
  }
75
75
  }
76
- return { kind: kinds_js_1.Kind.OBJECT, fields };
76
+ return { kind: kinds_ts_1.Kind.OBJECT, fields };
77
77
  }
78
- const leafType = (0, definition_js_1.assertLeafType)(type);
78
+ const leafType = (0, definition_ts_1.assertLeafType)(type);
79
79
  if (leafType.valueToLiteral) {
80
80
  try {
81
81
  return leafType.valueToLiteral(value);
@@ -104,31 +104,31 @@ function valueToLiteral(value, type) {
104
104
  function defaultScalarValueToLiteral(value) {
105
105
  // Like JSON, a null literal is produced for both null and undefined.
106
106
  if (value == null) {
107
- return { kind: kinds_js_1.Kind.NULL };
107
+ return { kind: kinds_ts_1.Kind.NULL };
108
108
  }
109
109
  // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
110
110
  switch (typeof value) {
111
111
  case 'boolean':
112
- return { kind: kinds_js_1.Kind.BOOLEAN, value };
112
+ return { kind: kinds_ts_1.Kind.BOOLEAN, value };
113
113
  case 'string':
114
- return { kind: kinds_js_1.Kind.STRING, value, block: false };
114
+ return { kind: kinds_ts_1.Kind.STRING, value, block: false };
115
115
  case 'bigint':
116
- return { kind: kinds_js_1.Kind.INT, value: value.toString() };
116
+ return { kind: kinds_ts_1.Kind.INT, value: value.toString() };
117
117
  case 'number': {
118
118
  if (!Number.isFinite(value)) {
119
119
  // Like JSON, a null literal is produced for non-finite values.
120
- return { kind: kinds_js_1.Kind.NULL };
120
+ return { kind: kinds_ts_1.Kind.NULL };
121
121
  }
122
122
  const stringValue = String(value);
123
123
  // Will parse as an IntValue.
124
124
  return /^-?(?:0|[1-9][0-9]*)$/.test(stringValue)
125
- ? { kind: kinds_js_1.Kind.INT, value: stringValue }
126
- : { kind: kinds_js_1.Kind.FLOAT, value: stringValue };
125
+ ? { kind: kinds_ts_1.Kind.INT, value: stringValue }
126
+ : { kind: kinds_ts_1.Kind.FLOAT, value: stringValue };
127
127
  }
128
128
  case 'object': {
129
- if ((0, isIterableObject_js_1.isIterableObject)(value)) {
129
+ if ((0, isIterableObject_ts_1.isIterableObject)(value)) {
130
130
  return {
131
- kind: kinds_js_1.Kind.LIST,
131
+ kind: kinds_ts_1.Kind.LIST,
132
132
  values: Array.from(value, defaultScalarValueToLiteral),
133
133
  };
134
134
  }
@@ -139,15 +139,15 @@ function defaultScalarValueToLiteral(value) {
139
139
  // Like JSON, undefined fields are not included in the literal result.
140
140
  if (fieldValue !== undefined) {
141
141
  fields.push({
142
- kind: kinds_js_1.Kind.OBJECT_FIELD,
143
- name: { kind: kinds_js_1.Kind.NAME, value: fieldName },
142
+ kind: kinds_ts_1.Kind.OBJECT_FIELD,
143
+ name: { kind: kinds_ts_1.Kind.NAME, value: fieldName },
144
144
  value: defaultScalarValueToLiteral(fieldValue),
145
145
  });
146
146
  }
147
147
  }
148
- return { kind: kinds_js_1.Kind.OBJECT, fields };
148
+ return { kind: kinds_ts_1.Kind.OBJECT, fields };
149
149
  }
150
150
  }
151
- throw new TypeError(`Cannot convert value to AST: ${(0, inspect_js_1.inspect)(value)}.`);
151
+ throw new TypeError(`Cannot convert value to AST: ${(0, inspect_ts_1.inspect)(value)}.`);
152
152
  }
153
153
  //# sourceMappingURL=valueToLiteral.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"valueToLiteral.js","sourceRoot":"","sources":["../../src/utilities/valueToLiteral.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.js';\nimport { isIterableObject } from '../jsutils/isIterableObject.js';\nimport { isObjectLike } from '../jsutils/isObjectLike.js';\n\nimport type { ConstObjectFieldNode, ConstValueNode } from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\n\nimport type { GraphQLInputType } from '../type/definition.js';\nimport {\n assertLeafType,\n isInputObjectType,\n isListType,\n isNonNullType,\n isRequiredInputField,\n} from '../type/definition.js';\n\n/**\n * Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.\n *\n * Scalar types are converted by calling the `valueToLiteral` method on that\n * type, otherwise the default scalar `valueToLiteral` method is used, defined\n * below.\n *\n * The provided value is an non-coerced \"input\" value. This function does not\n * perform any coercion, however it does perform validation. Provided values\n * which are invalid for the given type will result in an `undefined` return\n * value.\n */\nexport function valueToLiteral(\n value: unknown,\n type: GraphQLInputType,\n): ConstValueNode | undefined {\n if (isNonNullType(type)) {\n if (value == null) {\n return; // Invalid: intentionally return no value.\n }\n return valueToLiteral(value, type.ofType);\n }\n\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n if (isListType(type)) {\n if (!isIterableObject(value)) {\n return valueToLiteral(value, type.ofType);\n }\n const values: Array<ConstValueNode> = [];\n for (const itemValue of value) {\n const itemNode = valueToLiteral(itemValue, type.ofType);\n if (!itemNode) {\n return; // Invalid: intentionally return no value.\n }\n values.push(itemNode);\n }\n return { kind: Kind.LIST, values };\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return; // Invalid: intentionally return no value.\n }\n const fields: Array<ConstObjectFieldNode> = [];\n const fieldDefs = type.getFields();\n const hasUndefinedField = Object.keys(value).some(\n (name) => value[name] !== undefined && !Object.hasOwn(fieldDefs, name),\n );\n if (hasUndefinedField) {\n return; // Invalid: intentionally return no value.\n }\n for (const field of Object.values(type.getFields())) {\n const fieldValue = value[field.name];\n if (fieldValue === undefined) {\n if (isRequiredInputField(field)) {\n return; // Invalid: intentionally return no value.\n }\n } else {\n const fieldNode = valueToLiteral(value[field.name], field.type);\n if (!fieldNode) {\n return; // Invalid: intentionally return no value.\n }\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: field.name },\n value: fieldNode,\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n\n const leafType = assertLeafType(type);\n\n if (leafType.valueToLiteral) {\n try {\n return leafType.valueToLiteral(value);\n } catch (_error) {\n return; // Invalid: intentionally ignore error and return no value.\n }\n }\n\n return defaultScalarValueToLiteral(value);\n}\n\n/**\n * The default implementation to convert scalar values to literals.\n *\n * | JavaScript Value | GraphQL Value |\n * | ----------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String |\n * | Number | Int / Float |\n * | BigInt | Int |\n * | null / undefined | Null |\n *\n * @internal\n */\nexport function defaultScalarValueToLiteral(value: unknown): ConstValueNode {\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (typeof value) {\n case 'boolean':\n return { kind: Kind.BOOLEAN, value };\n case 'string':\n return { kind: Kind.STRING, value, block: false };\n case 'bigint':\n return { kind: Kind.INT, value: value.toString() };\n case 'number': {\n if (!Number.isFinite(value)) {\n // Like JSON, a null literal is produced for non-finite values.\n return { kind: Kind.NULL };\n }\n const stringValue = String(value);\n // Will parse as an IntValue.\n return /^-?(?:0|[1-9][0-9]*)$/.test(stringValue)\n ? { kind: Kind.INT, value: stringValue }\n : { kind: Kind.FLOAT, value: stringValue };\n }\n case 'object': {\n if (isIterableObject(value)) {\n return {\n kind: Kind.LIST,\n values: Array.from(value, defaultScalarValueToLiteral),\n };\n }\n const objValue = value as { [prop: string]: unknown };\n const fields: Array<ConstObjectFieldNode> = [];\n for (const fieldName of Object.keys(objValue)) {\n const fieldValue = objValue[fieldName];\n // Like JSON, undefined fields are not included in the literal result.\n if (fieldValue !== undefined) {\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n value: defaultScalarValueToLiteral(fieldValue),\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect(value)}.`);\n}\n"]}
1
+ {"version":3,"file":"valueToLiteral.js","sourceRoot":"","sources":["../../src/utilities/valueToLiteral.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { isIterableObject } from '../jsutils/isIterableObject.ts';\nimport { isObjectLike } from '../jsutils/isObjectLike.ts';\n\nimport type { ConstObjectFieldNode, ConstValueNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type { GraphQLInputType } from '../type/definition.ts';\nimport {\n assertLeafType,\n isInputObjectType,\n isListType,\n isNonNullType,\n isRequiredInputField,\n} from '../type/definition.ts';\n\n/**\n * Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.\n *\n * Scalar types are converted by calling the `valueToLiteral` method on that\n * type, otherwise the default scalar `valueToLiteral` method is used, defined\n * below.\n *\n * The provided value is an non-coerced \"input\" value. This function does not\n * perform any coercion, however it does perform validation. Provided values\n * which are invalid for the given type will result in an `undefined` return\n * value.\n */\nexport function valueToLiteral(\n value: unknown,\n type: GraphQLInputType,\n): ConstValueNode | undefined {\n if (isNonNullType(type)) {\n if (value == null) {\n return; // Invalid: intentionally return no value.\n }\n return valueToLiteral(value, type.ofType);\n }\n\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n if (isListType(type)) {\n if (!isIterableObject(value)) {\n return valueToLiteral(value, type.ofType);\n }\n const values: Array<ConstValueNode> = [];\n for (const itemValue of value) {\n const itemNode = valueToLiteral(itemValue, type.ofType);\n if (!itemNode) {\n return; // Invalid: intentionally return no value.\n }\n values.push(itemNode);\n }\n return { kind: Kind.LIST, values };\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return; // Invalid: intentionally return no value.\n }\n const fields: Array<ConstObjectFieldNode> = [];\n const fieldDefs = type.getFields();\n const hasUndefinedField = Object.keys(value).some(\n (name) => value[name] !== undefined && !Object.hasOwn(fieldDefs, name),\n );\n if (hasUndefinedField) {\n return; // Invalid: intentionally return no value.\n }\n for (const field of Object.values(type.getFields())) {\n const fieldValue = value[field.name];\n if (fieldValue === undefined) {\n if (isRequiredInputField(field)) {\n return; // Invalid: intentionally return no value.\n }\n } else {\n const fieldNode = valueToLiteral(value[field.name], field.type);\n if (!fieldNode) {\n return; // Invalid: intentionally return no value.\n }\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: field.name },\n value: fieldNode,\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n\n const leafType = assertLeafType(type);\n\n if (leafType.valueToLiteral) {\n try {\n return leafType.valueToLiteral(value);\n } catch (_error) {\n return; // Invalid: intentionally ignore error and return no value.\n }\n }\n\n return defaultScalarValueToLiteral(value);\n}\n\n/**\n * The default implementation to convert scalar values to literals.\n *\n * | JavaScript Value | GraphQL Value |\n * | ----------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String |\n * | Number | Int / Float |\n * | BigInt | Int |\n * | null / undefined | Null |\n *\n * @internal\n */\nexport function defaultScalarValueToLiteral(value: unknown): ConstValueNode {\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (typeof value) {\n case 'boolean':\n return { kind: Kind.BOOLEAN, value };\n case 'string':\n return { kind: Kind.STRING, value, block: false };\n case 'bigint':\n return { kind: Kind.INT, value: value.toString() };\n case 'number': {\n if (!Number.isFinite(value)) {\n // Like JSON, a null literal is produced for non-finite values.\n return { kind: Kind.NULL };\n }\n const stringValue = String(value);\n // Will parse as an IntValue.\n return /^-?(?:0|[1-9][0-9]*)$/.test(stringValue)\n ? { kind: Kind.INT, value: stringValue }\n : { kind: Kind.FLOAT, value: stringValue };\n }\n case 'object': {\n if (isIterableObject(value)) {\n return {\n kind: Kind.LIST,\n values: Array.from(value, defaultScalarValueToLiteral),\n };\n }\n const objValue = value as { [prop: string]: unknown };\n const fields: Array<ConstObjectFieldNode> = [];\n for (const fieldName of Object.keys(objValue)) {\n const fieldValue = objValue[fieldName];\n // Like JSON, undefined fields are not included in the literal result.\n if (fieldValue !== undefined) {\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n value: defaultScalarValueToLiteral(fieldValue),\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect(value)}.`);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"valueToLiteral.js","sourceRoot":"","sources":["../../src/utilities/valueToLiteral.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.js';\nimport { isIterableObject } from '../jsutils/isIterableObject.js';\nimport { isObjectLike } from '../jsutils/isObjectLike.js';\n\nimport type { ConstObjectFieldNode, ConstValueNode } from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\n\nimport type { GraphQLInputType } from '../type/definition.js';\nimport {\n assertLeafType,\n isInputObjectType,\n isListType,\n isNonNullType,\n isRequiredInputField,\n} from '../type/definition.js';\n\n/**\n * Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.\n *\n * Scalar types are converted by calling the `valueToLiteral` method on that\n * type, otherwise the default scalar `valueToLiteral` method is used, defined\n * below.\n *\n * The provided value is an non-coerced \"input\" value. This function does not\n * perform any coercion, however it does perform validation. Provided values\n * which are invalid for the given type will result in an `undefined` return\n * value.\n */\nexport function valueToLiteral(\n value: unknown,\n type: GraphQLInputType,\n): ConstValueNode | undefined {\n if (isNonNullType(type)) {\n if (value == null) {\n return; // Invalid: intentionally return no value.\n }\n return valueToLiteral(value, type.ofType);\n }\n\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n if (isListType(type)) {\n if (!isIterableObject(value)) {\n return valueToLiteral(value, type.ofType);\n }\n const values: Array<ConstValueNode> = [];\n for (const itemValue of value) {\n const itemNode = valueToLiteral(itemValue, type.ofType);\n if (!itemNode) {\n return; // Invalid: intentionally return no value.\n }\n values.push(itemNode);\n }\n return { kind: Kind.LIST, values };\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return; // Invalid: intentionally return no value.\n }\n const fields: Array<ConstObjectFieldNode> = [];\n const fieldDefs = type.getFields();\n const hasUndefinedField = Object.keys(value).some(\n (name) => value[name] !== undefined && !Object.hasOwn(fieldDefs, name),\n );\n if (hasUndefinedField) {\n return; // Invalid: intentionally return no value.\n }\n for (const field of Object.values(type.getFields())) {\n const fieldValue = value[field.name];\n if (fieldValue === undefined) {\n if (isRequiredInputField(field)) {\n return; // Invalid: intentionally return no value.\n }\n } else {\n const fieldNode = valueToLiteral(value[field.name], field.type);\n if (!fieldNode) {\n return; // Invalid: intentionally return no value.\n }\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: field.name },\n value: fieldNode,\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n\n const leafType = assertLeafType(type);\n\n if (leafType.valueToLiteral) {\n try {\n return leafType.valueToLiteral(value);\n } catch (_error) {\n return; // Invalid: intentionally ignore error and return no value.\n }\n }\n\n return defaultScalarValueToLiteral(value);\n}\n\n/**\n * The default implementation to convert scalar values to literals.\n *\n * | JavaScript Value | GraphQL Value |\n * | ----------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String |\n * | Number | Int / Float |\n * | BigInt | Int |\n * | null / undefined | Null |\n *\n * @internal\n */\nexport function defaultScalarValueToLiteral(value: unknown): ConstValueNode {\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (typeof value) {\n case 'boolean':\n return { kind: Kind.BOOLEAN, value };\n case 'string':\n return { kind: Kind.STRING, value, block: false };\n case 'bigint':\n return { kind: Kind.INT, value: value.toString() };\n case 'number': {\n if (!Number.isFinite(value)) {\n // Like JSON, a null literal is produced for non-finite values.\n return { kind: Kind.NULL };\n }\n const stringValue = String(value);\n // Will parse as an IntValue.\n return /^-?(?:0|[1-9][0-9]*)$/.test(stringValue)\n ? { kind: Kind.INT, value: stringValue }\n : { kind: Kind.FLOAT, value: stringValue };\n }\n case 'object': {\n if (isIterableObject(value)) {\n return {\n kind: Kind.LIST,\n values: Array.from(value, defaultScalarValueToLiteral),\n };\n }\n const objValue = value as { [prop: string]: unknown };\n const fields: Array<ConstObjectFieldNode> = [];\n for (const fieldName of Object.keys(objValue)) {\n const fieldValue = objValue[fieldName];\n // Like JSON, undefined fields are not included in the literal result.\n if (fieldValue !== undefined) {\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n value: defaultScalarValueToLiteral(fieldValue),\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect(value)}.`);\n}\n"]}
1
+ {"version":3,"file":"valueToLiteral.js","sourceRoot":"","sources":["../../src/utilities/valueToLiteral.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { isIterableObject } from '../jsutils/isIterableObject.ts';\nimport { isObjectLike } from '../jsutils/isObjectLike.ts';\n\nimport type { ConstObjectFieldNode, ConstValueNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type { GraphQLInputType } from '../type/definition.ts';\nimport {\n assertLeafType,\n isInputObjectType,\n isListType,\n isNonNullType,\n isRequiredInputField,\n} from '../type/definition.ts';\n\n/**\n * Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.\n *\n * Scalar types are converted by calling the `valueToLiteral` method on that\n * type, otherwise the default scalar `valueToLiteral` method is used, defined\n * below.\n *\n * The provided value is an non-coerced \"input\" value. This function does not\n * perform any coercion, however it does perform validation. Provided values\n * which are invalid for the given type will result in an `undefined` return\n * value.\n */\nexport function valueToLiteral(\n value: unknown,\n type: GraphQLInputType,\n): ConstValueNode | undefined {\n if (isNonNullType(type)) {\n if (value == null) {\n return; // Invalid: intentionally return no value.\n }\n return valueToLiteral(value, type.ofType);\n }\n\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n if (isListType(type)) {\n if (!isIterableObject(value)) {\n return valueToLiteral(value, type.ofType);\n }\n const values: Array<ConstValueNode> = [];\n for (const itemValue of value) {\n const itemNode = valueToLiteral(itemValue, type.ofType);\n if (!itemNode) {\n return; // Invalid: intentionally return no value.\n }\n values.push(itemNode);\n }\n return { kind: Kind.LIST, values };\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return; // Invalid: intentionally return no value.\n }\n const fields: Array<ConstObjectFieldNode> = [];\n const fieldDefs = type.getFields();\n const hasUndefinedField = Object.keys(value).some(\n (name) => value[name] !== undefined && !Object.hasOwn(fieldDefs, name),\n );\n if (hasUndefinedField) {\n return; // Invalid: intentionally return no value.\n }\n for (const field of Object.values(type.getFields())) {\n const fieldValue = value[field.name];\n if (fieldValue === undefined) {\n if (isRequiredInputField(field)) {\n return; // Invalid: intentionally return no value.\n }\n } else {\n const fieldNode = valueToLiteral(value[field.name], field.type);\n if (!fieldNode) {\n return; // Invalid: intentionally return no value.\n }\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: field.name },\n value: fieldNode,\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n\n const leafType = assertLeafType(type);\n\n if (leafType.valueToLiteral) {\n try {\n return leafType.valueToLiteral(value);\n } catch (_error) {\n return; // Invalid: intentionally ignore error and return no value.\n }\n }\n\n return defaultScalarValueToLiteral(value);\n}\n\n/**\n * The default implementation to convert scalar values to literals.\n *\n * | JavaScript Value | GraphQL Value |\n * | ----------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String |\n * | Number | Int / Float |\n * | BigInt | Int |\n * | null / undefined | Null |\n *\n * @internal\n */\nexport function defaultScalarValueToLiteral(value: unknown): ConstValueNode {\n // Like JSON, a null literal is produced for both null and undefined.\n if (value == null) {\n return { kind: Kind.NULL };\n }\n\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (typeof value) {\n case 'boolean':\n return { kind: Kind.BOOLEAN, value };\n case 'string':\n return { kind: Kind.STRING, value, block: false };\n case 'bigint':\n return { kind: Kind.INT, value: value.toString() };\n case 'number': {\n if (!Number.isFinite(value)) {\n // Like JSON, a null literal is produced for non-finite values.\n return { kind: Kind.NULL };\n }\n const stringValue = String(value);\n // Will parse as an IntValue.\n return /^-?(?:0|[1-9][0-9]*)$/.test(stringValue)\n ? { kind: Kind.INT, value: stringValue }\n : { kind: Kind.FLOAT, value: stringValue };\n }\n case 'object': {\n if (isIterableObject(value)) {\n return {\n kind: Kind.LIST,\n values: Array.from(value, defaultScalarValueToLiteral),\n };\n }\n const objValue = value as { [prop: string]: unknown };\n const fields: Array<ConstObjectFieldNode> = [];\n for (const fieldName of Object.keys(objValue)) {\n const fieldValue = objValue[fieldName];\n // Like JSON, undefined fields are not included in the literal result.\n if (fieldValue !== undefined) {\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n value: defaultScalarValueToLiteral(fieldValue),\n });\n }\n }\n return { kind: Kind.OBJECT, fields };\n }\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect(value)}.`);\n}\n"]}
@@ -1,12 +1,12 @@
1
- import type { Maybe } from '../jsutils/Maybe.js';
2
- import type { GraphQLError } from '../error/GraphQLError.js';
3
- import type { DocumentNode, FragmentDefinitionNode, FragmentSpreadNode, OperationDefinitionNode, SelectionSetNode, VariableDefinitionNode, VariableNode } from '../language/ast.js';
4
- import type { ASTVisitor } from '../language/visitor.js';
5
- import type { GraphQLArgument, GraphQLCompositeType, GraphQLEnumValue, GraphQLField, GraphQLInputType, GraphQLOutputType } from '../type/definition.js';
6
- import type { GraphQLDirective } from '../type/directives.js';
7
- import type { GraphQLSchema } from '../type/schema.js';
8
- import type { FragmentSignature } from '../utilities/TypeInfo.js';
9
- import { TypeInfo } from '../utilities/TypeInfo.js';
1
+ import type { Maybe } from "../jsutils/Maybe.mjs";
2
+ import type { GraphQLError } from "../error/GraphQLError.mjs";
3
+ import type { DocumentNode, FragmentDefinitionNode, FragmentSpreadNode, OperationDefinitionNode, SelectionSetNode, VariableDefinitionNode, VariableNode } from "../language/ast.mjs";
4
+ import type { ASTVisitor } from "../language/visitor.mjs";
5
+ import type { GraphQLArgument, GraphQLCompositeType, GraphQLEnumValue, GraphQLField, GraphQLInputType, GraphQLOutputType } from "../type/definition.mjs";
6
+ import type { GraphQLDirective } from "../type/directives.mjs";
7
+ import type { GraphQLSchema } from "../type/schema.mjs";
8
+ import type { FragmentSignature } from "../utilities/TypeInfo.mjs";
9
+ import { TypeInfo } from "../utilities/TypeInfo.mjs";
10
10
  type NodeWithSelectionSet = OperationDefinitionNode | FragmentDefinitionNode;
11
11
  interface VariableUsage {
12
12
  readonly node: VariableNode;
@@ -1,12 +1,12 @@
1
- import type { Maybe } from '../jsutils/Maybe.js';
2
- import type { GraphQLError } from '../error/GraphQLError.js';
3
- import type { DocumentNode, FragmentDefinitionNode, FragmentSpreadNode, OperationDefinitionNode, SelectionSetNode, VariableDefinitionNode, VariableNode } from '../language/ast.js';
4
- import type { ASTVisitor } from '../language/visitor.js';
5
- import type { GraphQLArgument, GraphQLCompositeType, GraphQLEnumValue, GraphQLField, GraphQLInputType, GraphQLOutputType } from '../type/definition.js';
6
- import type { GraphQLDirective } from '../type/directives.js';
7
- import type { GraphQLSchema } from '../type/schema.js';
8
- import type { FragmentSignature } from '../utilities/TypeInfo.js';
9
- import { TypeInfo } from '../utilities/TypeInfo.js';
1
+ import type { Maybe } from "../jsutils/Maybe.js";
2
+ import type { GraphQLError } from "../error/GraphQLError.js";
3
+ import type { DocumentNode, FragmentDefinitionNode, FragmentSpreadNode, OperationDefinitionNode, SelectionSetNode, VariableDefinitionNode, VariableNode } from "../language/ast.js";
4
+ import type { ASTVisitor } from "../language/visitor.js";
5
+ import type { GraphQLArgument, GraphQLCompositeType, GraphQLEnumValue, GraphQLField, GraphQLInputType, GraphQLOutputType } from "../type/definition.js";
6
+ import type { GraphQLDirective } from "../type/directives.js";
7
+ import type { GraphQLSchema } from "../type/schema.js";
8
+ import type { FragmentSignature } from "../utilities/TypeInfo.js";
9
+ import { TypeInfo } from "../utilities/TypeInfo.js";
10
10
  type NodeWithSelectionSet = OperationDefinitionNode | FragmentDefinitionNode;
11
11
  interface VariableUsage {
12
12
  readonly node: VariableNode;
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ValidationContext = exports.SDLValidationContext = exports.ASTValidationContext = void 0;
4
- const kinds_js_1 = require("../language/kinds.js");
5
- const visitor_js_1 = require("../language/visitor.js");
6
- const TypeInfo_js_1 = require("../utilities/TypeInfo.js");
4
+ const kinds_ts_1 = require("../language/kinds.js");
5
+ const visitor_ts_1 = require("../language/visitor.js");
6
+ const TypeInfo_ts_1 = require("../utilities/TypeInfo.js");
7
7
  /**
8
8
  * An instance of this class is passed as the "this" context to all validators,
9
9
  * allowing access to commonly useful contextual information from within a
@@ -34,7 +34,7 @@ class ASTValidationContext {
34
34
  else {
35
35
  fragments = Object.create(null);
36
36
  for (const defNode of this.getDocument().definitions) {
37
- if (defNode.kind === kinds_js_1.Kind.FRAGMENT_DEFINITION) {
37
+ if (defNode.kind === kinds_ts_1.Kind.FRAGMENT_DEFINITION) {
38
38
  fragments[defNode.name.value] = defNode;
39
39
  }
40
40
  }
@@ -50,7 +50,7 @@ class ASTValidationContext {
50
50
  let set;
51
51
  while ((set = setsToVisit.pop())) {
52
52
  for (const selection of set.selections) {
53
- if (selection.kind === kinds_js_1.Kind.FRAGMENT_SPREAD) {
53
+ if (selection.kind === kinds_ts_1.Kind.FRAGMENT_SPREAD) {
54
54
  spreads.push(selection);
55
55
  }
56
56
  else if (selection.selectionSet) {
@@ -126,9 +126,9 @@ class ValidationContext extends ASTValidationContext {
126
126
  let usages = this._variableUsages.get(node);
127
127
  if (!usages) {
128
128
  const newUsages = [];
129
- const typeInfo = new TypeInfo_js_1.TypeInfo(this._schema, undefined, this._typeInfo.getFragmentSignatureByName());
130
- const fragmentDefinition = node.kind === kinds_js_1.Kind.FRAGMENT_DEFINITION ? node : undefined;
131
- (0, visitor_js_1.visit)(node, (0, TypeInfo_js_1.visitWithTypeInfo)(typeInfo, {
129
+ const typeInfo = new TypeInfo_ts_1.TypeInfo(this._schema, undefined, this._typeInfo.getFragmentSignatureByName());
130
+ const fragmentDefinition = node.kind === kinds_ts_1.Kind.FRAGMENT_DEFINITION ? node : undefined;
131
+ (0, visitor_ts_1.visit)(node, (0, TypeInfo_ts_1.visitWithTypeInfo)(typeInfo, {
132
132
  VariableDefinition: () => false,
133
133
  Variable(variable) {
134
134
  let fragmentVariableDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationContext.js","sourceRoot":"","sources":["../../src/validation/ValidationContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Maybe } from '../jsutils/Maybe.js';\nimport type { ObjMap } from '../jsutils/ObjMap.js';\n\nimport type { GraphQLError } from '../error/GraphQLError.js';\n\nimport type {\n DocumentNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n OperationDefinitionNode,\n SelectionSetNode,\n VariableDefinitionNode,\n VariableNode,\n} from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\nimport type { ASTVisitor } from '../language/visitor.js';\nimport { visit } from '../language/visitor.js';\n\nimport type {\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLEnumValue,\n GraphQLField,\n GraphQLInputType,\n GraphQLOutputType,\n} from '../type/definition.js';\nimport type { GraphQLDirective } from '../type/directives.js';\nimport type { GraphQLSchema } from '../type/schema.js';\n\nimport type { FragmentSignature } from '../utilities/TypeInfo.js';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.js';\n\ntype NodeWithSelectionSet = OperationDefinitionNode | FragmentDefinitionNode;\ninterface VariableUsage {\n readonly node: VariableNode;\n readonly type: Maybe<GraphQLInputType>;\n readonly parentType: Maybe<GraphQLInputType>;\n readonly defaultValue: unknown;\n readonly fragmentVariableDefinition: Maybe<VariableDefinitionNode>;\n}\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nexport class ASTValidationContext {\n private _ast: DocumentNode;\n private _onError: (error: GraphQLError) => void;\n private _fragments: ObjMap<FragmentDefinitionNode> | undefined;\n private _fragmentSpreads: Map<SelectionSetNode, Array<FragmentSpreadNode>>;\n private _recursivelyReferencedFragments: Map<\n OperationDefinitionNode,\n Array<FragmentDefinitionNode>\n >;\n\n constructor(ast: DocumentNode, onError: (error: GraphQLError) => void) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag](): string {\n return 'ASTValidationContext';\n }\n\n reportError(error: GraphQLError): void {\n this._onError(error);\n }\n\n getDocument(): DocumentNode {\n return this._ast;\n }\n\n getFragment(name: string): Maybe<FragmentDefinitionNode> {\n let fragments: ObjMap<FragmentDefinitionNode>;\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n this._fragments = fragments;\n }\n return fragments[name];\n }\n\n getFragmentSpreads(\n node: SelectionSetNode,\n ): ReadonlyArray<FragmentSpreadNode> {\n let spreads = this._fragmentSpreads.get(node);\n if (!spreads) {\n spreads = [];\n const setsToVisit: Array<SelectionSetNode> = [node];\n let set: SelectionSetNode | undefined;\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n this._fragmentSpreads.set(node, spreads);\n }\n return spreads;\n }\n\n getRecursivelyReferencedFragments(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<FragmentDefinitionNode> {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n if (!fragments) {\n fragments = [];\n const collectedNames = new Set<string>();\n const nodesToVisit: Array<SelectionSetNode> = [operation.selectionSet];\n let node: SelectionSetNode | undefined;\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n if (!collectedNames.has(fragName)) {\n collectedNames.add(fragName);\n const fragment = this.getFragment(fragName);\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n return fragments;\n }\n}\n\nexport type ASTValidationRule = (context: ASTValidationContext) => ASTVisitor;\n\nexport class SDLValidationContext extends ASTValidationContext {\n private _schema: Maybe<GraphQLSchema>;\n\n constructor(\n ast: DocumentNode,\n schema: Maybe<GraphQLSchema>,\n onError: (error: GraphQLError) => void,\n ) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get hideSuggestions(): boolean {\n return false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'SDLValidationContext';\n }\n\n getSchema(): Maybe<GraphQLSchema> {\n return this._schema;\n }\n}\n\nexport type SDLValidationRule = (context: SDLValidationContext) => ASTVisitor;\n\nexport class ValidationContext extends ASTValidationContext {\n private _schema: GraphQLSchema;\n private _typeInfo: TypeInfo;\n private _variableUsages: Map<\n NodeWithSelectionSet,\n ReadonlyArray<VariableUsage>\n >;\n\n private _recursiveVariableUsages: Map<\n OperationDefinitionNode,\n ReadonlyArray<VariableUsage>\n >;\n private _hideSuggestions: boolean;\n\n constructor(\n schema: GraphQLSchema,\n ast: DocumentNode,\n typeInfo: TypeInfo,\n onError: (error: GraphQLError) => void,\n hideSuggestions?: Maybe<boolean>,\n ) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n this._hideSuggestions = hideSuggestions ?? false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'ValidationContext';\n }\n\n get hideSuggestions(): boolean {\n return this._hideSuggestions;\n }\n\n getSchema(): GraphQLSchema {\n return this._schema;\n }\n\n getVariableUsages(node: NodeWithSelectionSet): ReadonlyArray<VariableUsage> {\n let usages = this._variableUsages.get(node);\n if (!usages) {\n const newUsages: Array<VariableUsage> = [];\n const typeInfo = new TypeInfo(\n this._schema,\n undefined,\n this._typeInfo.getFragmentSignatureByName(),\n );\n const fragmentDefinition =\n node.kind === Kind.FRAGMENT_DEFINITION ? node : undefined;\n visit(\n node,\n visitWithTypeInfo(typeInfo, {\n VariableDefinition: () => false,\n Variable(variable) {\n let fragmentVariableDefinition;\n if (fragmentDefinition) {\n const fragmentSignature = typeInfo.getFragmentSignatureByName()(\n fragmentDefinition.name.value,\n );\n\n fragmentVariableDefinition =\n fragmentSignature?.variableDefinitions.get(variable.name.value);\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: undefined, // fragment variables have a variable default but no location default, which is what this default value represents\n fragmentVariableDefinition,\n });\n } else {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n fragmentVariableDefinition: undefined,\n });\n }\n },\n }),\n );\n usages = newUsages;\n this._variableUsages.set(node, usages);\n }\n return usages;\n }\n\n getRecursiveVariableUsages(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<VariableUsage> {\n let usages = this._recursiveVariableUsages.get(operation);\n if (!usages) {\n usages = this.getVariableUsages(operation);\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n this._recursiveVariableUsages.set(operation, usages);\n }\n return usages;\n }\n\n getType(): Maybe<GraphQLOutputType> {\n return this._typeInfo.getType();\n }\n\n getParentType(): Maybe<GraphQLCompositeType> {\n return this._typeInfo.getParentType();\n }\n\n getInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getInputType();\n }\n\n // Note: continues to expose the closest enclosing valid input type if\n // traversal descends into syntax with no corresponding GraphQL input type.\n getParentInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective(): Maybe<GraphQLDirective> {\n return this._typeInfo.getDirective();\n }\n\n getArgument(): Maybe<GraphQLArgument> {\n return this._typeInfo.getArgument();\n }\n\n getFragmentSignature(): Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignature();\n }\n\n getFragmentSignatureByName(): (\n fragmentName: string,\n ) => Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignatureByName();\n }\n\n getEnumValue(): Maybe<GraphQLEnumValue> {\n return this._typeInfo.getEnumValue();\n }\n}\n\nexport type ValidationRule = (context: ValidationContext) => ASTVisitor;\n"]}
1
+ {"version":3,"file":"ValidationContext.js","sourceRoot":"","sources":["../../src/validation/ValidationContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\n\nimport type { GraphQLError } from '../error/GraphQLError.ts';\n\nimport type {\n DocumentNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n OperationDefinitionNode,\n SelectionSetNode,\n VariableDefinitionNode,\n VariableNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\nimport type { ASTVisitor } from '../language/visitor.ts';\nimport { visit } from '../language/visitor.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLEnumValue,\n GraphQLField,\n GraphQLInputType,\n GraphQLOutputType,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport type { FragmentSignature } from '../utilities/TypeInfo.ts';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.ts';\n\ntype NodeWithSelectionSet = OperationDefinitionNode | FragmentDefinitionNode;\ninterface VariableUsage {\n readonly node: VariableNode;\n readonly type: Maybe<GraphQLInputType>;\n readonly parentType: Maybe<GraphQLInputType>;\n readonly defaultValue: unknown;\n readonly fragmentVariableDefinition: Maybe<VariableDefinitionNode>;\n}\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nexport class ASTValidationContext {\n private _ast: DocumentNode;\n private _onError: (error: GraphQLError) => void;\n private _fragments: ObjMap<FragmentDefinitionNode> | undefined;\n private _fragmentSpreads: Map<SelectionSetNode, Array<FragmentSpreadNode>>;\n private _recursivelyReferencedFragments: Map<\n OperationDefinitionNode,\n Array<FragmentDefinitionNode>\n >;\n\n constructor(ast: DocumentNode, onError: (error: GraphQLError) => void) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag](): string {\n return 'ASTValidationContext';\n }\n\n reportError(error: GraphQLError): void {\n this._onError(error);\n }\n\n getDocument(): DocumentNode {\n return this._ast;\n }\n\n getFragment(name: string): Maybe<FragmentDefinitionNode> {\n let fragments: ObjMap<FragmentDefinitionNode>;\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n this._fragments = fragments;\n }\n return fragments[name];\n }\n\n getFragmentSpreads(\n node: SelectionSetNode,\n ): ReadonlyArray<FragmentSpreadNode> {\n let spreads = this._fragmentSpreads.get(node);\n if (!spreads) {\n spreads = [];\n const setsToVisit: Array<SelectionSetNode> = [node];\n let set: SelectionSetNode | undefined;\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n this._fragmentSpreads.set(node, spreads);\n }\n return spreads;\n }\n\n getRecursivelyReferencedFragments(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<FragmentDefinitionNode> {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n if (!fragments) {\n fragments = [];\n const collectedNames = new Set<string>();\n const nodesToVisit: Array<SelectionSetNode> = [operation.selectionSet];\n let node: SelectionSetNode | undefined;\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n if (!collectedNames.has(fragName)) {\n collectedNames.add(fragName);\n const fragment = this.getFragment(fragName);\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n return fragments;\n }\n}\n\nexport type ASTValidationRule = (context: ASTValidationContext) => ASTVisitor;\n\nexport class SDLValidationContext extends ASTValidationContext {\n private _schema: Maybe<GraphQLSchema>;\n\n constructor(\n ast: DocumentNode,\n schema: Maybe<GraphQLSchema>,\n onError: (error: GraphQLError) => void,\n ) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get hideSuggestions(): boolean {\n return false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'SDLValidationContext';\n }\n\n getSchema(): Maybe<GraphQLSchema> {\n return this._schema;\n }\n}\n\nexport type SDLValidationRule = (context: SDLValidationContext) => ASTVisitor;\n\nexport class ValidationContext extends ASTValidationContext {\n private _schema: GraphQLSchema;\n private _typeInfo: TypeInfo;\n private _variableUsages: Map<\n NodeWithSelectionSet,\n ReadonlyArray<VariableUsage>\n >;\n\n private _recursiveVariableUsages: Map<\n OperationDefinitionNode,\n ReadonlyArray<VariableUsage>\n >;\n private _hideSuggestions: boolean;\n\n constructor(\n schema: GraphQLSchema,\n ast: DocumentNode,\n typeInfo: TypeInfo,\n onError: (error: GraphQLError) => void,\n hideSuggestions?: Maybe<boolean>,\n ) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n this._hideSuggestions = hideSuggestions ?? false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'ValidationContext';\n }\n\n get hideSuggestions(): boolean {\n return this._hideSuggestions;\n }\n\n getSchema(): GraphQLSchema {\n return this._schema;\n }\n\n getVariableUsages(node: NodeWithSelectionSet): ReadonlyArray<VariableUsage> {\n let usages = this._variableUsages.get(node);\n if (!usages) {\n const newUsages: Array<VariableUsage> = [];\n const typeInfo = new TypeInfo(\n this._schema,\n undefined,\n this._typeInfo.getFragmentSignatureByName(),\n );\n const fragmentDefinition =\n node.kind === Kind.FRAGMENT_DEFINITION ? node : undefined;\n visit(\n node,\n visitWithTypeInfo(typeInfo, {\n VariableDefinition: () => false,\n Variable(variable) {\n let fragmentVariableDefinition;\n if (fragmentDefinition) {\n const fragmentSignature = typeInfo.getFragmentSignatureByName()(\n fragmentDefinition.name.value,\n );\n\n fragmentVariableDefinition =\n fragmentSignature?.variableDefinitions.get(variable.name.value);\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: undefined, // fragment variables have a variable default but no location default, which is what this default value represents\n fragmentVariableDefinition,\n });\n } else {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n fragmentVariableDefinition: undefined,\n });\n }\n },\n }),\n );\n usages = newUsages;\n this._variableUsages.set(node, usages);\n }\n return usages;\n }\n\n getRecursiveVariableUsages(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<VariableUsage> {\n let usages = this._recursiveVariableUsages.get(operation);\n if (!usages) {\n usages = this.getVariableUsages(operation);\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n this._recursiveVariableUsages.set(operation, usages);\n }\n return usages;\n }\n\n getType(): Maybe<GraphQLOutputType> {\n return this._typeInfo.getType();\n }\n\n getParentType(): Maybe<GraphQLCompositeType> {\n return this._typeInfo.getParentType();\n }\n\n getInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getInputType();\n }\n\n // Note: continues to expose the closest enclosing valid input type if\n // traversal descends into syntax with no corresponding GraphQL input type.\n getParentInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective(): Maybe<GraphQLDirective> {\n return this._typeInfo.getDirective();\n }\n\n getArgument(): Maybe<GraphQLArgument> {\n return this._typeInfo.getArgument();\n }\n\n getFragmentSignature(): Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignature();\n }\n\n getFragmentSignatureByName(): (\n fragmentName: string,\n ) => Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignatureByName();\n }\n\n getEnumValue(): Maybe<GraphQLEnumValue> {\n return this._typeInfo.getEnumValue();\n }\n}\n\nexport type ValidationRule = (context: ValidationContext) => ASTVisitor;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationContext.js","sourceRoot":"","sources":["../../src/validation/ValidationContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Maybe } from '../jsutils/Maybe.js';\nimport type { ObjMap } from '../jsutils/ObjMap.js';\n\nimport type { GraphQLError } from '../error/GraphQLError.js';\n\nimport type {\n DocumentNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n OperationDefinitionNode,\n SelectionSetNode,\n VariableDefinitionNode,\n VariableNode,\n} from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\nimport type { ASTVisitor } from '../language/visitor.js';\nimport { visit } from '../language/visitor.js';\n\nimport type {\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLEnumValue,\n GraphQLField,\n GraphQLInputType,\n GraphQLOutputType,\n} from '../type/definition.js';\nimport type { GraphQLDirective } from '../type/directives.js';\nimport type { GraphQLSchema } from '../type/schema.js';\n\nimport type { FragmentSignature } from '../utilities/TypeInfo.js';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.js';\n\ntype NodeWithSelectionSet = OperationDefinitionNode | FragmentDefinitionNode;\ninterface VariableUsage {\n readonly node: VariableNode;\n readonly type: Maybe<GraphQLInputType>;\n readonly parentType: Maybe<GraphQLInputType>;\n readonly defaultValue: unknown;\n readonly fragmentVariableDefinition: Maybe<VariableDefinitionNode>;\n}\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nexport class ASTValidationContext {\n private _ast: DocumentNode;\n private _onError: (error: GraphQLError) => void;\n private _fragments: ObjMap<FragmentDefinitionNode> | undefined;\n private _fragmentSpreads: Map<SelectionSetNode, Array<FragmentSpreadNode>>;\n private _recursivelyReferencedFragments: Map<\n OperationDefinitionNode,\n Array<FragmentDefinitionNode>\n >;\n\n constructor(ast: DocumentNode, onError: (error: GraphQLError) => void) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag](): string {\n return 'ASTValidationContext';\n }\n\n reportError(error: GraphQLError): void {\n this._onError(error);\n }\n\n getDocument(): DocumentNode {\n return this._ast;\n }\n\n getFragment(name: string): Maybe<FragmentDefinitionNode> {\n let fragments: ObjMap<FragmentDefinitionNode>;\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n this._fragments = fragments;\n }\n return fragments[name];\n }\n\n getFragmentSpreads(\n node: SelectionSetNode,\n ): ReadonlyArray<FragmentSpreadNode> {\n let spreads = this._fragmentSpreads.get(node);\n if (!spreads) {\n spreads = [];\n const setsToVisit: Array<SelectionSetNode> = [node];\n let set: SelectionSetNode | undefined;\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n this._fragmentSpreads.set(node, spreads);\n }\n return spreads;\n }\n\n getRecursivelyReferencedFragments(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<FragmentDefinitionNode> {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n if (!fragments) {\n fragments = [];\n const collectedNames = new Set<string>();\n const nodesToVisit: Array<SelectionSetNode> = [operation.selectionSet];\n let node: SelectionSetNode | undefined;\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n if (!collectedNames.has(fragName)) {\n collectedNames.add(fragName);\n const fragment = this.getFragment(fragName);\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n return fragments;\n }\n}\n\nexport type ASTValidationRule = (context: ASTValidationContext) => ASTVisitor;\n\nexport class SDLValidationContext extends ASTValidationContext {\n private _schema: Maybe<GraphQLSchema>;\n\n constructor(\n ast: DocumentNode,\n schema: Maybe<GraphQLSchema>,\n onError: (error: GraphQLError) => void,\n ) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get hideSuggestions(): boolean {\n return false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'SDLValidationContext';\n }\n\n getSchema(): Maybe<GraphQLSchema> {\n return this._schema;\n }\n}\n\nexport type SDLValidationRule = (context: SDLValidationContext) => ASTVisitor;\n\nexport class ValidationContext extends ASTValidationContext {\n private _schema: GraphQLSchema;\n private _typeInfo: TypeInfo;\n private _variableUsages: Map<\n NodeWithSelectionSet,\n ReadonlyArray<VariableUsage>\n >;\n\n private _recursiveVariableUsages: Map<\n OperationDefinitionNode,\n ReadonlyArray<VariableUsage>\n >;\n private _hideSuggestions: boolean;\n\n constructor(\n schema: GraphQLSchema,\n ast: DocumentNode,\n typeInfo: TypeInfo,\n onError: (error: GraphQLError) => void,\n hideSuggestions?: Maybe<boolean>,\n ) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n this._hideSuggestions = hideSuggestions ?? false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'ValidationContext';\n }\n\n get hideSuggestions(): boolean {\n return this._hideSuggestions;\n }\n\n getSchema(): GraphQLSchema {\n return this._schema;\n }\n\n getVariableUsages(node: NodeWithSelectionSet): ReadonlyArray<VariableUsage> {\n let usages = this._variableUsages.get(node);\n if (!usages) {\n const newUsages: Array<VariableUsage> = [];\n const typeInfo = new TypeInfo(\n this._schema,\n undefined,\n this._typeInfo.getFragmentSignatureByName(),\n );\n const fragmentDefinition =\n node.kind === Kind.FRAGMENT_DEFINITION ? node : undefined;\n visit(\n node,\n visitWithTypeInfo(typeInfo, {\n VariableDefinition: () => false,\n Variable(variable) {\n let fragmentVariableDefinition;\n if (fragmentDefinition) {\n const fragmentSignature = typeInfo.getFragmentSignatureByName()(\n fragmentDefinition.name.value,\n );\n\n fragmentVariableDefinition =\n fragmentSignature?.variableDefinitions.get(variable.name.value);\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: undefined, // fragment variables have a variable default but no location default, which is what this default value represents\n fragmentVariableDefinition,\n });\n } else {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n fragmentVariableDefinition: undefined,\n });\n }\n },\n }),\n );\n usages = newUsages;\n this._variableUsages.set(node, usages);\n }\n return usages;\n }\n\n getRecursiveVariableUsages(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<VariableUsage> {\n let usages = this._recursiveVariableUsages.get(operation);\n if (!usages) {\n usages = this.getVariableUsages(operation);\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n this._recursiveVariableUsages.set(operation, usages);\n }\n return usages;\n }\n\n getType(): Maybe<GraphQLOutputType> {\n return this._typeInfo.getType();\n }\n\n getParentType(): Maybe<GraphQLCompositeType> {\n return this._typeInfo.getParentType();\n }\n\n getInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getInputType();\n }\n\n // Note: continues to expose the closest enclosing valid input type if\n // traversal descends into syntax with no corresponding GraphQL input type.\n getParentInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective(): Maybe<GraphQLDirective> {\n return this._typeInfo.getDirective();\n }\n\n getArgument(): Maybe<GraphQLArgument> {\n return this._typeInfo.getArgument();\n }\n\n getFragmentSignature(): Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignature();\n }\n\n getFragmentSignatureByName(): (\n fragmentName: string,\n ) => Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignatureByName();\n }\n\n getEnumValue(): Maybe<GraphQLEnumValue> {\n return this._typeInfo.getEnumValue();\n }\n}\n\nexport type ValidationRule = (context: ValidationContext) => ASTVisitor;\n"]}
1
+ {"version":3,"file":"ValidationContext.js","sourceRoot":"","sources":["../../src/validation/ValidationContext.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\n\nimport type { GraphQLError } from '../error/GraphQLError.ts';\n\nimport type {\n DocumentNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n OperationDefinitionNode,\n SelectionSetNode,\n VariableDefinitionNode,\n VariableNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\nimport type { ASTVisitor } from '../language/visitor.ts';\nimport { visit } from '../language/visitor.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLEnumValue,\n GraphQLField,\n GraphQLInputType,\n GraphQLOutputType,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport type { FragmentSignature } from '../utilities/TypeInfo.ts';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.ts';\n\ntype NodeWithSelectionSet = OperationDefinitionNode | FragmentDefinitionNode;\ninterface VariableUsage {\n readonly node: VariableNode;\n readonly type: Maybe<GraphQLInputType>;\n readonly parentType: Maybe<GraphQLInputType>;\n readonly defaultValue: unknown;\n readonly fragmentVariableDefinition: Maybe<VariableDefinitionNode>;\n}\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nexport class ASTValidationContext {\n private _ast: DocumentNode;\n private _onError: (error: GraphQLError) => void;\n private _fragments: ObjMap<FragmentDefinitionNode> | undefined;\n private _fragmentSpreads: Map<SelectionSetNode, Array<FragmentSpreadNode>>;\n private _recursivelyReferencedFragments: Map<\n OperationDefinitionNode,\n Array<FragmentDefinitionNode>\n >;\n\n constructor(ast: DocumentNode, onError: (error: GraphQLError) => void) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag](): string {\n return 'ASTValidationContext';\n }\n\n reportError(error: GraphQLError): void {\n this._onError(error);\n }\n\n getDocument(): DocumentNode {\n return this._ast;\n }\n\n getFragment(name: string): Maybe<FragmentDefinitionNode> {\n let fragments: ObjMap<FragmentDefinitionNode>;\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n this._fragments = fragments;\n }\n return fragments[name];\n }\n\n getFragmentSpreads(\n node: SelectionSetNode,\n ): ReadonlyArray<FragmentSpreadNode> {\n let spreads = this._fragmentSpreads.get(node);\n if (!spreads) {\n spreads = [];\n const setsToVisit: Array<SelectionSetNode> = [node];\n let set: SelectionSetNode | undefined;\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n this._fragmentSpreads.set(node, spreads);\n }\n return spreads;\n }\n\n getRecursivelyReferencedFragments(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<FragmentDefinitionNode> {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n if (!fragments) {\n fragments = [];\n const collectedNames = new Set<string>();\n const nodesToVisit: Array<SelectionSetNode> = [operation.selectionSet];\n let node: SelectionSetNode | undefined;\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n if (!collectedNames.has(fragName)) {\n collectedNames.add(fragName);\n const fragment = this.getFragment(fragName);\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n return fragments;\n }\n}\n\nexport type ASTValidationRule = (context: ASTValidationContext) => ASTVisitor;\n\nexport class SDLValidationContext extends ASTValidationContext {\n private _schema: Maybe<GraphQLSchema>;\n\n constructor(\n ast: DocumentNode,\n schema: Maybe<GraphQLSchema>,\n onError: (error: GraphQLError) => void,\n ) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get hideSuggestions(): boolean {\n return false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'SDLValidationContext';\n }\n\n getSchema(): Maybe<GraphQLSchema> {\n return this._schema;\n }\n}\n\nexport type SDLValidationRule = (context: SDLValidationContext) => ASTVisitor;\n\nexport class ValidationContext extends ASTValidationContext {\n private _schema: GraphQLSchema;\n private _typeInfo: TypeInfo;\n private _variableUsages: Map<\n NodeWithSelectionSet,\n ReadonlyArray<VariableUsage>\n >;\n\n private _recursiveVariableUsages: Map<\n OperationDefinitionNode,\n ReadonlyArray<VariableUsage>\n >;\n private _hideSuggestions: boolean;\n\n constructor(\n schema: GraphQLSchema,\n ast: DocumentNode,\n typeInfo: TypeInfo,\n onError: (error: GraphQLError) => void,\n hideSuggestions?: Maybe<boolean>,\n ) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n this._hideSuggestions = hideSuggestions ?? false;\n }\n\n override get [Symbol.toStringTag](): string {\n return 'ValidationContext';\n }\n\n get hideSuggestions(): boolean {\n return this._hideSuggestions;\n }\n\n getSchema(): GraphQLSchema {\n return this._schema;\n }\n\n getVariableUsages(node: NodeWithSelectionSet): ReadonlyArray<VariableUsage> {\n let usages = this._variableUsages.get(node);\n if (!usages) {\n const newUsages: Array<VariableUsage> = [];\n const typeInfo = new TypeInfo(\n this._schema,\n undefined,\n this._typeInfo.getFragmentSignatureByName(),\n );\n const fragmentDefinition =\n node.kind === Kind.FRAGMENT_DEFINITION ? node : undefined;\n visit(\n node,\n visitWithTypeInfo(typeInfo, {\n VariableDefinition: () => false,\n Variable(variable) {\n let fragmentVariableDefinition;\n if (fragmentDefinition) {\n const fragmentSignature = typeInfo.getFragmentSignatureByName()(\n fragmentDefinition.name.value,\n );\n\n fragmentVariableDefinition =\n fragmentSignature?.variableDefinitions.get(variable.name.value);\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: undefined, // fragment variables have a variable default but no location default, which is what this default value represents\n fragmentVariableDefinition,\n });\n } else {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n parentType: typeInfo.getParentInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n fragmentVariableDefinition: undefined,\n });\n }\n },\n }),\n );\n usages = newUsages;\n this._variableUsages.set(node, usages);\n }\n return usages;\n }\n\n getRecursiveVariableUsages(\n operation: OperationDefinitionNode,\n ): ReadonlyArray<VariableUsage> {\n let usages = this._recursiveVariableUsages.get(operation);\n if (!usages) {\n usages = this.getVariableUsages(operation);\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n this._recursiveVariableUsages.set(operation, usages);\n }\n return usages;\n }\n\n getType(): Maybe<GraphQLOutputType> {\n return this._typeInfo.getType();\n }\n\n getParentType(): Maybe<GraphQLCompositeType> {\n return this._typeInfo.getParentType();\n }\n\n getInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getInputType();\n }\n\n // Note: continues to expose the closest enclosing valid input type if\n // traversal descends into syntax with no corresponding GraphQL input type.\n getParentInputType(): Maybe<GraphQLInputType> {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective(): Maybe<GraphQLDirective> {\n return this._typeInfo.getDirective();\n }\n\n getArgument(): Maybe<GraphQLArgument> {\n return this._typeInfo.getArgument();\n }\n\n getFragmentSignature(): Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignature();\n }\n\n getFragmentSignatureByName(): (\n fragmentName: string,\n ) => Maybe<FragmentSignature> {\n return this._typeInfo.getFragmentSignatureByName();\n }\n\n getEnumValue(): Maybe<GraphQLEnumValue> {\n return this._typeInfo.getEnumValue();\n }\n}\n\nexport type ValidationRule = (context: ValidationContext) => ASTVisitor;\n"]}