Interfaces.d.cts 14 KB

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