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
package/execution/Executor.js
CHANGED
|
@@ -26,19 +26,11 @@ const getStreamUsage_ts_1 = require("./getStreamUsage.js");
|
|
|
26
26
|
const hooks_ts_1 = require("./hooks.js");
|
|
27
27
|
const returnIteratorCatchingErrors_ts_1 = require("./returnIteratorCatchingErrors.js");
|
|
28
28
|
const values_ts_1 = require("./values.js");
|
|
29
|
-
/**
|
|
30
|
-
* A memoized collection of relevant subfields with regard to the return
|
|
31
|
-
* type. Memoizing ensures the subfields are not repeatedly calculated, which
|
|
32
|
-
* saves overhead when resolving lists of values.
|
|
33
|
-
*/
|
|
34
29
|
exports.collectSubfields = (0, memoize3_ts_1.memoize3)((validatedExecutionArgs, returnType, fieldDetailsList) => {
|
|
35
30
|
const { schema, fragments, variableValues, hideSuggestions } = validatedExecutionArgs;
|
|
36
31
|
return (0, collectFields_ts_1.collectSubfields)(schema, fragments, variableValues, returnType, fieldDetailsList, hideSuggestions);
|
|
37
32
|
});
|
|
38
33
|
exports.getStreamUsage = (0, memoize2_ts_1.memoize2)((validatedExecutionArgs, fieldDetailsList) => (0, getStreamUsage_ts_1.getStreamUsage)(validatedExecutionArgs, fieldDetailsList));
|
|
39
|
-
/**
|
|
40
|
-
* @internal
|
|
41
|
-
*/
|
|
42
34
|
class CollectedErrors {
|
|
43
35
|
constructor() {
|
|
44
36
|
this._errorPositions = new Set();
|
|
@@ -48,10 +40,6 @@ class CollectedErrors {
|
|
|
48
40
|
return this._errors;
|
|
49
41
|
}
|
|
50
42
|
add(error, path) {
|
|
51
|
-
// Do not modify errors list if the execution position for this error or
|
|
52
|
-
// any of its ancestors has already been nulled via error propagation.
|
|
53
|
-
// This check should be unnecessary for implementations able to implement
|
|
54
|
-
// actual cancellation.
|
|
55
43
|
if (this.hasNulledPosition(path)) {
|
|
56
44
|
return;
|
|
57
45
|
}
|
|
@@ -70,7 +58,6 @@ class CollectedErrors {
|
|
|
70
58
|
}
|
|
71
59
|
}
|
|
72
60
|
const defaultAbortReason = new Error('This operation was aborted');
|
|
73
|
-
/** @internal */
|
|
74
61
|
class Executor {
|
|
75
62
|
constructor(validatedExecutionArgs, sharedExecutionContext) {
|
|
76
63
|
this.validatedExecutionArgs = validatedExecutionArgs;
|
|
@@ -175,10 +162,6 @@ class Executor {
|
|
|
175
162
|
(0, hooks_ts_1.runAsyncWorkFinishedHook)(validatedExecutionArgs, sharedExecutionContext, asyncWorkFinishedHook);
|
|
176
163
|
};
|
|
177
164
|
}
|
|
178
|
-
/**
|
|
179
|
-
* Given a completed execution context and data, build the `{ errors, data }`
|
|
180
|
-
* response defined by the "Response" section of the GraphQL specification.
|
|
181
|
-
*/
|
|
182
165
|
buildResponse(data) {
|
|
183
166
|
this.getFinishSharedExecution()();
|
|
184
167
|
const errors = this.collectedErrors.errors;
|
|
@@ -192,10 +175,6 @@ class Executor {
|
|
|
192
175
|
? this.executeFieldsSerially(rootType, rootValue, undefined, groupedFieldSet, positionContext)
|
|
193
176
|
: this.executeFields(rootType, rootValue, undefined, groupedFieldSet, positionContext);
|
|
194
177
|
}
|
|
195
|
-
/**
|
|
196
|
-
* Implements the "Executing selection sets" section of the spec
|
|
197
|
-
* for fields that must be executed serially.
|
|
198
|
-
*/
|
|
199
178
|
executeFieldsSerially(parentType, sourceValue, path, groupedFieldSet, positionContext) {
|
|
200
179
|
return (0, promiseReduce_ts_1.promiseReduce)(groupedFieldSet, (results, [responseName, fieldDetailsList]) => {
|
|
201
180
|
if (this.aborted) {
|
|
@@ -216,10 +195,6 @@ class Executor {
|
|
|
216
195
|
return results;
|
|
217
196
|
}, Object.create(null));
|
|
218
197
|
}
|
|
219
|
-
/**
|
|
220
|
-
* Implements the "Executing selection sets" section of the spec
|
|
221
|
-
* for fields that may be executed in parallel.
|
|
222
|
-
*/
|
|
223
198
|
executeFields(parentType, sourceValue, path, groupedFieldSet, positionContext) {
|
|
224
199
|
const results = Object.create(null);
|
|
225
200
|
let containsPromise = false;
|
|
@@ -241,21 +216,11 @@ class Executor {
|
|
|
241
216
|
}
|
|
242
217
|
throw error;
|
|
243
218
|
}
|
|
244
|
-
// If there are no promises, we can just return the object and any incrementalDataRecords
|
|
245
219
|
if (!containsPromise) {
|
|
246
220
|
return results;
|
|
247
221
|
}
|
|
248
|
-
// Otherwise, results is a map from field name to the result of resolving that
|
|
249
|
-
// field, which is possibly a promise. Return a promise that will return this
|
|
250
|
-
// same map, but with any promises replaced with the values they resolved to.
|
|
251
222
|
return (0, promiseForObject_ts_1.promiseForObject)(results, this.promiseAll);
|
|
252
223
|
}
|
|
253
|
-
/**
|
|
254
|
-
* Implements the "Executing fields" section of the spec
|
|
255
|
-
* In particular, this function figures out the value that the field returns by
|
|
256
|
-
* calling its resolve function, then calls completeValue to complete promises,
|
|
257
|
-
* coercing scalars, or execute the sub-selection-set for objects.
|
|
258
|
-
*/
|
|
259
224
|
executeField(parentType, source, fieldDetailsList, path, positionContext) {
|
|
260
225
|
const validatedExecutionArgs = this.validatedExecutionArgs;
|
|
261
226
|
const { schema, contextValue, variableValues, hideSuggestions } = validatedExecutionArgs;
|
|
@@ -269,23 +234,14 @@ class Executor {
|
|
|
269
234
|
const returnType = fieldDef.type;
|
|
270
235
|
const resolveFn = fieldDef.resolve ?? validatedExecutionArgs.fieldResolver;
|
|
271
236
|
const info = (0, buildResolveInfo_ts_1.buildResolveInfo)(validatedExecutionArgs, fieldDef, toNodes(fieldDetailsList), parentType, path, this.getAbortSignal, this.getAsyncHelpers);
|
|
272
|
-
// Get the resolve function, regardless of if its result is normal or abrupt (error).
|
|
273
237
|
try {
|
|
274
|
-
// Build a JS object of arguments from the field.arguments AST, using the
|
|
275
|
-
// variables scope to fulfill any variable references.
|
|
276
|
-
// TODO: find a way to memoize, in case this field is within a List type.
|
|
277
238
|
const args = (0, values_ts_1.getArgumentValues)(fieldDef, firstNode, variableValues, firstFieldDetails.fragmentVariableValues, hideSuggestions);
|
|
278
|
-
// The resolve function's optional third argument is a context value that
|
|
279
|
-
// is provided to every resolve function within an execution. It is commonly
|
|
280
|
-
// used to represent an authenticated user, or request-specific caches.
|
|
281
239
|
const result = resolveFn(source, args, contextValue, info);
|
|
282
240
|
if ((0, isPromise_ts_1.isPromiseLike)(result)) {
|
|
283
241
|
return this.completePromisedValue(returnType, fieldDetailsList, info, path, result, positionContext);
|
|
284
242
|
}
|
|
285
243
|
const completed = this.completeValue(returnType, fieldDetailsList, info, path, result, positionContext);
|
|
286
244
|
if ((0, isPromise_ts_1.isPromise)(completed)) {
|
|
287
|
-
// Note: we don't rely on a `catch` method, but we do expect "thenable"
|
|
288
|
-
// to take a second callback for the error case.
|
|
289
245
|
return completed.then(undefined, (rawError) => {
|
|
290
246
|
this.handleFieldError(rawError, returnType, fieldDetailsList, path);
|
|
291
247
|
return null;
|
|
@@ -300,44 +256,16 @@ class Executor {
|
|
|
300
256
|
}
|
|
301
257
|
handleFieldError(rawError, returnType, fieldDetailsList, path) {
|
|
302
258
|
const error = (0, locatedError_ts_1.locatedError)(rawError, toNodes(fieldDetailsList), (0, Path_ts_1.pathToArray)(path));
|
|
303
|
-
// If the field type is non-nullable, then it is resolved without any
|
|
304
|
-
// protection from errors, however it still properly locates the error.
|
|
305
259
|
if (this.validatedExecutionArgs.errorPropagation &&
|
|
306
260
|
(0, definition_ts_1.isNonNullType)(returnType)) {
|
|
307
261
|
throw error;
|
|
308
262
|
}
|
|
309
|
-
// Otherwise, error protection is applied, logging the error and resolving
|
|
310
|
-
// a null value for this field if one is encountered.
|
|
311
263
|
this.collectedErrors.add(error, path);
|
|
312
264
|
}
|
|
313
|
-
/**
|
|
314
|
-
* Implements the instructions for completeValue as defined in the
|
|
315
|
-
* "Value Completion" section of the spec.
|
|
316
|
-
*
|
|
317
|
-
* If the field type is Non-Null, then this recursively completes the value
|
|
318
|
-
* for the inner type. It throws a field error if that completion returns null,
|
|
319
|
-
* as per the "Nullability" section of the spec.
|
|
320
|
-
*
|
|
321
|
-
* If the field type is a List, then this recursively completes the value
|
|
322
|
-
* for the inner type on each item in the list.
|
|
323
|
-
*
|
|
324
|
-
* If the field type is a Scalar or Enum, ensures the completed value is a legal
|
|
325
|
-
* value of the type by calling the `coerceOutputValue` method of GraphQL type
|
|
326
|
-
* definition.
|
|
327
|
-
*
|
|
328
|
-
* If the field is an abstract type, determine the runtime type of the value
|
|
329
|
-
* and then complete based on that type
|
|
330
|
-
*
|
|
331
|
-
* Otherwise, the field type expects a sub-selection set, and will complete the
|
|
332
|
-
* value by executing all sub-selections.
|
|
333
|
-
*/
|
|
334
265
|
completeValue(returnType, fieldDetailsList, info, path, result, positionContext) {
|
|
335
|
-
// If result is an Error, throw a located error.
|
|
336
266
|
if (result instanceof Error) {
|
|
337
267
|
throw result;
|
|
338
268
|
}
|
|
339
|
-
// If field type is NonNull, complete for inner type, and throw field error
|
|
340
|
-
// if result is null.
|
|
341
269
|
if ((0, definition_ts_1.isNonNullType)(returnType)) {
|
|
342
270
|
const completed = this.completeValue(returnType.ofType, fieldDetailsList, info, path, result, positionContext);
|
|
343
271
|
if (completed === null) {
|
|
@@ -345,30 +273,21 @@ class Executor {
|
|
|
345
273
|
}
|
|
346
274
|
return completed;
|
|
347
275
|
}
|
|
348
|
-
// If result value is null or undefined then return null.
|
|
349
276
|
if (result == null) {
|
|
350
277
|
return null;
|
|
351
278
|
}
|
|
352
|
-
// If field type is List, complete each item in the list with the inner type
|
|
353
279
|
if ((0, definition_ts_1.isListType)(returnType)) {
|
|
354
280
|
return this.completeListValue(returnType, fieldDetailsList, info, path, result, positionContext);
|
|
355
281
|
}
|
|
356
|
-
// If field type is a leaf type, Scalar or Enum, coerce to a valid value,
|
|
357
|
-
// returning null if coercion is not possible.
|
|
358
282
|
if ((0, definition_ts_1.isLeafType)(returnType)) {
|
|
359
283
|
return this.completeLeafValue(returnType, result);
|
|
360
284
|
}
|
|
361
|
-
// If field type is an abstract type, Interface or Union, determine the
|
|
362
|
-
// runtime Object type and complete for that type.
|
|
363
285
|
if ((0, definition_ts_1.isAbstractType)(returnType)) {
|
|
364
286
|
return this.completeAbstractValue(returnType, fieldDetailsList, info, path, result, positionContext);
|
|
365
287
|
}
|
|
366
|
-
// If field type is Object, execute and complete all sub-selections.
|
|
367
288
|
if ((0, definition_ts_1.isObjectType)(returnType)) {
|
|
368
289
|
return this.completeObjectValue(returnType, fieldDetailsList, info, path, result, positionContext);
|
|
369
|
-
/* node:coverage ignore next 7 */
|
|
370
290
|
}
|
|
371
|
-
// Not reachable, all possible output types have been considered.
|
|
372
291
|
(0, invariant_ts_1.invariant)(false, 'Cannot complete value of unexpected output type: ' + (0, inspect_ts_1.inspect)(returnType));
|
|
373
292
|
}
|
|
374
293
|
async completePromisedValue(returnType, fieldDetailsList, info, path, result, positionContext) {
|
|
@@ -388,12 +307,7 @@ class Executor {
|
|
|
388
307
|
return null;
|
|
389
308
|
}
|
|
390
309
|
}
|
|
391
|
-
/**
|
|
392
|
-
* Complete a async iterator value by completing the result and calling
|
|
393
|
-
* recursively until all the results are completed.
|
|
394
|
-
*/
|
|
395
310
|
async completeAsyncIterableValue(itemType, fieldDetailsList, info, path, items, positionContext) {
|
|
396
|
-
// do not stream inner lists of multi-dimensional lists
|
|
397
311
|
const streamUsage = typeof path.key === 'number'
|
|
398
312
|
? undefined
|
|
399
313
|
: (0, exports.getStreamUsage)(this.validatedExecutionArgs, fieldDetailsList);
|
|
@@ -410,7 +324,6 @@ class Executor {
|
|
|
410
324
|
}
|
|
411
325
|
const itemPath = (0, Path_ts_1.addPath)(path, index, undefined);
|
|
412
326
|
try {
|
|
413
|
-
// eslint-disable-next-line no-await-in-loop
|
|
414
327
|
iteration = await asyncIterator.next();
|
|
415
328
|
}
|
|
416
329
|
catch (rawError) {
|
|
@@ -433,7 +346,6 @@ class Executor {
|
|
|
433
346
|
}
|
|
434
347
|
throw error;
|
|
435
348
|
}
|
|
436
|
-
// Throwing on completion outside of the loop may allow engines to better optimize
|
|
437
349
|
if (this.aborted) {
|
|
438
350
|
if (!iteration?.done) {
|
|
439
351
|
this.sharedExecutionContext.asyncWorkTracker.add((0, returnIteratorCatchingErrors_ts_1.returnIteratorCatchingErrors)(asyncIterator));
|
|
@@ -444,14 +356,9 @@ class Executor {
|
|
|
444
356
|
? this.promiseAll(completedResults)
|
|
445
357
|
: completedResults;
|
|
446
358
|
}
|
|
447
|
-
/* node:coverage ignore next 12 */
|
|
448
359
|
handleStream(_index, _path, _iterator, _streamUsage, _info, _itemType) {
|
|
449
360
|
return false;
|
|
450
361
|
}
|
|
451
|
-
/**
|
|
452
|
-
* Complete a list value by completing each item in the list with the
|
|
453
|
-
* inner type
|
|
454
|
-
*/
|
|
455
362
|
completeListValue(returnType, fieldDetailsList, info, path, result, positionContext) {
|
|
456
363
|
const itemType = returnType.ofType;
|
|
457
364
|
if ((0, isAsyncIterable_ts_1.isAsyncIterable)(result)) {
|
|
@@ -463,12 +370,9 @@ class Executor {
|
|
|
463
370
|
return this.completeIterableValue(itemType, fieldDetailsList, info, path, result, positionContext);
|
|
464
371
|
}
|
|
465
372
|
completeIterableValue(itemType, fieldDetailsList, info, path, items, positionContext) {
|
|
466
|
-
// do not stream inner lists of multi-dimensional lists
|
|
467
373
|
const streamUsage = typeof path.key === 'number'
|
|
468
374
|
? undefined
|
|
469
375
|
: (0, exports.getStreamUsage)(this.validatedExecutionArgs, fieldDetailsList);
|
|
470
|
-
// This is specified as a simple map, however we're optimizing the path
|
|
471
|
-
// where the list contains no Promises by avoiding creating another Promise.
|
|
472
376
|
let containsPromise = false;
|
|
473
377
|
const completedResults = [];
|
|
474
378
|
let index = 0;
|
|
@@ -484,8 +388,6 @@ class Executor {
|
|
|
484
388
|
break;
|
|
485
389
|
}
|
|
486
390
|
const item = iteration.value;
|
|
487
|
-
// No need to modify the info object containing the path,
|
|
488
|
-
// since from here on it is not ever accessed by resolver functions.
|
|
489
391
|
const itemPath = (0, Path_ts_1.addPath)(path, index, undefined);
|
|
490
392
|
if (this.completeMaybePromisedListItemValue(item, completedResults, itemType, fieldDetailsList, info, itemPath, positionContext)) {
|
|
491
393
|
containsPromise = true;
|
|
@@ -515,17 +417,10 @@ class Executor {
|
|
|
515
417
|
}
|
|
516
418
|
return false;
|
|
517
419
|
}
|
|
518
|
-
/**
|
|
519
|
-
* Complete a list item value by adding it to the completed results.
|
|
520
|
-
*
|
|
521
|
-
* Returns true if the value is a Promise.
|
|
522
|
-
*/
|
|
523
420
|
completeListItemValue(item, completedResults, itemType, fieldDetailsList, info, itemPath, positionContext) {
|
|
524
421
|
try {
|
|
525
422
|
const completedItem = this.completeValue(itemType, fieldDetailsList, info, itemPath, item, positionContext);
|
|
526
423
|
if ((0, isPromise_ts_1.isPromise)(completedItem)) {
|
|
527
|
-
// Note: we don't rely on a `catch` method, but we do expect "thenable"
|
|
528
|
-
// to take a second callback for the error case.
|
|
529
424
|
completedResults.push(completedItem.then(undefined, (rawError) => {
|
|
530
425
|
this.handleFieldError(rawError, itemType, fieldDetailsList, itemPath);
|
|
531
426
|
return null;
|
|
@@ -557,10 +452,6 @@ class Executor {
|
|
|
557
452
|
return null;
|
|
558
453
|
}
|
|
559
454
|
}
|
|
560
|
-
/**
|
|
561
|
-
* Complete a Scalar or Enum by serializing to a valid value, returning
|
|
562
|
-
* null if serialization is not possible.
|
|
563
|
-
*/
|
|
564
455
|
completeLeafValue(returnType, result) {
|
|
565
456
|
const coerced = returnType.coerceOutputValue(result);
|
|
566
457
|
if (coerced == null) {
|
|
@@ -569,17 +460,13 @@ class Executor {
|
|
|
569
460
|
}
|
|
570
461
|
return coerced;
|
|
571
462
|
}
|
|
572
|
-
/**
|
|
573
|
-
* Complete a value of an abstract type by determining the runtime object type
|
|
574
|
-
* of that value, then complete the value for that type.
|
|
575
|
-
*/
|
|
576
463
|
completeAbstractValue(returnType, fieldDetailsList, info, path, result, positionContext) {
|
|
577
464
|
const validatedExecutionArgs = this.validatedExecutionArgs;
|
|
578
465
|
const { schema, contextValue } = validatedExecutionArgs;
|
|
579
466
|
const resolveTypeFn = returnType.resolveType ?? validatedExecutionArgs.typeResolver;
|
|
580
467
|
const runtimeType = resolveTypeFn(result, contextValue, info, returnType);
|
|
581
468
|
if ((0, isPromise_ts_1.isPromiseLike)(runtimeType)) {
|
|
582
|
-
return
|
|
469
|
+
return runtimeType.then((resolvedRuntimeType) => {
|
|
583
470
|
if (this.aborted) {
|
|
584
471
|
throw new Error('Aborted!');
|
|
585
472
|
}
|
|
@@ -608,17 +495,11 @@ class Executor {
|
|
|
608
495
|
}
|
|
609
496
|
return runtimeType;
|
|
610
497
|
}
|
|
611
|
-
/**
|
|
612
|
-
* Complete an Object value by executing all sub-selections.
|
|
613
|
-
*/
|
|
614
498
|
completeObjectValue(returnType, fieldDetailsList, info, path, result, positionContext) {
|
|
615
|
-
// If there is an isTypeOf predicate function, call it with the
|
|
616
|
-
// current result. If isTypeOf returns false, then raise an error rather
|
|
617
|
-
// than continuing execution.
|
|
618
499
|
if (returnType.isTypeOf) {
|
|
619
500
|
const isTypeOf = returnType.isTypeOf(result, this.validatedExecutionArgs.contextValue, info);
|
|
620
501
|
if ((0, isPromise_ts_1.isPromiseLike)(isTypeOf)) {
|
|
621
|
-
return
|
|
502
|
+
return isTypeOf.then((resolvedIsTypeOf) => {
|
|
622
503
|
if (this.aborted) {
|
|
623
504
|
throw new Error('Aborted!');
|
|
624
505
|
}
|
|
@@ -638,7 +519,6 @@ class Executor {
|
|
|
638
519
|
return new GraphQLError_ts_1.GraphQLError(`Expected value of type "${returnType}" but got: ${(0, inspect_ts_1.inspect)(result)}.`, { nodes: toNodes(fieldDetailsList) });
|
|
639
520
|
}
|
|
640
521
|
collectAndExecuteSubfields(returnType, fieldDetailsList, path, result, positionContext) {
|
|
641
|
-
// Collect sub-fields to execute to complete this value.
|
|
642
522
|
const { groupedFieldSet, newDeferUsages } = (0, exports.collectSubfields)(this.validatedExecutionArgs, returnType, fieldDetailsList);
|
|
643
523
|
return this.executeCollectedSubfields(returnType, result, path, groupedFieldSet, newDeferUsages, positionContext);
|
|
644
524
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Executor.js","sourceRoot":"","sources":["../../src/execution/Executor.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport { isAsyncIterable } from '../jsutils/isAsyncIterable.ts';\nimport { isIterableObject } from '../jsutils/isIterableObject.ts';\nimport { isPromise, isPromiseLike } from '../jsutils/isPromise.ts';\nimport { memoize2 } from '../jsutils/memoize2.ts';\nimport { memoize3 } from '../jsutils/memoize3.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\nimport type { Path } from '../jsutils/Path.ts';\nimport { addPath, pathToArray } from '../jsutils/Path.ts';\nimport { promiseForObject } from '../jsutils/promiseForObject.ts';\nimport type { PromiseOrValue } from '../jsutils/PromiseOrValue.ts';\nimport { promiseReduce } from '../jsutils/promiseReduce.ts';\n\nimport { ensureGraphQLError } from '../error/ensureGraphQLError.ts';\nimport type { GraphQLFormattedError } from '../error/GraphQLError.ts';\nimport { GraphQLError } from '../error/GraphQLError.ts';\nimport { locatedError } from '../error/locatedError.ts';\n\nimport type {\n FieldNode,\n FragmentDefinitionNode,\n OperationDefinitionNode,\n SubscriptionOperationDefinitionNode,\n} from '../language/ast.ts';\nimport { OperationTypeNode } from '../language/ast.ts';\n\nimport type {\n GraphQLAbstractType,\n GraphQLFieldResolver,\n GraphQLLeafType,\n GraphQLList,\n GraphQLObjectType,\n GraphQLOutputType,\n GraphQLResolveInfo,\n GraphQLResolveInfoHelpers,\n GraphQLTypeResolver,\n} from '../type/definition.ts';\nimport {\n isAbstractType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../type/definition.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.ts';\nimport { buildResolveInfo } from './buildResolveInfo.ts';\nimport { withCancellation } from './cancellablePromise.ts';\nimport type {\n DeferUsage,\n FieldDetailsList,\n FragmentDetails,\n GroupedFieldSet,\n} from './collectFields.ts';\nimport {\n collectFields,\n collectSubfields as _collectSubfields,\n} from './collectFields.ts';\nimport { collectIteratorPromises } from './collectIteratorPromises.ts';\nimport type { SharedExecutionContext } from './createSharedExecutionContext.ts';\nimport { createSharedExecutionContext } from './createSharedExecutionContext.ts';\nimport type { StreamUsage } from './getStreamUsage.ts';\nimport { getStreamUsage as _getStreamUsage } from './getStreamUsage.ts';\nimport type { ExecutionHooks } from './hooks.ts';\nimport { runAsyncWorkFinishedHook } from './hooks.ts';\nimport { returnIteratorCatchingErrors } from './returnIteratorCatchingErrors.ts';\nimport type { VariableValues } from './values.ts';\nimport { getArgumentValues } from './values.ts';\n\n/* eslint-disable max-params */\n// This file contains a lot of such errors but we plan to refactor it anyway\n// so just disable it for entire file.\n\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\nexport interface ValidatedExecutionArgs {\n schema: GraphQLSchema;\n // TODO: consider deprecating/removing fragmentDefinitions if/when fragment\n // arguments are officially supported and/or the full fragment details are\n // exposed within GraphQLResolveInfo.\n fragmentDefinitions: ObjMap<FragmentDefinitionNode>;\n fragments: ObjMap<FragmentDetails>;\n rootValue: unknown;\n contextValue: unknown;\n operation: OperationDefinitionNode;\n variableValues: VariableValues;\n fieldResolver: GraphQLFieldResolver<any, any>;\n typeResolver: GraphQLTypeResolver<any, any>;\n subscribeFieldResolver: GraphQLFieldResolver<any, any>;\n hideSuggestions: boolean;\n errorPropagation: boolean;\n externalAbortSignal: AbortSignal | undefined;\n enableEarlyExecution: boolean;\n hooks: ExecutionHooks | undefined;\n}\n\nexport interface ValidatedSubscriptionArgs extends ValidatedExecutionArgs {\n operation: SubscriptionOperationDefinitionNode;\n}\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\nexport const collectSubfields: (\n validatedExecutionArgs: ValidatedExecutionArgs,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n) => ReturnType<typeof _collectSubfields> = memoize3(\n (\n validatedExecutionArgs: ValidatedExecutionArgs,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n ) => {\n const { schema, fragments, variableValues, hideSuggestions } =\n validatedExecutionArgs;\n return _collectSubfields(\n schema,\n fragments,\n variableValues,\n returnType,\n fieldDetailsList,\n hideSuggestions,\n );\n },\n);\n\nexport const getStreamUsage: typeof _getStreamUsage = memoize2(\n (\n validatedExecutionArgs: ValidatedExecutionArgs,\n fieldDetailsList: FieldDetailsList,\n ) => _getStreamUsage(validatedExecutionArgs, fieldDetailsList),\n);\n\n/**\n * @internal\n */\nclass CollectedErrors {\n private _errorPositions: Set<Path | undefined>;\n private _errors: Array<GraphQLError>;\n constructor() {\n this._errorPositions = new Set<Path | undefined>();\n this._errors = [];\n }\n\n get errors(): ReadonlyArray<GraphQLError> {\n return this._errors;\n }\n\n add(error: GraphQLError, path: Path | undefined): void {\n // Do not modify errors list if the execution position for this error or\n // any of its ancestors has already been nulled via error propagation.\n // This check should be unnecessary for implementations able to implement\n // actual cancellation.\n if (this.hasNulledPosition(path)) {\n return;\n }\n this._errorPositions.add(path);\n this._errors.push(error);\n }\n\n hasNulledPosition(startPath: Path | undefined): boolean {\n let path = startPath;\n while (path !== undefined) {\n if (this._errorPositions.has(path)) {\n return true;\n }\n path = path.prev;\n }\n return this._errorPositions.has(undefined);\n }\n}\n\n/**\n * The result of GraphQL execution.\n *\n * - `errors` is included when any errors occurred as a non-empty array.\n * - `data` is the result of a successful execution of the query.\n * - `hasNext` is true if a future payload is expected.\n * - `extensions` is reserved for adding non-standard properties.\n * - `incremental` is a list of the results from defer/stream directives.\n */\nexport interface ExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLError>;\n data?: TData | null;\n extensions?: TExtensions;\n}\n\nexport interface FormattedExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLFormattedError>;\n data?: TData | null;\n extensions?: TExtensions;\n}\n\nconst defaultAbortReason = new Error('This operation was aborted');\n\n/** @internal */\nexport class Executor<\n TPositionContext = undefined, // No position context by default\n TAlternativeInitialResponse = ExecutionResult, // No alternative by default\n> {\n validatedExecutionArgs: ValidatedExecutionArgs;\n aborted: boolean;\n abortReason: unknown;\n sharedExecutionContext: SharedExecutionContext;\n collectedErrors: CollectedErrors;\n abortResultPromise: (() => void) | undefined;\n resolverAbortController: AbortController | undefined;\n getAbortSignal: () => AbortSignal | undefined;\n getAsyncHelpers: () => GraphQLResolveInfoHelpers;\n promiseAll: <T>(\n values: ReadonlyArray<PromiseOrValue<T>>,\n ) => Promise<Array<T>>;\n\n constructor(\n validatedExecutionArgs: ValidatedExecutionArgs,\n sharedExecutionContext?: SharedExecutionContext,\n ) {\n this.validatedExecutionArgs = validatedExecutionArgs;\n this.aborted = false;\n this.abortReason = defaultAbortReason;\n this.collectedErrors = new CollectedErrors();\n\n if (sharedExecutionContext === undefined) {\n this.resolverAbortController = new AbortController();\n this.sharedExecutionContext = createSharedExecutionContext(\n this.resolverAbortController.signal,\n );\n } else {\n this.sharedExecutionContext = sharedExecutionContext;\n }\n const { getAbortSignal, getAsyncHelpers, promiseAll } =\n this.sharedExecutionContext;\n this.getAbortSignal = getAbortSignal;\n this.getAsyncHelpers = getAsyncHelpers;\n this.promiseAll = promiseAll;\n }\n\n executeRootSelectionSet(\n serially?: boolean,\n ): PromiseOrValue<ExecutionResult | TAlternativeInitialResponse> {\n const externalAbortSignal = this.validatedExecutionArgs.externalAbortSignal;\n let removeExternalAbortListener: (() => void) | undefined;\n if (externalAbortSignal) {\n externalAbortSignal.throwIfAborted();\n const onExternalAbort = () => {\n this.abort(externalAbortSignal.reason);\n };\n removeExternalAbortListener = () =>\n externalAbortSignal.removeEventListener('abort', onExternalAbort);\n externalAbortSignal.addEventListener('abort', onExternalAbort);\n }\n\n const maybeRemoveExternalAbortListener = () => {\n removeExternalAbortListener?.();\n };\n\n let result: PromiseOrValue<ObjMap<unknown>>;\n try {\n const {\n schema,\n fragments,\n rootValue,\n operation,\n variableValues,\n hideSuggestions,\n } = this.validatedExecutionArgs;\n\n const { operation: operationType, selectionSet } = operation;\n\n const rootType = schema.getRootType(operationType);\n if (rootType == null) {\n throw new GraphQLError(\n `Schema is not configured to execute ${operationType} operation.`,\n { nodes: operation },\n );\n }\n\n const { groupedFieldSet, newDeferUsages } = collectFields(\n schema,\n fragments,\n variableValues,\n rootType,\n selectionSet,\n hideSuggestions,\n );\n\n result = this.executeCollectedRootFields(\n rootType,\n rootValue,\n groupedFieldSet,\n serially ?? operationType === OperationTypeNode.MUTATION,\n newDeferUsages,\n );\n\n if (isPromise(result)) {\n const promise = result.then(\n (data) => {\n maybeRemoveExternalAbortListener();\n return this.buildResponse(data);\n },\n (error: unknown) => {\n maybeRemoveExternalAbortListener();\n this.collectedErrors.add(ensureGraphQLError(error), undefined);\n return this.buildResponse(null);\n },\n );\n this.sharedExecutionContext.asyncWorkTracker.add(promise);\n const { promise: cancellablePromise, abort: abortResultPromise } =\n withCancellation(promise.then((resolved) => this.finish(resolved)));\n this.abortResultPromise = () => {\n abortResultPromise(this.createAbortedExecutionError(promise));\n };\n if (this.aborted) {\n this.abortResultPromise();\n }\n return cancellablePromise;\n }\n maybeRemoveExternalAbortListener();\n } catch (error) {\n maybeRemoveExternalAbortListener();\n this.collectedErrors.add(ensureGraphQLError(error), undefined);\n return this.finish(this.buildResponse(null));\n }\n return this.finish(this.buildResponse(result));\n }\n\n abort(reason?: unknown): void {\n if (this.aborted) {\n return;\n }\n this.aborted = true;\n if (reason !== undefined) {\n this.abortReason = reason;\n }\n this.abortResultPromise?.();\n this.resolverAbortController?.abort(this.abortReason);\n }\n\n finish<T>(result: T): T {\n if (this.aborted) {\n throw this.createAbortedExecutionError(result);\n }\n this.aborted = true;\n return result;\n }\n\n createAbortedExecutionError<T>(\n result: PromiseOrValue<T>,\n ): AbortedGraphQLExecutionError<T> {\n return new AbortedGraphQLExecutionError(this.abortReason, result);\n }\n\n getFinishSharedExecution(): () => void {\n const resolverAbortController = this.resolverAbortController;\n const asyncWorkFinishedHook =\n this.validatedExecutionArgs.hooks?.asyncWorkFinished;\n if (asyncWorkFinishedHook === undefined) {\n return () => resolverAbortController?.abort();\n }\n\n const validatedExecutionArgs = this.validatedExecutionArgs;\n const sharedExecutionContext = this.sharedExecutionContext;\n return () => {\n resolverAbortController?.abort();\n runAsyncWorkFinishedHook(\n validatedExecutionArgs,\n sharedExecutionContext,\n asyncWorkFinishedHook,\n );\n };\n }\n\n /**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n buildResponse(\n data: ObjMap<unknown> | null,\n ): ExecutionResult | TAlternativeInitialResponse {\n this.getFinishSharedExecution()();\n const errors = this.collectedErrors.errors;\n return errors.length ? { errors, data } : { data };\n }\n\n executeCollectedRootFields(\n rootType: GraphQLObjectType,\n rootValue: unknown,\n originalGroupedFieldSet: GroupedFieldSet,\n serially: boolean,\n _newDeferUsages: ReadonlyArray<DeferUsage>,\n ): PromiseOrValue<ObjMap<unknown>> {\n return this.executeRootGroupedFieldSet(\n rootType,\n rootValue,\n originalGroupedFieldSet,\n serially,\n undefined,\n );\n }\n\n executeRootGroupedFieldSet(\n rootType: GraphQLObjectType,\n rootValue: unknown,\n groupedFieldSet: GroupedFieldSet,\n serially: boolean,\n positionContext?: TPositionContext,\n ): PromiseOrValue<ObjMap<unknown>> {\n return serially\n ? this.executeFieldsSerially(\n rootType,\n rootValue,\n undefined,\n groupedFieldSet,\n positionContext,\n )\n : this.executeFields(\n rootType,\n rootValue,\n undefined,\n groupedFieldSet,\n positionContext,\n );\n }\n\n /**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n executeFieldsSerially(\n parentType: GraphQLObjectType,\n sourceValue: unknown,\n path: Path | undefined,\n groupedFieldSet: GroupedFieldSet,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n return promiseReduce(\n groupedFieldSet,\n (results, [responseName, fieldDetailsList]) => {\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = this.executeField(\n parentType,\n sourceValue,\n fieldDetailsList,\n fieldPath,\n positionContext,\n );\n if (result === undefined) {\n return results;\n }\n if (isPromise(result)) {\n return result.then((resolved) => {\n results[responseName] = resolved;\n return results;\n });\n }\n results[responseName] = result;\n return results;\n },\n Object.create(null),\n );\n }\n\n /**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n executeFields(\n parentType: GraphQLObjectType,\n sourceValue: unknown,\n path: Path | undefined,\n groupedFieldSet: GroupedFieldSet,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n const results = Object.create(null);\n let containsPromise = false;\n\n try {\n for (const [responseName, fieldDetailsList] of groupedFieldSet) {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = this.executeField(\n parentType,\n sourceValue,\n fieldDetailsList,\n fieldPath,\n positionContext,\n );\n\n if (result !== undefined) {\n results[responseName] = result;\n if (isPromise(result)) {\n containsPromise = true;\n }\n }\n }\n } catch (error) {\n if (containsPromise) {\n this.sharedExecutionContext.asyncWorkTracker.addValues(\n Object.values(results),\n );\n }\n throw error;\n }\n\n // If there are no promises, we can just return the object and any incrementalDataRecords\n if (!containsPromise) {\n return results;\n }\n\n // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n return promiseForObject(results, this.promiseAll);\n }\n\n /**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * coercing scalars, or execute the sub-selection-set for objects.\n */\n executeField(\n parentType: GraphQLObjectType,\n source: unknown,\n fieldDetailsList: FieldDetailsList,\n path: Path,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<unknown> {\n const validatedExecutionArgs = this.validatedExecutionArgs;\n const { schema, contextValue, variableValues, hideSuggestions } =\n validatedExecutionArgs;\n const firstFieldDetails = fieldDetailsList[0];\n const firstNode = firstFieldDetails.node;\n const fieldName = firstNode.name.value;\n const fieldDef = schema.getField(parentType, fieldName);\n if (!fieldDef) {\n return;\n }\n\n const returnType = fieldDef.type;\n const resolveFn = fieldDef.resolve ?? validatedExecutionArgs.fieldResolver;\n\n const info = buildResolveInfo(\n validatedExecutionArgs,\n fieldDef,\n toNodes(fieldDetailsList),\n parentType,\n path,\n this.getAbortSignal,\n this.getAsyncHelpers,\n );\n\n // Get the resolve function, regardless of if its result is normal or abrupt (error).\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = getArgumentValues(\n fieldDef,\n firstNode,\n variableValues,\n firstFieldDetails.fragmentVariableValues,\n hideSuggestions,\n );\n\n // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n const result = resolveFn(source, args, contextValue, info);\n\n if (isPromiseLike(result)) {\n return this.completePromisedValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n const completed = this.completeValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, (rawError: unknown) => {\n this.handleFieldError(rawError, returnType, fieldDetailsList, path);\n return null;\n });\n }\n return completed;\n } catch (rawError) {\n this.handleFieldError(rawError, returnType, fieldDetailsList, path);\n return null;\n }\n }\n\n handleFieldError(\n rawError: unknown,\n returnType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n path: Path,\n ): void {\n const error = locatedError(\n rawError,\n toNodes(fieldDetailsList),\n pathToArray(path),\n );\n\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (\n this.validatedExecutionArgs.errorPropagation &&\n isNonNullType(returnType)\n ) {\n throw error;\n }\n\n // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n this.collectedErrors.add(error, path);\n }\n\n /**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `coerceOutputValue` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n completeValue(\n returnType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<unknown> {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n }\n\n // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n if (isNonNullType(returnType)) {\n const completed = this.completeValue(\n returnType.ofType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n if (completed === null) {\n throw new Error(\n `Cannot return null for non-nullable field ${info.parentType}.${info.fieldName}.`,\n );\n }\n return completed;\n }\n\n // If result value is null or undefined then return null.\n if (result == null) {\n return null;\n }\n\n // If field type is List, complete each item in the list with the inner type\n if (isListType(returnType)) {\n return this.completeListValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n // If field type is a leaf type, Scalar or Enum, coerce to a valid value,\n // returning null if coercion is not possible.\n if (isLeafType(returnType)) {\n return this.completeLeafValue(returnType, result);\n }\n\n // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n if (isAbstractType(returnType)) {\n return this.completeAbstractValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n // If field type is Object, execute and complete all sub-selections.\n if (isObjectType(returnType)) {\n return this.completeObjectValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n /* node:coverage ignore next 7 */\n }\n // Not reachable, all possible output types have been considered.\n invariant(\n false,\n 'Cannot complete value of unexpected output type: ' + inspect(returnType),\n );\n }\n\n async completePromisedValue(\n returnType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: PromiseLike<unknown>,\n positionContext: TPositionContext | undefined,\n ): Promise<unknown> {\n try {\n const resolved = await result;\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n let completed = this.completeValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n resolved,\n positionContext,\n );\n\n if (isPromise(completed)) {\n completed = await completed;\n }\n return completed;\n } catch (rawError) {\n this.handleFieldError(rawError, returnType, fieldDetailsList, path);\n return null;\n }\n }\n\n /**\n * Complete a async iterator value by completing the result and calling\n * recursively until all the results are completed.\n */\n async completeAsyncIterableValue(\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n items: AsyncIterable<unknown>,\n positionContext: TPositionContext | undefined,\n ): Promise<ReadonlyArray<unknown>> {\n // do not stream inner lists of multi-dimensional lists\n const streamUsage =\n typeof path.key === 'number'\n ? undefined\n : getStreamUsage(this.validatedExecutionArgs, fieldDetailsList);\n\n let containsPromise = false;\n const completedResults: Array<unknown> = [];\n const asyncIterator = items[Symbol.asyncIterator]();\n let index = 0;\n let iteration;\n try {\n while (true) {\n if (\n streamUsage?.initialCount === index &&\n this.handleStream(\n index,\n path,\n { handle: asyncIterator, isAsync: true },\n streamUsage,\n info,\n itemType,\n )\n ) {\n break;\n }\n const itemPath = addPath(path, index, undefined);\n try {\n // eslint-disable-next-line no-await-in-loop\n iteration = await asyncIterator.next();\n } catch (rawError) {\n throw locatedError(\n rawError,\n toNodes(fieldDetailsList),\n pathToArray(path),\n );\n }\n if (this.aborted || iteration.done) {\n break;\n }\n const item = iteration.value;\n if (\n this.completeMaybePromisedListItemValue(\n item,\n completedResults,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n )\n ) {\n containsPromise = true;\n }\n index++;\n }\n } catch (error) {\n this.sharedExecutionContext.asyncWorkTracker.add(\n returnIteratorCatchingErrors(asyncIterator),\n );\n if (containsPromise) {\n this.sharedExecutionContext.asyncWorkTracker.addValues(\n completedResults,\n );\n }\n throw error;\n }\n\n // Throwing on completion outside of the loop may allow engines to better optimize\n if (this.aborted) {\n if (!iteration?.done) {\n this.sharedExecutionContext.asyncWorkTracker.add(\n returnIteratorCatchingErrors(asyncIterator),\n );\n }\n throw new Error('Aborted!');\n }\n\n return containsPromise\n ? this.promiseAll(completedResults)\n : completedResults;\n }\n\n /* node:coverage ignore next 12 */\n handleStream(\n _index: number,\n _path: Path,\n _iterator:\n | { handle: Iterator<unknown>; isAsync?: never }\n | { handle: AsyncIterator<unknown>; isAsync: true },\n _streamUsage: StreamUsage,\n _info: GraphQLResolveInfo,\n _itemType: GraphQLOutputType,\n ): boolean {\n return false;\n }\n\n /**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n completeListValue(\n returnType: GraphQLList<GraphQLOutputType>,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ReadonlyArray<unknown>> {\n const itemType = returnType.ofType;\n\n if (isAsyncIterable(result)) {\n return this.completeAsyncIterableValue(\n itemType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n if (!isIterableObject(result)) {\n throw new GraphQLError(\n `Expected Iterable, but did not find one for field \"${info.parentType}.${info.fieldName}\".`,\n );\n }\n\n return this.completeIterableValue(\n itemType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n completeIterableValue(\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n items: Iterable<unknown>,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ReadonlyArray<unknown>> {\n // do not stream inner lists of multi-dimensional lists\n const streamUsage =\n typeof path.key === 'number'\n ? undefined\n : getStreamUsage(this.validatedExecutionArgs, fieldDetailsList);\n\n // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n let containsPromise = false;\n const completedResults: Array<unknown> = [];\n let index = 0;\n const iterator = items[Symbol.iterator]();\n try {\n while (true) {\n if (\n streamUsage?.initialCount === index &&\n this.handleStream(\n index,\n path,\n { handle: iterator },\n streamUsage,\n info,\n itemType,\n )\n ) {\n break;\n }\n const iteration = iterator.next();\n if (iteration.done) {\n break;\n }\n\n const item = iteration.value;\n\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = addPath(path, index, undefined);\n\n if (\n this.completeMaybePromisedListItemValue(\n item,\n completedResults,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n )\n ) {\n containsPromise = true;\n }\n\n index++;\n }\n } catch (error) {\n const asyncWorkTracker = this.sharedExecutionContext.asyncWorkTracker;\n if (containsPromise) {\n asyncWorkTracker.addValues(completedResults);\n }\n asyncWorkTracker.addValues(collectIteratorPromises(iterator));\n throw error;\n }\n\n return containsPromise\n ? this.promiseAll(completedResults)\n : completedResults;\n }\n\n completeMaybePromisedListItemValue(\n item: unknown,\n completedResults: Array<unknown>,\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n itemPath: Path,\n positionContext: TPositionContext | undefined,\n ): boolean {\n if (isPromiseLike(item)) {\n completedResults.push(\n this.completePromisedListItemValue(\n item,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n ),\n );\n return true;\n } else if (\n this.completeListItemValue(\n item,\n completedResults,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n )\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Complete a list item value by adding it to the completed results.\n *\n * Returns true if the value is a Promise.\n */\n completeListItemValue(\n item: unknown,\n completedResults: Array<unknown>,\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n itemPath: Path,\n positionContext: TPositionContext | undefined,\n ): boolean {\n try {\n const completedItem = this.completeValue(\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n item,\n positionContext,\n );\n\n if (isPromise(completedItem)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n completedResults.push(\n completedItem.then(undefined, (rawError: unknown) => {\n this.handleFieldError(\n rawError,\n itemType,\n fieldDetailsList,\n itemPath,\n );\n return null;\n }),\n );\n return true;\n }\n\n completedResults.push(completedItem);\n } catch (rawError) {\n this.handleFieldError(rawError, itemType, fieldDetailsList, itemPath);\n completedResults.push(null);\n }\n return false;\n }\n\n async completePromisedListItemValue(\n item: PromiseLike<unknown>,\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n itemPath: Path,\n positionContext: TPositionContext | undefined,\n ): Promise<unknown> {\n try {\n const resolved = await item;\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n let completed = this.completeValue(\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n resolved,\n positionContext,\n );\n if (isPromise(completed)) {\n completed = await completed;\n }\n return completed;\n } catch (rawError) {\n this.handleFieldError(rawError, itemType, fieldDetailsList, itemPath);\n return null;\n }\n }\n\n /**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n completeLeafValue(returnType: GraphQLLeafType, result: unknown): unknown {\n const coerced = returnType.coerceOutputValue(result);\n if (coerced == null) {\n throw new Error(\n `Expected \\`${inspect(returnType)}.coerceOutputValue(${inspect(result)})\\` to ` +\n `return non-nullable value, returned: ${inspect(coerced)}`,\n );\n }\n return coerced;\n }\n\n /**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n completeAbstractValue(\n returnType: GraphQLAbstractType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n const validatedExecutionArgs = this.validatedExecutionArgs;\n const { schema, contextValue } = validatedExecutionArgs;\n const resolveTypeFn =\n returnType.resolveType ?? validatedExecutionArgs.typeResolver;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (isPromiseLike(runtimeType)) {\n return Promise.resolve(runtimeType).then((resolvedRuntimeType) => {\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n return this.completeObjectValue(\n this.ensureValidRuntimeType(\n resolvedRuntimeType,\n schema,\n returnType,\n fieldDetailsList,\n info,\n result,\n ),\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n });\n }\n\n return this.completeObjectValue(\n this.ensureValidRuntimeType(\n runtimeType,\n schema,\n returnType,\n fieldDetailsList,\n info,\n result,\n ),\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n ensureValidRuntimeType(\n runtimeTypeName: unknown,\n schema: GraphQLSchema,\n returnType: GraphQLAbstractType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n result: unknown,\n ): GraphQLObjectType {\n if (runtimeTypeName == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" must resolve to an Object type at runtime for field \"${info.parentType}.${info.fieldName}\". Either the \"${returnType}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n if (typeof runtimeTypeName !== 'string') {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" must resolve to an Object type at runtime for field \"${info.parentType}.${info.fieldName}\" with ` +\n `value ${inspect(result)}, received \"${inspect(\n runtimeTypeName,\n )}\", which is not a valid Object type name.`,\n );\n }\n\n const runtimeType = schema.getType(runtimeTypeName);\n if (runtimeType == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n if (!isObjectType(runtimeType)) {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n if (!schema.isSubType(returnType, runtimeType)) {\n throw new GraphQLError(\n `Runtime Object type \"${runtimeType}\" is not a possible type for \"${returnType}\".`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n return runtimeType;\n }\n\n /**\n * Complete an Object value by executing all sub-selections.\n */\n completeObjectValue(\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(\n result,\n this.validatedExecutionArgs.contextValue,\n info,\n );\n\n if (isPromiseLike(isTypeOf)) {\n return Promise.resolve(isTypeOf).then((resolvedIsTypeOf) => {\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n if (!resolvedIsTypeOf) {\n throw this.invalidReturnTypeError(\n returnType,\n result,\n fieldDetailsList,\n );\n }\n return this.collectAndExecuteSubfields(\n returnType,\n fieldDetailsList,\n path,\n result,\n positionContext,\n );\n });\n }\n\n if (!isTypeOf) {\n throw this.invalidReturnTypeError(returnType, result, fieldDetailsList);\n }\n }\n\n return this.collectAndExecuteSubfields(\n returnType,\n fieldDetailsList,\n path,\n result,\n positionContext,\n );\n }\n\n invalidReturnTypeError(\n returnType: GraphQLObjectType,\n result: unknown,\n fieldDetailsList: FieldDetailsList,\n ): GraphQLError {\n return new GraphQLError(\n `Expected value of type \"${returnType}\" but got: ${inspect(result)}.`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n collectAndExecuteSubfields(\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n // Collect sub-fields to execute to complete this value.\n const { groupedFieldSet, newDeferUsages } = collectSubfields(\n this.validatedExecutionArgs,\n returnType,\n fieldDetailsList,\n );\n\n return this.executeCollectedSubfields(\n returnType,\n result,\n path,\n groupedFieldSet,\n newDeferUsages,\n positionContext,\n );\n }\n\n executeCollectedSubfields(\n parentType: GraphQLObjectType,\n sourceValue: unknown,\n path: Path | undefined,\n originalGroupedFieldSet: GroupedFieldSet,\n _newDeferUsages: ReadonlyArray<DeferUsage>,\n _positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n return this.executeFields(\n parentType,\n sourceValue,\n path,\n originalGroupedFieldSet,\n undefined,\n );\n }\n}\n\nfunction toNodes(fieldDetailsList: FieldDetailsList): ReadonlyArray<FieldNode> {\n return fieldDetailsList.map((fieldDetails) => fieldDetails.node);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Executor.js","sourceRoot":"","sources":["../../src/execution/Executor.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Execution */\n\nimport { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport { isAsyncIterable } from '../jsutils/isAsyncIterable.ts';\nimport { isIterableObject } from '../jsutils/isIterableObject.ts';\nimport { isPromise, isPromiseLike } from '../jsutils/isPromise.ts';\nimport { memoize2 } from '../jsutils/memoize2.ts';\nimport { memoize3 } from '../jsutils/memoize3.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\nimport type { Path } from '../jsutils/Path.ts';\nimport { addPath, pathToArray } from '../jsutils/Path.ts';\nimport { promiseForObject } from '../jsutils/promiseForObject.ts';\nimport type { PromiseOrValue } from '../jsutils/PromiseOrValue.ts';\nimport { promiseReduce } from '../jsutils/promiseReduce.ts';\n\nimport { ensureGraphQLError } from '../error/ensureGraphQLError.ts';\nimport type { GraphQLFormattedError } from '../error/GraphQLError.ts';\nimport { GraphQLError } from '../error/GraphQLError.ts';\nimport { locatedError } from '../error/locatedError.ts';\n\nimport type { FieldNode } from '../language/ast.ts';\nimport { OperationTypeNode } from '../language/ast.ts';\n\nimport type {\n GraphQLAbstractType,\n GraphQLLeafType,\n GraphQLList,\n GraphQLObjectType,\n GraphQLOutputType,\n GraphQLResolveInfo,\n GraphQLResolveInfoHelpers,\n} from '../type/definition.ts';\nimport {\n isAbstractType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../type/definition.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { AbortedGraphQLExecutionError } from './AbortedGraphQLExecutionError.ts';\nimport { buildResolveInfo } from './buildResolveInfo.ts';\nimport { withCancellation } from './cancellablePromise.ts';\nimport type {\n DeferUsage,\n FieldDetailsList,\n GroupedFieldSet,\n} from './collectFields.ts';\nimport {\n collectFields,\n collectSubfields as _collectSubfields,\n} from './collectFields.ts';\nimport { collectIteratorPromises } from './collectIteratorPromises.ts';\nimport type { SharedExecutionContext } from './createSharedExecutionContext.ts';\nimport { createSharedExecutionContext } from './createSharedExecutionContext.ts';\nimport type { ValidatedExecutionArgs } from './ExecutionArgs.ts';\nimport type { StreamUsage } from './getStreamUsage.ts';\nimport { getStreamUsage as _getStreamUsage } from './getStreamUsage.ts';\nimport { runAsyncWorkFinishedHook } from './hooks.ts';\nimport { returnIteratorCatchingErrors } from './returnIteratorCatchingErrors.ts';\nimport { getArgumentValues } from './values.ts';\n\n/* eslint-disable max-params */\n// This file contains a lot of such errors but we plan to refactor it anyway\n// so just disable it for entire file.\n\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n *\n * @internal\n */\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n *\n * @internal\n */\nexport const collectSubfields: (\n validatedExecutionArgs: ValidatedExecutionArgs,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n) => ReturnType<typeof _collectSubfields> = memoize3(\n (\n validatedExecutionArgs: ValidatedExecutionArgs,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n ) => {\n const { schema, fragments, variableValues, hideSuggestions } =\n validatedExecutionArgs;\n return _collectSubfields(\n schema,\n fragments,\n variableValues,\n returnType,\n fieldDetailsList,\n hideSuggestions,\n );\n },\n);\n\n/** @internal */\nexport const getStreamUsage: typeof _getStreamUsage = memoize2(\n (\n validatedExecutionArgs: ValidatedExecutionArgs,\n fieldDetailsList: FieldDetailsList,\n ) => _getStreamUsage(validatedExecutionArgs, fieldDetailsList),\n);\n\nclass CollectedErrors {\n private _errorPositions: Set<Path | undefined>;\n private _errors: Array<GraphQLError>;\n constructor() {\n this._errorPositions = new Set<Path | undefined>();\n this._errors = [];\n }\n\n get errors(): ReadonlyArray<GraphQLError> {\n return this._errors;\n }\n\n add(error: GraphQLError, path: Path | undefined): void {\n // Do not modify errors list if the execution position for this error or\n // any of its ancestors has already been nulled via error propagation.\n // This check should be unnecessary for implementations able to implement\n // actual cancellation.\n if (this.hasNulledPosition(path)) {\n return;\n }\n this._errorPositions.add(path);\n this._errors.push(error);\n }\n\n hasNulledPosition(startPath: Path | undefined): boolean {\n let path = startPath;\n while (path !== undefined) {\n if (this._errorPositions.has(path)) {\n return true;\n }\n path = path.prev;\n }\n return this._errorPositions.has(undefined);\n }\n}\n\n/**\n * Represents the response produced by executing a GraphQL operation.\n * @typeParam TData - Shape of the execution data payload.\n * @typeParam TExtensions - Shape of the extensions payload.\n */\nexport interface ExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n /** Errors raised while parsing, validating, or executing the operation. */\n errors?: ReadonlyArray<GraphQLError>;\n /** Data returned by execution, or null when execution could not produce data. */\n data?: TData | null;\n /** Additional non-standard metadata included in the execution result. */\n extensions?: TExtensions;\n}\n\n/**\n * A JSON-serializable GraphQL execution result.\n * @typeParam TData - Shape of the formatted data payload.\n * @typeParam TExtensions - Shape of the formatted extensions payload.\n */\nexport interface FormattedExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n /** Errors raised while parsing, validating, or executing the operation. */\n errors?: ReadonlyArray<GraphQLFormattedError>;\n /** Data returned by execution, or null when execution could not produce data. */\n data?: TData | null;\n /** Additional non-standard metadata included in the formatted result. */\n extensions?: TExtensions;\n}\n\nconst defaultAbortReason = new Error('This operation was aborted');\n\n/** @internal */\nexport class Executor<\n TPositionContext = undefined, // No position context by default\n TAlternativeInitialResponse = ExecutionResult, // No alternative by default\n> {\n validatedExecutionArgs: ValidatedExecutionArgs;\n aborted: boolean;\n abortReason: unknown;\n sharedExecutionContext: SharedExecutionContext;\n collectedErrors: CollectedErrors;\n abortResultPromise: (() => void) | undefined;\n resolverAbortController: AbortController | undefined;\n getAbortSignal: () => AbortSignal | undefined;\n getAsyncHelpers: () => GraphQLResolveInfoHelpers;\n promiseAll: <T>(\n values: ReadonlyArray<PromiseOrValue<T>>,\n ) => Promise<Array<T>>;\n\n constructor(\n validatedExecutionArgs: ValidatedExecutionArgs,\n sharedExecutionContext?: SharedExecutionContext,\n ) {\n this.validatedExecutionArgs = validatedExecutionArgs;\n this.aborted = false;\n this.abortReason = defaultAbortReason;\n this.collectedErrors = new CollectedErrors();\n\n if (sharedExecutionContext === undefined) {\n this.resolverAbortController = new AbortController();\n this.sharedExecutionContext = createSharedExecutionContext(\n this.resolverAbortController.signal,\n );\n } else {\n this.sharedExecutionContext = sharedExecutionContext;\n }\n const { getAbortSignal, getAsyncHelpers, promiseAll } =\n this.sharedExecutionContext;\n this.getAbortSignal = getAbortSignal;\n this.getAsyncHelpers = getAsyncHelpers;\n this.promiseAll = promiseAll;\n }\n\n executeRootSelectionSet(\n serially?: boolean,\n ): PromiseOrValue<ExecutionResult | TAlternativeInitialResponse> {\n const externalAbortSignal = this.validatedExecutionArgs.externalAbortSignal;\n let removeExternalAbortListener: (() => void) | undefined;\n if (externalAbortSignal) {\n externalAbortSignal.throwIfAborted();\n const onExternalAbort = () => {\n this.abort(externalAbortSignal.reason);\n };\n removeExternalAbortListener = () =>\n externalAbortSignal.removeEventListener('abort', onExternalAbort);\n externalAbortSignal.addEventListener('abort', onExternalAbort);\n }\n\n const maybeRemoveExternalAbortListener = () => {\n removeExternalAbortListener?.();\n };\n\n let result: PromiseOrValue<ObjMap<unknown>>;\n try {\n const {\n schema,\n fragments,\n rootValue,\n operation,\n variableValues,\n hideSuggestions,\n } = this.validatedExecutionArgs;\n\n const { operation: operationType, selectionSet } = operation;\n\n const rootType = schema.getRootType(operationType);\n if (rootType == null) {\n throw new GraphQLError(\n `Schema is not configured to execute ${operationType} operation.`,\n { nodes: operation },\n );\n }\n\n const { groupedFieldSet, newDeferUsages } = collectFields(\n schema,\n fragments,\n variableValues,\n rootType,\n selectionSet,\n hideSuggestions,\n );\n\n result = this.executeCollectedRootFields(\n rootType,\n rootValue,\n groupedFieldSet,\n serially ?? operationType === OperationTypeNode.MUTATION,\n newDeferUsages,\n );\n\n if (isPromise(result)) {\n const promise = result.then(\n (data) => {\n maybeRemoveExternalAbortListener();\n return this.buildResponse(data);\n },\n (error: unknown) => {\n maybeRemoveExternalAbortListener();\n this.collectedErrors.add(ensureGraphQLError(error), undefined);\n return this.buildResponse(null);\n },\n );\n this.sharedExecutionContext.asyncWorkTracker.add(promise);\n const { promise: cancellablePromise, abort: abortResultPromise } =\n withCancellation(promise.then((resolved) => this.finish(resolved)));\n this.abortResultPromise = () => {\n abortResultPromise(this.createAbortedExecutionError(promise));\n };\n if (this.aborted) {\n this.abortResultPromise();\n }\n return cancellablePromise;\n }\n maybeRemoveExternalAbortListener();\n } catch (error) {\n maybeRemoveExternalAbortListener();\n this.collectedErrors.add(ensureGraphQLError(error), undefined);\n return this.finish(this.buildResponse(null));\n }\n return this.finish(this.buildResponse(result));\n }\n\n abort(reason?: unknown): void {\n if (this.aborted) {\n return;\n }\n this.aborted = true;\n if (reason !== undefined) {\n this.abortReason = reason;\n }\n this.abortResultPromise?.();\n this.resolverAbortController?.abort(this.abortReason);\n }\n\n finish<T>(result: T): T {\n if (this.aborted) {\n throw this.createAbortedExecutionError(result);\n }\n this.aborted = true;\n return result;\n }\n\n createAbortedExecutionError<T>(\n result: PromiseOrValue<T>,\n ): AbortedGraphQLExecutionError<T> {\n return new AbortedGraphQLExecutionError(this.abortReason, result);\n }\n\n getFinishSharedExecution(): () => void {\n const resolverAbortController = this.resolverAbortController;\n const asyncWorkFinishedHook =\n this.validatedExecutionArgs.hooks?.asyncWorkFinished;\n if (asyncWorkFinishedHook === undefined) {\n return () => resolverAbortController?.abort();\n }\n\n const validatedExecutionArgs = this.validatedExecutionArgs;\n const sharedExecutionContext = this.sharedExecutionContext;\n return () => {\n resolverAbortController?.abort();\n runAsyncWorkFinishedHook(\n validatedExecutionArgs,\n sharedExecutionContext,\n asyncWorkFinishedHook,\n );\n };\n }\n\n /**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n *\n * @internal\n */\n buildResponse(\n data: ObjMap<unknown> | null,\n ): ExecutionResult | TAlternativeInitialResponse {\n this.getFinishSharedExecution()();\n const errors = this.collectedErrors.errors;\n return errors.length ? { errors, data } : { data };\n }\n\n executeCollectedRootFields(\n rootType: GraphQLObjectType,\n rootValue: unknown,\n originalGroupedFieldSet: GroupedFieldSet,\n serially: boolean,\n _newDeferUsages: ReadonlyArray<DeferUsage>,\n ): PromiseOrValue<ObjMap<unknown>> {\n return this.executeRootGroupedFieldSet(\n rootType,\n rootValue,\n originalGroupedFieldSet,\n serially,\n undefined,\n );\n }\n\n executeRootGroupedFieldSet(\n rootType: GraphQLObjectType,\n rootValue: unknown,\n groupedFieldSet: GroupedFieldSet,\n serially: boolean,\n positionContext?: TPositionContext,\n ): PromiseOrValue<ObjMap<unknown>> {\n return serially\n ? this.executeFieldsSerially(\n rootType,\n rootValue,\n undefined,\n groupedFieldSet,\n positionContext,\n )\n : this.executeFields(\n rootType,\n rootValue,\n undefined,\n groupedFieldSet,\n positionContext,\n );\n }\n\n /**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n *\n * @internal\n */\n executeFieldsSerially(\n parentType: GraphQLObjectType,\n sourceValue: unknown,\n path: Path | undefined,\n groupedFieldSet: GroupedFieldSet,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n return promiseReduce(\n groupedFieldSet,\n (results, [responseName, fieldDetailsList]) => {\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = this.executeField(\n parentType,\n sourceValue,\n fieldDetailsList,\n fieldPath,\n positionContext,\n );\n if (result === undefined) {\n return results;\n }\n if (isPromise(result)) {\n return result.then((resolved) => {\n results[responseName] = resolved;\n return results;\n });\n }\n results[responseName] = result;\n return results;\n },\n Object.create(null),\n );\n }\n\n /**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n *\n * @internal\n */\n executeFields(\n parentType: GraphQLObjectType,\n sourceValue: unknown,\n path: Path | undefined,\n groupedFieldSet: GroupedFieldSet,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n const results = Object.create(null);\n let containsPromise = false;\n\n try {\n for (const [responseName, fieldDetailsList] of groupedFieldSet) {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = this.executeField(\n parentType,\n sourceValue,\n fieldDetailsList,\n fieldPath,\n positionContext,\n );\n\n if (result !== undefined) {\n results[responseName] = result;\n if (isPromise(result)) {\n containsPromise = true;\n }\n }\n }\n } catch (error) {\n if (containsPromise) {\n this.sharedExecutionContext.asyncWorkTracker.addValues(\n Object.values(results),\n );\n }\n throw error;\n }\n\n // If there are no promises, we can just return the object and any incrementalDataRecords\n if (!containsPromise) {\n return results;\n }\n\n // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n return promiseForObject(results, this.promiseAll);\n }\n\n /**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * coercing scalars, or execute the sub-selection-set for objects.\n *\n * @internal\n */\n executeField(\n parentType: GraphQLObjectType,\n source: unknown,\n fieldDetailsList: FieldDetailsList,\n path: Path,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<unknown> {\n const validatedExecutionArgs = this.validatedExecutionArgs;\n const { schema, contextValue, variableValues, hideSuggestions } =\n validatedExecutionArgs;\n const firstFieldDetails = fieldDetailsList[0];\n const firstNode = firstFieldDetails.node;\n const fieldName = firstNode.name.value;\n const fieldDef = schema.getField(parentType, fieldName);\n if (!fieldDef) {\n return;\n }\n\n const returnType = fieldDef.type;\n const resolveFn = fieldDef.resolve ?? validatedExecutionArgs.fieldResolver;\n\n const info = buildResolveInfo(\n validatedExecutionArgs,\n fieldDef,\n toNodes(fieldDetailsList),\n parentType,\n path,\n this.getAbortSignal,\n this.getAsyncHelpers,\n );\n\n // Get the resolve function, regardless of if its result is normal or abrupt (error).\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = getArgumentValues(\n fieldDef,\n firstNode,\n variableValues,\n firstFieldDetails.fragmentVariableValues,\n hideSuggestions,\n );\n\n // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n const result = resolveFn(source, args, contextValue, info);\n\n if (isPromiseLike(result)) {\n return this.completePromisedValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n const completed = this.completeValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, (rawError: unknown) => {\n this.handleFieldError(rawError, returnType, fieldDetailsList, path);\n return null;\n });\n }\n return completed;\n } catch (rawError) {\n this.handleFieldError(rawError, returnType, fieldDetailsList, path);\n return null;\n }\n }\n\n handleFieldError(\n rawError: unknown,\n returnType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n path: Path,\n ): void {\n const error = locatedError(\n rawError,\n toNodes(fieldDetailsList),\n pathToArray(path),\n );\n\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (\n this.validatedExecutionArgs.errorPropagation &&\n isNonNullType(returnType)\n ) {\n throw error;\n }\n\n // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n this.collectedErrors.add(error, path);\n }\n\n /**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `coerceOutputValue` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n *\n * @internal\n */\n completeValue(\n returnType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<unknown> {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n }\n\n // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n if (isNonNullType(returnType)) {\n const completed = this.completeValue(\n returnType.ofType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n if (completed === null) {\n throw new Error(\n `Cannot return null for non-nullable field ${info.parentType}.${info.fieldName}.`,\n );\n }\n return completed;\n }\n\n // If result value is null or undefined then return null.\n if (result == null) {\n return null;\n }\n\n // If field type is List, complete each item in the list with the inner type\n if (isListType(returnType)) {\n return this.completeListValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n // If field type is a leaf type, Scalar or Enum, coerce to a valid value,\n // returning null if coercion is not possible.\n if (isLeafType(returnType)) {\n return this.completeLeafValue(returnType, result);\n }\n\n // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n if (isAbstractType(returnType)) {\n return this.completeAbstractValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n // If field type is Object, execute and complete all sub-selections.\n if (isObjectType(returnType)) {\n return this.completeObjectValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n /* node:coverage ignore next 7 */\n }\n // Not reachable, all possible output types have been considered.\n invariant(\n false,\n 'Cannot complete value of unexpected output type: ' + inspect(returnType),\n );\n }\n\n async completePromisedValue(\n returnType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: PromiseLike<unknown>,\n positionContext: TPositionContext | undefined,\n ): Promise<unknown> {\n try {\n const resolved = await result;\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n let completed = this.completeValue(\n returnType,\n fieldDetailsList,\n info,\n path,\n resolved,\n positionContext,\n );\n\n if (isPromise(completed)) {\n completed = await completed;\n }\n return completed;\n } catch (rawError) {\n this.handleFieldError(rawError, returnType, fieldDetailsList, path);\n return null;\n }\n }\n\n /**\n * Complete a async iterator value by completing the result and calling\n * recursively until all the results are completed.\n *\n * @internal\n */\n async completeAsyncIterableValue(\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n items: AsyncIterable<unknown>,\n positionContext: TPositionContext | undefined,\n ): Promise<ReadonlyArray<unknown>> {\n // do not stream inner lists of multi-dimensional lists\n const streamUsage =\n typeof path.key === 'number'\n ? undefined\n : getStreamUsage(this.validatedExecutionArgs, fieldDetailsList);\n\n let containsPromise = false;\n const completedResults: Array<unknown> = [];\n const asyncIterator = items[Symbol.asyncIterator]();\n let index = 0;\n let iteration;\n try {\n while (true) {\n if (\n streamUsage?.initialCount === index &&\n this.handleStream(\n index,\n path,\n { handle: asyncIterator, isAsync: true },\n streamUsage,\n info,\n itemType,\n )\n ) {\n break;\n }\n const itemPath = addPath(path, index, undefined);\n try {\n // eslint-disable-next-line no-await-in-loop\n iteration = await asyncIterator.next();\n } catch (rawError) {\n throw locatedError(\n rawError,\n toNodes(fieldDetailsList),\n pathToArray(path),\n );\n }\n if (this.aborted || iteration.done) {\n break;\n }\n const item = iteration.value;\n if (\n this.completeMaybePromisedListItemValue(\n item,\n completedResults,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n )\n ) {\n containsPromise = true;\n }\n index++;\n }\n } catch (error) {\n this.sharedExecutionContext.asyncWorkTracker.add(\n returnIteratorCatchingErrors(asyncIterator),\n );\n if (containsPromise) {\n this.sharedExecutionContext.asyncWorkTracker.addValues(\n completedResults,\n );\n }\n throw error;\n }\n\n // Throwing on completion outside of the loop may allow engines to better optimize\n if (this.aborted) {\n if (!iteration?.done) {\n this.sharedExecutionContext.asyncWorkTracker.add(\n returnIteratorCatchingErrors(asyncIterator),\n );\n }\n throw new Error('Aborted!');\n }\n\n return containsPromise\n ? this.promiseAll(completedResults)\n : completedResults;\n }\n\n /* node:coverage ignore next 12 */\n handleStream(\n _index: number,\n _path: Path,\n _iterator:\n | { handle: Iterator<unknown>; isAsync?: never }\n | { handle: AsyncIterator<unknown>; isAsync: true },\n _streamUsage: StreamUsage,\n _info: GraphQLResolveInfo,\n _itemType: GraphQLOutputType,\n ): boolean {\n return false;\n }\n\n /**\n * Complete a list value by completing each item in the list with the\n * inner type\n *\n * @internal\n */\n completeListValue(\n returnType: GraphQLList<GraphQLOutputType>,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ReadonlyArray<unknown>> {\n const itemType = returnType.ofType;\n\n if (isAsyncIterable(result)) {\n return this.completeAsyncIterableValue(\n itemType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n if (!isIterableObject(result)) {\n throw new GraphQLError(\n `Expected Iterable, but did not find one for field \"${info.parentType}.${info.fieldName}\".`,\n );\n }\n\n return this.completeIterableValue(\n itemType,\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n completeIterableValue(\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n items: Iterable<unknown>,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ReadonlyArray<unknown>> {\n // do not stream inner lists of multi-dimensional lists\n const streamUsage =\n typeof path.key === 'number'\n ? undefined\n : getStreamUsage(this.validatedExecutionArgs, fieldDetailsList);\n\n // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n let containsPromise = false;\n const completedResults: Array<unknown> = [];\n let index = 0;\n const iterator = items[Symbol.iterator]();\n try {\n while (true) {\n if (\n streamUsage?.initialCount === index &&\n this.handleStream(\n index,\n path,\n { handle: iterator },\n streamUsage,\n info,\n itemType,\n )\n ) {\n break;\n }\n const iteration = iterator.next();\n if (iteration.done) {\n break;\n }\n\n const item = iteration.value;\n\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = addPath(path, index, undefined);\n\n if (\n this.completeMaybePromisedListItemValue(\n item,\n completedResults,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n )\n ) {\n containsPromise = true;\n }\n\n index++;\n }\n } catch (error) {\n const asyncWorkTracker = this.sharedExecutionContext.asyncWorkTracker;\n if (containsPromise) {\n asyncWorkTracker.addValues(completedResults);\n }\n asyncWorkTracker.addValues(collectIteratorPromises(iterator));\n throw error;\n }\n\n return containsPromise\n ? this.promiseAll(completedResults)\n : completedResults;\n }\n\n completeMaybePromisedListItemValue(\n item: unknown,\n completedResults: Array<unknown>,\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n itemPath: Path,\n positionContext: TPositionContext | undefined,\n ): boolean {\n if (isPromiseLike(item)) {\n completedResults.push(\n this.completePromisedListItemValue(\n item,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n ),\n );\n return true;\n } else if (\n this.completeListItemValue(\n item,\n completedResults,\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n positionContext,\n )\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Complete a list item value by adding it to the completed results.\n *\n * Returns true if the value is a Promise.\n *\n * @internal\n */\n completeListItemValue(\n item: unknown,\n completedResults: Array<unknown>,\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n itemPath: Path,\n positionContext: TPositionContext | undefined,\n ): boolean {\n try {\n const completedItem = this.completeValue(\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n item,\n positionContext,\n );\n\n if (isPromise(completedItem)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n completedResults.push(\n completedItem.then(undefined, (rawError: unknown) => {\n this.handleFieldError(\n rawError,\n itemType,\n fieldDetailsList,\n itemPath,\n );\n return null;\n }),\n );\n return true;\n }\n\n completedResults.push(completedItem);\n } catch (rawError) {\n this.handleFieldError(rawError, itemType, fieldDetailsList, itemPath);\n completedResults.push(null);\n }\n return false;\n }\n\n async completePromisedListItemValue(\n item: PromiseLike<unknown>,\n itemType: GraphQLOutputType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n itemPath: Path,\n positionContext: TPositionContext | undefined,\n ): Promise<unknown> {\n try {\n const resolved = await item;\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n let completed = this.completeValue(\n itemType,\n fieldDetailsList,\n info,\n itemPath,\n resolved,\n positionContext,\n );\n if (isPromise(completed)) {\n completed = await completed;\n }\n return completed;\n } catch (rawError) {\n this.handleFieldError(rawError, itemType, fieldDetailsList, itemPath);\n return null;\n }\n }\n\n /**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n *\n * @internal\n */\n completeLeafValue(returnType: GraphQLLeafType, result: unknown): unknown {\n const coerced = returnType.coerceOutputValue(result);\n if (coerced == null) {\n throw new Error(\n `Expected \\`${inspect(returnType)}.coerceOutputValue(${inspect(result)})\\` to ` +\n `return non-nullable value, returned: ${inspect(coerced)}`,\n );\n }\n return coerced;\n }\n\n /**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n *\n * @internal\n */\n completeAbstractValue(\n returnType: GraphQLAbstractType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n const validatedExecutionArgs = this.validatedExecutionArgs;\n const { schema, contextValue } = validatedExecutionArgs;\n const resolveTypeFn =\n returnType.resolveType ?? validatedExecutionArgs.typeResolver;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (isPromiseLike(runtimeType)) {\n return runtimeType.then((resolvedRuntimeType) => {\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n return this.completeObjectValue(\n this.ensureValidRuntimeType(\n resolvedRuntimeType,\n schema,\n returnType,\n fieldDetailsList,\n info,\n result,\n ),\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n });\n }\n\n return this.completeObjectValue(\n this.ensureValidRuntimeType(\n runtimeType,\n schema,\n returnType,\n fieldDetailsList,\n info,\n result,\n ),\n fieldDetailsList,\n info,\n path,\n result,\n positionContext,\n );\n }\n\n ensureValidRuntimeType(\n runtimeTypeName: unknown,\n schema: GraphQLSchema,\n returnType: GraphQLAbstractType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n result: unknown,\n ): GraphQLObjectType {\n if (runtimeTypeName == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" must resolve to an Object type at runtime for field \"${info.parentType}.${info.fieldName}\". Either the \"${returnType}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n if (typeof runtimeTypeName !== 'string') {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" must resolve to an Object type at runtime for field \"${info.parentType}.${info.fieldName}\" with ` +\n `value ${inspect(result)}, received \"${inspect(\n runtimeTypeName,\n )}\", which is not a valid Object type name.`,\n );\n }\n\n const runtimeType = schema.getType(runtimeTypeName);\n if (runtimeType == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n if (!isObjectType(runtimeType)) {\n throw new GraphQLError(\n `Abstract type \"${returnType}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n if (!schema.isSubType(returnType, runtimeType)) {\n throw new GraphQLError(\n `Runtime Object type \"${runtimeType}\" is not a possible type for \"${returnType}\".`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n return runtimeType;\n }\n\n /**\n * Complete an Object value by executing all sub-selections.\n *\n * @internal\n */\n completeObjectValue(\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n info: GraphQLResolveInfo,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(\n result,\n this.validatedExecutionArgs.contextValue,\n info,\n );\n\n if (isPromiseLike(isTypeOf)) {\n return isTypeOf.then((resolvedIsTypeOf) => {\n if (this.aborted) {\n throw new Error('Aborted!');\n }\n if (!resolvedIsTypeOf) {\n throw this.invalidReturnTypeError(\n returnType,\n result,\n fieldDetailsList,\n );\n }\n return this.collectAndExecuteSubfields(\n returnType,\n fieldDetailsList,\n path,\n result,\n positionContext,\n );\n });\n }\n\n if (!isTypeOf) {\n throw this.invalidReturnTypeError(returnType, result, fieldDetailsList);\n }\n }\n\n return this.collectAndExecuteSubfields(\n returnType,\n fieldDetailsList,\n path,\n result,\n positionContext,\n );\n }\n\n invalidReturnTypeError(\n returnType: GraphQLObjectType,\n result: unknown,\n fieldDetailsList: FieldDetailsList,\n ): GraphQLError {\n return new GraphQLError(\n `Expected value of type \"${returnType}\" but got: ${inspect(result)}.`,\n { nodes: toNodes(fieldDetailsList) },\n );\n }\n\n collectAndExecuteSubfields(\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n path: Path,\n result: unknown,\n positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n // Collect sub-fields to execute to complete this value.\n const { groupedFieldSet, newDeferUsages } = collectSubfields(\n this.validatedExecutionArgs,\n returnType,\n fieldDetailsList,\n );\n\n return this.executeCollectedSubfields(\n returnType,\n result,\n path,\n groupedFieldSet,\n newDeferUsages,\n positionContext,\n );\n }\n\n executeCollectedSubfields(\n parentType: GraphQLObjectType,\n sourceValue: unknown,\n path: Path | undefined,\n originalGroupedFieldSet: GroupedFieldSet,\n _newDeferUsages: ReadonlyArray<DeferUsage>,\n _positionContext: TPositionContext | undefined,\n ): PromiseOrValue<ObjMap<unknown>> {\n return this.executeFields(\n parentType,\n sourceValue,\n path,\n originalGroupedFieldSet,\n undefined,\n );\n }\n}\n\nfunction toNodes(fieldDetailsList: FieldDetailsList): ReadonlyArray<FieldNode> {\n return fieldDetailsList.map((fieldDetails) => fieldDetails.node);\n}\n"]}
|