/// import { ServerRequest, ServerResponse } from "http"; import { Request } from "./request"; import { Response } from "./response"; import { Context } from "./context"; import { Key as RegExpKey } from "path-to-regexp"; export { RegExpOptions, Key as RegExpKey } from "path-to-regexp"; /** 出错原因 */ export declare type ErrorReason = null | string | Error | Record; /** 编译路由字符串的结果 */ export interface ParsedRoutePathResult { /** 正则表达式 */ regexp: RegExp; /** 变量信息 */ keys: RegExpKey[]; } /** 中间件处理函数 */ export interface MiddlewareHandle { (ctx: C, err?: ErrorReason): Promise | void; /** 是否为connect中间件 */ classical?: boolean; /** 当前中间件注册时的路由前缀 */ route?: ParsedRoutePathResult; } /** 中间件堆栈的元素 */ export interface Middleware { /** 是否为错误处理中间件 */ handleError: boolean; /** 路由规则 */ route: ParsedRoutePathResult; /** 中间件处理函数 */ handle: MiddlewareHandle; /** 是否排在末尾 */ atEnd: boolean; } /** next回调函数 */ export declare type NextFunction = (err?: ErrorReason) => void; /** 监听端口选项 */ export interface ListenOptions { /** 端口 */ port?: number; /** 地址 */ host?: string; backlog?: number; /** Unix Socket 文件路径 */ path?: string; exclusive?: boolean; } /** 经典connect中间件 */ export declare type ClassicalMiddlewareHandle = (req: ServerRequest, res: ServerResponse, next?: NextFunction) => void; /** 经典connect错误处理中间件 */ export declare type ClassicalMiddlewareErrorHandle = (err: ErrorReason, req: ServerRequest, res: ServerResponse, next?: NextFunction) => void; /** Context对象构造器 */ export interface ContextConstructor { new (): Context; } /** Request对象构造器 */ export interface RequestConstructor { new (req: ServerRequest, ctx: Context): Request; } /** Response对象构造器 */ export interface ResponseConstructor { new (res: ServerResponse, ctx: Context): Response; } /** 请求头 */ export interface Headers { [name: string]: string | string[] | number; } /** 扩展的ServerRequest对象 */ export interface ServerRequestEx extends ServerRequest { originalUrl?: string; query?: Record; body?: Record; files?: Record; params?: Record; session?: Record; cookies?: Record; signedCookies?: Record; }