UNPKG

@paulxuca/graphql-yoga

Version:

Fully-featured GraphQL Server with focus on easy setup, performance & great developer experience

108 lines (107 loc) 4.28 kB
/// <reference types="node" /> import { Request, Response } from 'express'; import { CorsOptions } from 'cors'; import { GraphQLSchema, GraphQLFieldResolver, ValidationContext } from 'graphql'; import { IDirectiveResolvers, IResolverValidationOptions, ITypeDefinitions } from 'graphql-tools/dist/Interfaces'; import { SchemaDirectiveVisitor } from 'graphql-tools/dist/schemaVisitor'; import { ExecutionParams } from 'subscriptions-transport-ws'; import { IMocks, IResolvers } from 'graphql-tools'; import { IMiddleware as IFieldMiddleware, IMiddlewareGenerator as IFieldMiddlewareGenerator, FragmentReplacement } from 'graphql-middleware'; export declare type Omit<T, K> = Pick<T, Exclude<keyof T, K>>; export declare type Context = { [key: string]: any; }; export interface ContextParameters { request: Request; response: Response; connection: ExecutionParams; fragmentReplacements: FragmentReplacement[]; } export declare type ContextCallback = (params: ContextParameters) => Context; export interface UploadOptions { maxFieldSize?: number; maxFileSize?: number; maxFiles?: number; } export interface TracingOptions { mode: 'enabled' | 'disabled' | 'http-header'; } export declare type ValidationRules = Array<(context: ValidationContext) => any>; export declare type ValidationRulesExpressCallback = (request: Request, response: Response) => ValidationRules; export interface ApolloServerOptions { tracing?: boolean | TracingOptions; cacheControl?: boolean; formatError?: Function; rootValue?: any; validationRules?: ValidationRules | ValidationRulesExpressCallback; fieldResolver?: GraphQLFieldResolver<any, any>; formatParams?: Function; formatResponse?: Function; debug?: boolean; } export interface HttpsOptions { cert: string | Buffer; key: string | Buffer; } export interface Options extends ApolloServerOptions { port?: number | string; cors?: CorsOptions | false; uploads?: UploadOptions | false; endpoint?: string; subscriptions?: SubscriptionServerOptions | string | false; playground?: string | false; defaultPlaygroundQuery?: string; https?: HttpsOptions; deduplicator?: boolean; getEndpoint?: string | boolean; bodyParserOptions?: BodyParserJSONOptions; } export interface OptionsWithHttps extends Options { https: HttpsOptions; } export declare type OptionsWithoutHttps = Omit<Options, 'https'>; export interface SubscriptionServerOptions { path?: string; onConnect?: Function; onDisconnect?: Function; keepAlive?: number; } export interface Props<TFieldMiddlewareSource = any, TFieldMiddlewareContext = any, TFieldMiddlewareArgs = any> { directiveResolvers?: IDirectiveResolvers<any, any>; schemaDirectives?: { [name: string]: typeof SchemaDirectiveVisitor; }; typeDefs?: ITypeDefinitions; resolvers?: IResolvers | IResolvers[]; resolverValidationOptions?: IResolverValidationOptions; schema?: GraphQLSchema; context?: Context | ContextCallback; mocks?: IMocks | boolean; graphqlJitExecutor?: boolean; middlewares?: (IFieldMiddleware<TFieldMiddlewareSource, TFieldMiddlewareContext, TFieldMiddlewareArgs> | IFieldMiddlewareGenerator<TFieldMiddlewareSource, TFieldMiddlewareContext, TFieldMiddlewareArgs>)[]; } export interface LambdaProps<TFieldMiddlewareSource = any, TFieldMiddlewareContext = any, TFieldMiddlewareArgs = any> { directiveResolvers?: IDirectiveResolvers<any, any>; schemaDirectives?: { [name: string]: typeof SchemaDirectiveVisitor; }; typeDefs?: string; resolvers?: IResolvers; resolverValidationOptions?: IResolverValidationOptions; schema?: GraphQLSchema; context?: Context; options?: LambdaOptions; middlewares?: (IFieldMiddleware<TFieldMiddlewareSource, TFieldMiddlewareContext, TFieldMiddlewareArgs> | IFieldMiddlewareGenerator<TFieldMiddlewareSource, TFieldMiddlewareContext, TFieldMiddlewareArgs>)[]; } export interface LambdaOptions extends ApolloServerOptions { endpoint?: string; deduplicator?: boolean; } export interface BodyParserJSONOptions { limit?: number | string; inflate?: boolean; reviver?: any; strict?: boolean; type?: string; verify?: any; }