/// import * as http from "http"; import * as https from "https"; import * as utils from "./utils"; import { Context } from "./context"; import { Router } from "./router"; import { MicroServer } from "./server-utils"; export interface ItemsContainer { items: Map; getItem(key: string): T; setItem(key: string, value: T): void; hasItem(key: string): boolean; } export interface IApplication extends ItemsContainer { middlewares: Middleware[]; createServer(secureOpts?: https.ServerOptions): MicroServer; createHandler(): (req: http.IncomingMessage, res: http.ServerResponse) => void; use(...middlewares: (Middleware | Router)[]): IApplication; setErrorHandler(handler: ErrorHandler): void; setFallbackHandler(handler: Middleware): void; } export declare type Middleware = (context: T, next: NextMiddleware) => MiddlewareResult; export declare type MiddlewareResult = Promise; export declare type NextMiddleware = () => MiddlewareResult; export declare type ErrorHandler = (err: Error, req: http.IncomingMessage, res: http.ServerResponse, context?: T) => void; export declare class Application implements IApplication { private _contextFactory; private _errorHandler; private _fallbackHandler; middlewares: Middleware[]; items: Map; constructor(_contextFactory: (app: Application, req: http.IncomingMessage, res: http.ServerResponse) => T, _errorHandler?: ErrorHandler, _fallbackHandler?: typeof utils.defaultFallbackNotFoundHandler); createServer(secureOpts?: https.ServerOptions): MicroServer; createHandler(): (req: http.IncomingMessage, res: http.ServerResponse) => void; use(...middleware: (Middleware | Router)[]): Application; setErrorHandler(handler: ErrorHandler): void; setFallbackHandler(handler: Middleware): void; getItem(key: string): T; setItem(key: string, value: T): void; hasItem(key: string): boolean; } export declare class App extends Application { constructor(); }