Spaces:
Running
Running
| import type { Maybe } from '../jsutils/Maybe'; | |
| import type { ObjMap } from '../jsutils/ObjMap'; | |
| import type { Path } from '../jsutils/Path'; | |
| import type { PromiseOrValue } from '../jsutils/PromiseOrValue'; | |
| import type { GraphQLFormattedError } from '../error/GraphQLError'; | |
| import { GraphQLError } from '../error/GraphQLError'; | |
| import type { | |
| DocumentNode, | |
| FieldNode, | |
| FragmentDefinitionNode, | |
| OperationDefinitionNode, | |
| } from '../language/ast'; | |
| import type { | |
| GraphQLField, | |
| GraphQLFieldResolver, | |
| GraphQLObjectType, | |
| GraphQLResolveInfo, | |
| GraphQLTypeResolver, | |
| } from '../type/definition'; | |
| import type { GraphQLSchema } from '../type/schema'; | |
| /** | |
| * Terminology | |
| * | |
| * "Definitions" are the generic name for top-level statements in the document. | |
| * Examples of this include: | |
| * 1) Operations (such as a query) | |
| * 2) Fragments | |
| * | |
| * "Operations" are a generic name for requests in the document. | |
| * Examples of this include: | |
| * 1) query, | |
| * 2) mutation | |
| * | |
| * "Selections" are the definitions that can appear legally and at | |
| * single level of the query. These include: | |
| * 1) field references e.g `a` | |
| * 2) fragment "spreads" e.g. `...c` | |
| * 3) inline fragment "spreads" e.g. `...on Type { a }` | |
| */ | |
| /** | |
| * 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 ExecutionContext { | |
| schema: GraphQLSchema; | |
| fragments: ObjMap<FragmentDefinitionNode>; | |
| rootValue: unknown; | |
| contextValue: unknown; | |
| operation: OperationDefinitionNode; | |
| variableValues: { | |
| [variable: string]: unknown; | |
| }; | |
| fieldResolver: GraphQLFieldResolver<any, any>; | |
| typeResolver: GraphQLTypeResolver<any, any>; | |
| subscribeFieldResolver: GraphQLFieldResolver<any, any>; | |
| errors: Array<GraphQLError>; | |
| } | |
| /** | |
| * The result of GraphQL execution. | |
| * | |
| * - `errors` is included when any errors occurred as a non-empty array. | |
| * - `data` is the result of a successful execution of the query. | |
| * - `extensions` is reserved for adding non-standard properties. | |
| */ | |
| export interface ExecutionResult< | |
| TData = ObjMap<unknown>, | |
| TExtensions = ObjMap<unknown>, | |
| > { | |
| errors?: ReadonlyArray<GraphQLError>; | |
| data?: TData | null; | |
| extensions?: TExtensions; | |
| } | |
| export interface FormattedExecutionResult< | |
| TData = ObjMap<unknown>, | |
| TExtensions = ObjMap<unknown>, | |
| > { | |
| errors?: ReadonlyArray<GraphQLFormattedError>; | |
| data?: TData | null; | |
| extensions?: TExtensions; | |
| } | |
| export interface ExecutionArgs { | |
| schema: GraphQLSchema; | |
| document: DocumentNode; | |
| rootValue?: unknown; | |
| contextValue?: unknown; | |
| variableValues?: Maybe<{ | |
| readonly [variable: string]: unknown; | |
| }>; | |
| operationName?: Maybe<string>; | |
| fieldResolver?: Maybe<GraphQLFieldResolver<any, any>>; | |
| typeResolver?: Maybe<GraphQLTypeResolver<any, any>>; | |
| subscribeFieldResolver?: Maybe<GraphQLFieldResolver<any, any>>; | |
| } | |
| /** | |
| * Implements the "Executing requests" section of the GraphQL specification. | |
| * | |
| * Returns either a synchronous ExecutionResult (if all encountered resolvers | |
| * are synchronous), or a Promise of an ExecutionResult that will eventually be | |
| * resolved and never rejected. | |
| * | |
| * If the arguments to this function do not result in a legal execution context, | |
| * a GraphQLError will be thrown immediately explaining the invalid input. | |
| */ | |
| export declare function execute( | |
| args: ExecutionArgs, | |
| ): PromiseOrValue<ExecutionResult>; | |
| /** | |
| * Also implements the "Executing requests" section of the GraphQL specification. | |
| * However, it guarantees to complete synchronously (or throw an error) assuming | |
| * that all field resolvers are also synchronous. | |
| */ | |
| export declare function executeSync(args: ExecutionArgs): ExecutionResult; | |
| /** | |
| * Essential assertions before executing to provide developer feedback for | |
| * improper use of the GraphQL library. | |
| * | |
| * @internal | |
| */ | |
| export declare function assertValidExecutionArguments( | |
| schema: GraphQLSchema, | |
| document: DocumentNode, | |
| rawVariableValues: Maybe<{ | |
| readonly [variable: string]: unknown; | |
| }>, | |
| ): void; | |
| /** | |
| * Constructs a ExecutionContext object from the arguments passed to | |
| * execute, which we will pass throughout the other execution methods. | |
| * | |
| * Throws a GraphQLError if a valid execution context cannot be created. | |
| * | |
| * @internal | |
| */ | |
| export declare function buildExecutionContext( | |
| args: ExecutionArgs, | |
| ): ReadonlyArray<GraphQLError> | ExecutionContext; | |
| /** | |
| * @internal | |
| */ | |
| export declare function buildResolveInfo( | |
| exeContext: ExecutionContext, | |
| fieldDef: GraphQLField<unknown, unknown>, | |
| fieldNodes: ReadonlyArray<FieldNode>, | |
| parentType: GraphQLObjectType, | |
| path: Path, | |
| ): GraphQLResolveInfo; | |
| /** | |
| * If a resolveType function is not given, then a default resolve behavior is | |
| * used which attempts two strategies: | |
| * | |
| * First, See if the provided value has a `__typename` field defined, if so, use | |
| * that value as name of the resolved type. | |
| * | |
| * Otherwise, test each possible type for the abstract type by calling | |
| * isTypeOf for the object being coerced, returning the first type that matches. | |
| */ | |
| export declare const defaultTypeResolver: GraphQLTypeResolver<unknown, unknown>; | |
| /** | |
| * If a resolve function is not given, then a default resolve behavior is used | |
| * which takes the property of the source object of the same name as the field | |
| * and returns it as the result, or if it's a function, returns the result | |
| * of calling that function while passing along args and context value. | |
| */ | |
| export declare const defaultFieldResolver: GraphQLFieldResolver< | |
| unknown, | |
| unknown | |
| >; | |
| /** | |
| * This method looks up the field on the given type definition. | |
| * It has special casing for the three introspection fields, | |
| * __schema, __type and __typename. __typename is special because | |
| * it can always be queried as a field, even in situations where no | |
| * other fields are allowed, like on a Union. __schema and __type | |
| * could get automatically added to the query type, but that would | |
| * require mutating type definitions, which would cause issues. | |
| * | |
| * @internal | |
| */ | |
| export declare function getFieldDef( | |
| schema: GraphQLSchema, | |
| parentType: GraphQLObjectType, | |
| fieldNode: FieldNode, | |
| ): Maybe<GraphQLField<unknown, unknown>>; | |