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":"WorkQueue.js","sourceRoot":"","sources":["../../../src/execution/incremental/WorkQueue.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPromise } from '../../jsutils/isPromise.js';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.js';\n\nimport type { Computation } from './Computation.js';\nimport { Queue } from './Queue.js';\n\nexport interface Group<TSelf extends Group<TSelf>> {\n parent?: TSelf | undefined;\n}\n\ninterface WorkResult<\n TValue,\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n value: TValue;\n work?: Work<T, I, G, S> | undefined;\n}\n\nexport interface Stream<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n queue: Queue<StreamItem<T, I, G, S>>;\n}\n\nexport interface Work<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups?: ReadonlyArray<G>;\n tasks?: ReadonlyArray<Task<T, I, G, S>>;\n streams?: ReadonlyArray<S>;\n}\n\ninterface NewWork<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n}\n\nexport interface WorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n initialGroups: ReadonlyArray<G>;\n initialStreams: ReadonlyArray<S>;\n events: AsyncGenerator<ReadonlyArray<WorkQueueEvent<T, I, G, S>>, void, void>;\n}\n\nexport type StreamItem<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<I, T, I, G, S>;\n\nexport type TaskResult<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<T, T, I, G, S>;\n\nexport interface Task<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups: ReadonlyArray<G>;\n computation: Computation<TaskResult<T, I, G, S>>;\n}\n\ninterface TaskSuccessGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_SUCCESS';\n task: Task<T, I, G, S>;\n result: TaskResult<T, I, G, S>;\n}\n\ninterface TaskFailureGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_FAILURE';\n task: Task<T, I, G, S>;\n error: unknown;\n}\n\ninterface StreamItemsEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_ITEMS';\n stream: S;\n items: Generator<StreamItem<T, I, G, S>>;\n}\n\ninterface StreamSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_SUCCESS';\n stream: S;\n}\n\ninterface StreamFailureEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_FAILURE';\n stream: S;\n error: unknown;\n}\n\ntype GraphEvent<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> =\n | TaskSuccessGraphEvent<T, I, G, S>\n | TaskFailureGraphEvent<T, I, G, S>\n | StreamItemsEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>;\n\ninterface GroupValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'GROUP_VALUES';\n group: G;\n values: ReadonlyArray<T>;\n}\n\ninterface GroupSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'GROUP_SUCCESS';\n group: G;\n}\n\ninterface GroupFailureEvent<G extends Group<G>> {\n kind: 'GROUP_FAILURE';\n group: G;\n error: unknown;\n}\n\ninterface StreamValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'STREAM_VALUES';\n stream: S;\n values: ReadonlyArray<I>;\n}\n\ninterface WorkQueueTerminationEvent {\n kind: 'WORK_QUEUE_TERMINATION';\n}\n\nexport type WorkQueueEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> =\n | GroupValuesEvent<T, I, G, S>\n | GroupSuccessEvent<T, I, G, S>\n | GroupFailureEvent<G>\n | StreamValuesEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>\n | WorkQueueTerminationEvent;\n\ninterface GroupNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n childGroups: Array<G>;\n tasks: Set<Task<T, I, G, S>>;\n pending: number;\n}\n\ninterface TaskNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n value: T | undefined;\n childStreams: Array<S>;\n}\n\n/** @internal */\nexport function createWorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n>(initialWork: Work<T, I, G, S> | undefined): WorkQueue<T, I, G, S> {\n const rootGroups = new Set<G>();\n const rootStreams = new Set<S>();\n const groupNodes = new Map<G, GroupNode<T, I, G, S>>();\n const taskNodes = new Map<Task<T, I, G, S>, TaskNode<T, I, G, S>>();\n let pushGraphEvent!: (e: GraphEvent<T, I, G, S>) => PromiseOrValue<void>;\n let stopGraphEvents!: (err?: unknown) => PromiseOrValue<void>;\n\n const { newGroups: initialRootGroups, newStreams: initialRootStreams } =\n maybeIntegrateWork(initialWork);\n const nonEmptyInitialRootGroups = pruneEmptyGroups(initialRootGroups);\n // Initialize root groups and streams at startup to prepare for cancellation\n // prior to starting the work queue\n for (const group of nonEmptyInitialRootGroups) {\n rootGroups.add(group);\n }\n for (const stream of initialRootStreams) {\n rootStreams.add(stream);\n }\n\n const events = new Queue<GraphEvent<T, I, G, S>>(\n ({ push: _push, stop: _stop, onStop, started }) => {\n pushGraphEvent = _push;\n stopGraphEvents = _stop;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n started.then(() => {\n for (const group of rootGroups) {\n startGroup(group);\n }\n for (const stream of rootStreams) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n });\n onStop((reason) => cancel(reason));\n },\n 1,\n ).subscribe((graphEvents) => handleGraphEvents(graphEvents));\n\n return {\n initialGroups: nonEmptyInitialRootGroups,\n initialStreams: initialRootStreams,\n events,\n };\n\n function cancel(reason?: unknown): PromiseOrValue<void> {\n const cancelPromises: Array<Promise<unknown>> = [];\n for (const group of rootGroups) {\n cancelGroup(group, reason, cancelPromises);\n }\n for (const stream of rootStreams) {\n cancelStream(stream, reason, cancelPromises);\n }\n if (cancelPromises.length > 0) {\n return Promise.allSettled(cancelPromises).then(() => undefined);\n }\n }\n\n function cancelGroup(\n group: G,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n cancelTask(task, reason, cancelPromises);\n }\n for (const childGroup of groupNode.childGroups) {\n cancelGroup(childGroup, reason, cancelPromises);\n }\n }\n }\n\n function cancelTask(\n task: Task<T, I, G, S>,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = task.computation.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n for (const childStream of taskNode.childStreams) {\n cancelStream(childStream, reason, cancelPromises);\n }\n }\n }\n\n function cancelStream(\n stream: S,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = stream.queue.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n }\n\n function maybeIntegrateWork(\n work: Work<T, I, G, S> | undefined,\n parentTask?: Task<T, I, G, S>,\n ): NewWork<T, I, G, S> {\n if (!work) {\n return { newGroups: [], newStreams: [] };\n }\n const { groups, tasks, streams } = work;\n const newGroups = groups ? addGroups(groups, parentTask) : [];\n if (tasks) {\n for (const task of tasks) {\n addTask(task);\n }\n }\n const newStreams = streams ? addStreams(streams, parentTask) : [];\n return { newGroups, newStreams };\n }\n\n function addGroups(\n originalGroups: ReadonlyArray<G>,\n parentTask?: Task<T, I, G, S>,\n ): Array<G> {\n const groupSet = new Set(originalGroups);\n const visited = new Set<G>();\n const newRootGroups: Array<G> = [];\n for (const group of originalGroups) {\n addGroup(group, groupSet, newRootGroups, visited, parentTask);\n }\n return newRootGroups;\n }\n\n function addGroup(\n group: G,\n groupSet: ReadonlySet<G>,\n newRootGroups: Array<G>,\n visited: Set<G>,\n parentTask?: Task<T, I, G, S>,\n ): void {\n if (visited.has(group)) {\n return;\n }\n visited.add(group);\n const parent = group.parent;\n if (parent !== undefined && groupSet.has(parent)) {\n addGroup(parent, groupSet, newRootGroups, visited, parentTask);\n }\n\n const groupNode: GroupNode<T, I, G, S> = {\n childGroups: [],\n tasks: new Set(),\n pending: 0,\n };\n groupNodes.set(group, groupNode);\n\n if (parentTask === undefined && !parent) {\n newRootGroups.push(group);\n } else if (parent) {\n groupNodes.get(parent)?.childGroups.push(group);\n }\n }\n\n function addTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.tasks.add(task);\n groupNode.pending++;\n if (rootGroups.has(group)) {\n startTask(task);\n }\n }\n }\n }\n\n function addStreams(\n streams: ReadonlyArray<S>,\n parentTask?: Task<T, I, G, S>,\n ): ReadonlyArray<S> {\n if (!parentTask) {\n return streams;\n }\n const taskNode = taskNodes.get(parentTask);\n if (taskNode) {\n taskNode.childStreams.push(...streams);\n }\n return [];\n }\n\n function pruneEmptyGroups(\n newGroups: ReadonlyArray<G>,\n nonEmptyNewGroups: Array<G> = [],\n ): ReadonlyArray<G> {\n for (const newGroup of newGroups) {\n const newGroupState = groupNodes.get(newGroup);\n if (newGroupState) {\n if (newGroupState.pending === 0) {\n groupNodes.delete(newGroup);\n pruneEmptyGroups(newGroupState.childGroups, nonEmptyNewGroups);\n } else {\n nonEmptyNewGroups.push(newGroup);\n }\n }\n }\n return nonEmptyNewGroups;\n }\n\n function startNewWork(\n newGroups: ReadonlyArray<G>,\n newStreams: ReadonlyArray<S>,\n ): void {\n for (const group of newGroups) {\n rootGroups.add(group);\n startGroup(group);\n }\n for (const stream of newStreams) {\n rootStreams.add(stream);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n }\n\n function startGroup(group: G): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n startTask(task);\n }\n }\n }\n\n function startTask(task: Task<T, I, G, S>): void {\n if (taskNodes.has(task)) {\n return;\n }\n taskNodes.set(task, {\n value: undefined,\n childStreams: [],\n });\n try {\n const result = task.computation.result();\n if (isPromise(result)) {\n result.then(\n (resolved) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result: resolved });\n },\n (error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n },\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result });\n }\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n }\n }\n\n async function startStream(stream: S): Promise<void> {\n try {\n await stream.queue.forEachBatch(async (items) => {\n const pushed = pushGraphEvent({\n kind: 'STREAM_ITEMS',\n stream,\n items,\n });\n if (isPromise(pushed)) {\n await pushed;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_SUCCESS', stream });\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_FAILURE', stream, error });\n }\n }\n\n function handleGraphEvents(\n graphEvents: Generator<GraphEvent<T, I, G, S>>,\n ): ReadonlyArray<WorkQueueEvent<T, I, G, S>> | undefined {\n const workQueueEvents: Array<WorkQueueEvent<T, I, G, S>> = [];\n for (const graphEvent of graphEvents) {\n switch (graphEvent.kind) {\n case 'TASK_SUCCESS':\n workQueueEvents.push(...taskSuccess(graphEvent));\n break;\n case 'TASK_FAILURE':\n workQueueEvents.push(...taskFailure(graphEvent));\n break;\n case 'STREAM_ITEMS':\n workQueueEvents.push(...streamItems(graphEvent));\n break;\n case 'STREAM_SUCCESS':\n // check whether already deleted within streamItems()\n if (rootStreams.has(graphEvent.stream)) {\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n }\n break;\n case 'STREAM_FAILURE':\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n break;\n }\n }\n\n if (rootGroups.size === 0 && rootStreams.size === 0) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n stopGraphEvents();\n workQueueEvents.push({ kind: 'WORK_QUEUE_TERMINATION' });\n }\n\n return workQueueEvents.length > 0 ? workQueueEvents : undefined;\n }\n\n function taskSuccess(\n graphEvent: TaskSuccessGraphEvent<T, I, G, S>,\n ): ReadonlyArray<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > {\n const { task, result } = graphEvent;\n const { value, work } = result;\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n taskNode.value = value;\n }\n maybeIntegrateWork(work, task);\n\n const groupEvents: Array<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.pending--;\n if (rootGroups.has(group) && groupNode.pending === 0) {\n const {\n groupValuesEvent,\n groupSuccessEvent,\n newGroups: childNewGroups,\n newStreams: childNewStreams,\n } = finishGroupSuccess(group, groupNode);\n if (groupValuesEvent) {\n groupEvents.push(groupValuesEvent);\n }\n groupEvents.push(groupSuccessEvent);\n newGroups.push(...childNewGroups);\n newStreams.push(...childNewStreams);\n }\n }\n }\n\n startNewWork(newGroups, newStreams);\n return groupEvents;\n }\n\n function taskFailure(\n graphEvent: TaskFailureGraphEvent<T, I, G, S>,\n ): ReadonlyArray<GroupFailureEvent<G>> {\n const { task, error } = graphEvent;\n taskNodes.delete(task);\n const groupFailureEvents: Array<GroupFailureEvent<G>> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupFailureEvents.push(finishGroupFailure(group, groupNode, error));\n }\n }\n return groupFailureEvents;\n }\n\n function streamItems(\n graphEvent: StreamItemsEvent<T, I, G, S>,\n ):\n | [StreamValuesEvent<T, I, G, S>]\n | [StreamValuesEvent<T, I, G, S>, StreamSuccessEvent<T, I, G, S>] {\n const { stream, items } = graphEvent;\n const values: Array<I> = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const { value, work } of items) {\n const { newGroups: itemNewGroups, newStreams: itemNewStreams } =\n maybeIntegrateWork(work);\n const nonEmptyNewGroups = pruneEmptyGroups(itemNewGroups);\n startNewWork(nonEmptyNewGroups, itemNewStreams);\n values.push(value);\n newGroups.push(...nonEmptyNewGroups);\n newStreams.push(...itemNewStreams);\n }\n const streamValuesEvent: StreamValuesEvent<T, I, G, S> = {\n kind: 'STREAM_VALUES',\n stream,\n values,\n newGroups,\n newStreams,\n };\n\n // queues allow peeking ahead see if stream has stopped\n if (stream.queue.isStopped()) {\n rootStreams.delete(stream);\n return [streamValuesEvent, { kind: 'STREAM_SUCCESS', stream }];\n }\n return [streamValuesEvent];\n }\n\n function finishGroupSuccess(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n ): {\n groupValuesEvent: GroupValuesEvent<T, I, G, S> | undefined;\n groupSuccessEvent: GroupSuccessEvent<T, I, G, S>;\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n } {\n groupNodes.delete(group);\n const values: Array<T> = [];\n const newStreams: Array<S> = [];\n for (const task of groupNode.tasks) {\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n const { value, childStreams } = taskNode;\n if (value !== undefined) {\n values.push(value);\n }\n for (const childStream of childStreams) {\n newStreams.push(childStream);\n }\n removeTask(task);\n }\n }\n const newGroups = pruneEmptyGroups(groupNode.childGroups);\n rootGroups.delete(group);\n return {\n groupValuesEvent: values.length\n ? { kind: 'GROUP_VALUES', group, values }\n : undefined,\n groupSuccessEvent: {\n kind: 'GROUP_SUCCESS',\n group,\n newGroups,\n newStreams,\n },\n newGroups,\n newStreams,\n };\n }\n\n function finishGroupFailure(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n error: unknown,\n ): GroupFailureEvent<G> {\n removeGroup(group, groupNode);\n rootGroups.delete(group);\n return { kind: 'GROUP_FAILURE', group, error };\n }\n\n function removeGroup(group: G, groupNode: GroupNode<T, I, G, S>): void {\n groupNodes.delete(group);\n for (const task of groupNode.tasks) {\n if (task.groups.every((taskGroup) => !groupNodes.has(taskGroup))) {\n removeTask(task);\n }\n }\n for (const childGroup of groupNode.childGroups) {\n const childGroupState = groupNodes.get(childGroup);\n if (childGroupState) {\n removeGroup(childGroup, childGroupState);\n }\n }\n }\n\n function removeTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n groupNode?.tasks.delete(task);\n }\n taskNodes.delete(task);\n }\n}\n"]}
1
+ {"version":3,"file":"WorkQueue.js","sourceRoot":"","sources":["../../../src/execution/incremental/WorkQueue.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPromise } from '../../jsutils/isPromise.ts';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.ts';\n\nimport type { Computation } from './Computation.ts';\nimport { Queue } from './Queue.ts';\n\nexport interface Group<TSelf extends Group<TSelf>> {\n parent?: TSelf | undefined;\n}\n\ninterface WorkResult<\n TValue,\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n value: TValue;\n work?: Work<T, I, G, S> | undefined;\n}\n\nexport interface Stream<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n queue: Queue<StreamItem<T, I, G, S>>;\n}\n\nexport interface Work<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups?: ReadonlyArray<G>;\n tasks?: ReadonlyArray<Task<T, I, G, S>>;\n streams?: ReadonlyArray<S>;\n}\n\ninterface NewWork<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n}\n\nexport interface WorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n initialGroups: ReadonlyArray<G>;\n initialStreams: ReadonlyArray<S>;\n events: AsyncGenerator<ReadonlyArray<WorkQueueEvent<T, I, G, S>>, void, void>;\n}\n\nexport type StreamItem<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<I, T, I, G, S>;\n\nexport type TaskResult<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<T, T, I, G, S>;\n\nexport interface Task<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups: ReadonlyArray<G>;\n computation: Computation<TaskResult<T, I, G, S>>;\n}\n\ninterface TaskSuccessGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_SUCCESS';\n task: Task<T, I, G, S>;\n result: TaskResult<T, I, G, S>;\n}\n\ninterface TaskFailureGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_FAILURE';\n task: Task<T, I, G, S>;\n error: unknown;\n}\n\ninterface StreamItemsEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_ITEMS';\n stream: S;\n items: Generator<StreamItem<T, I, G, S>>;\n}\n\ninterface StreamSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_SUCCESS';\n stream: S;\n}\n\ninterface StreamFailureEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_FAILURE';\n stream: S;\n error: unknown;\n}\n\ntype GraphEvent<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> =\n | TaskSuccessGraphEvent<T, I, G, S>\n | TaskFailureGraphEvent<T, I, G, S>\n | StreamItemsEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>;\n\ninterface GroupValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'GROUP_VALUES';\n group: G;\n values: ReadonlyArray<T>;\n}\n\ninterface GroupSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'GROUP_SUCCESS';\n group: G;\n}\n\ninterface GroupFailureEvent<G extends Group<G>> {\n kind: 'GROUP_FAILURE';\n group: G;\n error: unknown;\n}\n\ninterface StreamValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'STREAM_VALUES';\n stream: S;\n values: ReadonlyArray<I>;\n}\n\ninterface WorkQueueTerminationEvent {\n kind: 'WORK_QUEUE_TERMINATION';\n}\n\nexport type WorkQueueEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> =\n | GroupValuesEvent<T, I, G, S>\n | GroupSuccessEvent<T, I, G, S>\n | GroupFailureEvent<G>\n | StreamValuesEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>\n | WorkQueueTerminationEvent;\n\ninterface GroupNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n childGroups: Array<G>;\n tasks: Set<Task<T, I, G, S>>;\n pending: number;\n}\n\ninterface TaskNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n value: T | undefined;\n childStreams: Array<S>;\n}\n\n/** @internal */\nexport function createWorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n>(initialWork: Work<T, I, G, S> | undefined): WorkQueue<T, I, G, S> {\n const rootGroups = new Set<G>();\n const rootStreams = new Set<S>();\n const groupNodes = new Map<G, GroupNode<T, I, G, S>>();\n const taskNodes = new Map<Task<T, I, G, S>, TaskNode<T, I, G, S>>();\n let pushGraphEvent!: (e: GraphEvent<T, I, G, S>) => PromiseOrValue<void>;\n let stopGraphEvents!: (err?: unknown) => PromiseOrValue<void>;\n\n const { newGroups: initialRootGroups, newStreams: initialRootStreams } =\n maybeIntegrateWork(initialWork);\n const nonEmptyInitialRootGroups = pruneEmptyGroups(initialRootGroups);\n // Initialize root groups and streams at startup to prepare for cancellation\n // prior to starting the work queue\n for (const group of nonEmptyInitialRootGroups) {\n rootGroups.add(group);\n }\n for (const stream of initialRootStreams) {\n rootStreams.add(stream);\n }\n\n const events = new Queue<GraphEvent<T, I, G, S>>(\n ({ push: _push, stop: _stop, onStop, started }) => {\n pushGraphEvent = _push;\n stopGraphEvents = _stop;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n started.then(() => {\n for (const group of rootGroups) {\n startGroup(group);\n }\n for (const stream of rootStreams) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n });\n onStop((reason) => cancel(reason));\n },\n 1,\n ).subscribe((graphEvents) => handleGraphEvents(graphEvents));\n\n return {\n initialGroups: nonEmptyInitialRootGroups,\n initialStreams: initialRootStreams,\n events,\n };\n\n function cancel(reason?: unknown): PromiseOrValue<void> {\n const cancelPromises: Array<Promise<unknown>> = [];\n for (const group of rootGroups) {\n cancelGroup(group, reason, cancelPromises);\n }\n for (const stream of rootStreams) {\n cancelStream(stream, reason, cancelPromises);\n }\n if (cancelPromises.length > 0) {\n return Promise.allSettled(cancelPromises).then(() => undefined);\n }\n }\n\n function cancelGroup(\n group: G,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n cancelTask(task, reason, cancelPromises);\n }\n for (const childGroup of groupNode.childGroups) {\n cancelGroup(childGroup, reason, cancelPromises);\n }\n }\n }\n\n function cancelTask(\n task: Task<T, I, G, S>,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = task.computation.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n for (const childStream of taskNode.childStreams) {\n cancelStream(childStream, reason, cancelPromises);\n }\n }\n }\n\n function cancelStream(\n stream: S,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = stream.queue.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n }\n\n function maybeIntegrateWork(\n work: Work<T, I, G, S> | undefined,\n parentTask?: Task<T, I, G, S>,\n ): NewWork<T, I, G, S> {\n if (!work) {\n return { newGroups: [], newStreams: [] };\n }\n const { groups, tasks, streams } = work;\n const newGroups = groups ? addGroups(groups, parentTask) : [];\n if (tasks) {\n for (const task of tasks) {\n addTask(task);\n }\n }\n const newStreams = streams ? addStreams(streams, parentTask) : [];\n return { newGroups, newStreams };\n }\n\n function addGroups(\n originalGroups: ReadonlyArray<G>,\n parentTask?: Task<T, I, G, S>,\n ): Array<G> {\n const groupSet = new Set(originalGroups);\n const visited = new Set<G>();\n const newRootGroups: Array<G> = [];\n for (const group of originalGroups) {\n addGroup(group, groupSet, newRootGroups, visited, parentTask);\n }\n return newRootGroups;\n }\n\n function addGroup(\n group: G,\n groupSet: ReadonlySet<G>,\n newRootGroups: Array<G>,\n visited: Set<G>,\n parentTask?: Task<T, I, G, S>,\n ): void {\n if (visited.has(group)) {\n return;\n }\n visited.add(group);\n const parent = group.parent;\n if (parent !== undefined && groupSet.has(parent)) {\n addGroup(parent, groupSet, newRootGroups, visited, parentTask);\n }\n\n const groupNode: GroupNode<T, I, G, S> = {\n childGroups: [],\n tasks: new Set(),\n pending: 0,\n };\n groupNodes.set(group, groupNode);\n\n if (parentTask === undefined && !parent) {\n newRootGroups.push(group);\n } else if (parent) {\n groupNodes.get(parent)?.childGroups.push(group);\n }\n }\n\n function addTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.tasks.add(task);\n groupNode.pending++;\n if (rootGroups.has(group)) {\n startTask(task);\n }\n }\n }\n }\n\n function addStreams(\n streams: ReadonlyArray<S>,\n parentTask?: Task<T, I, G, S>,\n ): ReadonlyArray<S> {\n if (!parentTask) {\n return streams;\n }\n const taskNode = taskNodes.get(parentTask);\n if (taskNode) {\n taskNode.childStreams.push(...streams);\n }\n return [];\n }\n\n function pruneEmptyGroups(\n newGroups: ReadonlyArray<G>,\n nonEmptyNewGroups: Array<G> = [],\n ): ReadonlyArray<G> {\n for (const newGroup of newGroups) {\n const newGroupState = groupNodes.get(newGroup);\n if (newGroupState) {\n if (newGroupState.pending === 0) {\n groupNodes.delete(newGroup);\n pruneEmptyGroups(newGroupState.childGroups, nonEmptyNewGroups);\n } else {\n nonEmptyNewGroups.push(newGroup);\n }\n }\n }\n return nonEmptyNewGroups;\n }\n\n function startNewWork(\n newGroups: ReadonlyArray<G>,\n newStreams: ReadonlyArray<S>,\n ): void {\n for (const group of newGroups) {\n rootGroups.add(group);\n startGroup(group);\n }\n for (const stream of newStreams) {\n rootStreams.add(stream);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n }\n\n function startGroup(group: G): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n startTask(task);\n }\n }\n }\n\n function startTask(task: Task<T, I, G, S>): void {\n if (taskNodes.has(task)) {\n return;\n }\n taskNodes.set(task, {\n value: undefined,\n childStreams: [],\n });\n try {\n const result = task.computation.result();\n if (isPromise(result)) {\n result.then(\n (resolved) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result: resolved });\n },\n (error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n },\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result });\n }\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n }\n }\n\n async function startStream(stream: S): Promise<void> {\n try {\n await stream.queue.forEachBatch(async (items) => {\n const pushed = pushGraphEvent({\n kind: 'STREAM_ITEMS',\n stream,\n items,\n });\n if (isPromise(pushed)) {\n await pushed;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_SUCCESS', stream });\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_FAILURE', stream, error });\n }\n }\n\n function handleGraphEvents(\n graphEvents: Generator<GraphEvent<T, I, G, S>>,\n ): ReadonlyArray<WorkQueueEvent<T, I, G, S>> | undefined {\n const workQueueEvents: Array<WorkQueueEvent<T, I, G, S>> = [];\n for (const graphEvent of graphEvents) {\n switch (graphEvent.kind) {\n case 'TASK_SUCCESS':\n workQueueEvents.push(...taskSuccess(graphEvent));\n break;\n case 'TASK_FAILURE':\n workQueueEvents.push(...taskFailure(graphEvent));\n break;\n case 'STREAM_ITEMS':\n workQueueEvents.push(...streamItems(graphEvent));\n break;\n case 'STREAM_SUCCESS':\n // check whether already deleted within streamItems()\n if (rootStreams.has(graphEvent.stream)) {\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n }\n break;\n case 'STREAM_FAILURE':\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n break;\n }\n }\n\n if (rootGroups.size === 0 && rootStreams.size === 0) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n stopGraphEvents();\n workQueueEvents.push({ kind: 'WORK_QUEUE_TERMINATION' });\n }\n\n return workQueueEvents.length > 0 ? workQueueEvents : undefined;\n }\n\n function taskSuccess(\n graphEvent: TaskSuccessGraphEvent<T, I, G, S>,\n ): ReadonlyArray<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > {\n const { task, result } = graphEvent;\n const { value, work } = result;\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n taskNode.value = value;\n }\n maybeIntegrateWork(work, task);\n\n const groupEvents: Array<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.pending--;\n if (rootGroups.has(group) && groupNode.pending === 0) {\n const {\n groupValuesEvent,\n groupSuccessEvent,\n newGroups: childNewGroups,\n newStreams: childNewStreams,\n } = finishGroupSuccess(group, groupNode);\n if (groupValuesEvent) {\n groupEvents.push(groupValuesEvent);\n }\n groupEvents.push(groupSuccessEvent);\n newGroups.push(...childNewGroups);\n newStreams.push(...childNewStreams);\n }\n }\n }\n\n startNewWork(newGroups, newStreams);\n return groupEvents;\n }\n\n function taskFailure(\n graphEvent: TaskFailureGraphEvent<T, I, G, S>,\n ): ReadonlyArray<GroupFailureEvent<G>> {\n const { task, error } = graphEvent;\n taskNodes.delete(task);\n const groupFailureEvents: Array<GroupFailureEvent<G>> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupFailureEvents.push(finishGroupFailure(group, groupNode, error));\n }\n }\n return groupFailureEvents;\n }\n\n function streamItems(\n graphEvent: StreamItemsEvent<T, I, G, S>,\n ):\n | [StreamValuesEvent<T, I, G, S>]\n | [StreamValuesEvent<T, I, G, S>, StreamSuccessEvent<T, I, G, S>] {\n const { stream, items } = graphEvent;\n const values: Array<I> = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const { value, work } of items) {\n const { newGroups: itemNewGroups, newStreams: itemNewStreams } =\n maybeIntegrateWork(work);\n const nonEmptyNewGroups = pruneEmptyGroups(itemNewGroups);\n startNewWork(nonEmptyNewGroups, itemNewStreams);\n values.push(value);\n newGroups.push(...nonEmptyNewGroups);\n newStreams.push(...itemNewStreams);\n }\n const streamValuesEvent: StreamValuesEvent<T, I, G, S> = {\n kind: 'STREAM_VALUES',\n stream,\n values,\n newGroups,\n newStreams,\n };\n\n // queues allow peeking ahead see if stream has stopped\n if (stream.queue.isStopped()) {\n rootStreams.delete(stream);\n return [streamValuesEvent, { kind: 'STREAM_SUCCESS', stream }];\n }\n return [streamValuesEvent];\n }\n\n function finishGroupSuccess(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n ): {\n groupValuesEvent: GroupValuesEvent<T, I, G, S> | undefined;\n groupSuccessEvent: GroupSuccessEvent<T, I, G, S>;\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n } {\n groupNodes.delete(group);\n const values: Array<T> = [];\n const newStreams: Array<S> = [];\n for (const task of groupNode.tasks) {\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n const { value, childStreams } = taskNode;\n if (value !== undefined) {\n values.push(value);\n }\n for (const childStream of childStreams) {\n newStreams.push(childStream);\n }\n removeTask(task);\n }\n }\n const newGroups = pruneEmptyGroups(groupNode.childGroups);\n rootGroups.delete(group);\n return {\n groupValuesEvent: values.length\n ? { kind: 'GROUP_VALUES', group, values }\n : undefined,\n groupSuccessEvent: {\n kind: 'GROUP_SUCCESS',\n group,\n newGroups,\n newStreams,\n },\n newGroups,\n newStreams,\n };\n }\n\n function finishGroupFailure(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n error: unknown,\n ): GroupFailureEvent<G> {\n removeGroup(group, groupNode);\n rootGroups.delete(group);\n return { kind: 'GROUP_FAILURE', group, error };\n }\n\n function removeGroup(group: G, groupNode: GroupNode<T, I, G, S>): void {\n groupNodes.delete(group);\n for (const task of groupNode.tasks) {\n if (task.groups.every((taskGroup) => !groupNodes.has(taskGroup))) {\n removeTask(task);\n }\n }\n for (const childGroup of groupNode.childGroups) {\n const childGroupState = groupNodes.get(childGroup);\n if (childGroupState) {\n removeGroup(childGroup, childGroupState);\n }\n }\n }\n\n function removeTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n groupNode?.tasks.delete(task);\n }\n taskNodes.delete(task);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkQueue.js","sourceRoot":"","sources":["../../../src/execution/incremental/WorkQueue.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPromise } from '../../jsutils/isPromise.js';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.js';\n\nimport type { Computation } from './Computation.js';\nimport { Queue } from './Queue.js';\n\nexport interface Group<TSelf extends Group<TSelf>> {\n parent?: TSelf | undefined;\n}\n\ninterface WorkResult<\n TValue,\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n value: TValue;\n work?: Work<T, I, G, S> | undefined;\n}\n\nexport interface Stream<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n queue: Queue<StreamItem<T, I, G, S>>;\n}\n\nexport interface Work<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups?: ReadonlyArray<G>;\n tasks?: ReadonlyArray<Task<T, I, G, S>>;\n streams?: ReadonlyArray<S>;\n}\n\ninterface NewWork<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n}\n\nexport interface WorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n initialGroups: ReadonlyArray<G>;\n initialStreams: ReadonlyArray<S>;\n events: AsyncGenerator<ReadonlyArray<WorkQueueEvent<T, I, G, S>>, void, void>;\n}\n\nexport type StreamItem<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<I, T, I, G, S>;\n\nexport type TaskResult<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<T, T, I, G, S>;\n\nexport interface Task<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups: ReadonlyArray<G>;\n computation: Computation<TaskResult<T, I, G, S>>;\n}\n\ninterface TaskSuccessGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_SUCCESS';\n task: Task<T, I, G, S>;\n result: TaskResult<T, I, G, S>;\n}\n\ninterface TaskFailureGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_FAILURE';\n task: Task<T, I, G, S>;\n error: unknown;\n}\n\ninterface StreamItemsEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_ITEMS';\n stream: S;\n items: Generator<StreamItem<T, I, G, S>>;\n}\n\ninterface StreamSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_SUCCESS';\n stream: S;\n}\n\ninterface StreamFailureEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_FAILURE';\n stream: S;\n error: unknown;\n}\n\ntype GraphEvent<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> =\n | TaskSuccessGraphEvent<T, I, G, S>\n | TaskFailureGraphEvent<T, I, G, S>\n | StreamItemsEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>;\n\ninterface GroupValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'GROUP_VALUES';\n group: G;\n values: ReadonlyArray<T>;\n}\n\ninterface GroupSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'GROUP_SUCCESS';\n group: G;\n}\n\ninterface GroupFailureEvent<G extends Group<G>> {\n kind: 'GROUP_FAILURE';\n group: G;\n error: unknown;\n}\n\ninterface StreamValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'STREAM_VALUES';\n stream: S;\n values: ReadonlyArray<I>;\n}\n\ninterface WorkQueueTerminationEvent {\n kind: 'WORK_QUEUE_TERMINATION';\n}\n\nexport type WorkQueueEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> =\n | GroupValuesEvent<T, I, G, S>\n | GroupSuccessEvent<T, I, G, S>\n | GroupFailureEvent<G>\n | StreamValuesEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>\n | WorkQueueTerminationEvent;\n\ninterface GroupNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n childGroups: Array<G>;\n tasks: Set<Task<T, I, G, S>>;\n pending: number;\n}\n\ninterface TaskNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n value: T | undefined;\n childStreams: Array<S>;\n}\n\n/** @internal */\nexport function createWorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n>(initialWork: Work<T, I, G, S> | undefined): WorkQueue<T, I, G, S> {\n const rootGroups = new Set<G>();\n const rootStreams = new Set<S>();\n const groupNodes = new Map<G, GroupNode<T, I, G, S>>();\n const taskNodes = new Map<Task<T, I, G, S>, TaskNode<T, I, G, S>>();\n let pushGraphEvent!: (e: GraphEvent<T, I, G, S>) => PromiseOrValue<void>;\n let stopGraphEvents!: (err?: unknown) => PromiseOrValue<void>;\n\n const { newGroups: initialRootGroups, newStreams: initialRootStreams } =\n maybeIntegrateWork(initialWork);\n const nonEmptyInitialRootGroups = pruneEmptyGroups(initialRootGroups);\n // Initialize root groups and streams at startup to prepare for cancellation\n // prior to starting the work queue\n for (const group of nonEmptyInitialRootGroups) {\n rootGroups.add(group);\n }\n for (const stream of initialRootStreams) {\n rootStreams.add(stream);\n }\n\n const events = new Queue<GraphEvent<T, I, G, S>>(\n ({ push: _push, stop: _stop, onStop, started }) => {\n pushGraphEvent = _push;\n stopGraphEvents = _stop;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n started.then(() => {\n for (const group of rootGroups) {\n startGroup(group);\n }\n for (const stream of rootStreams) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n });\n onStop((reason) => cancel(reason));\n },\n 1,\n ).subscribe((graphEvents) => handleGraphEvents(graphEvents));\n\n return {\n initialGroups: nonEmptyInitialRootGroups,\n initialStreams: initialRootStreams,\n events,\n };\n\n function cancel(reason?: unknown): PromiseOrValue<void> {\n const cancelPromises: Array<Promise<unknown>> = [];\n for (const group of rootGroups) {\n cancelGroup(group, reason, cancelPromises);\n }\n for (const stream of rootStreams) {\n cancelStream(stream, reason, cancelPromises);\n }\n if (cancelPromises.length > 0) {\n return Promise.allSettled(cancelPromises).then(() => undefined);\n }\n }\n\n function cancelGroup(\n group: G,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n cancelTask(task, reason, cancelPromises);\n }\n for (const childGroup of groupNode.childGroups) {\n cancelGroup(childGroup, reason, cancelPromises);\n }\n }\n }\n\n function cancelTask(\n task: Task<T, I, G, S>,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = task.computation.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n for (const childStream of taskNode.childStreams) {\n cancelStream(childStream, reason, cancelPromises);\n }\n }\n }\n\n function cancelStream(\n stream: S,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = stream.queue.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n }\n\n function maybeIntegrateWork(\n work: Work<T, I, G, S> | undefined,\n parentTask?: Task<T, I, G, S>,\n ): NewWork<T, I, G, S> {\n if (!work) {\n return { newGroups: [], newStreams: [] };\n }\n const { groups, tasks, streams } = work;\n const newGroups = groups ? addGroups(groups, parentTask) : [];\n if (tasks) {\n for (const task of tasks) {\n addTask(task);\n }\n }\n const newStreams = streams ? addStreams(streams, parentTask) : [];\n return { newGroups, newStreams };\n }\n\n function addGroups(\n originalGroups: ReadonlyArray<G>,\n parentTask?: Task<T, I, G, S>,\n ): Array<G> {\n const groupSet = new Set(originalGroups);\n const visited = new Set<G>();\n const newRootGroups: Array<G> = [];\n for (const group of originalGroups) {\n addGroup(group, groupSet, newRootGroups, visited, parentTask);\n }\n return newRootGroups;\n }\n\n function addGroup(\n group: G,\n groupSet: ReadonlySet<G>,\n newRootGroups: Array<G>,\n visited: Set<G>,\n parentTask?: Task<T, I, G, S>,\n ): void {\n if (visited.has(group)) {\n return;\n }\n visited.add(group);\n const parent = group.parent;\n if (parent !== undefined && groupSet.has(parent)) {\n addGroup(parent, groupSet, newRootGroups, visited, parentTask);\n }\n\n const groupNode: GroupNode<T, I, G, S> = {\n childGroups: [],\n tasks: new Set(),\n pending: 0,\n };\n groupNodes.set(group, groupNode);\n\n if (parentTask === undefined && !parent) {\n newRootGroups.push(group);\n } else if (parent) {\n groupNodes.get(parent)?.childGroups.push(group);\n }\n }\n\n function addTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.tasks.add(task);\n groupNode.pending++;\n if (rootGroups.has(group)) {\n startTask(task);\n }\n }\n }\n }\n\n function addStreams(\n streams: ReadonlyArray<S>,\n parentTask?: Task<T, I, G, S>,\n ): ReadonlyArray<S> {\n if (!parentTask) {\n return streams;\n }\n const taskNode = taskNodes.get(parentTask);\n if (taskNode) {\n taskNode.childStreams.push(...streams);\n }\n return [];\n }\n\n function pruneEmptyGroups(\n newGroups: ReadonlyArray<G>,\n nonEmptyNewGroups: Array<G> = [],\n ): ReadonlyArray<G> {\n for (const newGroup of newGroups) {\n const newGroupState = groupNodes.get(newGroup);\n if (newGroupState) {\n if (newGroupState.pending === 0) {\n groupNodes.delete(newGroup);\n pruneEmptyGroups(newGroupState.childGroups, nonEmptyNewGroups);\n } else {\n nonEmptyNewGroups.push(newGroup);\n }\n }\n }\n return nonEmptyNewGroups;\n }\n\n function startNewWork(\n newGroups: ReadonlyArray<G>,\n newStreams: ReadonlyArray<S>,\n ): void {\n for (const group of newGroups) {\n rootGroups.add(group);\n startGroup(group);\n }\n for (const stream of newStreams) {\n rootStreams.add(stream);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n }\n\n function startGroup(group: G): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n startTask(task);\n }\n }\n }\n\n function startTask(task: Task<T, I, G, S>): void {\n if (taskNodes.has(task)) {\n return;\n }\n taskNodes.set(task, {\n value: undefined,\n childStreams: [],\n });\n try {\n const result = task.computation.result();\n if (isPromise(result)) {\n result.then(\n (resolved) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result: resolved });\n },\n (error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n },\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result });\n }\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n }\n }\n\n async function startStream(stream: S): Promise<void> {\n try {\n await stream.queue.forEachBatch(async (items) => {\n const pushed = pushGraphEvent({\n kind: 'STREAM_ITEMS',\n stream,\n items,\n });\n if (isPromise(pushed)) {\n await pushed;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_SUCCESS', stream });\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_FAILURE', stream, error });\n }\n }\n\n function handleGraphEvents(\n graphEvents: Generator<GraphEvent<T, I, G, S>>,\n ): ReadonlyArray<WorkQueueEvent<T, I, G, S>> | undefined {\n const workQueueEvents: Array<WorkQueueEvent<T, I, G, S>> = [];\n for (const graphEvent of graphEvents) {\n switch (graphEvent.kind) {\n case 'TASK_SUCCESS':\n workQueueEvents.push(...taskSuccess(graphEvent));\n break;\n case 'TASK_FAILURE':\n workQueueEvents.push(...taskFailure(graphEvent));\n break;\n case 'STREAM_ITEMS':\n workQueueEvents.push(...streamItems(graphEvent));\n break;\n case 'STREAM_SUCCESS':\n // check whether already deleted within streamItems()\n if (rootStreams.has(graphEvent.stream)) {\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n }\n break;\n case 'STREAM_FAILURE':\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n break;\n }\n }\n\n if (rootGroups.size === 0 && rootStreams.size === 0) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n stopGraphEvents();\n workQueueEvents.push({ kind: 'WORK_QUEUE_TERMINATION' });\n }\n\n return workQueueEvents.length > 0 ? workQueueEvents : undefined;\n }\n\n function taskSuccess(\n graphEvent: TaskSuccessGraphEvent<T, I, G, S>,\n ): ReadonlyArray<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > {\n const { task, result } = graphEvent;\n const { value, work } = result;\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n taskNode.value = value;\n }\n maybeIntegrateWork(work, task);\n\n const groupEvents: Array<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.pending--;\n if (rootGroups.has(group) && groupNode.pending === 0) {\n const {\n groupValuesEvent,\n groupSuccessEvent,\n newGroups: childNewGroups,\n newStreams: childNewStreams,\n } = finishGroupSuccess(group, groupNode);\n if (groupValuesEvent) {\n groupEvents.push(groupValuesEvent);\n }\n groupEvents.push(groupSuccessEvent);\n newGroups.push(...childNewGroups);\n newStreams.push(...childNewStreams);\n }\n }\n }\n\n startNewWork(newGroups, newStreams);\n return groupEvents;\n }\n\n function taskFailure(\n graphEvent: TaskFailureGraphEvent<T, I, G, S>,\n ): ReadonlyArray<GroupFailureEvent<G>> {\n const { task, error } = graphEvent;\n taskNodes.delete(task);\n const groupFailureEvents: Array<GroupFailureEvent<G>> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupFailureEvents.push(finishGroupFailure(group, groupNode, error));\n }\n }\n return groupFailureEvents;\n }\n\n function streamItems(\n graphEvent: StreamItemsEvent<T, I, G, S>,\n ):\n | [StreamValuesEvent<T, I, G, S>]\n | [StreamValuesEvent<T, I, G, S>, StreamSuccessEvent<T, I, G, S>] {\n const { stream, items } = graphEvent;\n const values: Array<I> = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const { value, work } of items) {\n const { newGroups: itemNewGroups, newStreams: itemNewStreams } =\n maybeIntegrateWork(work);\n const nonEmptyNewGroups = pruneEmptyGroups(itemNewGroups);\n startNewWork(nonEmptyNewGroups, itemNewStreams);\n values.push(value);\n newGroups.push(...nonEmptyNewGroups);\n newStreams.push(...itemNewStreams);\n }\n const streamValuesEvent: StreamValuesEvent<T, I, G, S> = {\n kind: 'STREAM_VALUES',\n stream,\n values,\n newGroups,\n newStreams,\n };\n\n // queues allow peeking ahead see if stream has stopped\n if (stream.queue.isStopped()) {\n rootStreams.delete(stream);\n return [streamValuesEvent, { kind: 'STREAM_SUCCESS', stream }];\n }\n return [streamValuesEvent];\n }\n\n function finishGroupSuccess(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n ): {\n groupValuesEvent: GroupValuesEvent<T, I, G, S> | undefined;\n groupSuccessEvent: GroupSuccessEvent<T, I, G, S>;\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n } {\n groupNodes.delete(group);\n const values: Array<T> = [];\n const newStreams: Array<S> = [];\n for (const task of groupNode.tasks) {\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n const { value, childStreams } = taskNode;\n if (value !== undefined) {\n values.push(value);\n }\n for (const childStream of childStreams) {\n newStreams.push(childStream);\n }\n removeTask(task);\n }\n }\n const newGroups = pruneEmptyGroups(groupNode.childGroups);\n rootGroups.delete(group);\n return {\n groupValuesEvent: values.length\n ? { kind: 'GROUP_VALUES', group, values }\n : undefined,\n groupSuccessEvent: {\n kind: 'GROUP_SUCCESS',\n group,\n newGroups,\n newStreams,\n },\n newGroups,\n newStreams,\n };\n }\n\n function finishGroupFailure(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n error: unknown,\n ): GroupFailureEvent<G> {\n removeGroup(group, groupNode);\n rootGroups.delete(group);\n return { kind: 'GROUP_FAILURE', group, error };\n }\n\n function removeGroup(group: G, groupNode: GroupNode<T, I, G, S>): void {\n groupNodes.delete(group);\n for (const task of groupNode.tasks) {\n if (task.groups.every((taskGroup) => !groupNodes.has(taskGroup))) {\n removeTask(task);\n }\n }\n for (const childGroup of groupNode.childGroups) {\n const childGroupState = groupNodes.get(childGroup);\n if (childGroupState) {\n removeGroup(childGroup, childGroupState);\n }\n }\n }\n\n function removeTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n groupNode?.tasks.delete(task);\n }\n taskNodes.delete(task);\n }\n}\n"]}
1
+ {"version":3,"file":"WorkQueue.js","sourceRoot":"","sources":["../../../src/execution/incremental/WorkQueue.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPromise } from '../../jsutils/isPromise.ts';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.ts';\n\nimport type { Computation } from './Computation.ts';\nimport { Queue } from './Queue.ts';\n\nexport interface Group<TSelf extends Group<TSelf>> {\n parent?: TSelf | undefined;\n}\n\ninterface WorkResult<\n TValue,\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n value: TValue;\n work?: Work<T, I, G, S> | undefined;\n}\n\nexport interface Stream<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n queue: Queue<StreamItem<T, I, G, S>>;\n}\n\nexport interface Work<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups?: ReadonlyArray<G>;\n tasks?: ReadonlyArray<Task<T, I, G, S>>;\n streams?: ReadonlyArray<S>;\n}\n\ninterface NewWork<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n}\n\nexport interface WorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n initialGroups: ReadonlyArray<G>;\n initialStreams: ReadonlyArray<S>;\n events: AsyncGenerator<ReadonlyArray<WorkQueueEvent<T, I, G, S>>, void, void>;\n}\n\nexport type StreamItem<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<I, T, I, G, S>;\n\nexport type TaskResult<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> = WorkResult<T, T, I, G, S>;\n\nexport interface Task<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n groups: ReadonlyArray<G>;\n computation: Computation<TaskResult<T, I, G, S>>;\n}\n\ninterface TaskSuccessGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_SUCCESS';\n task: Task<T, I, G, S>;\n result: TaskResult<T, I, G, S>;\n}\n\ninterface TaskFailureGraphEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'TASK_FAILURE';\n task: Task<T, I, G, S>;\n error: unknown;\n}\n\ninterface StreamItemsEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_ITEMS';\n stream: S;\n items: Generator<StreamItem<T, I, G, S>>;\n}\n\ninterface StreamSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_SUCCESS';\n stream: S;\n}\n\ninterface StreamFailureEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'STREAM_FAILURE';\n stream: S;\n error: unknown;\n}\n\ntype GraphEvent<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> =\n | TaskSuccessGraphEvent<T, I, G, S>\n | TaskFailureGraphEvent<T, I, G, S>\n | StreamItemsEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>;\n\ninterface GroupValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> {\n kind: 'GROUP_VALUES';\n group: G;\n values: ReadonlyArray<T>;\n}\n\ninterface GroupSuccessEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'GROUP_SUCCESS';\n group: G;\n}\n\ninterface GroupFailureEvent<G extends Group<G>> {\n kind: 'GROUP_FAILURE';\n group: G;\n error: unknown;\n}\n\ninterface StreamValuesEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> extends NewWork<T, I, G, S> {\n kind: 'STREAM_VALUES';\n stream: S;\n values: ReadonlyArray<I>;\n}\n\ninterface WorkQueueTerminationEvent {\n kind: 'WORK_QUEUE_TERMINATION';\n}\n\nexport type WorkQueueEvent<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n> =\n | GroupValuesEvent<T, I, G, S>\n | GroupSuccessEvent<T, I, G, S>\n | GroupFailureEvent<G>\n | StreamValuesEvent<T, I, G, S>\n | StreamSuccessEvent<T, I, G, S>\n | StreamFailureEvent<T, I, G, S>\n | WorkQueueTerminationEvent;\n\ninterface GroupNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n childGroups: Array<G>;\n tasks: Set<Task<T, I, G, S>>;\n pending: number;\n}\n\ninterface TaskNode<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {\n value: T | undefined;\n childStreams: Array<S>;\n}\n\n/** @internal */\nexport function createWorkQueue<\n T,\n I,\n G extends Group<G>,\n S extends Stream<T, I, G, S>,\n>(initialWork: Work<T, I, G, S> | undefined): WorkQueue<T, I, G, S> {\n const rootGroups = new Set<G>();\n const rootStreams = new Set<S>();\n const groupNodes = new Map<G, GroupNode<T, I, G, S>>();\n const taskNodes = new Map<Task<T, I, G, S>, TaskNode<T, I, G, S>>();\n let pushGraphEvent!: (e: GraphEvent<T, I, G, S>) => PromiseOrValue<void>;\n let stopGraphEvents!: (err?: unknown) => PromiseOrValue<void>;\n\n const { newGroups: initialRootGroups, newStreams: initialRootStreams } =\n maybeIntegrateWork(initialWork);\n const nonEmptyInitialRootGroups = pruneEmptyGroups(initialRootGroups);\n // Initialize root groups and streams at startup to prepare for cancellation\n // prior to starting the work queue\n for (const group of nonEmptyInitialRootGroups) {\n rootGroups.add(group);\n }\n for (const stream of initialRootStreams) {\n rootStreams.add(stream);\n }\n\n const events = new Queue<GraphEvent<T, I, G, S>>(\n ({ push: _push, stop: _stop, onStop, started }) => {\n pushGraphEvent = _push;\n stopGraphEvents = _stop;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n started.then(() => {\n for (const group of rootGroups) {\n startGroup(group);\n }\n for (const stream of rootStreams) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n });\n onStop((reason) => cancel(reason));\n },\n 1,\n ).subscribe((graphEvents) => handleGraphEvents(graphEvents));\n\n return {\n initialGroups: nonEmptyInitialRootGroups,\n initialStreams: initialRootStreams,\n events,\n };\n\n function cancel(reason?: unknown): PromiseOrValue<void> {\n const cancelPromises: Array<Promise<unknown>> = [];\n for (const group of rootGroups) {\n cancelGroup(group, reason, cancelPromises);\n }\n for (const stream of rootStreams) {\n cancelStream(stream, reason, cancelPromises);\n }\n if (cancelPromises.length > 0) {\n return Promise.allSettled(cancelPromises).then(() => undefined);\n }\n }\n\n function cancelGroup(\n group: G,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n cancelTask(task, reason, cancelPromises);\n }\n for (const childGroup of groupNode.childGroups) {\n cancelGroup(childGroup, reason, cancelPromises);\n }\n }\n }\n\n function cancelTask(\n task: Task<T, I, G, S>,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = task.computation.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n for (const childStream of taskNode.childStreams) {\n cancelStream(childStream, reason, cancelPromises);\n }\n }\n }\n\n function cancelStream(\n stream: S,\n reason: unknown,\n cancelPromises: Array<Promise<unknown>>,\n ): void {\n const abortResult = stream.queue.abort(reason);\n if (isPromise(abortResult)) {\n cancelPromises.push(abortResult);\n }\n }\n\n function maybeIntegrateWork(\n work: Work<T, I, G, S> | undefined,\n parentTask?: Task<T, I, G, S>,\n ): NewWork<T, I, G, S> {\n if (!work) {\n return { newGroups: [], newStreams: [] };\n }\n const { groups, tasks, streams } = work;\n const newGroups = groups ? addGroups(groups, parentTask) : [];\n if (tasks) {\n for (const task of tasks) {\n addTask(task);\n }\n }\n const newStreams = streams ? addStreams(streams, parentTask) : [];\n return { newGroups, newStreams };\n }\n\n function addGroups(\n originalGroups: ReadonlyArray<G>,\n parentTask?: Task<T, I, G, S>,\n ): Array<G> {\n const groupSet = new Set(originalGroups);\n const visited = new Set<G>();\n const newRootGroups: Array<G> = [];\n for (const group of originalGroups) {\n addGroup(group, groupSet, newRootGroups, visited, parentTask);\n }\n return newRootGroups;\n }\n\n function addGroup(\n group: G,\n groupSet: ReadonlySet<G>,\n newRootGroups: Array<G>,\n visited: Set<G>,\n parentTask?: Task<T, I, G, S>,\n ): void {\n if (visited.has(group)) {\n return;\n }\n visited.add(group);\n const parent = group.parent;\n if (parent !== undefined && groupSet.has(parent)) {\n addGroup(parent, groupSet, newRootGroups, visited, parentTask);\n }\n\n const groupNode: GroupNode<T, I, G, S> = {\n childGroups: [],\n tasks: new Set(),\n pending: 0,\n };\n groupNodes.set(group, groupNode);\n\n if (parentTask === undefined && !parent) {\n newRootGroups.push(group);\n } else if (parent) {\n groupNodes.get(parent)?.childGroups.push(group);\n }\n }\n\n function addTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.tasks.add(task);\n groupNode.pending++;\n if (rootGroups.has(group)) {\n startTask(task);\n }\n }\n }\n }\n\n function addStreams(\n streams: ReadonlyArray<S>,\n parentTask?: Task<T, I, G, S>,\n ): ReadonlyArray<S> {\n if (!parentTask) {\n return streams;\n }\n const taskNode = taskNodes.get(parentTask);\n if (taskNode) {\n taskNode.childStreams.push(...streams);\n }\n return [];\n }\n\n function pruneEmptyGroups(\n newGroups: ReadonlyArray<G>,\n nonEmptyNewGroups: Array<G> = [],\n ): ReadonlyArray<G> {\n for (const newGroup of newGroups) {\n const newGroupState = groupNodes.get(newGroup);\n if (newGroupState) {\n if (newGroupState.pending === 0) {\n groupNodes.delete(newGroup);\n pruneEmptyGroups(newGroupState.childGroups, nonEmptyNewGroups);\n } else {\n nonEmptyNewGroups.push(newGroup);\n }\n }\n }\n return nonEmptyNewGroups;\n }\n\n function startNewWork(\n newGroups: ReadonlyArray<G>,\n newStreams: ReadonlyArray<S>,\n ): void {\n for (const group of newGroups) {\n rootGroups.add(group);\n startGroup(group);\n }\n for (const stream of newStreams) {\n rootStreams.add(stream);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n startStream(stream);\n }\n }\n\n function startGroup(group: G): void {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n for (const task of groupNode.tasks) {\n startTask(task);\n }\n }\n }\n\n function startTask(task: Task<T, I, G, S>): void {\n if (taskNodes.has(task)) {\n return;\n }\n taskNodes.set(task, {\n value: undefined,\n childStreams: [],\n });\n try {\n const result = task.computation.result();\n if (isPromise(result)) {\n result.then(\n (resolved) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result: resolved });\n },\n (error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n },\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_SUCCESS', task, result });\n }\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'TASK_FAILURE', task, error });\n }\n }\n\n async function startStream(stream: S): Promise<void> {\n try {\n await stream.queue.forEachBatch(async (items) => {\n const pushed = pushGraphEvent({\n kind: 'STREAM_ITEMS',\n stream,\n items,\n });\n if (isPromise(pushed)) {\n await pushed;\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_SUCCESS', stream });\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n pushGraphEvent({ kind: 'STREAM_FAILURE', stream, error });\n }\n }\n\n function handleGraphEvents(\n graphEvents: Generator<GraphEvent<T, I, G, S>>,\n ): ReadonlyArray<WorkQueueEvent<T, I, G, S>> | undefined {\n const workQueueEvents: Array<WorkQueueEvent<T, I, G, S>> = [];\n for (const graphEvent of graphEvents) {\n switch (graphEvent.kind) {\n case 'TASK_SUCCESS':\n workQueueEvents.push(...taskSuccess(graphEvent));\n break;\n case 'TASK_FAILURE':\n workQueueEvents.push(...taskFailure(graphEvent));\n break;\n case 'STREAM_ITEMS':\n workQueueEvents.push(...streamItems(graphEvent));\n break;\n case 'STREAM_SUCCESS':\n // check whether already deleted within streamItems()\n if (rootStreams.has(graphEvent.stream)) {\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n }\n break;\n case 'STREAM_FAILURE':\n rootStreams.delete(graphEvent.stream);\n workQueueEvents.push(graphEvent);\n break;\n }\n }\n\n if (rootGroups.size === 0 && rootStreams.size === 0) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n stopGraphEvents();\n workQueueEvents.push({ kind: 'WORK_QUEUE_TERMINATION' });\n }\n\n return workQueueEvents.length > 0 ? workQueueEvents : undefined;\n }\n\n function taskSuccess(\n graphEvent: TaskSuccessGraphEvent<T, I, G, S>,\n ): ReadonlyArray<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > {\n const { task, result } = graphEvent;\n const { value, work } = result;\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n taskNode.value = value;\n }\n maybeIntegrateWork(work, task);\n\n const groupEvents: Array<\n GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S>\n > = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupNode.pending--;\n if (rootGroups.has(group) && groupNode.pending === 0) {\n const {\n groupValuesEvent,\n groupSuccessEvent,\n newGroups: childNewGroups,\n newStreams: childNewStreams,\n } = finishGroupSuccess(group, groupNode);\n if (groupValuesEvent) {\n groupEvents.push(groupValuesEvent);\n }\n groupEvents.push(groupSuccessEvent);\n newGroups.push(...childNewGroups);\n newStreams.push(...childNewStreams);\n }\n }\n }\n\n startNewWork(newGroups, newStreams);\n return groupEvents;\n }\n\n function taskFailure(\n graphEvent: TaskFailureGraphEvent<T, I, G, S>,\n ): ReadonlyArray<GroupFailureEvent<G>> {\n const { task, error } = graphEvent;\n taskNodes.delete(task);\n const groupFailureEvents: Array<GroupFailureEvent<G>> = [];\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n if (groupNode) {\n groupFailureEvents.push(finishGroupFailure(group, groupNode, error));\n }\n }\n return groupFailureEvents;\n }\n\n function streamItems(\n graphEvent: StreamItemsEvent<T, I, G, S>,\n ):\n | [StreamValuesEvent<T, I, G, S>]\n | [StreamValuesEvent<T, I, G, S>, StreamSuccessEvent<T, I, G, S>] {\n const { stream, items } = graphEvent;\n const values: Array<I> = [];\n const newGroups: Array<G> = [];\n const newStreams: Array<S> = [];\n for (const { value, work } of items) {\n const { newGroups: itemNewGroups, newStreams: itemNewStreams } =\n maybeIntegrateWork(work);\n const nonEmptyNewGroups = pruneEmptyGroups(itemNewGroups);\n startNewWork(nonEmptyNewGroups, itemNewStreams);\n values.push(value);\n newGroups.push(...nonEmptyNewGroups);\n newStreams.push(...itemNewStreams);\n }\n const streamValuesEvent: StreamValuesEvent<T, I, G, S> = {\n kind: 'STREAM_VALUES',\n stream,\n values,\n newGroups,\n newStreams,\n };\n\n // queues allow peeking ahead see if stream has stopped\n if (stream.queue.isStopped()) {\n rootStreams.delete(stream);\n return [streamValuesEvent, { kind: 'STREAM_SUCCESS', stream }];\n }\n return [streamValuesEvent];\n }\n\n function finishGroupSuccess(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n ): {\n groupValuesEvent: GroupValuesEvent<T, I, G, S> | undefined;\n groupSuccessEvent: GroupSuccessEvent<T, I, G, S>;\n newGroups: ReadonlyArray<G>;\n newStreams: ReadonlyArray<S>;\n } {\n groupNodes.delete(group);\n const values: Array<T> = [];\n const newStreams: Array<S> = [];\n for (const task of groupNode.tasks) {\n const taskNode = taskNodes.get(task);\n if (taskNode) {\n const { value, childStreams } = taskNode;\n if (value !== undefined) {\n values.push(value);\n }\n for (const childStream of childStreams) {\n newStreams.push(childStream);\n }\n removeTask(task);\n }\n }\n const newGroups = pruneEmptyGroups(groupNode.childGroups);\n rootGroups.delete(group);\n return {\n groupValuesEvent: values.length\n ? { kind: 'GROUP_VALUES', group, values }\n : undefined,\n groupSuccessEvent: {\n kind: 'GROUP_SUCCESS',\n group,\n newGroups,\n newStreams,\n },\n newGroups,\n newStreams,\n };\n }\n\n function finishGroupFailure(\n group: G,\n groupNode: GroupNode<T, I, G, S>,\n error: unknown,\n ): GroupFailureEvent<G> {\n removeGroup(group, groupNode);\n rootGroups.delete(group);\n return { kind: 'GROUP_FAILURE', group, error };\n }\n\n function removeGroup(group: G, groupNode: GroupNode<T, I, G, S>): void {\n groupNodes.delete(group);\n for (const task of groupNode.tasks) {\n if (task.groups.every((taskGroup) => !groupNodes.has(taskGroup))) {\n removeTask(task);\n }\n }\n for (const childGroup of groupNode.childGroups) {\n const childGroupState = groupNodes.get(childGroup);\n if (childGroupState) {\n removeGroup(childGroup, childGroupState);\n }\n }\n }\n\n function removeTask(task: Task<T, I, G, S>): void {\n for (const group of task.groups) {\n const groupNode = groupNodes.get(group);\n groupNode?.tasks.delete(task);\n }\n taskNodes.delete(task);\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { DeferUsage, GroupedFieldSet } from '../collectFields.js';
1
+ import type { DeferUsage, GroupedFieldSet } from "../collectFields.mjs";
2
2
  export type DeferUsageSet = ReadonlySet<DeferUsage>;
3
3
  export interface ExecutionPlan {
4
4
  groupedFieldSet: GroupedFieldSet;
@@ -1,4 +1,4 @@
1
- import type { DeferUsage, GroupedFieldSet } from '../collectFields.js';
1
+ import type { DeferUsage, GroupedFieldSet } from "../collectFields.js";
2
2
  export type DeferUsageSet = ReadonlySet<DeferUsage>;
3
3
  export interface ExecutionPlan {
4
4
  groupedFieldSet: GroupedFieldSet;
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildExecutionPlan = buildExecutionPlan;
4
- const getBySet_js_1 = require("../../jsutils/getBySet.js");
5
- const isSameSet_js_1 = require("../../jsutils/isSameSet.js");
4
+ const getBySet_ts_1 = require("../../jsutils/getBySet.js");
5
+ const isSameSet_ts_1 = require("../../jsutils/isSameSet.js");
6
6
  function buildExecutionPlan(originalGroupedFieldSet, parentDeferUsages = new Set()) {
7
7
  const groupedFieldSet = new Map();
8
8
  const newGroupedFieldSets = new Map();
9
9
  for (const [responseKey, fieldDetailsList] of originalGroupedFieldSet) {
10
10
  const filteredDeferUsageSet = getFilteredDeferUsageSet(fieldDetailsList);
11
- if ((0, isSameSet_js_1.isSameSet)(filteredDeferUsageSet, parentDeferUsages)) {
11
+ if ((0, isSameSet_ts_1.isSameSet)(filteredDeferUsageSet, parentDeferUsages)) {
12
12
  groupedFieldSet.set(responseKey, fieldDetailsList);
13
13
  continue;
14
14
  }
15
- let newGroupedFieldSet = (0, getBySet_js_1.getBySet)(newGroupedFieldSets, filteredDeferUsageSet);
15
+ let newGroupedFieldSet = (0, getBySet_ts_1.getBySet)(newGroupedFieldSets, filteredDeferUsageSet);
16
16
  if (newGroupedFieldSet === undefined) {
17
17
  newGroupedFieldSet = new Map();
18
18
  newGroupedFieldSets.set(filteredDeferUsageSet, newGroupedFieldSet);
@@ -1 +1 @@
1
- {"version":3,"file":"buildExecutionPlan.js","sourceRoot":"","sources":["../../../src/execution/incremental/buildExecutionPlan.ts"],"names":[],"mappings":";;AAgBA,gDAgCC;AAhDD,2DAAqD;AACrD,6DAAuD;AAevD,SAAgB,kBAAkB,CAChC,uBAAwC,EACxC,oBAAmC,IAAI,GAAG,EAAc;IAExD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAGhC,CAAC;IACJ,KAAK,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,IAAI,uBAAuB,EAAE,CAAC;QACtE,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAEzE,IAAI,IAAA,wBAAS,EAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACxD,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,kBAAkB,GAAG,IAAA,sBAAQ,EAC/B,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;QACF,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,mBAAmB,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;QACrE,CAAC;QACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,eAAe;QACf,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAkC;IAElC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAc,CAAC;IACpD,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,qBAAqB,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;QAC/C,IAAI,gBAAgB,GAA2B,UAAU,CAAC,gBAAgB,CAAC;QAC3E,OAAO,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChD,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;YACD,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC","sourcesContent":["import { getBySet } from '../../jsutils/getBySet.js';\nimport { isSameSet } from '../../jsutils/isSameSet.js';\n\nimport type {\n DeferUsage,\n FieldDetailsList,\n GroupedFieldSet,\n} from '../collectFields.js';\n\nexport type DeferUsageSet = ReadonlySet<DeferUsage>;\n\nexport interface ExecutionPlan {\n groupedFieldSet: GroupedFieldSet;\n newGroupedFieldSets: Map<DeferUsageSet, GroupedFieldSet>;\n}\n\nexport function buildExecutionPlan(\n originalGroupedFieldSet: GroupedFieldSet,\n parentDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n): ExecutionPlan {\n const groupedFieldSet = new Map<string, FieldDetailsList>();\n const newGroupedFieldSets = new Map<\n DeferUsageSet,\n Map<string, FieldDetailsList>\n >();\n for (const [responseKey, fieldDetailsList] of originalGroupedFieldSet) {\n const filteredDeferUsageSet = getFilteredDeferUsageSet(fieldDetailsList);\n\n if (isSameSet(filteredDeferUsageSet, parentDeferUsages)) {\n groupedFieldSet.set(responseKey, fieldDetailsList);\n continue;\n }\n\n let newGroupedFieldSet = getBySet(\n newGroupedFieldSets,\n filteredDeferUsageSet,\n );\n if (newGroupedFieldSet === undefined) {\n newGroupedFieldSet = new Map();\n newGroupedFieldSets.set(filteredDeferUsageSet, newGroupedFieldSet);\n }\n newGroupedFieldSet.set(responseKey, fieldDetailsList);\n }\n\n return {\n groupedFieldSet,\n newGroupedFieldSets,\n };\n}\n\nfunction getFilteredDeferUsageSet(\n fieldDetailsList: FieldDetailsList,\n): ReadonlySet<DeferUsage> {\n const filteredDeferUsageSet = new Set<DeferUsage>();\n for (const fieldDetails of fieldDetailsList) {\n const deferUsage = fieldDetails.deferUsage;\n if (deferUsage === undefined) {\n filteredDeferUsageSet.clear();\n return filteredDeferUsageSet;\n }\n filteredDeferUsageSet.add(deferUsage);\n }\n\n for (const deferUsage of filteredDeferUsageSet) {\n let parentDeferUsage: DeferUsage | undefined = deferUsage.parentDeferUsage;\n while (parentDeferUsage !== undefined) {\n if (filteredDeferUsageSet.has(parentDeferUsage)) {\n filteredDeferUsageSet.delete(deferUsage);\n break;\n }\n parentDeferUsage = parentDeferUsage.parentDeferUsage;\n }\n }\n return filteredDeferUsageSet;\n}\n"]}
1
+ {"version":3,"file":"buildExecutionPlan.js","sourceRoot":"","sources":["../../../src/execution/incremental/buildExecutionPlan.ts"],"names":[],"mappings":";;AAgBA,gDAgCC;AAhDD,2DAAqD;AACrD,6DAAuD;AAevD,SAAgB,kBAAkB,CAChC,uBAAwC,EACxC,oBAAmC,IAAI,GAAG,EAAc;IAExD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAGhC,CAAC;IACJ,KAAK,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,IAAI,uBAAuB,EAAE,CAAC;QACtE,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAEzE,IAAI,IAAA,wBAAS,EAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACxD,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,kBAAkB,GAAG,IAAA,sBAAQ,EAC/B,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;QACF,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,mBAAmB,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;QACrE,CAAC;QACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,eAAe;QACf,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAkC;IAElC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAc,CAAC;IACpD,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,qBAAqB,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;QAC/C,IAAI,gBAAgB,GAA2B,UAAU,CAAC,gBAAgB,CAAC;QAC3E,OAAO,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChD,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;YACD,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC","sourcesContent":["import { getBySet } from '../../jsutils/getBySet.ts';\nimport { isSameSet } from '../../jsutils/isSameSet.ts';\n\nimport type {\n DeferUsage,\n FieldDetailsList,\n GroupedFieldSet,\n} from '../collectFields.ts';\n\nexport type DeferUsageSet = ReadonlySet<DeferUsage>;\n\nexport interface ExecutionPlan {\n groupedFieldSet: GroupedFieldSet;\n newGroupedFieldSets: Map<DeferUsageSet, GroupedFieldSet>;\n}\n\nexport function buildExecutionPlan(\n originalGroupedFieldSet: GroupedFieldSet,\n parentDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n): ExecutionPlan {\n const groupedFieldSet = new Map<string, FieldDetailsList>();\n const newGroupedFieldSets = new Map<\n DeferUsageSet,\n Map<string, FieldDetailsList>\n >();\n for (const [responseKey, fieldDetailsList] of originalGroupedFieldSet) {\n const filteredDeferUsageSet = getFilteredDeferUsageSet(fieldDetailsList);\n\n if (isSameSet(filteredDeferUsageSet, parentDeferUsages)) {\n groupedFieldSet.set(responseKey, fieldDetailsList);\n continue;\n }\n\n let newGroupedFieldSet = getBySet(\n newGroupedFieldSets,\n filteredDeferUsageSet,\n );\n if (newGroupedFieldSet === undefined) {\n newGroupedFieldSet = new Map();\n newGroupedFieldSets.set(filteredDeferUsageSet, newGroupedFieldSet);\n }\n newGroupedFieldSet.set(responseKey, fieldDetailsList);\n }\n\n return {\n groupedFieldSet,\n newGroupedFieldSets,\n };\n}\n\nfunction getFilteredDeferUsageSet(\n fieldDetailsList: FieldDetailsList,\n): ReadonlySet<DeferUsage> {\n const filteredDeferUsageSet = new Set<DeferUsage>();\n for (const fieldDetails of fieldDetailsList) {\n const deferUsage = fieldDetails.deferUsage;\n if (deferUsage === undefined) {\n filteredDeferUsageSet.clear();\n return filteredDeferUsageSet;\n }\n filteredDeferUsageSet.add(deferUsage);\n }\n\n for (const deferUsage of filteredDeferUsageSet) {\n let parentDeferUsage: DeferUsage | undefined = deferUsage.parentDeferUsage;\n while (parentDeferUsage !== undefined) {\n if (filteredDeferUsageSet.has(parentDeferUsage)) {\n filteredDeferUsageSet.delete(deferUsage);\n break;\n }\n parentDeferUsage = parentDeferUsage.parentDeferUsage;\n }\n }\n return filteredDeferUsageSet;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"buildExecutionPlan.js","sourceRoot":"","sources":["../../../src/execution/incremental/buildExecutionPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mCAAkC;AACrD,OAAO,EAAE,SAAS,EAAE,oCAAmC;AAevD,MAAM,UAAU,kBAAkB,CAChC,uBAAwC,EACxC,oBAAmC,IAAI,GAAG,EAAc;IAExD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAGhC,CAAC;IACJ,KAAK,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,IAAI,uBAAuB,EAAE,CAAC;QACtE,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAEzE,IAAI,SAAS,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACxD,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,kBAAkB,GAAG,QAAQ,CAC/B,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;QACF,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,mBAAmB,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;QACrE,CAAC;QACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,eAAe;QACf,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAkC;IAElC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAc,CAAC;IACpD,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,qBAAqB,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;QAC/C,IAAI,gBAAgB,GAA2B,UAAU,CAAC,gBAAgB,CAAC;QAC3E,OAAO,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChD,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;YACD,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC","sourcesContent":["import { getBySet } from '../../jsutils/getBySet.js';\nimport { isSameSet } from '../../jsutils/isSameSet.js';\n\nimport type {\n DeferUsage,\n FieldDetailsList,\n GroupedFieldSet,\n} from '../collectFields.js';\n\nexport type DeferUsageSet = ReadonlySet<DeferUsage>;\n\nexport interface ExecutionPlan {\n groupedFieldSet: GroupedFieldSet;\n newGroupedFieldSets: Map<DeferUsageSet, GroupedFieldSet>;\n}\n\nexport function buildExecutionPlan(\n originalGroupedFieldSet: GroupedFieldSet,\n parentDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n): ExecutionPlan {\n const groupedFieldSet = new Map<string, FieldDetailsList>();\n const newGroupedFieldSets = new Map<\n DeferUsageSet,\n Map<string, FieldDetailsList>\n >();\n for (const [responseKey, fieldDetailsList] of originalGroupedFieldSet) {\n const filteredDeferUsageSet = getFilteredDeferUsageSet(fieldDetailsList);\n\n if (isSameSet(filteredDeferUsageSet, parentDeferUsages)) {\n groupedFieldSet.set(responseKey, fieldDetailsList);\n continue;\n }\n\n let newGroupedFieldSet = getBySet(\n newGroupedFieldSets,\n filteredDeferUsageSet,\n );\n if (newGroupedFieldSet === undefined) {\n newGroupedFieldSet = new Map();\n newGroupedFieldSets.set(filteredDeferUsageSet, newGroupedFieldSet);\n }\n newGroupedFieldSet.set(responseKey, fieldDetailsList);\n }\n\n return {\n groupedFieldSet,\n newGroupedFieldSets,\n };\n}\n\nfunction getFilteredDeferUsageSet(\n fieldDetailsList: FieldDetailsList,\n): ReadonlySet<DeferUsage> {\n const filteredDeferUsageSet = new Set<DeferUsage>();\n for (const fieldDetails of fieldDetailsList) {\n const deferUsage = fieldDetails.deferUsage;\n if (deferUsage === undefined) {\n filteredDeferUsageSet.clear();\n return filteredDeferUsageSet;\n }\n filteredDeferUsageSet.add(deferUsage);\n }\n\n for (const deferUsage of filteredDeferUsageSet) {\n let parentDeferUsage: DeferUsage | undefined = deferUsage.parentDeferUsage;\n while (parentDeferUsage !== undefined) {\n if (filteredDeferUsageSet.has(parentDeferUsage)) {\n filteredDeferUsageSet.delete(deferUsage);\n break;\n }\n parentDeferUsage = parentDeferUsage.parentDeferUsage;\n }\n }\n return filteredDeferUsageSet;\n}\n"]}
1
+ {"version":3,"file":"buildExecutionPlan.js","sourceRoot":"","sources":["../../../src/execution/incremental/buildExecutionPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mCAAkC;AACrD,OAAO,EAAE,SAAS,EAAE,oCAAmC;AAevD,MAAM,UAAU,kBAAkB,CAChC,uBAAwC,EACxC,oBAAmC,IAAI,GAAG,EAAc;IAExD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAGhC,CAAC;IACJ,KAAK,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,IAAI,uBAAuB,EAAE,CAAC;QACtE,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAEzE,IAAI,SAAS,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACxD,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,kBAAkB,GAAG,QAAQ,CAC/B,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;QACF,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,mBAAmB,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;QACrE,CAAC;QACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,eAAe;QACf,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAkC;IAElC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAc,CAAC;IACpD,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,qBAAqB,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;QAC/C,IAAI,gBAAgB,GAA2B,UAAU,CAAC,gBAAgB,CAAC;QAC3E,OAAO,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChD,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;YACD,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC","sourcesContent":["import { getBySet } from '../../jsutils/getBySet.ts';\nimport { isSameSet } from '../../jsutils/isSameSet.ts';\n\nimport type {\n DeferUsage,\n FieldDetailsList,\n GroupedFieldSet,\n} from '../collectFields.ts';\n\nexport type DeferUsageSet = ReadonlySet<DeferUsage>;\n\nexport interface ExecutionPlan {\n groupedFieldSet: GroupedFieldSet;\n newGroupedFieldSets: Map<DeferUsageSet, GroupedFieldSet>;\n}\n\nexport function buildExecutionPlan(\n originalGroupedFieldSet: GroupedFieldSet,\n parentDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n): ExecutionPlan {\n const groupedFieldSet = new Map<string, FieldDetailsList>();\n const newGroupedFieldSets = new Map<\n DeferUsageSet,\n Map<string, FieldDetailsList>\n >();\n for (const [responseKey, fieldDetailsList] of originalGroupedFieldSet) {\n const filteredDeferUsageSet = getFilteredDeferUsageSet(fieldDetailsList);\n\n if (isSameSet(filteredDeferUsageSet, parentDeferUsages)) {\n groupedFieldSet.set(responseKey, fieldDetailsList);\n continue;\n }\n\n let newGroupedFieldSet = getBySet(\n newGroupedFieldSets,\n filteredDeferUsageSet,\n );\n if (newGroupedFieldSet === undefined) {\n newGroupedFieldSet = new Map();\n newGroupedFieldSets.set(filteredDeferUsageSet, newGroupedFieldSet);\n }\n newGroupedFieldSet.set(responseKey, fieldDetailsList);\n }\n\n return {\n groupedFieldSet,\n newGroupedFieldSets,\n };\n}\n\nfunction getFilteredDeferUsageSet(\n fieldDetailsList: FieldDetailsList,\n): ReadonlySet<DeferUsage> {\n const filteredDeferUsageSet = new Set<DeferUsage>();\n for (const fieldDetails of fieldDetailsList) {\n const deferUsage = fieldDetails.deferUsage;\n if (deferUsage === undefined) {\n filteredDeferUsageSet.clear();\n return filteredDeferUsageSet;\n }\n filteredDeferUsageSet.add(deferUsage);\n }\n\n for (const deferUsage of filteredDeferUsageSet) {\n let parentDeferUsage: DeferUsage | undefined = deferUsage.parentDeferUsage;\n while (parentDeferUsage !== undefined) {\n if (filteredDeferUsageSet.has(parentDeferUsage)) {\n filteredDeferUsageSet.delete(deferUsage);\n break;\n }\n parentDeferUsage = parentDeferUsage.parentDeferUsage;\n }\n }\n return filteredDeferUsageSet;\n}\n"]}
@@ -1,8 +1,8 @@
1
- export { pathToArray as responsePathAsArray } from '../jsutils/Path.js';
2
- export { createSourceEventStream, execute, executeRootSelectionSet, executeSubscriptionEvent, executeSync, experimentalExecuteIncrementally, experimentalExecuteRootSelectionSet, defaultFieldResolver, defaultTypeResolver, subscribe, validateExecutionArgs, validateSubscriptionArgs, } from './execute.js';
3
- export type { ExecutionArgs } from './execute.js';
4
- export type { AsyncWorkFinishedInfo, ExecutionHooks } from './hooks.js';
5
- export type { ValidatedExecutionArgs, ValidatedSubscriptionArgs, ExecutionResult, FormattedExecutionResult, } from './Executor.js';
6
- export type { ExperimentalIncrementalExecutionResults, InitialIncrementalExecutionResult, SubsequentIncrementalExecutionResult, IncrementalDeferResult, IncrementalStreamResult, IncrementalResult, FormattedExperimentalIncrementalExecutionResults, FormattedInitialIncrementalExecutionResult, FormattedSubsequentIncrementalExecutionResult, FormattedIncrementalDeferResult, FormattedIncrementalStreamResult, FormattedIncrementalResult, } from './incremental/IncrementalExecutor.js';
7
- export { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.js';
8
- export { getArgumentValues, getVariableValues, getDirectiveValues, } from './values.js';
1
+ export { pathToArray as responsePathAsArray } from "../jsutils/Path.mjs";
2
+ export { createSourceEventStream, execute, executeRootSelectionSet, executeSubscriptionEvent, executeSync, experimentalExecuteIncrementally, experimentalExecuteRootSelectionSet, defaultFieldResolver, defaultTypeResolver, mapSourceToResponseEvent, subscribe, validateExecutionArgs, validateSubscriptionArgs, } from "./execute.mjs";
3
+ export type { ExecutionArgs, RootSelectionSetExecutor } from "./execute.mjs";
4
+ export type { AsyncWorkFinishedInfo, ExecutionHooks } from "./hooks.mjs";
5
+ export type { ValidatedExecutionArgs, ValidatedSubscriptionArgs, ExecutionResult, FormattedExecutionResult, } from "./Executor.mjs";
6
+ export type { ExperimentalIncrementalExecutionResults, InitialIncrementalExecutionResult, SubsequentIncrementalExecutionResult, IncrementalDeferResult, IncrementalStreamResult, IncrementalResult, FormattedExperimentalIncrementalExecutionResults, FormattedInitialIncrementalExecutionResult, FormattedSubsequentIncrementalExecutionResult, FormattedIncrementalDeferResult, FormattedIncrementalStreamResult, FormattedIncrementalResult, } from "./incremental/IncrementalExecutor.mjs";
7
+ export { AbortedGraphQLExecutionError } from "./AbortedGraphQLExecutionError.mjs";
8
+ export { getArgumentValues, getVariableValues, getDirectiveValues, } from "./values.mjs";
@@ -1,8 +1,8 @@
1
- export { pathToArray as responsePathAsArray } from '../jsutils/Path.js';
2
- export { createSourceEventStream, execute, executeRootSelectionSet, executeSubscriptionEvent, executeSync, experimentalExecuteIncrementally, experimentalExecuteRootSelectionSet, defaultFieldResolver, defaultTypeResolver, subscribe, validateExecutionArgs, validateSubscriptionArgs, } from './execute.js';
3
- export type { ExecutionArgs } from './execute.js';
4
- export type { AsyncWorkFinishedInfo, ExecutionHooks } from './hooks.js';
5
- export type { ValidatedExecutionArgs, ValidatedSubscriptionArgs, ExecutionResult, FormattedExecutionResult, } from './Executor.js';
6
- export type { ExperimentalIncrementalExecutionResults, InitialIncrementalExecutionResult, SubsequentIncrementalExecutionResult, IncrementalDeferResult, IncrementalStreamResult, IncrementalResult, FormattedExperimentalIncrementalExecutionResults, FormattedInitialIncrementalExecutionResult, FormattedSubsequentIncrementalExecutionResult, FormattedIncrementalDeferResult, FormattedIncrementalStreamResult, FormattedIncrementalResult, } from './incremental/IncrementalExecutor.js';
7
- export { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.js';
8
- export { getArgumentValues, getVariableValues, getDirectiveValues, } from './values.js';
1
+ export { pathToArray as responsePathAsArray } from "../jsutils/Path.js";
2
+ export { createSourceEventStream, execute, executeRootSelectionSet, executeSubscriptionEvent, executeSync, experimentalExecuteIncrementally, experimentalExecuteRootSelectionSet, defaultFieldResolver, defaultTypeResolver, mapSourceToResponseEvent, subscribe, validateExecutionArgs, validateSubscriptionArgs, } from "./execute.js";
3
+ export type { ExecutionArgs, RootSelectionSetExecutor } from "./execute.js";
4
+ export type { AsyncWorkFinishedInfo, ExecutionHooks } from "./hooks.js";
5
+ export type { ValidatedExecutionArgs, ValidatedSubscriptionArgs, ExecutionResult, FormattedExecutionResult, } from "./Executor.js";
6
+ export type { ExperimentalIncrementalExecutionResults, InitialIncrementalExecutionResult, SubsequentIncrementalExecutionResult, IncrementalDeferResult, IncrementalStreamResult, IncrementalResult, FormattedExperimentalIncrementalExecutionResults, FormattedInitialIncrementalExecutionResult, FormattedSubsequentIncrementalExecutionResult, FormattedIncrementalDeferResult, FormattedIncrementalStreamResult, FormattedIncrementalResult, } from "./incremental/IncrementalExecutor.js";
7
+ export { AbortedGraphQLExecutionError } from "./AbortedGraphQLExecutionError.js";
8
+ export { getArgumentValues, getVariableValues, getDirectiveValues, } from "./values.js";
@@ -1,25 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDirectiveValues = exports.getVariableValues = exports.getArgumentValues = exports.AbortedGraphQLExecutionError = exports.validateSubscriptionArgs = exports.validateExecutionArgs = exports.subscribe = exports.defaultTypeResolver = exports.defaultFieldResolver = exports.experimentalExecuteRootSelectionSet = exports.experimentalExecuteIncrementally = exports.executeSync = exports.executeSubscriptionEvent = exports.executeRootSelectionSet = exports.execute = exports.createSourceEventStream = exports.responsePathAsArray = void 0;
4
- var Path_js_1 = require("../jsutils/Path.js");
5
- Object.defineProperty(exports, "responsePathAsArray", { enumerable: true, get: function () { return Path_js_1.pathToArray; } });
6
- var execute_js_1 = require("./execute.js");
7
- Object.defineProperty(exports, "createSourceEventStream", { enumerable: true, get: function () { return execute_js_1.createSourceEventStream; } });
8
- Object.defineProperty(exports, "execute", { enumerable: true, get: function () { return execute_js_1.execute; } });
9
- Object.defineProperty(exports, "executeRootSelectionSet", { enumerable: true, get: function () { return execute_js_1.executeRootSelectionSet; } });
10
- Object.defineProperty(exports, "executeSubscriptionEvent", { enumerable: true, get: function () { return execute_js_1.executeSubscriptionEvent; } });
11
- Object.defineProperty(exports, "executeSync", { enumerable: true, get: function () { return execute_js_1.executeSync; } });
12
- Object.defineProperty(exports, "experimentalExecuteIncrementally", { enumerable: true, get: function () { return execute_js_1.experimentalExecuteIncrementally; } });
13
- Object.defineProperty(exports, "experimentalExecuteRootSelectionSet", { enumerable: true, get: function () { return execute_js_1.experimentalExecuteRootSelectionSet; } });
14
- Object.defineProperty(exports, "defaultFieldResolver", { enumerable: true, get: function () { return execute_js_1.defaultFieldResolver; } });
15
- Object.defineProperty(exports, "defaultTypeResolver", { enumerable: true, get: function () { return execute_js_1.defaultTypeResolver; } });
16
- Object.defineProperty(exports, "subscribe", { enumerable: true, get: function () { return execute_js_1.subscribe; } });
17
- Object.defineProperty(exports, "validateExecutionArgs", { enumerable: true, get: function () { return execute_js_1.validateExecutionArgs; } });
18
- Object.defineProperty(exports, "validateSubscriptionArgs", { enumerable: true, get: function () { return execute_js_1.validateSubscriptionArgs; } });
19
- var AbortedGraphQLExecutionError_js_1 = require("./AbortedGraphQLExecutionError.js");
20
- Object.defineProperty(exports, "AbortedGraphQLExecutionError", { enumerable: true, get: function () { return AbortedGraphQLExecutionError_js_1.AbortedGraphQLExecutionError; } });
21
- var values_js_1 = require("./values.js");
22
- Object.defineProperty(exports, "getArgumentValues", { enumerable: true, get: function () { return values_js_1.getArgumentValues; } });
23
- Object.defineProperty(exports, "getVariableValues", { enumerable: true, get: function () { return values_js_1.getVariableValues; } });
24
- Object.defineProperty(exports, "getDirectiveValues", { enumerable: true, get: function () { return values_js_1.getDirectiveValues; } });
3
+ exports.getDirectiveValues = exports.getVariableValues = exports.getArgumentValues = exports.AbortedGraphQLExecutionError = exports.validateSubscriptionArgs = exports.validateExecutionArgs = exports.subscribe = exports.mapSourceToResponseEvent = exports.defaultTypeResolver = exports.defaultFieldResolver = exports.experimentalExecuteRootSelectionSet = exports.experimentalExecuteIncrementally = exports.executeSync = exports.executeSubscriptionEvent = exports.executeRootSelectionSet = exports.execute = exports.createSourceEventStream = exports.responsePathAsArray = void 0;
4
+ var Path_ts_1 = require("../jsutils/Path.js");
5
+ Object.defineProperty(exports, "responsePathAsArray", { enumerable: true, get: function () { return Path_ts_1.pathToArray; } });
6
+ var execute_ts_1 = require("./execute.js");
7
+ Object.defineProperty(exports, "createSourceEventStream", { enumerable: true, get: function () { return execute_ts_1.createSourceEventStream; } });
8
+ Object.defineProperty(exports, "execute", { enumerable: true, get: function () { return execute_ts_1.execute; } });
9
+ Object.defineProperty(exports, "executeRootSelectionSet", { enumerable: true, get: function () { return execute_ts_1.executeRootSelectionSet; } });
10
+ Object.defineProperty(exports, "executeSubscriptionEvent", { enumerable: true, get: function () { return execute_ts_1.executeSubscriptionEvent; } });
11
+ Object.defineProperty(exports, "executeSync", { enumerable: true, get: function () { return execute_ts_1.executeSync; } });
12
+ Object.defineProperty(exports, "experimentalExecuteIncrementally", { enumerable: true, get: function () { return execute_ts_1.experimentalExecuteIncrementally; } });
13
+ Object.defineProperty(exports, "experimentalExecuteRootSelectionSet", { enumerable: true, get: function () { return execute_ts_1.experimentalExecuteRootSelectionSet; } });
14
+ Object.defineProperty(exports, "defaultFieldResolver", { enumerable: true, get: function () { return execute_ts_1.defaultFieldResolver; } });
15
+ Object.defineProperty(exports, "defaultTypeResolver", { enumerable: true, get: function () { return execute_ts_1.defaultTypeResolver; } });
16
+ Object.defineProperty(exports, "mapSourceToResponseEvent", { enumerable: true, get: function () { return execute_ts_1.mapSourceToResponseEvent; } });
17
+ Object.defineProperty(exports, "subscribe", { enumerable: true, get: function () { return execute_ts_1.subscribe; } });
18
+ Object.defineProperty(exports, "validateExecutionArgs", { enumerable: true, get: function () { return execute_ts_1.validateExecutionArgs; } });
19
+ Object.defineProperty(exports, "validateSubscriptionArgs", { enumerable: true, get: function () { return execute_ts_1.validateSubscriptionArgs; } });
20
+ var AbortedGraphQLExecutionError_ts_1 = require("./AbortedGraphQLExecutionError.js");
21
+ Object.defineProperty(exports, "AbortedGraphQLExecutionError", { enumerable: true, get: function () { return AbortedGraphQLExecutionError_ts_1.AbortedGraphQLExecutionError; } });
22
+ var values_ts_1 = require("./values.js");
23
+ Object.defineProperty(exports, "getArgumentValues", { enumerable: true, get: function () { return values_ts_1.getArgumentValues; } });
24
+ Object.defineProperty(exports, "getVariableValues", { enumerable: true, get: function () { return values_ts_1.getVariableValues; } });
25
+ Object.defineProperty(exports, "getDirectiveValues", { enumerable: true, get: function () { return values_ts_1.getDirectiveValues; } });
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":";;;AAAA,8CAAwE;AAA/D,8GAAA,WAAW,OAAuB;AAE3C,2CAasB;AAZpB,qHAAA,uBAAuB,OAAA;AACvB,qGAAA,OAAO,OAAA;AACP,qHAAA,uBAAuB,OAAA;AACvB,sHAAA,wBAAwB,OAAA;AACxB,yGAAA,WAAW,OAAA;AACX,8HAAA,gCAAgC,OAAA;AAChC,iIAAA,mCAAmC,OAAA;AACnC,kHAAA,oBAAoB,OAAA;AACpB,iHAAA,mBAAmB,OAAA;AACnB,uGAAA,SAAS,OAAA;AACT,mHAAA,qBAAqB,OAAA;AACrB,sHAAA,wBAAwB,OAAA;AA4B1B,qFAAiF;AAAxE,+IAAA,4BAA4B,OAAA;AAErC,yCAIqB;AAHnB,8GAAA,iBAAiB,OAAA;AACjB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA","sourcesContent":["export { pathToArray as responsePathAsArray } from '../jsutils/Path.js';\n\nexport {\n createSourceEventStream,\n execute,\n executeRootSelectionSet,\n executeSubscriptionEvent,\n executeSync,\n experimentalExecuteIncrementally,\n experimentalExecuteRootSelectionSet,\n defaultFieldResolver,\n defaultTypeResolver,\n subscribe,\n validateExecutionArgs,\n validateSubscriptionArgs,\n} from './execute.js';\nexport type { ExecutionArgs } from './execute.js';\n\nexport type { AsyncWorkFinishedInfo, ExecutionHooks } from './hooks.js';\n\nexport type {\n ValidatedExecutionArgs,\n ValidatedSubscriptionArgs,\n ExecutionResult,\n FormattedExecutionResult,\n} from './Executor.js';\n\nexport type {\n ExperimentalIncrementalExecutionResults,\n InitialIncrementalExecutionResult,\n SubsequentIncrementalExecutionResult,\n IncrementalDeferResult,\n IncrementalStreamResult,\n IncrementalResult,\n FormattedExperimentalIncrementalExecutionResults,\n FormattedInitialIncrementalExecutionResult,\n FormattedSubsequentIncrementalExecutionResult,\n FormattedIncrementalDeferResult,\n FormattedIncrementalStreamResult,\n FormattedIncrementalResult,\n} from './incremental/IncrementalExecutor.js';\n\nexport { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.js';\n\nexport {\n getArgumentValues,\n getVariableValues,\n getDirectiveValues,\n} from './values.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":";;;AAAA,8CAAwE;AAA/D,8GAAA,WAAW,OAAuB;AAE3C,2CAcsB;AAbpB,qHAAA,uBAAuB,OAAA;AACvB,qGAAA,OAAO,OAAA;AACP,qHAAA,uBAAuB,OAAA;AACvB,sHAAA,wBAAwB,OAAA;AACxB,yGAAA,WAAW,OAAA;AACX,8HAAA,gCAAgC,OAAA;AAChC,iIAAA,mCAAmC,OAAA;AACnC,kHAAA,oBAAoB,OAAA;AACpB,iHAAA,mBAAmB,OAAA;AACnB,sHAAA,wBAAwB,OAAA;AACxB,uGAAA,SAAS,OAAA;AACT,mHAAA,qBAAqB,OAAA;AACrB,sHAAA,wBAAwB,OAAA;AA4B1B,qFAAiF;AAAxE,+IAAA,4BAA4B,OAAA;AAErC,yCAIqB;AAHnB,8GAAA,iBAAiB,OAAA;AACjB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA","sourcesContent":["export { pathToArray as responsePathAsArray } from '../jsutils/Path.ts';\n\nexport {\n createSourceEventStream,\n execute,\n executeRootSelectionSet,\n executeSubscriptionEvent,\n executeSync,\n experimentalExecuteIncrementally,\n experimentalExecuteRootSelectionSet,\n defaultFieldResolver,\n defaultTypeResolver,\n mapSourceToResponseEvent,\n subscribe,\n validateExecutionArgs,\n validateSubscriptionArgs,\n} from './execute.ts';\nexport type { ExecutionArgs, RootSelectionSetExecutor } from './execute.ts';\n\nexport type { AsyncWorkFinishedInfo, ExecutionHooks } from './hooks.ts';\n\nexport type {\n ValidatedExecutionArgs,\n ValidatedSubscriptionArgs,\n ExecutionResult,\n FormattedExecutionResult,\n} from './Executor.ts';\n\nexport type {\n ExperimentalIncrementalExecutionResults,\n InitialIncrementalExecutionResult,\n SubsequentIncrementalExecutionResult,\n IncrementalDeferResult,\n IncrementalStreamResult,\n IncrementalResult,\n FormattedExperimentalIncrementalExecutionResults,\n FormattedInitialIncrementalExecutionResult,\n FormattedSubsequentIncrementalExecutionResult,\n FormattedIncrementalDeferResult,\n FormattedIncrementalStreamResult,\n FormattedIncrementalResult,\n} from './incremental/IncrementalExecutor.ts';\n\nexport { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.ts';\n\nexport {\n getArgumentValues,\n getVariableValues,\n getDirectiveValues,\n} from './values.ts';\n"]}
@@ -1,5 +1,5 @@
1
1
  export { pathToArray as responsePathAsArray } from "../jsutils/Path.mjs";
2
- export { createSourceEventStream, execute, executeRootSelectionSet, executeSubscriptionEvent, executeSync, experimentalExecuteIncrementally, experimentalExecuteRootSelectionSet, defaultFieldResolver, defaultTypeResolver, subscribe, validateExecutionArgs, validateSubscriptionArgs, } from "./execute.mjs";
2
+ export { createSourceEventStream, execute, executeRootSelectionSet, executeSubscriptionEvent, executeSync, experimentalExecuteIncrementally, experimentalExecuteRootSelectionSet, defaultFieldResolver, defaultTypeResolver, mapSourceToResponseEvent, subscribe, validateExecutionArgs, validateSubscriptionArgs, } from "./execute.mjs";
3
3
  export { AbortedGraphQLExecutionError } from "./AbortedGraphQLExecutionError.mjs";
4
4
  export { getArgumentValues, getVariableValues, getDirectiveValues, } from "./values.mjs";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,4BAA2B;AAExE,OAAO,EACL,uBAAuB,EACvB,OAAO,EACP,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,EACX,gCAAgC,EAChC,mCAAmC,EACnC,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,wBAAwB,GACzB,sBAAqB;AA2BtB,OAAO,EAAE,4BAA4B,EAAE,2CAA0C;AAEjF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,qBAAoB","sourcesContent":["export { pathToArray as responsePathAsArray } from '../jsutils/Path.js';\n\nexport {\n createSourceEventStream,\n execute,\n executeRootSelectionSet,\n executeSubscriptionEvent,\n executeSync,\n experimentalExecuteIncrementally,\n experimentalExecuteRootSelectionSet,\n defaultFieldResolver,\n defaultTypeResolver,\n subscribe,\n validateExecutionArgs,\n validateSubscriptionArgs,\n} from './execute.js';\nexport type { ExecutionArgs } from './execute.js';\n\nexport type { AsyncWorkFinishedInfo, ExecutionHooks } from './hooks.js';\n\nexport type {\n ValidatedExecutionArgs,\n ValidatedSubscriptionArgs,\n ExecutionResult,\n FormattedExecutionResult,\n} from './Executor.js';\n\nexport type {\n ExperimentalIncrementalExecutionResults,\n InitialIncrementalExecutionResult,\n SubsequentIncrementalExecutionResult,\n IncrementalDeferResult,\n IncrementalStreamResult,\n IncrementalResult,\n FormattedExperimentalIncrementalExecutionResults,\n FormattedInitialIncrementalExecutionResult,\n FormattedSubsequentIncrementalExecutionResult,\n FormattedIncrementalDeferResult,\n FormattedIncrementalStreamResult,\n FormattedIncrementalResult,\n} from './incremental/IncrementalExecutor.js';\n\nexport { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.js';\n\nexport {\n getArgumentValues,\n getVariableValues,\n getDirectiveValues,\n} from './values.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,4BAA2B;AAExE,OAAO,EACL,uBAAuB,EACvB,OAAO,EACP,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,EACX,gCAAgC,EAChC,mCAAmC,EACnC,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,qBAAqB,EACrB,wBAAwB,GACzB,sBAAqB;AA2BtB,OAAO,EAAE,4BAA4B,EAAE,2CAA0C;AAEjF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,qBAAoB","sourcesContent":["export { pathToArray as responsePathAsArray } from '../jsutils/Path.ts';\n\nexport {\n createSourceEventStream,\n execute,\n executeRootSelectionSet,\n executeSubscriptionEvent,\n executeSync,\n experimentalExecuteIncrementally,\n experimentalExecuteRootSelectionSet,\n defaultFieldResolver,\n defaultTypeResolver,\n mapSourceToResponseEvent,\n subscribe,\n validateExecutionArgs,\n validateSubscriptionArgs,\n} from './execute.ts';\nexport type { ExecutionArgs, RootSelectionSetExecutor } from './execute.ts';\n\nexport type { AsyncWorkFinishedInfo, ExecutionHooks } from './hooks.ts';\n\nexport type {\n ValidatedExecutionArgs,\n ValidatedSubscriptionArgs,\n ExecutionResult,\n FormattedExecutionResult,\n} from './Executor.ts';\n\nexport type {\n ExperimentalIncrementalExecutionResults,\n InitialIncrementalExecutionResult,\n SubsequentIncrementalExecutionResult,\n IncrementalDeferResult,\n IncrementalStreamResult,\n IncrementalResult,\n FormattedExperimentalIncrementalExecutionResults,\n FormattedInitialIncrementalExecutionResult,\n FormattedSubsequentIncrementalExecutionResult,\n FormattedIncrementalDeferResult,\n FormattedIncrementalStreamResult,\n FormattedIncrementalResult,\n} from './incremental/IncrementalExecutor.ts';\n\nexport { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.ts';\n\nexport {\n getArgumentValues,\n getVariableValues,\n getDirectiveValues,\n} from './values.ts';\n"]}
@@ -1,4 +1,4 @@
1
- import type { PromiseOrValue } from '../jsutils/PromiseOrValue.js';
1
+ import type { PromiseOrValue } from "../jsutils/PromiseOrValue.mjs";
2
2
  /**
3
3
  * Given an AsyncIterable and a callback function, return an AsyncIterator
4
4
  * which produces values mapped via calling the callback function.
@@ -1,4 +1,4 @@
1
- import type { PromiseOrValue } from '../jsutils/PromiseOrValue.js';
1
+ import type { PromiseOrValue } from "../jsutils/PromiseOrValue.js";
2
2
  /**
3
3
  * Given an AsyncIterable and a callback function, return an AsyncIterator
4
4
  * which produces values mapped via calling the callback function.
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mapAsyncIterable = mapAsyncIterable;
4
- const isPromise_js_1 = require("../jsutils/isPromise.js");
5
- const withConcurrentAbruptClose_js_1 = require("./withConcurrentAbruptClose.js");
4
+ const isPromise_ts_1 = require("../jsutils/isPromise.js");
5
+ const withConcurrentAbruptClose_ts_1 = require("./withConcurrentAbruptClose.js");
6
6
  /**
7
7
  * Given an AsyncIterable and a callback function, return an AsyncIterator
8
8
  * which produces values mapped via calling the callback function.
@@ -17,7 +17,7 @@ function mapAsyncIterable(iterable, callback) {
17
17
  const onThrow = throwFn
18
18
  ? (reason) => callIgnoringErrors(() => throwFn(reason))
19
19
  : onReturn;
20
- return (0, withConcurrentAbruptClose_js_1.withConcurrentAbruptClose)(mapAsyncIterableImpl(iterable, callback), onReturn, onThrow);
20
+ return (0, withConcurrentAbruptClose_ts_1.withConcurrentAbruptClose)(mapAsyncIterableImpl(iterable, callback), onReturn, onThrow);
21
21
  }
22
22
  async function callIgnoringErrors(fn) {
23
23
  try {
@@ -30,7 +30,7 @@ async function callIgnoringErrors(fn) {
30
30
  async function* mapAsyncIterableImpl(iterable, mapFn) {
31
31
  for await (const value of iterable) {
32
32
  const result = mapFn(value);
33
- if ((0, isPromise_js_1.isPromise)(result)) {
33
+ if ((0, isPromise_ts_1.isPromise)(result)) {
34
34
  yield await result;
35
35
  continue;
36
36
  }