import { ApolloServer } from 'apollo-server-express'; import { IResolversParameter } from 'graphql-tools'; import { GraphQLSchema } from 'graphql'; import { ApolloConfig } from '../../components/ConfigProvider'; import { PluginDefinition } from 'apollo-server-core'; export interface ForwardedHttpHeaders { [key: string]: string | string[]; } export interface Context { headers: ForwardedHttpHeaders; } export interface SchemaExtensionOptions { remoteSchema: GraphQLSchema; } export interface SchemaExtensionResult { schema?: GraphQLSchema | string; resolvers?: IResolversParameter; } export type SchemaExtension = (opts: SchemaExtensionOptions) => PromiseLike | SchemaExtensionResult; export type SchemaExtensions = SchemaExtension[]; export interface CreateApolloServerOptions { apolloConfig: ApolloConfig; extensions?: SchemaExtensions; plugins?: PluginDefinition[]; } export default function createApolloServer({ apolloConfig, extensions, plugins }: CreateApolloServerOptions): Promise<{ apolloServer: ApolloServer; schema: GraphQLSchema; }>;