UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API

263 lines 12.6 kB
import { HttpClient } from '../utils/http-client.js'; import { Project, IndexingResponse, FileIndexResponse, ProjectOptions, ProjectUpdateData } from '../types/index.js'; declare global { var solverSdkProjectCache: Record<string, string> | undefined; } /** * Константы для API путей */ export declare enum ApiEndpoints { PROJECTS = "/api/v1/projects", PROJECT = "/api/v1/projects/:id", PROJECT_INDEXING_STATUS = "/api/v1/projects/:id/indexing_status", PROJECT_CANCEL_INDEXING = "/api/v1/projects/:id/cancel_indexing", PROJECT_CLEAR_ERROR = "/api/v1/projects/:id/clear_error" } /** * API для работы с проектами */ export declare class ProjectsApi { /** HTTP клиент */ private readonly httpClient; /** WebSocket клиент */ private wsClient; /** Родительский SDK */ private parentSdk; /** * Создает новый экземпляр API для работы с проектами * @param {HttpClient} httpClient HTTP клиент */ constructor(httpClient: HttpClient); /** * Проверяет валидность идентификатора проекта * @param {string} projectId ID проекта * @throws {Error} Если ID проекта не валиден */ private validateProjectId; /** * Получает список всех проектов * @returns {Promise<Project[]>} Список проектов */ getAllProjects(): Promise<Project[]>; /** * Получает проект по ID * @param {string} projectId ID проекта * @returns {Promise<Project>} Проект */ getProject(projectId: string): Promise<Project>; /** * Создает новый проект * @param {string} name Название проекта * @param {string} path Путь к проекту * @param {ProjectOptions} [options] Дополнительные опции проекта * @returns {Promise<Project>} Созданный проект */ createProject(name: string, path: string, options?: ProjectOptions): Promise<Project>; /** * Обновляет проект * @param {string} projectId ID проекта * @param {Partial<ProjectUpdateData>} data Данные для обновления * @returns {Promise<Project>} Обновленный проект */ updateProject(projectId: string, data: Partial<ProjectUpdateData>): Promise<Project>; /** * Удаляет проект * @param {string} projectId ID проекта * @returns {Promise<void>} */ deleteProject(projectId: string): Promise<void>; /** * Запускает индексацию проекта * @param {string} projectId ID проекта * @param {Object} [options] Опции индексации * @param {string} [options.indexingMode] Режим индексации: 'full', 'incremental', 'auto' * @param {boolean} [options.forceFull] Принудительная полная индексация * @param {string[]} [options.includePatterns] Паттерны для включения файлов * @param {string[]} [options.excludePatterns] Паттерны для исключения файлов * @returns {Promise<IndexingResponse>} Информация о начатой индексации */ indexProject(projectId: string, options?: { indexingMode?: 'full' | 'incremental' | 'auto'; forceFull?: boolean; includePatterns?: string[]; excludePatterns?: string[]; }): Promise<IndexingResponse>; /** * Получает статус индексации проекта * @param {string} projectId Идентификатор проекта * @returns {Promise<any>} Статус индексации проекта */ getIndexingStatus(projectId: string): Promise<any>; /** * Отменяет индексацию проекта * @param {string} projectId Идентификатор проекта * @returns {Promise<boolean>} Результат отмены индексации */ cancelIndexing(projectId: string): Promise<boolean>; /** * Очищает ошибку индексации проекта * @param {string} projectId Идентификатор проекта * @returns {Promise<boolean>} Результат очистки ошибки */ clearIndexingError(projectId: string): Promise<boolean>; /** * Обновляет индекс конкретного файла в проекте * @param {string} projectId ID проекта * @param {string} filePath Путь к файлу (относительно корня проекта) * @param {Object} options Опции обновления индекса * @param {string} [options.content] Содержимое файла (если не указано, будет прочитано с диска) * @param {boolean} [options.force=false] Принудительная переиндексация, даже если файл не изменился * @param {string} [options.language] Язык файла (если не указан, будет определен автоматически) * @param {boolean} [options.updateDependencies=false] Обновлять зависимости после индексации файла * @returns {Promise<FileIndexResponse>} Информация об обновленном индексе файла */ updateFileIndex(projectId: string, filePath: string, options?: { content?: string; force?: boolean; language?: string; updateDependencies?: boolean; }): Promise<FileIndexResponse>; /** * Подключается к WebSocket для событий индексации * @returns {Promise<boolean>} Результат подключения */ connectWebSocket(): Promise<boolean>; /** * Отключается от WebSocket для событий индексации * @returns {Promise<void>} */ disconnectWebSocket(): Promise<void>; /** * Проверяет, подключен ли WebSocket * @returns {boolean} Состояние подключения */ isWebSocketConnected(): boolean; /** * Устанавливает родительский SDK * @param sdk Родительский SDK */ setParent(sdk: any): void; /** * Подписывается на событие через WebSocket * @param event Название события * @param callback Функция обратного вызова */ on(event: string, callback: Function): void; /** * Отправляет событие через WebSocket * @param event Название события * @param data Данные для отправки */ emitSocketEvent(event: string, data: any): void; /** * Отправляет событие через WebSocket с ожиданием ответа * @param event Имя события * @param data Данные для отправки * @param timeout Таймаут ожидания ответа * @returns {Promise<any>} Ответ от сервера */ sendSocketEventWithResponse(event: string, data: any, timeout?: number): Promise<any>; /** * Остановить индексацию проекта через WebSocket * @param projectId ID проекта * @returns {Promise<boolean>} Результат операции */ stopIndexing(projectId: string): Promise<boolean>; /** * Кэширует соответствие пути и ID проекта * @param path Путь к проекту * @param projectId ID проекта * @private */ private cacheProjectId; /** * Получает ID проекта из кэша * @param path Путь к проекту * @returns ID проекта или null, если не найдено * @private */ private getCachedProjectId; /** * Получает или создает проект по пути * @param path Путь к проекту * @param name Имя проекта (опционально, если не указано - будет сгенерировано из пути) * @returns Данные проекта */ getOrCreateProject(path: string, name?: string): Promise<Project>; /** * Индексация проекта по пути * @param path Путь к проекту * @param options Опции индексации * @returns Информация об индексации */ indexProjectByPath(path: string, options?: { name?: string; forceFull?: boolean; excludePatterns?: string[]; }): Promise<{ success: boolean; status: string; projectId: string; }>; /** * Создание и индексация проекта в одной операции * @param path Путь к проекту * @param options Опции создания и индексации * @param {string} [options.name] Имя проекта (если не указано, будет получено из пути) * @param {boolean} [options.forceFull=false] Принудительная полная индексация * @param {string} [options.indexingMode] Режим индексации: 'full', 'incremental', 'auto' * @param {string[]} [options.includePatterns] Паттерны для включения файлов * @param {string[]} [options.excludePatterns] Паттерны для исключения файлов * @returns Информация о созданном проекте и начатой индексации */ createAndIndexProject(path: string, options?: { name?: string; forceFull?: boolean; indexingMode?: 'full' | 'incremental' | 'auto'; includePatterns?: string[]; excludePatterns?: string[]; }): Promise<{ projectId: string; indexingStatus: string; }>; /** * Проверяет существование проекта и создает резервную копию при необходимости * @param projectId ID проекта для проверки * @param options Опции для создания резервной копии * @returns Существующий проект или созданную резервную копию */ ensureProjectExists(projectId: string, options?: { createBackup?: boolean; backupPath?: string; backupName?: string; }): Promise<Project>; /** * Получает или создает проект по пути с расширенными опциями * @param path Путь к проекту * @param options Дополнительные опции * @returns Найденный или созданный проект */ getOrCreateProjectByPath(path: string, options?: { name?: string; preferExisting?: boolean; indexingTimeout?: number; maxFileSize?: number; }): Promise<Project>; /** * Запускает индексацию проекта (псевдоним для indexProject) * @param {string} projectId ID проекта * @param {Object} [options] Опции индексации * @param {string} [options.indexingMode] Режим индексации: 'full', 'incremental', 'auto' * @param {boolean} [options.forceFull] Принудительная полная индексация * @param {string[]} [options.includePatterns] Паттерны для включения файлов * @param {string[]} [options.excludePatterns] Паттерны для исключения файлов * @returns {Promise<IndexingResponse>} Информация о начатой индексации */ startIndexing(projectId: string, options?: { indexingMode?: 'full' | 'incremental' | 'auto'; forceFull?: boolean; includePatterns?: string[]; excludePatterns?: string[]; }): Promise<IndexingResponse>; } //# sourceMappingURL=projects-api.d.ts.map