solver-sdk 7.0.1 → 7.1.2
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 +303 -86
- package/dist/cjs/api/projects-api.js +58 -2
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/http-client.js +2 -2
- package/dist/cjs/utils/http-client.js.map +1 -1
- package/dist/cjs/utils/project-sync-client.js.map +1 -1
- package/dist/esm/api/projects-api.js +58 -2
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/http-client.js +2 -2
- package/dist/esm/utils/http-client.js.map +1 -1
- package/dist/esm/utils/project-sync-client.js.map +1 -1
- package/dist/types/api/projects-api.d.ts +61 -12
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/project-sync-client.d.ts +3 -0
- package/dist/types/utils/project-sync-client.d.ts.map +1 -1
- package/package.json +11 -13
package/README.md
CHANGED
|
@@ -1,18 +1,51 @@
|
|
|
1
|
-
# Code Solver SDK
|
|
1
|
+
# Code Solver SDK v7.1.1
|
|
2
2
|
|
|
3
|
-
Backend SDK для интеграции с Code Solver API
|
|
3
|
+
Backend SDK для интеграции с Code Solver API (Pure Cloud-First)
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 📑 Навигация
|
|
6
|
+
|
|
7
|
+
**Быстрый старт:**
|
|
8
|
+
- [Установка](#-установка-github-packages---private) • [Быстрый старт](#-быстрый-старт) • [Быстрая справка](#-быстрая-справка)
|
|
9
|
+
|
|
10
|
+
**Работа с проектами:**
|
|
11
|
+
- [Индексация](#индексация-проекта) • [Real-time прогресс](#websocket-api-sdkprojectsync) • [Recovery](#session-recovery)
|
|
12
|
+
|
|
13
|
+
**Типы и решение проблем:**
|
|
14
|
+
- [Ключевые типы](#-ключевые-типы-данных) • [Решение проблем](#-быстрое-решение-проблем) • [API Reference](#-api-reference-подробно)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 🔒 Установка (GitHub Packages - Private)
|
|
19
|
+
|
|
20
|
+
SDK теперь приватный и публикуется в GitHub Packages.
|
|
21
|
+
|
|
22
|
+
### Требования:
|
|
23
|
+
- GitHub Personal Access Token с правами `read:packages`
|
|
24
|
+
- Доступ к организации `AndroidSprintTeam`
|
|
25
|
+
|
|
26
|
+
### Установка:
|
|
6
27
|
|
|
7
28
|
```bash
|
|
8
|
-
|
|
29
|
+
# 1. Создай .npmrc в корне проекта
|
|
30
|
+
cat > .npmrc << 'EOF'
|
|
31
|
+
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN
|
|
32
|
+
@androidsprintteam:registry=https://npm.pkg.github.com
|
|
33
|
+
always-auth=true
|
|
34
|
+
EOF
|
|
35
|
+
|
|
36
|
+
# 2. Установи SDK
|
|
37
|
+
npm install @androidsprintteam/solver-sdk
|
|
9
38
|
```
|
|
10
39
|
|
|
40
|
+
**Создание токена:** https://github.com/settings/tokens/new (scopes: `read:packages`, `repo`)
|
|
41
|
+
|
|
42
|
+
**Полная документация:** см. `GITHUB_PACKAGES_SETUP.md`
|
|
43
|
+
|
|
11
44
|
## 🚀 Быстрый старт
|
|
12
45
|
|
|
13
46
|
### Локальная разработка
|
|
14
47
|
```typescript
|
|
15
|
-
import { CodeSolverSDK } from 'solver-sdk';
|
|
48
|
+
import { CodeSolverSDK } from '@androidsprintteam/solver-sdk';
|
|
16
49
|
|
|
17
50
|
const sdk = await CodeSolverSDK.create({
|
|
18
51
|
baseURL: 'http://localhost:3000',
|
|
@@ -42,39 +75,59 @@ const sdk = await CodeSolverSDK.create({
|
|
|
42
75
|
});
|
|
43
76
|
```
|
|
44
77
|
|
|
45
|
-
## 📖
|
|
78
|
+
## 📖 Быстрая справка
|
|
79
|
+
|
|
80
|
+
| Задача | Метод | Назначение |
|
|
81
|
+
|--------|-------|------------|
|
|
82
|
+
| **Индексация** |
|
|
83
|
+
| Синхронизировать проект | `sdk.deltaManager.syncEncryptedChunks(projectId, chunks, rootHash)` | Единственный способ индексации |
|
|
84
|
+
| Проверить статус | `sdk.projects.getProjectState(projectId, clientRootHash?)` | Получить состояние + totalFiles |
|
|
85
|
+
| Проверить recovery | `sdk.projects.getRecoveryStatus(projectId)` | Нужно ли возобновить прерванную синхронизацию |
|
|
86
|
+
| Возобновить синхронизацию | `sdk.projects.resumeSync(projectId)` | Продолжить прерванную индексацию |
|
|
87
|
+
| **Real-time прогресс** |
|
|
88
|
+
| Подключить WebSocket | `await sdk.connectWebSocket()` | Для live обновлений |
|
|
89
|
+
| Подписаться на проект | `sdk.projectSync.subscribeToProject(projectId)` | Получать события по проекту |
|
|
90
|
+
| Прогресс индексации | `sdk.projectSync.on('sync-progress', callback)` | `data.processedFiles / data.totalFiles` |
|
|
91
|
+
| Завершение индексации | `sdk.projectSync.on('sync-completed', callback)` | `data.statistics.totalFiles` |
|
|
92
|
+
| **Проекты** |
|
|
93
|
+
| Получить все проекты | `sdk.projects.getAllProjects()` | Список всех проектов |
|
|
94
|
+
| Найти или создать | `sdk.projects.findOrCreateProject(name)` | Idempotent создание |
|
|
95
|
+
| Получить проект | `sdk.projects.getProject(projectId)` | Детали проекта |
|
|
96
|
+
| **Поиск** |
|
|
97
|
+
| Поиск по коду | `sdk.search.searchCode(projectId, query)` | Semantic search с reranker |
|
|
98
|
+
| Поиск функций | `sdk.search.searchFunctions(projectId, query)` | Только функции/методы |
|
|
99
|
+
| **Чат** |
|
|
100
|
+
| Streaming чат | `sdk.chat.streamChat(messages, options)` | AsyncGenerator chunks |
|
|
101
|
+
| Обычный чат | `sdk.chat.chat(messages, options)` | Promise response |
|
|
102
|
+
|
|
103
|
+
## 📖 API Reference (подробно)
|
|
104
|
+
|
|
105
|
+
<details>
|
|
106
|
+
<summary><b>Projects API</b> (<code>sdk.projects</code>) - управление проектами</summary>
|
|
46
107
|
|
|
47
|
-
### Projects API (`sdk.projects`)
|
|
48
108
|
```typescript
|
|
49
|
-
//
|
|
109
|
+
// Основные методы
|
|
50
110
|
getAllProjects(): Promise<Project[]>
|
|
51
111
|
getProject(projectId: string): Promise<Project>
|
|
52
|
-
createProject(name: string, data?: any): Promise<Project>
|
|
53
112
|
findOrCreateProject(projectName: string): Promise<Project>
|
|
54
|
-
deleteProject(projectId: string): Promise<void>
|
|
55
113
|
|
|
56
|
-
//
|
|
114
|
+
// Индексация
|
|
57
115
|
getProjectState(projectId: string, clientRootHash?: string): Promise<ProjectState>
|
|
58
116
|
getIndexingStatus(projectId: string): Promise<any>
|
|
59
|
-
cancelIndexing(projectId: string): Promise<boolean>
|
|
60
|
-
resetIndexing(projectId: string): Promise<any>
|
|
61
|
-
restartIndexing(projectId: string): Promise<any>
|
|
62
|
-
clearIndexingError(projectId: string): Promise<boolean>
|
|
63
117
|
|
|
64
|
-
//
|
|
118
|
+
// Recovery
|
|
65
119
|
getRecoveryStatus(projectId: string): Promise<any>
|
|
66
120
|
resumeSync(projectId: string, options?: any): Promise<any>
|
|
67
121
|
cancelRecovery(projectId: string): Promise<any>
|
|
68
|
-
initializeDeltaSync(projectId: string, clientRootHash: string): Promise<any>
|
|
69
|
-
|
|
70
|
-
// Диагностика
|
|
71
|
-
getFilePathMapping(projectId: string): Promise<any>
|
|
72
122
|
```
|
|
73
123
|
|
|
74
|
-
|
|
124
|
+
</details>
|
|
125
|
+
|
|
126
|
+
<details>
|
|
127
|
+
<summary><b>Delta Manager API</b> (<code>sdk.deltaManager</code>) - индексация проекта</summary>
|
|
128
|
+
|
|
75
129
|
```typescript
|
|
76
|
-
//
|
|
77
|
-
// ✨ v6.2.2+: автоматически передает totalFiles для user-friendly прогресса
|
|
130
|
+
// Основной метод индексации
|
|
78
131
|
syncEncryptedChunks(
|
|
79
132
|
projectId: string,
|
|
80
133
|
encryptedChunks: any[],
|
|
@@ -82,51 +135,39 @@ syncEncryptedChunks(
|
|
|
82
135
|
options?: { batchSize?: number; onProgress?: (current, total) => void }
|
|
83
136
|
): Promise<any>
|
|
84
137
|
|
|
138
|
+
// Вспомогательные
|
|
85
139
|
getSyncStatus(projectId: string): Promise<SyncStatus>
|
|
86
140
|
cancelSync(projectId: string): Promise<boolean>
|
|
87
141
|
cleanupDeletedFiles(projectId: string, activeFiles: any[]): Promise<any>
|
|
88
142
|
```
|
|
89
143
|
|
|
90
|
-
|
|
91
|
-
```typescript
|
|
92
|
-
// Основные методы
|
|
93
|
-
chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
94
|
-
chatCompletion(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
95
|
-
streamChat(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
96
|
-
streamPrompt(prompt: string, options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
97
|
-
sendContinuation(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
144
|
+
</details>
|
|
98
145
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
sendPromptWithRegionFailover(prompt: string, options?: ChatOptions): Promise<string>
|
|
102
|
-
checkAvailability(): Promise<boolean>
|
|
103
|
-
```
|
|
146
|
+
<details>
|
|
147
|
+
<summary><b>Search API</b> (<code>sdk.search</code>) - поиск по коду</summary>
|
|
104
148
|
|
|
105
|
-
### Search API (`sdk.search`)
|
|
106
149
|
```typescript
|
|
107
150
|
searchCode(projectId: string, query: string, options?: any): Promise<any[]>
|
|
108
151
|
searchFunctions(projectId: string, query: string, options?: any): Promise<any[]>
|
|
109
|
-
getFunctionStats(projectId: string): Promise<{stats: {totalFunctions: number}}>
|
|
110
152
|
semanticSearch(projectId: string, query: string, options?: any): Promise<any[]>
|
|
111
153
|
```
|
|
112
154
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
getAvailableModels(): Promise<any[]>
|
|
118
|
-
getModelInfo(modelId: string): Promise<any>
|
|
119
|
-
```
|
|
155
|
+
</details>
|
|
156
|
+
|
|
157
|
+
<details>
|
|
158
|
+
<summary><b>Chat API</b> (<code>sdk.chat</code>) - AI чат</summary>
|
|
120
159
|
|
|
121
|
-
### Updates API (`sdk.updates`)
|
|
122
160
|
```typescript
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
161
|
+
// Streaming
|
|
162
|
+
streamChat(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
163
|
+
|
|
164
|
+
// Обычный
|
|
165
|
+
chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
166
|
+
chatWithRegionFailover(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
128
167
|
```
|
|
129
168
|
|
|
169
|
+
</details>
|
|
170
|
+
|
|
130
171
|
### WebSocket API (`sdk.projectSync`)
|
|
131
172
|
```typescript
|
|
132
173
|
// Подключение
|
|
@@ -140,19 +181,31 @@ sdk.projectSync.unsubscribeFromProject(projectId)
|
|
|
140
181
|
|
|
141
182
|
// События
|
|
142
183
|
sdk.projectSync.on('sync-status-update', callback) // {projectId, status, timestamp}
|
|
143
|
-
sdk.projectSync.on('sync-progress', callback) // {projectId, progress,
|
|
144
|
-
sdk.projectSync.on('sync-completed', callback) // {projectId, processedChunks,
|
|
184
|
+
sdk.projectSync.on('sync-progress', callback) // {projectId, progress, processedFiles, totalFiles}
|
|
185
|
+
sdk.projectSync.on('sync-completed', callback) // {projectId, processedChunks, statistics}
|
|
145
186
|
sdk.projectSync.on('sync-error', callback) // {projectId, error, timestamp}
|
|
146
|
-
```
|
|
147
187
|
|
|
148
|
-
|
|
188
|
+
// Пример: Cursor-like прогресс по файлам (v7.1.1+)
|
|
189
|
+
sdk.projectSync.on('sync-progress', (data) => {
|
|
190
|
+
if (data.totalFiles && data.processedFiles) {
|
|
191
|
+
// User-friendly: "450 of 722 files"
|
|
192
|
+
console.log(`${data.processedFiles}/${data.totalFiles} files (${data.progress}%)`);
|
|
193
|
+
updateUI(data.processedFiles, data.totalFiles, data.progress);
|
|
194
|
+
} else {
|
|
195
|
+
// Fallback: chunks (для старых версий backend)
|
|
196
|
+
console.log(`${data.currentChunk}/${data.totalChunks} chunks`);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
149
199
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
200
|
+
sdk.projectSync.on('sync-completed', (data) => {
|
|
201
|
+
const files = data.statistics?.totalFiles || 0;
|
|
202
|
+
console.log(`Indexed ${files} files in ${data.duration}ms`);
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## 🔧 Как работать с SDK
|
|
154
207
|
|
|
155
|
-
###
|
|
208
|
+
### Индексация проекта
|
|
156
209
|
```typescript
|
|
157
210
|
// ✅ ЕДИНСТВЕННЫЙ способ индексации (v6.2.2+):
|
|
158
211
|
await sdk.deltaManager.syncEncryptedChunks(projectId, chunks, rootHash, {
|
|
@@ -262,57 +315,221 @@ for await (const chunk of sdk.chat.streamChat(messages, { model: 'claude-3-5-son
|
|
|
262
315
|
}
|
|
263
316
|
```
|
|
264
317
|
|
|
265
|
-
##
|
|
318
|
+
## ℹ️ Архитектура
|
|
319
|
+
|
|
320
|
+
**Pure Cloud-First:**
|
|
321
|
+
- Backend SDK — HTTP клиент (НЕ работает с файлами)
|
|
322
|
+
- Client Extension — сканирует файлы, создает chunks
|
|
323
|
+
- Только Delta-Chunking — filesystem индексация удалена
|
|
324
|
+
|
|
325
|
+
<details>
|
|
326
|
+
<summary><b>Миграция с v6.x</b></summary>
|
|
266
327
|
|
|
267
|
-
### Что изменилось
|
|
268
328
|
**BREAKING CHANGES:**
|
|
269
|
-
- ❌ Удален `sdk.projects.startIndexing()`
|
|
270
|
-
-
|
|
271
|
-
- ✅ Используйте только `sdk.deltaManager.syncEncryptedChunks()`
|
|
329
|
+
- ❌ Удален `sdk.projects.startIndexing()`
|
|
330
|
+
- ✅ Используйте `sdk.deltaManager.syncEncryptedChunks()`
|
|
272
331
|
|
|
273
|
-
### Как мигрировать
|
|
274
332
|
```typescript
|
|
275
|
-
// ❌
|
|
276
|
-
// await sdk.projects.startIndexing(projectId
|
|
333
|
+
// ❌ Старый код:
|
|
334
|
+
// await sdk.projects.startIndexing(projectId);
|
|
335
|
+
|
|
336
|
+
// ✅ Новый код:
|
|
337
|
+
const chunks = await extension.scanAndCreateChunks();
|
|
338
|
+
const hash = extension.calculateMerkleRoot();
|
|
339
|
+
await sdk.deltaManager.syncEncryptedChunks(projectId, chunks, hash);
|
|
340
|
+
```
|
|
277
341
|
|
|
278
|
-
|
|
279
|
-
// Client Extension создает chunks
|
|
280
|
-
const chunks = await clientExtension.scanAndCreateChunks();
|
|
281
|
-
const rootHash = clientExtension.calculateMerkleRoot();
|
|
342
|
+
</details>
|
|
282
343
|
|
|
283
|
-
|
|
284
|
-
|
|
344
|
+
## 📦 Ключевые типы данных
|
|
345
|
+
|
|
346
|
+
### ProjectState (v7.1.0+)
|
|
347
|
+
```typescript
|
|
348
|
+
interface ProjectState {
|
|
349
|
+
projectId: string;
|
|
350
|
+
projectName: string;
|
|
351
|
+
merkleRootHash: string | null; // Server Merkle root для сравнения
|
|
352
|
+
lastIndexedAt: Date | null;
|
|
353
|
+
totalChunks: number; // Технические детали
|
|
354
|
+
totalFiles: number; // ✨ Количество файлов для UI
|
|
355
|
+
indexingStatus: 'pending' | 'in-progress' | 'complete' | 'failed' | 'cancelled';
|
|
356
|
+
syncRequired?: boolean; // true если нужна синхронизация
|
|
357
|
+
lastSyncSessionId?: string;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Использование:
|
|
361
|
+
const state = await sdk.projects.getProjectState(projectId, clientRootHash);
|
|
362
|
+
if (state.syncRequired) {
|
|
363
|
+
// Нужна синхронизация
|
|
364
|
+
}
|
|
365
|
+
console.log(`${state.totalFiles} files indexed`);
|
|
285
366
|
```
|
|
286
367
|
|
|
287
|
-
|
|
368
|
+
### SyncProgressEvent (v7.1.1+)
|
|
369
|
+
```typescript
|
|
370
|
+
interface SyncProgressEvent {
|
|
371
|
+
projectId: string;
|
|
372
|
+
sessionId: string;
|
|
373
|
+
stage: 'receiving_chunks' | 'processing_chunks' | 'creating_embeddings' | 'updating_tree' | 'finalizing';
|
|
374
|
+
progress: number; // 0-100
|
|
375
|
+
|
|
376
|
+
// User-friendly (файлы) - основное для UI
|
|
377
|
+
processedFiles?: number; // 450
|
|
378
|
+
totalFiles?: number; // 722
|
|
379
|
+
|
|
380
|
+
// Technical (чанки) - опционально
|
|
381
|
+
currentChunk?: number;
|
|
382
|
+
totalChunks?: number;
|
|
383
|
+
|
|
384
|
+
estimatedTimeRemaining?: number; // секунды
|
|
385
|
+
details?: string;
|
|
386
|
+
timestamp: Date;
|
|
387
|
+
}
|
|
288
388
|
|
|
289
|
-
|
|
389
|
+
// Использование:
|
|
390
|
+
sdk.projectSync.on('sync-progress', (data) => {
|
|
391
|
+
if (data.totalFiles) {
|
|
392
|
+
statusBar.text = `${data.processedFiles}/${data.totalFiles} files`;
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
```
|
|
290
396
|
|
|
291
|
-
###
|
|
292
|
-
SDK полностью типизирован. Импортируйте интерфейсы:
|
|
397
|
+
### SyncCompletedEvent (v7.1.1+)
|
|
293
398
|
```typescript
|
|
294
|
-
|
|
399
|
+
interface SyncCompletedEvent {
|
|
400
|
+
projectId: string;
|
|
401
|
+
sessionId: string;
|
|
402
|
+
status: 'success' | 'failed' | 'cancelled';
|
|
403
|
+
totalProcessed: number;
|
|
404
|
+
duration: number; // миллисекунды
|
|
405
|
+
errors?: string[];
|
|
406
|
+
warnings?: string[];
|
|
407
|
+
statistics?: {
|
|
408
|
+
filesIndexed: number;
|
|
409
|
+
embeddingsCreated: number;
|
|
410
|
+
chunksProcessed: number;
|
|
411
|
+
totalSize: number;
|
|
412
|
+
totalFiles?: number; // ✨ Для финального отображения
|
|
413
|
+
};
|
|
414
|
+
}
|
|
295
415
|
```
|
|
296
416
|
|
|
297
|
-
###
|
|
417
|
+
### RecoveryInfo
|
|
298
418
|
```typescript
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
419
|
+
interface RecoveryInfo {
|
|
420
|
+
sessionId: string;
|
|
421
|
+
projectId: string;
|
|
422
|
+
projectName: string;
|
|
423
|
+
status: 'interrupted' | 'paused' | 'active' | 'uploading';
|
|
424
|
+
progress: {
|
|
425
|
+
received: number; // Чанки получены
|
|
426
|
+
processed: number; // Чанки обработаны
|
|
427
|
+
total: number; // Всего ожидается
|
|
428
|
+
percentage: number; // 0-100
|
|
429
|
+
processedFiles?: number; // ✨ Файлы обработаны
|
|
430
|
+
totalFiles?: number; // ✨ Всего файлов
|
|
431
|
+
filesPercentage?: number; // ✨ 0-100 по файлам
|
|
432
|
+
};
|
|
433
|
+
canResume: boolean;
|
|
434
|
+
needsRecovery: boolean;
|
|
435
|
+
interruptedAt?: Date;
|
|
304
436
|
}
|
|
305
437
|
```
|
|
306
438
|
|
|
307
|
-
|
|
439
|
+
## 🆘 Быстрое решение проблем
|
|
440
|
+
|
|
441
|
+
### Проблема: "0 files" после индексации
|
|
442
|
+
```typescript
|
|
443
|
+
// Проверить:
|
|
444
|
+
const state = await sdk.projects.getProjectState(projectId);
|
|
445
|
+
console.log(state.totalFiles); // Должно быть > 0
|
|
446
|
+
|
|
447
|
+
// Если 0 - backend не сохранил totalFiles
|
|
448
|
+
// Решение: Обновите backend до последней версии
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### Проблема: Нет WebSocket обновлений
|
|
308
452
|
```typescript
|
|
453
|
+
// 1. Проверить подключение
|
|
454
|
+
console.log(sdk.isWebSocketConnected); // должно быть true
|
|
455
|
+
|
|
456
|
+
// 2. Проверить подписку
|
|
457
|
+
sdk.projectSync.subscribeToProject(projectId);
|
|
458
|
+
|
|
459
|
+
// 3. Проверить токен (production)
|
|
309
460
|
const sdk = await CodeSolverSDK.create({
|
|
310
461
|
baseURL: 'https://workai.su/api/v1',
|
|
462
|
+
getAuthToken: () => authManager.getAccessToken() // OAuth required
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
// 4. Fallback на HTTP polling
|
|
466
|
+
const status = await sdk.projects.getIndexingStatus(projectId);
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### Проблема: Прерванная синхронизация
|
|
470
|
+
```typescript
|
|
471
|
+
// Проверить recovery status
|
|
472
|
+
const recovery = await sdk.projects.getRecoveryStatus(projectId);
|
|
473
|
+
if (recovery.needsRecovery) {
|
|
474
|
+
// Показать UI диалог
|
|
475
|
+
const percentage = recovery.progress.filesPercentage || recovery.progress.percentage;
|
|
476
|
+
const files = `${recovery.progress.processedFiles}/${recovery.progress.totalFiles}`;
|
|
477
|
+
|
|
478
|
+
// Пользователь выбирает:
|
|
479
|
+
await sdk.projects.resumeSync(projectId); // Продолжить
|
|
480
|
+
// или
|
|
481
|
+
await sdk.projects.cancelRecovery(projectId); // Начать заново
|
|
482
|
+
}
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Проблема: 401/403 ошибки
|
|
486
|
+
```typescript
|
|
487
|
+
// v7.0.1+: По умолчанию возвращает null
|
|
488
|
+
const projects = await sdk.projects.getAllProjects();
|
|
489
|
+
if (!projects) {
|
|
490
|
+
// Токен истек
|
|
491
|
+
await authManager.refreshToken();
|
|
492
|
+
// Повторить запрос
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
// Старое поведение (throw):
|
|
496
|
+
const sdk = await CodeSolverSDK.create({
|
|
497
|
+
suppressAuthErrors: false
|
|
498
|
+
});
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
## 📚 Справка
|
|
502
|
+
|
|
503
|
+
### TypeScript типы
|
|
504
|
+
```typescript
|
|
505
|
+
import {
|
|
506
|
+
ChatMessage,
|
|
507
|
+
ChatOptions,
|
|
508
|
+
Project,
|
|
509
|
+
ProjectState,
|
|
510
|
+
SyncProgressEvent,
|
|
511
|
+
SyncCompletedEvent,
|
|
512
|
+
RecoveryInfo
|
|
513
|
+
} from '@androidsprintteam/solver-sdk';
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Debug режим
|
|
517
|
+
```typescript
|
|
518
|
+
const sdk = await CodeSolverSDK.create({
|
|
311
519
|
debug: 'verbose', // silent | error | warn | info | debug | verbose
|
|
312
520
|
webSocket: { debug: true }
|
|
313
521
|
});
|
|
314
522
|
```
|
|
315
523
|
|
|
524
|
+
### Обработка ошибок
|
|
525
|
+
```typescript
|
|
526
|
+
try {
|
|
527
|
+
await sdk.projects.getProject(projectId);
|
|
528
|
+
} catch (error) {
|
|
529
|
+
console.error(`[HTTP ${error.status}] ${error.message}`);
|
|
530
|
+
}
|
|
531
|
+
```
|
|
532
|
+
|
|
316
533
|
## 📄 License
|
|
317
534
|
|
|
318
535
|
MIT
|
|
@@ -11,6 +11,18 @@ class ProjectsApi {
|
|
|
11
11
|
// ===== ОСНОВНЫЕ МЕТОДЫ УПРАВЛЕНИЯ ПРОЕКТАМИ =====
|
|
12
12
|
/**
|
|
13
13
|
* Получает все проекты пользователя
|
|
14
|
+
*
|
|
15
|
+
* @returns {Promise<Project[] | null>} Массив проектов или null при auth ошибках (401/403)
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const projects = await sdk.projects.getAllProjects();
|
|
20
|
+
* if (!projects) {
|
|
21
|
+
* // Auth error - токен истек
|
|
22
|
+
* await authManager.refreshToken();
|
|
23
|
+
* return;
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
14
26
|
*/
|
|
15
27
|
async getAllProjects() {
|
|
16
28
|
const projects = await this.httpClient.get('/api/v1/projects');
|
|
@@ -18,12 +30,27 @@ class ProjectsApi {
|
|
|
18
30
|
}
|
|
19
31
|
/**
|
|
20
32
|
* Альтернативное имя для getAllProjects() для совместимости
|
|
33
|
+
*
|
|
34
|
+
* @returns {Promise<Project[] | null>} Массив проектов или null при auth ошибках (401/403)
|
|
21
35
|
*/
|
|
22
36
|
async getProjects() {
|
|
23
37
|
return this.getAllProjects();
|
|
24
38
|
}
|
|
25
39
|
/**
|
|
26
40
|
* Находит или создает проект по имени
|
|
41
|
+
*
|
|
42
|
+
* @param {string} projectName Имя проекта
|
|
43
|
+
* @returns {Promise<Project | null>} Проект или null при auth ошибках (401/403)
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const project = await sdk.projects.findOrCreateProject('MyProject');
|
|
48
|
+
* if (!project) {
|
|
49
|
+
* // Auth error - токен истек
|
|
50
|
+
* return;
|
|
51
|
+
* }
|
|
52
|
+
* console.log(project.id);
|
|
53
|
+
* ```
|
|
27
54
|
*/
|
|
28
55
|
async findOrCreateProject(projectName) {
|
|
29
56
|
if (!projectName?.trim()) {
|
|
@@ -36,13 +63,20 @@ class ProjectsApi {
|
|
|
36
63
|
}
|
|
37
64
|
/**
|
|
38
65
|
* Получает проекты, готовые к использованию
|
|
66
|
+
*
|
|
67
|
+
* @returns {Promise<Project[] | null>} Массив проектов или null при auth ошибках (401/403)
|
|
39
68
|
*/
|
|
40
69
|
async getReadyProjects() {
|
|
41
70
|
const allProjects = await this.getAllProjects();
|
|
71
|
+
if (!allProjects)
|
|
72
|
+
return null;
|
|
42
73
|
return allProjects.filter(project => project.indexStatus === 'indexed');
|
|
43
74
|
}
|
|
44
75
|
/**
|
|
45
76
|
* Получает проект по ID
|
|
77
|
+
*
|
|
78
|
+
* @param {string} projectId ID проекта
|
|
79
|
+
* @returns {Promise<Project | null>} Проект или null при auth ошибках (401/403)
|
|
46
80
|
*/
|
|
47
81
|
async getProject(projectId) {
|
|
48
82
|
this.validateProjectId(projectId);
|
|
@@ -51,6 +85,11 @@ class ProjectsApi {
|
|
|
51
85
|
}
|
|
52
86
|
/**
|
|
53
87
|
* Создает новый проект
|
|
88
|
+
*
|
|
89
|
+
* @param {string} name Имя проекта
|
|
90
|
+
* @param {any} data Дополнительные данные
|
|
91
|
+
* @param {ProjectOptions} options Опции проекта
|
|
92
|
+
* @returns {Promise<Project | null>} Созданный проект или null при auth ошибках (401/403)
|
|
54
93
|
*/
|
|
55
94
|
async createProject(name, data, options) {
|
|
56
95
|
if (!name?.trim()) {
|
|
@@ -74,6 +113,9 @@ class ProjectsApi {
|
|
|
74
113
|
// ===== ИНДЕКСАЦИЯ И СТАТУС =====
|
|
75
114
|
/**
|
|
76
115
|
* Получает статус проекта
|
|
116
|
+
*
|
|
117
|
+
* @param {string} projectId ID проекта
|
|
118
|
+
* @returns {Promise<any | null>} Статус проекта или null при auth ошибках (401/403)
|
|
77
119
|
*/
|
|
78
120
|
async getProjectStatus(projectId) {
|
|
79
121
|
this.validateProjectId(projectId);
|
|
@@ -81,6 +123,9 @@ class ProjectsApi {
|
|
|
81
123
|
}
|
|
82
124
|
/**
|
|
83
125
|
* Получает статус индексации проекта
|
|
126
|
+
*
|
|
127
|
+
* @param {string} projectId ID проекта
|
|
128
|
+
* @returns {Promise<any | null>} Статус индексации или null при auth ошибках (401/403)
|
|
84
129
|
*/
|
|
85
130
|
async getIndexingStatus(projectId) {
|
|
86
131
|
this.validateProjectId(projectId);
|
|
@@ -88,11 +133,16 @@ class ProjectsApi {
|
|
|
88
133
|
}
|
|
89
134
|
/**
|
|
90
135
|
* Отменяет индексацию проекта
|
|
136
|
+
*
|
|
137
|
+
* @param {string} projectId ID проекта
|
|
138
|
+
* @returns {Promise<boolean | null>} true если отменено, false при ошибке, null при auth ошибке (401/403)
|
|
91
139
|
*/
|
|
92
140
|
async cancelIndexing(projectId) {
|
|
93
141
|
this.validateProjectId(projectId);
|
|
94
142
|
try {
|
|
95
|
-
await this.httpClient.post(`/api/v1/projects/${projectId}/cancel-indexing`);
|
|
143
|
+
const result = await this.httpClient.post(`/api/v1/projects/${projectId}/cancel-indexing`);
|
|
144
|
+
if (result === null)
|
|
145
|
+
return null; // Auth error
|
|
96
146
|
return true;
|
|
97
147
|
}
|
|
98
148
|
catch (error) {
|
|
@@ -102,11 +152,16 @@ class ProjectsApi {
|
|
|
102
152
|
}
|
|
103
153
|
/**
|
|
104
154
|
* Очищает ошибку индексации
|
|
155
|
+
*
|
|
156
|
+
* @param {string} projectId ID проекта
|
|
157
|
+
* @returns {Promise<boolean | null>} true если очищено, false при ошибке, null при auth ошибке (401/403)
|
|
105
158
|
*/
|
|
106
159
|
async clearIndexingError(projectId) {
|
|
107
160
|
this.validateProjectId(projectId);
|
|
108
161
|
try {
|
|
109
|
-
await this.httpClient.post(`/api/v1/projects/${projectId}/clear-error`);
|
|
162
|
+
const result = await this.httpClient.post(`/api/v1/projects/${projectId}/clear-error`);
|
|
163
|
+
if (result === null)
|
|
164
|
+
return null; // Auth error
|
|
110
165
|
return true;
|
|
111
166
|
}
|
|
112
167
|
catch (error) {
|
|
@@ -133,6 +188,7 @@ class ProjectsApi {
|
|
|
133
188
|
merkleRootHash: response.merkleRootHash || null,
|
|
134
189
|
lastIndexedAt: response.lastIndexedAt ? new Date(response.lastIndexedAt) : null,
|
|
135
190
|
totalChunks: response.totalChunks || 0,
|
|
191
|
+
totalFiles: response.totalFiles || 0,
|
|
136
192
|
indexingStatus: response.indexingStatus || 'unknown',
|
|
137
193
|
syncRequired: response.syncRequired,
|
|
138
194
|
lastSyncSessionId: response.lastSyncSessionId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":";;;AAsBA;;GAEG;AACH,MAAa,WAAW;IAGtB,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,mDAAmD;IAEnD
|
|
1
|
+
{"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":";;;AAsBA;;GAEG;AACH,MAAa,WAAW;IAGtB,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,mDAAmD;IAEnD;;;;;;;;;;;;;;OAcG;IACI,KAAK,CAAC,cAAc;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAY,kBAAkB,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW;QACtB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,KAAK,CAAC,mBAAmB,CAC9B,WAAmB;QAEnB,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAU,iCAAiC,EAAE;YACtF,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE;SACzB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB;QAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAE9B,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAClC,OAAO,CAAC,WAAW,KAAK,SAAS,CAClC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,UAAU,CAAC,SAAiB;QACvC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAU,oBAAoB,SAAS,EAAE,CAAC,CAAC;QACpF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,aAAa,CACxB,IAAY,EACZ,IAAU,EACV,OAAwB;QAExB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,WAAW,GAAqB;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACjB,GAAG,IAAI;YACP,GAAG,OAAO;SACX,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAU,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,SAAiB;QAC1C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,kCAAkC;IAElC;;;;;OAKG;IACI,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC7C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,SAAS,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;IACpF,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,SAAiB;QAC3C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;YAC3F,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,aAAa;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAC/C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,cAAc,CAAC,CAAC;YACvF,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,aAAa;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,wEAAwE;IACxE,mFAAmF;IAEnF,yCAAyC;IAEzC;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,cAAuB;QACrE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,GAAG,GAAG,cAAc;YACxB,CAAC,CAAC,oBAAoB,SAAS,yBAAyB,kBAAkB,CAAC,cAAc,CAAC,EAAE;YAC5F,CAAC,CAAC,oBAAoB,SAAS,QAAQ,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEhD,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,SAAS;YAC1C,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,SAAS;YAC9C,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,IAAI;YAC/C,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI;YAC/E,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC;YACtC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;YACpC,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,SAAS;YACpD,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;SAC9C,CAAC;IACJ,CAAC;IAED,+BAA+B;IAE/B;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAI9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;QAE5F,OAAO;YACL,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,IAAI,KAAK;YAC9D,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS;gBAC1C,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,IAAI,SAAS;gBACvD,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,IAAI,SAAS;gBAC3D,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,IAAI,aAAa;gBACrD,QAAQ,EAAE;oBACR,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC;oBAC1D,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,IAAI,CAAC;oBAC/D,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC;oBACvD,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC;iBAC5D;gBACD,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;gBAC7G,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,YAAY,IAAI,kBAAkB;gBACtE,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,KAAK,KAAK;aACrD,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CACrB,SAAiB,EACjB,UAAyB,EAAE;QAO3B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,SAAS,cAAc,EAC3C;YACE,cAAc,EAAE,OAAO,CAAC,cAAc,KAAK,KAAK;YAChD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,KAAK,KAAK;SAC/D,CACF,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;YACnC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;YAC7C,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,SAAiB;QAI3C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3C,oBAAoB,SAAS,WAAW,CACzC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;YACnC,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB,CAC9B,SAAiB,EACjB,cAAsB;QAMtB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,SAAS,wBAAwB,EACrD;YACE,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE;SACtC,CACF,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,SAAS,KAAK,KAAK;YACvC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,SAAiB;QAM1C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,SAAS,iBAAiB,CAC/C,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;YACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,iBAAiB;YAC9C,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,SAAiB;QAK5C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,SAAS,mBAAmB,CACjD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;YACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,mBAAmB;YAChD,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAK/C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,oBAAoB,SAAS,oBAAoB,CAClD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;YACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;SACrC,CAAC;IACJ,CAAC;IAED,sBAAsB;IAEtB;;;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;AApaD,kCAoaC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAucH,gCAAgC;AAChC,+CAA6B"}
|