solver-sdk
Version:
SDK для интеграции с Code Solver Backend API
263 lines • 12.6 kB
TypeScript
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