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.
- package/__dev__/devMode.d.ts +1 -1
- package/__dev__/error/GraphQLError.d.ts +1 -1
- package/__dev__/error/ensureGraphQLError.d.ts +1 -1
- package/__dev__/error/index.d.ts +1 -1
- package/__dev__/error/locatedError.d.ts +1 -1
- package/__dev__/error/syntaxError.d.ts +1 -1
- package/__dev__/execution/AbortedGraphQLExecutionError.d.ts +1 -1
- package/__dev__/execution/AsyncWorkTracker.d.ts +1 -1
- package/__dev__/execution/ExecutionArgs.d.mts +1 -0
- package/__dev__/execution/ExecutionArgs.d.ts +1 -0
- package/__dev__/execution/ExecutionArgs.js +3 -0
- package/__dev__/execution/ExecutionArgs.mjs +3 -0
- package/__dev__/execution/Executor.d.ts +1 -1
- package/__dev__/execution/ExecutorThrowingOnIncremental.d.ts +1 -1
- package/__dev__/execution/buildResolveInfo.d.ts +1 -1
- package/__dev__/execution/cancellablePromise.d.ts +1 -1
- package/__dev__/execution/collectFields.d.ts +1 -1
- package/__dev__/execution/collectIteratorPromises.d.ts +1 -1
- package/__dev__/execution/createSharedExecutionContext.d.ts +1 -1
- package/__dev__/execution/execute.d.ts +1 -1
- package/__dev__/execution/getStreamUsage.d.ts +1 -1
- package/__dev__/execution/getVariableSignature.d.ts +1 -1
- package/__dev__/execution/hooks.d.ts +1 -1
- package/__dev__/execution/incremental/Computation.d.ts +1 -1
- package/__dev__/execution/incremental/IncrementalExecutor.d.ts +1 -1
- package/__dev__/execution/incremental/IncrementalPublisher.d.ts +1 -1
- package/__dev__/execution/incremental/Queue.d.ts +1 -1
- package/__dev__/execution/incremental/WorkQueue.d.ts +1 -1
- package/__dev__/execution/incremental/buildExecutionPlan.d.ts +1 -1
- package/__dev__/execution/index.d.ts +1 -1
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.js +3 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +3 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.js +3 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +3 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +1 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +1 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.js +3 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.mjs +3 -0
- package/__dev__/execution/mapAsyncIterable.d.ts +1 -1
- package/__dev__/execution/returnIteratorCatchingErrors.d.ts +1 -1
- package/__dev__/execution/values.d.ts +1 -1
- package/__dev__/execution/withConcurrentAbruptClose.d.ts +1 -1
- package/__dev__/graphql.d.ts +1 -1
- package/__dev__/harness.d.ts +1 -1
- package/__dev__/index.d.ts +1 -1
- package/__dev__/jsutils/AccumulatorMap.d.ts +1 -1
- package/__dev__/jsutils/Maybe.d.ts +1 -1
- package/__dev__/jsutils/ObjMap.d.ts +1 -1
- package/__dev__/jsutils/Path.d.ts +1 -1
- package/__dev__/jsutils/PromiseOrValue.d.ts +1 -1
- package/__dev__/jsutils/capitalize.d.ts +1 -1
- package/__dev__/jsutils/devAssert.d.ts +1 -1
- package/__dev__/jsutils/didYouMean.d.ts +1 -1
- package/__dev__/jsutils/formatList.d.ts +1 -1
- package/__dev__/jsutils/getBySet.d.ts +1 -1
- package/__dev__/jsutils/groupBy.d.ts +1 -1
- package/__dev__/jsutils/identityFunc.d.ts +1 -1
- package/__dev__/jsutils/inspect.d.ts +1 -1
- package/__dev__/jsutils/instanceOf.d.ts +1 -1
- package/__dev__/jsutils/invariant.d.ts +1 -1
- package/__dev__/jsutils/isAsyncIterable.d.ts +1 -1
- package/__dev__/jsutils/isIterableObject.d.ts +1 -1
- package/__dev__/jsutils/isObjectLike.d.ts +1 -1
- package/__dev__/jsutils/isPromise.d.ts +1 -1
- package/__dev__/jsutils/isSameSet.d.ts +1 -1
- package/__dev__/jsutils/keyMap.d.ts +1 -1
- package/__dev__/jsutils/keyValMap.d.ts +1 -1
- package/__dev__/jsutils/mapValue.d.ts +1 -1
- package/__dev__/jsutils/memoize1.d.ts +1 -1
- package/__dev__/jsutils/memoize2.d.ts +1 -1
- package/__dev__/jsutils/memoize3.d.ts +1 -1
- package/__dev__/jsutils/naturalCompare.d.ts +1 -1
- package/__dev__/jsutils/printPathArray.d.ts +1 -1
- package/__dev__/jsutils/promiseForObject.d.ts +1 -1
- package/__dev__/jsutils/promiseReduce.d.ts +1 -1
- package/__dev__/jsutils/promiseWithResolvers.d.ts +1 -1
- package/__dev__/jsutils/suggestionList.d.ts +1 -1
- package/__dev__/jsutils/toError.d.ts +1 -1
- package/__dev__/jsutils/toObjMap.d.ts +1 -1
- package/__dev__/language/KindTypeMap.d.ts +1 -1
- package/__dev__/language/ast.d.ts +1 -1
- package/__dev__/language/blockString.d.ts +1 -1
- package/__dev__/language/characterClasses.d.ts +1 -1
- package/__dev__/language/directiveLocation.d.ts +1 -1
- package/__dev__/language/index.d.ts +1 -1
- package/__dev__/language/kinds.d.ts +1 -1
- package/__dev__/language/kinds_.d.ts +1 -1
- package/__dev__/language/lexer.d.ts +1 -1
- package/__dev__/language/location.d.ts +1 -1
- package/__dev__/language/parser.d.ts +1 -1
- package/__dev__/language/predicates.d.ts +1 -1
- package/__dev__/language/printLocation.d.ts +1 -1
- package/__dev__/language/printString.d.ts +1 -1
- package/__dev__/language/printer.d.ts +1 -1
- package/__dev__/language/schemaCoordinateLexer.d.ts +1 -1
- package/__dev__/language/source.d.ts +1 -1
- package/__dev__/language/tokenKind.d.ts +1 -1
- package/__dev__/language/visitor.d.ts +1 -1
- package/__dev__/type/assertName.d.ts +1 -1
- package/__dev__/type/definition.d.ts +1 -1
- package/__dev__/type/directives.d.ts +1 -1
- package/__dev__/type/index.d.ts +1 -1
- package/__dev__/type/introspection.d.ts +1 -1
- package/__dev__/type/scalars.d.ts +1 -1
- package/__dev__/type/schema.d.ts +1 -1
- package/__dev__/type/validate.d.ts +1 -1
- package/__dev__/utilities/TypeInfo.d.ts +1 -1
- package/__dev__/utilities/astFromValue.d.ts +1 -1
- package/__dev__/utilities/buildASTSchema.d.ts +1 -1
- package/__dev__/utilities/buildClientSchema.d.ts +1 -1
- package/__dev__/utilities/coerceInputValue.d.ts +1 -1
- package/__dev__/utilities/concatAST.d.ts +1 -1
- package/__dev__/utilities/extendSchema.d.ts +1 -1
- package/__dev__/utilities/findSchemaChanges.d.ts +1 -1
- package/__dev__/utilities/getDefaultValueAST.d.ts +1 -1
- package/__dev__/utilities/getIntrospectionQuery.d.ts +1 -1
- package/__dev__/utilities/getOperationAST.d.ts +1 -1
- package/__dev__/utilities/index.d.ts +1 -1
- package/__dev__/utilities/introspectionFromSchema.d.ts +1 -1
- package/__dev__/utilities/lexicographicSortSchema.d.ts +1 -1
- package/__dev__/utilities/mapSchemaConfig.d.ts +1 -1
- package/__dev__/utilities/printSchema.d.ts +1 -1
- package/__dev__/utilities/replaceVariables.d.ts +1 -1
- package/__dev__/utilities/resolveSchemaCoordinate.d.ts +1 -1
- package/__dev__/utilities/separateOperations.d.ts +1 -1
- package/__dev__/utilities/sortValueNode.d.ts +1 -1
- package/__dev__/utilities/stripIgnoredCharacters.d.ts +1 -1
- package/__dev__/utilities/typeComparators.d.ts +1 -1
- package/__dev__/utilities/typeFromAST.d.ts +1 -1
- package/__dev__/utilities/typedQueryDocumentNode.d.ts +1 -1
- package/__dev__/utilities/validateInputValue.d.ts +1 -1
- package/__dev__/utilities/valueFromAST.d.ts +1 -1
- package/__dev__/utilities/valueFromASTUntyped.d.ts +1 -1
- package/__dev__/utilities/valueToLiteral.d.ts +1 -1
- package/__dev__/validation/ValidationContext.d.ts +1 -1
- package/__dev__/validation/index.d.ts +1 -1
- package/__dev__/validation/rules/DeferStreamDirectiveLabelRule.d.ts +1 -1
- package/__dev__/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +1 -1
- package/__dev__/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +1 -1
- package/__dev__/validation/rules/ExecutableDefinitionsRule.d.ts +1 -1
- package/__dev__/validation/rules/FieldsOnCorrectTypeRule.d.ts +1 -1
- package/__dev__/validation/rules/FragmentsOnCompositeTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownArgumentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownDirectivesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownFragmentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownOperationTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownTypeNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/LoneAnonymousOperationRule.d.ts +1 -1
- package/__dev__/validation/rules/LoneSchemaDefinitionRule.d.ts +1 -1
- package/__dev__/validation/rules/MaxIntrospectionDepthRule.d.ts +1 -1
- package/__dev__/validation/rules/NoFragmentCyclesRule.d.ts +1 -1
- package/__dev__/validation/rules/NoUndefinedVariablesRule.d.ts +1 -1
- package/__dev__/validation/rules/NoUnusedFragmentsRule.d.ts +1 -1
- package/__dev__/validation/rules/NoUnusedVariablesRule.d.ts +1 -1
- package/__dev__/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +1 -1
- package/__dev__/validation/rules/PossibleFragmentSpreadsRule.d.ts +1 -1
- package/__dev__/validation/rules/PossibleTypeExtensionsRule.d.ts +1 -1
- package/__dev__/validation/rules/ProvidedRequiredArgumentsRule.d.ts +1 -1
- package/__dev__/validation/rules/ScalarLeafsRule.d.ts +1 -1
- package/__dev__/validation/rules/SingleFieldSubscriptionsRule.d.ts +1 -1
- package/__dev__/validation/rules/StreamDirectiveOnListFieldRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueArgumentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueDirectiveNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueDirectivesPerLocationRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueEnumValueNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueFragmentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueInputFieldNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueOperationNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueOperationTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueTypeNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueVariableNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/ValuesOfCorrectTypeRule.d.ts +1 -1
- package/__dev__/validation/rules/VariablesAreInputTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/VariablesInAllowedPositionRule.d.ts +1 -1
- package/__dev__/validation/rules/custom/NoDeprecatedCustomRule.d.ts +1 -1
- package/__dev__/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +1 -1
- package/__dev__/validation/specifiedRules.d.ts +1 -1
- package/__dev__/validation/validate.d.ts +1 -1
- package/__dev__/version.d.ts +1 -1
- package/devMode.d.mts +29 -0
- package/devMode.d.ts +29 -0
- package/devMode.js.map +1 -1
- package/devMode.mjs.map +1 -1
- package/error/GraphQLError.d.mts +94 -10
- package/error/GraphQLError.d.ts +94 -10
- package/error/GraphQLError.js +11 -20
- package/error/GraphQLError.js.map +1 -1
- package/error/GraphQLError.mjs +11 -20
- package/error/GraphQLError.mjs.map +1 -1
- package/error/ensureGraphQLError.d.mts +2 -0
- package/error/ensureGraphQLError.d.ts +2 -0
- package/error/ensureGraphQLError.js +0 -3
- package/error/ensureGraphQLError.js.map +1 -1
- package/error/ensureGraphQLError.mjs +0 -3
- package/error/ensureGraphQLError.mjs.map +1 -1
- package/error/index.d.mts +6 -0
- package/error/index.d.ts +6 -0
- package/error/index.js.map +1 -1
- package/error/index.mjs.map +1 -1
- package/error/locatedError.d.mts +20 -0
- package/error/locatedError.d.ts +20 -0
- package/error/locatedError.js +0 -6
- package/error/locatedError.js.map +1 -1
- package/error/locatedError.mjs +0 -6
- package/error/locatedError.mjs.map +1 -1
- package/error/syntaxError.d.mts +15 -0
- package/error/syntaxError.d.ts +15 -0
- package/error/syntaxError.js +0 -4
- package/error/syntaxError.js.map +1 -1
- package/error/syntaxError.mjs +0 -4
- package/error/syntaxError.mjs.map +1 -1
- package/execution/AbortedGraphQLExecutionError.d.mts +27 -0
- package/execution/AbortedGraphQLExecutionError.d.ts +27 -0
- package/execution/AbortedGraphQLExecutionError.js.map +1 -1
- package/execution/AbortedGraphQLExecutionError.mjs.map +1 -1
- package/execution/AsyncWorkTracker.d.mts +1 -1
- package/execution/AsyncWorkTracker.d.ts +1 -1
- package/execution/AsyncWorkTracker.js +1 -5
- package/execution/AsyncWorkTracker.js.map +1 -1
- package/execution/AsyncWorkTracker.mjs +1 -5
- package/execution/AsyncWorkTracker.mjs.map +1 -1
- package/execution/ExecutionArgs.d.mts +101 -0
- package/execution/ExecutionArgs.d.ts +101 -0
- package/execution/ExecutionArgs.js +3 -0
- package/execution/ExecutionArgs.js.map +1 -0
- package/execution/ExecutionArgs.mjs +2 -0
- package/execution/ExecutionArgs.mjs.map +1 -0
- package/execution/Executor.d.mts +44 -40
- package/execution/Executor.d.ts +44 -40
- package/execution/Executor.js +2 -122
- package/execution/Executor.js.map +1 -1
- package/execution/Executor.mjs +2 -122
- package/execution/Executor.mjs.map +1 -1
- package/execution/ExecutorThrowingOnIncremental.js +0 -2
- package/execution/ExecutorThrowingOnIncremental.js.map +1 -1
- package/execution/ExecutorThrowingOnIncremental.mjs +0 -2
- package/execution/ExecutorThrowingOnIncremental.mjs.map +1 -1
- package/execution/buildResolveInfo.d.mts +2 -0
- package/execution/buildResolveInfo.d.ts +2 -0
- package/execution/buildResolveInfo.js +0 -3
- package/execution/buildResolveInfo.js.map +1 -1
- package/execution/buildResolveInfo.mjs +0 -3
- package/execution/buildResolveInfo.mjs.map +1 -1
- package/execution/cancellablePromise.d.mts +3 -0
- package/execution/cancellablePromise.d.ts +3 -0
- package/execution/cancellablePromise.js.map +1 -1
- package/execution/cancellablePromise.mjs.map +1 -1
- package/execution/collectFields.d.mts +10 -4
- package/execution/collectFields.d.ts +10 -4
- package/execution/collectFields.js +0 -41
- package/execution/collectFields.js.map +1 -1
- package/execution/collectFields.mjs +0 -41
- package/execution/collectFields.mjs.map +1 -1
- package/execution/collectIteratorPromises.d.mts +2 -0
- package/execution/collectIteratorPromises.d.ts +2 -0
- package/execution/collectIteratorPromises.js +0 -5
- package/execution/collectIteratorPromises.js.map +1 -1
- package/execution/collectIteratorPromises.mjs +0 -5
- package/execution/collectIteratorPromises.mjs.map +1 -1
- package/execution/createSharedExecutionContext.d.mts +1 -0
- package/execution/createSharedExecutionContext.d.ts +1 -0
- package/execution/createSharedExecutionContext.js.map +1 -1
- package/execution/createSharedExecutionContext.mjs.map +1 -1
- package/execution/execute.d.mts +403 -38
- package/execution/execute.d.ts +403 -38
- package/execution/execute.js +0 -161
- package/execution/execute.js.map +1 -1
- package/execution/execute.mjs +0 -161
- package/execution/execute.mjs.map +1 -1
- package/execution/getStreamUsage.d.mts +4 -1
- package/execution/getStreamUsage.d.ts +4 -1
- package/execution/getStreamUsage.js +0 -7
- package/execution/getStreamUsage.js.map +1 -1
- package/execution/getStreamUsage.mjs +0 -7
- package/execution/getStreamUsage.mjs.map +1 -1
- package/execution/getVariableSignature.d.mts +4 -1
- package/execution/getVariableSignature.d.ts +4 -1
- package/execution/getVariableSignature.js +0 -2
- package/execution/getVariableSignature.js.map +1 -1
- package/execution/getVariableSignature.mjs +0 -2
- package/execution/getVariableSignature.mjs.map +1 -1
- package/execution/hooks.d.mts +3 -7
- package/execution/hooks.d.ts +3 -7
- package/execution/hooks.js +0 -1
- package/execution/hooks.js.map +1 -1
- package/execution/hooks.mjs +0 -1
- package/execution/hooks.mjs.map +1 -1
- package/execution/incremental/Computation.d.mts +1 -1
- package/execution/incremental/Computation.d.ts +1 -1
- package/execution/incremental/Computation.js +0 -1
- package/execution/incremental/Computation.js.map +1 -1
- package/execution/incremental/Computation.mjs +0 -1
- package/execution/incremental/Computation.mjs.map +1 -1
- package/execution/incremental/IncrementalExecutor.d.mts +124 -9
- package/execution/incremental/IncrementalExecutor.d.ts +124 -9
- package/execution/incremental/IncrementalExecutor.js +1 -31
- package/execution/incremental/IncrementalExecutor.js.map +1 -1
- package/execution/incremental/IncrementalExecutor.mjs +1 -31
- package/execution/incremental/IncrementalExecutor.mjs.map +1 -1
- package/execution/incremental/IncrementalPublisher.d.mts +1 -3
- package/execution/incremental/IncrementalPublisher.d.ts +1 -3
- package/execution/incremental/IncrementalPublisher.js +0 -5
- package/execution/incremental/IncrementalPublisher.js.map +1 -1
- package/execution/incremental/IncrementalPublisher.mjs +0 -5
- package/execution/incremental/IncrementalPublisher.mjs.map +1 -1
- package/execution/incremental/Queue.js +3 -64
- package/execution/incremental/Queue.js.map +1 -1
- package/execution/incremental/Queue.mjs +2 -62
- package/execution/incremental/Queue.mjs.map +1 -1
- package/execution/incremental/WorkQueue.d.mts +8 -0
- package/execution/incremental/WorkQueue.d.ts +8 -0
- package/execution/incremental/WorkQueue.js +0 -15
- package/execution/incremental/WorkQueue.js.map +1 -1
- package/execution/incremental/WorkQueue.mjs +0 -15
- package/execution/incremental/WorkQueue.mjs.map +1 -1
- package/execution/incremental/buildExecutionPlan.d.mts +3 -0
- package/execution/incremental/buildExecutionPlan.d.ts +3 -0
- package/execution/incremental/buildExecutionPlan.js.map +1 -1
- package/execution/incremental/buildExecutionPlan.mjs.map +1 -1
- package/execution/index.d.mts +12 -3
- package/execution/index.d.ts +12 -3
- package/execution/index.js +4 -1
- package/execution/index.js.map +1 -1
- package/execution/index.mjs +1 -0
- package/execution/index.mjs.map +1 -1
- package/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +175 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +175 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.js +69 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.js.map +1 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +65 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs.map +1 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +12 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +12 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.js +131 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.js.map +1 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +127 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs.map +1 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +165 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +165 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.js +17 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.js.map +1 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.mjs +13 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.mjs.map +1 -0
- package/execution/mapAsyncIterable.d.mts +2 -0
- package/execution/mapAsyncIterable.d.ts +2 -0
- package/execution/mapAsyncIterable.js +0 -5
- package/execution/mapAsyncIterable.js.map +1 -1
- package/execution/mapAsyncIterable.mjs +0 -5
- package/execution/mapAsyncIterable.mjs.map +1 -1
- package/execution/returnIteratorCatchingErrors.d.mts +1 -0
- package/execution/returnIteratorCatchingErrors.d.ts +1 -0
- package/execution/returnIteratorCatchingErrors.js +0 -1
- package/execution/returnIteratorCatchingErrors.js.map +1 -1
- package/execution/returnIteratorCatchingErrors.mjs +0 -1
- package/execution/returnIteratorCatchingErrors.mjs.map +1 -1
- package/execution/values.d.mts +187 -5
- package/execution/values.d.ts +187 -5
- package/execution/values.js +14 -55
- package/execution/values.js.map +1 -1
- package/execution/values.mjs +14 -55
- package/execution/values.mjs.map +1 -1
- package/execution/withConcurrentAbruptClose.d.mts +2 -0
- package/execution/withConcurrentAbruptClose.d.ts +2 -0
- package/execution/withConcurrentAbruptClose.js +0 -14
- package/execution/withConcurrentAbruptClose.js.map +1 -1
- package/execution/withConcurrentAbruptClose.mjs +0 -14
- package/execution/withConcurrentAbruptClose.mjs.map +1 -1
- package/graphql.d.mts +192 -44
- package/graphql.d.ts +192 -44
- package/graphql.js +0 -12
- package/graphql.js.map +1 -1
- package/graphql.mjs +0 -12
- package/graphql.mjs.map +1 -1
- package/harness.d.mts +17 -0
- package/harness.d.ts +17 -0
- package/harness.js.map +1 -1
- package/harness.mjs.map +1 -1
- package/index.d.mts +26 -24
- package/index.d.ts +26 -24
- package/index.js +9 -96
- package/index.js.map +1 -1
- package/index.mjs +5 -149
- package/index.mjs.map +1 -1
- package/jsutils/AccumulatorMap.d.mts +2 -0
- package/jsutils/AccumulatorMap.d.ts +2 -0
- package/jsutils/AccumulatorMap.js +0 -4
- package/jsutils/AccumulatorMap.js.map +1 -1
- package/jsutils/AccumulatorMap.mjs +0 -4
- package/jsutils/AccumulatorMap.mjs.map +1 -1
- package/jsutils/Maybe.d.mts +5 -1
- package/jsutils/Maybe.d.ts +5 -1
- package/jsutils/Maybe.js.map +1 -1
- package/jsutils/Maybe.mjs.map +1 -1
- package/jsutils/ObjMap.d.mts +6 -0
- package/jsutils/ObjMap.d.ts +6 -0
- package/jsutils/ObjMap.js.map +1 -1
- package/jsutils/ObjMap.mjs.map +1 -1
- package/jsutils/Path.d.mts +30 -0
- package/jsutils/Path.d.ts +30 -0
- package/jsutils/Path.js +0 -6
- package/jsutils/Path.js.map +1 -1
- package/jsutils/Path.mjs +0 -6
- package/jsutils/Path.mjs.map +1 -1
- package/jsutils/PromiseOrValue.d.mts +1 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/PromiseOrValue.js.map +1 -1
- package/jsutils/PromiseOrValue.mjs.map +1 -1
- package/jsutils/capitalize.d.mts +2 -0
- package/jsutils/capitalize.d.ts +2 -0
- package/jsutils/capitalize.js +0 -3
- package/jsutils/capitalize.js.map +1 -1
- package/jsutils/capitalize.mjs +0 -3
- package/jsutils/capitalize.mjs.map +1 -1
- package/jsutils/devAssert.d.mts +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js.map +1 -1
- package/jsutils/devAssert.mjs.map +1 -1
- package/jsutils/didYouMean.d.mts +4 -1
- package/jsutils/didYouMean.d.ts +4 -1
- package/jsutils/didYouMean.js.map +1 -1
- package/jsutils/didYouMean.mjs.map +1 -1
- package/jsutils/formatList.d.mts +6 -2
- package/jsutils/formatList.d.ts +6 -2
- package/jsutils/formatList.js +0 -6
- package/jsutils/formatList.js.map +1 -1
- package/jsutils/formatList.mjs +0 -6
- package/jsutils/formatList.mjs.map +1 -1
- package/jsutils/getBySet.d.mts +1 -0
- package/jsutils/getBySet.d.ts +1 -0
- package/jsutils/getBySet.js.map +1 -1
- package/jsutils/getBySet.mjs.map +1 -1
- package/jsutils/groupBy.d.mts +2 -0
- package/jsutils/groupBy.d.ts +2 -0
- package/jsutils/groupBy.js +0 -3
- package/jsutils/groupBy.js.map +1 -1
- package/jsutils/groupBy.mjs +0 -3
- package/jsutils/groupBy.mjs.map +1 -1
- package/jsutils/identityFunc.d.mts +2 -0
- package/jsutils/identityFunc.d.ts +2 -0
- package/jsutils/identityFunc.js +0 -3
- package/jsutils/identityFunc.js.map +1 -1
- package/jsutils/identityFunc.mjs +0 -3
- package/jsutils/identityFunc.mjs.map +1 -1
- package/jsutils/inspect.d.mts +2 -0
- package/jsutils/inspect.d.ts +2 -0
- package/jsutils/inspect.js +0 -4
- package/jsutils/inspect.js.map +1 -1
- package/jsutils/inspect.mjs +0 -4
- package/jsutils/inspect.mjs.map +1 -1
- package/jsutils/instanceOf.d.mts +2 -0
- package/jsutils/instanceOf.d.ts +2 -0
- package/jsutils/instanceOf.js +1 -12
- package/jsutils/instanceOf.js.map +1 -1
- package/jsutils/instanceOf.mjs +1 -12
- package/jsutils/instanceOf.mjs.map +1 -1
- package/jsutils/invariant.d.mts +1 -0
- package/jsutils/invariant.d.ts +1 -0
- package/jsutils/invariant.js.map +1 -1
- package/jsutils/invariant.mjs.map +1 -1
- package/jsutils/isAsyncIterable.d.mts +2 -0
- package/jsutils/isAsyncIterable.d.ts +2 -0
- package/jsutils/isAsyncIterable.js +0 -4
- package/jsutils/isAsyncIterable.js.map +1 -1
- package/jsutils/isAsyncIterable.mjs +0 -4
- package/jsutils/isAsyncIterable.mjs.map +1 -1
- package/jsutils/isIterableObject.d.mts +6 -5
- package/jsutils/isIterableObject.d.ts +6 -5
- package/jsutils/isIterableObject.js +0 -17
- package/jsutils/isIterableObject.js.map +1 -1
- package/jsutils/isIterableObject.mjs +0 -17
- package/jsutils/isIterableObject.mjs.map +1 -1
- package/jsutils/isObjectLike.d.mts +2 -0
- package/jsutils/isObjectLike.d.ts +2 -0
- package/jsutils/isObjectLike.js +0 -4
- package/jsutils/isObjectLike.js.map +1 -1
- package/jsutils/isObjectLike.mjs +0 -4
- package/jsutils/isObjectLike.mjs.map +1 -1
- package/jsutils/isPromise.d.mts +3 -0
- package/jsutils/isPromise.d.ts +3 -0
- package/jsutils/isPromise.js +0 -4
- package/jsutils/isPromise.js.map +1 -1
- package/jsutils/isPromise.mjs +0 -4
- package/jsutils/isPromise.mjs.map +1 -1
- package/jsutils/isSameSet.d.mts +1 -0
- package/jsutils/isSameSet.d.ts +1 -0
- package/jsutils/isSameSet.js.map +1 -1
- package/jsutils/isSameSet.mjs.map +1 -1
- package/jsutils/keyMap.d.mts +7 -14
- package/jsutils/keyMap.d.ts +7 -14
- package/jsutils/keyMap.js +0 -27
- package/jsutils/keyMap.js.map +1 -1
- package/jsutils/keyMap.mjs +0 -27
- package/jsutils/keyMap.mjs.map +1 -1
- package/jsutils/keyValMap.d.mts +9 -6
- package/jsutils/keyValMap.d.ts +9 -6
- package/jsutils/keyValMap.js +0 -17
- package/jsutils/keyValMap.js.map +1 -1
- package/jsutils/keyValMap.mjs +0 -17
- package/jsutils/keyValMap.mjs.map +1 -1
- package/jsutils/mapValue.d.mts +2 -0
- package/jsutils/mapValue.d.ts +2 -0
- package/jsutils/mapValue.js +0 -4
- package/jsutils/mapValue.js.map +1 -1
- package/jsutils/mapValue.mjs +0 -4
- package/jsutils/mapValue.mjs.map +1 -1
- package/jsutils/memoize1.d.mts +2 -0
- package/jsutils/memoize1.d.ts +2 -0
- package/jsutils/memoize1.js +0 -3
- package/jsutils/memoize1.js.map +1 -1
- package/jsutils/memoize1.mjs +0 -3
- package/jsutils/memoize1.mjs.map +1 -1
- package/jsutils/memoize2.d.mts +2 -0
- package/jsutils/memoize2.d.ts +2 -0
- package/jsutils/memoize2.js +0 -3
- package/jsutils/memoize2.js.map +1 -1
- package/jsutils/memoize2.mjs +0 -3
- package/jsutils/memoize2.mjs.map +1 -1
- package/jsutils/memoize3.d.mts +2 -0
- package/jsutils/memoize3.d.ts +2 -0
- package/jsutils/memoize3.js +0 -3
- package/jsutils/memoize3.js.map +1 -1
- package/jsutils/memoize3.mjs +0 -3
- package/jsutils/memoize3.mjs.map +1 -1
- package/jsutils/naturalCompare.d.mts +1 -0
- package/jsutils/naturalCompare.d.ts +1 -0
- package/jsutils/naturalCompare.js +0 -7
- package/jsutils/naturalCompare.js.map +1 -1
- package/jsutils/naturalCompare.mjs +0 -7
- package/jsutils/naturalCompare.mjs.map +1 -1
- package/jsutils/printPathArray.d.mts +2 -0
- package/jsutils/printPathArray.d.ts +2 -0
- package/jsutils/printPathArray.js +0 -3
- package/jsutils/printPathArray.js.map +1 -1
- package/jsutils/printPathArray.mjs +0 -3
- package/jsutils/printPathArray.mjs.map +1 -1
- package/jsutils/promiseForObject.d.mts +2 -0
- package/jsutils/promiseForObject.d.ts +2 -0
- package/jsutils/promiseForObject.js +0 -7
- package/jsutils/promiseForObject.js.map +1 -1
- package/jsutils/promiseForObject.mjs +0 -7
- package/jsutils/promiseForObject.mjs.map +1 -1
- package/jsutils/promiseReduce.d.mts +2 -0
- package/jsutils/promiseReduce.d.ts +2 -0
- package/jsutils/promiseReduce.js +0 -7
- package/jsutils/promiseReduce.js.map +1 -1
- package/jsutils/promiseReduce.mjs +0 -7
- package/jsutils/promiseReduce.mjs.map +1 -1
- package/jsutils/promiseWithResolvers.d.mts +2 -0
- package/jsutils/promiseWithResolvers.d.ts +2 -0
- package/jsutils/promiseWithResolvers.js +0 -5
- package/jsutils/promiseWithResolvers.js.map +1 -1
- package/jsutils/promiseWithResolvers.mjs +0 -5
- package/jsutils/promiseWithResolvers.mjs.map +1 -1
- package/jsutils/suggestionList.d.mts +2 -0
- package/jsutils/suggestionList.d.ts +2 -0
- package/jsutils/suggestionList.js +1 -24
- package/jsutils/suggestionList.js.map +1 -1
- package/jsutils/suggestionList.mjs +1 -24
- package/jsutils/suggestionList.mjs.map +1 -1
- package/jsutils/toError.d.mts +2 -0
- package/jsutils/toError.d.ts +2 -0
- package/jsutils/toError.js +0 -3
- package/jsutils/toError.js.map +1 -1
- package/jsutils/toError.mjs +0 -3
- package/jsutils/toError.mjs.map +1 -1
- package/jsutils/toObjMap.d.mts +2 -0
- package/jsutils/toObjMap.d.ts +2 -0
- package/jsutils/toObjMap.js.map +1 -1
- package/jsutils/toObjMap.mjs.map +1 -1
- package/language/KindTypeMap.d.mts +1 -0
- package/language/KindTypeMap.d.ts +1 -0
- package/language/KindTypeMap.js.map +1 -1
- package/language/KindTypeMap.mjs.map +1 -1
- package/language/ast.d.mts +413 -53
- package/language/ast.d.ts +413 -53
- package/language/ast.js +0 -20
- package/language/ast.js.map +1 -1
- package/language/ast.mjs +0 -20
- package/language/ast.mjs.map +1 -1
- package/language/blockString.d.mts +1 -3
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +11 -37
- package/language/blockString.js.map +1 -1
- package/language/blockString.mjs +11 -37
- package/language/blockString.mjs.map +1 -1
- package/language/characterClasses.js +2 -45
- package/language/characterClasses.js.map +1 -1
- package/language/characterClasses.mjs +2 -45
- package/language/characterClasses.mjs.map +1 -1
- package/language/directiveLocation.d.mts +24 -5
- package/language/directiveLocation.d.ts +24 -5
- package/language/directiveLocation.js +0 -5
- package/language/directiveLocation.js.map +1 -1
- package/language/directiveLocation.mjs +0 -5
- package/language/directiveLocation.mjs.map +1 -1
- package/language/index.d.mts +6 -0
- package/language/index.d.ts +6 -0
- package/language/index.js +0 -4
- package/language/index.js.map +1 -1
- package/language/index.mjs +0 -4
- package/language/index.mjs.map +1 -1
- package/language/kinds.d.mts +3 -0
- package/language/kinds.d.ts +3 -0
- package/language/kinds.js.map +1 -1
- package/language/kinds.mjs.map +1 -1
- package/language/kinds_.d.mts +100 -12
- package/language/kinds_.d.ts +100 -12
- package/language/kinds_.js +0 -13
- package/language/kinds_.js.map +1 -1
- package/language/kinds_.mjs +0 -13
- package/language/kinds_.mjs.map +1 -1
- package/language/lexer.d.mts +48 -15
- package/language/lexer.d.ts +48 -15
- package/language/lexer.js +37 -278
- package/language/lexer.js.map +1 -1
- package/language/lexer.mjs +37 -278
- package/language/lexer.mjs.map +1 -1
- package/language/location.d.mts +16 -3
- package/language/location.d.ts +16 -3
- package/language/location.js +0 -4
- package/language/location.js.map +1 -1
- package/language/location.mjs +0 -4
- package/language/location.mjs.map +1 -1
- package/language/parser.d.mts +224 -9
- package/language/parser.d.ts +224 -9
- package/language/parser.js +0 -375
- package/language/parser.js.map +1 -1
- package/language/parser.mjs +0 -375
- package/language/parser.mjs.map +1 -1
- package/language/predicates.d.mts +181 -0
- package/language/predicates.d.ts +181 -0
- package/language/predicates.js +0 -6
- package/language/predicates.js.map +1 -1
- package/language/predicates.mjs +0 -6
- package/language/predicates.mjs.map +1 -1
- package/language/printLocation.d.mts +28 -0
- package/language/printLocation.d.ts +28 -0
- package/language/printLocation.js +0 -8
- package/language/printLocation.js.map +1 -1
- package/language/printLocation.mjs +0 -8
- package/language/printLocation.mjs.map +1 -1
- package/language/printString.d.mts +2 -0
- package/language/printString.d.ts +2 -0
- package/language/printString.js +5 -11
- package/language/printString.js.map +1 -1
- package/language/printString.mjs +5 -11
- package/language/printString.mjs.map +1 -1
- package/language/printer.d.mts +12 -0
- package/language/printer.d.ts +12 -0
- package/language/printer.js +0 -25
- package/language/printer.js.map +1 -1
- package/language/printer.mjs +0 -25
- package/language/printer.mjs.map +1 -1
- package/language/schemaCoordinateLexer.d.mts +14 -0
- package/language/schemaCoordinateLexer.d.ts +14 -0
- package/language/schemaCoordinateLexer.js +5 -35
- package/language/schemaCoordinateLexer.js.map +1 -1
- package/language/schemaCoordinateLexer.mjs +5 -35
- package/language/schemaCoordinateLexer.mjs.map +1 -1
- package/language/source.d.mts +28 -1
- package/language/source.d.ts +28 -1
- package/language/source.js +0 -12
- package/language/source.js.map +1 -1
- package/language/source.mjs +0 -12
- package/language/source.mjs.map +1 -1
- package/language/tokenKind.d.mts +5 -0
- package/language/tokenKind.d.ts +5 -0
- package/language/tokenKind.js +0 -4
- package/language/tokenKind.js.map +1 -1
- package/language/tokenKind.mjs +0 -4
- package/language/tokenKind.mjs.map +1 -1
- package/language/visitor.d.mts +182 -72
- package/language/visitor.d.ts +182 -72
- package/language/visitor.js +0 -15
- package/language/visitor.js.map +1 -1
- package/language/visitor.mjs +0 -15
- package/language/visitor.mjs.map +1 -1
- package/package.json +1 -1
- package/type/assertName.d.mts +18 -1
- package/type/assertName.d.ts +18 -1
- package/type/assertName.js +0 -8
- package/type/assertName.js.map +1 -1
- package/type/assertName.mjs +0 -8
- package/type/assertName.mjs.map +1 -1
- package/type/definition.d.mts +3258 -128
- package/type/definition.d.ts +3258 -128
- package/type/definition.js +5 -252
- package/type/definition.js.map +1 -1
- package/type/definition.mjs +5 -252
- package/type/definition.mjs.map +1 -1
- package/type/directives.d.mts +209 -20
- package/type/directives.d.ts +209 -20
- package/type/directives.js +0 -37
- package/type/directives.js.map +1 -1
- package/type/directives.mjs +0 -37
- package/type/directives.mjs.map +1 -1
- package/type/index.d.mts +6 -0
- package/type/index.d.ts +6 -0
- package/type/index.js +0 -23
- package/type/index.js.map +1 -1
- package/type/index.mjs +5 -48
- package/type/index.mjs.map +1 -1
- package/type/introspection.d.mts +36 -0
- package/type/introspection.d.ts +36 -0
- package/type/introspection.js +1 -6
- package/type/introspection.js.map +1 -1
- package/type/introspection.mjs +1 -6
- package/type/introspection.mjs.map +1 -1
- package/type/scalars.d.mts +29 -2
- package/type/scalars.d.ts +29 -2
- package/type/scalars.js +0 -15
- package/type/scalars.js.map +1 -1
- package/type/scalars.mjs +0 -15
- package/type/scalars.mjs.map +1 -1
- package/type/schema.d.mts +507 -31
- package/type/schema.d.ts +507 -31
- package/type/schema.js +0 -97
- package/type/schema.js.map +1 -1
- package/type/schema.mjs +0 -97
- package/type/schema.mjs.map +1 -1
- package/type/validate.d.mts +32 -3
- package/type/validate.d.ts +32 -3
- package/type/validate.js +0 -112
- package/type/validate.js.map +1 -1
- package/type/validate.mjs +0 -112
- package/type/validate.mjs.map +1 -1
- package/utilities/TypeInfo.d.mts +564 -1
- package/utilities/TypeInfo.d.ts +564 -1
- package/utilities/TypeInfo.js +1 -24
- package/utilities/TypeInfo.js.map +1 -1
- package/utilities/TypeInfo.mjs +1 -24
- package/utilities/TypeInfo.mjs.map +1 -1
- package/utilities/astFromValue.d.mts +36 -3
- package/utilities/astFromValue.d.ts +36 -3
- package/utilities/astFromValue.js +0 -42
- package/utilities/astFromValue.js.map +1 -1
- package/utilities/astFromValue.mjs +0 -42
- package/utilities/astFromValue.mjs.map +1 -1
- package/utilities/buildASTSchema.d.mts +66 -6
- package/utilities/buildASTSchema.d.ts +66 -6
- package/utilities/buildASTSchema.js +0 -21
- package/utilities/buildASTSchema.js.map +1 -1
- package/utilities/buildASTSchema.mjs +0 -21
- package/utilities/buildASTSchema.mjs.map +1 -1
- package/utilities/buildClientSchema.d.mts +17 -2
- package/utilities/buildClientSchema.d.ts +17 -2
- package/utilities/buildClientSchema.js +1 -32
- package/utilities/buildClientSchema.js.map +1 -1
- package/utilities/buildClientSchema.mjs +0 -30
- package/utilities/buildClientSchema.mjs.map +1 -1
- package/utilities/coerceInputValue.d.mts +83 -1
- package/utilities/coerceInputValue.d.ts +83 -1
- package/utilities/coerceInputValue.js +21 -50
- package/utilities/coerceInputValue.js.map +1 -1
- package/utilities/coerceInputValue.mjs +21 -50
- package/utilities/coerceInputValue.mjs.map +1 -1
- package/utilities/concatAST.d.mts +12 -0
- package/utilities/concatAST.d.ts +12 -0
- package/utilities/concatAST.js +0 -5
- package/utilities/concatAST.js.map +1 -1
- package/utilities/concatAST.mjs +0 -5
- package/utilities/concatAST.mjs.map +1 -1
- package/utilities/extendSchema.d.mts +58 -3
- package/utilities/extendSchema.d.ts +58 -3
- package/utilities/extendSchema.js +0 -60
- package/utilities/extendSchema.js.map +1 -1
- package/utilities/extendSchema.mjs +0 -60
- package/utilities/extendSchema.mjs.map +1 -1
- package/utilities/findSchemaChanges.d.mts +99 -1
- package/utilities/findSchemaChanges.d.ts +99 -1
- package/utilities/findSchemaChanges.js +3 -35
- package/utilities/findSchemaChanges.js.map +1 -1
- package/utilities/findSchemaChanges.mjs +3 -35
- package/utilities/findSchemaChanges.mjs.map +1 -1
- package/utilities/getDefaultValueAST.d.mts +1 -0
- package/utilities/getDefaultValueAST.d.ts +1 -0
- package/utilities/getDefaultValueAST.js +0 -2
- package/utilities/getDefaultValueAST.js.map +1 -1
- package/utilities/getDefaultValueAST.mjs +0 -2
- package/utilities/getDefaultValueAST.mjs.map +1 -1
- package/utilities/getIntrospectionQuery.d.mts +132 -0
- package/utilities/getIntrospectionQuery.d.ts +132 -0
- package/utilities/getIntrospectionQuery.js +0 -4
- package/utilities/getIntrospectionQuery.js.map +1 -1
- package/utilities/getIntrospectionQuery.mjs +0 -4
- package/utilities/getIntrospectionQuery.mjs.map +1 -1
- package/utilities/getOperationAST.d.mts +15 -0
- package/utilities/getOperationAST.d.ts +15 -0
- package/utilities/getOperationAST.js +0 -8
- package/utilities/getOperationAST.js.map +1 -1
- package/utilities/getOperationAST.mjs +0 -8
- package/utilities/getOperationAST.mjs.map +1 -1
- package/utilities/index.d.mts +18 -3
- package/utilities/index.d.ts +18 -3
- package/utilities/index.js +0 -27
- package/utilities/index.js.map +1 -1
- package/utilities/index.mjs +4 -37
- package/utilities/index.mjs.map +1 -1
- package/utilities/introspectionFromSchema.d.mts +54 -0
- package/utilities/introspectionFromSchema.d.ts +54 -0
- package/utilities/introspectionFromSchema.js +0 -9
- package/utilities/introspectionFromSchema.js.map +1 -1
- package/utilities/introspectionFromSchema.mjs +0 -9
- package/utilities/introspectionFromSchema.mjs.map +1 -1
- package/utilities/lexicographicSortSchema.d.mts +35 -0
- package/utilities/lexicographicSortSchema.d.ts +35 -0
- package/utilities/lexicographicSortSchema.js +0 -5
- package/utilities/lexicographicSortSchema.js.map +1 -1
- package/utilities/lexicographicSortSchema.mjs +0 -5
- package/utilities/lexicographicSortSchema.mjs.map +1 -1
- package/utilities/mapSchemaConfig.d.mts +6 -3
- package/utilities/mapSchemaConfig.d.ts +6 -3
- package/utilities/mapSchemaConfig.js +0 -10
- package/utilities/mapSchemaConfig.js.map +1 -1
- package/utilities/mapSchemaConfig.mjs +0 -10
- package/utilities/mapSchemaConfig.mjs.map +1 -1
- package/utilities/printSchema.d.mts +84 -0
- package/utilities/printSchema.d.ts +84 -0
- package/utilities/printSchema.js +0 -28
- package/utilities/printSchema.js.map +1 -1
- package/utilities/printSchema.mjs +0 -28
- package/utilities/printSchema.mjs.map +1 -1
- package/utilities/replaceVariables.d.mts +36 -0
- package/utilities/replaceVariables.d.ts +36 -0
- package/utilities/replaceVariables.js +0 -8
- package/utilities/replaceVariables.js.map +1 -1
- package/utilities/replaceVariables.mjs +0 -8
- package/utilities/replaceVariables.mjs.map +1 -1
- package/utilities/resolveSchemaCoordinate.d.mts +62 -0
- package/utilities/resolveSchemaCoordinate.d.ts +62 -0
- package/utilities/resolveSchemaCoordinate.js +0 -56
- package/utilities/resolveSchemaCoordinate.js.map +1 -1
- package/utilities/resolveSchemaCoordinate.mjs +0 -56
- package/utilities/resolveSchemaCoordinate.mjs.map +1 -1
- package/utilities/separateOperations.d.mts +30 -0
- package/utilities/separateOperations.d.ts +30 -0
- package/utilities/separateOperations.js +0 -15
- package/utilities/separateOperations.js.map +1 -1
- package/utilities/separateOperations.mjs +0 -15
- package/utilities/separateOperations.mjs.map +1 -1
- package/utilities/sortValueNode.js +0 -7
- package/utilities/sortValueNode.js.map +1 -1
- package/utilities/sortValueNode.mjs +0 -7
- package/utilities/sortValueNode.mjs.map +1 -1
- package/utilities/stripIgnoredCharacters.d.mts +13 -6
- package/utilities/stripIgnoredCharacters.d.ts +13 -6
- package/utilities/stripIgnoredCharacters.js +0 -65
- package/utilities/stripIgnoredCharacters.js.map +1 -1
- package/utilities/stripIgnoredCharacters.mjs +0 -65
- package/utilities/stripIgnoredCharacters.mjs.map +1 -1
- package/utilities/typeComparators.d.mts +84 -0
- package/utilities/typeComparators.d.ts +84 -0
- package/utilities/typeComparators.js +0 -33
- package/utilities/typeComparators.js.map +1 -1
- package/utilities/typeComparators.mjs +0 -33
- package/utilities/typeComparators.mjs.map +1 -1
- package/utilities/typeFromAST.d.mts +86 -0
- package/utilities/typeFromAST.d.ts +86 -0
- package/utilities/typeFromAST.js.map +1 -1
- package/utilities/typeFromAST.mjs.map +1 -1
- package/utilities/typedQueryDocumentNode.d.mts +4 -0
- package/utilities/typedQueryDocumentNode.d.ts +4 -0
- package/utilities/typedQueryDocumentNode.js.map +1 -1
- package/utilities/typedQueryDocumentNode.mjs.map +1 -1
- package/utilities/validateInputValue.d.mts +123 -0
- package/utilities/validateInputValue.d.ts +123 -0
- package/utilities/validateInputValue.js +0 -20
- package/utilities/validateInputValue.js.map +1 -1
- package/utilities/validateInputValue.mjs +0 -20
- package/utilities/validateInputValue.mjs.map +1 -1
- package/utilities/valueFromAST.d.mts +41 -0
- package/utilities/valueFromAST.d.ts +41 -0
- package/utilities/valueFromAST.js +13 -51
- package/utilities/valueFromAST.js.map +1 -1
- package/utilities/valueFromAST.mjs +13 -51
- package/utilities/valueFromAST.mjs.map +1 -1
- package/utilities/valueFromASTUntyped.d.mts +15 -2
- package/utilities/valueFromASTUntyped.d.ts +15 -2
- package/utilities/valueFromASTUntyped.js +0 -16
- package/utilities/valueFromASTUntyped.js.map +1 -1
- package/utilities/valueFromASTUntyped.mjs +0 -16
- package/utilities/valueFromASTUntyped.mjs.map +1 -1
- package/utilities/valueToLiteral.d.mts +30 -1
- package/utilities/valueToLiteral.d.ts +30 -1
- package/utilities/valueToLiteral.js +7 -40
- package/utilities/valueToLiteral.js.map +1 -1
- package/utilities/valueToLiteral.mjs +7 -40
- package/utilities/valueToLiteral.mjs.map +1 -1
- package/validation/ValidationContext.d.mts +490 -0
- package/validation/ValidationContext.d.ts +490 -0
- package/validation/ValidationContext.js +1 -8
- package/validation/ValidationContext.js.map +1 -1
- package/validation/ValidationContext.mjs +1 -8
- package/validation/ValidationContext.mjs.map +1 -1
- package/validation/index.d.mts +7 -0
- package/validation/index.d.ts +7 -0
- package/validation/index.js +0 -34
- package/validation/index.js.map +1 -1
- package/validation/index.mjs +0 -34
- package/validation/index.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveLabelRule.d.mts +30 -0
- package/validation/rules/DeferStreamDirectiveLabelRule.d.ts +30 -0
- package/validation/rules/DeferStreamDirectiveLabelRule.js +0 -5
- package/validation/rules/DeferStreamDirectiveLabelRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveLabelRule.mjs +0 -5
- package/validation/rules/DeferStreamDirectiveLabelRule.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +28 -0
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +28 -0
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js +0 -5
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs +0 -5
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.mts +52 -0
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +52 -0
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js +0 -5
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs +0 -5
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.d.mts +28 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
- package/validation/rules/ExecutableDefinitionsRule.js +0 -8
- package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.mjs +0 -8
- package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.d.mts +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +0 -27
- package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +0 -27
- package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +28 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +0 -9
- package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +0 -9
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.d.mts +29 -3
- package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
- package/validation/rules/KnownArgumentNamesRule.js +0 -13
- package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.mjs +0 -13
- package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/KnownDirectivesRule.d.mts +28 -0
- package/validation/rules/KnownDirectivesRule.d.ts +28 -0
- package/validation/rules/KnownDirectivesRule.js +0 -10
- package/validation/rules/KnownDirectivesRule.js.map +1 -1
- package/validation/rules/KnownDirectivesRule.mjs +0 -10
- package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.d.mts +28 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
- package/validation/rules/KnownFragmentNamesRule.js +0 -8
- package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.mjs +0 -8
- package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/KnownOperationTypesRule.d.mts +20 -0
- package/validation/rules/KnownOperationTypesRule.d.ts +20 -0
- package/validation/rules/KnownOperationTypesRule.js +0 -8
- package/validation/rules/KnownOperationTypesRule.js.map +1 -1
- package/validation/rules/KnownOperationTypesRule.mjs +0 -8
- package/validation/rules/KnownOperationTypesRule.mjs.map +1 -1
- package/validation/rules/KnownTypeNamesRule.d.mts +28 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
- package/validation/rules/KnownTypeNamesRule.js +0 -8
- package/validation/rules/KnownTypeNamesRule.js.map +1 -1
- package/validation/rules/KnownTypeNamesRule.mjs +0 -8
- package/validation/rules/KnownTypeNamesRule.mjs.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.d.mts +28 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
- package/validation/rules/LoneAnonymousOperationRule.js +0 -8
- package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.mjs +0 -8
- package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.d.mts +21 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +0 -5
- package/validation/rules/LoneSchemaDefinitionRule.js.map +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.mjs +0 -5
- package/validation/rules/LoneSchemaDefinitionRule.mjs.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.d.mts +31 -0
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
- package/validation/rules/MaxIntrospectionDepthRule.js +0 -14
- package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.mjs +0 -14
- package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
- package/validation/rules/NoFragmentCyclesRule.d.mts +28 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
- package/validation/rules/NoFragmentCyclesRule.js +0 -15
- package/validation/rules/NoFragmentCyclesRule.js.map +1 -1
- package/validation/rules/NoFragmentCyclesRule.mjs +0 -15
- package/validation/rules/NoFragmentCyclesRule.mjs.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.d.mts +28 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
- package/validation/rules/NoUndefinedVariablesRule.js +0 -8
- package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.mjs +0 -8
- package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.d.mts +28 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
- package/validation/rules/NoUnusedFragmentsRule.js +0 -8
- package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.mjs +0 -8
- package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.d.mts +29 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
- package/validation/rules/NoUnusedVariablesRule.js +0 -8
- package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.mjs +0 -8
- package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +33 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +1 -175
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +1 -175
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.d.mts +36 -0
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +0 -7
- package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +0 -7
- package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
- package/validation/rules/PossibleTypeExtensionsRule.d.mts +21 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +0 -9
- package/validation/rules/PossibleTypeExtensionsRule.js.map +1 -1
- package/validation/rules/PossibleTypeExtensionsRule.mjs +0 -9
- package/validation/rules/PossibleTypeExtensionsRule.mjs.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +29 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.js +0 -13
- package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +0 -13
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
- package/validation/rules/ScalarLeafsRule.d.mts +28 -0
- package/validation/rules/ScalarLeafsRule.d.ts +28 -0
- package/validation/rules/ScalarLeafsRule.js +0 -6
- package/validation/rules/ScalarLeafsRule.js.map +1 -1
- package/validation/rules/ScalarLeafsRule.mjs +0 -6
- package/validation/rules/ScalarLeafsRule.mjs.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.d.mts +34 -2
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +34 -2
- package/validation/rules/SingleFieldSubscriptionsRule.js +0 -9
- package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +0 -9
- package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
- package/validation/rules/StreamDirectiveOnListFieldRule.d.mts +21 -0
- package/validation/rules/StreamDirectiveOnListFieldRule.d.ts +21 -0
- package/validation/rules/StreamDirectiveOnListFieldRule.js +0 -5
- package/validation/rules/StreamDirectiveOnListFieldRule.js.map +1 -1
- package/validation/rules/StreamDirectiveOnListFieldRule.mjs +0 -5
- package/validation/rules/StreamDirectiveOnListFieldRule.mjs.map +1 -1
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.mts +21 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +0 -6
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js.map +1 -1
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +0 -6
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.d.mts +28 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueArgumentNamesRule.js +0 -8
- package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.mjs +0 -8
- package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueDirectiveNamesRule.d.mts +21 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +0 -5
- package/validation/rules/UniqueDirectiveNamesRule.js.map +1 -1
- package/validation/rules/UniqueDirectiveNamesRule.mjs +0 -5
- package/validation/rules/UniqueDirectiveNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +28 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +0 -11
- package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +0 -11
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
- package/validation/rules/UniqueEnumValueNamesRule.d.mts +21 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +0 -5
- package/validation/rules/UniqueEnumValueNamesRule.js.map +1 -1
- package/validation/rules/UniqueEnumValueNamesRule.mjs +0 -5
- package/validation/rules/UniqueEnumValueNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.mts +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +0 -5
- package/validation/rules/UniqueFieldDefinitionNamesRule.js.map +1 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +0 -5
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.d.mts +28 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueFragmentNamesRule.js +0 -7
- package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.mjs +0 -7
- package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.d.mts +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +0 -8
- package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.mjs +0 -8
- package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.d.mts +28 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
- package/validation/rules/UniqueOperationNamesRule.js +0 -7
- package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.mjs +0 -7
- package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueOperationTypesRule.d.mts +21 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
- package/validation/rules/UniqueOperationTypesRule.js +0 -5
- package/validation/rules/UniqueOperationTypesRule.js.map +1 -1
- package/validation/rules/UniqueOperationTypesRule.mjs +0 -5
- package/validation/rules/UniqueOperationTypesRule.mjs.map +1 -1
- package/validation/rules/UniqueTypeNamesRule.d.mts +21 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
- package/validation/rules/UniqueTypeNamesRule.js +0 -5
- package/validation/rules/UniqueTypeNamesRule.js.map +1 -1
- package/validation/rules/UniqueTypeNamesRule.mjs +0 -5
- package/validation/rules/UniqueTypeNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.d.mts +28 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
- package/validation/rules/UniqueVariableNamesRule.js +0 -5
- package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.mjs +0 -5
- package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.d.mts +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +1 -21
- package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +1 -21
- package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.d.mts +32 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
- package/validation/rules/VariablesAreInputTypesRule.js +0 -8
- package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.mjs +0 -8
- package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.d.mts +28 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +0 -20
- package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs +0 -20
- package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +41 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +0 -10
- package/validation/rules/custom/NoDeprecatedCustomRule.js.map +1 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +0 -10
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs.map +1 -1
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.mts +28 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +0 -10
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +0 -10
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
- package/validation/specifiedRules.d.mts +2 -3
- package/validation/specifiedRules.d.ts +2 -3
- package/validation/specifiedRules.js +0 -46
- package/validation/specifiedRules.js.map +1 -1
- package/validation/specifiedRules.mjs +0 -46
- package/validation/specifiedRules.mjs.map +1 -1
- package/validation/validate.d.mts +65 -7
- package/validation/validate.d.ts +65 -7
- package/validation/validate.js +0 -41
- package/validation/validate.js.map +1 -1
- package/validation/validate.mjs +0 -41
- package/validation/validate.mjs.map +1 -1
- package/version.d.mts +3 -6
- package/version.d.ts +3 -6
- package/version.js +2 -10
- package/version.js.map +1 -1
- package/version.mjs +2 -10
- 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>;
|