UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API (совместимо с браузером и Node.js), с поддержкой функциональности мышления (Thinking Mode)

107 lines 4.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IndexingWebSocketClient = exports.IndexingEvent = void 0; const websocket_client_js_1 = require("./websocket-client.js"); /** * События индексации */ var IndexingEvent; (function (IndexingEvent) { /** Начало индексации */ IndexingEvent["START"] = "indexing_start"; /** Прогресс индексации */ IndexingEvent["PROGRESS"] = "indexing_progress"; /** Завершение индексации */ IndexingEvent["COMPLETE"] = "indexing_complete"; /** Ошибка индексации */ IndexingEvent["ERROR"] = "indexing_error"; })(IndexingEvent || (exports.IndexingEvent = IndexingEvent = {})); /** * WebSocket клиент для работы с индексацией */ class IndexingWebSocketClient extends websocket_client_js_1.WebSocketClient { /** * Создает новый WebSocket клиент для индексации * @param {string} url URL для подключения * @param {IndexingWebSocketOptions} [options] Опции клиента */ constructor(url, options = {}) { // Сохраняем базовый URL const baseUrl = url; // Формируем URL с параметрами для проекта если он указан let targetUrl = url; if (options.projectId) { const urlWithParams = new URL(url); urlWithParams.searchParams.append('projectId', options.projectId); urlWithParams.searchParams.append('type', 'indexing'); targetUrl = urlWithParams.toString(); } super(targetUrl, { ...options, headers: { ...(options.headers || {}), ...(options.apiKey ? { 'Authorization': `Bearer ${options.apiKey}` } : {}) } }); /** Идентификатор проекта */ this.projectId = null; this.baseUrl = baseUrl; this.projectId = options.projectId || null; } /** * Устанавливает идентификатор проекта * @param {string} projectId Идентификатор проекта */ setProjectId(projectId) { this.projectId = projectId; } /** * Подключается к WebSocket для отслеживания индексации * @param {string} [projectId] Идентификатор проекта (если не был указан в конструкторе) * @returns {Promise<void>} */ async connect(projectId) { const targetProjectId = projectId || this.projectId; if (!targetProjectId) { throw new Error('Project ID is required for indexing WebSocket connection'); } // Сохраняем ID проекта this.projectId = targetProjectId; // Если проект изменился и клиент уже подключен, отключаемся if (projectId && this.isConnected()) { this.close(); } // Выполняем соединение await super.connect(); } /** * Подписывается на события начала индексации * @param {(data: {projectId: string}) => void} handler Обработчик события */ onStart(handler) { this.on(IndexingEvent.START, handler); } /** * Подписывается на события прогресса индексации * @param {(data: IndexingProgressData) => void} handler Обработчик события */ onProgress(handler) { this.on(IndexingEvent.PROGRESS, handler); } /** * Подписывается на события завершения индексации * @param {(data: IndexingCompleteData) => void} handler Обработчик события */ onComplete(handler) { this.on(IndexingEvent.COMPLETE, handler); } /** * Подписывается на события ошибок индексации * @param {(data: IndexingErrorData) => void} handler Обработчик события */ onError(handler) { this.on(IndexingEvent.ERROR, handler); } } exports.IndexingWebSocketClient = IndexingWebSocketClient; //# sourceMappingURL=indexing-websocket-client.js.map