import { IncomingMessage, ServerResponse, } from 'http' import { MatchResult, MatchedResult, } from '../matchers' import { Handler, Router, } from '../Router' import { ServerRequest, toServerRequest, } from './ServerRequest' interface ServerRequestResponse { req: ServerRequest res: ServerResponse } export interface NodeHttpRouterParams { data: ServerRequestResponse match: MatchedResult } export class NodeHttpRouter extends Router { constructor(defaultHandler?: Handler, ServerRequestResponse>) { super(defaultHandler) this.serve = this.serve.bind(this) } // eslint-disable-next-line @typescript-eslint/no-explicit-any serve(req: IncomingMessage, res: ServerResponse): any { return this.exec({ req: toServerRequest(req), res, }) } }