graphql 17.0.0-beta.1 → 17.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1176) hide show
  1. package/__dev__/devMode.d.ts +1 -1
  2. package/__dev__/error/GraphQLError.d.ts +1 -1
  3. package/__dev__/error/ensureGraphQLError.d.ts +1 -1
  4. package/__dev__/error/index.d.ts +1 -1
  5. package/__dev__/error/locatedError.d.ts +1 -1
  6. package/__dev__/error/syntaxError.d.ts +1 -1
  7. package/__dev__/execution/AbortedGraphQLExecutionError.d.ts +1 -1
  8. package/__dev__/execution/AsyncWorkTracker.d.ts +1 -1
  9. package/__dev__/execution/ExecutionArgs.d.mts +1 -0
  10. package/__dev__/execution/ExecutionArgs.d.ts +1 -0
  11. package/__dev__/execution/ExecutionArgs.js +3 -0
  12. package/__dev__/execution/ExecutionArgs.mjs +3 -0
  13. package/__dev__/execution/Executor.d.ts +1 -1
  14. package/__dev__/execution/ExecutorThrowingOnIncremental.d.ts +1 -1
  15. package/__dev__/execution/buildResolveInfo.d.ts +1 -1
  16. package/__dev__/execution/cancellablePromise.d.ts +1 -1
  17. package/__dev__/execution/collectFields.d.ts +1 -1
  18. package/__dev__/execution/collectIteratorPromises.d.ts +1 -1
  19. package/__dev__/execution/createSharedExecutionContext.d.ts +1 -1
  20. package/__dev__/execution/execute.d.ts +1 -1
  21. package/__dev__/execution/getStreamUsage.d.ts +1 -1
  22. package/__dev__/execution/getVariableSignature.d.ts +1 -1
  23. package/__dev__/execution/hooks.d.ts +1 -1
  24. package/__dev__/execution/incremental/Computation.d.ts +1 -1
  25. package/__dev__/execution/incremental/IncrementalExecutor.d.ts +1 -1
  26. package/__dev__/execution/incremental/IncrementalPublisher.d.ts +1 -1
  27. package/__dev__/execution/incremental/Queue.d.ts +1 -1
  28. package/__dev__/execution/incremental/WorkQueue.d.ts +1 -1
  29. package/__dev__/execution/incremental/buildExecutionPlan.d.ts +1 -1
  30. package/__dev__/execution/index.d.ts +1 -1
  31. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +1 -0
  32. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +1 -0
  33. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.js +3 -0
  34. package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +3 -0
  35. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +1 -0
  36. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +1 -0
  37. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.js +3 -0
  38. package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +3 -0
  39. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +1 -0
  40. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +1 -0
  41. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.js +3 -0
  42. package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.mjs +3 -0
  43. package/__dev__/execution/mapAsyncIterable.d.ts +1 -1
  44. package/__dev__/execution/returnIteratorCatchingErrors.d.ts +1 -1
  45. package/__dev__/execution/values.d.ts +1 -1
  46. package/__dev__/execution/withConcurrentAbruptClose.d.ts +1 -1
  47. package/__dev__/graphql.d.ts +1 -1
  48. package/__dev__/harness.d.ts +1 -1
  49. package/__dev__/index.d.ts +1 -1
  50. package/__dev__/jsutils/AccumulatorMap.d.ts +1 -1
  51. package/__dev__/jsutils/Maybe.d.ts +1 -1
  52. package/__dev__/jsutils/ObjMap.d.ts +1 -1
  53. package/__dev__/jsutils/Path.d.ts +1 -1
  54. package/__dev__/jsutils/PromiseOrValue.d.ts +1 -1
  55. package/__dev__/jsutils/capitalize.d.ts +1 -1
  56. package/__dev__/jsutils/devAssert.d.ts +1 -1
  57. package/__dev__/jsutils/didYouMean.d.ts +1 -1
  58. package/__dev__/jsutils/formatList.d.ts +1 -1
  59. package/__dev__/jsutils/getBySet.d.ts +1 -1
  60. package/__dev__/jsutils/groupBy.d.ts +1 -1
  61. package/__dev__/jsutils/identityFunc.d.ts +1 -1
  62. package/__dev__/jsutils/inspect.d.ts +1 -1
  63. package/__dev__/jsutils/instanceOf.d.ts +1 -1
  64. package/__dev__/jsutils/invariant.d.ts +1 -1
  65. package/__dev__/jsutils/isAsyncIterable.d.ts +1 -1
  66. package/__dev__/jsutils/isIterableObject.d.ts +1 -1
  67. package/__dev__/jsutils/isObjectLike.d.ts +1 -1
  68. package/__dev__/jsutils/isPromise.d.ts +1 -1
  69. package/__dev__/jsutils/isSameSet.d.ts +1 -1
  70. package/__dev__/jsutils/keyMap.d.ts +1 -1
  71. package/__dev__/jsutils/keyValMap.d.ts +1 -1
  72. package/__dev__/jsutils/mapValue.d.ts +1 -1
  73. package/__dev__/jsutils/memoize1.d.ts +1 -1
  74. package/__dev__/jsutils/memoize2.d.ts +1 -1
  75. package/__dev__/jsutils/memoize3.d.ts +1 -1
  76. package/__dev__/jsutils/naturalCompare.d.ts +1 -1
  77. package/__dev__/jsutils/printPathArray.d.ts +1 -1
  78. package/__dev__/jsutils/promiseForObject.d.ts +1 -1
  79. package/__dev__/jsutils/promiseReduce.d.ts +1 -1
  80. package/__dev__/jsutils/promiseWithResolvers.d.ts +1 -1
  81. package/__dev__/jsutils/suggestionList.d.ts +1 -1
  82. package/__dev__/jsutils/toError.d.ts +1 -1
  83. package/__dev__/jsutils/toObjMap.d.ts +1 -1
  84. package/__dev__/language/KindTypeMap.d.ts +1 -1
  85. package/__dev__/language/ast.d.ts +1 -1
  86. package/__dev__/language/blockString.d.ts +1 -1
  87. package/__dev__/language/characterClasses.d.ts +1 -1
  88. package/__dev__/language/directiveLocation.d.ts +1 -1
  89. package/__dev__/language/index.d.ts +1 -1
  90. package/__dev__/language/kinds.d.ts +1 -1
  91. package/__dev__/language/kinds_.d.ts +1 -1
  92. package/__dev__/language/lexer.d.ts +1 -1
  93. package/__dev__/language/location.d.ts +1 -1
  94. package/__dev__/language/parser.d.ts +1 -1
  95. package/__dev__/language/predicates.d.ts +1 -1
  96. package/__dev__/language/printLocation.d.ts +1 -1
  97. package/__dev__/language/printString.d.ts +1 -1
  98. package/__dev__/language/printer.d.ts +1 -1
  99. package/__dev__/language/schemaCoordinateLexer.d.ts +1 -1
  100. package/__dev__/language/source.d.ts +1 -1
  101. package/__dev__/language/tokenKind.d.ts +1 -1
  102. package/__dev__/language/visitor.d.ts +1 -1
  103. package/__dev__/type/assertName.d.ts +1 -1
  104. package/__dev__/type/definition.d.ts +1 -1
  105. package/__dev__/type/directives.d.ts +1 -1
  106. package/__dev__/type/index.d.ts +1 -1
  107. package/__dev__/type/introspection.d.ts +1 -1
  108. package/__dev__/type/scalars.d.ts +1 -1
  109. package/__dev__/type/schema.d.ts +1 -1
  110. package/__dev__/type/validate.d.ts +1 -1
  111. package/__dev__/utilities/TypeInfo.d.ts +1 -1
  112. package/__dev__/utilities/astFromValue.d.ts +1 -1
  113. package/__dev__/utilities/buildASTSchema.d.ts +1 -1
  114. package/__dev__/utilities/buildClientSchema.d.ts +1 -1
  115. package/__dev__/utilities/coerceInputValue.d.ts +1 -1
  116. package/__dev__/utilities/concatAST.d.ts +1 -1
  117. package/__dev__/utilities/extendSchema.d.ts +1 -1
  118. package/__dev__/utilities/findSchemaChanges.d.ts +1 -1
  119. package/__dev__/utilities/getDefaultValueAST.d.ts +1 -1
  120. package/__dev__/utilities/getIntrospectionQuery.d.ts +1 -1
  121. package/__dev__/utilities/getOperationAST.d.ts +1 -1
  122. package/__dev__/utilities/index.d.ts +1 -1
  123. package/__dev__/utilities/introspectionFromSchema.d.ts +1 -1
  124. package/__dev__/utilities/lexicographicSortSchema.d.ts +1 -1
  125. package/__dev__/utilities/mapSchemaConfig.d.ts +1 -1
  126. package/__dev__/utilities/printSchema.d.ts +1 -1
  127. package/__dev__/utilities/replaceVariables.d.ts +1 -1
  128. package/__dev__/utilities/resolveSchemaCoordinate.d.ts +1 -1
  129. package/__dev__/utilities/separateOperations.d.ts +1 -1
  130. package/__dev__/utilities/sortValueNode.d.ts +1 -1
  131. package/__dev__/utilities/stripIgnoredCharacters.d.ts +1 -1
  132. package/__dev__/utilities/typeComparators.d.ts +1 -1
  133. package/__dev__/utilities/typeFromAST.d.ts +1 -1
  134. package/__dev__/utilities/typedQueryDocumentNode.d.ts +1 -1
  135. package/__dev__/utilities/validateInputValue.d.ts +1 -1
  136. package/__dev__/utilities/valueFromAST.d.ts +1 -1
  137. package/__dev__/utilities/valueFromASTUntyped.d.ts +1 -1
  138. package/__dev__/utilities/valueToLiteral.d.ts +1 -1
  139. package/__dev__/validation/ValidationContext.d.ts +1 -1
  140. package/__dev__/validation/index.d.ts +1 -1
  141. package/__dev__/validation/rules/DeferStreamDirectiveLabelRule.d.ts +1 -1
  142. package/__dev__/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +1 -1
  143. package/__dev__/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +1 -1
  144. package/__dev__/validation/rules/ExecutableDefinitionsRule.d.ts +1 -1
  145. package/__dev__/validation/rules/FieldsOnCorrectTypeRule.d.ts +1 -1
  146. package/__dev__/validation/rules/FragmentsOnCompositeTypesRule.d.ts +1 -1
  147. package/__dev__/validation/rules/KnownArgumentNamesRule.d.ts +1 -1
  148. package/__dev__/validation/rules/KnownDirectivesRule.d.ts +1 -1
  149. package/__dev__/validation/rules/KnownFragmentNamesRule.d.ts +1 -1
  150. package/__dev__/validation/rules/KnownOperationTypesRule.d.ts +1 -1
  151. package/__dev__/validation/rules/KnownTypeNamesRule.d.ts +1 -1
  152. package/__dev__/validation/rules/LoneAnonymousOperationRule.d.ts +1 -1
  153. package/__dev__/validation/rules/LoneSchemaDefinitionRule.d.ts +1 -1
  154. package/__dev__/validation/rules/MaxIntrospectionDepthRule.d.ts +1 -1
  155. package/__dev__/validation/rules/NoFragmentCyclesRule.d.ts +1 -1
  156. package/__dev__/validation/rules/NoUndefinedVariablesRule.d.ts +1 -1
  157. package/__dev__/validation/rules/NoUnusedFragmentsRule.d.ts +1 -1
  158. package/__dev__/validation/rules/NoUnusedVariablesRule.d.ts +1 -1
  159. package/__dev__/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +1 -1
  160. package/__dev__/validation/rules/PossibleFragmentSpreadsRule.d.ts +1 -1
  161. package/__dev__/validation/rules/PossibleTypeExtensionsRule.d.ts +1 -1
  162. package/__dev__/validation/rules/ProvidedRequiredArgumentsRule.d.ts +1 -1
  163. package/__dev__/validation/rules/ScalarLeafsRule.d.ts +1 -1
  164. package/__dev__/validation/rules/SingleFieldSubscriptionsRule.d.ts +1 -1
  165. package/__dev__/validation/rules/StreamDirectiveOnListFieldRule.d.ts +1 -1
  166. package/__dev__/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +1 -1
  167. package/__dev__/validation/rules/UniqueArgumentNamesRule.d.ts +1 -1
  168. package/__dev__/validation/rules/UniqueDirectiveNamesRule.d.ts +1 -1
  169. package/__dev__/validation/rules/UniqueDirectivesPerLocationRule.d.ts +1 -1
  170. package/__dev__/validation/rules/UniqueEnumValueNamesRule.d.ts +1 -1
  171. package/__dev__/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +1 -1
  172. package/__dev__/validation/rules/UniqueFragmentNamesRule.d.ts +1 -1
  173. package/__dev__/validation/rules/UniqueInputFieldNamesRule.d.ts +1 -1
  174. package/__dev__/validation/rules/UniqueOperationNamesRule.d.ts +1 -1
  175. package/__dev__/validation/rules/UniqueOperationTypesRule.d.ts +1 -1
  176. package/__dev__/validation/rules/UniqueTypeNamesRule.d.ts +1 -1
  177. package/__dev__/validation/rules/UniqueVariableNamesRule.d.ts +1 -1
  178. package/__dev__/validation/rules/ValuesOfCorrectTypeRule.d.ts +1 -1
  179. package/__dev__/validation/rules/VariablesAreInputTypesRule.d.ts +1 -1
  180. package/__dev__/validation/rules/VariablesInAllowedPositionRule.d.ts +1 -1
  181. package/__dev__/validation/rules/custom/NoDeprecatedCustomRule.d.ts +1 -1
  182. package/__dev__/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +1 -1
  183. package/__dev__/validation/specifiedRules.d.ts +1 -1
  184. package/__dev__/validation/validate.d.ts +1 -1
  185. package/__dev__/version.d.ts +1 -1
  186. package/devMode.d.mts +29 -0
  187. package/devMode.d.ts +29 -0
  188. package/devMode.js.map +1 -1
  189. package/devMode.mjs.map +1 -1
  190. package/error/GraphQLError.d.mts +94 -10
  191. package/error/GraphQLError.d.ts +94 -10
  192. package/error/GraphQLError.js +11 -20
  193. package/error/GraphQLError.js.map +1 -1
  194. package/error/GraphQLError.mjs +11 -20
  195. package/error/GraphQLError.mjs.map +1 -1
  196. package/error/ensureGraphQLError.d.mts +2 -0
  197. package/error/ensureGraphQLError.d.ts +2 -0
  198. package/error/ensureGraphQLError.js +0 -3
  199. package/error/ensureGraphQLError.js.map +1 -1
  200. package/error/ensureGraphQLError.mjs +0 -3
  201. package/error/ensureGraphQLError.mjs.map +1 -1
  202. package/error/index.d.mts +6 -0
  203. package/error/index.d.ts +6 -0
  204. package/error/index.js.map +1 -1
  205. package/error/index.mjs.map +1 -1
  206. package/error/locatedError.d.mts +20 -0
  207. package/error/locatedError.d.ts +20 -0
  208. package/error/locatedError.js +0 -6
  209. package/error/locatedError.js.map +1 -1
  210. package/error/locatedError.mjs +0 -6
  211. package/error/locatedError.mjs.map +1 -1
  212. package/error/syntaxError.d.mts +15 -0
  213. package/error/syntaxError.d.ts +15 -0
  214. package/error/syntaxError.js +0 -4
  215. package/error/syntaxError.js.map +1 -1
  216. package/error/syntaxError.mjs +0 -4
  217. package/error/syntaxError.mjs.map +1 -1
  218. package/execution/AbortedGraphQLExecutionError.d.mts +27 -0
  219. package/execution/AbortedGraphQLExecutionError.d.ts +27 -0
  220. package/execution/AbortedGraphQLExecutionError.js.map +1 -1
  221. package/execution/AbortedGraphQLExecutionError.mjs.map +1 -1
  222. package/execution/AsyncWorkTracker.d.mts +1 -1
  223. package/execution/AsyncWorkTracker.d.ts +1 -1
  224. package/execution/AsyncWorkTracker.js +1 -5
  225. package/execution/AsyncWorkTracker.js.map +1 -1
  226. package/execution/AsyncWorkTracker.mjs +1 -5
  227. package/execution/AsyncWorkTracker.mjs.map +1 -1
  228. package/execution/ExecutionArgs.d.mts +101 -0
  229. package/execution/ExecutionArgs.d.ts +101 -0
  230. package/execution/ExecutionArgs.js +3 -0
  231. package/execution/ExecutionArgs.js.map +1 -0
  232. package/execution/ExecutionArgs.mjs +2 -0
  233. package/execution/ExecutionArgs.mjs.map +1 -0
  234. package/execution/Executor.d.mts +44 -40
  235. package/execution/Executor.d.ts +44 -40
  236. package/execution/Executor.js +2 -122
  237. package/execution/Executor.js.map +1 -1
  238. package/execution/Executor.mjs +2 -122
  239. package/execution/Executor.mjs.map +1 -1
  240. package/execution/ExecutorThrowingOnIncremental.js +0 -2
  241. package/execution/ExecutorThrowingOnIncremental.js.map +1 -1
  242. package/execution/ExecutorThrowingOnIncremental.mjs +0 -2
  243. package/execution/ExecutorThrowingOnIncremental.mjs.map +1 -1
  244. package/execution/buildResolveInfo.d.mts +2 -0
  245. package/execution/buildResolveInfo.d.ts +2 -0
  246. package/execution/buildResolveInfo.js +0 -3
  247. package/execution/buildResolveInfo.js.map +1 -1
  248. package/execution/buildResolveInfo.mjs +0 -3
  249. package/execution/buildResolveInfo.mjs.map +1 -1
  250. package/execution/cancellablePromise.d.mts +3 -0
  251. package/execution/cancellablePromise.d.ts +3 -0
  252. package/execution/cancellablePromise.js.map +1 -1
  253. package/execution/cancellablePromise.mjs.map +1 -1
  254. package/execution/collectFields.d.mts +10 -4
  255. package/execution/collectFields.d.ts +10 -4
  256. package/execution/collectFields.js +0 -41
  257. package/execution/collectFields.js.map +1 -1
  258. package/execution/collectFields.mjs +0 -41
  259. package/execution/collectFields.mjs.map +1 -1
  260. package/execution/collectIteratorPromises.d.mts +2 -0
  261. package/execution/collectIteratorPromises.d.ts +2 -0
  262. package/execution/collectIteratorPromises.js +0 -5
  263. package/execution/collectIteratorPromises.js.map +1 -1
  264. package/execution/collectIteratorPromises.mjs +0 -5
  265. package/execution/collectIteratorPromises.mjs.map +1 -1
  266. package/execution/createSharedExecutionContext.d.mts +1 -0
  267. package/execution/createSharedExecutionContext.d.ts +1 -0
  268. package/execution/createSharedExecutionContext.js.map +1 -1
  269. package/execution/createSharedExecutionContext.mjs.map +1 -1
  270. package/execution/execute.d.mts +403 -38
  271. package/execution/execute.d.ts +403 -38
  272. package/execution/execute.js +0 -161
  273. package/execution/execute.js.map +1 -1
  274. package/execution/execute.mjs +0 -161
  275. package/execution/execute.mjs.map +1 -1
  276. package/execution/getStreamUsage.d.mts +4 -1
  277. package/execution/getStreamUsage.d.ts +4 -1
  278. package/execution/getStreamUsage.js +0 -7
  279. package/execution/getStreamUsage.js.map +1 -1
  280. package/execution/getStreamUsage.mjs +0 -7
  281. package/execution/getStreamUsage.mjs.map +1 -1
  282. package/execution/getVariableSignature.d.mts +4 -1
  283. package/execution/getVariableSignature.d.ts +4 -1
  284. package/execution/getVariableSignature.js +0 -2
  285. package/execution/getVariableSignature.js.map +1 -1
  286. package/execution/getVariableSignature.mjs +0 -2
  287. package/execution/getVariableSignature.mjs.map +1 -1
  288. package/execution/hooks.d.mts +3 -7
  289. package/execution/hooks.d.ts +3 -7
  290. package/execution/hooks.js +0 -1
  291. package/execution/hooks.js.map +1 -1
  292. package/execution/hooks.mjs +0 -1
  293. package/execution/hooks.mjs.map +1 -1
  294. package/execution/incremental/Computation.d.mts +1 -1
  295. package/execution/incremental/Computation.d.ts +1 -1
  296. package/execution/incremental/Computation.js +0 -1
  297. package/execution/incremental/Computation.js.map +1 -1
  298. package/execution/incremental/Computation.mjs +0 -1
  299. package/execution/incremental/Computation.mjs.map +1 -1
  300. package/execution/incremental/IncrementalExecutor.d.mts +124 -9
  301. package/execution/incremental/IncrementalExecutor.d.ts +124 -9
  302. package/execution/incremental/IncrementalExecutor.js +1 -31
  303. package/execution/incremental/IncrementalExecutor.js.map +1 -1
  304. package/execution/incremental/IncrementalExecutor.mjs +1 -31
  305. package/execution/incremental/IncrementalExecutor.mjs.map +1 -1
  306. package/execution/incremental/IncrementalPublisher.d.mts +1 -3
  307. package/execution/incremental/IncrementalPublisher.d.ts +1 -3
  308. package/execution/incremental/IncrementalPublisher.js +0 -5
  309. package/execution/incremental/IncrementalPublisher.js.map +1 -1
  310. package/execution/incremental/IncrementalPublisher.mjs +0 -5
  311. package/execution/incremental/IncrementalPublisher.mjs.map +1 -1
  312. package/execution/incremental/Queue.js +3 -64
  313. package/execution/incremental/Queue.js.map +1 -1
  314. package/execution/incremental/Queue.mjs +2 -62
  315. package/execution/incremental/Queue.mjs.map +1 -1
  316. package/execution/incremental/WorkQueue.d.mts +8 -0
  317. package/execution/incremental/WorkQueue.d.ts +8 -0
  318. package/execution/incremental/WorkQueue.js +0 -15
  319. package/execution/incremental/WorkQueue.js.map +1 -1
  320. package/execution/incremental/WorkQueue.mjs +0 -15
  321. package/execution/incremental/WorkQueue.mjs.map +1 -1
  322. package/execution/incremental/buildExecutionPlan.d.mts +3 -0
  323. package/execution/incremental/buildExecutionPlan.d.ts +3 -0
  324. package/execution/incremental/buildExecutionPlan.js.map +1 -1
  325. package/execution/incremental/buildExecutionPlan.mjs.map +1 -1
  326. package/execution/index.d.mts +12 -3
  327. package/execution/index.d.ts +12 -3
  328. package/execution/index.js +4 -1
  329. package/execution/index.js.map +1 -1
  330. package/execution/index.mjs +1 -0
  331. package/execution/index.mjs.map +1 -1
  332. package/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +175 -0
  333. package/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +175 -0
  334. package/execution/legacyIncremental/BranchingIncrementalExecutor.js +69 -0
  335. package/execution/legacyIncremental/BranchingIncrementalExecutor.js.map +1 -0
  336. package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +65 -0
  337. package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs.map +1 -0
  338. package/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +12 -0
  339. package/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +12 -0
  340. package/execution/legacyIncremental/BranchingIncrementalPublisher.js +131 -0
  341. package/execution/legacyIncremental/BranchingIncrementalPublisher.js.map +1 -0
  342. package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +127 -0
  343. package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs.map +1 -0
  344. package/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +165 -0
  345. package/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +165 -0
  346. package/execution/legacyIncremental/legacyExecuteIncrementally.js +17 -0
  347. package/execution/legacyIncremental/legacyExecuteIncrementally.js.map +1 -0
  348. package/execution/legacyIncremental/legacyExecuteIncrementally.mjs +13 -0
  349. package/execution/legacyIncremental/legacyExecuteIncrementally.mjs.map +1 -0
  350. package/execution/mapAsyncIterable.d.mts +2 -0
  351. package/execution/mapAsyncIterable.d.ts +2 -0
  352. package/execution/mapAsyncIterable.js +0 -5
  353. package/execution/mapAsyncIterable.js.map +1 -1
  354. package/execution/mapAsyncIterable.mjs +0 -5
  355. package/execution/mapAsyncIterable.mjs.map +1 -1
  356. package/execution/returnIteratorCatchingErrors.d.mts +1 -0
  357. package/execution/returnIteratorCatchingErrors.d.ts +1 -0
  358. package/execution/returnIteratorCatchingErrors.js +0 -1
  359. package/execution/returnIteratorCatchingErrors.js.map +1 -1
  360. package/execution/returnIteratorCatchingErrors.mjs +0 -1
  361. package/execution/returnIteratorCatchingErrors.mjs.map +1 -1
  362. package/execution/values.d.mts +187 -5
  363. package/execution/values.d.ts +187 -5
  364. package/execution/values.js +14 -55
  365. package/execution/values.js.map +1 -1
  366. package/execution/values.mjs +14 -55
  367. package/execution/values.mjs.map +1 -1
  368. package/execution/withConcurrentAbruptClose.d.mts +2 -0
  369. package/execution/withConcurrentAbruptClose.d.ts +2 -0
  370. package/execution/withConcurrentAbruptClose.js +0 -14
  371. package/execution/withConcurrentAbruptClose.js.map +1 -1
  372. package/execution/withConcurrentAbruptClose.mjs +0 -14
  373. package/execution/withConcurrentAbruptClose.mjs.map +1 -1
  374. package/graphql.d.mts +192 -44
  375. package/graphql.d.ts +192 -44
  376. package/graphql.js +0 -12
  377. package/graphql.js.map +1 -1
  378. package/graphql.mjs +0 -12
  379. package/graphql.mjs.map +1 -1
  380. package/harness.d.mts +17 -0
  381. package/harness.d.ts +17 -0
  382. package/harness.js.map +1 -1
  383. package/harness.mjs.map +1 -1
  384. package/index.d.mts +26 -24
  385. package/index.d.ts +26 -24
  386. package/index.js +9 -96
  387. package/index.js.map +1 -1
  388. package/index.mjs +5 -149
  389. package/index.mjs.map +1 -1
  390. package/jsutils/AccumulatorMap.d.mts +2 -0
  391. package/jsutils/AccumulatorMap.d.ts +2 -0
  392. package/jsutils/AccumulatorMap.js +0 -4
  393. package/jsutils/AccumulatorMap.js.map +1 -1
  394. package/jsutils/AccumulatorMap.mjs +0 -4
  395. package/jsutils/AccumulatorMap.mjs.map +1 -1
  396. package/jsutils/Maybe.d.mts +5 -1
  397. package/jsutils/Maybe.d.ts +5 -1
  398. package/jsutils/Maybe.js.map +1 -1
  399. package/jsutils/Maybe.mjs.map +1 -1
  400. package/jsutils/ObjMap.d.mts +6 -0
  401. package/jsutils/ObjMap.d.ts +6 -0
  402. package/jsutils/ObjMap.js.map +1 -1
  403. package/jsutils/ObjMap.mjs.map +1 -1
  404. package/jsutils/Path.d.mts +30 -0
  405. package/jsutils/Path.d.ts +30 -0
  406. package/jsutils/Path.js +0 -6
  407. package/jsutils/Path.js.map +1 -1
  408. package/jsutils/Path.mjs +0 -6
  409. package/jsutils/Path.mjs.map +1 -1
  410. package/jsutils/PromiseOrValue.d.mts +1 -0
  411. package/jsutils/PromiseOrValue.d.ts +1 -0
  412. package/jsutils/PromiseOrValue.js.map +1 -1
  413. package/jsutils/PromiseOrValue.mjs.map +1 -1
  414. package/jsutils/capitalize.d.mts +2 -0
  415. package/jsutils/capitalize.d.ts +2 -0
  416. package/jsutils/capitalize.js +0 -3
  417. package/jsutils/capitalize.js.map +1 -1
  418. package/jsutils/capitalize.mjs +0 -3
  419. package/jsutils/capitalize.mjs.map +1 -1
  420. package/jsutils/devAssert.d.mts +1 -0
  421. package/jsutils/devAssert.d.ts +1 -0
  422. package/jsutils/devAssert.js.map +1 -1
  423. package/jsutils/devAssert.mjs.map +1 -1
  424. package/jsutils/didYouMean.d.mts +4 -1
  425. package/jsutils/didYouMean.d.ts +4 -1
  426. package/jsutils/didYouMean.js.map +1 -1
  427. package/jsutils/didYouMean.mjs.map +1 -1
  428. package/jsutils/formatList.d.mts +6 -2
  429. package/jsutils/formatList.d.ts +6 -2
  430. package/jsutils/formatList.js +0 -6
  431. package/jsutils/formatList.js.map +1 -1
  432. package/jsutils/formatList.mjs +0 -6
  433. package/jsutils/formatList.mjs.map +1 -1
  434. package/jsutils/getBySet.d.mts +1 -0
  435. package/jsutils/getBySet.d.ts +1 -0
  436. package/jsutils/getBySet.js.map +1 -1
  437. package/jsutils/getBySet.mjs.map +1 -1
  438. package/jsutils/groupBy.d.mts +2 -0
  439. package/jsutils/groupBy.d.ts +2 -0
  440. package/jsutils/groupBy.js +0 -3
  441. package/jsutils/groupBy.js.map +1 -1
  442. package/jsutils/groupBy.mjs +0 -3
  443. package/jsutils/groupBy.mjs.map +1 -1
  444. package/jsutils/identityFunc.d.mts +2 -0
  445. package/jsutils/identityFunc.d.ts +2 -0
  446. package/jsutils/identityFunc.js +0 -3
  447. package/jsutils/identityFunc.js.map +1 -1
  448. package/jsutils/identityFunc.mjs +0 -3
  449. package/jsutils/identityFunc.mjs.map +1 -1
  450. package/jsutils/inspect.d.mts +2 -0
  451. package/jsutils/inspect.d.ts +2 -0
  452. package/jsutils/inspect.js +0 -4
  453. package/jsutils/inspect.js.map +1 -1
  454. package/jsutils/inspect.mjs +0 -4
  455. package/jsutils/inspect.mjs.map +1 -1
  456. package/jsutils/instanceOf.d.mts +2 -0
  457. package/jsutils/instanceOf.d.ts +2 -0
  458. package/jsutils/instanceOf.js +1 -12
  459. package/jsutils/instanceOf.js.map +1 -1
  460. package/jsutils/instanceOf.mjs +1 -12
  461. package/jsutils/instanceOf.mjs.map +1 -1
  462. package/jsutils/invariant.d.mts +1 -0
  463. package/jsutils/invariant.d.ts +1 -0
  464. package/jsutils/invariant.js.map +1 -1
  465. package/jsutils/invariant.mjs.map +1 -1
  466. package/jsutils/isAsyncIterable.d.mts +2 -0
  467. package/jsutils/isAsyncIterable.d.ts +2 -0
  468. package/jsutils/isAsyncIterable.js +0 -4
  469. package/jsutils/isAsyncIterable.js.map +1 -1
  470. package/jsutils/isAsyncIterable.mjs +0 -4
  471. package/jsutils/isAsyncIterable.mjs.map +1 -1
  472. package/jsutils/isIterableObject.d.mts +6 -5
  473. package/jsutils/isIterableObject.d.ts +6 -5
  474. package/jsutils/isIterableObject.js +0 -17
  475. package/jsutils/isIterableObject.js.map +1 -1
  476. package/jsutils/isIterableObject.mjs +0 -17
  477. package/jsutils/isIterableObject.mjs.map +1 -1
  478. package/jsutils/isObjectLike.d.mts +2 -0
  479. package/jsutils/isObjectLike.d.ts +2 -0
  480. package/jsutils/isObjectLike.js +0 -4
  481. package/jsutils/isObjectLike.js.map +1 -1
  482. package/jsutils/isObjectLike.mjs +0 -4
  483. package/jsutils/isObjectLike.mjs.map +1 -1
  484. package/jsutils/isPromise.d.mts +3 -0
  485. package/jsutils/isPromise.d.ts +3 -0
  486. package/jsutils/isPromise.js +0 -4
  487. package/jsutils/isPromise.js.map +1 -1
  488. package/jsutils/isPromise.mjs +0 -4
  489. package/jsutils/isPromise.mjs.map +1 -1
  490. package/jsutils/isSameSet.d.mts +1 -0
  491. package/jsutils/isSameSet.d.ts +1 -0
  492. package/jsutils/isSameSet.js.map +1 -1
  493. package/jsutils/isSameSet.mjs.map +1 -1
  494. package/jsutils/keyMap.d.mts +7 -14
  495. package/jsutils/keyMap.d.ts +7 -14
  496. package/jsutils/keyMap.js +0 -27
  497. package/jsutils/keyMap.js.map +1 -1
  498. package/jsutils/keyMap.mjs +0 -27
  499. package/jsutils/keyMap.mjs.map +1 -1
  500. package/jsutils/keyValMap.d.mts +9 -6
  501. package/jsutils/keyValMap.d.ts +9 -6
  502. package/jsutils/keyValMap.js +0 -17
  503. package/jsutils/keyValMap.js.map +1 -1
  504. package/jsutils/keyValMap.mjs +0 -17
  505. package/jsutils/keyValMap.mjs.map +1 -1
  506. package/jsutils/mapValue.d.mts +2 -0
  507. package/jsutils/mapValue.d.ts +2 -0
  508. package/jsutils/mapValue.js +0 -4
  509. package/jsutils/mapValue.js.map +1 -1
  510. package/jsutils/mapValue.mjs +0 -4
  511. package/jsutils/mapValue.mjs.map +1 -1
  512. package/jsutils/memoize1.d.mts +2 -0
  513. package/jsutils/memoize1.d.ts +2 -0
  514. package/jsutils/memoize1.js +0 -3
  515. package/jsutils/memoize1.js.map +1 -1
  516. package/jsutils/memoize1.mjs +0 -3
  517. package/jsutils/memoize1.mjs.map +1 -1
  518. package/jsutils/memoize2.d.mts +2 -0
  519. package/jsutils/memoize2.d.ts +2 -0
  520. package/jsutils/memoize2.js +0 -3
  521. package/jsutils/memoize2.js.map +1 -1
  522. package/jsutils/memoize2.mjs +0 -3
  523. package/jsutils/memoize2.mjs.map +1 -1
  524. package/jsutils/memoize3.d.mts +2 -0
  525. package/jsutils/memoize3.d.ts +2 -0
  526. package/jsutils/memoize3.js +0 -3
  527. package/jsutils/memoize3.js.map +1 -1
  528. package/jsutils/memoize3.mjs +0 -3
  529. package/jsutils/memoize3.mjs.map +1 -1
  530. package/jsutils/naturalCompare.d.mts +1 -0
  531. package/jsutils/naturalCompare.d.ts +1 -0
  532. package/jsutils/naturalCompare.js +0 -7
  533. package/jsutils/naturalCompare.js.map +1 -1
  534. package/jsutils/naturalCompare.mjs +0 -7
  535. package/jsutils/naturalCompare.mjs.map +1 -1
  536. package/jsutils/printPathArray.d.mts +2 -0
  537. package/jsutils/printPathArray.d.ts +2 -0
  538. package/jsutils/printPathArray.js +0 -3
  539. package/jsutils/printPathArray.js.map +1 -1
  540. package/jsutils/printPathArray.mjs +0 -3
  541. package/jsutils/printPathArray.mjs.map +1 -1
  542. package/jsutils/promiseForObject.d.mts +2 -0
  543. package/jsutils/promiseForObject.d.ts +2 -0
  544. package/jsutils/promiseForObject.js +0 -7
  545. package/jsutils/promiseForObject.js.map +1 -1
  546. package/jsutils/promiseForObject.mjs +0 -7
  547. package/jsutils/promiseForObject.mjs.map +1 -1
  548. package/jsutils/promiseReduce.d.mts +2 -0
  549. package/jsutils/promiseReduce.d.ts +2 -0
  550. package/jsutils/promiseReduce.js +0 -7
  551. package/jsutils/promiseReduce.js.map +1 -1
  552. package/jsutils/promiseReduce.mjs +0 -7
  553. package/jsutils/promiseReduce.mjs.map +1 -1
  554. package/jsutils/promiseWithResolvers.d.mts +2 -0
  555. package/jsutils/promiseWithResolvers.d.ts +2 -0
  556. package/jsutils/promiseWithResolvers.js +0 -5
  557. package/jsutils/promiseWithResolvers.js.map +1 -1
  558. package/jsutils/promiseWithResolvers.mjs +0 -5
  559. package/jsutils/promiseWithResolvers.mjs.map +1 -1
  560. package/jsutils/suggestionList.d.mts +2 -0
  561. package/jsutils/suggestionList.d.ts +2 -0
  562. package/jsutils/suggestionList.js +1 -24
  563. package/jsutils/suggestionList.js.map +1 -1
  564. package/jsutils/suggestionList.mjs +1 -24
  565. package/jsutils/suggestionList.mjs.map +1 -1
  566. package/jsutils/toError.d.mts +2 -0
  567. package/jsutils/toError.d.ts +2 -0
  568. package/jsutils/toError.js +0 -3
  569. package/jsutils/toError.js.map +1 -1
  570. package/jsutils/toError.mjs +0 -3
  571. package/jsutils/toError.mjs.map +1 -1
  572. package/jsutils/toObjMap.d.mts +2 -0
  573. package/jsutils/toObjMap.d.ts +2 -0
  574. package/jsutils/toObjMap.js.map +1 -1
  575. package/jsutils/toObjMap.mjs.map +1 -1
  576. package/language/KindTypeMap.d.mts +1 -0
  577. package/language/KindTypeMap.d.ts +1 -0
  578. package/language/KindTypeMap.js.map +1 -1
  579. package/language/KindTypeMap.mjs.map +1 -1
  580. package/language/ast.d.mts +413 -53
  581. package/language/ast.d.ts +413 -53
  582. package/language/ast.js +0 -20
  583. package/language/ast.js.map +1 -1
  584. package/language/ast.mjs +0 -20
  585. package/language/ast.mjs.map +1 -1
  586. package/language/blockString.d.mts +1 -3
  587. package/language/blockString.d.ts +1 -3
  588. package/language/blockString.js +11 -37
  589. package/language/blockString.js.map +1 -1
  590. package/language/blockString.mjs +11 -37
  591. package/language/blockString.mjs.map +1 -1
  592. package/language/characterClasses.js +2 -45
  593. package/language/characterClasses.js.map +1 -1
  594. package/language/characterClasses.mjs +2 -45
  595. package/language/characterClasses.mjs.map +1 -1
  596. package/language/directiveLocation.d.mts +24 -5
  597. package/language/directiveLocation.d.ts +24 -5
  598. package/language/directiveLocation.js +0 -5
  599. package/language/directiveLocation.js.map +1 -1
  600. package/language/directiveLocation.mjs +0 -5
  601. package/language/directiveLocation.mjs.map +1 -1
  602. package/language/index.d.mts +6 -0
  603. package/language/index.d.ts +6 -0
  604. package/language/index.js +0 -4
  605. package/language/index.js.map +1 -1
  606. package/language/index.mjs +0 -4
  607. package/language/index.mjs.map +1 -1
  608. package/language/kinds.d.mts +3 -0
  609. package/language/kinds.d.ts +3 -0
  610. package/language/kinds.js.map +1 -1
  611. package/language/kinds.mjs.map +1 -1
  612. package/language/kinds_.d.mts +100 -12
  613. package/language/kinds_.d.ts +100 -12
  614. package/language/kinds_.js +0 -13
  615. package/language/kinds_.js.map +1 -1
  616. package/language/kinds_.mjs +0 -13
  617. package/language/kinds_.mjs.map +1 -1
  618. package/language/lexer.d.mts +48 -15
  619. package/language/lexer.d.ts +48 -15
  620. package/language/lexer.js +37 -278
  621. package/language/lexer.js.map +1 -1
  622. package/language/lexer.mjs +37 -278
  623. package/language/lexer.mjs.map +1 -1
  624. package/language/location.d.mts +16 -3
  625. package/language/location.d.ts +16 -3
  626. package/language/location.js +0 -4
  627. package/language/location.js.map +1 -1
  628. package/language/location.mjs +0 -4
  629. package/language/location.mjs.map +1 -1
  630. package/language/parser.d.mts +224 -9
  631. package/language/parser.d.ts +224 -9
  632. package/language/parser.js +0 -375
  633. package/language/parser.js.map +1 -1
  634. package/language/parser.mjs +0 -375
  635. package/language/parser.mjs.map +1 -1
  636. package/language/predicates.d.mts +181 -0
  637. package/language/predicates.d.ts +181 -0
  638. package/language/predicates.js +0 -6
  639. package/language/predicates.js.map +1 -1
  640. package/language/predicates.mjs +0 -6
  641. package/language/predicates.mjs.map +1 -1
  642. package/language/printLocation.d.mts +28 -0
  643. package/language/printLocation.d.ts +28 -0
  644. package/language/printLocation.js +0 -8
  645. package/language/printLocation.js.map +1 -1
  646. package/language/printLocation.mjs +0 -8
  647. package/language/printLocation.mjs.map +1 -1
  648. package/language/printString.d.mts +2 -0
  649. package/language/printString.d.ts +2 -0
  650. package/language/printString.js +5 -11
  651. package/language/printString.js.map +1 -1
  652. package/language/printString.mjs +5 -11
  653. package/language/printString.mjs.map +1 -1
  654. package/language/printer.d.mts +12 -0
  655. package/language/printer.d.ts +12 -0
  656. package/language/printer.js +0 -25
  657. package/language/printer.js.map +1 -1
  658. package/language/printer.mjs +0 -25
  659. package/language/printer.mjs.map +1 -1
  660. package/language/schemaCoordinateLexer.d.mts +14 -0
  661. package/language/schemaCoordinateLexer.d.ts +14 -0
  662. package/language/schemaCoordinateLexer.js +5 -35
  663. package/language/schemaCoordinateLexer.js.map +1 -1
  664. package/language/schemaCoordinateLexer.mjs +5 -35
  665. package/language/schemaCoordinateLexer.mjs.map +1 -1
  666. package/language/source.d.mts +28 -1
  667. package/language/source.d.ts +28 -1
  668. package/language/source.js +0 -12
  669. package/language/source.js.map +1 -1
  670. package/language/source.mjs +0 -12
  671. package/language/source.mjs.map +1 -1
  672. package/language/tokenKind.d.mts +5 -0
  673. package/language/tokenKind.d.ts +5 -0
  674. package/language/tokenKind.js +0 -4
  675. package/language/tokenKind.js.map +1 -1
  676. package/language/tokenKind.mjs +0 -4
  677. package/language/tokenKind.mjs.map +1 -1
  678. package/language/visitor.d.mts +182 -72
  679. package/language/visitor.d.ts +182 -72
  680. package/language/visitor.js +0 -15
  681. package/language/visitor.js.map +1 -1
  682. package/language/visitor.mjs +0 -15
  683. package/language/visitor.mjs.map +1 -1
  684. package/package.json +1 -1
  685. package/type/assertName.d.mts +18 -1
  686. package/type/assertName.d.ts +18 -1
  687. package/type/assertName.js +0 -8
  688. package/type/assertName.js.map +1 -1
  689. package/type/assertName.mjs +0 -8
  690. package/type/assertName.mjs.map +1 -1
  691. package/type/definition.d.mts +3258 -128
  692. package/type/definition.d.ts +3258 -128
  693. package/type/definition.js +5 -252
  694. package/type/definition.js.map +1 -1
  695. package/type/definition.mjs +5 -252
  696. package/type/definition.mjs.map +1 -1
  697. package/type/directives.d.mts +209 -20
  698. package/type/directives.d.ts +209 -20
  699. package/type/directives.js +0 -37
  700. package/type/directives.js.map +1 -1
  701. package/type/directives.mjs +0 -37
  702. package/type/directives.mjs.map +1 -1
  703. package/type/index.d.mts +6 -0
  704. package/type/index.d.ts +6 -0
  705. package/type/index.js +0 -23
  706. package/type/index.js.map +1 -1
  707. package/type/index.mjs +5 -48
  708. package/type/index.mjs.map +1 -1
  709. package/type/introspection.d.mts +36 -0
  710. package/type/introspection.d.ts +36 -0
  711. package/type/introspection.js +1 -6
  712. package/type/introspection.js.map +1 -1
  713. package/type/introspection.mjs +1 -6
  714. package/type/introspection.mjs.map +1 -1
  715. package/type/scalars.d.mts +29 -2
  716. package/type/scalars.d.ts +29 -2
  717. package/type/scalars.js +0 -15
  718. package/type/scalars.js.map +1 -1
  719. package/type/scalars.mjs +0 -15
  720. package/type/scalars.mjs.map +1 -1
  721. package/type/schema.d.mts +507 -31
  722. package/type/schema.d.ts +507 -31
  723. package/type/schema.js +0 -97
  724. package/type/schema.js.map +1 -1
  725. package/type/schema.mjs +0 -97
  726. package/type/schema.mjs.map +1 -1
  727. package/type/validate.d.mts +32 -3
  728. package/type/validate.d.ts +32 -3
  729. package/type/validate.js +0 -112
  730. package/type/validate.js.map +1 -1
  731. package/type/validate.mjs +0 -112
  732. package/type/validate.mjs.map +1 -1
  733. package/utilities/TypeInfo.d.mts +564 -1
  734. package/utilities/TypeInfo.d.ts +564 -1
  735. package/utilities/TypeInfo.js +1 -24
  736. package/utilities/TypeInfo.js.map +1 -1
  737. package/utilities/TypeInfo.mjs +1 -24
  738. package/utilities/TypeInfo.mjs.map +1 -1
  739. package/utilities/astFromValue.d.mts +36 -3
  740. package/utilities/astFromValue.d.ts +36 -3
  741. package/utilities/astFromValue.js +0 -42
  742. package/utilities/astFromValue.js.map +1 -1
  743. package/utilities/astFromValue.mjs +0 -42
  744. package/utilities/astFromValue.mjs.map +1 -1
  745. package/utilities/buildASTSchema.d.mts +66 -6
  746. package/utilities/buildASTSchema.d.ts +66 -6
  747. package/utilities/buildASTSchema.js +0 -21
  748. package/utilities/buildASTSchema.js.map +1 -1
  749. package/utilities/buildASTSchema.mjs +0 -21
  750. package/utilities/buildASTSchema.mjs.map +1 -1
  751. package/utilities/buildClientSchema.d.mts +17 -2
  752. package/utilities/buildClientSchema.d.ts +17 -2
  753. package/utilities/buildClientSchema.js +1 -32
  754. package/utilities/buildClientSchema.js.map +1 -1
  755. package/utilities/buildClientSchema.mjs +0 -30
  756. package/utilities/buildClientSchema.mjs.map +1 -1
  757. package/utilities/coerceInputValue.d.mts +83 -1
  758. package/utilities/coerceInputValue.d.ts +83 -1
  759. package/utilities/coerceInputValue.js +21 -50
  760. package/utilities/coerceInputValue.js.map +1 -1
  761. package/utilities/coerceInputValue.mjs +21 -50
  762. package/utilities/coerceInputValue.mjs.map +1 -1
  763. package/utilities/concatAST.d.mts +12 -0
  764. package/utilities/concatAST.d.ts +12 -0
  765. package/utilities/concatAST.js +0 -5
  766. package/utilities/concatAST.js.map +1 -1
  767. package/utilities/concatAST.mjs +0 -5
  768. package/utilities/concatAST.mjs.map +1 -1
  769. package/utilities/extendSchema.d.mts +58 -3
  770. package/utilities/extendSchema.d.ts +58 -3
  771. package/utilities/extendSchema.js +0 -60
  772. package/utilities/extendSchema.js.map +1 -1
  773. package/utilities/extendSchema.mjs +0 -60
  774. package/utilities/extendSchema.mjs.map +1 -1
  775. package/utilities/findSchemaChanges.d.mts +99 -1
  776. package/utilities/findSchemaChanges.d.ts +99 -1
  777. package/utilities/findSchemaChanges.js +3 -35
  778. package/utilities/findSchemaChanges.js.map +1 -1
  779. package/utilities/findSchemaChanges.mjs +3 -35
  780. package/utilities/findSchemaChanges.mjs.map +1 -1
  781. package/utilities/getDefaultValueAST.d.mts +1 -0
  782. package/utilities/getDefaultValueAST.d.ts +1 -0
  783. package/utilities/getDefaultValueAST.js +0 -2
  784. package/utilities/getDefaultValueAST.js.map +1 -1
  785. package/utilities/getDefaultValueAST.mjs +0 -2
  786. package/utilities/getDefaultValueAST.mjs.map +1 -1
  787. package/utilities/getIntrospectionQuery.d.mts +132 -0
  788. package/utilities/getIntrospectionQuery.d.ts +132 -0
  789. package/utilities/getIntrospectionQuery.js +0 -4
  790. package/utilities/getIntrospectionQuery.js.map +1 -1
  791. package/utilities/getIntrospectionQuery.mjs +0 -4
  792. package/utilities/getIntrospectionQuery.mjs.map +1 -1
  793. package/utilities/getOperationAST.d.mts +15 -0
  794. package/utilities/getOperationAST.d.ts +15 -0
  795. package/utilities/getOperationAST.js +0 -8
  796. package/utilities/getOperationAST.js.map +1 -1
  797. package/utilities/getOperationAST.mjs +0 -8
  798. package/utilities/getOperationAST.mjs.map +1 -1
  799. package/utilities/index.d.mts +18 -3
  800. package/utilities/index.d.ts +18 -3
  801. package/utilities/index.js +0 -27
  802. package/utilities/index.js.map +1 -1
  803. package/utilities/index.mjs +4 -37
  804. package/utilities/index.mjs.map +1 -1
  805. package/utilities/introspectionFromSchema.d.mts +54 -0
  806. package/utilities/introspectionFromSchema.d.ts +54 -0
  807. package/utilities/introspectionFromSchema.js +0 -9
  808. package/utilities/introspectionFromSchema.js.map +1 -1
  809. package/utilities/introspectionFromSchema.mjs +0 -9
  810. package/utilities/introspectionFromSchema.mjs.map +1 -1
  811. package/utilities/lexicographicSortSchema.d.mts +35 -0
  812. package/utilities/lexicographicSortSchema.d.ts +35 -0
  813. package/utilities/lexicographicSortSchema.js +0 -5
  814. package/utilities/lexicographicSortSchema.js.map +1 -1
  815. package/utilities/lexicographicSortSchema.mjs +0 -5
  816. package/utilities/lexicographicSortSchema.mjs.map +1 -1
  817. package/utilities/mapSchemaConfig.d.mts +6 -3
  818. package/utilities/mapSchemaConfig.d.ts +6 -3
  819. package/utilities/mapSchemaConfig.js +0 -10
  820. package/utilities/mapSchemaConfig.js.map +1 -1
  821. package/utilities/mapSchemaConfig.mjs +0 -10
  822. package/utilities/mapSchemaConfig.mjs.map +1 -1
  823. package/utilities/printSchema.d.mts +84 -0
  824. package/utilities/printSchema.d.ts +84 -0
  825. package/utilities/printSchema.js +0 -28
  826. package/utilities/printSchema.js.map +1 -1
  827. package/utilities/printSchema.mjs +0 -28
  828. package/utilities/printSchema.mjs.map +1 -1
  829. package/utilities/replaceVariables.d.mts +36 -0
  830. package/utilities/replaceVariables.d.ts +36 -0
  831. package/utilities/replaceVariables.js +0 -8
  832. package/utilities/replaceVariables.js.map +1 -1
  833. package/utilities/replaceVariables.mjs +0 -8
  834. package/utilities/replaceVariables.mjs.map +1 -1
  835. package/utilities/resolveSchemaCoordinate.d.mts +62 -0
  836. package/utilities/resolveSchemaCoordinate.d.ts +62 -0
  837. package/utilities/resolveSchemaCoordinate.js +0 -56
  838. package/utilities/resolveSchemaCoordinate.js.map +1 -1
  839. package/utilities/resolveSchemaCoordinate.mjs +0 -56
  840. package/utilities/resolveSchemaCoordinate.mjs.map +1 -1
  841. package/utilities/separateOperations.d.mts +30 -0
  842. package/utilities/separateOperations.d.ts +30 -0
  843. package/utilities/separateOperations.js +0 -15
  844. package/utilities/separateOperations.js.map +1 -1
  845. package/utilities/separateOperations.mjs +0 -15
  846. package/utilities/separateOperations.mjs.map +1 -1
  847. package/utilities/sortValueNode.js +0 -7
  848. package/utilities/sortValueNode.js.map +1 -1
  849. package/utilities/sortValueNode.mjs +0 -7
  850. package/utilities/sortValueNode.mjs.map +1 -1
  851. package/utilities/stripIgnoredCharacters.d.mts +13 -6
  852. package/utilities/stripIgnoredCharacters.d.ts +13 -6
  853. package/utilities/stripIgnoredCharacters.js +0 -65
  854. package/utilities/stripIgnoredCharacters.js.map +1 -1
  855. package/utilities/stripIgnoredCharacters.mjs +0 -65
  856. package/utilities/stripIgnoredCharacters.mjs.map +1 -1
  857. package/utilities/typeComparators.d.mts +84 -0
  858. package/utilities/typeComparators.d.ts +84 -0
  859. package/utilities/typeComparators.js +0 -33
  860. package/utilities/typeComparators.js.map +1 -1
  861. package/utilities/typeComparators.mjs +0 -33
  862. package/utilities/typeComparators.mjs.map +1 -1
  863. package/utilities/typeFromAST.d.mts +86 -0
  864. package/utilities/typeFromAST.d.ts +86 -0
  865. package/utilities/typeFromAST.js.map +1 -1
  866. package/utilities/typeFromAST.mjs.map +1 -1
  867. package/utilities/typedQueryDocumentNode.d.mts +4 -0
  868. package/utilities/typedQueryDocumentNode.d.ts +4 -0
  869. package/utilities/typedQueryDocumentNode.js.map +1 -1
  870. package/utilities/typedQueryDocumentNode.mjs.map +1 -1
  871. package/utilities/validateInputValue.d.mts +123 -0
  872. package/utilities/validateInputValue.d.ts +123 -0
  873. package/utilities/validateInputValue.js +0 -20
  874. package/utilities/validateInputValue.js.map +1 -1
  875. package/utilities/validateInputValue.mjs +0 -20
  876. package/utilities/validateInputValue.mjs.map +1 -1
  877. package/utilities/valueFromAST.d.mts +41 -0
  878. package/utilities/valueFromAST.d.ts +41 -0
  879. package/utilities/valueFromAST.js +13 -51
  880. package/utilities/valueFromAST.js.map +1 -1
  881. package/utilities/valueFromAST.mjs +13 -51
  882. package/utilities/valueFromAST.mjs.map +1 -1
  883. package/utilities/valueFromASTUntyped.d.mts +15 -2
  884. package/utilities/valueFromASTUntyped.d.ts +15 -2
  885. package/utilities/valueFromASTUntyped.js +0 -16
  886. package/utilities/valueFromASTUntyped.js.map +1 -1
  887. package/utilities/valueFromASTUntyped.mjs +0 -16
  888. package/utilities/valueFromASTUntyped.mjs.map +1 -1
  889. package/utilities/valueToLiteral.d.mts +30 -1
  890. package/utilities/valueToLiteral.d.ts +30 -1
  891. package/utilities/valueToLiteral.js +7 -40
  892. package/utilities/valueToLiteral.js.map +1 -1
  893. package/utilities/valueToLiteral.mjs +7 -40
  894. package/utilities/valueToLiteral.mjs.map +1 -1
  895. package/validation/ValidationContext.d.mts +490 -0
  896. package/validation/ValidationContext.d.ts +490 -0
  897. package/validation/ValidationContext.js +1 -8
  898. package/validation/ValidationContext.js.map +1 -1
  899. package/validation/ValidationContext.mjs +1 -8
  900. package/validation/ValidationContext.mjs.map +1 -1
  901. package/validation/index.d.mts +7 -0
  902. package/validation/index.d.ts +7 -0
  903. package/validation/index.js +0 -34
  904. package/validation/index.js.map +1 -1
  905. package/validation/index.mjs +0 -34
  906. package/validation/index.mjs.map +1 -1
  907. package/validation/rules/DeferStreamDirectiveLabelRule.d.mts +30 -0
  908. package/validation/rules/DeferStreamDirectiveLabelRule.d.ts +30 -0
  909. package/validation/rules/DeferStreamDirectiveLabelRule.js +0 -5
  910. package/validation/rules/DeferStreamDirectiveLabelRule.js.map +1 -1
  911. package/validation/rules/DeferStreamDirectiveLabelRule.mjs +0 -5
  912. package/validation/rules/DeferStreamDirectiveLabelRule.mjs.map +1 -1
  913. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +28 -0
  914. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +28 -0
  915. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js +0 -5
  916. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
  917. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs +0 -5
  918. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
  919. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.mts +52 -0
  920. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +52 -0
  921. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js +0 -5
  922. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js.map +1 -1
  923. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs +0 -5
  924. package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs.map +1 -1
  925. package/validation/rules/ExecutableDefinitionsRule.d.mts +28 -0
  926. package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
  927. package/validation/rules/ExecutableDefinitionsRule.js +0 -8
  928. package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
  929. package/validation/rules/ExecutableDefinitionsRule.mjs +0 -8
  930. package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
  931. package/validation/rules/FieldsOnCorrectTypeRule.d.mts +28 -0
  932. package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
  933. package/validation/rules/FieldsOnCorrectTypeRule.js +0 -27
  934. package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
  935. package/validation/rules/FieldsOnCorrectTypeRule.mjs +0 -27
  936. package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
  937. package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +28 -0
  938. package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
  939. package/validation/rules/FragmentsOnCompositeTypesRule.js +0 -9
  940. package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
  941. package/validation/rules/FragmentsOnCompositeTypesRule.mjs +0 -9
  942. package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
  943. package/validation/rules/KnownArgumentNamesRule.d.mts +29 -3
  944. package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
  945. package/validation/rules/KnownArgumentNamesRule.js +0 -13
  946. package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
  947. package/validation/rules/KnownArgumentNamesRule.mjs +0 -13
  948. package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
  949. package/validation/rules/KnownDirectivesRule.d.mts +28 -0
  950. package/validation/rules/KnownDirectivesRule.d.ts +28 -0
  951. package/validation/rules/KnownDirectivesRule.js +0 -10
  952. package/validation/rules/KnownDirectivesRule.js.map +1 -1
  953. package/validation/rules/KnownDirectivesRule.mjs +0 -10
  954. package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
  955. package/validation/rules/KnownFragmentNamesRule.d.mts +28 -0
  956. package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
  957. package/validation/rules/KnownFragmentNamesRule.js +0 -8
  958. package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
  959. package/validation/rules/KnownFragmentNamesRule.mjs +0 -8
  960. package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
  961. package/validation/rules/KnownOperationTypesRule.d.mts +20 -0
  962. package/validation/rules/KnownOperationTypesRule.d.ts +20 -0
  963. package/validation/rules/KnownOperationTypesRule.js +0 -8
  964. package/validation/rules/KnownOperationTypesRule.js.map +1 -1
  965. package/validation/rules/KnownOperationTypesRule.mjs +0 -8
  966. package/validation/rules/KnownOperationTypesRule.mjs.map +1 -1
  967. package/validation/rules/KnownTypeNamesRule.d.mts +28 -0
  968. package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
  969. package/validation/rules/KnownTypeNamesRule.js +0 -8
  970. package/validation/rules/KnownTypeNamesRule.js.map +1 -1
  971. package/validation/rules/KnownTypeNamesRule.mjs +0 -8
  972. package/validation/rules/KnownTypeNamesRule.mjs.map +1 -1
  973. package/validation/rules/LoneAnonymousOperationRule.d.mts +28 -0
  974. package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
  975. package/validation/rules/LoneAnonymousOperationRule.js +0 -8
  976. package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
  977. package/validation/rules/LoneAnonymousOperationRule.mjs +0 -8
  978. package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
  979. package/validation/rules/LoneSchemaDefinitionRule.d.mts +21 -0
  980. package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
  981. package/validation/rules/LoneSchemaDefinitionRule.js +0 -5
  982. package/validation/rules/LoneSchemaDefinitionRule.js.map +1 -1
  983. package/validation/rules/LoneSchemaDefinitionRule.mjs +0 -5
  984. package/validation/rules/LoneSchemaDefinitionRule.mjs.map +1 -1
  985. package/validation/rules/MaxIntrospectionDepthRule.d.mts +31 -0
  986. package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
  987. package/validation/rules/MaxIntrospectionDepthRule.js +0 -14
  988. package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
  989. package/validation/rules/MaxIntrospectionDepthRule.mjs +0 -14
  990. package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
  991. package/validation/rules/NoFragmentCyclesRule.d.mts +28 -0
  992. package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
  993. package/validation/rules/NoFragmentCyclesRule.js +0 -15
  994. package/validation/rules/NoFragmentCyclesRule.js.map +1 -1
  995. package/validation/rules/NoFragmentCyclesRule.mjs +0 -15
  996. package/validation/rules/NoFragmentCyclesRule.mjs.map +1 -1
  997. package/validation/rules/NoUndefinedVariablesRule.d.mts +28 -0
  998. package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
  999. package/validation/rules/NoUndefinedVariablesRule.js +0 -8
  1000. package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
  1001. package/validation/rules/NoUndefinedVariablesRule.mjs +0 -8
  1002. package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
  1003. package/validation/rules/NoUnusedFragmentsRule.d.mts +28 -0
  1004. package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
  1005. package/validation/rules/NoUnusedFragmentsRule.js +0 -8
  1006. package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
  1007. package/validation/rules/NoUnusedFragmentsRule.mjs +0 -8
  1008. package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
  1009. package/validation/rules/NoUnusedVariablesRule.d.mts +29 -0
  1010. package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
  1011. package/validation/rules/NoUnusedVariablesRule.js +0 -8
  1012. package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
  1013. package/validation/rules/NoUnusedVariablesRule.mjs +0 -8
  1014. package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
  1015. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +33 -0
  1016. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
  1017. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +1 -175
  1018. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
  1019. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +1 -175
  1020. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
  1021. package/validation/rules/PossibleFragmentSpreadsRule.d.mts +36 -0
  1022. package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
  1023. package/validation/rules/PossibleFragmentSpreadsRule.js +0 -7
  1024. package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
  1025. package/validation/rules/PossibleFragmentSpreadsRule.mjs +0 -7
  1026. package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
  1027. package/validation/rules/PossibleTypeExtensionsRule.d.mts +21 -0
  1028. package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
  1029. package/validation/rules/PossibleTypeExtensionsRule.js +0 -9
  1030. package/validation/rules/PossibleTypeExtensionsRule.js.map +1 -1
  1031. package/validation/rules/PossibleTypeExtensionsRule.mjs +0 -9
  1032. package/validation/rules/PossibleTypeExtensionsRule.mjs.map +1 -1
  1033. package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +29 -3
  1034. package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
  1035. package/validation/rules/ProvidedRequiredArgumentsRule.js +0 -13
  1036. package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
  1037. package/validation/rules/ProvidedRequiredArgumentsRule.mjs +0 -13
  1038. package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
  1039. package/validation/rules/ScalarLeafsRule.d.mts +28 -0
  1040. package/validation/rules/ScalarLeafsRule.d.ts +28 -0
  1041. package/validation/rules/ScalarLeafsRule.js +0 -6
  1042. package/validation/rules/ScalarLeafsRule.js.map +1 -1
  1043. package/validation/rules/ScalarLeafsRule.mjs +0 -6
  1044. package/validation/rules/ScalarLeafsRule.mjs.map +1 -1
  1045. package/validation/rules/SingleFieldSubscriptionsRule.d.mts +34 -2
  1046. package/validation/rules/SingleFieldSubscriptionsRule.d.ts +34 -2
  1047. package/validation/rules/SingleFieldSubscriptionsRule.js +0 -9
  1048. package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
  1049. package/validation/rules/SingleFieldSubscriptionsRule.mjs +0 -9
  1050. package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
  1051. package/validation/rules/StreamDirectiveOnListFieldRule.d.mts +21 -0
  1052. package/validation/rules/StreamDirectiveOnListFieldRule.d.ts +21 -0
  1053. package/validation/rules/StreamDirectiveOnListFieldRule.js +0 -5
  1054. package/validation/rules/StreamDirectiveOnListFieldRule.js.map +1 -1
  1055. package/validation/rules/StreamDirectiveOnListFieldRule.mjs +0 -5
  1056. package/validation/rules/StreamDirectiveOnListFieldRule.mjs.map +1 -1
  1057. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.mts +21 -0
  1058. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
  1059. package/validation/rules/UniqueArgumentDefinitionNamesRule.js +0 -6
  1060. package/validation/rules/UniqueArgumentDefinitionNamesRule.js.map +1 -1
  1061. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +0 -6
  1062. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs.map +1 -1
  1063. package/validation/rules/UniqueArgumentNamesRule.d.mts +28 -0
  1064. package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
  1065. package/validation/rules/UniqueArgumentNamesRule.js +0 -8
  1066. package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
  1067. package/validation/rules/UniqueArgumentNamesRule.mjs +0 -8
  1068. package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
  1069. package/validation/rules/UniqueDirectiveNamesRule.d.mts +21 -0
  1070. package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
  1071. package/validation/rules/UniqueDirectiveNamesRule.js +0 -5
  1072. package/validation/rules/UniqueDirectiveNamesRule.js.map +1 -1
  1073. package/validation/rules/UniqueDirectiveNamesRule.mjs +0 -5
  1074. package/validation/rules/UniqueDirectiveNamesRule.mjs.map +1 -1
  1075. package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +28 -0
  1076. package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
  1077. package/validation/rules/UniqueDirectivesPerLocationRule.js +0 -11
  1078. package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
  1079. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +0 -11
  1080. package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
  1081. package/validation/rules/UniqueEnumValueNamesRule.d.mts +21 -0
  1082. package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
  1083. package/validation/rules/UniqueEnumValueNamesRule.js +0 -5
  1084. package/validation/rules/UniqueEnumValueNamesRule.js.map +1 -1
  1085. package/validation/rules/UniqueEnumValueNamesRule.mjs +0 -5
  1086. package/validation/rules/UniqueEnumValueNamesRule.mjs.map +1 -1
  1087. package/validation/rules/UniqueFieldDefinitionNamesRule.d.mts +21 -0
  1088. package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
  1089. package/validation/rules/UniqueFieldDefinitionNamesRule.js +0 -5
  1090. package/validation/rules/UniqueFieldDefinitionNamesRule.js.map +1 -1
  1091. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +0 -5
  1092. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs.map +1 -1
  1093. package/validation/rules/UniqueFragmentNamesRule.d.mts +28 -0
  1094. package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
  1095. package/validation/rules/UniqueFragmentNamesRule.js +0 -7
  1096. package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
  1097. package/validation/rules/UniqueFragmentNamesRule.mjs +0 -7
  1098. package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
  1099. package/validation/rules/UniqueInputFieldNamesRule.d.mts +32 -0
  1100. package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
  1101. package/validation/rules/UniqueInputFieldNamesRule.js +0 -8
  1102. package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
  1103. package/validation/rules/UniqueInputFieldNamesRule.mjs +0 -8
  1104. package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
  1105. package/validation/rules/UniqueOperationNamesRule.d.mts +28 -0
  1106. package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
  1107. package/validation/rules/UniqueOperationNamesRule.js +0 -7
  1108. package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
  1109. package/validation/rules/UniqueOperationNamesRule.mjs +0 -7
  1110. package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
  1111. package/validation/rules/UniqueOperationTypesRule.d.mts +21 -0
  1112. package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
  1113. package/validation/rules/UniqueOperationTypesRule.js +0 -5
  1114. package/validation/rules/UniqueOperationTypesRule.js.map +1 -1
  1115. package/validation/rules/UniqueOperationTypesRule.mjs +0 -5
  1116. package/validation/rules/UniqueOperationTypesRule.mjs.map +1 -1
  1117. package/validation/rules/UniqueTypeNamesRule.d.mts +21 -0
  1118. package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
  1119. package/validation/rules/UniqueTypeNamesRule.js +0 -5
  1120. package/validation/rules/UniqueTypeNamesRule.js.map +1 -1
  1121. package/validation/rules/UniqueTypeNamesRule.mjs +0 -5
  1122. package/validation/rules/UniqueTypeNamesRule.mjs.map +1 -1
  1123. package/validation/rules/UniqueVariableNamesRule.d.mts +28 -0
  1124. package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
  1125. package/validation/rules/UniqueVariableNamesRule.js +0 -5
  1126. package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
  1127. package/validation/rules/UniqueVariableNamesRule.mjs +0 -5
  1128. package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
  1129. package/validation/rules/ValuesOfCorrectTypeRule.d.mts +28 -0
  1130. package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
  1131. package/validation/rules/ValuesOfCorrectTypeRule.js +1 -21
  1132. package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
  1133. package/validation/rules/ValuesOfCorrectTypeRule.mjs +1 -21
  1134. package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
  1135. package/validation/rules/VariablesAreInputTypesRule.d.mts +32 -0
  1136. package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
  1137. package/validation/rules/VariablesAreInputTypesRule.js +0 -8
  1138. package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
  1139. package/validation/rules/VariablesAreInputTypesRule.mjs +0 -8
  1140. package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
  1141. package/validation/rules/VariablesInAllowedPositionRule.d.mts +28 -0
  1142. package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
  1143. package/validation/rules/VariablesInAllowedPositionRule.js +0 -20
  1144. package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
  1145. package/validation/rules/VariablesInAllowedPositionRule.mjs +0 -20
  1146. package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
  1147. package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +41 -0
  1148. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
  1149. package/validation/rules/custom/NoDeprecatedCustomRule.js +0 -10
  1150. package/validation/rules/custom/NoDeprecatedCustomRule.js.map +1 -1
  1151. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +0 -10
  1152. package/validation/rules/custom/NoDeprecatedCustomRule.mjs.map +1 -1
  1153. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.mts +28 -0
  1154. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
  1155. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +0 -10
  1156. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
  1157. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +0 -10
  1158. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
  1159. package/validation/specifiedRules.d.mts +2 -3
  1160. package/validation/specifiedRules.d.ts +2 -3
  1161. package/validation/specifiedRules.js +0 -46
  1162. package/validation/specifiedRules.js.map +1 -1
  1163. package/validation/specifiedRules.mjs +0 -46
  1164. package/validation/specifiedRules.mjs.map +1 -1
  1165. package/validation/validate.d.mts +65 -7
  1166. package/validation/validate.d.ts +65 -7
  1167. package/validation/validate.js +0 -41
  1168. package/validation/validate.js.map +1 -1
  1169. package/validation/validate.mjs +0 -41
  1170. package/validation/validate.mjs.map +1 -1
  1171. package/version.d.mts +3 -6
  1172. package/version.d.ts +3 -6
  1173. package/version.js +2 -10
  1174. package/version.js.map +1 -1
  1175. package/version.mjs +2 -10
  1176. package/version.mjs.map +1 -1
@@ -5,51 +5,6 @@ const invariant_ts_1 = require("../../jsutils/invariant.js");
5
5
  const isPromise_ts_1 = require("../../jsutils/isPromise.js");
6
6
  const promiseWithResolvers_ts_1 = require("../../jsutils/promiseWithResolvers.js");
7
7
  const withConcurrentAbruptClose_ts_1 = require("../withConcurrentAbruptClose.js");
8
- /**
9
- * A Queue is a lightweight async-generator primitive inspired by Brian Kim's
10
- * Repeater (https://repeater.js.org, https://github.com/repeaterjs/repeater).
11
- * The ergonomics are similar, but this implementation favors clarity over
12
- * performance and gives producers flexibility to remain lazy, become eager, or
13
- * live somewhere in between.
14
- *
15
- * The constructor takes an executor function and an optional `initialCapacity`.
16
- * Executors receive `{ push, stop, onStop, started }` and may return `void` or
17
- * a promise if they perform asynchronous setup. They call `push` whenever
18
- * another item is ready, call `stop` when no more values will be produced
19
- * (optionally supplying an error), register stop-time cleanup via `onStop`,
20
- * and await `started` when setup should run only after iteration begins.
21
- * Because `push`, `stop`, and `onStop` are plain functions, executors can
22
- * hoist them into outside scopes or pass them to helpers. If the executor
23
- * throws or its returned promise rejects, the queue treats it as `stop(error)`
24
- * and propagates the failure.
25
- *
26
- * The `initialCapacity` argument (default `1`) governs backpressure. Capacity
27
- * is the maximum number of buffered items allowed before a push must wait.
28
- * When the backlog reaches capacity, `push` returns a promise that settles
29
- * once consumption releases space; otherwise it returns `undefined`. Setting
30
- * capacity to `1` yields a fully lazy queue (every push waits unless a prior
31
- * item has been consumed); higher capacities buffer that many items eagerly.
32
- * Capacity can be changed later via `setCapacity` and observed via
33
- * `getCapacity`.
34
- *
35
- * `subscribe(reducer)` returns an async generator whose batches feed a generator
36
- * of settled values into the reducer; whatever the reducer returns (other than
37
- * `undefined`) becomes the yielded value for that batch. Calling `return()` on
38
- * the subscription settles pending `next` calls thanks to `withConcurrent`,
39
- * providing direct abort semantics rather than leaving `next()` suspended.
40
- *
41
- * 'forEachBatch(reducer)` is a convenience method that subscribes with the
42
- * given reducer and runs it for each batch until the queue stops.
43
- *
44
- * Producers can stay lazy by awaiting `started`, using zero capacity, and
45
- * awaiting each `push`. Skipping those waits while raising capacity makes the
46
- * queue eager up to its configured limit. The `isStopped()` helper exposes
47
- * whether the queue has fully stopped, which can be useful when the reducer
48
- * function actually performs external work and wants to bail early without
49
- * awaiting another `next`.
50
- *
51
- * @internal
52
- */
53
8
  class Queue {
54
9
  constructor(executor, initialCapacity = 1) {
55
10
  this._backlog = 0;
@@ -60,9 +15,7 @@ class Queue {
60
15
  this._stopCleanupCallbacks = [];
61
16
  this._batchRequests = new Set();
62
17
  this._capacity = this._normalizeCapacity(initialCapacity);
63
- const { promise: started, resolve: resolveStarted } =
64
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
65
- (0, promiseWithResolvers_ts_1.promiseWithResolvers)();
18
+ const { promise: started, resolve: resolveStarted } = (0, promiseWithResolvers_ts_1.promiseWithResolvers)();
66
19
  this._resolveStarted = resolveStarted;
67
20
  try {
68
21
  const result = executor({
@@ -78,7 +31,6 @@ class Queue {
78
31
  catch (error) {
79
32
  const stopped = this._stop(error);
80
33
  if ((0, isPromise_ts_1.isPromise)(stopped)) {
81
- /* node:coverage ignore next */
82
34
  stopped.catch(() => undefined);
83
35
  }
84
36
  }
@@ -108,7 +60,6 @@ class Queue {
108
60
  this._batchRequests.clear();
109
61
  return;
110
62
  }
111
- // save rejection for later batch requests
112
63
  this._entries.push({
113
64
  kind: 'item',
114
65
  settled: { status: 'rejected', reason },
@@ -117,19 +68,14 @@ class Queue {
117
68
  }
118
69
  async forEachBatch(reducer) {
119
70
  const sub = this.subscribe(async (generator) => {
120
- const { promise: drained, resolve } =
121
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
122
- (0, promiseWithResolvers_ts_1.promiseWithResolvers)();
71
+ const { promise: drained, resolve } = (0, promiseWithResolvers_ts_1.promiseWithResolvers)();
123
72
  const wrappedBatch = (function* wrapper() {
124
73
  yield* generator;
125
74
  resolve();
126
75
  })();
127
76
  await Promise.all([reducer(wrappedBatch), drained]);
128
77
  });
129
- // Empty loop body is intentionally used to drain the subscription.
130
- /* node:coverage ignore next 3 */
131
78
  for await (const _ of sub) {
132
- // intentionally empty
133
79
  }
134
80
  }
135
81
  setCapacity(nextCapacity) {
@@ -155,7 +101,6 @@ class Queue {
155
101
  if (this._backlog < this._capacity) {
156
102
  return undefined;
157
103
  }
158
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
159
104
  const { promise, resolve } = (0, promiseWithResolvers_ts_1.promiseWithResolvers)();
160
105
  this._waiters.push(resolve);
161
106
  return promise;
@@ -180,7 +125,6 @@ class Queue {
180
125
  return (0, isPromise_ts_1.isPromise)(result) ? [result] : [];
181
126
  }
182
127
  catch {
183
- // ignore errors
184
128
  return [];
185
129
  }
186
130
  });
@@ -198,11 +142,9 @@ class Queue {
198
142
  async *_iteratorLoop(reducer) {
199
143
  this._resolveStarted();
200
144
  let nextBatch;
201
- // eslint-disable-next-line no-await-in-loop
202
145
  while ((nextBatch = await this._waitForNextBatch())) {
203
146
  let reduced = reducer(nextBatch);
204
147
  if ((0, isPromise_ts_1.isPromise)(reduced)) {
205
- // eslint-disable-next-line no-await-in-loop
206
148
  reduced = await reduced;
207
149
  }
208
150
  if (reduced === undefined) {
@@ -274,7 +216,6 @@ class Queue {
274
216
  this._deliverBatchIfReady();
275
217
  });
276
218
  if ((0, isPromise_ts_1.isPromise)(stopCompletion)) {
277
- /* node:coverage ignore next */
278
219
  stopCompletion.catch(() => undefined);
279
220
  }
280
221
  return stopCompletion;
@@ -287,9 +228,7 @@ class Queue {
287
228
  const requests = this._batchRequests;
288
229
  if (headEntry !== undefined) {
289
230
  if (!(headEntry.kind !== 'stop'))
290
- (0,
291
- // stop sentinel always follows other work
292
- invariant_ts_1.invariant)(false);
231
+ (0, invariant_ts_1.invariant)(false);
293
232
  const settled = headEntry.settled;
294
233
  if (settled !== undefined) {
295
234
  if (settled.status === 'fulfilled') {
@@ -1 +1 @@
1
- {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/execution/incremental/Queue.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../jsutils/invariant.ts';\nimport { isPromise } from '../../jsutils/isPromise.ts';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.ts';\nimport { promiseWithResolvers } from '../../jsutils/promiseWithResolvers.ts';\n\nimport { withConcurrentAbruptClose } from '../withConcurrentAbruptClose.ts';\n\ntype Settled<T> =\n | { status: 'fulfilled'; value: T }\n | { status: 'rejected'; reason: unknown };\n\ninterface ItemEntry<T> {\n kind: 'item';\n settled?: Settled<T>;\n}\n\ninterface StopEntry {\n kind: 'stop';\n}\n\ntype Entry<T> = ItemEntry<T> | StopEntry;\n\ninterface BatchRequest<T> {\n resolve: (generator: Generator<T> | undefined) => void;\n reject: (reason: unknown) => void;\n}\n\ninterface QueueExecutorOptions<T> {\n push: (item: PromiseOrValue<T>) => PromiseOrValue<void>;\n stop: (reason?: unknown) => PromiseOrValue<void>;\n onStop: (cleanup: (reason?: unknown) => PromiseOrValue<void>) => void;\n started: Promise<void>;\n}\n\n/**\n * A Queue is a lightweight async-generator primitive inspired by Brian Kim's\n * Repeater (https://repeater.js.org, https://github.com/repeaterjs/repeater).\n * The ergonomics are similar, but this implementation favors clarity over\n * performance and gives producers flexibility to remain lazy, become eager, or\n * live somewhere in between.\n *\n * The constructor takes an executor function and an optional `initialCapacity`.\n * Executors receive `{ push, stop, onStop, started }` and may return `void` or\n * a promise if they perform asynchronous setup. They call `push` whenever\n * another item is ready, call `stop` when no more values will be produced\n * (optionally supplying an error), register stop-time cleanup via `onStop`,\n * and await `started` when setup should run only after iteration begins.\n * Because `push`, `stop`, and `onStop` are plain functions, executors can\n * hoist them into outside scopes or pass them to helpers. If the executor\n * throws or its returned promise rejects, the queue treats it as `stop(error)`\n * and propagates the failure.\n *\n * The `initialCapacity` argument (default `1`) governs backpressure. Capacity\n * is the maximum number of buffered items allowed before a push must wait.\n * When the backlog reaches capacity, `push` returns a promise that settles\n * once consumption releases space; otherwise it returns `undefined`. Setting\n * capacity to `1` yields a fully lazy queue (every push waits unless a prior\n * item has been consumed); higher capacities buffer that many items eagerly.\n * Capacity can be changed later via `setCapacity` and observed via\n * `getCapacity`.\n *\n * `subscribe(reducer)` returns an async generator whose batches feed a generator\n * of settled values into the reducer; whatever the reducer returns (other than\n * `undefined`) becomes the yielded value for that batch. Calling `return()` on\n * the subscription settles pending `next` calls thanks to `withConcurrent`,\n * providing direct abort semantics rather than leaving `next()` suspended.\n *\n * 'forEachBatch(reducer)` is a convenience method that subscribes with the\n * given reducer and runs it for each batch until the queue stops.\n *\n * Producers can stay lazy by awaiting `started`, using zero capacity, and\n * awaiting each `push`. Skipping those waits while raising capacity makes the\n * queue eager up to its configured limit. The `isStopped()` helper exposes\n * whether the queue has fully stopped, which can be useful when the reducer\n * function actually performs external work and wants to bail early without\n * awaiting another `next`.\n *\n * @internal\n */\nexport class Queue<T> {\n private _capacity: number;\n private _backlog = 0;\n private _waiters: Array<() => void> = [];\n private _entries: Array<Entry<T>> = [];\n private _isStopped = false;\n private _stopRequested = false;\n private _stopCleanupCallbacks: Array<\n (reason?: unknown) => PromiseOrValue<void>\n > = [];\n private _stopCompletion: Promise<void> | undefined;\n private _batchRequests = new Set<BatchRequest<T>>();\n\n private _resolveStarted: () => void;\n\n constructor(\n executor: ({\n push,\n stop,\n onStop,\n started,\n }: QueueExecutorOptions<T>) => PromiseOrValue<void>,\n initialCapacity = 1,\n ) {\n this._capacity = this._normalizeCapacity(initialCapacity);\n\n const { promise: started, resolve: resolveStarted } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n this._resolveStarted = resolveStarted;\n\n try {\n const result = executor({\n push: this._push.bind(this),\n stop: this._stop.bind(this),\n onStop: this._onStop.bind(this),\n started,\n });\n if (isPromise(result)) {\n result.catch(this._stop.bind(this));\n }\n } catch (error) {\n const stopped = this._stop(error);\n if (isPromise(stopped)) {\n /* node:coverage ignore next */\n stopped.catch(() => undefined);\n }\n }\n }\n\n subscribe<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined> = (generator) =>\n Array.from(generator) as U,\n ): AsyncGenerator<U, void, void> {\n const generator = this._iteratorLoop(reducer);\n return withConcurrentAbruptClose(\n generator,\n () => this.cancel(),\n this.abort.bind(this),\n );\n }\n\n cancel(): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(undefined, () => {\n this._isStopped = true;\n this._batchRequests.forEach((request) => request.resolve(undefined));\n this._batchRequests.clear();\n });\n }\n\n abort(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(reason, () => {\n this._isStopped = true;\n if (this._batchRequests.size) {\n this._batchRequests.forEach((request) => request.reject(reason));\n this._batchRequests.clear();\n return;\n }\n // save rejection for later batch requests\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n });\n }\n\n async forEachBatch(\n reducer: (generator: Generator<T, void, void>) => PromiseOrValue<void>,\n ): Promise<void> {\n const sub = this.subscribe(async (generator) => {\n const { promise: drained, resolve } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n const wrappedBatch = (function* wrapper(): Generator<T> {\n yield* generator;\n resolve();\n })();\n\n await Promise.all([reducer(wrappedBatch), drained]);\n });\n\n // Empty loop body is intentionally used to drain the subscription.\n /* node:coverage ignore next 3 */\n for await (const _ of sub) {\n // intentionally empty\n }\n }\n\n setCapacity(nextCapacity: number): void {\n this._capacity = this._normalizeCapacity(nextCapacity);\n this._flush();\n }\n\n getCapacity(): number {\n return this._capacity;\n }\n\n isStopped(): boolean {\n return this._isStopped;\n }\n\n private _normalizeCapacity(capacity: number): number {\n return Math.max(1, Math.floor(capacity));\n }\n\n private _flush(): void {\n while (this._waiters.length > 0 && this._backlog < this._capacity) {\n this._waiters.shift()?.();\n }\n }\n\n private _reserve(): PromiseOrValue<void> {\n this._backlog += 1;\n if (this._backlog < this._capacity) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n const { promise, resolve } = promiseWithResolvers<void>();\n this._waiters.push(resolve);\n return promise;\n }\n\n private _release(): void {\n if (this._backlog > 0) {\n this._backlog -= 1;\n }\n this._flush();\n }\n\n private _onStop(cleanup: (reason?: unknown) => PromiseOrValue<void>): void {\n if (this._stopRequested) {\n throw new Error(\n 'Cannot register onStop cleanup after stop has been requested.',\n );\n }\n this._stopCleanupCallbacks.push(cleanup);\n }\n\n private _runStopCleanup(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n this._stopRequested = true;\n const cleanupPromises = this._stopCleanupCallbacks.flatMap(\n (cleanupCallback): Array<Promise<unknown>> => {\n try {\n const result = cleanupCallback(reason);\n return isPromise(result) ? [result] : [];\n } catch {\n // ignore errors\n return [];\n }\n },\n );\n const cleanup =\n cleanupPromises.length > 0\n ? Promise.allSettled(cleanupPromises).then(() => undefined)\n : undefined;\n if (isPromise(cleanup)) {\n this._stopCompletion = cleanup\n .then(afterCleanup, afterCleanup)\n .then(() => undefined);\n return this._stopCompletion;\n }\n afterCleanup();\n }\n\n private async *_iteratorLoop<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined>,\n ): AsyncGenerator<U, void, void> {\n this._resolveStarted();\n let nextBatch: Generator<T> | undefined;\n // eslint-disable-next-line no-await-in-loop\n while ((nextBatch = await this._waitForNextBatch())) {\n let reduced = reducer(nextBatch);\n if (isPromise(reduced)) {\n // eslint-disable-next-line no-await-in-loop\n reduced = await reduced;\n }\n if (reduced === undefined) {\n continue;\n }\n yield reduced;\n }\n }\n\n private _waitForNextBatch(): Promise<Generator<T> | undefined> {\n const { promise, resolve, reject } = promiseWithResolvers<\n Generator<T> | undefined\n >();\n this._batchRequests.add({ resolve, reject });\n this._deliverBatchIfReady();\n return promise;\n }\n\n private _push(item: PromiseOrValue<T>): PromiseOrValue<void> {\n if (this._stopRequested) {\n return;\n }\n const maybePushPromise = this._reserve();\n if (isPromise(item)) {\n const entry: ItemEntry<T> = { kind: 'item' };\n this._entries.push(entry);\n item.then(\n (resolved) => {\n entry.settled = { status: 'fulfilled', value: resolved };\n this._deliverBatchIfReady();\n },\n (reason: unknown) => {\n entry.settled = { status: 'rejected', reason };\n this._deliverBatchIfReady();\n },\n );\n } else {\n this._entries.push({\n kind: 'item',\n settled: { status: 'fulfilled', value: item },\n });\n this._deliverBatchIfReady();\n }\n return maybePushPromise;\n }\n\n private _terminate(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n for (const entry of this._entries) {\n if (entry.kind === 'item') {\n this._release();\n }\n }\n this._entries.length = 0;\n return this._runStopCleanup(reason, afterCleanup);\n }\n\n private _stop(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n const stopCompletion = this._runStopCleanup(reason, () => {\n if (reason === undefined) {\n if (this._entries.length === 0) {\n this._isStopped = true;\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n });\n\n if (isPromise(stopCompletion)) {\n /* node:coverage ignore next */\n stopCompletion.catch(() => undefined);\n }\n return stopCompletion;\n }\n\n private _deliverBatchIfReady(): void {\n if (!this._batchRequests.size) {\n return;\n }\n const headEntry = this._entries[0];\n const requests = this._batchRequests;\n if (headEntry !== undefined) {\n // stop sentinel always follows other work\n invariant(headEntry.kind !== 'stop');\n\n const settled = headEntry.settled;\n if (settled !== undefined) {\n if (settled.status === 'fulfilled') {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(this._drainBatch()));\n return;\n }\n this._entries.shift();\n this._release();\n this._isStopped = true;\n this._batchRequests = new Set();\n requests.forEach((request) => request.reject(settled.reason));\n }\n } else if (this._isStopped) {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(undefined));\n }\n }\n\n private *_drainBatch(): Generator<T> {\n while (true) {\n const entry = this._entries[0];\n if (entry === undefined) {\n return;\n }\n if (entry.kind === 'stop') {\n this._isStopped = true;\n this._entries.shift();\n return;\n }\n const settled = entry.settled;\n if (settled === undefined || settled.status === 'rejected') {\n return;\n }\n this._entries.shift();\n this._release();\n yield settled.value;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/execution/incremental/Queue.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../jsutils/invariant.ts';\nimport { isPromise } from '../../jsutils/isPromise.ts';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.ts';\nimport { promiseWithResolvers } from '../../jsutils/promiseWithResolvers.ts';\n\nimport { withConcurrentAbruptClose } from '../withConcurrentAbruptClose.ts';\n\ntype Settled<T> =\n | { status: 'fulfilled'; value: T }\n | { status: 'rejected'; reason: unknown };\n\ninterface ItemEntry<T> {\n kind: 'item';\n settled?: Settled<T>;\n}\n\ninterface StopEntry {\n kind: 'stop';\n}\n\ntype Entry<T> = ItemEntry<T> | StopEntry;\n\ninterface BatchRequest<T> {\n resolve: (generator: Generator<T> | undefined) => void;\n reject: (reason: unknown) => void;\n}\n\ninterface QueueExecutorOptions<T> {\n push: (item: PromiseOrValue<T>) => PromiseOrValue<void>;\n stop: (reason?: unknown) => PromiseOrValue<void>;\n onStop: (cleanup: (reason?: unknown) => PromiseOrValue<void>) => void;\n started: Promise<void>;\n}\n\n/**\n * A Queue is a lightweight async-generator primitive inspired by Brian Kim's\n * Repeater (https://repeater.js.org, https://github.com/repeaterjs/repeater).\n * The ergonomics are similar, but this implementation favors clarity over\n * performance and gives producers flexibility to remain lazy, become eager, or\n * live somewhere in between.\n *\n * The constructor takes an executor function and an optional `initialCapacity`.\n * Executors receive `{ push, stop, onStop, started }` and may return `void` or\n * a promise if they perform asynchronous setup. They call `push` whenever\n * another item is ready, call `stop` when no more values will be produced\n * (optionally supplying an error), register stop-time cleanup via `onStop`,\n * and await `started` when setup should run only after iteration begins.\n * Because `push`, `stop`, and `onStop` are plain functions, executors can\n * hoist them into outside scopes or pass them to helpers. If the executor\n * throws or its returned promise rejects, the queue treats it as `stop(error)`\n * and propagates the failure.\n *\n * The `initialCapacity` argument (default `1`) governs backpressure. Capacity\n * is the maximum number of buffered items allowed before a push must wait.\n * When the backlog reaches capacity, `push` returns a promise that settles\n * once consumption releases space; otherwise it returns `undefined`. Setting\n * capacity to `1` yields a fully lazy queue (every push waits unless a prior\n * item has been consumed); higher capacities buffer that many items eagerly.\n * Capacity can be changed later via `setCapacity` and observed via\n * `getCapacity`.\n *\n * `subscribe(reducer)` returns an async generator whose batches feed a generator\n * of settled values into the reducer; whatever the reducer returns (other than\n * `undefined`) becomes the yielded value for that batch. Calling `return()` on\n * the subscription settles pending `next` calls thanks to `withConcurrent`,\n * providing direct abort semantics rather than leaving `next()` suspended.\n *\n * 'forEachBatch(reducer)` is a convenience method that subscribes with the\n * given reducer and runs it for each batch until the queue stops.\n *\n * Producers can stay lazy by awaiting `started`, using zero capacity, and\n * awaiting each `push`. Skipping those waits while raising capacity makes the\n * queue eager up to its configured limit. The `isStopped()` helper exposes\n * whether the queue has fully stopped, which can be useful when the reducer\n * function actually performs external work and wants to bail early without\n * awaiting another `next`.\n *\n * @internal\n */\nexport class Queue<T> {\n private _capacity: number;\n private _backlog = 0;\n private _waiters: Array<() => void> = [];\n private _entries: Array<Entry<T>> = [];\n private _isStopped = false;\n private _stopRequested = false;\n private _stopCleanupCallbacks: Array<\n (reason?: unknown) => PromiseOrValue<void>\n > = [];\n private _stopCompletion: Promise<void> | undefined;\n private _batchRequests = new Set<BatchRequest<T>>();\n\n private _resolveStarted: () => void;\n\n constructor(\n executor: ({\n push,\n stop,\n onStop,\n started,\n }: QueueExecutorOptions<T>) => PromiseOrValue<void>,\n initialCapacity = 1,\n ) {\n this._capacity = this._normalizeCapacity(initialCapacity);\n\n const { promise: started, resolve: resolveStarted } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n this._resolveStarted = resolveStarted;\n\n try {\n const result = executor({\n push: this._push.bind(this),\n stop: this._stop.bind(this),\n onStop: this._onStop.bind(this),\n started,\n });\n if (isPromise(result)) {\n result.catch(this._stop.bind(this));\n }\n } catch (error) {\n const stopped = this._stop(error);\n if (isPromise(stopped)) {\n /* node:coverage ignore next */\n stopped.catch(() => undefined);\n }\n }\n }\n\n subscribe<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined> = (generator) =>\n Array.from(generator) as U,\n ): AsyncGenerator<U, void, void> {\n const generator = this._iteratorLoop(reducer);\n return withConcurrentAbruptClose(\n generator,\n () => this.cancel(),\n this.abort.bind(this),\n );\n }\n\n cancel(): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(undefined, () => {\n this._isStopped = true;\n this._batchRequests.forEach((request) => request.resolve(undefined));\n this._batchRequests.clear();\n });\n }\n\n abort(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(reason, () => {\n this._isStopped = true;\n if (this._batchRequests.size) {\n this._batchRequests.forEach((request) => request.reject(reason));\n this._batchRequests.clear();\n return;\n }\n // save rejection for later batch requests\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n });\n }\n\n async forEachBatch(\n reducer: (generator: Generator<T, void, void>) => PromiseOrValue<void>,\n ): Promise<void> {\n const sub = this.subscribe(async (generator) => {\n const { promise: drained, resolve } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n const wrappedBatch = (function* wrapper(): Generator<T> {\n yield* generator;\n resolve();\n })();\n\n await Promise.all([reducer(wrappedBatch), drained]);\n });\n\n // Empty loop body is intentionally used to drain the subscription.\n /* node:coverage ignore next 3 */\n for await (const _ of sub) {\n // intentionally empty\n }\n }\n\n setCapacity(nextCapacity: number): void {\n this._capacity = this._normalizeCapacity(nextCapacity);\n this._flush();\n }\n\n getCapacity(): number {\n return this._capacity;\n }\n\n isStopped(): boolean {\n return this._isStopped;\n }\n\n private _normalizeCapacity(capacity: number): number {\n return Math.max(1, Math.floor(capacity));\n }\n\n private _flush(): void {\n while (this._waiters.length > 0 && this._backlog < this._capacity) {\n this._waiters.shift()?.();\n }\n }\n\n private _reserve(): PromiseOrValue<void> {\n this._backlog += 1;\n if (this._backlog < this._capacity) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n const { promise, resolve } = promiseWithResolvers<void>();\n this._waiters.push(resolve);\n return promise;\n }\n\n private _release(): void {\n if (this._backlog > 0) {\n this._backlog -= 1;\n }\n this._flush();\n }\n\n private _onStop(cleanup: (reason?: unknown) => PromiseOrValue<void>): void {\n if (this._stopRequested) {\n throw new Error(\n 'Cannot register onStop cleanup after stop has been requested.',\n );\n }\n this._stopCleanupCallbacks.push(cleanup);\n }\n\n private _runStopCleanup(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n this._stopRequested = true;\n const cleanupPromises = this._stopCleanupCallbacks.flatMap(\n (cleanupCallback): Array<Promise<unknown>> => {\n try {\n const result = cleanupCallback(reason);\n return isPromise(result) ? [result] : [];\n } catch {\n // ignore errors\n return [];\n }\n },\n );\n const cleanup =\n cleanupPromises.length > 0\n ? Promise.allSettled(cleanupPromises).then(() => undefined)\n : undefined;\n if (isPromise(cleanup)) {\n this._stopCompletion = cleanup\n .then(afterCleanup, afterCleanup)\n .then(() => undefined);\n return this._stopCompletion;\n }\n afterCleanup();\n }\n\n private async *_iteratorLoop<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined>,\n ): AsyncGenerator<U, void, void> {\n this._resolveStarted();\n let nextBatch: Generator<T> | undefined;\n // eslint-disable-next-line no-await-in-loop\n while ((nextBatch = await this._waitForNextBatch())) {\n let reduced = reducer(nextBatch);\n if (isPromise(reduced)) {\n // eslint-disable-next-line no-await-in-loop\n reduced = await reduced;\n }\n if (reduced === undefined) {\n continue;\n }\n yield reduced;\n }\n }\n\n private _waitForNextBatch(): Promise<Generator<T> | undefined> {\n const { promise, resolve, reject } = promiseWithResolvers<\n Generator<T> | undefined\n >();\n this._batchRequests.add({ resolve, reject });\n this._deliverBatchIfReady();\n return promise;\n }\n\n private _push(item: PromiseOrValue<T>): PromiseOrValue<void> {\n if (this._stopRequested) {\n return;\n }\n const maybePushPromise = this._reserve();\n if (isPromise(item)) {\n const entry: ItemEntry<T> = { kind: 'item' };\n this._entries.push(entry);\n item.then(\n (resolved) => {\n entry.settled = { status: 'fulfilled', value: resolved };\n this._deliverBatchIfReady();\n },\n (reason: unknown) => {\n entry.settled = { status: 'rejected', reason };\n this._deliverBatchIfReady();\n },\n );\n } else {\n this._entries.push({\n kind: 'item',\n settled: { status: 'fulfilled', value: item },\n });\n this._deliverBatchIfReady();\n }\n return maybePushPromise;\n }\n\n private _terminate(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n for (const entry of this._entries) {\n if (entry.kind === 'item') {\n this._release();\n }\n }\n this._entries.length = 0;\n return this._runStopCleanup(reason, afterCleanup);\n }\n\n private _stop(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n const stopCompletion = this._runStopCleanup(reason, () => {\n if (reason === undefined) {\n if (this._entries.length === 0) {\n this._isStopped = true;\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n });\n\n if (isPromise(stopCompletion)) {\n /* node:coverage ignore next */\n stopCompletion.catch(() => undefined);\n }\n return stopCompletion;\n }\n\n private _deliverBatchIfReady(): void {\n if (!this._batchRequests.size) {\n return;\n }\n const headEntry = this._entries[0];\n const requests = this._batchRequests;\n if (headEntry !== undefined) {\n // stop sentinel always follows other work\n invariant(headEntry.kind !== 'stop');\n\n const settled = headEntry.settled;\n if (settled !== undefined) {\n if (settled.status === 'fulfilled') {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(this._drainBatch()));\n return;\n }\n this._entries.shift();\n this._release();\n this._isStopped = true;\n this._batchRequests = new Set();\n requests.forEach((request) => request.reject(settled.reason));\n }\n } else if (this._isStopped) {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(undefined));\n }\n }\n\n private *_drainBatch(): Generator<T> {\n while (true) {\n const entry = this._entries[0];\n if (entry === undefined) {\n return;\n }\n if (entry.kind === 'stop') {\n this._isStopped = true;\n this._entries.shift();\n return;\n }\n const settled = entry.settled;\n if (settled === undefined || settled.status === 'rejected') {\n return;\n }\n this._entries.shift();\n this._release();\n yield settled.value;\n }\n }\n}\n"]}
@@ -2,51 +2,6 @@ import { invariant } from "../../jsutils/invariant.mjs";
2
2
  import { isPromise } from "../../jsutils/isPromise.mjs";
3
3
  import { promiseWithResolvers } from "../../jsutils/promiseWithResolvers.mjs";
4
4
  import { withConcurrentAbruptClose } from "../withConcurrentAbruptClose.mjs";
5
- /**
6
- * A Queue is a lightweight async-generator primitive inspired by Brian Kim's
7
- * Repeater (https://repeater.js.org, https://github.com/repeaterjs/repeater).
8
- * The ergonomics are similar, but this implementation favors clarity over
9
- * performance and gives producers flexibility to remain lazy, become eager, or
10
- * live somewhere in between.
11
- *
12
- * The constructor takes an executor function and an optional `initialCapacity`.
13
- * Executors receive `{ push, stop, onStop, started }` and may return `void` or
14
- * a promise if they perform asynchronous setup. They call `push` whenever
15
- * another item is ready, call `stop` when no more values will be produced
16
- * (optionally supplying an error), register stop-time cleanup via `onStop`,
17
- * and await `started` when setup should run only after iteration begins.
18
- * Because `push`, `stop`, and `onStop` are plain functions, executors can
19
- * hoist them into outside scopes or pass them to helpers. If the executor
20
- * throws or its returned promise rejects, the queue treats it as `stop(error)`
21
- * and propagates the failure.
22
- *
23
- * The `initialCapacity` argument (default `1`) governs backpressure. Capacity
24
- * is the maximum number of buffered items allowed before a push must wait.
25
- * When the backlog reaches capacity, `push` returns a promise that settles
26
- * once consumption releases space; otherwise it returns `undefined`. Setting
27
- * capacity to `1` yields a fully lazy queue (every push waits unless a prior
28
- * item has been consumed); higher capacities buffer that many items eagerly.
29
- * Capacity can be changed later via `setCapacity` and observed via
30
- * `getCapacity`.
31
- *
32
- * `subscribe(reducer)` returns an async generator whose batches feed a generator
33
- * of settled values into the reducer; whatever the reducer returns (other than
34
- * `undefined`) becomes the yielded value for that batch. Calling `return()` on
35
- * the subscription settles pending `next` calls thanks to `withConcurrent`,
36
- * providing direct abort semantics rather than leaving `next()` suspended.
37
- *
38
- * 'forEachBatch(reducer)` is a convenience method that subscribes with the
39
- * given reducer and runs it for each batch until the queue stops.
40
- *
41
- * Producers can stay lazy by awaiting `started`, using zero capacity, and
42
- * awaiting each `push`. Skipping those waits while raising capacity makes the
43
- * queue eager up to its configured limit. The `isStopped()` helper exposes
44
- * whether the queue has fully stopped, which can be useful when the reducer
45
- * function actually performs external work and wants to bail early without
46
- * awaiting another `next`.
47
- *
48
- * @internal
49
- */
50
5
  export class Queue {
51
6
  constructor(executor, initialCapacity = 1) {
52
7
  this._backlog = 0;
@@ -57,9 +12,7 @@ export class Queue {
57
12
  this._stopCleanupCallbacks = [];
58
13
  this._batchRequests = new Set();
59
14
  this._capacity = this._normalizeCapacity(initialCapacity);
60
- const { promise: started, resolve: resolveStarted } =
61
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
62
- promiseWithResolvers();
15
+ const { promise: started, resolve: resolveStarted } = promiseWithResolvers();
63
16
  this._resolveStarted = resolveStarted;
64
17
  try {
65
18
  const result = executor({
@@ -75,7 +28,6 @@ export class Queue {
75
28
  catch (error) {
76
29
  const stopped = this._stop(error);
77
30
  if (isPromise(stopped)) {
78
- /* node:coverage ignore next */
79
31
  stopped.catch(() => undefined);
80
32
  }
81
33
  }
@@ -105,7 +57,6 @@ export class Queue {
105
57
  this._batchRequests.clear();
106
58
  return;
107
59
  }
108
- // save rejection for later batch requests
109
60
  this._entries.push({
110
61
  kind: 'item',
111
62
  settled: { status: 'rejected', reason },
@@ -114,19 +65,14 @@ export class Queue {
114
65
  }
115
66
  async forEachBatch(reducer) {
116
67
  const sub = this.subscribe(async (generator) => {
117
- const { promise: drained, resolve } =
118
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
119
- promiseWithResolvers();
68
+ const { promise: drained, resolve } = promiseWithResolvers();
120
69
  const wrappedBatch = (function* wrapper() {
121
70
  yield* generator;
122
71
  resolve();
123
72
  })();
124
73
  await Promise.all([reducer(wrappedBatch), drained]);
125
74
  });
126
- // Empty loop body is intentionally used to drain the subscription.
127
- /* node:coverage ignore next 3 */
128
75
  for await (const _ of sub) {
129
- // intentionally empty
130
76
  }
131
77
  }
132
78
  setCapacity(nextCapacity) {
@@ -152,7 +98,6 @@ export class Queue {
152
98
  if (this._backlog < this._capacity) {
153
99
  return undefined;
154
100
  }
155
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
156
101
  const { promise, resolve } = promiseWithResolvers();
157
102
  this._waiters.push(resolve);
158
103
  return promise;
@@ -177,7 +122,6 @@ export class Queue {
177
122
  return isPromise(result) ? [result] : [];
178
123
  }
179
124
  catch {
180
- // ignore errors
181
125
  return [];
182
126
  }
183
127
  });
@@ -195,11 +139,9 @@ export class Queue {
195
139
  async *_iteratorLoop(reducer) {
196
140
  this._resolveStarted();
197
141
  let nextBatch;
198
- // eslint-disable-next-line no-await-in-loop
199
142
  while ((nextBatch = await this._waitForNextBatch())) {
200
143
  let reduced = reducer(nextBatch);
201
144
  if (isPromise(reduced)) {
202
- // eslint-disable-next-line no-await-in-loop
203
145
  reduced = await reduced;
204
146
  }
205
147
  if (reduced === undefined) {
@@ -271,7 +213,6 @@ export class Queue {
271
213
  this._deliverBatchIfReady();
272
214
  });
273
215
  if (isPromise(stopCompletion)) {
274
- /* node:coverage ignore next */
275
216
  stopCompletion.catch(() => undefined);
276
217
  }
277
218
  return stopCompletion;
@@ -284,7 +225,6 @@ export class Queue {
284
225
  const requests = this._batchRequests;
285
226
  if (headEntry !== undefined) {
286
227
  if (!(headEntry.kind !== 'stop'))
287
- // stop sentinel always follows other work
288
228
  invariant(false);
289
229
  const settled = headEntry.settled;
290
230
  if (settled !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/execution/incremental/Queue.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../jsutils/invariant.ts';\nimport { isPromise } from '../../jsutils/isPromise.ts';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.ts';\nimport { promiseWithResolvers } from '../../jsutils/promiseWithResolvers.ts';\n\nimport { withConcurrentAbruptClose } from '../withConcurrentAbruptClose.ts';\n\ntype Settled<T> =\n | { status: 'fulfilled'; value: T }\n | { status: 'rejected'; reason: unknown };\n\ninterface ItemEntry<T> {\n kind: 'item';\n settled?: Settled<T>;\n}\n\ninterface StopEntry {\n kind: 'stop';\n}\n\ntype Entry<T> = ItemEntry<T> | StopEntry;\n\ninterface BatchRequest<T> {\n resolve: (generator: Generator<T> | undefined) => void;\n reject: (reason: unknown) => void;\n}\n\ninterface QueueExecutorOptions<T> {\n push: (item: PromiseOrValue<T>) => PromiseOrValue<void>;\n stop: (reason?: unknown) => PromiseOrValue<void>;\n onStop: (cleanup: (reason?: unknown) => PromiseOrValue<void>) => void;\n started: Promise<void>;\n}\n\n/**\n * A Queue is a lightweight async-generator primitive inspired by Brian Kim's\n * Repeater (https://repeater.js.org, https://github.com/repeaterjs/repeater).\n * The ergonomics are similar, but this implementation favors clarity over\n * performance and gives producers flexibility to remain lazy, become eager, or\n * live somewhere in between.\n *\n * The constructor takes an executor function and an optional `initialCapacity`.\n * Executors receive `{ push, stop, onStop, started }` and may return `void` or\n * a promise if they perform asynchronous setup. They call `push` whenever\n * another item is ready, call `stop` when no more values will be produced\n * (optionally supplying an error), register stop-time cleanup via `onStop`,\n * and await `started` when setup should run only after iteration begins.\n * Because `push`, `stop`, and `onStop` are plain functions, executors can\n * hoist them into outside scopes or pass them to helpers. If the executor\n * throws or its returned promise rejects, the queue treats it as `stop(error)`\n * and propagates the failure.\n *\n * The `initialCapacity` argument (default `1`) governs backpressure. Capacity\n * is the maximum number of buffered items allowed before a push must wait.\n * When the backlog reaches capacity, `push` returns a promise that settles\n * once consumption releases space; otherwise it returns `undefined`. Setting\n * capacity to `1` yields a fully lazy queue (every push waits unless a prior\n * item has been consumed); higher capacities buffer that many items eagerly.\n * Capacity can be changed later via `setCapacity` and observed via\n * `getCapacity`.\n *\n * `subscribe(reducer)` returns an async generator whose batches feed a generator\n * of settled values into the reducer; whatever the reducer returns (other than\n * `undefined`) becomes the yielded value for that batch. Calling `return()` on\n * the subscription settles pending `next` calls thanks to `withConcurrent`,\n * providing direct abort semantics rather than leaving `next()` suspended.\n *\n * 'forEachBatch(reducer)` is a convenience method that subscribes with the\n * given reducer and runs it for each batch until the queue stops.\n *\n * Producers can stay lazy by awaiting `started`, using zero capacity, and\n * awaiting each `push`. Skipping those waits while raising capacity makes the\n * queue eager up to its configured limit. The `isStopped()` helper exposes\n * whether the queue has fully stopped, which can be useful when the reducer\n * function actually performs external work and wants to bail early without\n * awaiting another `next`.\n *\n * @internal\n */\nexport class Queue<T> {\n private _capacity: number;\n private _backlog = 0;\n private _waiters: Array<() => void> = [];\n private _entries: Array<Entry<T>> = [];\n private _isStopped = false;\n private _stopRequested = false;\n private _stopCleanupCallbacks: Array<\n (reason?: unknown) => PromiseOrValue<void>\n > = [];\n private _stopCompletion: Promise<void> | undefined;\n private _batchRequests = new Set<BatchRequest<T>>();\n\n private _resolveStarted: () => void;\n\n constructor(\n executor: ({\n push,\n stop,\n onStop,\n started,\n }: QueueExecutorOptions<T>) => PromiseOrValue<void>,\n initialCapacity = 1,\n ) {\n this._capacity = this._normalizeCapacity(initialCapacity);\n\n const { promise: started, resolve: resolveStarted } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n this._resolveStarted = resolveStarted;\n\n try {\n const result = executor({\n push: this._push.bind(this),\n stop: this._stop.bind(this),\n onStop: this._onStop.bind(this),\n started,\n });\n if (isPromise(result)) {\n result.catch(this._stop.bind(this));\n }\n } catch (error) {\n const stopped = this._stop(error);\n if (isPromise(stopped)) {\n /* node:coverage ignore next */\n stopped.catch(() => undefined);\n }\n }\n }\n\n subscribe<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined> = (generator) =>\n Array.from(generator) as U,\n ): AsyncGenerator<U, void, void> {\n const generator = this._iteratorLoop(reducer);\n return withConcurrentAbruptClose(\n generator,\n () => this.cancel(),\n this.abort.bind(this),\n );\n }\n\n cancel(): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(undefined, () => {\n this._isStopped = true;\n this._batchRequests.forEach((request) => request.resolve(undefined));\n this._batchRequests.clear();\n });\n }\n\n abort(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(reason, () => {\n this._isStopped = true;\n if (this._batchRequests.size) {\n this._batchRequests.forEach((request) => request.reject(reason));\n this._batchRequests.clear();\n return;\n }\n // save rejection for later batch requests\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n });\n }\n\n async forEachBatch(\n reducer: (generator: Generator<T, void, void>) => PromiseOrValue<void>,\n ): Promise<void> {\n const sub = this.subscribe(async (generator) => {\n const { promise: drained, resolve } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n const wrappedBatch = (function* wrapper(): Generator<T> {\n yield* generator;\n resolve();\n })();\n\n await Promise.all([reducer(wrappedBatch), drained]);\n });\n\n // Empty loop body is intentionally used to drain the subscription.\n /* node:coverage ignore next 3 */\n for await (const _ of sub) {\n // intentionally empty\n }\n }\n\n setCapacity(nextCapacity: number): void {\n this._capacity = this._normalizeCapacity(nextCapacity);\n this._flush();\n }\n\n getCapacity(): number {\n return this._capacity;\n }\n\n isStopped(): boolean {\n return this._isStopped;\n }\n\n private _normalizeCapacity(capacity: number): number {\n return Math.max(1, Math.floor(capacity));\n }\n\n private _flush(): void {\n while (this._waiters.length > 0 && this._backlog < this._capacity) {\n this._waiters.shift()?.();\n }\n }\n\n private _reserve(): PromiseOrValue<void> {\n this._backlog += 1;\n if (this._backlog < this._capacity) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n const { promise, resolve } = promiseWithResolvers<void>();\n this._waiters.push(resolve);\n return promise;\n }\n\n private _release(): void {\n if (this._backlog > 0) {\n this._backlog -= 1;\n }\n this._flush();\n }\n\n private _onStop(cleanup: (reason?: unknown) => PromiseOrValue<void>): void {\n if (this._stopRequested) {\n throw new Error(\n 'Cannot register onStop cleanup after stop has been requested.',\n );\n }\n this._stopCleanupCallbacks.push(cleanup);\n }\n\n private _runStopCleanup(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n this._stopRequested = true;\n const cleanupPromises = this._stopCleanupCallbacks.flatMap(\n (cleanupCallback): Array<Promise<unknown>> => {\n try {\n const result = cleanupCallback(reason);\n return isPromise(result) ? [result] : [];\n } catch {\n // ignore errors\n return [];\n }\n },\n );\n const cleanup =\n cleanupPromises.length > 0\n ? Promise.allSettled(cleanupPromises).then(() => undefined)\n : undefined;\n if (isPromise(cleanup)) {\n this._stopCompletion = cleanup\n .then(afterCleanup, afterCleanup)\n .then(() => undefined);\n return this._stopCompletion;\n }\n afterCleanup();\n }\n\n private async *_iteratorLoop<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined>,\n ): AsyncGenerator<U, void, void> {\n this._resolveStarted();\n let nextBatch: Generator<T> | undefined;\n // eslint-disable-next-line no-await-in-loop\n while ((nextBatch = await this._waitForNextBatch())) {\n let reduced = reducer(nextBatch);\n if (isPromise(reduced)) {\n // eslint-disable-next-line no-await-in-loop\n reduced = await reduced;\n }\n if (reduced === undefined) {\n continue;\n }\n yield reduced;\n }\n }\n\n private _waitForNextBatch(): Promise<Generator<T> | undefined> {\n const { promise, resolve, reject } = promiseWithResolvers<\n Generator<T> | undefined\n >();\n this._batchRequests.add({ resolve, reject });\n this._deliverBatchIfReady();\n return promise;\n }\n\n private _push(item: PromiseOrValue<T>): PromiseOrValue<void> {\n if (this._stopRequested) {\n return;\n }\n const maybePushPromise = this._reserve();\n if (isPromise(item)) {\n const entry: ItemEntry<T> = { kind: 'item' };\n this._entries.push(entry);\n item.then(\n (resolved) => {\n entry.settled = { status: 'fulfilled', value: resolved };\n this._deliverBatchIfReady();\n },\n (reason: unknown) => {\n entry.settled = { status: 'rejected', reason };\n this._deliverBatchIfReady();\n },\n );\n } else {\n this._entries.push({\n kind: 'item',\n settled: { status: 'fulfilled', value: item },\n });\n this._deliverBatchIfReady();\n }\n return maybePushPromise;\n }\n\n private _terminate(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n for (const entry of this._entries) {\n if (entry.kind === 'item') {\n this._release();\n }\n }\n this._entries.length = 0;\n return this._runStopCleanup(reason, afterCleanup);\n }\n\n private _stop(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n const stopCompletion = this._runStopCleanup(reason, () => {\n if (reason === undefined) {\n if (this._entries.length === 0) {\n this._isStopped = true;\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n });\n\n if (isPromise(stopCompletion)) {\n /* node:coverage ignore next */\n stopCompletion.catch(() => undefined);\n }\n return stopCompletion;\n }\n\n private _deliverBatchIfReady(): void {\n if (!this._batchRequests.size) {\n return;\n }\n const headEntry = this._entries[0];\n const requests = this._batchRequests;\n if (headEntry !== undefined) {\n // stop sentinel always follows other work\n invariant(headEntry.kind !== 'stop');\n\n const settled = headEntry.settled;\n if (settled !== undefined) {\n if (settled.status === 'fulfilled') {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(this._drainBatch()));\n return;\n }\n this._entries.shift();\n this._release();\n this._isStopped = true;\n this._batchRequests = new Set();\n requests.forEach((request) => request.reject(settled.reason));\n }\n } else if (this._isStopped) {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(undefined));\n }\n }\n\n private *_drainBatch(): Generator<T> {\n while (true) {\n const entry = this._entries[0];\n if (entry === undefined) {\n return;\n }\n if (entry.kind === 'stop') {\n this._isStopped = true;\n this._entries.shift();\n return;\n }\n const settled = entry.settled;\n if (settled === undefined || settled.status === 'rejected') {\n return;\n }\n this._entries.shift();\n this._release();\n yield settled.value;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/execution/incremental/Queue.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../jsutils/invariant.ts';\nimport { isPromise } from '../../jsutils/isPromise.ts';\nimport type { PromiseOrValue } from '../../jsutils/PromiseOrValue.ts';\nimport { promiseWithResolvers } from '../../jsutils/promiseWithResolvers.ts';\n\nimport { withConcurrentAbruptClose } from '../withConcurrentAbruptClose.ts';\n\ntype Settled<T> =\n | { status: 'fulfilled'; value: T }\n | { status: 'rejected'; reason: unknown };\n\ninterface ItemEntry<T> {\n kind: 'item';\n settled?: Settled<T>;\n}\n\ninterface StopEntry {\n kind: 'stop';\n}\n\ntype Entry<T> = ItemEntry<T> | StopEntry;\n\ninterface BatchRequest<T> {\n resolve: (generator: Generator<T> | undefined) => void;\n reject: (reason: unknown) => void;\n}\n\ninterface QueueExecutorOptions<T> {\n push: (item: PromiseOrValue<T>) => PromiseOrValue<void>;\n stop: (reason?: unknown) => PromiseOrValue<void>;\n onStop: (cleanup: (reason?: unknown) => PromiseOrValue<void>) => void;\n started: Promise<void>;\n}\n\n/**\n * A Queue is a lightweight async-generator primitive inspired by Brian Kim's\n * Repeater (https://repeater.js.org, https://github.com/repeaterjs/repeater).\n * The ergonomics are similar, but this implementation favors clarity over\n * performance and gives producers flexibility to remain lazy, become eager, or\n * live somewhere in between.\n *\n * The constructor takes an executor function and an optional `initialCapacity`.\n * Executors receive `{ push, stop, onStop, started }` and may return `void` or\n * a promise if they perform asynchronous setup. They call `push` whenever\n * another item is ready, call `stop` when no more values will be produced\n * (optionally supplying an error), register stop-time cleanup via `onStop`,\n * and await `started` when setup should run only after iteration begins.\n * Because `push`, `stop`, and `onStop` are plain functions, executors can\n * hoist them into outside scopes or pass them to helpers. If the executor\n * throws or its returned promise rejects, the queue treats it as `stop(error)`\n * and propagates the failure.\n *\n * The `initialCapacity` argument (default `1`) governs backpressure. Capacity\n * is the maximum number of buffered items allowed before a push must wait.\n * When the backlog reaches capacity, `push` returns a promise that settles\n * once consumption releases space; otherwise it returns `undefined`. Setting\n * capacity to `1` yields a fully lazy queue (every push waits unless a prior\n * item has been consumed); higher capacities buffer that many items eagerly.\n * Capacity can be changed later via `setCapacity` and observed via\n * `getCapacity`.\n *\n * `subscribe(reducer)` returns an async generator whose batches feed a generator\n * of settled values into the reducer; whatever the reducer returns (other than\n * `undefined`) becomes the yielded value for that batch. Calling `return()` on\n * the subscription settles pending `next` calls thanks to `withConcurrent`,\n * providing direct abort semantics rather than leaving `next()` suspended.\n *\n * 'forEachBatch(reducer)` is a convenience method that subscribes with the\n * given reducer and runs it for each batch until the queue stops.\n *\n * Producers can stay lazy by awaiting `started`, using zero capacity, and\n * awaiting each `push`. Skipping those waits while raising capacity makes the\n * queue eager up to its configured limit. The `isStopped()` helper exposes\n * whether the queue has fully stopped, which can be useful when the reducer\n * function actually performs external work and wants to bail early without\n * awaiting another `next`.\n *\n * @internal\n */\nexport class Queue<T> {\n private _capacity: number;\n private _backlog = 0;\n private _waiters: Array<() => void> = [];\n private _entries: Array<Entry<T>> = [];\n private _isStopped = false;\n private _stopRequested = false;\n private _stopCleanupCallbacks: Array<\n (reason?: unknown) => PromiseOrValue<void>\n > = [];\n private _stopCompletion: Promise<void> | undefined;\n private _batchRequests = new Set<BatchRequest<T>>();\n\n private _resolveStarted: () => void;\n\n constructor(\n executor: ({\n push,\n stop,\n onStop,\n started,\n }: QueueExecutorOptions<T>) => PromiseOrValue<void>,\n initialCapacity = 1,\n ) {\n this._capacity = this._normalizeCapacity(initialCapacity);\n\n const { promise: started, resolve: resolveStarted } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n this._resolveStarted = resolveStarted;\n\n try {\n const result = executor({\n push: this._push.bind(this),\n stop: this._stop.bind(this),\n onStop: this._onStop.bind(this),\n started,\n });\n if (isPromise(result)) {\n result.catch(this._stop.bind(this));\n }\n } catch (error) {\n const stopped = this._stop(error);\n if (isPromise(stopped)) {\n /* node:coverage ignore next */\n stopped.catch(() => undefined);\n }\n }\n }\n\n subscribe<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined> = (generator) =>\n Array.from(generator) as U,\n ): AsyncGenerator<U, void, void> {\n const generator = this._iteratorLoop(reducer);\n return withConcurrentAbruptClose(\n generator,\n () => this.cancel(),\n this.abort.bind(this),\n );\n }\n\n cancel(): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(undefined, () => {\n this._isStopped = true;\n this._batchRequests.forEach((request) => request.resolve(undefined));\n this._batchRequests.clear();\n });\n }\n\n abort(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n return this._terminate(reason, () => {\n this._isStopped = true;\n if (this._batchRequests.size) {\n this._batchRequests.forEach((request) => request.reject(reason));\n this._batchRequests.clear();\n return;\n }\n // save rejection for later batch requests\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n });\n }\n\n async forEachBatch(\n reducer: (generator: Generator<T, void, void>) => PromiseOrValue<void>,\n ): Promise<void> {\n const sub = this.subscribe(async (generator) => {\n const { promise: drained, resolve } =\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n promiseWithResolvers<void>();\n\n const wrappedBatch = (function* wrapper(): Generator<T> {\n yield* generator;\n resolve();\n })();\n\n await Promise.all([reducer(wrappedBatch), drained]);\n });\n\n // Empty loop body is intentionally used to drain the subscription.\n /* node:coverage ignore next 3 */\n for await (const _ of sub) {\n // intentionally empty\n }\n }\n\n setCapacity(nextCapacity: number): void {\n this._capacity = this._normalizeCapacity(nextCapacity);\n this._flush();\n }\n\n getCapacity(): number {\n return this._capacity;\n }\n\n isStopped(): boolean {\n return this._isStopped;\n }\n\n private _normalizeCapacity(capacity: number): number {\n return Math.max(1, Math.floor(capacity));\n }\n\n private _flush(): void {\n while (this._waiters.length > 0 && this._backlog < this._capacity) {\n this._waiters.shift()?.();\n }\n }\n\n private _reserve(): PromiseOrValue<void> {\n this._backlog += 1;\n if (this._backlog < this._capacity) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n const { promise, resolve } = promiseWithResolvers<void>();\n this._waiters.push(resolve);\n return promise;\n }\n\n private _release(): void {\n if (this._backlog > 0) {\n this._backlog -= 1;\n }\n this._flush();\n }\n\n private _onStop(cleanup: (reason?: unknown) => PromiseOrValue<void>): void {\n if (this._stopRequested) {\n throw new Error(\n 'Cannot register onStop cleanup after stop has been requested.',\n );\n }\n this._stopCleanupCallbacks.push(cleanup);\n }\n\n private _runStopCleanup(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n this._stopRequested = true;\n const cleanupPromises = this._stopCleanupCallbacks.flatMap(\n (cleanupCallback): Array<Promise<unknown>> => {\n try {\n const result = cleanupCallback(reason);\n return isPromise(result) ? [result] : [];\n } catch {\n // ignore errors\n return [];\n }\n },\n );\n const cleanup =\n cleanupPromises.length > 0\n ? Promise.allSettled(cleanupPromises).then(() => undefined)\n : undefined;\n if (isPromise(cleanup)) {\n this._stopCompletion = cleanup\n .then(afterCleanup, afterCleanup)\n .then(() => undefined);\n return this._stopCompletion;\n }\n afterCleanup();\n }\n\n private async *_iteratorLoop<U>(\n reducer: (\n generator: Generator<T, void, void>,\n ) => PromiseOrValue<U | undefined>,\n ): AsyncGenerator<U, void, void> {\n this._resolveStarted();\n let nextBatch: Generator<T> | undefined;\n // eslint-disable-next-line no-await-in-loop\n while ((nextBatch = await this._waitForNextBatch())) {\n let reduced = reducer(nextBatch);\n if (isPromise(reduced)) {\n // eslint-disable-next-line no-await-in-loop\n reduced = await reduced;\n }\n if (reduced === undefined) {\n continue;\n }\n yield reduced;\n }\n }\n\n private _waitForNextBatch(): Promise<Generator<T> | undefined> {\n const { promise, resolve, reject } = promiseWithResolvers<\n Generator<T> | undefined\n >();\n this._batchRequests.add({ resolve, reject });\n this._deliverBatchIfReady();\n return promise;\n }\n\n private _push(item: PromiseOrValue<T>): PromiseOrValue<void> {\n if (this._stopRequested) {\n return;\n }\n const maybePushPromise = this._reserve();\n if (isPromise(item)) {\n const entry: ItemEntry<T> = { kind: 'item' };\n this._entries.push(entry);\n item.then(\n (resolved) => {\n entry.settled = { status: 'fulfilled', value: resolved };\n this._deliverBatchIfReady();\n },\n (reason: unknown) => {\n entry.settled = { status: 'rejected', reason };\n this._deliverBatchIfReady();\n },\n );\n } else {\n this._entries.push({\n kind: 'item',\n settled: { status: 'fulfilled', value: item },\n });\n this._deliverBatchIfReady();\n }\n return maybePushPromise;\n }\n\n private _terminate(\n reason: unknown,\n afterCleanup: () => void,\n ): PromiseOrValue<void> {\n for (const entry of this._entries) {\n if (entry.kind === 'item') {\n this._release();\n }\n }\n this._entries.length = 0;\n return this._runStopCleanup(reason, afterCleanup);\n }\n\n private _stop(reason?: unknown): PromiseOrValue<void> {\n if (this._stopRequested) {\n return this._stopCompletion;\n }\n const stopCompletion = this._runStopCleanup(reason, () => {\n if (reason === undefined) {\n if (this._entries.length === 0) {\n this._isStopped = true;\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n return;\n }\n\n this._entries.push({\n kind: 'item',\n settled: { status: 'rejected', reason },\n });\n this._entries.push({ kind: 'stop' });\n this._deliverBatchIfReady();\n });\n\n if (isPromise(stopCompletion)) {\n /* node:coverage ignore next */\n stopCompletion.catch(() => undefined);\n }\n return stopCompletion;\n }\n\n private _deliverBatchIfReady(): void {\n if (!this._batchRequests.size) {\n return;\n }\n const headEntry = this._entries[0];\n const requests = this._batchRequests;\n if (headEntry !== undefined) {\n // stop sentinel always follows other work\n invariant(headEntry.kind !== 'stop');\n\n const settled = headEntry.settled;\n if (settled !== undefined) {\n if (settled.status === 'fulfilled') {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(this._drainBatch()));\n return;\n }\n this._entries.shift();\n this._release();\n this._isStopped = true;\n this._batchRequests = new Set();\n requests.forEach((request) => request.reject(settled.reason));\n }\n } else if (this._isStopped) {\n this._batchRequests = new Set();\n requests.forEach((request) => request.resolve(undefined));\n }\n }\n\n private *_drainBatch(): Generator<T> {\n while (true) {\n const entry = this._entries[0];\n if (entry === undefined) {\n return;\n }\n if (entry.kind === 'stop') {\n this._isStopped = true;\n this._entries.shift();\n return;\n }\n const settled = entry.settled;\n if (settled === undefined || settled.status === 'rejected') {\n return;\n }\n this._entries.shift();\n this._release();\n yield settled.value;\n }\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import type { Computation } from "./Computation.mjs";
2
2
  import { Queue } from "./Queue.mjs";
3
+ /** @internal */
3
4
  export interface Group<TSelf extends Group<TSelf>> {
4
5
  parent?: TSelf | undefined;
5
6
  }
@@ -7,9 +8,11 @@ interface WorkResult<TValue, T, I, G extends Group<G>, S extends Stream<T, I, G,
7
8
  value: TValue;
8
9
  work?: Work<T, I, G, S> | undefined;
9
10
  }
11
+ /** @internal */
10
12
  export interface Stream<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
11
13
  queue: Queue<StreamItem<T, I, G, S>>;
12
14
  }
15
+ /** @internal */
13
16
  export interface Work<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
14
17
  groups?: ReadonlyArray<G>;
15
18
  tasks?: ReadonlyArray<Task<T, I, G, S>>;
@@ -19,13 +22,17 @@ interface NewWork<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
19
22
  newGroups: ReadonlyArray<G>;
20
23
  newStreams: ReadonlyArray<S>;
21
24
  }
25
+ /** @internal */
22
26
  export interface WorkQueue<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
23
27
  initialGroups: ReadonlyArray<G>;
24
28
  initialStreams: ReadonlyArray<S>;
25
29
  events: AsyncGenerator<ReadonlyArray<WorkQueueEvent<T, I, G, S>>, void, void>;
26
30
  }
31
+ /** @internal */
27
32
  export type StreamItem<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> = WorkResult<I, T, I, G, S>;
33
+ /** @internal */
28
34
  export type TaskResult<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> = WorkResult<T, T, I, G, S>;
35
+ /** @internal */
29
36
  export interface Task<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
30
37
  groups: ReadonlyArray<G>;
31
38
  computation: Computation<TaskResult<T, I, G, S>>;
@@ -61,6 +68,7 @@ interface StreamValuesEvent<T, I, G extends Group<G>, S extends Stream<T, I, G,
61
68
  interface WorkQueueTerminationEvent {
62
69
  kind: 'WORK_QUEUE_TERMINATION';
63
70
  }
71
+ /** @internal */
64
72
  export type WorkQueueEvent<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> = GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S> | GroupFailureEvent<G> | StreamValuesEvent<T, I, G, S> | StreamSuccessEvent<T, I, G, S> | StreamFailureEvent<T, I, G, S> | WorkQueueTerminationEvent;
65
73
  /** @internal */
66
74
  export declare function createWorkQueue<T, I, G extends Group<G>, S extends Stream<T, I, G, S>>(initialWork: Work<T, I, G, S> | undefined): WorkQueue<T, I, G, S>;
@@ -1,5 +1,6 @@
1
1
  import type { Computation } from "./Computation.js";
2
2
  import { Queue } from "./Queue.js";
3
+ /** @internal */
3
4
  export interface Group<TSelf extends Group<TSelf>> {
4
5
  parent?: TSelf | undefined;
5
6
  }
@@ -7,9 +8,11 @@ interface WorkResult<TValue, T, I, G extends Group<G>, S extends Stream<T, I, G,
7
8
  value: TValue;
8
9
  work?: Work<T, I, G, S> | undefined;
9
10
  }
11
+ /** @internal */
10
12
  export interface Stream<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
11
13
  queue: Queue<StreamItem<T, I, G, S>>;
12
14
  }
15
+ /** @internal */
13
16
  export interface Work<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
14
17
  groups?: ReadonlyArray<G>;
15
18
  tasks?: ReadonlyArray<Task<T, I, G, S>>;
@@ -19,13 +22,17 @@ interface NewWork<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
19
22
  newGroups: ReadonlyArray<G>;
20
23
  newStreams: ReadonlyArray<S>;
21
24
  }
25
+ /** @internal */
22
26
  export interface WorkQueue<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
23
27
  initialGroups: ReadonlyArray<G>;
24
28
  initialStreams: ReadonlyArray<S>;
25
29
  events: AsyncGenerator<ReadonlyArray<WorkQueueEvent<T, I, G, S>>, void, void>;
26
30
  }
31
+ /** @internal */
27
32
  export type StreamItem<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> = WorkResult<I, T, I, G, S>;
33
+ /** @internal */
28
34
  export type TaskResult<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> = WorkResult<T, T, I, G, S>;
35
+ /** @internal */
29
36
  export interface Task<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> {
30
37
  groups: ReadonlyArray<G>;
31
38
  computation: Computation<TaskResult<T, I, G, S>>;
@@ -61,6 +68,7 @@ interface StreamValuesEvent<T, I, G extends Group<G>, S extends Stream<T, I, G,
61
68
  interface WorkQueueTerminationEvent {
62
69
  kind: 'WORK_QUEUE_TERMINATION';
63
70
  }
71
+ /** @internal */
64
72
  export type WorkQueueEvent<T, I, G extends Group<G>, S extends Stream<T, I, G, S>> = GroupValuesEvent<T, I, G, S> | GroupSuccessEvent<T, I, G, S> | GroupFailureEvent<G> | StreamValuesEvent<T, I, G, S> | StreamSuccessEvent<T, I, G, S> | StreamFailureEvent<T, I, G, S> | WorkQueueTerminationEvent;
65
73
  /** @internal */
66
74
  export declare function createWorkQueue<T, I, G extends Group<G>, S extends Stream<T, I, G, S>>(initialWork: Work<T, I, G, S> | undefined): WorkQueue<T, I, G, S>;