solver-sdk 5.9.0 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +156 -84
  2. package/dist/cjs/api/indexing-api.js +38 -156
  3. package/dist/cjs/api/indexing-api.js.map +1 -1
  4. package/dist/cjs/api/projects-api.js +134 -779
  5. package/dist/cjs/api/projects-api.js.map +1 -1
  6. package/dist/cjs/code-solver-sdk.js +1 -51
  7. package/dist/cjs/code-solver-sdk.js.map +1 -1
  8. package/dist/cjs/delta-chunking/delta-chunking-manager.js +9 -178
  9. package/dist/cjs/delta-chunking/delta-chunking-manager.js.map +1 -1
  10. package/dist/cjs/delta-chunking/delta-chunking-utils.js +34 -112
  11. package/dist/cjs/delta-chunking/delta-chunking-utils.js.map +1 -1
  12. package/dist/esm/api/indexing-api.js +36 -154
  13. package/dist/esm/api/indexing-api.js.map +1 -1
  14. package/dist/esm/api/projects-api.js +133 -745
  15. package/dist/esm/api/projects-api.js.map +1 -1
  16. package/dist/esm/code-solver-sdk.js +1 -51
  17. package/dist/esm/code-solver-sdk.js.map +1 -1
  18. package/dist/esm/delta-chunking/delta-chunking-manager.js +9 -178
  19. package/dist/esm/delta-chunking/delta-chunking-manager.js.map +1 -1
  20. package/dist/esm/delta-chunking/delta-chunking-utils.js +34 -112
  21. package/dist/esm/delta-chunking/delta-chunking-utils.js.map +1 -1
  22. package/dist/types/api/indexing-api.d.ts +20 -129
  23. package/dist/types/api/indexing-api.d.ts.map +1 -1
  24. package/dist/types/api/projects-api.d.ts +36 -497
  25. package/dist/types/api/projects-api.d.ts.map +1 -1
  26. package/dist/types/code-solver-sdk.d.ts +1 -31
  27. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  28. package/dist/types/delta-chunking/delta-chunking-manager.d.ts +10 -23
  29. package/dist/types/delta-chunking/delta-chunking-manager.d.ts.map +1 -1
  30. package/dist/types/delta-chunking/delta-chunking-utils.d.ts +20 -11
  31. package/dist/types/delta-chunking/delta-chunking-utils.d.ts.map +1 -1
  32. package/dist/types/interfaces/sdk-options.d.ts +4 -4
  33. package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
  34. package/package.json +1 -1
package/README.md CHANGED
@@ -73,7 +73,15 @@ interface CodeSolverSDKOptions {
73
73
  // Delta-Chunking настройки
74
74
  deltaChunking?: {
75
75
  enabled?: boolean; // Включить delta-chunking (по умолчанию true)
76
- chunkSize?: number; // Размер чанка (4096 байт)
76
+
77
+ // Настройки разбиения на чанки (точная архитектура)
78
+ chunking?: {
79
+ maxChars?: number; // Максимум символов в чанке (2000, ~500 токенов)
80
+ minChars?: number; // Минимум символов в чанке (500, ~130 токенов)
81
+ useTreeSitter?: boolean; // Использовать tree-sitter парсер (в разработке)
82
+ preserveContext?: boolean; // Сохранять контекст между чанками
83
+ };
84
+
77
85
  maxConcurrentChunks?: number; // Максимум параллельных чанков (5)
78
86
  };
79
87
  }
@@ -286,102 +294,154 @@ sdk.disconnectWebSocket();
286
294
 
287
295
  ---
288
296
 
289
- ## 🎯 **ПОЛНОЕ РУКОВОДСТВО ПО УПРАВЛЕНИЮ ИНДЕКСАЦИЕЙ**
297
+ # Backend SDK v6.0.0 API
298
+
299
+ ## Projects API (`sdk.projects`)
300
+ ```typescript
301
+ // Управление проектами
302
+ createProject(name: string, data?: any): Promise<Project>
303
+ getAllProjects(): Promise<Project[]>
304
+ getProject(projectId: string): Promise<Project | null>
305
+ findOrCreateProject(projectPath: string, projectName: string): Promise<Project>
306
+ deleteProject(projectId: string): Promise<void>
290
307
 
291
- ### 🔄 **Cursor-like Workflow - Рекомендуемый подход**
308
+ // Статус и состояние
309
+ getProjectState(projectId: string, clientRootHash?: string): Promise<ProjectState>
310
+ getIndexingStatus(projectId: string): Promise<IndexingStatus>
311
+ startIndexing(projectId: string, options?: IndexingOptions): Promise<any>
312
+ cancelIndexing(projectId: string): Promise<boolean>
313
+ resetIndexing(projectId: string): Promise<ResetResult>
314
+
315
+ // Session Recovery
316
+ getRecoveryStatus(projectId: string): Promise<RecoveryStatus>
317
+ resumeSync(projectId: string, options?: ResumeOptions): Promise<ResumeResult>
318
+ cancelRecovery(projectId: string): Promise<{ success: boolean }>
319
+ initializeDeltaSync(projectId: string, clientRootHash: string): Promise<SyncInitResult>
320
+ ```
292
321
 
322
+ ## Delta Manager API (`sdk.deltaManager`)
293
323
  ```typescript
294
- import { CodeSolverSDK } from 'solver-sdk';
324
+ syncEncryptedChunks(projectId: string, encryptedChunks: EncryptedChunk[], rootHash: string, options?: SyncOptions): Promise<SyncResult>
325
+ getSyncStatus(projectId: string): Promise<SyncStatus>
326
+ cancelSync(projectId: string): Promise<boolean>
327
+ ```
295
328
 
296
- /**
297
- * 🎯 ОСНОВНОЙ WORKFLOW - используйте этот паттерн в вашем VS Code расширении
298
- */
299
- async function handleProjectIndexing(projectPath: string) {
300
- const sdk = new CodeSolverSDK({
301
- baseURL: 'http://localhost:3000',
302
- apiKey: 'your-api-key'
303
- });
329
+ ## Chat API (`sdk.chat`)
330
+ ```typescript
331
+ chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
332
+ chatStream(messages: ChatMessage[], options?: ChatOptions): Promise<AsyncIterable<ChatStreamChunk>>
333
+ cancelCurrentRequest(): void
334
+ ```
304
335
 
305
- // 1. 🔍 Получить или создать проект
306
- const project = await sdk.projects.findOrCreateProject(
307
- projectPath,
308
- path.basename(projectPath)
309
- );
310
- const projectId = project.id;
311
-
312
- // 2. 🔄 КРИТИЧЕСКИ ВАЖНО: Проверить прерванные сессии
313
- const recoveryStatus = await sdk.projects.getRecoveryStatus(projectId);
314
-
315
- if (recoveryStatus.hasInterruptedSession) {
316
- // 🎨 Cursor-like UX: Показать диалог восстановления
317
- const info = recoveryStatus.recoveryInfo!;
318
- const choice = await showUserChoice({
319
- title: 'Indexing was interrupted',
320
- message: `Indexing was interrupted at ${info.progress.percentage}%. Continue from where you left off?`,
321
- buttons: [
322
- { text: '🔄 Continue Indexing', value: 'continue' },
323
- { text: '🆕 Start Fresh', value: 'fresh' }
324
- ]
325
- });
336
+ ## Search API (`sdk.search`)
337
+ ```typescript
338
+ search(query: string, options?: SearchOptions): Promise<SearchResult[]>
339
+ searchThenFetch(query: string, options?: SearchThenFetchOptions): Promise<SearchThenFetchResult>
340
+ ```
326
341
 
327
- if (choice === 'continue') {
328
- return await continueInterruptedIndexing(projectId);
329
- } else {
330
- return await startFreshIndexing(projectId);
331
- }
332
- }
342
+ ## WebSocket API (`sdk.projectSync`)
343
+ ```typescript
344
+ connectProjectSync(projectId: string): Promise<void>
345
+ onSyncProgress(callback: (progress: SyncProgressEvent) => void): void
346
+ onSyncCompleted(callback: (result: SyncCompletedEvent) => void): void
347
+ onSyncError(callback: (error: SyncErrorEvent) => void): void
348
+ disconnectWebSocket(): void
349
+ ```
333
350
 
334
- // 3. 🔍 Проверить нужна ли синхронизация (Smart Sync)
335
- const clientHash = await computeMerkleRootHash(projectPath);
336
- const state = await sdk.projects.getProjectState(projectId, clientHash);
337
351
 
338
- if (!state.syncRequired) {
339
- console.log('✅ Проект актуален, синхронизация не нужна');
340
- return { success: true, message: 'Project is up to date' };
341
- }
352
+ ### 🏗️ **Projects API (`sdk.projects`)**
342
353
 
343
- // 4. 🚀 Начать новую синхронизацию
344
- return await startFreshIndexing(projectId, clientHash);
345
- }
354
+ #### **Основные методы для клиента:**
346
355
 
347
- /**
348
- * 🔄 Продолжение прерванной индексации
349
- */
350
- async function continueInterruptedIndexing(projectId: string) {
351
- const resumed = await sdk.projects.resumeSync(projectId, {
352
- skipDuplicates: true,
353
- continueFromLastBatch: true
354
- });
356
+ ```typescript
357
+ // 🔍 Управление проектами
358
+ createProject(name: string, data?: any): Promise<Project>
359
+ getAllProjects(): Promise<Project[]>
360
+ getProject(projectId: string): Promise<Project | null>
361
+ findOrCreateProject(projectPath: string, projectName: string): Promise<Project>
355
362
 
356
- if (!resumed.success) {
357
- console.error('Failed to resume:', resumed.message);
358
- return await startFreshIndexing(projectId); // Fallback
359
- }
363
+ // 📊 Smart Sync - проверка состояния проекта
364
+ getProjectState(projectId: string, clientRootHash?: string): Promise<ProjectState>
360
365
 
361
- console.log(`✅ Resumed from batch ${resumed.continueFromBatch || 0}`);
362
-
363
- // Продолжить обычную синхронизацию
364
- const merkleHash = await computeMerkleRootHash(workspacePath);
365
- return await performDeltaSync(projectId, merkleHash, {
366
- resumeFromSession: resumed.sessionId
367
- });
368
- }
366
+ // 🔄 Session Recovery - восстановление прерванных сессий
367
+ getRecoveryStatus(projectId: string): Promise<RecoveryStatus>
368
+ resumeSync(projectId: string, options?: ResumeOptions): Promise<ResumeResult>
369
+ cancelRecovery(projectId: string): Promise<{ success: boolean }>
369
370
 
370
- /**
371
- * 🆕 Начать новую индексацию (с очисткой прерванных сессий)
372
- */
373
- async function startFreshIndexing(projectId: string, clientHash?: string) {
374
- // Отменить прерванные сессии если есть
375
- await sdk.projects.cancelRecovery(projectId);
376
-
377
- // Вычислить hash если не передан
378
- if (!clientHash) {
379
- clientHash = await computeMerkleRootHash(workspacePath);
380
- }
371
+ // 🚀 Delta Sync инициализация
372
+ initializeDeltaSync(projectId: string, clientRootHash: string): Promise<{
373
+ needsSync: boolean;
374
+ sessionId?: string;
375
+ lastSyncHash?: string;
376
+ }>
381
377
 
382
- // Начать новую синхронизацию
383
- return await performDeltaSync(projectId, clientHash);
384
- }
378
+ // 🧹 Очистка и управление
379
+ resetIndexing(projectId: string): Promise<ResetResult>
380
+ deleteProject(projectId: string): Promise<void>
381
+ ```
382
+
383
+ ### 🔄 **Delta Manager API (`sdk.deltaManager`)**
384
+
385
+ #### ✅ **Методы для отправки chunks:**
386
+
387
+ ```typescript
388
+ // 📤 Отправка готовых зашифрованных chunks на сервер
389
+ syncEncryptedChunks(
390
+ projectId: string,
391
+ encryptedChunks: EncryptedChunk[],
392
+ rootHash: string,
393
+ options?: SyncOptions
394
+ ): Promise<SyncResult>
395
+
396
+ // 🧹 Очистка удаленных файлов из векторной базы
397
+ cleanupDeletedFiles(
398
+ projectId: string,
399
+ currentFiles: FileContent[]
400
+ ): Promise<CleanupResult>
401
+
402
+ // 📊 Получение статуса синхронизации
403
+ getSyncStatus(projectId: string): Promise<SyncStatus>
404
+
405
+ // ❌ Отмена синхронизации
406
+ cancelSync(projectId: string): Promise<boolean>
407
+ ```
408
+
409
+ ### 💬 **Chat API (`sdk.chat`)**
410
+
411
+ ```typescript
412
+ // 💬 Отправка сообщения в чат
413
+ chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
414
+
415
+ // 🌊 Потоковая отправка (streaming)
416
+ chatStream(messages: ChatMessage[], options?: ChatOptions): Promise<AsyncIterable<ChatStreamChunk>>
417
+
418
+ // ❌ Отмена активного запроса
419
+ cancelCurrentRequest(): void
420
+ ```
421
+
422
+ ### 🔍 **Search API (`sdk.search`)**
423
+
424
+ ```typescript
425
+ // 🔍 Векторный поиск по коду
426
+ search(query: string, options?: SearchOptions): Promise<SearchResult[]>
427
+
428
+ // 🔍 Поиск с последующей выборкой контекста
429
+ searchThenFetch(query: string, options?: SearchThenFetchOptions): Promise<SearchThenFetchResult>
430
+ ```
431
+
432
+ ### 🌐 **WebSocket API (`sdk.projectSync`)**
433
+
434
+ ```typescript
435
+ // 🔌 Подключение к WebSocket для real-time уведомлений
436
+ connectProjectSync(projectId: string): Promise<void>
437
+
438
+ // 📡 Подписка на события синхронизации
439
+ onSyncProgress(callback: (progress: SyncProgressEvent) => void): void
440
+ onSyncCompleted(callback: (result: SyncCompletedEvent) => void): void
441
+ onSyncError(callback: (error: SyncErrorEvent) => void): void
442
+
443
+ // 🔌 Отключение WebSocket
444
+ disconnectWebSocket(): void
385
445
 
386
446
  /**
387
447
  * 🧹 Полная очистка проекта (удаление всех данных)
@@ -491,7 +551,19 @@ interface SyncResult {
491
551
  #### Примеры использования
492
552
 
493
553
  ```javascript
494
- // Полный цикл delta-chunking синхронизации
554
+ // Полный цикл delta-chunking синхронизации с оптимальной конфигурацией
555
+ const sdk = new CodeSolverSDK({
556
+ baseURL: 'https://api.codesolver.app',
557
+ apiKey: 'your-api-key',
558
+ deltaChunking: {
559
+ enabled: true,
560
+ chunking: {
561
+ maxChars: 2000, // Оптимальный размер для большинства файлов (~500 токенов)
562
+ minChars: 500, // Минимум для избежания мелких чанков (~130 токенов)
563
+ }
564
+ }
565
+ });
566
+
495
567
  const syncResult = await sdk.deltaSync.initializeSync('project-id', {
496
568
  incremental: true,
497
569
  compression: true
@@ -1,169 +1,51 @@
1
1
  "use strict";
2
2
  /**
3
- * 🚀 Indexing API - управление индексацией проектов
3
+ * 🚨 АРХИТЕКТУРНАЯ ОШИБКА: IndexingApi удален!
4
4
  *
5
- * Предоставляет методы для запуска, остановки и мониторинга
6
- * индексации проектов, а также получения статуса.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.IndexingApi = void 0;
10
- /**
11
- * API для управления индексацией проектов
5
+ * Backend SDK не должен работать с файловыми путями!
6
+ * Вся логика индексации перенесена в Projects API.
12
7
  *
13
- * @example
14
- * ```javascript
15
- * // Создание и индексация проекта
16
- * const result = await sdk.indexing.indexProject('/path/to/project', 'My Project');
17
- * console.log('Project ID:', result.projectId);
8
+ * ✅ ИСПОЛЬЗУЙТЕ вместо этого:
18
9
  *
19
- * // Получение статуса индексации
20
- * const status = await sdk.indexing.getStatus(result.projectId);
21
- * console.log('Progress:', status.progress);
10
+ * ```typescript
11
+ * // Создание проекта Client Extension):
12
+ * const project = await sdk.projects.createProject('My Project', {
13
+ * description: 'Описание проекта'
14
+ * });
22
15
  *
23
- * // Ожидание завершения индексации
24
- * const finalStatus = await sdk.indexing.waitForCompletion(result.projectId);
25
- * console.log('Final status:', finalStatus.status);
16
+ * // Получение статуса индексации:
17
+ * const status = await sdk.projects.getIndexingStatus(project.id);
26
18
  *
27
- * // Отмена индексации
28
- * await sdk.indexing.cancelIndexing(result.projectId);
19
+ * // Отмена индексации:
20
+ * await sdk.projects.cancelIndexing(project.id);
21
+ *
22
+ * // Real-time статус через WebSocket:
23
+ * await sdk.connectProjectSync(project.id);
24
+ * sdk.onSyncProgress((progress) => {
25
+ * console.log('Progress:', progress.percentage);
26
+ * });
29
27
  * ```
30
28
  */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.IndexingApi = void 0;
31
31
  class IndexingApi {
32
- constructor(httpClient) {
33
- this.httpClient = httpClient;
34
- }
35
- /**
36
- * Создает проект и запускает его индексацию
37
- *
38
- * @param {string} projectPath Путь к проекту (для совместимости с тестами)
39
- * @param {string} projectName Имя проекта
40
- * @param {string} [description] Описание проекта
41
- * @returns {Promise<IndexProjectResult>} Результат создания проекта
42
- */
43
- async indexProject(projectPath, projectName, description) {
44
- // Создаем проект
45
- const createRequest = {
46
- name: projectName,
47
- description: description || `Проект из ${projectPath}`
48
- };
49
- const project = await this.httpClient.post('/api/v1/projects', createRequest);
50
- // Запускаем индексацию
51
- const indexingResult = await this.httpClient.post(`/api/v1/projects/${project.id}/index`);
52
- return {
53
- projectId: project.id,
54
- name: project.name,
55
- status: indexingResult.status || 'started',
56
- message: indexingResult.message || 'Индексация запущена'
57
- };
58
- }
59
- /**
60
- * Получает текущий статус индексации проекта
61
- *
62
- * ⚠️ ВАЖНО: Для real-time уведомлений используйте WebSocket:
63
- * ```typescript
64
- * // Правильно (real-time):
65
- * await sdk.connectWebSocket();
66
- * sdk.projectSync.on('sync-status-update', (status) => {
67
- * console.log('Статус обновлен:', status);
68
- * });
69
- *
70
- * // Неправильно (не делайте polling):
71
- * // setInterval(() => sdk.indexing.getStatus(id), 2000); // ❌
72
- * ```
73
- *
74
- * @param {string} projectId ID проекта
75
- * @returns {Promise<IndexingStatus>} Текущий статус индексации
76
- */
77
- async getStatus(projectId) {
78
- this.validateProjectId(projectId);
79
- const status = await this.httpClient.get(`/api/v1/projects/${projectId}/indexing-status`);
80
- return {
81
- status: status.status || 'unknown',
82
- progress: status.progress || 0,
83
- totalFiles: status.totalFiles,
84
- processedFiles: status.processedFiles,
85
- currentFile: status.currentFile,
86
- error: status.error,
87
- updatedAt: new Date().toISOString()
88
- };
89
- }
90
- /**
91
- * ⚠️ DEPRECATED: Метод отключен. Используйте WebSocket для real-time уведомлений
92
- *
93
- * @deprecated Используйте WebSocket подход:
94
- * ```typescript
95
- * await sdk.connectWebSocket();
96
- * sdk.projectSync.on('sync-status-update', (status) => {
97
- * if (status.status === 'completed') {
98
- * console.log('Индексация завершена!');
99
- * }
100
- * });
101
- * sdk.projectSync.subscribeToProject(projectId);
102
- * ```
103
- *
104
- * @param {string} projectId ID проекта
105
- * @param {number} [timeout=300000] Таймаут в миллисекундах
106
- * @returns {Promise<IndexingStatus>} Бросает ошибку
107
- */
108
- async waitForCompletion(projectId, timeout = 300000) {
109
- throw new Error('❌ waitForCompletion() ОТКЛЮЧЕН для предотвращения polling.\n\n' +
110
- '✅ ИСПОЛЬЗУЙТЕ WebSocket для real-time уведомлений:\n\n' +
111
- 'await sdk.connectWebSocket();\n' +
112
- 'sdk.projectSync.on(\'sync-status-update\', (status) => {\n' +
113
- ' if (status.status === \'completed\') {\n' +
114
- ' console.log(\'Индексация завершена!\');\n' +
115
- ' }\n' +
116
- '});\n' +
117
- 'sdk.projectSync.subscribeToProject(projectId);\n\n' +
118
- '📖 Подробнее: https://docs.codesolver.dev/websocket');
119
- }
120
- /**
121
- * Отменяет текущую индексацию проекта
122
- *
123
- * @param {string} projectId ID проекта
124
- * @returns {Promise<void>}
125
- */
126
- async cancelIndexing(projectId) {
127
- this.validateProjectId(projectId);
128
- await this.httpClient.post(`/api/v1/projects/${projectId}/cancel-indexing`);
129
- }
130
- /**
131
- * Перезапускает индексацию проекта
132
- *
133
- * @param {string} projectId ID проекта
134
- * @returns {Promise<IndexingStatus>} Статус после перезапуска
135
- */
136
- async restartIndexing(projectId) {
137
- this.validateProjectId(projectId);
138
- // Сначала отменяем текущую индексацию
139
- try {
140
- await this.cancelIndexing(projectId);
141
- }
142
- catch (error) {
143
- // Игнорируем ошибки отмены - возможно индексация уже завершена
144
- }
145
- // Запускаем новую индексацию
146
- const result = await this.httpClient.post(`/api/v1/projects/${projectId}/index`);
147
- return {
148
- status: result.status || 'started',
149
- progress: 0,
150
- updatedAt: new Date().toISOString()
151
- };
152
- }
153
- /**
154
- * Валидация ID проекта
155
- * @private
156
- */
157
- validateProjectId(projectId) {
158
- if (projectId === undefined || projectId === null) {
159
- throw new Error('Project ID is required');
160
- }
161
- if (typeof projectId !== 'string') {
162
- throw new Error('Project ID must be a string');
163
- }
164
- if (projectId.trim().length === 0) {
165
- throw new Error('Project ID cannot be empty');
166
- }
32
+ constructor() {
33
+ throw new Error(`
34
+ 🚨 АРХИТЕКТУРНАЯ ОШИБКА: IndexingApi недоступен!
35
+
36
+ Backend SDK не должен работать с файловыми путями.
37
+
38
+ ИСПОЛЬЗУЙТЕ Projects API:
39
+ - sdk.projects.createProject() - создание проекта
40
+ - sdk.projects.getIndexingStatus() - статус индексации
41
+ - sdk.projects.cancelIndexing() - отмена индексации
42
+
43
+ ИСПОЛЬЗУЙТЕ WebSocket для real-time:
44
+ - sdk.connectProjectSync() - подключение
45
+ - sdk.onSyncProgress() - прогресс индексации
46
+
47
+ 📖 Документация: https://docs.codesolver.dev/projects-api
48
+ `);
167
49
  }
168
50
  }
169
51
  exports.IndexingApi = IndexingApi;
@@ -1 +1 @@
1
- {"version":3,"file":"indexing-api.js","sourceRoot":"","sources":["../../../src/api/indexing-api.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAgDH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,WAAW;IAGtB,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAChB,WAAmB,EACnB,WAAmB,EACnB,WAAoB;QAEpB,iBAAiB;QACjB,MAAM,aAAa,GAAwB;YACzC,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,WAAW,IAAI,aAAa,WAAW,EAAE;SACvD,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAE9E,uBAAuB;QACvB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;QAE1F,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,SAAS;YAC1C,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,qBAAqB;SACzD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;QAE1F,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;YAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;YAC9B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,UAAkB,MAAM;QACjE,MAAM,IAAI,KAAK,CACb,gEAAgE;YAChE,wDAAwD;YACxD,iCAAiC;YACjC,4DAA4D;YAC5D,4CAA4C;YAC5C,+CAA+C;YAC/C,OAAO;YACP,OAAO;YACP,oDAAoD;YACpD,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,sCAAsC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+DAA+D;QACjE,CAAC;QAED,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,QAAQ,CAAC,CAAC;QAEjF,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;YAClC,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,SAAc;QACtC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAjKD,kCAiKC"}
1
+ {"version":3,"file":"indexing-api.js","sourceRoot":"","sources":["../../../src/api/indexing-api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAEH,MAAa,WAAW;IACtB;QACE,MAAM,IAAI,KAAK,CAAC;;;;;;;;;;;;;;;KAef,CAAC,CAAC;IACL,CAAC;CACF;AAnBD,kCAmBC"}