UNPKG

graphile-utils

Version:
31 lines (30 loc) 1.51 kB
import type { Options, Plugin, Context, Build } from "graphile-build"; import type { GraphQLFieldResolver, GraphQLResolveInfo, GraphQLFieldConfig, GraphQLObjectType } from "graphql"; declare type ResolverWrapperFn<TSource = any, TContext = any, TArgs = { [argName: string]: any; }> = (resolve: GraphQLFieldResolver<TSource, TContext, TArgs>, source: TSource, args: TArgs, context: TContext, resolveInfo: GraphQLResolveInfo) => any; interface ResolverWrapperRequirements { childColumns?: Array<{ column: string; alias: string; }>; siblingColumns?: Array<{ column: string; alias: string; }>; } interface ResolverWrapperRule { requires?: ResolverWrapperRequirements; resolve?: ResolverWrapperFn; } interface ResolverWrapperRules { [typeName: string]: { [fieldName: string]: ResolverWrapperRule | ResolverWrapperFn; }; } declare type ResolverWrapperRulesGenerator = (options: Options) => ResolverWrapperRules; declare type ResolverWrapperFilter<T> = (context: Context<GraphQLObjectType>, build: Build, field: GraphQLFieldConfig<any, any>, options: Options) => T | null; declare type ResolverWrapperFilterRule<T> = (match: T) => ResolverWrapperRule | ResolverWrapperFn; export default function makeWrapResolversPlugin(rulesOrGenerator: ResolverWrapperRules | ResolverWrapperRulesGenerator): Plugin; export default function makeWrapResolversPlugin<T>(filter: ResolverWrapperFilter<T>, rule: ResolverWrapperFilterRule<T>): Plugin; export {};