UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

108 lines (107 loc) 5.04 kB
/** @category Execution */ import type { Maybe } from "../jsutils/Maybe.mjs"; import type { ObjMap } from "../jsutils/ObjMap.mjs"; import type { DocumentNode, FragmentDefinitionNode, OperationDefinitionNode, SubscriptionOperationDefinitionNode } from "../language/ast.mjs"; import type { GraphQLFieldResolver, GraphQLTypeResolver } from "../type/definition.mjs"; import type { GraphQLSchema } from "../type/schema.mjs"; import type { FragmentDetails } from "./collectFields.mjs"; import type { VariableValues } from "./values.mjs"; /** Arguments accepted by execute and executeSync. */ export interface ExecutionArgs { /** The schema used for validation or execution. */ schema: GraphQLSchema; /** The parsed GraphQL document to execute. */ document: DocumentNode; /** Initial root value passed to the operation. */ rootValue?: unknown; /** Application context value passed to every resolver. */ contextValue?: unknown; /** Runtime variable values keyed by variable name. */ variableValues?: Maybe<{ readonly [variable: string]: unknown; }>; /** Name of the operation to execute when the document contains multiple operations. */ operationName?: Maybe<string>; /** Resolver used when a field does not define its own resolver. */ fieldResolver?: Maybe<GraphQLFieldResolver<any, any>>; /** Resolver used when an abstract type does not define its own resolver. */ typeResolver?: Maybe<GraphQLTypeResolver<any, any>>; /** Resolver used for the root subscription field. */ subscribeFieldResolver?: Maybe<GraphQLFieldResolver<any, any>>; /** Whether suggestion text should be omitted from request errors. */ hideSuggestions?: Maybe<boolean>; /** AbortSignal used to cancel execution. */ abortSignal?: Maybe<AbortSignal>; /** Whether incremental execution may begin eligible work early. */ enableEarlyExecution?: Maybe<boolean>; /** Execution hooks invoked during this operation. */ hooks?: Maybe<ExecutionHooks>; /** Additional execution options. */ options?: { /** * Set the maximum number of errors allowed for coercing (defaults to 50). * * @internal */ maxCoercionErrors?: number; }; } /** * Data that must be available at all points during query execution. * * Namely, schema of the type system that is currently executing, * and the fragments defined in the query document */ export interface ValidatedExecutionArgs { /** Schema used for execution. */ schema: GraphQLSchema; /** Parsed GraphQL document being executed. */ document: DocumentNode; /** Fragment definitions keyed by fragment name. */ fragmentDefinitions: ObjMap<FragmentDefinitionNode>; /** Fragment details keyed by fragment name. */ fragments: ObjMap<FragmentDetails>; /** Root value passed to the operation. */ rootValue: unknown; /** Application context value passed to every resolver. */ contextValue: unknown; /** Operation definition selected for execution. */ operation: OperationDefinitionNode; /** Operation variable values with source metadata and coerced runtime values. */ variableValues: VariableValues; /** Raw variable values provided by the caller before coercion. */ rawVariableValues: Maybe<{ readonly [variable: string]: unknown; }>; /** Resolver used for fields without an explicit resolver. */ fieldResolver: GraphQLFieldResolver<any, any>; /** Resolver used for abstract types without an explicit type resolver. */ typeResolver: GraphQLTypeResolver<any, any>; /** Resolver used for subscription fields without an explicit subscribe resolver. */ subscribeFieldResolver: GraphQLFieldResolver<any, any>; /** Whether suggestion text should be omitted from execution errors. */ hideSuggestions: boolean; /** Whether execution should use error propagation. */ errorPropagation: boolean; /** External signal that may abort execution. */ externalAbortSignal: AbortSignal | undefined; /** Whether incremental execution may begin eligible work early. */ enableEarlyExecution: boolean; /** Execution hooks supplied by the caller. */ hooks: ExecutionHooks | undefined; } /** Validated execution arguments for a subscription operation. */ export interface ValidatedSubscriptionArgs extends ValidatedExecutionArgs { /** Subscription operation definition selected for execution. */ operation: SubscriptionOperationDefinitionNode; } /** Information passed to hooks after asynchronous execution work has finished. */ export interface AsyncWorkFinishedInfo { /** Validated execution arguments for the operation that finished async work. */ validatedExecutionArgs: ValidatedExecutionArgs; } /** Optional hooks invoked during GraphQL execution. */ export interface ExecutionHooks { /** Called after all tracked asynchronous execution work has settled. */ asyncWorkFinished?: (info: AsyncWorkFinishedInfo) => void; }