/** * Copyright 2019-2021 u14.com * MIT Licensed */ /** * api路由注册中心 * @author zhh */ import { DocNode } from "./docs_helper"; import { AbsRes, ApiHttpCtx, AbsHttpCtx, ApiFilterHandler, ApiParamRule, ApiClass, ApiMethod } from "./api_ctx"; /** * api类和方法注册中心 */ export declare class Facade { static defaultRes: new () => AbsRes; static globalFilter: ApiFilterHandler; static defaultFilter: ApiFilterHandler; static runTimeOut: number; static ignorePathCase: boolean; static ignoreApiDoc: boolean; static _hookErr: (ctx: AbsHttpCtx, err: Error) => void; static _hookTj: (apiPath: string, costMsTime: number) => void; static _hookDebug: (ctx: AbsHttpCtx, data: any) => void; static _hook404: (req: Class_HttpRequest) => boolean; static _decodePayload: (ctx: ApiHttpCtx, data: any) => any; static _encodePayload: (ctx: ApiHttpCtx, data: string | Class_Buffer) => string | Class_Buffer; static _msgpack: { encode: (d: any) => any; decode: (b: Class_Buffer | Uint8Array) => any; }; static _xml: { encode: (d: any) => any; decode: (b: string) => any; }; static get _docs(): { [index: string]: DocNode; }; static get _apis(): any; static get _api_routing(): Class_Routing; static set _api_routing(p: Class_Routing); static run_by_ws_check(args: any): boolean; static run_by_ws(conn: Class_WebSocket, args: [number, string | number, any, any, any], opt?: number, overrideResWriter?: any, processCtx?: (ctx: any) => any): void; static hasApiPath(path: string): boolean; static hasApiCode(code: number): boolean; } export declare function api_requireBy(requireFn: () => void): boolean; export declare function api_requireByDir(dir?: string | string[], fileFilter?: (f: string) => boolean, requireFn?: (id: string) => any): boolean; export declare function api_requireByFileList(allApiFileList: string[], requireFn?: (id: string) => any): boolean; export declare function current_api_ctx(This?: any): ApiHttpCtx; export declare function current_api_path(def?: string): string; /** * 参数规则函数 * @param info 参数规则配置 * @constructor */ export declare function RULE(info: ApiParamRule): ParameterDecorator; /** * request ip of socket * @constructor */ export declare function Ip(): ParameterDecorator; /** * field from path * @param info * @constructor */ export declare function Path(info?: ApiParamRule): ParameterDecorator; /** * field of header * @param info * @constructor */ export declare function Header(info?: ApiParamRule): ParameterDecorator; /** * field of cookie * @param info * @constructor */ export declare function Cookie(info?: ApiParamRule): ParameterDecorator; /** * field of query * @param info * @constructor */ export declare function Query(info?: ApiParamRule): ParameterDecorator; /** * field of body * @param info * @constructor */ export declare function Body(info?: ApiParamRule): ParameterDecorator; /** * field of query or body * @param info * @constructor */ export declare function Param(info?: ApiParamRule): ParameterDecorator; /** * Context for the request.body * @constructor */ export declare function CtxBody(): ParameterDecorator; /** * Context for the request.query * @constructor */ export declare function CtxQuery(): ParameterDecorator; /** * Context for the request headers * @constructor */ export declare function CtxHeaders(): ParameterDecorator; /** * Context for the request * @constructor */ export declare function CtxApi(): ParameterDecorator; /** * 接口路由:同时支持 get/post * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function ANY(path?: string | ApiMethod, code?: number): MethodDecorator; /** * 接口路由:仅支持get * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function GET(path?: string | ApiMethod, code?: number): MethodDecorator; /** * 接口路由:仅支持post * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function POST(path?: string | ApiMethod, code?: number): MethodDecorator; /** * 接口路由:仅支持put * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function PUT(path?: string | ApiMethod, code?: number): MethodDecorator; /** * 接口路由:仅支持patch * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function PATCH(path?: string | ApiMethod, code?: number): MethodDecorator; /** * 接口路由:仅支持head * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function HEAD(path?: string | ApiMethod, code?: number): MethodDecorator; /** * 接口路由:仅支持delete * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function DELETE(path?: string | ApiMethod, code?: number): MethodDecorator; /** * 转发路由:仅支持get_post * @param path 路由的字符串路径和权限以及输出配置 * @param code 路由的数值代码配置 * @constructor */ export declare function REPEATER(apiRule: ApiMethod & { toUrl: string | string[]; fixPath?: (ctx: AbsHttpCtx) => string; }, code?: number): MethodDecorator; /** * 注解方法,标记类为api类。 会扫描类属性,提取类内部所有路由方法,添加到API路径上 * @param info API的路由合过滤器配置 * @constructor */ export declare function API(info?: string | ApiClass): ClassDecorator; /** * 标记为-websocket服务侦听器。必须要实现 (onMessage || onBuffer || onText),可选实现( onopen, onclose, onerror) * @param path websocket的路由配置 * @param opt websocket的可选项(是否压缩,最大消息长度等) * @param filter websocket的路径自定义权限过滤器 * @constructor */ export declare function WEBSOCKET(path?: string, opts?: { [index: string]: any; }, filter?: ApiFilterHandler): ClassDecorator; /** * 调用注册的函数 * @param reqInfo * @param callBack */ export declare function tmp_call_api(reqInfo: { path: string; params?: any; headers?: any; ip?: string; pathArg?: string; }, callBack: (contentType: string, headers: { [index: string]: string; }, data: any) => {}): void;