@cran/gql.koa
Version:
Cran/GraphQL Koa Server
46 lines (45 loc) • 2.09 kB
TypeScript
/// <reference types="koa__cors" />
/// <reference types="node" />
/// <reference types="koa__router" />
import type { ApolloServer } from "./ApolloServer";
import type { Server as HttpServer } from "http";
import type { Server as HttpsServer } from "https";
import type { ListenOptions } from "net";
import type { PluginDefinition } from "apollo-server-core";
import Koa from "koa";
import Router from "@koa/router";
import bodyParser from "koa-bodyparser";
import cors from "@koa/cors";
import { health } from "./middleware";
export interface KoaServer<State, Context> {
use<NewState, NewContext>(middleware: Koa.Middleware<State & NewState, Context & NewContext>): KoaServer<State & NewState, Context & NewContext>;
}
export declare namespace KoaServer {
interface SystemMiddlewareOptions {
prefix?: string;
health?: boolean | Parameters<typeof health>[0];
metrics?: boolean;
sqlPreview?: boolean;
}
interface Options<State, Context> {
server?: KoaServer<State, Context>["server"];
cors?: false | cors.Options;
bodyParser?: false | bodyParser.Options;
options?: false;
}
}
export declare class KoaServer<State, Context> extends Koa<State, Context> {
protected readonly server: HttpServer | HttpsServer;
protected apollo?: ApolloServer;
constructor(options: KoaServer.Options<State, Context>);
getApollo(): ApolloServer | undefined;
getServer(): HttpServer | HttpsServer;
getApolloPlugins(): Array<PluginDefinition>;
useRouter(router: Router<State, Context>): KoaServer<State, Context & Router.RouterParamContext<State, Context>>;
useApollo(apollo: ApolloServer, { path, middleware, }?: {
path?: string | undefined;
middleware?: Koa.Middleware<State, Context, any>[] | undefined;
}): KoaServer<State, Context & Router.RouterParamContext<State, Context>>;
useSystemMiddleware(options?: KoaServer.SystemMiddlewareOptions): KoaServer<State, Context & Router.RouterParamContext<State, Context>>;
start(options?: ListenOptions): Promise<this>;
}