UNPKG

@cran/gql.koa

Version:

Cran/GraphQL Koa Server

46 lines (45 loc) 2.09 kB
/// <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>; }