solver-sdk 5.1.0 → 5.1.3
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.
- package/README.md +264 -4
- package/dist/cjs/api/delta-chunking-api.js +142 -0
- package/dist/cjs/api/delta-chunking-api.js.map +1 -0
- package/dist/cjs/api/projects-api.js +94 -27
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/code-solver-sdk.js +96 -4
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/cjs/delta-chunking/delta-chunking-manager.js +202 -0
- package/dist/cjs/delta-chunking/delta-chunking-manager.js.map +1 -0
- package/dist/cjs/delta-chunking/delta-chunking-utils.js +315 -0
- package/dist/cjs/delta-chunking/delta-chunking-utils.js.map +1 -0
- package/dist/cjs/index.js +10 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/delta-chunking.js +7 -0
- package/dist/cjs/types/delta-chunking.js.map +1 -0
- package/dist/esm/api/delta-chunking-api.js +138 -0
- package/dist/esm/api/delta-chunking-api.js.map +1 -0
- package/dist/esm/api/projects-api.js +94 -27
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/code-solver-sdk.js +96 -4
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/esm/delta-chunking/delta-chunking-manager.js +198 -0
- package/dist/esm/delta-chunking/delta-chunking-manager.js.map +1 -0
- package/dist/esm/delta-chunking/delta-chunking-utils.js +278 -0
- package/dist/esm/delta-chunking/delta-chunking-utils.js.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/delta-chunking.js +6 -0
- package/dist/esm/types/delta-chunking.js.map +1 -0
- package/dist/types/api/delta-chunking-api.d.ts +51 -0
- package/dist/types/api/delta-chunking-api.d.ts.map +1 -0
- package/dist/types/api/projects-api.d.ts +42 -0
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/code-solver-sdk.d.ts +50 -1
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/dist/types/delta-chunking/delta-chunking-manager.d.ts +60 -0
- package/dist/types/delta-chunking/delta-chunking-manager.d.ts.map +1 -0
- package/dist/types/delta-chunking/delta-chunking-utils.d.ts +62 -0
- package/dist/types/delta-chunking/delta-chunking-utils.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/sdk-options.d.ts +35 -0
- package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
- package/dist/types/types/delta-chunking.d.ts +210 -0
- package/dist/types/types/delta-chunking.d.ts.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
# Code Solver SDK v5.
|
|
1
|
+
# Code Solver SDK v5.1.0
|
|
2
2
|
|
|
3
3
|
> **🗑️ Ультра-чистый JavaScript/TypeScript SDK для VS Code Extensions**
|
|
4
4
|
> Без legacy кода, без мертвых методов, только актуальный API
|
|
5
5
|
|
|
6
|
-
JavaScript/TypeScript SDK для работы с Code Solver API. Предоставляет простой интерфейс для индексации кода, семантического поиска
|
|
6
|
+
JavaScript/TypeScript SDK для работы с Code Solver API. Предоставляет простой интерфейс для индексации кода, семантического поиска функций, работы с AI чатом и **новую Delta-Chunking архитектуру** для Cursor-подобной синхронизации проектов.
|
|
7
7
|
|
|
8
8
|
## 🎯 Основные возможности
|
|
9
9
|
|
|
10
|
+
- **🔄 Delta-Chunking** - Cursor-like инкрементальная синхронизация проектов
|
|
10
11
|
- **💬 Chat API** - взаимодействие с AI моделями (Claude, GPT)
|
|
11
12
|
- **🔍 Code Search** - семантический поиск по коду и функциям
|
|
12
13
|
- **📊 Project Indexing** - индексация и анализ проектов с **богатой информацией**
|
|
@@ -15,9 +16,14 @@ JavaScript/TypeScript SDK для работы с Code Solver API. Предост
|
|
|
15
16
|
- **🔇 Настраиваемое логирование** - полный контроль над выводом в консоль
|
|
16
17
|
- **✨ Улучшенная типизация** - полные TypeScript типы с примерами и документацией
|
|
17
18
|
|
|
18
|
-
## 🚀 Что нового в v5.
|
|
19
|
+
## 🚀 Что нового в v5.1.0
|
|
19
20
|
|
|
20
|
-
>
|
|
21
|
+
> **🔄 Delta-Chunking API** - добавлена полная документация для новой архитектуры синхронизации
|
|
22
|
+
|
|
23
|
+
- ✨ **Delta-Chunking интеграция** - встроено в основной CodeSolverSDK класс
|
|
24
|
+
- 📝 **Полная документация** - все методы, типы и примеры использования
|
|
25
|
+
- 🔐 **Шифрование и chunking** - конфигурация encryption и chunking опций
|
|
26
|
+
- 🎯 **Готово к продакшену** - интеграция с backend полностью реализована
|
|
21
27
|
|
|
22
28
|
## 📦 Установка
|
|
23
29
|
|
|
@@ -143,6 +149,171 @@ const response = await sdk.chat.chat(messages, {
|
|
|
143
149
|
});
|
|
144
150
|
```
|
|
145
151
|
|
|
152
|
+
## 🔄 Delta-Chunking API
|
|
153
|
+
|
|
154
|
+
> **🚀 Новый Cursor-подобный подход к синхронизации проектов**
|
|
155
|
+
> Инкрементальные обновления, шифрование, real-time статус
|
|
156
|
+
|
|
157
|
+
### Создание SDK с Delta-Chunking
|
|
158
|
+
|
|
159
|
+
```javascript
|
|
160
|
+
import { CodeSolverSDK } from 'solver-sdk';
|
|
161
|
+
|
|
162
|
+
// Создание SDK с включенным delta-chunking
|
|
163
|
+
const sdk = await CodeSolverSDK.create({
|
|
164
|
+
baseURL: 'http://localhost:3000',
|
|
165
|
+
apiKey: 'your-api-key',
|
|
166
|
+
deltaChunking: { // ✨ Опциональная секция
|
|
167
|
+
enabled: true, // Включить delta-chunking
|
|
168
|
+
encryption: {
|
|
169
|
+
enabled: true,
|
|
170
|
+
key: 'your-32-char-encryption-key-here!' // 32 символа
|
|
171
|
+
},
|
|
172
|
+
chunking: {
|
|
173
|
+
maxTokens: 400, // Максимальный размер чанка
|
|
174
|
+
minTokens: 100, // Минимальный размер чанка
|
|
175
|
+
useTreeSitter: false, // Пока простая разбивка
|
|
176
|
+
preserveContext: true // Сохранять контекст между чанками
|
|
177
|
+
},
|
|
178
|
+
fileWatching: {
|
|
179
|
+
enabled: false, // Автоматическое наблюдение (в разработке)
|
|
180
|
+
pollInterval: 1000, // Интервал проверки изменений
|
|
181
|
+
ignorePatterns: ['node_modules/**'] // Игнорируемые файлы
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
debug: 'error'
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// Проверяем что delta-chunking включен
|
|
188
|
+
console.log('Delta-chunking доступен:', sdk.isDeltaChunkingEnabled);
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Синхронизация проекта
|
|
192
|
+
|
|
193
|
+
```javascript
|
|
194
|
+
// Основной метод синхронизации (только если deltaChunking.enabled = true)
|
|
195
|
+
const result = await sdk.syncProject('project-id', '/path/to/project', {
|
|
196
|
+
forceFull: false, // Инкрементальная синхронизация
|
|
197
|
+
batchSize: 50, // Чанков за раз
|
|
198
|
+
ignorePatterns: [ // Игнорировать файлы/папки
|
|
199
|
+
'node_modules/**',
|
|
200
|
+
'*.log',
|
|
201
|
+
'.git/**'
|
|
202
|
+
],
|
|
203
|
+
includeExtensions: ['.ts', '.js', '.py'], // Только эти расширения
|
|
204
|
+
maxFileSizeKB: 1024, // Максимальный размер файла 1MB
|
|
205
|
+
onProgress: (current, total) => { // Callback прогресса
|
|
206
|
+
console.log(`Прогресс: ${current}/${total} (${Math.round(current/total*100)}%)`);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
console.log(`✅ Синхронизация завершена: ${result.processedChunks} чанков`);
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Синхронизация файлов (для браузера)
|
|
214
|
+
|
|
215
|
+
```javascript
|
|
216
|
+
// Для web/браузерных приложений без доступа к файловой системе
|
|
217
|
+
const files = [
|
|
218
|
+
{
|
|
219
|
+
path: 'src/index.ts',
|
|
220
|
+
content: 'console.log("Hello World");',
|
|
221
|
+
size: 28
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
path: 'src/utils.ts',
|
|
225
|
+
content: 'export const sum = (a, b) => a + b;',
|
|
226
|
+
size: 37
|
|
227
|
+
}
|
|
228
|
+
];
|
|
229
|
+
|
|
230
|
+
const result = await sdk.syncFiles('project-id', files, {
|
|
231
|
+
batchSize: 20,
|
|
232
|
+
onProgress: (current, total) => {
|
|
233
|
+
console.log(`📤 Загружено: ${current}/${total}`);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Автоматическое наблюдение за изменениями
|
|
239
|
+
|
|
240
|
+
```javascript
|
|
241
|
+
// Запуск file watcher (в разработке)
|
|
242
|
+
const watcher = await sdk.startAutoSync('project-id', '/path/to/watch');
|
|
243
|
+
|
|
244
|
+
// Проверка активности
|
|
245
|
+
console.log(`👀 Auto-sync активен: ${watcher.isActive}`);
|
|
246
|
+
|
|
247
|
+
// Остановка наблюдения
|
|
248
|
+
await watcher.stop();
|
|
249
|
+
console.log('🔴 File watcher остановлен');
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Статус и управление
|
|
253
|
+
|
|
254
|
+
```javascript
|
|
255
|
+
// Проверка статуса синхронизации
|
|
256
|
+
const status = await sdk.getSyncStatus('project-id');
|
|
257
|
+
console.log(`📊 Статус: ${status.status}, прогресс: ${status.progress || 0}%`);
|
|
258
|
+
|
|
259
|
+
// Отмена активной синхронизации
|
|
260
|
+
const cancelled = await sdk.cancelSync('project-id');
|
|
261
|
+
if (cancelled) {
|
|
262
|
+
console.log('❌ Синхронизация отменена');
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Полный пример workflow
|
|
267
|
+
|
|
268
|
+
```javascript
|
|
269
|
+
import { CodeSolverSDK } from 'solver-sdk';
|
|
270
|
+
|
|
271
|
+
async function syncProject() {
|
|
272
|
+
// 1. Создание SDK
|
|
273
|
+
const sdk = await CodeSolverSDK.create({
|
|
274
|
+
baseURL: 'http://localhost:3000',
|
|
275
|
+
deltaChunking: {
|
|
276
|
+
enabled: true,
|
|
277
|
+
encryption: { enabled: true, key: 'my-secret-key-32-characters-long!' }
|
|
278
|
+
},
|
|
279
|
+
debug: 'info'
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
try {
|
|
283
|
+
// 2. Синхронизация с прогрессом
|
|
284
|
+
const result = await sdk.syncProject('my-project-id', './my-project', {
|
|
285
|
+
onProgress: (current, total) => {
|
|
286
|
+
const percent = Math.round((current / total) * 100);
|
|
287
|
+
console.log(`🔄 Синхронизация: ${percent}% (${current}/${total} чанков)`);
|
|
288
|
+
},
|
|
289
|
+
ignorePatterns: ['node_modules/**', 'dist/**', '*.log']
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
// 3. Результат
|
|
293
|
+
console.log('🎉 Синхронизация завершена:', {
|
|
294
|
+
success: result.success,
|
|
295
|
+
processedChunks: result.processedChunks,
|
|
296
|
+
duration: result.duration + 'ms',
|
|
297
|
+
newFiles: result.details?.newFiles,
|
|
298
|
+
changedFiles: result.details?.changedFiles
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
// 4. Проверка финального статуса
|
|
302
|
+
const status = await sdk.getSyncStatus('my-project-id');
|
|
303
|
+
console.log(`✅ Финальный статус: ${status.status}`);
|
|
304
|
+
|
|
305
|
+
} catch (error) {
|
|
306
|
+
console.error('❌ Ошибка синхронизации:', error.message);
|
|
307
|
+
|
|
308
|
+
// Отменяем если что-то пошло не так
|
|
309
|
+
await sdk.cancelSync('my-project-id');
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Запуск
|
|
314
|
+
syncProject();
|
|
315
|
+
```
|
|
316
|
+
|
|
146
317
|
## 💡 Типы данных
|
|
147
318
|
|
|
148
319
|
### Project
|
|
@@ -161,6 +332,95 @@ interface Project {
|
|
|
161
332
|
}
|
|
162
333
|
```
|
|
163
334
|
|
|
335
|
+
### Delta-Chunking Types
|
|
336
|
+
|
|
337
|
+
```typescript
|
|
338
|
+
// Расширенная конфигурация CodeSolverSDK с delta-chunking
|
|
339
|
+
interface CodeSolverSDKOptions {
|
|
340
|
+
baseURL: string;
|
|
341
|
+
apiKey?: string;
|
|
342
|
+
deltaChunking?: { // ✨ Опциональная секция
|
|
343
|
+
enabled: boolean; // Включение delta-chunking функциональности
|
|
344
|
+
|
|
345
|
+
encryption?: {
|
|
346
|
+
enabled: boolean; // Включить шифрование чанков
|
|
347
|
+
key: string; // 32-символьный ключ для AES-256
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
chunking?: {
|
|
351
|
+
maxTokens?: number; // Максимальный размер чанка (по умолчанию: 400)
|
|
352
|
+
minTokens?: number; // Минимальный размер чанка (по умолчанию: 100)
|
|
353
|
+
useTreeSitter?: boolean; // Использовать tree-sitter парсер (в разработке)
|
|
354
|
+
preserveContext?: boolean; // Сохранять контекст между чанками
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
fileWatching?: {
|
|
358
|
+
enabled: boolean; // Включить автоматическое наблюдение за изменениями
|
|
359
|
+
pollInterval?: number; // Интервал проверки изменений в мс (по умолчанию: 1000)
|
|
360
|
+
ignorePatterns?: string[]; // Паттерны для игнорирования файлов
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
timeout?: number; // Таймаут запросов (мс)
|
|
364
|
+
debug?: 'silent' | 'error' | 'warn' | 'info' | 'debug';
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// Опции синхронизации
|
|
368
|
+
interface SyncOptions {
|
|
369
|
+
forceFull?: boolean; // Принудительная полная синхронизация
|
|
370
|
+
batchSize?: number; // Размер батча для загрузки чанков (по умолчанию: 50)
|
|
371
|
+
ignorePatterns?: string[]; // Паттерны для игнорирования файлов
|
|
372
|
+
includeExtensions?: string[]; // Включать только определенные расширения
|
|
373
|
+
maxFileSizeKB?: number; // Максимальный размер файла для обработки (KB)
|
|
374
|
+
onProgress?: (current: number, total: number) => void; // Callback прогресса
|
|
375
|
+
timeoutMs?: number; // Таймаут для операций
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// Результат синхронизации
|
|
379
|
+
interface SyncResult {
|
|
380
|
+
success: boolean;
|
|
381
|
+
projectId: string;
|
|
382
|
+
sessionId?: string;
|
|
383
|
+
processedChunks: number;
|
|
384
|
+
totalChunks: number;
|
|
385
|
+
duration: number; // Время выполнения в мс
|
|
386
|
+
error?: string;
|
|
387
|
+
details?: {
|
|
388
|
+
newFiles: number;
|
|
389
|
+
changedFiles: number;
|
|
390
|
+
deletedFiles: number;
|
|
391
|
+
failedChunks: number;
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// Статус синхронизации
|
|
396
|
+
interface SyncStatus {
|
|
397
|
+
status: 'inactive' | 'initializing' | 'active' | 'finalizing' | 'completed' | 'failed';
|
|
398
|
+
progress?: number; // 0-100%
|
|
399
|
+
chunksReceived?: number;
|
|
400
|
+
chunksProcessed?: number;
|
|
401
|
+
sessionId?: string;
|
|
402
|
+
errors?: string[];
|
|
403
|
+
startTime?: Date;
|
|
404
|
+
estimatedCompletion?: Date;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// File watcher для автоматической синхронизации
|
|
408
|
+
interface FileWatcher {
|
|
409
|
+
projectId: string;
|
|
410
|
+
watchPath: string;
|
|
411
|
+
isActive: boolean;
|
|
412
|
+
start(): Promise<void>;
|
|
413
|
+
stop(): Promise<void>;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// Контент файла
|
|
417
|
+
interface FileContent {
|
|
418
|
+
path: string; // Относительный путь файла
|
|
419
|
+
content: string; // Содержимое файла
|
|
420
|
+
size: number; // Размер в байтах
|
|
421
|
+
}
|
|
422
|
+
```
|
|
423
|
+
|
|
164
424
|
## 📚 Пример использования
|
|
165
425
|
|
|
166
426
|
```javascript
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🚀 Delta-Chunking API клиент
|
|
4
|
+
* Интеграция с backend endpoints
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DeltaChunkingApi = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* API клиент для delta-chunking операций
|
|
10
|
+
*/
|
|
11
|
+
class DeltaChunkingApi {
|
|
12
|
+
constructor(httpClient) {
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Инициализация синхронизации проекта
|
|
17
|
+
*/
|
|
18
|
+
async initSync(projectId, request) {
|
|
19
|
+
const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-init`, request);
|
|
20
|
+
if (!response.sessionId) {
|
|
21
|
+
throw new Error('Server did not return sessionId');
|
|
22
|
+
}
|
|
23
|
+
return response;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Отправка батча зашифрованных чанков
|
|
27
|
+
*/
|
|
28
|
+
async uploadChunkBatch(projectId, batchRequest) {
|
|
29
|
+
const response = await this.httpClient.post(`/api/v1/projects/${projectId}/delta-chunks`, batchRequest);
|
|
30
|
+
return response;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Получение статуса синхронизации
|
|
34
|
+
*/
|
|
35
|
+
async getSyncStatus(projectId) {
|
|
36
|
+
const response = await this.httpClient.get(`/api/v1/projects/${projectId}/sync-status`);
|
|
37
|
+
return {
|
|
38
|
+
projectId,
|
|
39
|
+
sessionId: response.sessionId,
|
|
40
|
+
status: response.status || 'idle',
|
|
41
|
+
progress: response.progress || 0,
|
|
42
|
+
chunksReceived: response.chunksReceived || 0,
|
|
43
|
+
chunksProcessed: response.chunksProcessed || 0,
|
|
44
|
+
errorCount: response.errorCount || 0,
|
|
45
|
+
startedAt: response.startedAt ? new Date(response.startedAt) : undefined,
|
|
46
|
+
completedAt: response.completedAt ? new Date(response.completedAt) : undefined,
|
|
47
|
+
lastActivity: response.lastActivity ? new Date(response.lastActivity) : undefined,
|
|
48
|
+
error: response.error
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Завершение синхронизации
|
|
53
|
+
*/
|
|
54
|
+
async finalizeSync(projectId) {
|
|
55
|
+
const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-finalize`, {});
|
|
56
|
+
return {
|
|
57
|
+
success: response.success || false,
|
|
58
|
+
projectId,
|
|
59
|
+
sessionId: response.sessionId,
|
|
60
|
+
processedChunks: response.processedChunks || 0,
|
|
61
|
+
totalChunks: response.totalChunks || 0,
|
|
62
|
+
duration: response.duration || 0,
|
|
63
|
+
error: response.error,
|
|
64
|
+
details: response.details
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Отмена синхронизации
|
|
69
|
+
*/
|
|
70
|
+
async cancelSync(projectId) {
|
|
71
|
+
const response = await this.httpClient.delete(`/api/v1/projects/${projectId}/sync-cancel`);
|
|
72
|
+
return {
|
|
73
|
+
success: response.success || false,
|
|
74
|
+
message: response.message
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Batch upload с retry логикой
|
|
79
|
+
*/
|
|
80
|
+
async uploadChunksWithRetry(projectId, chunks, options = {}) {
|
|
81
|
+
const { batchSize = 50, maxRetries = 3, onProgress } = options;
|
|
82
|
+
const totalChunks = chunks.length;
|
|
83
|
+
const totalBatches = Math.ceil(totalChunks / batchSize);
|
|
84
|
+
let processedChunks = 0;
|
|
85
|
+
let failedChunks = 0;
|
|
86
|
+
const errors = [];
|
|
87
|
+
for (let batchIndex = 0; batchIndex < totalBatches; batchIndex++) {
|
|
88
|
+
const startIdx = batchIndex * batchSize;
|
|
89
|
+
const endIdx = Math.min(startIdx + batchSize, totalChunks);
|
|
90
|
+
const batchChunks = chunks.slice(startIdx, endIdx);
|
|
91
|
+
const batchRequest = {
|
|
92
|
+
batchIndex,
|
|
93
|
+
totalBatches,
|
|
94
|
+
chunks: batchChunks
|
|
95
|
+
};
|
|
96
|
+
let success = false;
|
|
97
|
+
let retryCount = 0;
|
|
98
|
+
while (!success && retryCount < maxRetries) {
|
|
99
|
+
try {
|
|
100
|
+
const result = await this.uploadChunkBatch(projectId, batchRequest);
|
|
101
|
+
processedChunks += result.processed;
|
|
102
|
+
failedChunks += result.failed;
|
|
103
|
+
if (result.errors) {
|
|
104
|
+
errors.push(...result.errors);
|
|
105
|
+
}
|
|
106
|
+
success = true;
|
|
107
|
+
// Уведомляем о прогрессе
|
|
108
|
+
if (onProgress) {
|
|
109
|
+
onProgress(processedChunks, totalChunks);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
retryCount++;
|
|
114
|
+
if (retryCount >= maxRetries) {
|
|
115
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
116
|
+
errors.push(`Batch ${batchIndex} failed after ${maxRetries} retries: ${errorMessage}`);
|
|
117
|
+
failedChunks += batchChunks.length;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// Экспоненциальная задержка перед повтором
|
|
121
|
+
await new Promise(resolve => setTimeout(resolve, Math.pow(2, retryCount) * 1000));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
success: failedChunks === 0,
|
|
128
|
+
projectId,
|
|
129
|
+
processedChunks,
|
|
130
|
+
totalChunks,
|
|
131
|
+
duration: 0, // Будет заполнено на уровне SDK
|
|
132
|
+
error: errors.length > 0 ? errors.join('; ') : undefined,
|
|
133
|
+
details: {
|
|
134
|
+
newFiles: 0, // Будет заполнено на уровне SDK
|
|
135
|
+
changedFiles: 0,
|
|
136
|
+
deletedFiles: 0
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.DeltaChunkingApi = DeltaChunkingApi;
|
|
142
|
+
//# sourceMappingURL=delta-chunking-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-chunking-api.js","sourceRoot":"","sources":["../../../src/api/delta-chunking-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,26 +76,18 @@ class ProjectsApi {
|
|
|
76
76
|
* @throws {Error} Если не удалось получить проекты или сервер вернул ошибку
|
|
77
77
|
*/
|
|
78
78
|
async getAllProjects() {
|
|
79
|
-
//
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
const error = response.error;
|
|
83
|
-
throw new Error(error?.message || 'Не удалось получить проекты');
|
|
84
|
-
}
|
|
85
|
-
return response.data;
|
|
79
|
+
// HttpClient уже извлекает data из axios response, возвращая прямой массив Project[]
|
|
80
|
+
const projects = await this.httpClient.get('/api/v1/projects');
|
|
81
|
+
return projects;
|
|
86
82
|
}
|
|
87
83
|
/**
|
|
88
84
|
* Получает список готовых к работе проектов
|
|
89
85
|
* @returns {Promise<Project[]>} Список готовых проектов
|
|
90
86
|
*/
|
|
91
87
|
async getReadyProjects() {
|
|
92
|
-
//
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
const error = response.error;
|
|
96
|
-
throw new Error(error?.message || 'Не удалось получить готовые проекты');
|
|
97
|
-
}
|
|
98
|
-
return response.data;
|
|
88
|
+
// HttpClient уже извлекает data из axios response, возвращая прямой массив Project[]
|
|
89
|
+
const projects = await this.httpClient.get('/api/v1/projects/ready');
|
|
90
|
+
return projects;
|
|
99
91
|
}
|
|
100
92
|
/**
|
|
101
93
|
* Получает детальную информацию о проекте по его ID
|
|
@@ -126,13 +118,9 @@ class ProjectsApi {
|
|
|
126
118
|
* @throws {Error} Если проект не найден или произошла ошибка сервера
|
|
127
119
|
*/
|
|
128
120
|
async getProject(projectId) {
|
|
129
|
-
//
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
const error = response.error;
|
|
133
|
-
throw new Error(error?.message || `Не удалось найти проект ${projectId}`);
|
|
134
|
-
}
|
|
135
|
-
return response.data;
|
|
121
|
+
// HttpClient уже извлекает data из axios response, возвращая прямой объект Project
|
|
122
|
+
const project = await this.httpClient.get(`/api/v1/projects/${projectId}`);
|
|
123
|
+
return project;
|
|
136
124
|
}
|
|
137
125
|
/**
|
|
138
126
|
* Создает новый проект или возвращает существующий (автоматическая дедупликация)
|
|
@@ -180,12 +168,9 @@ class ProjectsApi {
|
|
|
180
168
|
description: data.description,
|
|
181
169
|
...data
|
|
182
170
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
throw new Error(error?.message || `Не удалось создать проект "${name}"`);
|
|
187
|
-
}
|
|
188
|
-
return response.data;
|
|
171
|
+
// HttpClient уже извлекает data из axios response, возвращая прямой объект Project
|
|
172
|
+
const project = await this.httpClient.post('/api/v1/projects', projectData);
|
|
173
|
+
return project;
|
|
189
174
|
}
|
|
190
175
|
/**
|
|
191
176
|
* Получает статус проекта
|
|
@@ -505,6 +490,88 @@ class ProjectsApi {
|
|
|
505
490
|
throw new Error(`Не удалось получить или создать проект: ${error.message}`);
|
|
506
491
|
}
|
|
507
492
|
}
|
|
493
|
+
// ===== DELTA CHUNKING МЕТОДЫ =====
|
|
494
|
+
/**
|
|
495
|
+
* Инициализация синхронизации проекта для Delta Chunking
|
|
496
|
+
* @param projectId ID проекта
|
|
497
|
+
* @param request Данные для инициализации синхронизации
|
|
498
|
+
* @returns Результат инициализации с sessionId
|
|
499
|
+
*/
|
|
500
|
+
async sendInitialSync(projectId, request) {
|
|
501
|
+
this.validateProjectId(projectId);
|
|
502
|
+
const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-init`, request);
|
|
503
|
+
if (!response.sessionId) {
|
|
504
|
+
throw new Error('Server did not return sessionId');
|
|
505
|
+
}
|
|
506
|
+
return response;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Отправка батча зашифрованных чанков для Delta Chunking
|
|
510
|
+
* @param projectId ID проекта
|
|
511
|
+
* @param batchRequest Батч зашифрованных чанков
|
|
512
|
+
* @returns Результат обработки батча
|
|
513
|
+
*/
|
|
514
|
+
async sendDeltaSync(projectId, batchRequest) {
|
|
515
|
+
this.validateProjectId(projectId);
|
|
516
|
+
const response = await this.httpClient.post(`/api/v1/projects/${projectId}/delta-chunks`, batchRequest);
|
|
517
|
+
return response;
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Получение статуса синхронизации Delta Chunking
|
|
521
|
+
* @param projectId ID проекта
|
|
522
|
+
* @returns Текущий статус синхронизации
|
|
523
|
+
*/
|
|
524
|
+
async getDeltaSyncStatus(projectId) {
|
|
525
|
+
this.validateProjectId(projectId);
|
|
526
|
+
const response = await this.httpClient.get(`/api/v1/projects/${projectId}/sync-status`);
|
|
527
|
+
return {
|
|
528
|
+
projectId,
|
|
529
|
+
sessionId: response.sessionId,
|
|
530
|
+
status: response.status || 'idle',
|
|
531
|
+
progress: response.progress || 0,
|
|
532
|
+
chunksReceived: response.chunksReceived || 0,
|
|
533
|
+
chunksProcessed: response.chunksProcessed || 0,
|
|
534
|
+
errorCount: response.errorCount || 0,
|
|
535
|
+
startedAt: response.startedAt ? new Date(response.startedAt) : undefined,
|
|
536
|
+
completedAt: response.completedAt ? new Date(response.completedAt) : undefined,
|
|
537
|
+
lastActivity: response.lastActivity ? new Date(response.lastActivity) : undefined,
|
|
538
|
+
error: response.error
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Завершение синхронизации Delta Chunking
|
|
543
|
+
* @param projectId ID проекта
|
|
544
|
+
* @returns Результат завершения синхронизации
|
|
545
|
+
*/
|
|
546
|
+
async finalizeDeltaSync(projectId) {
|
|
547
|
+
this.validateProjectId(projectId);
|
|
548
|
+
const response = await this.httpClient.post(`/api/v1/projects/${projectId}/sync-finalize`, {});
|
|
549
|
+
// HttpClient уже извлекает data из axios response, response - это прямой объект от backend
|
|
550
|
+
return {
|
|
551
|
+
success: response.success || false,
|
|
552
|
+
projectId,
|
|
553
|
+
sessionId: response.sessionId,
|
|
554
|
+
processedChunks: response.processedChunks || 0,
|
|
555
|
+
totalChunks: response.totalChunks || 0,
|
|
556
|
+
duration: response.duration || 0,
|
|
557
|
+
error: response.error,
|
|
558
|
+
details: response.details
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
/**
|
|
562
|
+
* Отмена синхронизации Delta Chunking
|
|
563
|
+
* @param projectId ID проекта
|
|
564
|
+
* @returns Результат отмены
|
|
565
|
+
*/
|
|
566
|
+
async cancelDeltaSync(projectId) {
|
|
567
|
+
this.validateProjectId(projectId);
|
|
568
|
+
const response = await this.httpClient.delete(`/api/v1/projects/${projectId}/sync-cancel`);
|
|
569
|
+
// HttpClient уже извлекает data из axios response, response - это прямой объект от backend
|
|
570
|
+
return {
|
|
571
|
+
success: response.success || false,
|
|
572
|
+
message: response.message
|
|
573
|
+
};
|
|
574
|
+
}
|
|
508
575
|
}
|
|
509
576
|
exports.ProjectsApi = ProjectsApi;
|
|
510
577
|
//# sourceMappingURL=projects-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":";;;AAwBA;;GAEG;AACH,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,6CAA6B,CAAA;IAC7B,gDAAgC,CAAA;IAChC,gFAAgE,CAAA;IAChE,gFAAgE,CAAA;IAChE,wEAAwD,CAAA;AAC1D,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,MAA8B;IACtE,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAa,WAAW;IAItB;;;OAGG;IACH,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;OAIG;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,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,KAAK,CAAC,cAAc;QACzB,qFAAqF;QACrF,MAAM,QAAQ,GAAc,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAE1E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,gBAAgB;QAC3B,qFAAqF;QACrF,MAAM,QAAQ,GAAc,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAEhF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,KAAK,CAAC,UAAU,CAAC,SAAiB;QACvC,mFAAmF;QACnF,MAAM,OAAO,GAAY,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QAEpF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACI,KAAK,CAAC,aAAa,CACxB,IAAY,EACZ,IAAY,EACZ,OAAY,EAAE;QAEd,0DAA0D;QAC1D,MAAM,WAAW,GAAqB;YACpC,IAAI;YACJ,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,IAAI;SACR,CAAC;QAEF,mFAAmF;QACnF,MAAM,OAAO,GAAY,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAErF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,SAAS,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,UAA+B,EAAE;QAC7E,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,2FAA2F;QAC3F,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;IAC9E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CAAC,SAAiB;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;aACjG,IAAI,CAAC,QAAQ,CAAC,EAAE;YACf,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAC/C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;aAC7F,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aAChB,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,eAAe,CAC1B,SAAiB,EACjB,QAAgB,EAChB,UAKI,EAAE;QAEN,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,0EAA0E;QAC1E,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC;IAID;;;;;OAKG;IACK,cAAc,CAAC,IAAY,EAAE,SAAiB;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACxC,uBAAuB;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,CAAC;YACzF,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;YAC3C,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YAC1C,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBAClC,MAAM,CAAC,qBAAqB,GAAG,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,IAAY;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACxC,uBAAuB;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,CAAC;YACzF,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC1E,oBAAoB;YACpB,OAAO,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,IAAa;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnE,wBAAwB;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAChE,IAAI,eAAe,EAAE,CAAC;YACpB,gFAAgF;YAChF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAU,kBAAkB,EAAE;YACtE,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB;SACnE,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAC7B,IAAY,EACZ,UAII,EAAE;QAEN,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB,CAAC;QAEzF,IAAI,CAAC;YACH,kFAAkF;YAClF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC7D,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,6CAA6C;YAC7C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,EAAE,QAAQ,EAAE;gBACxF,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;aACzC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,OAAO,CAAC,EAAE;aACtB,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,+BAA+B;YAC/B,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,oDAAoD,YAAY,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,qBAAqB,CAChC,IAAY,EACZ,UAMI,EAAE;QAEN,IAAI,CAAC;YACH,oEAAoE;YACpE,IAAI,cAAc,GAAQ;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,eAAe,EAAE,OAAO,CAAC,eAAe;aACzC,CAAC;YAEF,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACzD,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,cAAc,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAC3D,CAAC;YAED,mFAAmF;YACnF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAEnE,gDAAgD;YAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,UAAU;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,iDAAiD,YAAY,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAC9B,SAAiB,EACjB,UAII,EAAE;QAEN,IAAI,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAElC,iCAAiC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACjD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gDAAgD;gBAChD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC1B,yDAAyD;oBACzD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,IAAI,KAAK,CAAC,eAAe,SAAS,eAAe,YAAY,EAAE,CAAC,CAAC;gBACzE,CAAC;gBAED,6CAA6C;gBAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACvF,CAAC;gBAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,uBAAuB,SAAS,EAAE,CAAC;gBAE5E,2CAA2C;gBAC3C,OAAO,CAAC,GAAG,CAAC,kDAAkD,SAAS,cAAc,UAAU,aAAa,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;gBAClI,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,wBAAwB,CACnC,IAAY,EACZ,UAKI,EAAE;QAEN,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,eAAe,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;oBACvD,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,0CAA0C;oBAC1C,OAAO,CAAC,IAAI,CAAC,qDAAqD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9H,CAAC;YACH,CAAC;YAED,+FAA+F;YAC/F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAU,kBAAkB,EAAE;gBACtE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB;aAC3E,CAAC,CAAC;YAEH,6BAA6B;YAC7B,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,oCAAoC;IAEpC;;;;;OAKG;IACI,KAAK,CAAC,eAAe,CAC1B,SAAiB,EACjB,OAAwB;QAExB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,SAAS,YAAY,EACzC,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CACxB,SAAiB,EACjB,YAAqC;QAErC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,SAAS,eAAe,EAC5C,YAAY,CACb,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAC/C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,oBAAoB,SAAS,cAAc,CAC5C,CAAC;QAEF,OAAO;YACL,SAAS;YACT,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,MAAM;YACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC;YAChC,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,CAAC;YAC5C,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,CAAC;YAC9C,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;YACpC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACxE,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9E,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACjF,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,SAAS,gBAAgB,EAC7C,EAAE,CACH,CAAC;QAEF,2FAA2F;QAC3F,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK;YAClC,SAAS;YACT,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,CAAC;YAC9C,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC;YACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC;YAChC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAAC,SAAiB;QAC5C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3C,oBAAoB,SAAS,cAAc,CAC5C,CAAC;QAEF,2FAA2F;QAC3F,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK;YAClC,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC;IACJ,CAAC;CACF;AAvqBD,kCAuqBC"}
|