solver-sdk 1.1.0 → 1.3.0
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 +177 -3
- package/dist/cjs/api/chat-api.js +159 -1
- package/dist/cjs/api/chat-api.js.map +1 -1
- package/dist/cjs/api/dependencies-api.js +131 -0
- package/dist/cjs/api/dependencies-api.js.map +1 -0
- package/dist/cjs/api/projects-api.js +22 -0
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/code-solver-sdk.js +36 -4
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/models/types.js +35 -1
- package/dist/cjs/models/types.js.map +1 -1
- package/dist/cjs/utils/code-solver-websocket-client.js +52 -16
- package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/cjs/utils/http-client.js +78 -0
- package/dist/cjs/utils/http-client.js.map +1 -1
- package/dist/esm/api/chat-api.js +159 -1
- package/dist/esm/api/chat-api.js.map +1 -1
- package/dist/esm/api/dependencies-api.js +127 -0
- package/dist/esm/api/dependencies-api.js.map +1 -0
- package/dist/esm/api/projects-api.js +22 -0
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/code-solver-sdk.js +36 -4
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/types.js +34 -0
- package/dist/esm/models/types.js.map +1 -1
- package/dist/esm/utils/code-solver-websocket-client.js +52 -16
- package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/esm/utils/http-client.js +45 -0
- package/dist/esm/utils/http-client.js.map +1 -1
- package/dist/types/api/chat-api.d.ts +42 -0
- package/dist/types/api/chat-api.d.ts.map +1 -1
- package/dist/types/api/dependencies-api.d.ts +54 -0
- package/dist/types/api/dependencies-api.d.ts.map +1 -0
- package/dist/types/api/projects-api.d.ts +6 -0
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/code-solver-sdk.d.ts +21 -1
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/http-client.d.ts +8 -0
- package/dist/types/interfaces/http-client.d.ts.map +1 -1
- package/dist/types/interfaces/sdk-options.d.ts +27 -0
- package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
- package/dist/types/models/types.d.ts +186 -0
- package/dist/types/models/types.d.ts.map +1 -1
- package/dist/types/utils/code-solver-websocket-client.d.ts +125 -12
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
- package/dist/types/utils/http-client.d.ts +12 -0
- package/dist/types/utils/http-client.d.ts.map +1 -1
- package/package.json +21 -16
package/README.md
CHANGED
|
@@ -152,6 +152,89 @@ wsClient.on('complete', (data) => {
|
|
|
152
152
|
});
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
+
## API для работы с зависимостями
|
|
156
|
+
|
|
157
|
+
SDK предоставляет API для работы с зависимостями файлов в проекте, что позволяет анализировать структуру проекта, импорты/экспорты и выявлять циклические зависимости.
|
|
158
|
+
|
|
159
|
+
### Получение зависимостей файла
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// Получение зависимостей конкретного файла
|
|
163
|
+
const fileDependencies = await sdk.dependencies.getFileDependencies(projectId, {
|
|
164
|
+
filePath: 'src/app.js'
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
console.log('Импорты:', fileDependencies.imports);
|
|
168
|
+
console.log('Импортируется в:', fileDependencies.importedBy);
|
|
169
|
+
console.log('Экспорты:', fileDependencies.exports);
|
|
170
|
+
console.log('Экспортируемые из импортов:', fileDependencies.exportedBy);
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Получение графа зависимостей
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
// Получение полного графа зависимостей проекта
|
|
177
|
+
const dependencyGraph = await sdk.dependencies.getDependencyGraph(projectId);
|
|
178
|
+
|
|
179
|
+
console.log('Узлы графа:', dependencyGraph.nodes);
|
|
180
|
+
console.log('Связи в графе:', dependencyGraph.edges);
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Анализ зависимостей
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// Анализ графа зависимостей и поиск циклов
|
|
187
|
+
const analysis = await sdk.dependencies.analyzeDependencyGraph(projectId);
|
|
188
|
+
|
|
189
|
+
console.log('Циклические зависимости:', analysis.cycles);
|
|
190
|
+
console.log('Статистика графа:', analysis.statistics);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Статистика зависимостей
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
// Получение статистики зависимостей в проекте
|
|
197
|
+
const stats = await sdk.dependencies.getDependencyStatistics(projectId);
|
|
198
|
+
|
|
199
|
+
console.log('Общее количество зависимостей:', stats.totalDependencies);
|
|
200
|
+
console.log('Уникальные файлы:', stats.uniqueFiles);
|
|
201
|
+
console.log('Импорты:', stats.importCount);
|
|
202
|
+
console.log('Экспорты:', stats.exportCount);
|
|
203
|
+
console.log('Циклические зависимости:', stats.cyclicDependenciesCount);
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Получение связанных компонентов
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
// Получение связанных компонентов для файла
|
|
210
|
+
const relatedComponents = await sdk.dependencies.getRelatedComponents(projectId, {
|
|
211
|
+
filePath: 'src/app.js',
|
|
212
|
+
maxDepth: 3,
|
|
213
|
+
includeIncoming: true,
|
|
214
|
+
includeOutgoing: true,
|
|
215
|
+
maxNodes: 20
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
console.log('Исходный файл:', relatedComponents.source);
|
|
219
|
+
console.log('Связанные компоненты:', relatedComponents.nodes);
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### WebSocket события для зависимостей
|
|
223
|
+
|
|
224
|
+
Для получения уведомлений об изменениях в зависимостях в реальном времени можно использовать WebSocket:
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
// Подключение к WebSocket для зависимостей
|
|
228
|
+
const wsClient = sdk.getWebSocketClient();
|
|
229
|
+
await wsClient.connectToDependencies(projectId);
|
|
230
|
+
|
|
231
|
+
// Обработка события обновления зависимостей
|
|
232
|
+
wsClient.on('dependency_update', (data) => {
|
|
233
|
+
console.log('Обновление зависимостей:', data);
|
|
234
|
+
console.log('Затронутые файлы:', data.affectedFiles);
|
|
235
|
+
});
|
|
236
|
+
```
|
|
237
|
+
|
|
155
238
|
## Тестирование и совместимость
|
|
156
239
|
|
|
157
240
|
SDK тщательно тестируется в различных средах:
|
|
@@ -213,13 +296,104 @@ SDK поддерживает следующие опции при инициал
|
|
|
213
296
|
| `httpsAgent` | object | Опции для HTTPS агента (Node.js) | Нет |
|
|
214
297
|
| `mode` | string | Режим работы SDK ('browser', 'node', 'auto') | Нет |
|
|
215
298
|
|
|
216
|
-
## Документация
|
|
299
|
+
## Документация
|
|
300
|
+
|
|
301
|
+
Подробная документация по использованию SDK доступна в директории [`docs`](./docs):
|
|
302
|
+
|
|
303
|
+
- [Начало работы](./docs/GETTING_STARTED.md) - инструкции по установке и базовому использованию SDK
|
|
304
|
+
- [Работа с проектами](./docs/PROJECTS.md) - управление проектами через SDK
|
|
305
|
+
- [Индексация проектов](./docs/INDEXING.md) - работа с индексацией и отслеживание через WebSocket
|
|
306
|
+
- [Документация API](./docs/API.md) - полная документация по всем методам SDK
|
|
307
|
+
|
|
308
|
+
## Тестирование и локальная разработка
|
|
309
|
+
|
|
310
|
+
### Предварительные требования
|
|
311
|
+
|
|
312
|
+
Для локальной разработки и тестирования требуется:
|
|
313
|
+
- Node.js 16+
|
|
314
|
+
- npm 8+
|
|
315
|
+
- Запущенный локальный сервер Code Solver Backend (по умолчанию на https://localhost:3000)
|
|
316
|
+
|
|
317
|
+
### Тестирование SDK
|
|
318
|
+
|
|
319
|
+
SDK включает несколько типов тестов:
|
|
320
|
+
|
|
321
|
+
#### Модульные тесты
|
|
217
322
|
|
|
218
|
-
|
|
323
|
+
Эти тесты проверяют внутреннюю логику SDK без взаимодействия с реальным бэкендом:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
# Запуск всех тестов
|
|
327
|
+
npm test
|
|
328
|
+
|
|
329
|
+
# Запуск тестов для индексации
|
|
330
|
+
npm run test:indexing
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
#### Интеграционные тесты
|
|
334
|
+
|
|
335
|
+
Эти тесты проверяют взаимодействие SDK с реальным бэкендом:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
# Запуск интеграционных тестов индексации
|
|
339
|
+
npm run test:integration
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
> **Важно:** Для запуска интеграционных тестов необходимо, чтобы локальный сервер Code Solver Backend был запущен на https://localhost:3000.
|
|
343
|
+
|
|
344
|
+
### Примеры использования
|
|
345
|
+
|
|
346
|
+
В директории [`examples`](./examples) находятся примеры использования SDK:
|
|
347
|
+
|
|
348
|
+
#### Проверка подключения к API
|
|
349
|
+
|
|
350
|
+
Пример проверяет доступность API и WebSocket соединения:
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
npm run example:check-api
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
#### Индексация проектов
|
|
357
|
+
|
|
358
|
+
Пример демонстрирует процесс индексации проекта с отслеживанием через WebSocket:
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
npm run example:indexing
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Режим разработки
|
|
365
|
+
|
|
366
|
+
Для запуска SDK в режиме разработки с локальным сервером:
|
|
367
|
+
|
|
368
|
+
1. Запустите локальный сервер Code Solver Backend
|
|
369
|
+
2. Используйте следующие настройки в вашем коде:
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
const sdk = new CodeSolverSDK({
|
|
373
|
+
baseURL: 'https://localhost:3000',
|
|
374
|
+
apiKey: 'test-api-key',
|
|
375
|
+
httpsAgent: new https.Agent({
|
|
376
|
+
rejectUnauthorized: false // Для самоподписанных сертификатов
|
|
377
|
+
}),
|
|
378
|
+
websocket: {
|
|
379
|
+
reconnect: true,
|
|
380
|
+
rejectUnauthorized: false
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
#### Игнорирование самоподписанных сертификатов
|
|
386
|
+
|
|
387
|
+
При разработке с локальным сервером используйте:
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
# В Node.js скриптах
|
|
391
|
+
NODE_TLS_REJECT_UNAUTHORIZED=0 node your-script.js
|
|
392
|
+
```
|
|
219
393
|
|
|
220
394
|
## Лицензия
|
|
221
395
|
|
|
222
|
-
MIT
|
|
396
|
+
[MIT](./LICENSE)
|
|
223
397
|
|
|
224
398
|
## API Reference
|
|
225
399
|
|
package/dist/cjs/api/chat-api.js
CHANGED
|
@@ -35,7 +35,8 @@ class ChatApi {
|
|
|
35
35
|
maxTokens: options?.maxTokens,
|
|
36
36
|
stopSequences: options?.stopSequences,
|
|
37
37
|
functions: options?.functions,
|
|
38
|
-
functionCall: options?.functionCall
|
|
38
|
+
functionCall: options?.functionCall,
|
|
39
|
+
thinking: options?.thinking
|
|
39
40
|
});
|
|
40
41
|
}
|
|
41
42
|
/**
|
|
@@ -77,6 +78,163 @@ class ChatApi {
|
|
|
77
78
|
}
|
|
78
79
|
throw new Error('Модель не вернула ответ');
|
|
79
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Отправляет сообщение в чат в потоковом режиме
|
|
83
|
+
* @param {ChatMessage[]} messages Массив сообщений для отправки
|
|
84
|
+
* @param {ChatStreamOptions} [options] Дополнительные параметры
|
|
85
|
+
* @returns {AsyncGenerator<ChatStreamChunk>} Асинхронный генератор чанков ответа
|
|
86
|
+
*/
|
|
87
|
+
async *streamChat(messages, options) {
|
|
88
|
+
if (!messages || messages.length === 0) {
|
|
89
|
+
throw new Error('Необходимо предоставить хотя бы одно сообщение');
|
|
90
|
+
}
|
|
91
|
+
// Проверяем наличие хотя бы одного сообщения от пользователя
|
|
92
|
+
const hasUserMessage = messages.some(msg => msg.role === 'user');
|
|
93
|
+
if (!hasUserMessage) {
|
|
94
|
+
throw new Error('В сообщениях должно быть хотя бы одно сообщение с ролью "user"');
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
// Создаем параметры запроса
|
|
98
|
+
const params = {
|
|
99
|
+
model: options?.model || 'Claude',
|
|
100
|
+
messages,
|
|
101
|
+
temperature: options?.temperature,
|
|
102
|
+
maxTokens: options?.maxTokens,
|
|
103
|
+
stopSequences: options?.stopSequences,
|
|
104
|
+
functions: options?.functions,
|
|
105
|
+
functionCall: options?.functionCall,
|
|
106
|
+
thinking: options?.thinking,
|
|
107
|
+
stream: true
|
|
108
|
+
};
|
|
109
|
+
// Получаем поток данных от API
|
|
110
|
+
const response = await this.httpClient.request({
|
|
111
|
+
url: '/api/v1/chat/stream',
|
|
112
|
+
method: 'POST',
|
|
113
|
+
data: params,
|
|
114
|
+
headers: {
|
|
115
|
+
'Accept': 'text/event-stream',
|
|
116
|
+
'Cache-Control': 'no-cache'
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
if (!response || !response.body) {
|
|
120
|
+
throw new Error('Сервер не вернул поток данных');
|
|
121
|
+
}
|
|
122
|
+
// Обрабатываем поток событий
|
|
123
|
+
const reader = response.body.getReader();
|
|
124
|
+
const decoder = new TextDecoder();
|
|
125
|
+
let isInThinkingBlock = false;
|
|
126
|
+
let thinkingContent = '';
|
|
127
|
+
let textContent = '';
|
|
128
|
+
while (true) {
|
|
129
|
+
const { done, value } = await reader.read();
|
|
130
|
+
if (done) {
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
const chunk = decoder.decode(value);
|
|
134
|
+
const lines = chunk.split('\n').filter(line => line.trim() !== '');
|
|
135
|
+
for (const line of lines) {
|
|
136
|
+
if (!line.startsWith('data:'))
|
|
137
|
+
continue;
|
|
138
|
+
const data = line.slice(5).trim();
|
|
139
|
+
if (data === '[DONE]') {
|
|
140
|
+
// Поток завершен
|
|
141
|
+
if (options?.onComplete) {
|
|
142
|
+
options.onComplete(textContent);
|
|
143
|
+
}
|
|
144
|
+
yield {
|
|
145
|
+
text: '',
|
|
146
|
+
isComplete: true,
|
|
147
|
+
thinkingContent: thinkingContent.length > 0 ? thinkingContent : undefined
|
|
148
|
+
};
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const parsedData = JSON.parse(data);
|
|
153
|
+
// Обрабатываем различные типы событий
|
|
154
|
+
if (parsedData.type === 'thinking_start' || parsedData.type === 'content_block_start' && parsedData.content_block?.type === 'thinking') {
|
|
155
|
+
isInThinkingBlock = true;
|
|
156
|
+
if (options?.onToken) {
|
|
157
|
+
options.onToken('[THINKING_START]');
|
|
158
|
+
}
|
|
159
|
+
yield {
|
|
160
|
+
text: '[THINKING_START]',
|
|
161
|
+
isComplete: false,
|
|
162
|
+
isThinking: true
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
else if (parsedData.type === 'thinking_end' || parsedData.type === 'content_block_stop' && isInThinkingBlock) {
|
|
166
|
+
isInThinkingBlock = false;
|
|
167
|
+
if (options?.onToken) {
|
|
168
|
+
options.onToken('[THINKING_END]');
|
|
169
|
+
}
|
|
170
|
+
yield {
|
|
171
|
+
text: '[THINKING_END]',
|
|
172
|
+
isComplete: false,
|
|
173
|
+
isThinking: true
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
else if (parsedData.type === 'content_block_delta' || parsedData.type === 'thinking_delta') {
|
|
177
|
+
const text = parsedData.delta?.text || '';
|
|
178
|
+
if (isInThinkingBlock || parsedData.type === 'thinking_delta') {
|
|
179
|
+
// Добавляем текст к блоку размышлений
|
|
180
|
+
thinkingContent += text;
|
|
181
|
+
if (options?.onToken) {
|
|
182
|
+
options.onToken(text);
|
|
183
|
+
}
|
|
184
|
+
yield {
|
|
185
|
+
text,
|
|
186
|
+
isComplete: false,
|
|
187
|
+
isThinking: true
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
// Добавляем текст к основному содержимому
|
|
192
|
+
textContent += text;
|
|
193
|
+
if (options?.onToken) {
|
|
194
|
+
options.onToken(text);
|
|
195
|
+
}
|
|
196
|
+
yield {
|
|
197
|
+
text,
|
|
198
|
+
isComplete: false,
|
|
199
|
+
isThinking: false
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch (e) {
|
|
205
|
+
console.error('Ошибка при парсинге данных:', e);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Финальный чанк, если поток завершился без [DONE]
|
|
210
|
+
if (options?.onComplete) {
|
|
211
|
+
options.onComplete(textContent);
|
|
212
|
+
}
|
|
213
|
+
yield {
|
|
214
|
+
text: '',
|
|
215
|
+
isComplete: true,
|
|
216
|
+
thinkingContent: thinkingContent.length > 0 ? thinkingContent : undefined
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
if (options?.onError) {
|
|
221
|
+
options.onError(error);
|
|
222
|
+
}
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Отправляет запрос к модели в потоковом режиме (упрощенный интерфейс)
|
|
228
|
+
* @param {string} prompt Запрос к модели
|
|
229
|
+
* @param {ChatStreamOptions} [options] Дополнительные параметры
|
|
230
|
+
* @returns {AsyncGenerator<ChatStreamChunk>} Асинхронный генератор чанков ответа
|
|
231
|
+
*/
|
|
232
|
+
async *streamPrompt(prompt, options) {
|
|
233
|
+
const messages = [
|
|
234
|
+
{ role: 'user', content: prompt }
|
|
235
|
+
];
|
|
236
|
+
yield* this.streamChat(messages, options);
|
|
237
|
+
}
|
|
80
238
|
}
|
|
81
239
|
exports.ChatApi = ChatApi;
|
|
82
240
|
//# sourceMappingURL=chat-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-api.js","sourceRoot":"","sources":["../../../src/api/chat-api.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"chat-api.js","sourceRoot":"","sources":["../../../src/api/chat-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DependenciesApi = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* API для работы с зависимостями файлов в проектах
|
|
6
|
+
*/
|
|
7
|
+
class DependenciesApi {
|
|
8
|
+
/**
|
|
9
|
+
* Создает новый экземпляр API для работы с зависимостями
|
|
10
|
+
* @param httpClient HTTP клиент для запросов к API
|
|
11
|
+
*/
|
|
12
|
+
constructor(httpClient) {
|
|
13
|
+
this.client = httpClient;
|
|
14
|
+
this.baseUrl = '/dependencies';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Получает зависимости конкретного файла
|
|
18
|
+
* @param projectId ID проекта
|
|
19
|
+
* @param params Параметры запроса зависимостей файла
|
|
20
|
+
* @returns Зависимости файла
|
|
21
|
+
*/
|
|
22
|
+
async getFileDependencies(projectId, params) {
|
|
23
|
+
try {
|
|
24
|
+
const response = await this.client.get(`/projects/${projectId}/dependencies/file`, { params: { path: params.filePath } });
|
|
25
|
+
if (!response.success || !response.data) {
|
|
26
|
+
throw new Error(response.error || 'Ошибка при получении зависимостей файла');
|
|
27
|
+
}
|
|
28
|
+
return response.data;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new Error(`Ошибка при получении зависимостей файла: ${error.message}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Получает граф зависимостей проекта
|
|
36
|
+
* @param projectId ID проекта
|
|
37
|
+
* @returns Граф зависимостей
|
|
38
|
+
*/
|
|
39
|
+
async getDependencyGraph(projectId) {
|
|
40
|
+
try {
|
|
41
|
+
const response = await this.client.get(`/projects/${projectId}/dependencies/graph`);
|
|
42
|
+
if (!response.success || !response.data) {
|
|
43
|
+
throw new Error(response.error || 'Ошибка при получении графа зависимостей');
|
|
44
|
+
}
|
|
45
|
+
return response.data;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Error(`Ошибка при получении графа зависимостей: ${error.message}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Получает статистику зависимостей проекта
|
|
53
|
+
* @param projectId ID проекта
|
|
54
|
+
* @returns Статистика зависимостей
|
|
55
|
+
*/
|
|
56
|
+
async getDependencyStatistics(projectId) {
|
|
57
|
+
try {
|
|
58
|
+
const response = await this.client.get(`/projects/${projectId}/dependencies/stats`);
|
|
59
|
+
if (!response.success || !response.data) {
|
|
60
|
+
throw new Error(response.error || 'Ошибка при получении статистики зависимостей');
|
|
61
|
+
}
|
|
62
|
+
return response.data;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
throw new Error(`Ошибка при получении статистики зависимостей: ${error.message}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Получает детальную информацию о файле
|
|
70
|
+
* @param projectId ID проекта
|
|
71
|
+
* @param filePath Путь к файлу
|
|
72
|
+
* @returns Информация о файле
|
|
73
|
+
*/
|
|
74
|
+
async getFileDetails(projectId, filePath) {
|
|
75
|
+
try {
|
|
76
|
+
const response = await this.client.get(`/projects/${projectId}/dependencies/file-details`, { params: { path: filePath } });
|
|
77
|
+
if (!response.success || !response.data) {
|
|
78
|
+
throw new Error(response.error || 'Ошибка при получении информации о файле');
|
|
79
|
+
}
|
|
80
|
+
return response.data;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
throw new Error(`Ошибка при получении информации о файле: ${error.message}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Получает связанные компоненты для файла
|
|
88
|
+
* @param projectId ID проекта
|
|
89
|
+
* @param params Параметры запроса связанных компонентов
|
|
90
|
+
* @returns Связанные компоненты
|
|
91
|
+
*/
|
|
92
|
+
async getRelatedComponents(projectId, params) {
|
|
93
|
+
try {
|
|
94
|
+
const response = await this.client.get(`/projects/${projectId}/dependencies/related`, {
|
|
95
|
+
params: {
|
|
96
|
+
path: params.filePath,
|
|
97
|
+
maxDepth: params.maxDepth || 3,
|
|
98
|
+
includeIncoming: params.includeIncoming || true,
|
|
99
|
+
includeOutgoing: params.includeOutgoing || true,
|
|
100
|
+
maxNodes: params.maxNodes || 20
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
if (!response.success || !response.data) {
|
|
104
|
+
throw new Error(response.error || 'Ошибка при получении связанных компонентов');
|
|
105
|
+
}
|
|
106
|
+
return response.data;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
throw new Error(`Ошибка при получении связанных компонентов: ${error.message}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Анализирует граф зависимостей проекта
|
|
114
|
+
* @param projectId ID проекта
|
|
115
|
+
* @returns Результат анализа
|
|
116
|
+
*/
|
|
117
|
+
async analyzeDependencyGraph(projectId) {
|
|
118
|
+
try {
|
|
119
|
+
const response = await this.client.get(`/projects/${projectId}/dependencies/analyze`);
|
|
120
|
+
if (!response.success || !response.data) {
|
|
121
|
+
throw new Error(response.error || 'Ошибка при анализе графа зависимостей');
|
|
122
|
+
}
|
|
123
|
+
return response.data;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
throw new Error(`Ошибка при анализе графа зависимостей: ${error.message}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.DependenciesApi = DependenciesApi;
|
|
131
|
+
//# sourceMappingURL=dependencies-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies-api.js","sourceRoot":"","sources":["../../../src/api/dependencies-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,22 @@ class ProjectsApi {
|
|
|
12
12
|
constructor(httpClient) {
|
|
13
13
|
this.httpClient = httpClient;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Проверяет валидность идентификатора проекта
|
|
17
|
+
* @param {string} projectId ID проекта
|
|
18
|
+
* @throws {Error} Если ID проекта не валиден
|
|
19
|
+
*/
|
|
20
|
+
validateProjectId(projectId) {
|
|
21
|
+
if (projectId === undefined || projectId === null) {
|
|
22
|
+
throw new Error('Project ID is required');
|
|
23
|
+
}
|
|
24
|
+
if (typeof projectId !== 'string') {
|
|
25
|
+
throw new Error('Project ID must be a string');
|
|
26
|
+
}
|
|
27
|
+
if (projectId.trim() === '') {
|
|
28
|
+
throw new Error('Project ID cannot be empty');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
15
31
|
/**
|
|
16
32
|
* Получает список всех проектов
|
|
17
33
|
* @returns {Promise<Project[]>} Список проектов
|
|
@@ -25,6 +41,7 @@ class ProjectsApi {
|
|
|
25
41
|
* @returns {Promise<Project>} Проект
|
|
26
42
|
*/
|
|
27
43
|
async getProject(projectId) {
|
|
44
|
+
this.validateProjectId(projectId);
|
|
28
45
|
return this.httpClient.get(`/api/v1/projects/${projectId}`);
|
|
29
46
|
}
|
|
30
47
|
/**
|
|
@@ -48,6 +65,7 @@ class ProjectsApi {
|
|
|
48
65
|
* @returns {Promise<Project>} Обновленный проект
|
|
49
66
|
*/
|
|
50
67
|
async updateProject(projectId, data) {
|
|
68
|
+
this.validateProjectId(projectId);
|
|
51
69
|
return this.httpClient.put(`/api/v1/projects/${projectId}`, data);
|
|
52
70
|
}
|
|
53
71
|
/**
|
|
@@ -56,6 +74,7 @@ class ProjectsApi {
|
|
|
56
74
|
* @returns {Promise<void>}
|
|
57
75
|
*/
|
|
58
76
|
async deleteProject(projectId) {
|
|
77
|
+
this.validateProjectId(projectId);
|
|
59
78
|
return this.httpClient.delete(`/api/v1/projects/${projectId}`);
|
|
60
79
|
}
|
|
61
80
|
/**
|
|
@@ -64,6 +83,7 @@ class ProjectsApi {
|
|
|
64
83
|
* @returns {Promise<IndexingResponse>} Информация о начатой индексации
|
|
65
84
|
*/
|
|
66
85
|
async indexProject(projectId) {
|
|
86
|
+
this.validateProjectId(projectId);
|
|
67
87
|
return this.httpClient.post(`/api/v1/projects/${projectId}/index`);
|
|
68
88
|
}
|
|
69
89
|
/**
|
|
@@ -72,6 +92,7 @@ class ProjectsApi {
|
|
|
72
92
|
* @returns {Promise<void>}
|
|
73
93
|
*/
|
|
74
94
|
async stopIndexing(projectId) {
|
|
95
|
+
this.validateProjectId(projectId);
|
|
75
96
|
return this.httpClient.post(`/api/v1/projects/${projectId}/cancel-indexing`);
|
|
76
97
|
}
|
|
77
98
|
/**
|
|
@@ -80,6 +101,7 @@ class ProjectsApi {
|
|
|
80
101
|
* @returns {Promise<IndexingStatus>} Статус индексации
|
|
81
102
|
*/
|
|
82
103
|
async getIndexingStatus(projectId) {
|
|
104
|
+
this.validateProjectId(projectId);
|
|
83
105
|
return this.httpClient.get(`/api/v1/projects/${projectId}/indexing-status`);
|
|
84
106
|
}
|
|
85
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":";;;AA0FA;;GAEG;AACH,MAAa,WAAW;IAItB;;;OAGG;IACH,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CAAC,SAAiB;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,aAAa,CACxB,IAAY,EACZ,IAAY,EACZ,OAAwB;QAExB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC9C,IAAI;YACJ,IAAI;YACJ,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CACxB,SAAiB,EACjB,IAAgC;QAEhC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,SAAiB;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;IAC/E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;IAC9E,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":";;;AA0FA;;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;;;OAGG;IACI,KAAK,CAAC,cAAc;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CAAC,SAAiB;QACvC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,aAAa,CACxB,IAAY,EACZ,IAAY,EACZ,OAAwB;QAExB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC9C,IAAI;YACJ,IAAI;YACJ,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CACxB,SAAiB,EACjB,IAAgC;QAEhC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,SAAiB;QAC1C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,SAAiB;QACzC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,SAAiB;QACzC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;IAC/E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,SAAS,kBAAkB,CAAC,CAAC;IAC9E,CAAC;CACF;AAzHD,kCAyHC"}
|