UNPKG

graphql-modules

Version:

Create reusable, maintainable, testable and extendable GraphQL modules

22 lines (21 loc) 1.05 kB
import { GraphQLResolveInfo } from 'graphql'; import { ModuleMetadata } from './../module/metadata'; export declare type Next<T = any> = () => Promise<T>; export declare type Middleware<TContext = MiddlewareContext> = (context: TContext, next: Next) => Promise<any>; export declare function compose<TContext>(middleware: Array<Middleware<TContext>>): (context: TContext, next: Next) => Promise<any>; export interface MiddlewareContext { root: any; args: { [argName: string]: any; }; context: GraphQLModules.ModuleContext; info: GraphQLResolveInfo; } export declare type MiddlewareMap = { [type: string]: { [field: string]: Middleware[]; }; }; export declare function createMiddleware(path: string[], middlewareMap?: MiddlewareMap): (context: MiddlewareContext, next: Next<any>) => Promise<any>; export declare function mergeMiddlewareMaps(app: MiddlewareMap, mod: MiddlewareMap): MiddlewareMap; export declare function validateMiddlewareMap(middlewareMap: MiddlewareMap, metadata: ModuleMetadata): void;