solver-sdk 2.8.0 → 3.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 +327 -360
- package/dist/cjs/api/chat-api/index.js +23 -49
- package/dist/cjs/api/chat-api/index.js.map +1 -1
- package/dist/cjs/api/chat-api/interfaces.js +1 -0
- package/dist/cjs/api/chat-api/interfaces.js.map +1 -1
- package/dist/cjs/api/context-api.js +6 -1
- package/dist/cjs/api/context-api.js.map +1 -1
- package/dist/cjs/api/models-api.js +43 -60
- package/dist/cjs/api/models-api.js.map +1 -1
- package/dist/cjs/api/projects-api.js +67 -295
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/api/search-api.js +131 -8
- package/dist/cjs/api/search-api.js.map +1 -1
- package/dist/cjs/code-solver-sdk.js +68 -322
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/cjs/index.js +3 -19
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/logger.js +4 -4
- package/dist/cjs/utils/logger.js.map +1 -1
- package/dist/esm/api/chat-api/index.js +22 -48
- package/dist/esm/api/chat-api/index.js.map +1 -1
- package/dist/esm/api/chat-api/interfaces.js +1 -0
- package/dist/esm/api/chat-api/interfaces.js.map +1 -1
- package/dist/esm/api/context-api.js +6 -1
- package/dist/esm/api/context-api.js.map +1 -1
- package/dist/esm/api/models-api.js +43 -60
- package/dist/esm/api/models-api.js.map +1 -1
- package/dist/esm/api/projects-api.js +67 -295
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/api/search-api.js +131 -8
- package/dist/esm/api/search-api.js.map +1 -1
- package/dist/esm/code-solver-sdk.js +68 -322
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/esm/index.js +2 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/logger.js +3 -3
- package/dist/esm/utils/logger.js.map +1 -1
- package/dist/types/api/chat-api/index.d.ts +1 -13
- package/dist/types/api/chat-api/index.d.ts.map +1 -1
- package/dist/types/api/chat-api/interfaces.d.ts +6 -54
- package/dist/types/api/chat-api/interfaces.d.ts.map +1 -1
- package/dist/types/api/chat-api/models.d.ts +3 -26
- package/dist/types/api/chat-api/models.d.ts.map +1 -1
- package/dist/types/api/context-api.d.ts.map +1 -1
- package/dist/types/api/models-api.d.ts +31 -62
- package/dist/types/api/models-api.d.ts.map +1 -1
- package/dist/types/api/projects-api.d.ts +50 -127
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/api/search-api.d.ts +147 -6
- package/dist/types/api/search-api.d.ts.map +1 -1
- package/dist/types/code-solver-sdk.d.ts +36 -86
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -14
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/sdk-options.d.ts +18 -66
- package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
- package/dist/types/utils/logger.d.ts +3 -3
- package/dist/types/utils/logger.d.ts.map +1 -1
- package/docs/README.md +53 -37
- package/docs/VSCODE_INTEGRATION.md +208 -371
- package/docs/indexing/INDEXING.md +658 -335
- package/package.json +26 -23
- package/dist/cjs/api/agents-api.js +0 -94
- package/dist/cjs/api/agents-api.js.map +0 -1
- package/dist/cjs/api/chat-api/websocket-helpers.js +0 -211
- package/dist/cjs/api/chat-api/websocket-helpers.js.map +0 -1
- package/dist/cjs/api/dependencies-api.js +0 -286
- package/dist/cjs/api/dependencies-api.js.map +0 -1
- package/dist/cjs/constants/websocket-events.constants.js +0 -170
- package/dist/cjs/constants/websocket-events.constants.js.map +0 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +0 -22
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +0 -1
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/events.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/events.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js +0 -42
- package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
- package/dist/cjs/simple-indexing-client.js +0 -138
- package/dist/cjs/simple-indexing-client.js.map +0 -1
- package/dist/cjs/utils/code-solver-websocket-client.js +0 -497
- package/dist/cjs/utils/code-solver-websocket-client.js.map +0 -1
- package/dist/cjs/utils/connection-state-manager.js +0 -133
- package/dist/cjs/utils/connection-state-manager.js.map +0 -1
- package/dist/cjs/utils/indexing-websocket-client.js +0 -107
- package/dist/cjs/utils/indexing-websocket-client.js.map +0 -1
- package/dist/cjs/utils/session-manager.js +0 -114
- package/dist/cjs/utils/session-manager.js.map +0 -1
- package/dist/cjs/utils/simple-connection-monitor.js +0 -52
- package/dist/cjs/utils/simple-connection-monitor.js.map +0 -1
- package/dist/cjs/utils/websocket-client.js +0 -638
- package/dist/cjs/utils/websocket-client.js.map +0 -1
- package/dist/cjs/ws/base-ws-client.js +0 -280
- package/dist/cjs/ws/base-ws-client.js.map +0 -1
- package/dist/cjs/ws/dependencies-ws-client.js +0 -11
- package/dist/cjs/ws/dependencies-ws-client.js.map +0 -1
- package/dist/cjs/ws/file-editing-ws-client.js +0 -162
- package/dist/cjs/ws/file-editing-ws-client.js.map +0 -1
- package/dist/cjs/ws/filesystem-ws-client.js +0 -305
- package/dist/cjs/ws/filesystem-ws-client.js.map +0 -1
- package/dist/cjs/ws/indexing-ws-client.js +0 -275
- package/dist/cjs/ws/indexing-ws-client.js.map +0 -1
- package/dist/cjs/ws/notifications-ws-client.js +0 -12
- package/dist/cjs/ws/notifications-ws-client.js.map +0 -1
- package/dist/esm/api/agents-api.js +0 -90
- package/dist/esm/api/agents-api.js.map +0 -1
- package/dist/esm/api/chat-api/websocket-helpers.js +0 -205
- package/dist/esm/api/chat-api/websocket-helpers.js.map +0 -1
- package/dist/esm/api/dependencies-api.js +0 -282
- package/dist/esm/api/dependencies-api.js.map +0 -1
- package/dist/esm/constants/websocket-events.constants.js +0 -167
- package/dist/esm/constants/websocket-events.constants.js.map +0 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +0 -19
- package/dist/esm/constants/websocket-namespaces.constants.js.map +0 -1
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/client-options.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/events.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/events.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/vscode-command.interfaces.js +0 -39
- package/dist/esm/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
- package/dist/esm/simple-indexing-client.js +0 -134
- package/dist/esm/simple-indexing-client.js.map +0 -1
- package/dist/esm/utils/code-solver-websocket-client.js +0 -492
- package/dist/esm/utils/code-solver-websocket-client.js.map +0 -1
- package/dist/esm/utils/connection-state-manager.js +0 -129
- package/dist/esm/utils/connection-state-manager.js.map +0 -1
- package/dist/esm/utils/indexing-websocket-client.js +0 -103
- package/dist/esm/utils/indexing-websocket-client.js.map +0 -1
- package/dist/esm/utils/session-manager.js +0 -109
- package/dist/esm/utils/session-manager.js.map +0 -1
- package/dist/esm/utils/simple-connection-monitor.js +0 -48
- package/dist/esm/utils/simple-connection-monitor.js.map +0 -1
- package/dist/esm/utils/websocket-client.js +0 -634
- package/dist/esm/utils/websocket-client.js.map +0 -1
- package/dist/esm/ws/base-ws-client.js +0 -276
- package/dist/esm/ws/base-ws-client.js.map +0 -1
- package/dist/esm/ws/dependencies-ws-client.js +0 -7
- package/dist/esm/ws/dependencies-ws-client.js.map +0 -1
- package/dist/esm/ws/file-editing-ws-client.js +0 -158
- package/dist/esm/ws/file-editing-ws-client.js.map +0 -1
- package/dist/esm/ws/filesystem-ws-client.js +0 -301
- package/dist/esm/ws/filesystem-ws-client.js.map +0 -1
- package/dist/esm/ws/indexing-ws-client.js +0 -271
- package/dist/esm/ws/indexing-ws-client.js.map +0 -1
- package/dist/esm/ws/notifications-ws-client.js +0 -8
- package/dist/esm/ws/notifications-ws-client.js.map +0 -1
- package/dist/types/api/agents-api.d.ts +0 -141
- package/dist/types/api/agents-api.d.ts.map +0 -1
- package/dist/types/api/chat-api/websocket-helpers.d.ts +0 -40
- package/dist/types/api/chat-api/websocket-helpers.d.ts.map +0 -1
- package/dist/types/api/dependencies-api.d.ts +0 -109
- package/dist/types/api/dependencies-api.d.ts.map +0 -1
- package/dist/types/constants/websocket-events.constants.d.ts +0 -144
- package/dist/types/constants/websocket-events.constants.d.ts.map +0 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +0 -17
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +0 -30
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +0 -51
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/events.interfaces.d.ts +0 -165
- package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts +0 -56
- package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts.map +0 -1
- package/dist/types/simple-indexing-client.d.ts +0 -66
- package/dist/types/simple-indexing-client.d.ts.map +0 -1
- package/dist/types/utils/code-solver-websocket-client.d.ts +0 -144
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +0 -1
- package/dist/types/utils/connection-state-manager.d.ts +0 -94
- package/dist/types/utils/connection-state-manager.d.ts.map +0 -1
- package/dist/types/utils/indexing-websocket-client.d.ts +0 -123
- package/dist/types/utils/indexing-websocket-client.d.ts.map +0 -1
- package/dist/types/utils/session-manager.d.ts +0 -98
- package/dist/types/utils/session-manager.d.ts.map +0 -1
- package/dist/types/utils/simple-connection-monitor.d.ts +0 -26
- package/dist/types/utils/simple-connection-monitor.d.ts.map +0 -1
- package/dist/types/utils/websocket-client.d.ts +0 -233
- package/dist/types/utils/websocket-client.d.ts.map +0 -1
- package/dist/types/ws/base-ws-client.d.ts +0 -119
- package/dist/types/ws/base-ws-client.d.ts.map +0 -1
- package/dist/types/ws/dependencies-ws-client.d.ts +0 -6
- package/dist/types/ws/dependencies-ws-client.d.ts.map +0 -1
- package/dist/types/ws/file-editing-ws-client.d.ts +0 -85
- package/dist/types/ws/file-editing-ws-client.d.ts.map +0 -1
- package/dist/types/ws/filesystem-ws-client.d.ts +0 -201
- package/dist/types/ws/filesystem-ws-client.d.ts.map +0 -1
- package/dist/types/ws/indexing-ws-client.d.ts +0 -94
- package/dist/types/ws/indexing-ws-client.d.ts.map +0 -1
- package/dist/types/ws/notifications-ws-client.d.ts +0 -5
- package/dist/types/ws/notifications-ws-client.d.ts.map +0 -1
- package/docs/ARCHITECTURE.md +0 -268
- package/docs/QUICK_START.md +0 -126
- package/docs/WEBSOCKET.md +0 -472
|
@@ -1,492 +0,0 @@
|
|
|
1
|
-
import { WebSocketEvents as WsEvents, ReasoningEventNames } from '../constants/websocket-events.constants';
|
|
2
|
-
import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js';
|
|
3
|
-
import { createWebSocketLogger } from './logger.js';
|
|
4
|
-
import { BaseWebSocketClient } from '../ws/base-ws-client.js';
|
|
5
|
-
// Реэкспортируем WebSocketNamespace для других модулей
|
|
6
|
-
export { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js';
|
|
7
|
-
// Дополнительные события, которые могут отсутствовать в основном перечислении
|
|
8
|
-
const CUSTOM_EVENTS = {
|
|
9
|
-
GET_REASONING_STATUS: 'get_reasoning_status'
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Специализированный WebSocket клиент для пространства имен reasoning
|
|
13
|
-
*/
|
|
14
|
-
class ReasoningWsClient extends BaseWebSocketClient {
|
|
15
|
-
/**
|
|
16
|
-
* Создает новый WebSocket клиент для рассуждений
|
|
17
|
-
* @param {string} baseURL Базовый URL API
|
|
18
|
-
* @param {BaseWebSocketClientOptions} options Опции клиента
|
|
19
|
-
*/
|
|
20
|
-
constructor(baseURL, options = {}) {
|
|
21
|
-
super(WebSocketNamespace.DEFAULT, baseURL, options); // ИСПРАВЛЕНО: DEFAULT вместо REASONING
|
|
22
|
-
/** Активная сессия рассуждения */
|
|
23
|
-
this.activeReasoningId = null;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Подключается к серверу WebSocket с указанным ID рассуждения
|
|
27
|
-
* @param {string} reasoningId ID рассуждения
|
|
28
|
-
* @param {object} options Дополнительные опции
|
|
29
|
-
* @returns {Promise<boolean>} Успешность подключения
|
|
30
|
-
*/
|
|
31
|
-
async connectWithReasoning(reasoningId, options = {}) {
|
|
32
|
-
if (reasoningId) {
|
|
33
|
-
this.activeReasoningId = reasoningId;
|
|
34
|
-
}
|
|
35
|
-
return super.connect({
|
|
36
|
-
reasoningId: this.activeReasoningId,
|
|
37
|
-
...options
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Присоединяется к сессии рассуждения
|
|
42
|
-
* @param {string} reasoningId ID рассуждения
|
|
43
|
-
* @param {boolean} setActive Установить ли как активную сессию
|
|
44
|
-
* @returns {Promise<boolean>} Успешность операции
|
|
45
|
-
*/
|
|
46
|
-
async joinReasoning(reasoningId, setActive = true) {
|
|
47
|
-
if (!this.isConnected()) {
|
|
48
|
-
this.logger.warn(`Попытка присоединения к рассуждению ${reasoningId}, но клиент не подключен`);
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
try {
|
|
52
|
-
// Отправляем запрос на присоединение
|
|
53
|
-
const result = await this.emitWithAck(WsEvents.JOIN_REASONING, { reasoningId });
|
|
54
|
-
if (result.success && setActive) {
|
|
55
|
-
this.activeReasoningId = reasoningId;
|
|
56
|
-
}
|
|
57
|
-
return result.success;
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
this.logger.error(`Ошибка при присоединении к рассуждению ${reasoningId}`, error);
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Подключает к сессии рассуждения и устанавливает обработчик для thinking
|
|
66
|
-
* @param {string} reasoningId ID рассуждения
|
|
67
|
-
* @param {function} thinkingHandler Обработчик событий thinking
|
|
68
|
-
* @returns {Promise<string>} ID рассуждения
|
|
69
|
-
*/
|
|
70
|
-
async connectToThinkingSession(reasoningId, thinkingHandler) {
|
|
71
|
-
// Сначала подключаемся к сессии рассуждения
|
|
72
|
-
const connected = await this.connectWithReasoning(reasoningId, { autoJoin: true });
|
|
73
|
-
if (!connected) {
|
|
74
|
-
throw new Error(`Не удалось подключиться к рассуждению ${reasoningId}`);
|
|
75
|
-
}
|
|
76
|
-
// Затем подписываемся на мышление, если указан обработчик
|
|
77
|
-
if (thinkingHandler) {
|
|
78
|
-
this.subscribeToThinking(thinkingHandler);
|
|
79
|
-
}
|
|
80
|
-
return reasoningId;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Подписаться на события мышления
|
|
84
|
-
* @param callback Функция обратного вызова для обработки событий мышления
|
|
85
|
-
*/
|
|
86
|
-
subscribeToThinking(callback) {
|
|
87
|
-
this.on(ReasoningEventNames.THINKING, callback);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Отписаться от событий мышления
|
|
91
|
-
* @param callback Функция обратного вызова для обработки событий мышления
|
|
92
|
-
*/
|
|
93
|
-
unsubscribeFromThinking(callback) {
|
|
94
|
-
this.off(ReasoningEventNames.THINKING, callback);
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Проверяет статус рассуждения
|
|
98
|
-
* @param {string} reasoningId ID рассуждения
|
|
99
|
-
* @returns {Promise<object>} Объект с информацией о статусе
|
|
100
|
-
*/
|
|
101
|
-
async getReasoningStatus(reasoningId) {
|
|
102
|
-
const id = reasoningId || this.activeReasoningId;
|
|
103
|
-
if (!id) {
|
|
104
|
-
return { exists: false, isActive: false };
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
if (!this.isConnected()) {
|
|
108
|
-
await this.connect();
|
|
109
|
-
}
|
|
110
|
-
const result = await this.emitWithAck(CUSTOM_EVENTS.GET_REASONING_STATUS, { reasoningId: id });
|
|
111
|
-
return result;
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
this.logger.error(`Ошибка при получении статуса рассуждения ${id}`, error);
|
|
115
|
-
return { exists: false, isActive: false };
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Проверяет существование рассуждения
|
|
120
|
-
* @param {string} reasoningId ID рассуждения
|
|
121
|
-
* @returns {Promise<boolean>} true, если рассуждение существует
|
|
122
|
-
*/
|
|
123
|
-
async checkReasoningExists(reasoningId) {
|
|
124
|
-
try {
|
|
125
|
-
const { exists } = await this.getReasoningStatus(reasoningId);
|
|
126
|
-
return exists;
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
return false;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Получает ID активной сессии рассуждения
|
|
134
|
-
* @returns {string | null} ID активной сессии или null
|
|
135
|
-
*/
|
|
136
|
-
getActiveReasoningId() {
|
|
137
|
-
return this.activeReasoningId;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Специализированный WebSocket клиент для пространства имен indexing
|
|
142
|
-
*/
|
|
143
|
-
class IndexingWsClient extends BaseWebSocketClient {
|
|
144
|
-
/**
|
|
145
|
-
* Создает новый WebSocket клиент для индексации
|
|
146
|
-
* @param {string} baseURL Базовый URL API
|
|
147
|
-
* @param {BaseWebSocketClientOptions} options Опции клиента
|
|
148
|
-
*/
|
|
149
|
-
constructor(baseURL, options = {}) {
|
|
150
|
-
super(WebSocketNamespace.INDEXING, baseURL, options);
|
|
151
|
-
/** Активный проект */
|
|
152
|
-
this.activeProjectId = null;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Подключается к серверу WebSocket с указанным ID проекта
|
|
156
|
-
* @param {string} projectId ID проекта
|
|
157
|
-
* @returns {Promise<boolean>} Успешность подключения
|
|
158
|
-
*/
|
|
159
|
-
async connectWithProject(projectId) {
|
|
160
|
-
if (projectId) {
|
|
161
|
-
this.activeProjectId = projectId;
|
|
162
|
-
}
|
|
163
|
-
return super.connect({
|
|
164
|
-
projectId: this.activeProjectId
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Получает ID активного проекта
|
|
169
|
-
* @returns {string | null} ID активного проекта или null
|
|
170
|
-
*/
|
|
171
|
-
getActiveProjectId() {
|
|
172
|
-
return this.activeProjectId;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Специализированный WebSocket клиент для пространства имен dependencies
|
|
177
|
-
*/
|
|
178
|
-
class DependenciesWsClient extends BaseWebSocketClient {
|
|
179
|
-
/**
|
|
180
|
-
* Создает новый WebSocket клиент для зависимостей
|
|
181
|
-
* @param {string} baseURL Базовый URL API
|
|
182
|
-
* @param {BaseWebSocketClientOptions} options Опции клиента
|
|
183
|
-
*/
|
|
184
|
-
constructor(baseURL, options = {}) {
|
|
185
|
-
super(WebSocketNamespace.DEPENDENCIES, baseURL, options);
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Подключается к серверу WebSocket с указанным ID проекта
|
|
189
|
-
* @param {string} projectId ID проекта
|
|
190
|
-
* @returns {Promise<boolean>} Успешность подключения
|
|
191
|
-
*/
|
|
192
|
-
async connectWithProject(projectId) {
|
|
193
|
-
return super.connect({ projectId });
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Специализированный WebSocket клиент для пространства имен notifications
|
|
198
|
-
*/
|
|
199
|
-
class NotificationsWsClient extends BaseWebSocketClient {
|
|
200
|
-
/**
|
|
201
|
-
* Создает новый WebSocket клиент для уведомлений
|
|
202
|
-
* @param {string} baseURL Базовый URL API
|
|
203
|
-
* @param {BaseWebSocketClientOptions} options Опции клиента
|
|
204
|
-
*/
|
|
205
|
-
constructor(baseURL, options = {}) {
|
|
206
|
-
super(WebSocketNamespace.DEFAULT, baseURL, options);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* WebSocket клиент для работы с Code Solver API (фасад)
|
|
211
|
-
*/
|
|
212
|
-
export class CodeSolverWebSocketClient {
|
|
213
|
-
/**
|
|
214
|
-
* Создает новый WebSocket клиент для Code Solver API
|
|
215
|
-
* @param {string} baseURL Базовый URL API
|
|
216
|
-
* @param {CodeSolverWebSocketOptions} [options] Опции клиента
|
|
217
|
-
*/
|
|
218
|
-
constructor(baseURL, options = {}) {
|
|
219
|
-
this.baseURL = baseURL.replace(/^http/, 'ws');
|
|
220
|
-
this.options = {
|
|
221
|
-
...options,
|
|
222
|
-
headers: {
|
|
223
|
-
...(options.headers || {}),
|
|
224
|
-
...(options.apiKey ? { 'Authorization': `Bearer ${options.apiKey}` } : {})
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
// Создаем логгер
|
|
228
|
-
this.logger = createWebSocketLogger('CodeSolverWebSocket');
|
|
229
|
-
// Трансформируем опции для специализированных клиентов
|
|
230
|
-
const clientOptions = {
|
|
231
|
-
...this.options,
|
|
232
|
-
enableAutoPing: options.enableAutoPing !== false,
|
|
233
|
-
enableSessionPersistence: options.enableSessionPersistence !== false,
|
|
234
|
-
// Преобразуем функцию логгера в экземпляр Logger, если передана функция
|
|
235
|
-
logger: typeof options.logger === 'function' ?
|
|
236
|
-
createWebSocketLogger('CodeSolverWebSocket', options.logger) :
|
|
237
|
-
options.logger
|
|
238
|
-
};
|
|
239
|
-
// Создаем специализированные клиенты
|
|
240
|
-
this.reasoningClient = new ReasoningWsClient(this.baseURL, { ...clientOptions, logger: this.logger.withPrefix('Reasoning') });
|
|
241
|
-
this.indexingClient = new IndexingWsClient(this.baseURL, { ...clientOptions, logger: this.logger.withPrefix('Indexing') });
|
|
242
|
-
this.dependenciesClient = new DependenciesWsClient(this.baseURL, { ...clientOptions, logger: this.logger.withPrefix('Dependencies') });
|
|
243
|
-
this.notificationsClient = new NotificationsWsClient(this.baseURL, { ...clientOptions, logger: this.logger.withPrefix('Notifications') });
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Подключается к пространству имен рассуждений
|
|
247
|
-
* @param {string} reasoningId ID рассуждения (опционально)
|
|
248
|
-
* @param {object} options Дополнительные настройки подключения
|
|
249
|
-
* @returns {Promise<boolean>} Результат подключения
|
|
250
|
-
*/
|
|
251
|
-
async connectToReasoning(reasoningId, options = {}) {
|
|
252
|
-
return this.reasoningClient.connectWithReasoning(reasoningId, options);
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Подключается к пространству имен индексации
|
|
256
|
-
* @param {string} projectId ID проекта (опционально)
|
|
257
|
-
* @returns {Promise<boolean>} Результат подключения
|
|
258
|
-
*/
|
|
259
|
-
async connectToIndexing(projectId) {
|
|
260
|
-
return this.indexingClient.connectWithProject(projectId);
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Подключается к уведомлениям
|
|
264
|
-
* @returns {Promise<boolean>} Результат подключения
|
|
265
|
-
*/
|
|
266
|
-
async connectToNotifications() {
|
|
267
|
-
return this.notificationsClient.connect({});
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Подключается к пространству имен dependencies
|
|
271
|
-
* @param {string} projectId ID проекта (опционально)
|
|
272
|
-
* @returns {Promise<boolean>} Результат подключения
|
|
273
|
-
*/
|
|
274
|
-
async connectToDependencies(projectId) {
|
|
275
|
-
return this.dependenciesClient.connectWithProject(projectId);
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Отключается от пространства имен
|
|
279
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
280
|
-
*/
|
|
281
|
-
disconnect(namespace) {
|
|
282
|
-
switch (namespace) {
|
|
283
|
-
// case WebSocketNamespace.REASONING: // УДАЛЕНО - неработающий namespace
|
|
284
|
-
// this.reasoningClient.disconnect();
|
|
285
|
-
// break;
|
|
286
|
-
case WebSocketNamespace.INDEXING:
|
|
287
|
-
this.indexingClient.disconnect();
|
|
288
|
-
break;
|
|
289
|
-
case WebSocketNamespace.DEPENDENCIES:
|
|
290
|
-
this.dependenciesClient.disconnect();
|
|
291
|
-
break;
|
|
292
|
-
case WebSocketNamespace.DEFAULT:
|
|
293
|
-
this.notificationsClient.disconnect();
|
|
294
|
-
break;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Отключается от всех пространств имен
|
|
299
|
-
*/
|
|
300
|
-
disconnectAll() {
|
|
301
|
-
this.reasoningClient.disconnect();
|
|
302
|
-
this.indexingClient.disconnect();
|
|
303
|
-
this.dependenciesClient.disconnect();
|
|
304
|
-
this.notificationsClient.disconnect();
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Проверяет, подключен ли клиент к указанному пространству имен
|
|
308
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
309
|
-
* @returns {boolean} Статус подключения
|
|
310
|
-
*/
|
|
311
|
-
isConnected(namespace) {
|
|
312
|
-
switch (namespace) {
|
|
313
|
-
// case WebSocketNamespace.REASONING: // УДАЛЕНО - неработающий namespace
|
|
314
|
-
// return this.reasoningClient.isConnected();
|
|
315
|
-
case WebSocketNamespace.INDEXING:
|
|
316
|
-
return this.indexingClient.isConnected();
|
|
317
|
-
case WebSocketNamespace.DEPENDENCIES:
|
|
318
|
-
return this.dependenciesClient.isConnected();
|
|
319
|
-
case WebSocketNamespace.DEFAULT:
|
|
320
|
-
return this.notificationsClient.isConnected();
|
|
321
|
-
default:
|
|
322
|
-
return false;
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Проверяет, подключен ли клиент к пространству имен рассуждений
|
|
327
|
-
* @returns {boolean} Статус подключения
|
|
328
|
-
*/
|
|
329
|
-
isConnectedToReasoning() {
|
|
330
|
-
return this.reasoningClient.isConnected();
|
|
331
|
-
}
|
|
332
|
-
/**
|
|
333
|
-
* Проверяет, подключен ли клиент к пространству имен индексации
|
|
334
|
-
* @returns {boolean} Статус подключения
|
|
335
|
-
*/
|
|
336
|
-
isConnectedToIndexing() {
|
|
337
|
-
return this.indexingClient.isConnected();
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Проверяет, подключен ли клиент к пространству имен уведомлений
|
|
341
|
-
* @returns {boolean} Статус подключения
|
|
342
|
-
*/
|
|
343
|
-
isConnectedToNotifications() {
|
|
344
|
-
return this.notificationsClient.isConnected();
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Получает ID активной сессии рассуждения
|
|
348
|
-
* @returns {string | null} ID активной сессии рассуждения или null
|
|
349
|
-
*/
|
|
350
|
-
getActiveReasoningId() {
|
|
351
|
-
return this.reasoningClient.getActiveReasoningId();
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Получает ID активного проекта
|
|
355
|
-
* @returns {string | null} ID активного проекта или null
|
|
356
|
-
*/
|
|
357
|
-
getActiveProjectId() {
|
|
358
|
-
return this.indexingClient.getActiveProjectId();
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Отправляет сообщение в пространство имен
|
|
362
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
363
|
-
* @param {string} eventType Тип события
|
|
364
|
-
* @param {any} [data] Данные сообщения
|
|
365
|
-
* @returns {boolean} Успешно ли отправлено сообщение
|
|
366
|
-
*/
|
|
367
|
-
send(namespace, eventType, data) {
|
|
368
|
-
switch (namespace) {
|
|
369
|
-
// case WebSocketNamespace.REASONING: // УДАЛЕНО - неработающий namespace
|
|
370
|
-
// return this.reasoningClient.send(eventType, data);
|
|
371
|
-
case WebSocketNamespace.INDEXING:
|
|
372
|
-
return this.indexingClient.send(eventType, data);
|
|
373
|
-
case WebSocketNamespace.DEPENDENCIES:
|
|
374
|
-
return this.dependenciesClient.send(eventType, data);
|
|
375
|
-
case WebSocketNamespace.DEFAULT:
|
|
376
|
-
return this.notificationsClient.send(eventType, data);
|
|
377
|
-
default:
|
|
378
|
-
throw new Error(`Неизвестное пространство имен ${namespace}`);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Отправляет сообщение в активную сессию рассуждения
|
|
383
|
-
* @param {string} eventType Тип события
|
|
384
|
-
* @param {any} [data] Данные сообщения
|
|
385
|
-
* @returns {boolean} Успешно ли отправлено сообщение
|
|
386
|
-
*/
|
|
387
|
-
sendToReasoning(eventType, data) {
|
|
388
|
-
return this.reasoningClient.send(eventType, data);
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Отправляет сообщение в активную сессию индексации
|
|
392
|
-
* @param {string} eventType Тип события
|
|
393
|
-
* @param {any} [data] Данные сообщения
|
|
394
|
-
* @returns {boolean} Успешно ли отправлено сообщение
|
|
395
|
-
*/
|
|
396
|
-
sendToIndexing(eventType, data) {
|
|
397
|
-
return this.indexingClient.send(eventType, data);
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Отправляет сообщение в уведомления
|
|
401
|
-
* @param {string} eventType Тип события
|
|
402
|
-
* @param {any} [data] Данные сообщения
|
|
403
|
-
* @returns {boolean} Успешно ли отправлено сообщение
|
|
404
|
-
*/
|
|
405
|
-
sendToNotifications(eventType, data) {
|
|
406
|
-
return this.notificationsClient.send(eventType, data);
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Добавляет обработчик события для пространства имен
|
|
410
|
-
* @param {string} eventType Тип события
|
|
411
|
-
* @param {Function} handler Обработчик события
|
|
412
|
-
* @param {WebSocketNamespace} [namespace] Пространство имен (если не указано, добавляется ко всем активным)
|
|
413
|
-
*/
|
|
414
|
-
on(eventType, handler, namespace) {
|
|
415
|
-
if (namespace) {
|
|
416
|
-
// Если указано пространство имен, добавляем обработчик только к нему
|
|
417
|
-
switch (namespace) {
|
|
418
|
-
// case WebSocketNamespace.REASONING: // УДАЛЕНО - неработающий namespace
|
|
419
|
-
// this.reasoningClient.on(eventType, handler);
|
|
420
|
-
// break;
|
|
421
|
-
case WebSocketNamespace.INDEXING:
|
|
422
|
-
this.indexingClient.on(eventType, handler);
|
|
423
|
-
break;
|
|
424
|
-
case WebSocketNamespace.DEPENDENCIES:
|
|
425
|
-
this.dependenciesClient.on(eventType, handler);
|
|
426
|
-
break;
|
|
427
|
-
case WebSocketNamespace.DEFAULT:
|
|
428
|
-
this.notificationsClient.on(eventType, handler);
|
|
429
|
-
break;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
else {
|
|
433
|
-
// Если пространство имен не указано, добавляем обработчик ко всем активным
|
|
434
|
-
this.reasoningClient.on(eventType, handler);
|
|
435
|
-
this.indexingClient.on(eventType, handler);
|
|
436
|
-
this.dependenciesClient.on(eventType, handler);
|
|
437
|
-
this.notificationsClient.on(eventType, handler);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
/**
|
|
441
|
-
* Удаляет обработчик события для пространства имен
|
|
442
|
-
* @param {string} eventType Тип события
|
|
443
|
-
* @param {Function} [handler] Обработчик события (если не указан, удаляются все обработчики)
|
|
444
|
-
* @param {WebSocketNamespace} [namespace] Пространство имен (если не указано, удаляется из всех активных)
|
|
445
|
-
*/
|
|
446
|
-
off(eventType, handler, namespace) {
|
|
447
|
-
if (namespace) {
|
|
448
|
-
// Если указано пространство имен, удаляем обработчик только из него
|
|
449
|
-
switch (namespace) {
|
|
450
|
-
// case WebSocketNamespace.REASONING: // УДАЛЕНО - неработающий namespace
|
|
451
|
-
// this.reasoningClient.off(eventType, handler);
|
|
452
|
-
// break;
|
|
453
|
-
case WebSocketNamespace.INDEXING:
|
|
454
|
-
this.indexingClient.off(eventType, handler);
|
|
455
|
-
break;
|
|
456
|
-
case WebSocketNamespace.DEPENDENCIES:
|
|
457
|
-
this.dependenciesClient.off(eventType, handler);
|
|
458
|
-
break;
|
|
459
|
-
case WebSocketNamespace.DEFAULT:
|
|
460
|
-
this.notificationsClient.off(eventType, handler);
|
|
461
|
-
break;
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
else {
|
|
465
|
-
// Если пространство имен не указано, удаляем обработчик из всех активных
|
|
466
|
-
this.reasoningClient.off(eventType, handler);
|
|
467
|
-
this.indexingClient.off(eventType, handler);
|
|
468
|
-
this.dependenciesClient.off(eventType, handler);
|
|
469
|
-
this.notificationsClient.off(eventType, handler);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
/**
|
|
473
|
-
* Получает ID сокета для указанного пространства имен
|
|
474
|
-
* @param {WebSocketNamespace} [namespace=WebSocketNamespace.REASONING] Пространство имен
|
|
475
|
-
* @returns {string|null} ID сокета или null, если соединение не установлено
|
|
476
|
-
*/
|
|
477
|
-
getSocketId(namespace = WebSocketNamespace.DEFAULT) {
|
|
478
|
-
switch (namespace) {
|
|
479
|
-
// case WebSocketNamespace.REASONING: // УДАЛЕНО - неработающий namespace
|
|
480
|
-
// return this.reasoningClient.getSocketId();
|
|
481
|
-
case WebSocketNamespace.INDEXING:
|
|
482
|
-
return this.indexingClient.getSocketId();
|
|
483
|
-
case WebSocketNamespace.DEPENDENCIES:
|
|
484
|
-
return this.dependenciesClient.getSocketId();
|
|
485
|
-
case WebSocketNamespace.DEFAULT:
|
|
486
|
-
return this.notificationsClient.getSocketId();
|
|
487
|
-
default:
|
|
488
|
-
return null;
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
//# sourceMappingURL=code-solver-websocket-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-solver-websocket-client.js","sourceRoot":"","sources":["../../../src/utils/code-solver-websocket-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { createWebSocketLogger } from './logger.js';
|
|
2
|
-
/**
|
|
3
|
-
* Класс для управления состоянием подключений
|
|
4
|
-
*/
|
|
5
|
-
export class ConnectionStateManager {
|
|
6
|
-
/**
|
|
7
|
-
* Создает новый менеджер состояния подключений
|
|
8
|
-
* @param {ConnectionStateManagerOptions} options Опции менеджера состояния подключений
|
|
9
|
-
*/
|
|
10
|
-
constructor(options = {}) {
|
|
11
|
-
/** Хранилище состояний подключений */
|
|
12
|
-
this.states = new Map();
|
|
13
|
-
this.reconnectStrategy = options.reconnectStrategy || 'exponential';
|
|
14
|
-
this.retryDelay = options.retryDelay || 1000;
|
|
15
|
-
this.maxRetryDelay = options.maxRetryDelay || 30000;
|
|
16
|
-
this.logger = options.logger || createWebSocketLogger('ConnectionStateManager');
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Получает состояние подключения для указанного пространства имен
|
|
20
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
21
|
-
* @returns {ConnectionState} Состояние подключения
|
|
22
|
-
*/
|
|
23
|
-
getState(namespace) {
|
|
24
|
-
if (!this.states.has(namespace)) {
|
|
25
|
-
// Инициализируем состояние по умолчанию
|
|
26
|
-
this.states.set(namespace, {
|
|
27
|
-
lastConnectTime: 0,
|
|
28
|
-
reconnectAttempts: 0,
|
|
29
|
-
connected: false,
|
|
30
|
-
reconnecting: false
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
return this.states.get(namespace);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Устанавливает состояние подключения для указанного пространства имен
|
|
37
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
38
|
-
* @param {boolean} connected Состояние подключения
|
|
39
|
-
* @param {boolean} reconnecting Состояние переподключения
|
|
40
|
-
*/
|
|
41
|
-
setConnectionState(namespace, connected, reconnecting = false) {
|
|
42
|
-
const state = this.getState(namespace);
|
|
43
|
-
state.connected = connected;
|
|
44
|
-
state.reconnecting = reconnecting;
|
|
45
|
-
if (connected) {
|
|
46
|
-
state.lastConnectTime = Date.now();
|
|
47
|
-
// Сбрасываем счетчик попыток переподключения, если успешно подключились
|
|
48
|
-
if (!reconnecting) {
|
|
49
|
-
state.reconnectAttempts = 0;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
this.states.set(namespace, state);
|
|
53
|
-
this.logger.debug(`Обновлено состояние подключения для ${namespace}`, {
|
|
54
|
-
connected,
|
|
55
|
-
reconnecting,
|
|
56
|
-
attempts: state.reconnectAttempts,
|
|
57
|
-
lastConnect: state.lastConnectTime
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Увеличивает счетчик попыток переподключения для указанного пространства имен
|
|
62
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
63
|
-
* @returns {number} Новое количество попыток
|
|
64
|
-
*/
|
|
65
|
-
incrementReconnectAttempts(namespace) {
|
|
66
|
-
const state = this.getState(namespace);
|
|
67
|
-
state.reconnectAttempts++;
|
|
68
|
-
state.reconnecting = true;
|
|
69
|
-
this.states.set(namespace, state);
|
|
70
|
-
this.logger.debug(`Увеличен счетчик попыток переподключения для ${namespace}`, {
|
|
71
|
-
attempts: state.reconnectAttempts
|
|
72
|
-
});
|
|
73
|
-
return state.reconnectAttempts;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Рассчитывает задержку для переподключения на основе количества попыток и стратегии
|
|
77
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
78
|
-
* @returns {number} Задержка в миллисекундах
|
|
79
|
-
*/
|
|
80
|
-
calculateReconnectDelay(namespace) {
|
|
81
|
-
const state = this.getState(namespace);
|
|
82
|
-
const attempts = state.reconnectAttempts;
|
|
83
|
-
if (this.reconnectStrategy === 'exponential') {
|
|
84
|
-
// Экспоненциальный рост с фактором 1.5
|
|
85
|
-
const calculatedDelay = Math.min(this.retryDelay * Math.pow(1.5, attempts), this.maxRetryDelay);
|
|
86
|
-
// Добавляем случайный фактор (jitter) для предотвращения штормов переподключений
|
|
87
|
-
return calculatedDelay * (0.8 + Math.random() * 0.4);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// Линейный рост
|
|
91
|
-
return Math.min(this.retryDelay * (attempts + 1), this.maxRetryDelay);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Сбрасывает счетчик попыток переподключения для указанного пространства имен
|
|
96
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
97
|
-
*/
|
|
98
|
-
resetReconnectAttempts(namespace) {
|
|
99
|
-
const state = this.getState(namespace);
|
|
100
|
-
state.reconnectAttempts = 0;
|
|
101
|
-
state.reconnecting = false;
|
|
102
|
-
this.states.set(namespace, state);
|
|
103
|
-
this.logger.debug(`Сброшен счетчик попыток переподключения для ${namespace}`);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Регистрирует успешное подключение
|
|
107
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
108
|
-
*/
|
|
109
|
-
registerSuccessfulConnection(namespace) {
|
|
110
|
-
this.setConnectionState(namespace, true, false);
|
|
111
|
-
this.resetReconnectAttempts(namespace);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Регистрирует отключение
|
|
115
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
116
|
-
*/
|
|
117
|
-
registerDisconnection(namespace) {
|
|
118
|
-
this.setConnectionState(namespace, false, false);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Регистрирует начало процесса переподключения
|
|
122
|
-
* @param {WebSocketNamespace} namespace Пространство имен
|
|
123
|
-
*/
|
|
124
|
-
registerReconnecting(namespace) {
|
|
125
|
-
this.setConnectionState(namespace, false, true);
|
|
126
|
-
this.incrementReconnectAttempts(namespace);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=connection-state-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection-state-manager.js","sourceRoot":"","sources":["../../../src/utils/connection-state-manager.ts"],"names":[],"mappings":"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"}
|