import type { AwaitableFn, PromiseFn } from '@rhao/types-base'; import type { RequestBasicContext, RequestContext } from './context'; interface BasicMiddleware { /** * 插件名称,可标识唯一中间件 */ name?: string; /** * 优先级,数值越大越先执行,相同数值时根据先后顺序执行 * @default 1 */ priority?: number; /** * 执行 `request()` 时触发,可自定义 `request()` 相关功能 */ setup?: (context: RequestBasicContext) => void; } export interface RequestMiddlewareObject extends BasicMiddleware { /** * 执行 `executor()` 时触发 */ handler?: AwaitableFn<[ctx: RequestContext, next: PromiseFn<[], void>]>; } export interface RequestMiddlewareFunction extends BasicMiddleware { /** * 执行 `executor()` 时触发 */ (context: RequestContext, next: PromiseFn<[], void>): void; } export type RequestMiddleware = RequestMiddlewareObject | RequestMiddlewareFunction; /** * 统一化中间件 */ export declare function normalizeMiddleware(middleware: RequestMiddleware[]): RequestMiddlewareObject[]; export {};