atlasgql
Version:
A self-composing GraphQL server library using TypeScript, Express and Apollo Server
36 lines (35 loc) • 1.49 kB
TypeScript
/// <reference types="node" />
/// <reference types="cors" />
import { GraphQLRequestContext, GraphQLResponse } from 'apollo-server-core';
import { ApolloServer, CorsOptions } from 'apollo-server-express';
import express from 'express';
import { GraphQLError, GraphQLFormattedError, ValidationContext } from 'graphql';
import { Server } from 'http';
import 'reflect-metadata';
import { SubscriptionServer } from 'subscriptions-transport-ws';
import { Middlewares } from './middlewares';
import { CustomRoute } from './routes/rest';
export interface GraphQlServerOptions {
customContext?: Context;
validationRules?: ((context: ValidationContext) => any)[];
formatResponse?: (response: GraphQLResponse, requestContext: GraphQLRequestContext<Record<string, any>>) => GraphQLResponse | null;
formatError?: (error: GraphQLError) => GraphQLFormattedError;
hooks?: {
preInit?: () => void;
postInit?: () => void;
};
middlewares?: Middlewares;
restRoutes?: CustomRoute[];
resolvers?: any[];
}
export declare type Context = ({ req, res, }: {
req: any;
res: any;
}) => Record<string, unknown>;
declare class GraphQlServer {
static server: ApolloServer;
static subscriptionServer: SubscriptionServer;
static httpServer: Server;
static createServer(path: string, app: express.Express, corsOpts: CorsOptions | boolean, developmentMode: boolean, serverOpts: GraphQlServerOptions): Promise<void>;
}
export { GraphQlServer };