UNPKG

solver-sdk

Version:

SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system

117 lines 5.2 kB
import { IHttpClient, HttpClientOptions, RequestOptions } from '../interfaces/http-client.js'; declare module 'axios' { interface AxiosRequestConfig { skipRetry?: boolean; _retry?: boolean; } } export declare class HttpClient implements IHttpClient { /** Базовый URL для запросов */ private readonly baseURL; /** Опции HTTP клиента */ private readonly options; /** Axios инстанс */ private readonly axiosInstance; /** Среда выполнения */ private readonly environment; /** 🔐 401 Interceptor: Request Queue для параллельных запросов */ private requestQueue; /** 🔐 401 Interceptor: Флаг выполнения refresh токена */ private isRefreshing; /** 🔐 401 Interceptor: Promise текущего refresh для синхронизации */ private refreshPromise; /** * Создает новый HTTP клиент * @param {string} baseURL Базовый URL для запросов * @param {HttpClientOptions} [options] Опции для HTTP клиента */ constructor(baseURL: string, options?: HttpClientOptions); /** * 🔐 Retry всех запросов из очереди с новым токеном * Вызывается после успешного refresh для обработки concurrent 401 requests */ private processQueue; /** * 🔐 Reject всех запросов из очереди при ошибке refresh */ private rejectQueue; /** * Настраивает интерцепторы Axios */ private setupInterceptors; /** * Выполняет HTTP запрос * @param {RequestOptions} options Опции запроса * @returns {Promise<T>} Ответ от API */ request<T = any>(options: RequestOptions): Promise<T>; /** * Выполняет GET запрос * @param {string} url URL для запроса * @param {Record<string, any>} [params] Query параметры * @param {Record<string, string>} [headers] HTTP заголовки * @returns {Promise<T>} Ответ от API */ get<T = any>(url: string, params?: Record<string, any>, headers?: Record<string, string>): Promise<T>; /** * Выполняет POST запрос * @param {string} url URL для запроса * @param {any} [data] Данные для отправки * @param {Record<string, string>} [headers] HTTP заголовки * @returns {Promise<T>} Ответ от API */ post<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>; /** * Выполняет PUT запрос * @param {string} url URL для запроса * @param {any} [data] Данные для отправки * @param {Record<string, string>} [headers] HTTP заголовки * @returns {Promise<T>} Ответ от API */ put<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>; /** * Выполняет DELETE запрос * @param {string} url URL для запроса * @param {Record<string, any>} [params] Query параметры * @param {Record<string, string>} [headers] HTTP заголовки * @returns {Promise<T>} Ответ от API */ delete<T = any>(url: string, params?: Record<string, any>, headers?: Record<string, string>): Promise<T>; /** * Выполняет PATCH запрос * @param {string} url URL для запроса * @param {any} [data] Данные для отправки * @param {Record<string, string>} [headers] HTTP заголовки * @returns {Promise<T>} Ответ от API */ patch<T = any>(url: string, data?: any, headers?: Record<string, string>): Promise<T>; /** * Выполняет POST запрос с потоковым ответом * @param {string} url URL для запроса * @param {any} [data] Данные для отправки * @param {Record<string, string>} [headers] HTTP заголовки * @returns {Promise<Response>} Объект Response с потоком данных */ postStream(url: string, data?: any, headers?: Record<string, string>): Promise<Response>; /** * 🔐 Внутренний метод для выполнения stream запроса с поддержкой 401 retry * @param isRetry - true если это повторная попытка после 401 */ private executeStreamRequest; /** * Обрабатывает ошибки от Axios * @param {any} error Ошибка от Axios * @returns {Error} Обработанная ошибка */ private handleError; /** * Получает экземпляр Axios для тестирования */ get axiosConfig(): any; /** * Получает базовый URL API * @returns {string} Базовый URL */ getBaseURL(): string; } //# sourceMappingURL=http-client.d.ts.map