UNPKG

14.9 kBTypeScriptView Raw
1import { GraphQLSchema, GraphQLField, GraphQLInputType, GraphQLNamedType, GraphQLResolveInfo, GraphQLScalarType, DocumentNode, FieldNode, GraphQLEnumValue, GraphQLEnumType, GraphQLUnionType, GraphQLArgument, GraphQLInputField, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLObjectType, GraphQLDirective, FragmentDefinitionNode, SelectionNode, GraphQLOutputType, FieldDefinitionNode, GraphQLFieldConfig, GraphQLInputFieldConfig, GraphQLArgumentConfig, GraphQLEnumValueConfig, GraphQLScalarSerializer, GraphQLScalarValueParser, GraphQLScalarLiteralParser, ScalarTypeDefinitionNode, ScalarTypeExtensionNode, EnumTypeDefinitionNode, EnumTypeExtensionNode, GraphQLIsTypeOfFn, ObjectTypeDefinitionNode, ObjectTypeExtensionNode, InterfaceTypeExtensionNode, InterfaceTypeDefinitionNode, GraphQLTypeResolver, UnionTypeDefinitionNode, UnionTypeExtensionNode, InputObjectTypeExtensionNode, InputObjectTypeDefinitionNode, GraphQLType, Source, DefinitionNode, OperationTypeNode, GraphQLError } from 'graphql';
2/**
3 * The result of GraphQL execution.
4 *
5 * - `errors` is included when any errors occurred as a non-empty array.
6 * - `data` is the result of a successful execution of the query.
7 * - `hasNext` is true if a future payload is expected.
8 * - `extensions` is reserved for adding non-standard properties.
9 */
10export interface ExecutionResult<TData = any, TExtensions = any> {
11 incremental?: ReadonlyArray<ExecutionResult<TData, TExtensions>>;
12 data?: TData | null;
13 errors?: ReadonlyArray<GraphQLError>;
14 hasNext?: boolean;
15 extensions?: TExtensions;
16 label?: string;
17 path?: ReadonlyArray<string | number>;
18 items?: TData | null;
19}
20export interface ExecutionRequest<TArgs extends Record<string, any> = Record<string, any>, TContext = any, TRootValue = any, TExtensions = Record<string, any>> {
21 document: DocumentNode;
22 variables?: TArgs;
23 operationType?: OperationTypeNode;
24 operationName?: string;
25 extensions?: TExtensions;
26 rootValue?: TRootValue;
27 context?: TContext;
28 info?: GraphQLResolveInfo;
29}
30export interface GraphQLParseOptions {
31 noLocation?: boolean;
32 allowLegacySDLEmptyFields?: boolean;
33 allowLegacySDLImplementsInterfaces?: boolean;
34 experimentalFragmentVariables?: boolean;
35 /**
36 * Set to `true` in order to convert all GraphQL comments (marked with # sign) to descriptions (""")
37 * GraphQL has built-in support for transforming descriptions to comments (with `print`), but not while
38 * parsing. Turning the flag on will support the other way as well (`parse`)
39 */
40 commentDescriptions?: boolean;
41}
42export declare type ValidatorBehavior = 'error' | 'warn' | 'ignore';
43/**
44 * Options for validating resolvers
45 */
46export interface IResolverValidationOptions {
47 /**
48 * Enable to require a resolver to be defined for any field that has
49 * arguments. Defaults to `ignore`.
50 */
51 requireResolversForArgs?: ValidatorBehavior;
52 /**
53 * Enable to require a resolver to be defined for any field which has
54 * a return type that isn't a scalar. Defaults to `ignore`.
55 */
56 requireResolversForNonScalar?: ValidatorBehavior;
57 /**
58 * Enable to require a resolver for be defined for all fields defined
59 * in the schema. Defaults to `ignore`.
60 */
61 requireResolversForAllFields?: ValidatorBehavior;
62 /**
63 * Enable to require a `resolveType()` for Interface and Union types.
64 * Defaults to `ignore`.
65 */
66 requireResolversForResolveType?: ValidatorBehavior;
67 /**
68 * Enable to require all defined resolvers to match fields that
69 * actually exist in the schema. Defaults to `error` to catch common errors.
70 */
71 requireResolversToMatchSchema?: ValidatorBehavior;
72}
73/**
74 * Configuration object for adding resolvers to a schema
75 */
76export interface IAddResolversToSchemaOptions {
77 /**
78 * The schema to which to add resolvers
79 */
80 schema: GraphQLSchema;
81 /**
82 * Object describing the field resolvers to add to the provided schema
83 */
84 resolvers: IResolvers;
85 /**
86 * Override the default field resolver provided by `graphql-js`
87 */
88 defaultFieldResolver?: IFieldResolver<any, any>;
89 /**
90 * Additional options for validating the provided resolvers
91 */
92 resolverValidationOptions?: IResolverValidationOptions;
93 /**
94 * GraphQL object types that implement interfaces will inherit any missing
95 * resolvers from their interface types defined in the `resolvers` object
96 */
97 inheritResolversFromInterfaces?: boolean;
98 /**
99 * Set to `true` to modify the existing schema instead of creating a new one
100 */
101 updateResolversInPlace?: boolean;
102}
103export declare type IScalarTypeResolver = GraphQLScalarType & {
104 __name?: string;
105 __description?: string;
106 __serialize?: GraphQLScalarSerializer<any>;
107 __parseValue?: GraphQLScalarValueParser<any>;
108 __parseLiteral?: GraphQLScalarLiteralParser<any>;
109 __extensions?: Record<string, any>;
110 __astNode?: ScalarTypeDefinitionNode;
111 __extensionASTNodes?: Array<ScalarTypeExtensionNode>;
112};
113export declare type IEnumTypeResolver = Record<string, any> & {
114 __name?: string;
115 __description?: string;
116 __extensions?: Record<string, any>;
117 __astNode?: EnumTypeDefinitionNode;
118 __extensionASTNodes?: Array<EnumTypeExtensionNode>;
119};
120export interface IFieldResolverOptions<TSource = any, TContext = any, TArgs = any> {
121 name?: string;
122 description?: string;
123 type?: GraphQLOutputType;
124 args?: Array<GraphQLArgument>;
125 resolve?: IFieldResolver<TSource, TContext, TArgs>;
126 subscribe?: IFieldResolver<TSource, TContext, TArgs>;
127 isDeprecated?: boolean;
128 deprecationReason?: string;
129 extensions?: Record<string, any>;
130 astNode?: FieldDefinitionNode;
131}
132export declare type FieldNodeMapper = (fieldNode: FieldNode, fragments: Record<string, FragmentDefinitionNode>, transformationContext: Record<string, any>) => SelectionNode | Array<SelectionNode>;
133export declare type FieldNodeMappers = Record<string, Record<string, FieldNodeMapper>>;
134export declare type InputFieldFilter = (typeName?: string, fieldName?: string, inputFieldConfig?: GraphQLInputFieldConfig) => boolean;
135export declare type FieldFilter = (typeName: string, fieldName: string, fieldConfig: GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig) => boolean;
136export declare type ObjectFieldFilter = (typeName: string, fieldName: string, fieldConfig: GraphQLFieldConfig<any, any>) => boolean;
137export declare type RootFieldFilter = (operation: 'Query' | 'Mutation' | 'Subscription', rootFieldName: string, fieldConfig: GraphQLFieldConfig<any, any>) => boolean;
138export declare type TypeFilter = (typeName: string, type: GraphQLType) => boolean;
139export declare type ArgumentFilter = (typeName?: string, fieldName?: string, argName?: string, argConfig?: GraphQLArgumentConfig) => boolean;
140export declare type RenameTypesOptions = {
141 renameBuiltins: boolean;
142 renameScalars: boolean;
143};
144export declare type IFieldResolver<TSource, TContext, TArgs = Record<string, any>, TReturn = any> = (source: TSource, args: TArgs, context: TContext, info: GraphQLResolveInfo) => TReturn;
145export declare type TypeSource = string | Source | DocumentNode | GraphQLSchema | DefinitionNode | Array<TypeSource> | (() => TypeSource);
146export declare type IObjectTypeResolver<TSource = any, TContext = any, TArgs = any> = {
147 [key: string]: IFieldResolver<TSource, TContext, TArgs> | IFieldResolverOptions<TSource, TContext>;
148} & {
149 __name?: string;
150 __description?: string;
151 __isTypeOf?: GraphQLIsTypeOfFn<TSource, TContext>;
152 __extensions?: Record<string, any>;
153 __astNode?: ObjectTypeDefinitionNode;
154 __extensionASTNodes?: ObjectTypeExtensionNode;
155};
156export declare type IInterfaceTypeResolver<TSource = any, TContext = any, TArgs = any> = {
157 [key: string]: IFieldResolver<TSource, TContext, TArgs> | IFieldResolverOptions<TSource, TContext>;
158} & {
159 __name?: string;
160 __description?: string;
161 __resolveType?: GraphQLTypeResolver<any, any>;
162 __extensions?: Record<string, any>;
163 __astNode?: InterfaceTypeDefinitionNode;
164 __extensionASTNodes?: Array<InterfaceTypeExtensionNode>;
165};
166export declare type IUnionTypeResolver = {
167 __name?: string;
168 __description?: string;
169 __resolveType?: GraphQLTypeResolver<any, any>;
170 __extensions?: Record<string, any>;
171 __astNode?: UnionTypeDefinitionNode;
172 __extensionASTNodes?: Array<UnionTypeExtensionNode>;
173};
174export declare type IInputObjectTypeResolver = {
175 __name?: string;
176 __description?: string;
177 __extensions?: Record<string, any>;
178 __astNode?: InputObjectTypeDefinitionNode;
179 __extensionASTNodes?: Array<InputObjectTypeExtensionNode>;
180};
181export declare type ISchemaLevelResolver<TSource, TContext, TArgs = Record<string, any>, TReturn = any> = IFieldResolver<TSource, TContext, TArgs, TReturn>;
182export declare type IResolvers<TSource = any, TContext = any, TArgs = Record<string, any>, TReturn = any> = Record<string, ISchemaLevelResolver<TSource, TContext, TArgs, TReturn> | IObjectTypeResolver<TSource, TContext> | IInterfaceTypeResolver<TSource, TContext> | IUnionTypeResolver | IScalarTypeResolver | IEnumTypeResolver | IInputObjectTypeResolver>;
183export declare type IFieldIteratorFn = (fieldDef: GraphQLField<any, any>, typeName: string, fieldName: string) => void;
184export declare type IDefaultValueIteratorFn = (type: GraphQLInputType, value: any) => void;
185export declare type NextResolverFn = () => Promise<any>;
186export declare type VisitableSchemaType = GraphQLSchema | GraphQLObjectType | GraphQLInterfaceType | GraphQLInputObjectType | GraphQLNamedType | GraphQLScalarType | GraphQLField<any, any> | GraphQLInputField | GraphQLArgument | GraphQLUnionType | GraphQLEnumType | GraphQLEnumValue;
187export declare enum MapperKind {
188 TYPE = "MapperKind.TYPE",
189 SCALAR_TYPE = "MapperKind.SCALAR_TYPE",
190 ENUM_TYPE = "MapperKind.ENUM_TYPE",
191 COMPOSITE_TYPE = "MapperKind.COMPOSITE_TYPE",
192 OBJECT_TYPE = "MapperKind.OBJECT_TYPE",
193 INPUT_OBJECT_TYPE = "MapperKind.INPUT_OBJECT_TYPE",
194 ABSTRACT_TYPE = "MapperKind.ABSTRACT_TYPE",
195 UNION_TYPE = "MapperKind.UNION_TYPE",
196 INTERFACE_TYPE = "MapperKind.INTERFACE_TYPE",
197 ROOT_OBJECT = "MapperKind.ROOT_OBJECT",
198 QUERY = "MapperKind.QUERY",
199 MUTATION = "MapperKind.MUTATION",
200 SUBSCRIPTION = "MapperKind.SUBSCRIPTION",
201 DIRECTIVE = "MapperKind.DIRECTIVE",
202 FIELD = "MapperKind.FIELD",
203 COMPOSITE_FIELD = "MapperKind.COMPOSITE_FIELD",
204 OBJECT_FIELD = "MapperKind.OBJECT_FIELD",
205 ROOT_FIELD = "MapperKind.ROOT_FIELD",
206 QUERY_ROOT_FIELD = "MapperKind.QUERY_ROOT_FIELD",
207 MUTATION_ROOT_FIELD = "MapperKind.MUTATION_ROOT_FIELD",
208 SUBSCRIPTION_ROOT_FIELD = "MapperKind.SUBSCRIPTION_ROOT_FIELD",
209 INTERFACE_FIELD = "MapperKind.INTERFACE_FIELD",
210 INPUT_OBJECT_FIELD = "MapperKind.INPUT_OBJECT_FIELD",
211 ARGUMENT = "MapperKind.ARGUMENT",
212 ENUM_VALUE = "MapperKind.ENUM_VALUE"
213}
214export interface SchemaMapper {
215 [MapperKind.TYPE]?: NamedTypeMapper;
216 [MapperKind.SCALAR_TYPE]?: ScalarTypeMapper;
217 [MapperKind.ENUM_TYPE]?: EnumTypeMapper;
218 [MapperKind.COMPOSITE_TYPE]?: CompositeTypeMapper;
219 [MapperKind.OBJECT_TYPE]?: ObjectTypeMapper;
220 [MapperKind.INPUT_OBJECT_TYPE]?: InputObjectTypeMapper;
221 [MapperKind.ABSTRACT_TYPE]?: AbstractTypeMapper;
222 [MapperKind.UNION_TYPE]?: UnionTypeMapper;
223 [MapperKind.INTERFACE_TYPE]?: InterfaceTypeMapper;
224 [MapperKind.ROOT_OBJECT]?: ObjectTypeMapper;
225 [MapperKind.QUERY]?: ObjectTypeMapper;
226 [MapperKind.MUTATION]?: ObjectTypeMapper;
227 [MapperKind.SUBSCRIPTION]?: ObjectTypeMapper;
228 [MapperKind.ENUM_VALUE]?: EnumValueMapper;
229 [MapperKind.FIELD]?: GenericFieldMapper<GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig>;
230 [MapperKind.OBJECT_FIELD]?: FieldMapper;
231 [MapperKind.ROOT_FIELD]?: FieldMapper;
232 [MapperKind.QUERY_ROOT_FIELD]?: FieldMapper;
233 [MapperKind.MUTATION_ROOT_FIELD]?: FieldMapper;
234 [MapperKind.SUBSCRIPTION_ROOT_FIELD]?: FieldMapper;
235 [MapperKind.INTERFACE_FIELD]?: FieldMapper;
236 [MapperKind.COMPOSITE_FIELD]?: FieldMapper;
237 [MapperKind.ARGUMENT]?: ArgumentMapper;
238 [MapperKind.INPUT_OBJECT_FIELD]?: InputFieldMapper;
239 [MapperKind.DIRECTIVE]?: DirectiveMapper;
240}
241export declare type SchemaFieldMapperTypes = Array<MapperKind.FIELD | MapperKind.COMPOSITE_FIELD | MapperKind.OBJECT_FIELD | MapperKind.ROOT_FIELD | MapperKind.QUERY_ROOT_FIELD | MapperKind.MUTATION_ROOT_FIELD | MapperKind.SUBSCRIPTION_ROOT_FIELD | MapperKind.INTERFACE_FIELD | MapperKind.INPUT_OBJECT_FIELD>;
242export declare type NamedTypeMapper = (type: GraphQLNamedType, schema: GraphQLSchema) => GraphQLNamedType | null | undefined;
243export declare type ScalarTypeMapper = (type: GraphQLScalarType, schema: GraphQLSchema) => GraphQLScalarType | null | undefined;
244export declare type EnumTypeMapper = (type: GraphQLEnumType, schema: GraphQLSchema) => GraphQLEnumType | null | undefined;
245export declare type EnumValueMapper = (valueConfig: GraphQLEnumValueConfig, typeName: string, schema: GraphQLSchema, externalValue: string) => GraphQLEnumValueConfig | [string, GraphQLEnumValueConfig] | null | undefined;
246export declare type CompositeTypeMapper = (type: GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType, schema: GraphQLSchema) => GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType | null | undefined;
247export declare type ObjectTypeMapper = (type: GraphQLObjectType, schema: GraphQLSchema) => GraphQLObjectType | null | undefined;
248export declare type InputObjectTypeMapper = (type: GraphQLInputObjectType, schema: GraphQLSchema) => GraphQLInputObjectType | null | undefined;
249export declare type AbstractTypeMapper = (type: GraphQLInterfaceType | GraphQLUnionType, schema: GraphQLSchema) => GraphQLInterfaceType | GraphQLUnionType | null | undefined;
250export declare type UnionTypeMapper = (type: GraphQLUnionType, schema: GraphQLSchema) => GraphQLUnionType | null | undefined;
251export declare type InterfaceTypeMapper = (type: GraphQLInterfaceType, schema: GraphQLSchema) => GraphQLInterfaceType | null | undefined;
252export declare type DirectiveMapper = (directive: GraphQLDirective, schema: GraphQLSchema) => GraphQLDirective | null | undefined;
253export declare type GenericFieldMapper<F extends GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig> = (fieldConfig: F, fieldName: string, typeName: string, schema: GraphQLSchema) => F | [string, F] | null | undefined;
254export declare type FieldMapper = GenericFieldMapper<GraphQLFieldConfig<any, any>>;
255export declare type ArgumentMapper = (argumentConfig: GraphQLArgumentConfig, fieldName: string, typeName: string, schema: GraphQLSchema) => GraphQLArgumentConfig | [string, GraphQLArgumentConfig] | null | undefined;
256export declare type InputFieldMapper = GenericFieldMapper<GraphQLInputFieldConfig>;