import { type Server as HTTPServer, IncomingMessage, ServerResponse } from 'http' import { type Server as HTTPSServer } from 'https' import { Pattern, Methods } from 'trouter' import { Http2SecureServer, Http2ServerRequest, Http2ServerResponse } from 'http2' export enum Protocol { HTTP = 'http', HTTPS = 'https', HTTP2 = 'http2' } export type Server
= P extends Protocol.HTTP2 ? Http2SecureServer : P extends Protocol.HTTPS ? HTTPSServer : HTTPServer export type StepFunction = (error?: unknown) => void export type Request
= P extends Protocol.HTTP2 ? Http2ServerRequest : IncomingMessage export type Response
= P extends Protocol.HTTP2 ? Http2ServerResponse : ServerResponse export type RequestHandler
= ( req: Request
, res: Response
,
next: (error?: unknown) => void
) => void | Promise {
lookup: RequestHandler
use(...handlers: RequestHandler []): this
use(router: IRouter ): this
use(pattern: Pattern, ...handlers: RequestHandler []): this
use(prefix: Pattern, router: IRouter ): this
all(pattern: Pattern, ...handlers: RequestHandler []): this
get(pattern: Pattern, ...handlers: RequestHandler []): this
head(pattern: Pattern, ...handlers: RequestHandler []): this
patch(pattern: Pattern, ...handlers: RequestHandler []): this
options(pattern: Pattern, ...handlers: RequestHandler []): this
connect(pattern: Pattern, ...handlers: RequestHandler []): this
delete(pattern: Pattern, ...handlers: RequestHandler []): this
trace(pattern: Pattern, ...handlers: RequestHandler []): this
post(pattern: Pattern, ...handlers: RequestHandler []): this
put(pattern: Pattern, ...handlers: RequestHandler []): this
on(method: Methods, pattern: Pattern, ...middlewares: RequestHandler []): this
}