UNPKG

@pisell/pisellos

Version:

一个可扩展的前端模块化SDK框架,支持插件系统

151 lines (150 loc) 4.22 kB
import { Plugin } from '../types'; /** * RequestPlugin 接口定义 */ export interface RequestPlugin extends Plugin { /** * 发起 GET 请求 * @param url 请求地址 * @param options 请求选项 */ get: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>; /** * 发起 POST 请求 * @param url 请求地址 * @param data 请求数据 * @param options 请求选项 */ post: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>; /** * 发起 PUT 请求 * @param url 请求地址 * @param data 请求数据 * @param options 请求选项 */ put: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>; /** * 发起 DELETE 请求 * @param url 请求地址 * @param options 请求选项 */ delete: <T = any>(url: string, options?: RequestOptions) => Promise<T>; /** * 通用请求方法 * @param options 完整的请求选项 */ request: <T = any>(options: RequestOptions) => Promise<T>; } export declare enum RequestModeENUM { LOCAL = "local", REMOTE = "remote", LOCAL_REMOTE = "local_remote", REMOTE_LOCAL = "remote_local", OS_SERVER = "os_server" } export type RequestModeType = RequestModeENUM.LOCAL | RequestModeENUM.REMOTE | RequestModeENUM.LOCAL_REMOTE | RequestModeENUM.REMOTE_LOCAL | RequestModeENUM.OS_SERVER; export type CacheType = 'memory' | 'storage' | 'indexDB'; export interface CacheProps { key?: string; type?: CacheType; updateCache?: boolean; cacheUpdateChange?: (data: any) => void; mode?: RequestModeType; cacheKeyData?: any; } /** * 请求配置 */ export interface RequestOptions { url?: string; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'; headers?: Record<string, string>; data?: any; body?: any; params?: Record<string, string | number | boolean>; timeout?: number; responseType?: 'json' | 'text' | 'arraybuffer' | 'blob'; withCredentials?: boolean; useCache?: boolean; customToast?: () => void; cache?: CacheProps; osServer?: boolean; callback?: (res: any) => void; subscriberId?: string; } /** * 响应接口 */ export interface Response<T = any> { data: T; status: number; statusText: string; headers: Record<string, string>; config: RequestOptions; } /** * 请求错误 */ export declare class RequestError extends Error { response?: Response; request?: any; config?: RequestOptions; constructor(message: string, config?: RequestOptions, request?: any, response?: Response); } /** * RequestPlugin 实现 */ declare class RequestPluginImpl implements RequestPlugin { name: string; version: string; private core; /** * 默认请求选项 */ private defaultOptions; /** * 全局拦截器 */ private interceptors; initialize(): void; destroy(): void; /** * 添加请求拦截器 */ addRequestInterceptor(interceptor: (config: RequestOptions) => RequestOptions | Promise<RequestOptions>): void; /** * 添加响应拦截器 */ addResponseInterceptor(interceptor: (response: Response) => Response | Promise<Response>): void; /** * 添加错误拦截器 */ addErrorInterceptor(interceptor: (error: RequestError) => RequestError | Promise<RequestError>): void; /** * GET 请求 */ get<T = any>(url: string, options?: RequestOptions): Promise<T>; /** * POST 请求 */ post<T = any>(url: string, data?: any, options?: RequestOptions): Promise<T>; /** * PUT 请求 */ put<T = any>(url: string, data?: any, options?: RequestOptions): Promise<T>; /** * DELETE 请求 */ delete<T = any>(url: string, options?: RequestOptions): Promise<T>; /** * 通用请求方法 */ request<T = any>(options: RequestOptions): Promise<T>; /** * 执行实际的请求 * 这里实现了一个基于 fetch API 的请求 */ private performRequest; } declare const _default: RequestPluginImpl; export default _default;