solver-sdk 5.0.0 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +80 -0
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/api/updates-api.js +242 -0
- package/dist/cjs/api/updates-api.js.map +1 -0
- package/dist/cjs/code-solver-sdk.js +103 -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 +11 -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/cjs/types/index.js +16 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/updates.js +6 -0
- package/dist/cjs/types/updates.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 +80 -0
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/api/updates-api.js +238 -0
- package/dist/esm/api/updates-api.js.map +1 -0
- package/dist/esm/code-solver-sdk.js +103 -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 +7 -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/esm/types/index.js +2 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/updates.js +5 -0
- package/dist/esm/types/updates.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/api/updates-api.d.ts +145 -0
- package/dist/types/api/updates-api.d.ts.map +1 -0
- package/dist/types/code-solver-sdk.d.ts +58 -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 +5 -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/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/updates.d.ts +86 -0
- package/dist/types/types/updates.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdatesApi = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* API для работы с системой обновлений WorkAI
|
|
6
|
+
*
|
|
7
|
+
* Предоставляет методы для проверки обновлений, получения changelog'ов
|
|
8
|
+
* и отправки статистики использования обновлений.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```javascript
|
|
12
|
+
* // Проверка обновлений
|
|
13
|
+
* const updateInfo = await sdk.updates.checkForUpdates({
|
|
14
|
+
* currentVersion: '1.0.0',
|
|
15
|
+
* channel: 'stable',
|
|
16
|
+
* platform: 'win32-x64',
|
|
17
|
+
* locale: 'ru'
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* if (updateInfo.hasUpdate) {
|
|
21
|
+
* console.log(`Доступно обновление: ${updateInfo.version}`);
|
|
22
|
+
*
|
|
23
|
+
* // Получение описания изменений
|
|
24
|
+
* const changelog = await sdk.updates.getChangelog('1.1.0', 'ru');
|
|
25
|
+
* console.log(changelog);
|
|
26
|
+
*
|
|
27
|
+
* // Отправка статистики
|
|
28
|
+
* await sdk.updates.sendStats({
|
|
29
|
+
* event: 'update_started',
|
|
30
|
+
* currentVersion: '1.0.0',
|
|
31
|
+
* targetVersion: updateInfo.version
|
|
32
|
+
* });
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
class UpdatesApi {
|
|
37
|
+
/**
|
|
38
|
+
* Создает новый экземпляр API для работы с обновлениями
|
|
39
|
+
* @param {HttpClient} httpClient HTTP клиент
|
|
40
|
+
*/
|
|
41
|
+
constructor(httpClient) {
|
|
42
|
+
this.httpClient = httpClient;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Проверяет наличие обновлений для текущей версии клиента
|
|
46
|
+
*
|
|
47
|
+
* @param {UpdateCheckOptions} options Параметры проверки обновления
|
|
48
|
+
* @returns {Promise<UpdateResponse>} Информация об обновлении
|
|
49
|
+
* @throws {Error} При ошибке запроса к API
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```javascript
|
|
53
|
+
* const updateInfo = await sdk.updates.checkForUpdates({
|
|
54
|
+
* currentVersion: '1.0.0',
|
|
55
|
+
* channel: 'stable',
|
|
56
|
+
* platform: 'win32-x64',
|
|
57
|
+
* locale: 'ru'
|
|
58
|
+
* });
|
|
59
|
+
*
|
|
60
|
+
* if (updateInfo.hasUpdate) {
|
|
61
|
+
* console.log(`Новая версия: ${updateInfo.version}`);
|
|
62
|
+
* console.log(`Размер: ${updateInfo.size} байт`);
|
|
63
|
+
* console.log(`URL: ${updateInfo.downloadUrl}`);
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
async checkForUpdates(options) {
|
|
68
|
+
const { currentVersion, channel = 'stable', platform, locale } = options;
|
|
69
|
+
try {
|
|
70
|
+
// Используем VS Code совместимый endpoint
|
|
71
|
+
const endpoint = `/api/update/${platform}/${channel}/${currentVersion}`;
|
|
72
|
+
const response = await this.httpClient.get(endpoint, {
|
|
73
|
+
locale
|
|
74
|
+
});
|
|
75
|
+
// Преобразуем ответ backend'а в формат, ожидаемый клиентом
|
|
76
|
+
return {
|
|
77
|
+
hasUpdate: true, // Если получили 200, значит есть обновление
|
|
78
|
+
version: response.version,
|
|
79
|
+
downloadUrl: response.url,
|
|
80
|
+
checksum: response.sha256,
|
|
81
|
+
size: response.size,
|
|
82
|
+
changelog: Array.isArray(response.releaseNotes)
|
|
83
|
+
? response.releaseNotes.join('\\n')
|
|
84
|
+
: response.releaseNotes,
|
|
85
|
+
releaseDate: response.createdAt,
|
|
86
|
+
isForced: response.metadata?.critical || false,
|
|
87
|
+
signature: response.signature
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
// Backend возвращает HTTP 204 когда обновлений нет
|
|
92
|
+
if (error.status === 204 || error.response?.status === 204) {
|
|
93
|
+
return {
|
|
94
|
+
hasUpdate: false
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
throw new Error(`Ошибка проверки обновлений: ${error.message}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Получает описание изменений (changelog) для указанной версии
|
|
102
|
+
*
|
|
103
|
+
* @param {string} version Версия для получения changelog
|
|
104
|
+
* @param {string} locale Локаль для получения переводов
|
|
105
|
+
* @returns {Promise<string>} Описание изменений в формате Markdown
|
|
106
|
+
* @throws {Error} При ошибке запроса к API
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```javascript
|
|
110
|
+
* const changelog = await sdk.updates.getChangelog('1.1.0', 'ru');
|
|
111
|
+
* console.log(changelog); // Markdown текст с изменениями
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
async getChangelog(version, locale) {
|
|
115
|
+
if (!version) {
|
|
116
|
+
throw new Error('Версия не может быть пустой');
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
// Получаем информацию о версии через admin API или публичный endpoint
|
|
120
|
+
const versionInfo = await this.httpClient.get(`/api/update/releases/latest`, {
|
|
121
|
+
quality: 'stable' // По умолчанию, может быть параметром
|
|
122
|
+
});
|
|
123
|
+
if (versionInfo.version === version) {
|
|
124
|
+
return Array.isArray(versionInfo.releaseNotes)
|
|
125
|
+
? versionInfo.releaseNotes.join('\\n')
|
|
126
|
+
: versionInfo.releaseNotes || `Описание изменений для версии ${version}`;
|
|
127
|
+
}
|
|
128
|
+
// Если версия не совпадает, возвращаем базовое описание
|
|
129
|
+
return `Описание изменений для версии ${version} (${locale})`;
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
throw new Error(`Ошибка получения changelog: ${error.message}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Отправляет статистику событий обновления
|
|
137
|
+
*
|
|
138
|
+
* @param {UpdateStatsEvent} event Событие для отправки статистики
|
|
139
|
+
* @returns {Promise<void>} Promise, который разрешается при успешной отправке
|
|
140
|
+
* @throws {Error} При ошибке отправки статистики
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```javascript
|
|
144
|
+
* // Начало обновления
|
|
145
|
+
* await sdk.updates.sendStats({
|
|
146
|
+
* event: 'update_started',
|
|
147
|
+
* currentVersion: '1.0.0',
|
|
148
|
+
* targetVersion: '1.1.0'
|
|
149
|
+
* });
|
|
150
|
+
*
|
|
151
|
+
* // Завершение обновления
|
|
152
|
+
* await sdk.updates.sendStats({
|
|
153
|
+
* event: 'update_completed',
|
|
154
|
+
* currentVersion: '1.0.0',
|
|
155
|
+
* targetVersion: '1.1.0'
|
|
156
|
+
* });
|
|
157
|
+
*
|
|
158
|
+
* // Ошибка обновления
|
|
159
|
+
* await sdk.updates.sendStats({
|
|
160
|
+
* event: 'update_failed',
|
|
161
|
+
* currentVersion: '1.0.0',
|
|
162
|
+
* targetVersion: '1.1.0',
|
|
163
|
+
* error: 'Ошибка загрузки файла'
|
|
164
|
+
* });
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
async sendStats(event) {
|
|
168
|
+
if (!event.event || !event.currentVersion || !event.targetVersion) {
|
|
169
|
+
throw new Error('Обязательные поля события: event, currentVersion, targetVersion');
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
await this.httpClient.post('/api/update/stats', {
|
|
173
|
+
...event,
|
|
174
|
+
timestamp: new Date().toISOString()
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// Статистика не критична, но логируем ошибку
|
|
179
|
+
console.warn(`Не удалось отправить статистику обновления: ${error.message}`);
|
|
180
|
+
throw new Error(`Ошибка отправки статистики: ${error.message}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Получает информацию о последней доступной версии
|
|
185
|
+
*
|
|
186
|
+
* @param {string} channel Канал обновлений (stable, beta, insider)
|
|
187
|
+
* @returns {Promise<LatestVersionInfo>} Информация о последней версии
|
|
188
|
+
* @throws {Error} При ошибке запроса к API
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```javascript
|
|
192
|
+
* const latestVersion = await sdk.updates.getLatestVersion('stable');
|
|
193
|
+
* console.log(`Последняя версия: ${latestVersion.version}`);
|
|
194
|
+
* console.log(`Платформы: ${Object.keys(latestVersion.platforms)}`);
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
async getLatestVersion(channel = 'stable') {
|
|
198
|
+
try {
|
|
199
|
+
const response = await this.httpClient.get('/api/update/releases/latest', {
|
|
200
|
+
quality: channel
|
|
201
|
+
});
|
|
202
|
+
return {
|
|
203
|
+
version: response.version,
|
|
204
|
+
quality: response.quality,
|
|
205
|
+
platforms: response.platforms,
|
|
206
|
+
releaseNotes: response.releaseNotes,
|
|
207
|
+
createdAt: new Date(response.createdAt),
|
|
208
|
+
isActive: response.isActive
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
if (error.status === 404) {
|
|
213
|
+
throw new Error(`Версия для канала '${channel}' не найдена`);
|
|
214
|
+
}
|
|
215
|
+
throw new Error(`Ошибка получения последней версии: ${error.message}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Проверяет доступность API обновлений
|
|
220
|
+
*
|
|
221
|
+
* @returns {Promise<boolean>} True, если API доступен
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```javascript
|
|
225
|
+
* const isAvailable = await sdk.updates.checkAvailability();
|
|
226
|
+
* if (!isAvailable) {
|
|
227
|
+
* console.log('API обновлений недоступен');
|
|
228
|
+
* }
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
async checkAvailability() {
|
|
232
|
+
try {
|
|
233
|
+
await this.httpClient.get('/api/update/releases/latest', { quality: 'stable' });
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
exports.UpdatesApi = UpdatesApi;
|
|
242
|
+
//# sourceMappingURL=updates-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updates-api.js","sourceRoot":"","sources":["../../../src/api/updates-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,13 @@ const projects_api_js_1 = require("./api/projects-api.js");
|
|
|
6
6
|
const search_api_js_1 = require("./api/search-api.js");
|
|
7
7
|
const index_js_1 = require("./api/chat-api/index.js");
|
|
8
8
|
const tools_api_js_1 = require("./api/tools-api.js");
|
|
9
|
+
const updates_api_js_1 = require("./api/updates-api.js");
|
|
9
10
|
const models_api_js_1 = require("./api/models-api.js");
|
|
10
11
|
const version_js_1 = require("./version.js");
|
|
12
|
+
// 🔄 Delta-Chunking imports
|
|
13
|
+
const delta_chunking_api_js_1 = require("./api/delta-chunking-api.js");
|
|
14
|
+
const delta_chunking_manager_js_1 = require("./delta-chunking/delta-chunking-manager.js");
|
|
15
|
+
const delta_chunking_utils_js_1 = require("./delta-chunking/delta-chunking-utils.js");
|
|
11
16
|
/**
|
|
12
17
|
* Определение типа среды выполнения
|
|
13
18
|
* @returns 'browser' | 'node' | 'unknown'
|
|
@@ -127,6 +132,14 @@ class CodeSolverSDK {
|
|
|
127
132
|
// 🔧 Инициализация Tools API
|
|
128
133
|
this._tools = new tools_api_js_1.ToolsApi(this.httpClient);
|
|
129
134
|
this._models = new models_api_js_1.ModelsApi(this.httpClient);
|
|
135
|
+
this._updates = new updates_api_js_1.UpdatesApi(this.httpClient);
|
|
136
|
+
// 🔄 Инициализируем Delta-Chunking если включен
|
|
137
|
+
if (this._options.deltaChunking?.enabled) {
|
|
138
|
+
const deltaApi = new delta_chunking_api_js_1.DeltaChunkingApi(this.httpClient);
|
|
139
|
+
const deltaUtils = new delta_chunking_utils_js_1.DeltaChunkingUtils(this._projects, this._options, this.environment, this.logger);
|
|
140
|
+
this._deltaManager = new delta_chunking_manager_js_1.DeltaChunkingManager(deltaApi, deltaUtils, this._options, this.logger);
|
|
141
|
+
this.logger.log('🔄 Delta-Chunking инициализирован');
|
|
142
|
+
}
|
|
130
143
|
}
|
|
131
144
|
/**
|
|
132
145
|
* Получает версию SDK
|
|
@@ -232,6 +245,81 @@ class CodeSolverSDK {
|
|
|
232
245
|
get models() {
|
|
233
246
|
return this._models;
|
|
234
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Получает экземпляр API для работы с обновлениями
|
|
250
|
+
* @returns {UpdatesApi} API для работы с обновлениями
|
|
251
|
+
*/
|
|
252
|
+
get updates() {
|
|
253
|
+
return this._updates;
|
|
254
|
+
}
|
|
255
|
+
// 🔄 DELTA-CHUNKING МЕТОДЫ
|
|
256
|
+
/**
|
|
257
|
+
* Проверяет активность delta-chunking функциональности
|
|
258
|
+
* @returns {boolean} true если delta-chunking включен и инициализирован
|
|
259
|
+
*/
|
|
260
|
+
get isDeltaChunkingEnabled() {
|
|
261
|
+
return !!this._deltaManager?.isEnabled;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* 🚀 Синхронизация проекта по пути к директории
|
|
265
|
+
* @param {string} projectId ID проекта
|
|
266
|
+
* @param {string} projectPath Путь к директории проекта
|
|
267
|
+
* @param {SyncOptions} options Опции синхронизации
|
|
268
|
+
* @returns {Promise<SyncResult>} Результат синхронизации
|
|
269
|
+
*/
|
|
270
|
+
async syncProject(projectId, projectPath, options = {}) {
|
|
271
|
+
if (!this._deltaManager) {
|
|
272
|
+
throw new Error('Delta-chunking не включен. Установите deltaChunking.enabled = true в конфигурации SDK');
|
|
273
|
+
}
|
|
274
|
+
return await this._deltaManager.syncProject(projectId, projectPath, options);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* 📤 Синхронизация массива файлов (для web/браузера)
|
|
278
|
+
* @param {string} projectId ID проекта
|
|
279
|
+
* @param {FileContent[]} files Массив файлов для синхронизации
|
|
280
|
+
* @param {SyncOptions} options Опции синхронизации
|
|
281
|
+
* @returns {Promise<SyncResult>} Результат синхронизации
|
|
282
|
+
*/
|
|
283
|
+
async syncFiles(projectId, files, options = {}) {
|
|
284
|
+
if (!this._deltaManager) {
|
|
285
|
+
throw new Error('Delta-chunking не включен. Установите deltaChunking.enabled = true в конфигурации SDK');
|
|
286
|
+
}
|
|
287
|
+
return await this._deltaManager.syncFiles(projectId, files, options);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* 👀 Запуск автоматического наблюдения за изменениями
|
|
291
|
+
* @param {string} projectId ID проекта
|
|
292
|
+
* @param {string} watchPath Путь для наблюдения
|
|
293
|
+
* @returns {Promise<FileWatcher>} File watcher
|
|
294
|
+
*/
|
|
295
|
+
async startAutoSync(projectId, watchPath) {
|
|
296
|
+
if (!this._deltaManager) {
|
|
297
|
+
throw new Error('Delta-chunking не включен. Установите deltaChunking.enabled = true в конфигурации SDK');
|
|
298
|
+
}
|
|
299
|
+
return await this._deltaManager.startAutoSync(projectId, watchPath);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* 📊 Получение статуса синхронизации
|
|
303
|
+
* @param {string} projectId ID проекта
|
|
304
|
+
* @returns {Promise<SyncStatus>} Статус синхронизации
|
|
305
|
+
*/
|
|
306
|
+
async getSyncStatus(projectId) {
|
|
307
|
+
if (!this._deltaManager) {
|
|
308
|
+
throw new Error('Delta-chunking не включен. Установите deltaChunking.enabled = true в конфигурации SDK');
|
|
309
|
+
}
|
|
310
|
+
return await this._deltaManager.getSyncStatus(projectId);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* ❌ Отмена активной синхронизации
|
|
314
|
+
* @param {string} projectId ID проекта
|
|
315
|
+
* @returns {Promise<boolean>} true если синхронизация отменена
|
|
316
|
+
*/
|
|
317
|
+
async cancelSync(projectId) {
|
|
318
|
+
if (!this._deltaManager) {
|
|
319
|
+
throw new Error('Delta-chunking не включен. Установите deltaChunking.enabled = true в конфигурации SDK');
|
|
320
|
+
}
|
|
321
|
+
return await this._deltaManager.cancelSync(projectId);
|
|
322
|
+
}
|
|
235
323
|
/**
|
|
236
324
|
* Обрабатывает ошибки SDK
|
|
237
325
|
* @param {Error} error Ошибка
|
|
@@ -254,9 +342,12 @@ class CodeSolverSDK {
|
|
|
254
342
|
/**
|
|
255
343
|
* Освобождает ресурсы SDK
|
|
256
344
|
*/
|
|
257
|
-
dispose() {
|
|
258
|
-
this.logger.debug('Освобождение ресурсов');
|
|
259
|
-
//
|
|
345
|
+
async dispose() {
|
|
346
|
+
this.logger.debug('Освобождение ресурсов SDK');
|
|
347
|
+
// Останавливаем все file watchers если есть delta-chunking
|
|
348
|
+
if (this._deltaManager) {
|
|
349
|
+
await this._deltaManager.stopAllWatchers();
|
|
350
|
+
}
|
|
260
351
|
}
|
|
261
352
|
/**
|
|
262
353
|
* Устанавливает новый API ключ
|
|
@@ -275,9 +366,17 @@ class CodeSolverSDK {
|
|
|
275
366
|
version: version_js_1.VERSION,
|
|
276
367
|
environment: this.environment,
|
|
277
368
|
baseURL: this._options.baseURL,
|
|
278
|
-
hasApiKey: !!this._options.apiKey
|
|
369
|
+
hasApiKey: !!this._options.apiKey,
|
|
370
|
+
deltaChunkingEnabled: this.isDeltaChunkingEnabled
|
|
279
371
|
};
|
|
280
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* 🔄 Получение менеджера Delta-Chunking для расширенного API
|
|
375
|
+
* @returns {DeltaChunkingManager | undefined} Менеджер delta-chunking или undefined если отключен
|
|
376
|
+
*/
|
|
377
|
+
get deltaManager() {
|
|
378
|
+
return this._deltaManager;
|
|
379
|
+
}
|
|
281
380
|
}
|
|
282
381
|
exports.CodeSolverSDK = CodeSolverSDK;
|
|
283
382
|
/** Глобальный обработчик ошибок */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-solver-sdk.js","sourceRoot":"","sources":["../../src/code-solver-sdk.ts"],"names":[],"mappings":";;;AAAA,2DAAoD;AACpD,2DAAoD;AACpD,uDAAgD;AAChD,sDAAkD;AAClD,qDAA8C;
|
|
1
|
+
{"version":3,"file":"code-solver-sdk.js","sourceRoot":"","sources":["../../src/code-solver-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🔄 Delta-Chunking Manager
|
|
4
|
+
* Менеджер для координации delta-chunking операций
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DeltaChunkingManager = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Менеджер для координации всех delta-chunking операций
|
|
10
|
+
*/
|
|
11
|
+
class DeltaChunkingManager {
|
|
12
|
+
constructor(deltaApi, utils, options, logger) {
|
|
13
|
+
this.deltaApi = deltaApi;
|
|
14
|
+
this.utils = utils;
|
|
15
|
+
this.options = options;
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.activeWatchers = new Map();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Проверка активности delta-chunking
|
|
21
|
+
*/
|
|
22
|
+
get isEnabled() {
|
|
23
|
+
return !!this.deltaApi && !!this.options.deltaChunking?.enabled;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 🚀 Синхронизация проекта по пути к директории
|
|
27
|
+
*/
|
|
28
|
+
async syncProject(projectId, projectPath, options = {}) {
|
|
29
|
+
this.ensureEnabled();
|
|
30
|
+
const startTime = Date.now();
|
|
31
|
+
try {
|
|
32
|
+
this.logger.log(`🚀 Начинаю синхронизацию проекта ${projectId} из ${projectPath}`);
|
|
33
|
+
// 1. Валидация проекта
|
|
34
|
+
await this.utils.validateProject(projectId);
|
|
35
|
+
// 2. Сканирование файлов
|
|
36
|
+
const files = await this.utils.scanProjectFiles(projectPath, options);
|
|
37
|
+
this.logger.log(`📂 Найдено файлов: ${files.length}`);
|
|
38
|
+
// 3. Синхронизация через API
|
|
39
|
+
return await this.syncFiles(projectId, files, options);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
43
|
+
this.logger.error(`❌ Ошибка синхронизации проекта: ${errorMessage}`);
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
projectId,
|
|
47
|
+
processedChunks: 0,
|
|
48
|
+
totalChunks: 0,
|
|
49
|
+
duration: Date.now() - startTime,
|
|
50
|
+
error: errorMessage,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 📤 Синхронизация массива файлов (для web/браузера)
|
|
56
|
+
*/
|
|
57
|
+
async syncFiles(projectId, files, options = {}) {
|
|
58
|
+
this.ensureEnabled();
|
|
59
|
+
const startTime = Date.now();
|
|
60
|
+
try {
|
|
61
|
+
this.logger.log(`📤 Начинаю синхронизацию ${files.length} файлов для проекта ${projectId}`);
|
|
62
|
+
// 1. Инициализация синхронизации
|
|
63
|
+
const rootHash = this.utils.calculateRootHash(files);
|
|
64
|
+
const initResult = await this.deltaApi.initSync(projectId, { clientRootHash: rootHash });
|
|
65
|
+
this.logger.log(`🔄 Сессия инициализирована: ${initResult.sessionId}`);
|
|
66
|
+
// 2. Создание чанков
|
|
67
|
+
const chunks = await this.utils.createChunksFromFiles(files);
|
|
68
|
+
this.logger.log(`🔧 Создано чанков: ${chunks.length}`);
|
|
69
|
+
// 3. Шифрование чанков
|
|
70
|
+
const encryptedChunks = await this.utils.encryptChunks(chunks);
|
|
71
|
+
// 4. Отправка батчами
|
|
72
|
+
const batchSize = options.batchSize || 50;
|
|
73
|
+
let processedTotal = 0;
|
|
74
|
+
const errors = [];
|
|
75
|
+
for (let i = 0; i < encryptedChunks.length; i += batchSize) {
|
|
76
|
+
const batch = encryptedChunks.slice(i, i + batchSize);
|
|
77
|
+
try {
|
|
78
|
+
const batchResult = await this.deltaApi.uploadChunkBatch(projectId, {
|
|
79
|
+
batchIndex: Math.floor(i / batchSize),
|
|
80
|
+
totalBatches: Math.ceil(encryptedChunks.length / batchSize),
|
|
81
|
+
chunks: batch,
|
|
82
|
+
});
|
|
83
|
+
processedTotal += batchResult.processed;
|
|
84
|
+
// Уведомление о прогрессе
|
|
85
|
+
if (options.onProgress) {
|
|
86
|
+
options.onProgress(i + batch.length, encryptedChunks.length);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
91
|
+
errors.push(`Ошибка батча ${Math.floor(i / batchSize)}: ${errorMessage}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// 5. Финализация
|
|
95
|
+
const finalizeResult = await this.deltaApi.finalizeSync(initResult.sessionId);
|
|
96
|
+
const duration = Date.now() - startTime;
|
|
97
|
+
this.logger.log(`✅ Синхронизация завершена за ${duration}ms. Обработано: ${processedTotal}`);
|
|
98
|
+
return {
|
|
99
|
+
success: finalizeResult.success,
|
|
100
|
+
projectId,
|
|
101
|
+
sessionId: initResult.sessionId,
|
|
102
|
+
processedChunks: processedTotal,
|
|
103
|
+
totalChunks: chunks.length,
|
|
104
|
+
duration,
|
|
105
|
+
error: errors.length > 0 ? errors.join('; ') : undefined,
|
|
106
|
+
details: {
|
|
107
|
+
newFiles: files.length, // Упрощено для начала
|
|
108
|
+
changedFiles: 0,
|
|
109
|
+
deletedFiles: 0,
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
115
|
+
this.logger.error(`❌ Ошибка синхронизации файлов: ${errorMessage}`);
|
|
116
|
+
return {
|
|
117
|
+
success: false,
|
|
118
|
+
projectId,
|
|
119
|
+
processedChunks: 0,
|
|
120
|
+
totalChunks: files.length,
|
|
121
|
+
duration: Date.now() - startTime,
|
|
122
|
+
error: errorMessage,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 👀 Запуск автоматического наблюдения за изменениями
|
|
128
|
+
*/
|
|
129
|
+
async startAutoSync(projectId, watchPath) {
|
|
130
|
+
this.ensureEnabled();
|
|
131
|
+
this.logger.log(`👀 Запускаю auto-sync для проекта ${projectId} в ${watchPath}`);
|
|
132
|
+
const watcher = {
|
|
133
|
+
projectId,
|
|
134
|
+
watchPath,
|
|
135
|
+
isActive: false,
|
|
136
|
+
on: (event, callback) => {
|
|
137
|
+
// TODO: Реализовать event listener
|
|
138
|
+
console.log(`📡 Event listener добавлен для ${event}`);
|
|
139
|
+
},
|
|
140
|
+
async start() {
|
|
141
|
+
this.isActive = true;
|
|
142
|
+
// TODO: Реализовать реальный file watching
|
|
143
|
+
console.log(`🟢 File watcher запущен для ${watchPath}`);
|
|
144
|
+
},
|
|
145
|
+
async stop() {
|
|
146
|
+
this.isActive = false;
|
|
147
|
+
console.log(`🔴 File watcher остановлен для ${watchPath}`);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
// Регистрируем watcher
|
|
151
|
+
this.activeWatchers.set(`${projectId}:${watchPath}`, watcher);
|
|
152
|
+
// TODO: Интеграция с реальным file watching (fs.watch для Node.js)
|
|
153
|
+
this.logger.warn('⚠️ File watching пока в разработке - используйте ручную синхронизацию');
|
|
154
|
+
return watcher;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* 📊 Получение статуса синхронизации
|
|
158
|
+
*/
|
|
159
|
+
async getSyncStatus(projectId) {
|
|
160
|
+
this.ensureEnabled();
|
|
161
|
+
return await this.deltaApi.getSyncStatus(projectId);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* ❌ Отмена активной синхронизации
|
|
165
|
+
*/
|
|
166
|
+
async cancelSync(projectId) {
|
|
167
|
+
this.ensureEnabled();
|
|
168
|
+
const result = await this.deltaApi.cancelSync(projectId);
|
|
169
|
+
return result.success;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Получение активных file watchers
|
|
173
|
+
*/
|
|
174
|
+
getActiveWatchers() {
|
|
175
|
+
return new Map(this.activeWatchers);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Остановка всех file watchers
|
|
179
|
+
*/
|
|
180
|
+
async stopAllWatchers() {
|
|
181
|
+
this.logger.log(`⏹️ Останавливаю ${this.activeWatchers.size} активных watchers`);
|
|
182
|
+
for (const [key, watcher] of this.activeWatchers) {
|
|
183
|
+
try {
|
|
184
|
+
await watcher.stop();
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
this.logger.warn(`⚠️ Ошибка остановки watcher ${key}: ${error instanceof Error ? error.message : 'unknown'}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
this.activeWatchers.clear();
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Проверка что delta-chunking включен
|
|
194
|
+
*/
|
|
195
|
+
ensureEnabled() {
|
|
196
|
+
if (!this.isEnabled) {
|
|
197
|
+
throw new Error('Delta-chunking не включен. Установите deltaChunking.enabled = true в конфигурации SDK');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.DeltaChunkingManager = DeltaChunkingManager;
|
|
202
|
+
//# sourceMappingURL=delta-chunking-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-chunking-manager.js","sourceRoot":"","sources":["../../../src/delta-chunking/delta-chunking-manager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAaH;;GAEG;AACH,MAAa,oBAAoB;IAG/B,YACmB,QAA0B,EAC1B,KAAyB,EACzB,OAA6B,EAC7B,MAIhB;QAPgB,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,UAAK,GAAL,KAAK,CAAoB;QACzB,YAAO,GAAP,OAAO,CAAsB;QAC7B,WAAM,GAAN,MAAM,CAItB;QAVK,mBAAc,GAA6B,IAAI,GAAG,EAAE,CAAC;IAW1D,CAAC;IAEJ;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,WAAmB,EACnB,UAAuB,EAAE;QAEzB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,SAAS,OAAO,WAAW,EAAE,CAAC,CAAC;YAEnF,uBAAuB;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAE5C,yBAAyB;YACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAEtD,6BAA6B;YAC7B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;YACrE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS;gBACT,eAAe,EAAE,CAAC;gBAClB,WAAW,EAAE,CAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK,EAAE,YAAY;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,KAAoB,EACpB,UAAuB,EAAE;QAEzB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,MAAM,uBAAuB,SAAS,EAAE,CAAC,CAAC;YAE5F,iCAAiC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEzF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;YAEvE,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAEvD,uBAAuB;YACvB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAE/D,sBAAsB;YACtB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;YAC1C,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;gBAEtD,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE;wBAClE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;wBACrC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC;wBAC3D,MAAM,EAAE,KAAK;qBACd,CAAC,CAAC;oBAEH,cAAc,IAAI,WAAW,CAAC,SAAS,CAAC;oBAExC,0BAA0B;oBAC1B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;wBACvB,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC/D,CAAC;gBAEH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAE9E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,QAAQ,mBAAmB,cAAc,EAAE,CAAC,CAAC;YAE7F,OAAO;gBACL,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,SAAS;gBACT,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,eAAe,EAAE,cAAc;gBAC/B,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBACxD,OAAO,EAAE;oBACP,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB;oBAC9C,YAAY,EAAE,CAAC;oBACf,YAAY,EAAE,CAAC;iBAChB;aACF,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS;gBACT,eAAe,EAAE,CAAC;gBAClB,WAAW,EAAE,KAAK,CAAC,MAAM;gBACzB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK,EAAE,YAAY;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,SAAiB;QACtD,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,SAAS,MAAM,SAAS,EAAE,CAAC,CAAC;QAEjF,MAAM,OAAO,GAAgB;YAC3B,SAAS;YACT,SAAS;YACT,QAAQ,EAAE,KAAK;YAEf,EAAE,EAAE,CAAC,KAAa,EAAE,QAAkC,EAAE,EAAE;gBACxD,mCAAmC;gBACnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,KAAK,CAAC,KAAK;gBACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,2CAA2C;gBAC3C,OAAO,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;YAC1D,CAAC;YAED,KAAK,CAAC,IAAI;gBACR,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;YAC7D,CAAC;SACF,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QAE9D,mEAAmE;QACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QAE1F,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAEjF,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAChH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;CACF;AA/OD,oDA+OC"}
|