/// import Cors from "@koa/cors"; import { ActionResult, Application, BodyParserOption, Class, Configuration, Facility, Invocation, KoaMiddleware, Middleware, PlumierApplication, PlumierConfiguration, RouteInfo } from "@plumjs/core"; import Koa, { Context } from "koa"; import { FileActionResult, ServeStaticOptions } from "./serve-static"; export interface RouteContext extends Koa.Context { route: Readonly; parameters: any[]; } export declare class RedirectActionResult extends ActionResult { path: string; constructor(path: string); execute(ctx: Context): Promise; } export declare namespace response { function json(body: any): ActionResult; function file(path: string, opt?: ServeStaticOptions): FileActionResult; function redirect(path: string): RedirectActionResult; } export declare function extractDecorators(route: RouteInfo): Middleware[]; export declare class MiddlewareInvocation implements Invocation { private middleware; context: Context; private next; constructor(middleware: Middleware, context: Context, next: Invocation); proceed(): Promise; } export declare class ActionInvocation implements Invocation { context: RouteContext; constructor(context: RouteContext); proceed(): Promise; } export declare function pipe(middleware: Middleware[], context: Context, invocation: Invocation): Invocation; /** * Preset configuration for building web api. This facility contains: * * body parser: koa-bodyparser * * cors: @koa/cors */ export declare class WebApiFacility implements Facility { private opt?; constructor(opt?: { controller?: string | Class | Class[] | undefined; bodyParser?: BodyParserOption | undefined; cors?: Cors.Options | undefined; } | undefined); setup(app: Readonly): Promise; } /** * Preset configuration for building restful style api. This facility contains: * * body parser: koa-bodyparser * * cors: @koa/cors * * default response status: { get: 200, post: 201, put: 204, delete: 204 } */ export declare class RestfulApiFacility extends WebApiFacility { setup(app: Readonly): Promise; } export declare class Plumier implements PlumierApplication { readonly config: Readonly; readonly koa: Koa; private globalMiddleware; constructor(); use(option: KoaMiddleware): Application; use(option: Middleware): Application; set(facility: Facility): Application; set(config: Partial): Application; private createRoutes; initialize(): Promise; }