solver-sdk
Version:
SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system
117 lines • 5.2 kB
TypeScript
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