UNPKG

jsonrpctts

Version:

A TypeScript JSON-RPC 2.0 client with axios

77 lines (76 loc) 2.2 kB
import { MethodName, RPCParams, RPCResult, RPCClientConfig } from "./types"; /** * JSON-RPC 2.0 客户端实现 * @template T - 定义RPC方法的类型结构 */ export declare class RPCClient<T> { private id; private config; private abortController; private pendingRequests; /** * 构造函数 * @param config 客户端配置 * { * endpoint: string, // RPC服务器地址 * timeout?: number, // 超时时间(毫秒) * headers?: Record<string, string> // 自定义请求头 * } */ constructor(config: RPCClientConfig); /** * 执行RPC调用 * @param method RPC方法名 * @param params 方法参数 * @returns 返回RPC调用结果的Promise */ call<M extends MethodName<T>>(method: M, ...params: RPCParams<T, M>): Promise<RPCResult<T, M>>; /** * 取消所有进行中的请求 */ abortAll(): void; /** * 处理HTTP响应并提取RPC结果 * @param response Axios响应对象 * @param request 原始RPC请求 * @returns 解析后的结果 * @throws 当响应不符合规范时抛出RPCError */ private processResponse; /** * 处理JSON-RPC错误响应 * @param error JSON-RPC错误对象 * @throws 根据错误类型抛出BackendError或RPCError */ private handleErrorResponse; /** * 解析JSON-RPC响应 * @param response 原始响应数据 * @returns 解析后的JSON-RPC响应 * @throws 当响应格式无效时抛出RPCError */ private parseJSONResponse; /** * 处理请求过程中的错误 * @param error 捕获的错误对象 * @returns 适当封装的错误对象 */ private handleError; /** * 处理Axios特有的错误 * @param error Axios错误对象 * @returns 封装的网络或RPC错误 */ private handleAxiosError; /** * 验证参数是否符合JSON序列化要求 * @param params 参数数组 * @throws 当参数无效时抛出RPCError */ private validateParams; /** * 生成下一个请求ID * @returns 唯一且没有冲突的请求ID */ private nextID; }