import { ClearHttpContext } from "../Contracts.mjs"; import { Response } from "../core/Response.mjs"; import { ClassMiddleware, ControllerHandler } from "./basic.mjs"; import { Request } from "../core/Request.mjs"; import Koa from "koa"; import Router from "@koa/router"; //#region src/types/koa.d.ts interface RequestWithGetBody extends Koa.Request { getBody: () => Record; body?: any; } interface HttpContext extends Koa.Context, ClearHttpContext { request: RequestWithGetBody; clearRequest: Request; clearResponse: Response; params: Record; query: Record; } type RouteHandler = (ctx: HttpContext, req: Request) => any | Promise; type Handler = RouteHandler | ControllerHandler; type NextFunction = Koa.Next; type MiddlewareFunction = Koa.Middleware; type Middleware = MiddlewareFunction | ClassMiddleware; type KoaRouterApp = Router; //#endregion export { Handler, HttpContext, KoaRouterApp, Middleware, NextFunction, RequestWithGetBody, RouteHandler };