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.
Files changed (54) hide show
  1. package/README.md +177 -3
  2. package/dist/cjs/api/chat-api.js +159 -1
  3. package/dist/cjs/api/chat-api.js.map +1 -1
  4. package/dist/cjs/api/dependencies-api.js +131 -0
  5. package/dist/cjs/api/dependencies-api.js.map +1 -0
  6. package/dist/cjs/api/projects-api.js +22 -0
  7. package/dist/cjs/api/projects-api.js.map +1 -1
  8. package/dist/cjs/code-solver-sdk.js +36 -4
  9. package/dist/cjs/code-solver-sdk.js.map +1 -1
  10. package/dist/cjs/index.js +4 -2
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/models/types.js +35 -1
  13. package/dist/cjs/models/types.js.map +1 -1
  14. package/dist/cjs/utils/code-solver-websocket-client.js +52 -16
  15. package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
  16. package/dist/cjs/utils/http-client.js +78 -0
  17. package/dist/cjs/utils/http-client.js.map +1 -1
  18. package/dist/esm/api/chat-api.js +159 -1
  19. package/dist/esm/api/chat-api.js.map +1 -1
  20. package/dist/esm/api/dependencies-api.js +127 -0
  21. package/dist/esm/api/dependencies-api.js.map +1 -0
  22. package/dist/esm/api/projects-api.js +22 -0
  23. package/dist/esm/api/projects-api.js.map +1 -1
  24. package/dist/esm/code-solver-sdk.js +36 -4
  25. package/dist/esm/code-solver-sdk.js.map +1 -1
  26. package/dist/esm/index.js +2 -1
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/models/types.js +34 -0
  29. package/dist/esm/models/types.js.map +1 -1
  30. package/dist/esm/utils/code-solver-websocket-client.js +52 -16
  31. package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
  32. package/dist/esm/utils/http-client.js +45 -0
  33. package/dist/esm/utils/http-client.js.map +1 -1
  34. package/dist/types/api/chat-api.d.ts +42 -0
  35. package/dist/types/api/chat-api.d.ts.map +1 -1
  36. package/dist/types/api/dependencies-api.d.ts +54 -0
  37. package/dist/types/api/dependencies-api.d.ts.map +1 -0
  38. package/dist/types/api/projects-api.d.ts +6 -0
  39. package/dist/types/api/projects-api.d.ts.map +1 -1
  40. package/dist/types/code-solver-sdk.d.ts +21 -1
  41. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  42. package/dist/types/index.d.ts +3 -1
  43. package/dist/types/index.d.ts.map +1 -1
  44. package/dist/types/interfaces/http-client.d.ts +8 -0
  45. package/dist/types/interfaces/http-client.d.ts.map +1 -1
  46. package/dist/types/interfaces/sdk-options.d.ts +27 -0
  47. package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
  48. package/dist/types/models/types.d.ts +186 -0
  49. package/dist/types/models/types.d.ts.map +1 -1
  50. package/dist/types/utils/code-solver-websocket-client.d.ts +125 -12
  51. package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
  52. package/dist/types/utils/http-client.d.ts +12 -0
  53. package/dist/types/utils/http-client.d.ts.map +1 -1
  54. 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
- ## Документация API
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
- Полная документация API доступна в папке `docs/`.
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
 
@@ -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":";;;AAkEA;;GAEG;AACH,MAAa,OAAO;IAIlB;;;OAGG;IACH,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CAAC,QAAuB,EAAE,OAAqB;QAC9D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,6DAA6D;QAC7D,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,+BAA+B;QAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE;YAC1C,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,QAAQ;YACjC,QAAQ;YACR,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,aAAa,EAAE,OAAO,EAAE,aAAa;YACrC,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,YAAY,EAAE,OAAO,EAAE,YAAY;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,QAAuB,EAAE,OAAqB;QACxE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB;QAC5B,IAAI,CAAC;YACH,uDAAuD;YACvD,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAqB;QAC3D,MAAM,QAAQ,GAAkB;YAC9B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAClC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEpD,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF;AApFD,0BAoFC"}
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;AAhGD,kCAgGC"}
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"}