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":"schemaCoordinateLexer.js","sourceRoot":"","sources":["../../src/language/schemaCoordinateLexer.ts"],"names":[],"mappings":"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","sourcesContent":["import { syntaxError } from '../error/syntaxError.js';\n\nimport { Token } from './ast.js';\nimport { isNameStart } from './characterClasses.js';\nimport type { LexerInterface } from './lexer.js';\nimport { createToken, printCodePointAt, readName } from './lexer.js';\nimport type { Source } from './source.js';\nimport { TokenKind } from './tokenKind.js';\n\n/**\n * Given a Source schema coordinate, creates a Lexer for that source.\n * A SchemaCoordinateLexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nexport class SchemaCoordinateLexer implements LexerInterface {\n source: Source;\n\n /**\n * The previously focused non-ignored token.\n */\n lastToken: Token;\n\n /**\n * The currently focused non-ignored token.\n */\n token: Token;\n\n /**\n * The (1-indexed) line containing the current token.\n * Since a schema coordinate may not contain newline, this value is always 1.\n */\n line: 1 = 1 as const;\n\n /**\n * The character offset at which the current line begins.\n * Since a schema coordinate may not contain newline, this value is always 0.\n */\n lineStart: 0 = 0 as const;\n\n constructor(source: Source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n }\n\n get [Symbol.toStringTag](): string {\n return 'SchemaCoordinateLexer';\n }\n\n /**\n * Advances the token stream to the next non-ignored token.\n */\n advance(): Token {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the current Lexer token.\n */\n lookahead(): Token {\n let token = this.token;\n if (token.kind !== TokenKind.EOF) {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end);\n // @ts-expect-error next is only mutable during parsing.\n token.next = nextToken;\n // @ts-expect-error prev is only mutable during parsing.\n nextToken.prev = token;\n token = nextToken;\n }\n return token;\n }\n}\n\n/**\n * Gets the next token from the source starting at the given position.\n */\nfunction readNextToken(lexer: SchemaCoordinateLexer, start: number): Token {\n const body = lexer.source.body;\n const bodyLength = body.length;\n const position = start;\n\n if (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n switch (code) {\n case 0x002e: // .\n return createToken(lexer, TokenKind.DOT, position, position + 1);\n case 0x0028: // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n case 0x0029: // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n case 0x003a: // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n case 0x0040: // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n }\n\n // Name\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n"]}
1
+ {"version":3,"file":"schemaCoordinateLexer.js","sourceRoot":"","sources":["../../src/language/schemaCoordinateLexer.ts"],"names":[],"mappings":"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","sourcesContent":["import { syntaxError } from '../error/syntaxError.ts';\n\nimport { Token } from './ast.ts';\nimport { isNameStart } from './characterClasses.ts';\nimport type { LexerInterface } from './lexer.ts';\nimport { createToken, printCodePointAt, readName } from './lexer.ts';\nimport type { Source } from './source.ts';\nimport { TokenKind } from './tokenKind.ts';\n\n/**\n * Given a Source schema coordinate, creates a Lexer for that source.\n * A SchemaCoordinateLexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nexport class SchemaCoordinateLexer implements LexerInterface {\n source: Source;\n\n /**\n * The previously focused non-ignored token.\n */\n lastToken: Token;\n\n /**\n * The currently focused non-ignored token.\n */\n token: Token;\n\n /**\n * The (1-indexed) line containing the current token.\n * Since a schema coordinate may not contain newline, this value is always 1.\n */\n line: 1 = 1 as const;\n\n /**\n * The character offset at which the current line begins.\n * Since a schema coordinate may not contain newline, this value is always 0.\n */\n lineStart: 0 = 0 as const;\n\n constructor(source: Source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n }\n\n get [Symbol.toStringTag](): string {\n return 'SchemaCoordinateLexer';\n }\n\n /**\n * Advances the token stream to the next non-ignored token.\n */\n advance(): Token {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the current Lexer token.\n */\n lookahead(): Token {\n let token = this.token;\n if (token.kind !== TokenKind.EOF) {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end);\n // @ts-expect-error next is only mutable during parsing.\n token.next = nextToken;\n // @ts-expect-error prev is only mutable during parsing.\n nextToken.prev = token;\n token = nextToken;\n }\n return token;\n }\n}\n\n/**\n * Gets the next token from the source starting at the given position.\n */\nfunction readNextToken(lexer: SchemaCoordinateLexer, start: number): Token {\n const body = lexer.source.body;\n const bodyLength = body.length;\n const position = start;\n\n if (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n switch (code) {\n case 0x002e: // .\n return createToken(lexer, TokenKind.DOT, position, position + 1);\n case 0x0028: // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n case 0x0029: // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n case 0x003a: // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n case 0x0040: // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n }\n\n // Name\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Source = void 0;
4
4
  exports.isSource = isSource;
5
- const devAssert_js_1 = require("../jsutils/devAssert.js");
6
- const instanceOf_js_1 = require("../jsutils/instanceOf.js");
5
+ const devAssert_ts_1 = require("../jsutils/devAssert.js");
6
+ const instanceOf_ts_1 = require("../jsutils/instanceOf.js");
7
7
  const sourceSymbol = Symbol('Source');
8
8
  /**
9
9
  * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are
@@ -19,9 +19,9 @@ class Source {
19
19
  this.name = name;
20
20
  this.locationOffset = locationOffset;
21
21
  if (!(this.locationOffset.line > 0))
22
- (0, devAssert_js_1.devAssert)(false, 'line in locationOffset is 1-indexed and must be positive.');
22
+ (0, devAssert_ts_1.devAssert)(false, 'line in locationOffset is 1-indexed and must be positive.');
23
23
  if (!(this.locationOffset.column > 0))
24
- (0, devAssert_js_1.devAssert)(false, 'column in locationOffset is 1-indexed and must be positive.');
24
+ (0, devAssert_ts_1.devAssert)(false, 'column in locationOffset is 1-indexed and must be positive.');
25
25
  }
26
26
  get [Symbol.toStringTag]() {
27
27
  return 'Source';
@@ -34,6 +34,6 @@ exports.Source = Source;
34
34
  * @internal
35
35
  */
36
36
  function isSource(source) {
37
- return (0, instanceOf_js_1.instanceOf)(source, sourceSymbol, Source);
37
+ return (0, instanceOf_ts_1.instanceOf)(source, sourceSymbol, Source);
38
38
  }
39
39
  //# sourceMappingURL=source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/language/source.ts"],"names":[],"mappings":";;;AAqDA,4BAEC;AAvDD,0DAAoD;AACpD,4DAAsD;AAOtD,MAAM,YAAY,GAAkB,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAa,MAAM;IAOjB,YACE,IAAY,EACZ,OAAe,iBAAiB,EAChC,iBAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAEjD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;cAEnC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;gBAD9B,wBAAS,SAEP,2DAA2D;cAG3D,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBADhC,wBAAS,SAEP,6DAA6D;IAEjE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA7BD,wBA6BC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,MAAe;IACtC,OAAO,IAAA,0BAAU,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC","sourcesContent":["import { devAssert } from '../jsutils/devAssert.js';\nimport { instanceOf } from '../jsutils/instanceOf.js';\n\ninterface Location {\n line: number;\n column: number;\n}\n\nconst sourceSymbol: unique symbol = Symbol('Source');\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n readonly __kind: symbol;\n\n body: string;\n name: string;\n locationOffset: Location;\n\n constructor(\n body: string,\n name: string = 'GraphQL request',\n locationOffset: Location = { line: 1, column: 1 },\n ) {\n this.__kind = sourceSymbol;\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n devAssert(\n this.locationOffset.line > 0,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n devAssert(\n this.locationOffset.column > 0,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag](): string {\n return 'Source';\n }\n}\n\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\nexport function isSource(source: unknown): source is Source {\n return instanceOf(source, sourceSymbol, Source);\n}\n"]}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/language/source.ts"],"names":[],"mappings":";;;AAqDA,4BAEC;AAvDD,0DAAoD;AACpD,4DAAsD;AAOtD,MAAM,YAAY,GAAkB,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAa,MAAM;IAOjB,YACE,IAAY,EACZ,OAAe,iBAAiB,EAChC,iBAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAEjD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;cAEnC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;gBAD9B,wBAAS,SAEP,2DAA2D;cAG3D,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBADhC,wBAAS,SAEP,6DAA6D;IAEjE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA7BD,wBA6BC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,MAAe;IACtC,OAAO,IAAA,0BAAU,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC","sourcesContent":["import { devAssert } from '../jsutils/devAssert.ts';\nimport { instanceOf } from '../jsutils/instanceOf.ts';\n\ninterface Location {\n line: number;\n column: number;\n}\n\nconst sourceSymbol: unique symbol = Symbol('Source');\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n readonly __kind: symbol;\n\n body: string;\n name: string;\n locationOffset: Location;\n\n constructor(\n body: string,\n name: string = 'GraphQL request',\n locationOffset: Location = { line: 1, column: 1 },\n ) {\n this.__kind = sourceSymbol;\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n devAssert(\n this.locationOffset.line > 0,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n devAssert(\n this.locationOffset.column > 0,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag](): string {\n return 'Source';\n }\n}\n\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\nexport function isSource(source: unknown): source is Source {\n return instanceOf(source, sourceSymbol, Source);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/language/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AACpD,OAAO,EAAE,UAAU,EAAE,kCAAiC;AAOtD,MAAM,YAAY,GAAkB,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IAOjB,YACE,IAAY,EACZ,OAAe,iBAAiB,EAChC,iBAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAEjD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;cAEnC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;YAD9B,SAAS,QAEP,2DAA2D;cAG3D,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YADhC,SAAS,QAEP,6DAA6D;IAEjE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAe;IACtC,OAAO,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC","sourcesContent":["import { devAssert } from '../jsutils/devAssert.js';\nimport { instanceOf } from '../jsutils/instanceOf.js';\n\ninterface Location {\n line: number;\n column: number;\n}\n\nconst sourceSymbol: unique symbol = Symbol('Source');\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n readonly __kind: symbol;\n\n body: string;\n name: string;\n locationOffset: Location;\n\n constructor(\n body: string,\n name: string = 'GraphQL request',\n locationOffset: Location = { line: 1, column: 1 },\n ) {\n this.__kind = sourceSymbol;\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n devAssert(\n this.locationOffset.line > 0,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n devAssert(\n this.locationOffset.column > 0,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag](): string {\n return 'Source';\n }\n}\n\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\nexport function isSource(source: unknown): source is Source {\n return instanceOf(source, sourceSymbol, Source);\n}\n"]}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/language/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AACpD,OAAO,EAAE,UAAU,EAAE,kCAAiC;AAOtD,MAAM,YAAY,GAAkB,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IAOjB,YACE,IAAY,EACZ,OAAe,iBAAiB,EAChC,iBAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAEjD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;cAEnC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;YAD9B,SAAS,QAEP,2DAA2D;cAG3D,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YADhC,SAAS,QAEP,6DAA6D;IAEjE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAe;IACtC,OAAO,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC","sourcesContent":["import { devAssert } from '../jsutils/devAssert.ts';\nimport { instanceOf } from '../jsutils/instanceOf.ts';\n\ninterface Location {\n line: number;\n column: number;\n}\n\nconst sourceSymbol: unique symbol = Symbol('Source');\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n readonly __kind: symbol;\n\n body: string;\n name: string;\n locationOffset: Location;\n\n constructor(\n body: string,\n name: string = 'GraphQL request',\n locationOffset: Location = { line: 1, column: 1 },\n ) {\n this.__kind = sourceSymbol;\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n devAssert(\n this.locationOffset.line > 0,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n devAssert(\n this.locationOffset.column > 0,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag](): string {\n return 'Source';\n }\n}\n\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\nexport function isSource(source: unknown): source is Source {\n return instanceOf(source, sourceSymbol, Source);\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { ASTNode } from './ast.js';
2
- import { Kind } from './kinds.js';
1
+ import type { ASTNode } from "./ast.mjs";
2
+ import { Kind } from "./kinds.mjs";
3
3
  /**
4
4
  * A visitor is provided to visit, it contains the collection of
5
5
  * relevant functions to be called during the visitor's traversal.
@@ -1,5 +1,5 @@
1
- import type { ASTNode } from './ast.js';
2
- import { Kind } from './kinds.js';
1
+ import type { ASTNode } from "./ast.js";
2
+ import { Kind } from "./kinds.js";
3
3
  /**
4
4
  * A visitor is provided to visit, it contains the collection of
5
5
  * relevant functions to be called during the visitor's traversal.
@@ -4,14 +4,14 @@ exports.BREAK = void 0;
4
4
  exports.visit = visit;
5
5
  exports.visitInParallel = visitInParallel;
6
6
  exports.getEnterLeaveForKind = getEnterLeaveForKind;
7
- const devAssert_js_1 = require("../jsutils/devAssert.js");
8
- const inspect_js_1 = require("../jsutils/inspect.js");
9
- const ast_js_1 = require("./ast.js");
10
- const kinds_js_1 = require("./kinds.js");
7
+ const devAssert_ts_1 = require("../jsutils/devAssert.js");
8
+ const inspect_ts_1 = require("../jsutils/inspect.js");
9
+ const ast_ts_1 = require("./ast.js");
10
+ const kinds_ts_1 = require("./kinds.js");
11
11
  exports.BREAK = Object.freeze({});
12
- function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
12
+ function visit(root, visitor, visitorKeys = ast_ts_1.QueryDocumentKeys) {
13
13
  const enterLeaveMap = new Map();
14
- for (const kind of Object.values(kinds_js_1.Kind)) {
14
+ for (const kind of Object.values(kinds_ts_1.Kind)) {
15
15
  enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));
16
16
  }
17
17
  /* eslint-disable no-undef-init */
@@ -72,8 +72,8 @@ function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
72
72
  }
73
73
  let result;
74
74
  if (!Array.isArray(node)) {
75
- if (!((0, ast_js_1.isNode)(node)))
76
- (0, devAssert_js_1.devAssert)(false, `Invalid AST Node: ${(0, inspect_js_1.inspect)(node)}.`);
75
+ if (!((0, ast_ts_1.isNode)(node)))
76
+ (0, devAssert_ts_1.devAssert)(false, `Invalid AST Node: ${(0, inspect_ts_1.inspect)(node)}.`);
77
77
  const visitFn = isLeaving
78
78
  ? enterLeaveMap.get(node.kind)?.leave
79
79
  : enterLeaveMap.get(node.kind)?.enter;
@@ -90,7 +90,7 @@ function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
90
90
  else if (result !== undefined) {
91
91
  edits.push([key, result]);
92
92
  if (!isLeaving) {
93
- if ((0, ast_js_1.isNode)(result)) {
93
+ if ((0, ast_ts_1.isNode)(result)) {
94
94
  node = result;
95
95
  }
96
96
  else {
@@ -133,7 +133,7 @@ function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
133
133
  function visitInParallel(visitors) {
134
134
  const skipping = new Array(visitors.length).fill(null);
135
135
  const mergedVisitor = Object.create(null);
136
- for (const kind of Object.values(kinds_js_1.Kind)) {
136
+ for (const kind of Object.values(kinds_ts_1.Kind)) {
137
137
  let hasVisitor = false;
138
138
  const enterList = new Array(visitors.length).fill(undefined);
139
139
  const leaveList = new Array(visitors.length).fill(undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/language/visitor.ts"],"names":[],"mappings":";;;AAgLA,sBA2HC;AAQD,0CA2DC;AAKD,oDAmBC;AAtYD,0DAAoD;AACpD,sDAAgD;AAGhD,qCAAqD;AACrD,yCAAkC;AAiFrB,QAAA,KAAK,GAAY,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AA0FhD,SAAgB,KAAK,CACnB,IAAa,EACb,OAAqC,EACrC,cAAgC,0BAAiB;IAEjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoC,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,eAAI,CAAC,EAAE,CAAC;QACvC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,kCAAkC;IAClC,IAAI,KAAK,GAAQ,SAAS,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,GAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,IAAI,GAAQ,IAAI,CAAC;IACrB,IAAI,GAAG,GAAQ,SAAS,CAAC;IACzB,IAAI,MAAM,GAAQ,SAAS,CAAC;IAC5B,MAAM,IAAI,GAAQ,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,iCAAiC;IAEjC,GAAG,CAAC;QACF,KAAK,EAAE,CAAC;QACR,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC;QACxC,MAAM,QAAQ,GAAG,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjE,IAAI,GAAG,MAAM,CAAC;YACd,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAEpB,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC;wBACzC,MAAM,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;wBACtC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;4BACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;4BACzB,UAAU,EAAE,CAAC;wBACf,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;wBAC7B,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;oBACnB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC;wBACzC,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACpB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAClB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACpB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,MAAM,CAAC;QACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;kBACf,IAAA,eAAM,EAAC,IAAI,CAAC;oBAAtB,wBAAS,SAAe,qBAAqB,IAAA,oBAAO,EAAC,IAAI,CAAC,GAAG;YAE7D,MAAM,OAAO,GAAG,SAAS;gBACvB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;gBACrC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;YAExC,MAAM,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAEpE,IAAI,MAAM,KAAK,aAAK,EAAE,CAAC;gBACrB,MAAM;YACR,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,SAAS;gBACX,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC;wBACnB,IAAI,GAAG,MAAM,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,EAAE,CAAC;wBACX,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACrD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,WAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,KAAK,GAAG,CAAC,CAAC,CAAC;YACX,KAAK,GAAG,EAAE,CAAC;YACX,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,QAAQ,KAAK,KAAK,SAAS,EAAE;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,WAAW;QACX,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAC7B,QAAmC;IAEnC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,eAAI,CAAC,EAAE,CAAC;QACvC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACjE,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC;YAC9C,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YACrB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAA+B;YACnD,KAAK,CAAC,GAAG,IAAI;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACtD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;4BACrB,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACrB,CAAC;6BAAM,IAAI,MAAM,KAAK,aAAK,EAAE,CAAC;4BAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAK,CAAC;wBACtB,CAAC;6BAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;4BAChC,OAAO,MAAM,CAAC;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,CAAC,GAAG,IAAI;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACtD,IAAI,MAAM,KAAK,aAAK,EAAE,CAAC;4BACrB,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAK,CAAC;wBACtB,CAAC;6BAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;4BACpD,OAAO,MAAM,CAAC;wBAChB,CAAC;oBACH,CAAC;yBAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;IACzC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,OAAmB,EACnB,IAAU;IAEV,MAAM,WAAW,GAGA,OAAe,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,uCAAuC;QACvC,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QAC7C,gBAAgB;QAChB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,6BAA6B;IAC7B,OAAO,EAAE,KAAK,EAAG,OAAe,CAAC,KAAK,EAAE,KAAK,EAAG,OAAe,CAAC,KAAK,EAAE,CAAC;AAC1E,CAAC","sourcesContent":["import { devAssert } from '../jsutils/devAssert.js';\nimport { inspect } from '../jsutils/inspect.js';\n\nimport type { ASTNode } from './ast.js';\nimport { isNode, QueryDocumentKeys } from './ast.js';\nimport { Kind } from './kinds.js';\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\nexport type ASTVisitFn<TVisitedNode extends ASTNode> = (\n /** The current node being visiting. */\n node: TVisitedNode,\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\n/**\n * A reducer is comprised of reducer functions which convert AST nodes into\n * another form.\n */\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n /** The current node being visiting. */\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends ASTNode\n ? R\n : T extends ReadonlyArray<ASTNode>\n ? ReadonlyArray<R>\n : T;\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport type ASTVisitorKeyMap = {\n [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;\n};\n\nexport const BREAK: unknown = Object.freeze({});\n\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\nexport function visit<N extends ASTNode>(\n root: N,\n visitor: ASTVisitor,\n visitorKeys?: ASTVisitorKeyMap,\n): N;\nexport function visit<R>(\n root: ASTNode,\n visitor: ASTReducer<R>,\n visitorKeys?: ASTVisitorKeyMap,\n): R;\nexport function visit(\n root: ASTNode,\n visitor: ASTVisitor | ASTReducer<any>,\n visitorKeys: ASTVisitorKeyMap = QueryDocumentKeys,\n): any {\n const enterLeaveMap = new Map<Kind, EnterLeaveVisitor<ASTNode>>();\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n\n /* eslint-disable no-undef-init */\n let stack: any = undefined;\n let inArray = Array.isArray(root);\n let keys: any = [root];\n let index = -1;\n let edits = [];\n let node: any = root;\n let key: any = undefined;\n let parent: any = undefined;\n const path: any = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n\n let editOffset = 0;\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = { ...node };\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent != null) {\n key = inArray ? index : keys[index];\n node = parent[key];\n if (node === null || node === undefined) {\n continue;\n }\n path.push(key);\n }\n\n let result;\n if (!Array.isArray(node)) {\n devAssert(isNode(node), `Invalid AST Node: ${inspect(node)}.`);\n\n const visitFn = isLeaving\n ? enterLeaveMap.get(node.kind)?.leave\n : enterLeaveMap.get(node.kind)?.enter;\n\n result = visitFn?.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = { inArray, index, keys, edits, prev: stack };\n inArray = Array.isArray(node);\n keys = inArray ? node : ((visitorKeys as any)[node.kind] ?? []);\n index = -1;\n edits = [];\n if (parent != null) {\n ancestors.push(parent);\n }\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits.at(-1)[1];\n }\n\n return root;\n}\n\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\nexport function visitInParallel(\n visitors: ReadonlyArray<ASTVisitor>,\n): ASTVisitor {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor ||= enter != null || leave != null;\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave: EnterLeaveVisitor<ASTNode> = {\n enter(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = enterList[i]?.apply(visitors[i], args);\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n leave(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = leaveList[i]?.apply(visitors[i], args);\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\nexport function getEnterLeaveForKind(\n visitor: ASTVisitor,\n kind: Kind,\n): EnterLeaveVisitor<ASTNode> {\n const kindVisitor:\n | ASTVisitFn<ASTNode>\n | EnterLeaveVisitor<ASTNode>\n | undefined = (visitor as any)[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return { enter: kindVisitor, leave: undefined };\n }\n\n // { enter() {}, leave() {} }\n return { enter: (visitor as any).enter, leave: (visitor as any).leave };\n}\n"]}
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/language/visitor.ts"],"names":[],"mappings":"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","sourcesContent":["import { devAssert } from '../jsutils/devAssert.ts';\nimport { inspect } from '../jsutils/inspect.ts';\n\nimport type { ASTNode } from './ast.ts';\nimport { isNode, QueryDocumentKeys } from './ast.ts';\nimport { Kind } from './kinds.ts';\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\nexport type ASTVisitFn<TVisitedNode extends ASTNode> = (\n /** The current node being visiting. */\n node: TVisitedNode,\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\n/**\n * A reducer is comprised of reducer functions which convert AST nodes into\n * another form.\n */\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n /** The current node being visiting. */\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends ASTNode\n ? R\n : T extends ReadonlyArray<ASTNode>\n ? ReadonlyArray<R>\n : T;\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport type ASTVisitorKeyMap = {\n [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;\n};\n\nexport const BREAK: unknown = Object.freeze({});\n\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\nexport function visit<N extends ASTNode>(\n root: N,\n visitor: ASTVisitor,\n visitorKeys?: ASTVisitorKeyMap,\n): N;\nexport function visit<R>(\n root: ASTNode,\n visitor: ASTReducer<R>,\n visitorKeys?: ASTVisitorKeyMap,\n): R;\nexport function visit(\n root: ASTNode,\n visitor: ASTVisitor | ASTReducer<any>,\n visitorKeys: ASTVisitorKeyMap = QueryDocumentKeys,\n): any {\n const enterLeaveMap = new Map<Kind, EnterLeaveVisitor<ASTNode>>();\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n\n /* eslint-disable no-undef-init */\n let stack: any = undefined;\n let inArray = Array.isArray(root);\n let keys: any = [root];\n let index = -1;\n let edits = [];\n let node: any = root;\n let key: any = undefined;\n let parent: any = undefined;\n const path: any = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n\n let editOffset = 0;\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = { ...node };\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent != null) {\n key = inArray ? index : keys[index];\n node = parent[key];\n if (node === null || node === undefined) {\n continue;\n }\n path.push(key);\n }\n\n let result;\n if (!Array.isArray(node)) {\n devAssert(isNode(node), `Invalid AST Node: ${inspect(node)}.`);\n\n const visitFn = isLeaving\n ? enterLeaveMap.get(node.kind)?.leave\n : enterLeaveMap.get(node.kind)?.enter;\n\n result = visitFn?.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = { inArray, index, keys, edits, prev: stack };\n inArray = Array.isArray(node);\n keys = inArray ? node : ((visitorKeys as any)[node.kind] ?? []);\n index = -1;\n edits = [];\n if (parent != null) {\n ancestors.push(parent);\n }\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits.at(-1)[1];\n }\n\n return root;\n}\n\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\nexport function visitInParallel(\n visitors: ReadonlyArray<ASTVisitor>,\n): ASTVisitor {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor ||= enter != null || leave != null;\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave: EnterLeaveVisitor<ASTNode> = {\n enter(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = enterList[i]?.apply(visitors[i], args);\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n leave(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = leaveList[i]?.apply(visitors[i], args);\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\nexport function getEnterLeaveForKind(\n visitor: ASTVisitor,\n kind: Kind,\n): EnterLeaveVisitor<ASTNode> {\n const kindVisitor:\n | ASTVisitFn<ASTNode>\n | EnterLeaveVisitor<ASTNode>\n | undefined = (visitor as any)[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return { enter: kindVisitor, leave: undefined };\n }\n\n // { enter() {}, leave() {} }\n return { enter: (visitor as any).enter, leave: (visitor as any).leave };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/language/visitor.ts"],"names":[],"mappings":"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","sourcesContent":["import { devAssert } from '../jsutils/devAssert.js';\nimport { inspect } from '../jsutils/inspect.js';\n\nimport type { ASTNode } from './ast.js';\nimport { isNode, QueryDocumentKeys } from './ast.js';\nimport { Kind } from './kinds.js';\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\nexport type ASTVisitFn<TVisitedNode extends ASTNode> = (\n /** The current node being visiting. */\n node: TVisitedNode,\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\n/**\n * A reducer is comprised of reducer functions which convert AST nodes into\n * another form.\n */\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n /** The current node being visiting. */\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends ASTNode\n ? R\n : T extends ReadonlyArray<ASTNode>\n ? ReadonlyArray<R>\n : T;\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport type ASTVisitorKeyMap = {\n [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;\n};\n\nexport const BREAK: unknown = Object.freeze({});\n\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\nexport function visit<N extends ASTNode>(\n root: N,\n visitor: ASTVisitor,\n visitorKeys?: ASTVisitorKeyMap,\n): N;\nexport function visit<R>(\n root: ASTNode,\n visitor: ASTReducer<R>,\n visitorKeys?: ASTVisitorKeyMap,\n): R;\nexport function visit(\n root: ASTNode,\n visitor: ASTVisitor | ASTReducer<any>,\n visitorKeys: ASTVisitorKeyMap = QueryDocumentKeys,\n): any {\n const enterLeaveMap = new Map<Kind, EnterLeaveVisitor<ASTNode>>();\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n\n /* eslint-disable no-undef-init */\n let stack: any = undefined;\n let inArray = Array.isArray(root);\n let keys: any = [root];\n let index = -1;\n let edits = [];\n let node: any = root;\n let key: any = undefined;\n let parent: any = undefined;\n const path: any = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n\n let editOffset = 0;\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = { ...node };\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent != null) {\n key = inArray ? index : keys[index];\n node = parent[key];\n if (node === null || node === undefined) {\n continue;\n }\n path.push(key);\n }\n\n let result;\n if (!Array.isArray(node)) {\n devAssert(isNode(node), `Invalid AST Node: ${inspect(node)}.`);\n\n const visitFn = isLeaving\n ? enterLeaveMap.get(node.kind)?.leave\n : enterLeaveMap.get(node.kind)?.enter;\n\n result = visitFn?.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = { inArray, index, keys, edits, prev: stack };\n inArray = Array.isArray(node);\n keys = inArray ? node : ((visitorKeys as any)[node.kind] ?? []);\n index = -1;\n edits = [];\n if (parent != null) {\n ancestors.push(parent);\n }\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits.at(-1)[1];\n }\n\n return root;\n}\n\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\nexport function visitInParallel(\n visitors: ReadonlyArray<ASTVisitor>,\n): ASTVisitor {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor ||= enter != null || leave != null;\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave: EnterLeaveVisitor<ASTNode> = {\n enter(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = enterList[i]?.apply(visitors[i], args);\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n leave(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = leaveList[i]?.apply(visitors[i], args);\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\nexport function getEnterLeaveForKind(\n visitor: ASTVisitor,\n kind: Kind,\n): EnterLeaveVisitor<ASTNode> {\n const kindVisitor:\n | ASTVisitFn<ASTNode>\n | EnterLeaveVisitor<ASTNode>\n | undefined = (visitor as any)[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return { enter: kindVisitor, leave: undefined };\n }\n\n // { enter() {}, leave() {} }\n return { enter: (visitor as any).enter, leave: (visitor as any).leave };\n}\n"]}
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/language/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AACpD,OAAO,EAAE,OAAO,EAAE,+BAA8B;AAGhD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,kBAAiB;AACrD,OAAO,EAAE,IAAI,EAAE,oBAAmB;AAiFlC,MAAM,CAAC,MAAM,KAAK,GAAY,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AA0FhD,MAAM,UAAU,KAAK,CACnB,IAAa,EACb,OAAqC,EACrC,cAAgC,iBAAiB;IAEjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoC,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,kCAAkC;IAClC,IAAI,KAAK,GAAQ,SAAS,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,GAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,IAAI,GAAQ,IAAI,CAAC;IACrB,IAAI,GAAG,GAAQ,SAAS,CAAC;IACzB,IAAI,MAAM,GAAQ,SAAS,CAAC;IAC5B,MAAM,IAAI,GAAQ,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,iCAAiC;IAEjC,GAAG,CAAC;QACF,KAAK,EAAE,CAAC;QACR,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC;QACxC,MAAM,QAAQ,GAAG,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjE,IAAI,GAAG,MAAM,CAAC;YACd,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAEpB,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC;wBACzC,MAAM,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;wBACtC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;4BACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;4BACzB,UAAU,EAAE,CAAC;wBACf,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;wBAC7B,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;oBACnB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC;wBACzC,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACpB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAClB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACpB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,MAAM,CAAC;QACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;kBACf,MAAM,CAAC,IAAI,CAAC;gBAAtB,SAAS,QAAe,qBAAqB,OAAO,CAAC,IAAI,CAAC,GAAG;YAE7D,MAAM,OAAO,GAAG,SAAS;gBACvB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;gBACrC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;YAExC,MAAM,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAEpE,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM;YACR,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,SAAS;gBACX,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;wBACnB,IAAI,GAAG,MAAM,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,EAAE,CAAC;wBACX,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACrD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,WAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,KAAK,GAAG,CAAC,CAAC,CAAC;YACX,KAAK,GAAG,EAAE,CAAC;YACX,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,QAAQ,KAAK,KAAK,SAAS,EAAE;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,WAAW;QACX,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAmC;IAEnC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACjE,UAAU,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC;YAC9C,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YACrB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAA+B;YACnD,KAAK,CAAC,GAAG,IAAI;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACtD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;4BACrB,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACrB,CAAC;6BAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;4BAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBACtB,CAAC;6BAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;4BAChC,OAAO,MAAM,CAAC;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,CAAC,GAAG,IAAI;gBACX,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACtD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;4BACrB,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBACtB,CAAC;6BAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;4BACpD,OAAO,MAAM,CAAC;wBAChB,CAAC;oBACH,CAAC;yBAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;IACzC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAmB,EACnB,IAAU;IAEV,MAAM,WAAW,GAGA,OAAe,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,uCAAuC;QACvC,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QAC7C,gBAAgB;QAChB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,6BAA6B;IAC7B,OAAO,EAAE,KAAK,EAAG,OAAe,CAAC,KAAK,EAAE,KAAK,EAAG,OAAe,CAAC,KAAK,EAAE,CAAC;AAC1E,CAAC","sourcesContent":["import { devAssert } from '../jsutils/devAssert.ts';\nimport { inspect } from '../jsutils/inspect.ts';\n\nimport type { ASTNode } from './ast.ts';\nimport { isNode, QueryDocumentKeys } from './ast.ts';\nimport { Kind } from './kinds.ts';\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\nexport type ASTVisitFn<TVisitedNode extends ASTNode> = (\n /** The current node being visiting. */\n node: TVisitedNode,\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\n/**\n * A reducer is comprised of reducer functions which convert AST nodes into\n * another form.\n */\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n /** The current node being visiting. */\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends ASTNode\n ? R\n : T extends ReadonlyArray<ASTNode>\n ? ReadonlyArray<R>\n : T;\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport type ASTVisitorKeyMap = {\n [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;\n};\n\nexport const BREAK: unknown = Object.freeze({});\n\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\nexport function visit<N extends ASTNode>(\n root: N,\n visitor: ASTVisitor,\n visitorKeys?: ASTVisitorKeyMap,\n): N;\nexport function visit<R>(\n root: ASTNode,\n visitor: ASTReducer<R>,\n visitorKeys?: ASTVisitorKeyMap,\n): R;\nexport function visit(\n root: ASTNode,\n visitor: ASTVisitor | ASTReducer<any>,\n visitorKeys: ASTVisitorKeyMap = QueryDocumentKeys,\n): any {\n const enterLeaveMap = new Map<Kind, EnterLeaveVisitor<ASTNode>>();\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n\n /* eslint-disable no-undef-init */\n let stack: any = undefined;\n let inArray = Array.isArray(root);\n let keys: any = [root];\n let index = -1;\n let edits = [];\n let node: any = root;\n let key: any = undefined;\n let parent: any = undefined;\n const path: any = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n\n let editOffset = 0;\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = { ...node };\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent != null) {\n key = inArray ? index : keys[index];\n node = parent[key];\n if (node === null || node === undefined) {\n continue;\n }\n path.push(key);\n }\n\n let result;\n if (!Array.isArray(node)) {\n devAssert(isNode(node), `Invalid AST Node: ${inspect(node)}.`);\n\n const visitFn = isLeaving\n ? enterLeaveMap.get(node.kind)?.leave\n : enterLeaveMap.get(node.kind)?.enter;\n\n result = visitFn?.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = { inArray, index, keys, edits, prev: stack };\n inArray = Array.isArray(node);\n keys = inArray ? node : ((visitorKeys as any)[node.kind] ?? []);\n index = -1;\n edits = [];\n if (parent != null) {\n ancestors.push(parent);\n }\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits.at(-1)[1];\n }\n\n return root;\n}\n\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\nexport function visitInParallel(\n visitors: ReadonlyArray<ASTVisitor>,\n): ASTVisitor {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor ||= enter != null || leave != null;\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave: EnterLeaveVisitor<ASTNode> = {\n enter(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = enterList[i]?.apply(visitors[i], args);\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n leave(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = leaveList[i]?.apply(visitors[i], args);\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\nexport function getEnterLeaveForKind(\n visitor: ASTVisitor,\n kind: Kind,\n): EnterLeaveVisitor<ASTNode> {\n const kindVisitor:\n | ASTVisitFn<ASTNode>\n | EnterLeaveVisitor<ASTNode>\n | undefined = (visitor as any)[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return { enter: kindVisitor, leave: undefined };\n }\n\n // { enter() {}, leave() {} }\n return { enter: (visitor as any).enter, leave: (visitor as any).leave };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql",
3
- "version": "17.0.0-beta.0",
3
+ "version": "17.0.0-beta.1",
4
4
  "description": "A Query Language and Runtime which can target any service.",
5
5
  "license": "MIT",
6
6
  "typesVersions": {
@@ -31,7 +31,7 @@
31
31
  "graphql-js"
32
32
  ],
33
33
  "engines": {
34
- "node": "^20.0.0 || ^22.0.0 || ^24.0.0 || >=25.0.0"
34
+ "node": "^22.0.0 || ^24.0.0 || ^25.0.0 || >=26.0.0"
35
35
  },
36
36
  "publishConfig": {
37
37
  "tag": "beta"
@@ -2,22 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertName = assertName;
4
4
  exports.assertEnumValueName = assertEnumValueName;
5
- const GraphQLError_js_1 = require("../error/GraphQLError.js");
6
- const characterClasses_js_1 = require("../language/characterClasses.js");
5
+ const GraphQLError_ts_1 = require("../error/GraphQLError.js");
6
+ const characterClasses_ts_1 = require("../language/characterClasses.js");
7
7
  /**
8
8
  * Upholds the spec rules about naming.
9
9
  */
10
10
  function assertName(name) {
11
11
  if (name.length === 0) {
12
- throw new GraphQLError_js_1.GraphQLError('Expected name to be a non-empty string.');
12
+ throw new GraphQLError_ts_1.GraphQLError('Expected name to be a non-empty string.');
13
13
  }
14
14
  for (let i = 1; i < name.length; ++i) {
15
- if (!(0, characterClasses_js_1.isNameContinue)(name.charCodeAt(i))) {
16
- throw new GraphQLError_js_1.GraphQLError(`Names must only contain [_a-zA-Z0-9] but "${name}" does not.`);
15
+ if (!(0, characterClasses_ts_1.isNameContinue)(name.charCodeAt(i))) {
16
+ throw new GraphQLError_ts_1.GraphQLError(`Names must only contain [_a-zA-Z0-9] but "${name}" does not.`);
17
17
  }
18
18
  }
19
- if (!(0, characterClasses_js_1.isNameStart)(name.charCodeAt(0))) {
20
- throw new GraphQLError_js_1.GraphQLError(`Names must start with [_a-zA-Z] but "${name}" does not.`);
19
+ if (!(0, characterClasses_ts_1.isNameStart)(name.charCodeAt(0))) {
20
+ throw new GraphQLError_ts_1.GraphQLError(`Names must start with [_a-zA-Z] but "${name}" does not.`);
21
21
  }
22
22
  return name;
23
23
  }
@@ -28,7 +28,7 @@ function assertName(name) {
28
28
  */
29
29
  function assertEnumValueName(name) {
30
30
  if (name === 'true' || name === 'false' || name === 'null') {
31
- throw new GraphQLError_js_1.GraphQLError(`Enum values cannot be named: ${name}`);
31
+ throw new GraphQLError_ts_1.GraphQLError(`Enum values cannot be named: ${name}`);
32
32
  }
33
33
  return assertName(name);
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assertName.js","sourceRoot":"","sources":["../../src/type/assertName.ts"],"names":[],"mappings":";;AAOA,gCAoBC;AAOD,kDAKC;AAvCD,8DAAwD;AAExD,yEAA8E;AAE9E;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,8BAAY,CAAC,yCAAyC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,IAAA,oCAAc,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,8BAAY,CACpB,6CAA6C,IAAI,aAAa,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAA,iCAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,8BAAY,CACpB,wCAAwC,IAAI,aAAa,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,8BAAY,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import { GraphQLError } from '../error/GraphQLError.js';\n\nimport { isNameContinue, isNameStart } from '../language/characterClasses.js';\n\n/**\n * Upholds the spec rules about naming.\n */\nexport function assertName(name: string): string {\n if (name.length === 0) {\n throw new GraphQLError('Expected name to be a non-empty string.');\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!isNameContinue(name.charCodeAt(i))) {\n throw new GraphQLError(\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!isNameStart(name.charCodeAt(0))) {\n throw new GraphQLError(\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\nexport function assertEnumValueName(name: string): string {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new GraphQLError(`Enum values cannot be named: ${name}`);\n }\n return assertName(name);\n}\n"]}
1
+ {"version":3,"file":"assertName.js","sourceRoot":"","sources":["../../src/type/assertName.ts"],"names":[],"mappings":";;AAOA,gCAoBC;AAOD,kDAKC;AAvCD,8DAAwD;AAExD,yEAA8E;AAE9E;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,8BAAY,CAAC,yCAAyC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,IAAA,oCAAc,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,8BAAY,CACpB,6CAA6C,IAAI,aAAa,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAA,iCAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,8BAAY,CACpB,wCAAwC,IAAI,aAAa,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,8BAAY,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import { GraphQLError } from '../error/GraphQLError.ts';\n\nimport { isNameContinue, isNameStart } from '../language/characterClasses.ts';\n\n/**\n * Upholds the spec rules about naming.\n */\nexport function assertName(name: string): string {\n if (name.length === 0) {\n throw new GraphQLError('Expected name to be a non-empty string.');\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!isNameContinue(name.charCodeAt(i))) {\n throw new GraphQLError(\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!isNameStart(name.charCodeAt(0))) {\n throw new GraphQLError(\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\nexport function assertEnumValueName(name: string): string {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new GraphQLError(`Enum values cannot be named: ${name}`);\n }\n return assertName(name);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"assertName.js","sourceRoot":"","sources":["../../src/type/assertName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kCAAiC;AAExD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,yCAAwC;AAE9E;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,YAAY,CAAC,yCAAyC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,YAAY,CACpB,6CAA6C,IAAI,aAAa,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,YAAY,CACpB,wCAAwC,IAAI,aAAa,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,YAAY,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import { GraphQLError } from '../error/GraphQLError.js';\n\nimport { isNameContinue, isNameStart } from '../language/characterClasses.js';\n\n/**\n * Upholds the spec rules about naming.\n */\nexport function assertName(name: string): string {\n if (name.length === 0) {\n throw new GraphQLError('Expected name to be a non-empty string.');\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!isNameContinue(name.charCodeAt(i))) {\n throw new GraphQLError(\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!isNameStart(name.charCodeAt(0))) {\n throw new GraphQLError(\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\nexport function assertEnumValueName(name: string): string {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new GraphQLError(`Enum values cannot be named: ${name}`);\n }\n return assertName(name);\n}\n"]}
1
+ {"version":3,"file":"assertName.js","sourceRoot":"","sources":["../../src/type/assertName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kCAAiC;AAExD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,yCAAwC;AAE9E;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,YAAY,CAAC,yCAAyC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,YAAY,CACpB,6CAA6C,IAAI,aAAa,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,YAAY,CACpB,wCAAwC,IAAI,aAAa,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,YAAY,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import { GraphQLError } from '../error/GraphQLError.ts';\n\nimport { isNameContinue, isNameStart } from '../language/characterClasses.ts';\n\n/**\n * Upholds the spec rules about naming.\n */\nexport function assertName(name: string): string {\n if (name.length === 0) {\n throw new GraphQLError('Expected name to be a non-empty string.');\n }\n\n for (let i = 1; i < name.length; ++i) {\n if (!isNameContinue(name.charCodeAt(i))) {\n throw new GraphQLError(\n `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n );\n }\n }\n\n if (!isNameStart(name.charCodeAt(0))) {\n throw new GraphQLError(\n `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n );\n }\n\n return name;\n}\n\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\nexport function assertEnumValueName(name: string): string {\n if (name === 'true' || name === 'false' || name === 'null') {\n throw new GraphQLError(`Enum values cannot be named: ${name}`);\n }\n return assertName(name);\n}\n"]}
@@ -1,12 +1,12 @@
1
- import type { Maybe } from '../jsutils/Maybe.js';
2
- import type { ObjMap } from '../jsutils/ObjMap.js';
3
- import type { Path } from '../jsutils/Path.js';
4
- import type { PromiseOrValue } from '../jsutils/PromiseOrValue.js';
5
- import type { ConstValueNode, EnumTypeDefinitionNode, EnumTypeExtensionNode, EnumValueDefinitionNode, FieldDefinitionNode, FieldNode, FragmentDefinitionNode, InputObjectTypeDefinitionNode, InputObjectTypeExtensionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, InterfaceTypeExtensionNode, ObjectTypeDefinitionNode, ObjectTypeExtensionNode, OperationDefinitionNode, ScalarTypeDefinitionNode, ScalarTypeExtensionNode, UnionTypeDefinitionNode, UnionTypeExtensionNode, ValueNode } from '../language/ast.js';
6
- import type { GraphQLVariableSignature } from '../execution/getVariableSignature.js';
7
- import type { VariableValues } from '../execution/values.js';
8
- import type { GraphQLDirective } from './directives.js';
9
- import type { GraphQLSchema } from './schema.js';
1
+ import type { Maybe } from "../jsutils/Maybe.mjs";
2
+ import type { ObjMap } from "../jsutils/ObjMap.mjs";
3
+ import type { Path } from "../jsutils/Path.mjs";
4
+ import type { PromiseOrValue } from "../jsutils/PromiseOrValue.mjs";
5
+ import type { ConstValueNode, EnumTypeDefinitionNode, EnumTypeExtensionNode, EnumValueDefinitionNode, FieldDefinitionNode, FieldNode, FragmentDefinitionNode, InputObjectTypeDefinitionNode, InputObjectTypeExtensionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, InterfaceTypeExtensionNode, ObjectTypeDefinitionNode, ObjectTypeExtensionNode, OperationDefinitionNode, ScalarTypeDefinitionNode, ScalarTypeExtensionNode, UnionTypeDefinitionNode, UnionTypeExtensionNode, ValueNode } from "../language/ast.mjs";
6
+ import type { GraphQLVariableSignature } from "../execution/getVariableSignature.mjs";
7
+ import type { VariableValues } from "../execution/values.mjs";
8
+ import type { GraphQLDirective } from "./directives.mjs";
9
+ import type { GraphQLSchema } from "./schema.mjs";
10
10
  /**
11
11
  * These are all of the possible kinds of types.
12
12
  */
@@ -1,12 +1,12 @@
1
- import type { Maybe } from '../jsutils/Maybe.js';
2
- import type { ObjMap } from '../jsutils/ObjMap.js';
3
- import type { Path } from '../jsutils/Path.js';
4
- import type { PromiseOrValue } from '../jsutils/PromiseOrValue.js';
5
- import type { ConstValueNode, EnumTypeDefinitionNode, EnumTypeExtensionNode, EnumValueDefinitionNode, FieldDefinitionNode, FieldNode, FragmentDefinitionNode, InputObjectTypeDefinitionNode, InputObjectTypeExtensionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, InterfaceTypeExtensionNode, ObjectTypeDefinitionNode, ObjectTypeExtensionNode, OperationDefinitionNode, ScalarTypeDefinitionNode, ScalarTypeExtensionNode, UnionTypeDefinitionNode, UnionTypeExtensionNode, ValueNode } from '../language/ast.js';
6
- import type { GraphQLVariableSignature } from '../execution/getVariableSignature.js';
7
- import type { VariableValues } from '../execution/values.js';
8
- import type { GraphQLDirective } from './directives.js';
9
- import type { GraphQLSchema } from './schema.js';
1
+ import type { Maybe } from "../jsutils/Maybe.js";
2
+ import type { ObjMap } from "../jsutils/ObjMap.js";
3
+ import type { Path } from "../jsutils/Path.js";
4
+ import type { PromiseOrValue } from "../jsutils/PromiseOrValue.js";
5
+ import type { ConstValueNode, EnumTypeDefinitionNode, EnumTypeExtensionNode, EnumValueDefinitionNode, FieldDefinitionNode, FieldNode, FragmentDefinitionNode, InputObjectTypeDefinitionNode, InputObjectTypeExtensionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, InterfaceTypeExtensionNode, ObjectTypeDefinitionNode, ObjectTypeExtensionNode, OperationDefinitionNode, ScalarTypeDefinitionNode, ScalarTypeExtensionNode, UnionTypeDefinitionNode, UnionTypeExtensionNode, ValueNode } from "../language/ast.js";
6
+ import type { GraphQLVariableSignature } from "../execution/getVariableSignature.js";
7
+ import type { VariableValues } from "../execution/values.js";
8
+ import type { GraphQLDirective } from "./directives.js";
9
+ import type { GraphQLSchema } from "./schema.js";
10
10
  /**
11
11
  * These are all of the possible kinds of types.
12
12
  */