graphile-utils
Version:
Utilities to help with building graphile-build plugins
31 lines (30 loc) • 1.51 kB
TypeScript
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 {};