export type Headers = Record; export interface RequestOptions extends RequestInit { maxRetries?: number; timeout?: number; stream?: boolean | undefined; } type APIResponseProps = { response: Response; options: RequestOptions; controller: AbortController; }; interface StreamWithTee { tee(): [ReadableStream, ReadableStream]; } /** * 处理 API 响应的函数 * * @param props API 响应的属性 * @returns 返回处理后的结果 */ export declare function handleResponse(props: APIResponseProps): Promise; export declare const sleep: (ms: number) => Promise; export declare const castToError: (err: any) => Error; export declare const safeJSON: (text: string) => any; export declare class Fetch { maxRetries?: number; timeout?: number; retryMaxWaitInterval?: number; backoffFactor?: number; /** * 使用带有超时的 fetch 请求获取资源 * @returns 返回 Promise,表示获取到的响应 */ constructor({ maxRetries, timeout, backoffFactor, retryMaxWaitInterval, }?: { maxRetries?: number | undefined; timeout?: number | undefined; backoffFactor?: number | undefined; retryMaxWaitInterval?: number | undefined; }); fetchWithTimeout(url: string, init: RequestInit | undefined, ms: number, controller: AbortController): Promise; /** * 发起请求并处理响应 * * @param options 请求选项 * @param retriesRemaining 剩余重试次数,可以为 null * @returns Promise 响应对象,包含响应信息、请求选项和 AbortController 实例 */ makeRequest(url: string, options: RequestOptions, retriesRemaining?: number): Promise; /** * 判断是否应该重试请求 * * @param response HTTP响应对象 * @returns 返回布尔值,表示是否应该重试请求 */ private shouldRetry; /** * 判断是否应该根据错误码进行重试 * * @param data 包含错误码和错误描述的对象 * @returns 如果错误码在可重试的错误码列表中,则返回true,否则返回false */ private shouldRetryWithErrorCode; /** * 重试请求 * * @param options 请求选项 * @param retriesRemaining 剩余重试次数 * @param responseHeaders 响应头,可选 * @returns 返回 API 响应属性 */ private retryRequest; /** * 计算默认的重试超时时间(毫秒) * * @param retriesRemaining 剩余重试次数 * @param maxRetries 最大重试次数 * @returns 返回重试超时时间(毫秒) */ private calculateDefaultRetryTimeoutMillis; } export default Fetch;