common-tg-service 1.0.96 → 1.0.98

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.
@@ -1,9 +1,30 @@
1
1
  import TelegramManager from '../TelegramManager';
2
2
  import { UsersService } from '../../../components/users/users.service';
3
+ interface RetryConfig {
4
+ maxAttempts: number;
5
+ baseDelay: number;
6
+ maxDelay: number;
7
+ backoffMultiplier: number;
8
+ jitter: boolean;
9
+ }
10
+ interface ClientInfo {
11
+ client: TelegramManager;
12
+ lastUsed: number;
13
+ autoDisconnect: boolean;
14
+ connectionAttempts: number;
15
+ lastError?: Error;
16
+ state: 'connecting' | 'connected' | 'disconnecting' | 'disconnected' | 'error';
17
+ retryConfig: RetryConfig;
18
+ nextRetryAt?: number;
19
+ consecutiveFailures: number;
20
+ lastSuccessfulConnection?: number;
21
+ }
3
22
  interface GetClientOptions {
4
23
  autoDisconnect?: boolean;
5
24
  handler?: boolean;
6
25
  timeout?: number;
26
+ retryConfig?: Partial<RetryConfig>;
27
+ forceReconnect?: boolean;
7
28
  }
8
29
  declare class ConnectionManager {
9
30
  private static instance;
@@ -11,21 +32,28 @@ declare class ConnectionManager {
11
32
  private readonly logger;
12
33
  private cleanupInterval;
13
34
  private usersService;
14
- private readonly MAX_RETRY_ATTEMPTS;
35
+ private readonly DEFAULT_RETRY_CONFIG;
15
36
  private readonly CONNECTION_TIMEOUT;
16
37
  private readonly MAX_CONCURRENT_CONNECTIONS;
17
38
  private readonly COOLDOWN_PERIOD;
39
+ private readonly VALIDATION_TIMEOUT;
18
40
  private constructor();
19
41
  private handleShutdown;
20
42
  setUsersService(usersService: UsersService): void;
21
43
  static getInstance(): ConnectionManager;
22
- private cleanupInactiveConnections;
23
- private updateLastUsed;
44
+ private calculateRetryDelay;
45
+ private shouldRetry;
46
+ private waitForRetry;
24
47
  private validateConnection;
48
+ private attemptConnection;
25
49
  getClient(mobile: string, options?: GetClientOptions): Promise<TelegramManager>;
50
+ private retryConnection;
51
+ private handleConnectionError;
52
+ private createNewClient;
53
+ private cleanupInactiveConnections;
54
+ private updateLastUsed;
26
55
  hasClient(number: string): boolean;
27
56
  disconnectAll(): Promise<void>;
28
- private registerClient;
29
57
  unregisterClient(mobile: string): Promise<void>;
30
58
  getActiveConnectionCount(): number;
31
59
  startCleanupInterval(intervalMs?: number): NodeJS.Timeout;
@@ -37,7 +65,11 @@ declare class ConnectionManager {
37
65
  connecting: number;
38
66
  disconnecting: number;
39
67
  error: number;
68
+ retrying: number;
40
69
  };
70
+ getClientInfo(mobile: string): ClientInfo | undefined;
71
+ forceReconnect(mobile: string): Promise<TelegramManager>;
72
+ setRetryConfig(mobile: string, config: Partial<RetryConfig>): boolean;
41
73
  }
42
74
  export declare const connectionManager: ConnectionManager;
43
75
  export {};
@@ -14,17 +14,26 @@ class ConnectionManager {
14
14
  constructor() {
15
15
  this.cleanupInterval = null;
16
16
  this.usersService = null;
17
- this.MAX_RETRY_ATTEMPTS = 3;
18
- this.CONNECTION_TIMEOUT = 30000;
17
+ this.DEFAULT_RETRY_CONFIG = {
18
+ maxAttempts: 5,
19
+ baseDelay: 1000,
20
+ maxDelay: 30000,
21
+ backoffMultiplier: 2,
22
+ jitter: true
23
+ };
24
+ this.CONNECTION_TIMEOUT = 60000;
19
25
  this.MAX_CONCURRENT_CONNECTIONS = 100;
20
- this.COOLDOWN_PERIOD = 60000;
26
+ this.COOLDOWN_PERIOD = 600000;
27
+ this.VALIDATION_TIMEOUT = 10000;
21
28
  this.clients = new Map();
22
29
  this.logger = telegram_logger_1.TelegramLogger.getInstance();
23
30
  process.on('SIGTERM', () => this.handleShutdown());
24
31
  process.on('SIGINT', () => this.handleShutdown());
32
+ this.startCleanupInterval();
25
33
  }
26
34
  async handleShutdown() {
27
35
  this.logger.logOperation('ConnectionManager', 'Graceful shutdown initiated');
36
+ this.stopCleanupInterval();
28
37
  await this.disconnectAll();
29
38
  process.exit(0);
30
39
  }
@@ -34,43 +43,58 @@ class ConnectionManager {
34
43
  static getInstance() {
35
44
  if (!ConnectionManager.instance) {
36
45
  ConnectionManager.instance = new ConnectionManager();
37
- ConnectionManager.instance.startCleanupInterval(120000);
38
46
  }
39
47
  return ConnectionManager.instance;
40
48
  }
41
- async cleanupInactiveConnections(maxIdleTime = 180000) {
49
+ calculateRetryDelay(attempt, config) {
50
+ let delay = Math.min(config.baseDelay * Math.pow(config.backoffMultiplier, attempt), config.maxDelay);
51
+ if (config.jitter) {
52
+ delay = delay * (0.5 + Math.random() * 0.5);
53
+ }
54
+ return Math.floor(delay);
55
+ }
56
+ shouldRetry(clientInfo, error) {
42
57
  const now = Date.now();
43
- const disconnectionPromises = [];
44
- for (const [mobile, connection] of this.clients.entries()) {
45
- if (!connection.autoDisconnect) {
46
- continue;
47
- }
48
- if (now - connection.lastUsed > maxIdleTime ||
49
- connection.state === 'error' ||
50
- connection.connectionAttempts >= this.MAX_RETRY_ATTEMPTS) {
51
- this.logger.logOperation(mobile, `Cleaning up connection in state: ${connection.state}`);
52
- disconnectionPromises.push(this.unregisterClient(mobile));
53
- }
58
+ if (clientInfo.connectionAttempts >= clientInfo.retryConfig.maxAttempts) {
59
+ return false;
54
60
  }
55
- await Promise.all(disconnectionPromises);
61
+ if (clientInfo.nextRetryAt && now < clientInfo.nextRetryAt) {
62
+ return false;
63
+ }
64
+ const errorMessage = error.message.toLowerCase();
65
+ const nonRetryableErrors = [
66
+ 'user_deactivated_ban',
67
+ 'auth_key_unregistered',
68
+ 'session_revoked',
69
+ 'phone_number_banned',
70
+ 'user_deactivated'
71
+ ];
72
+ if (nonRetryableErrors.some(errType => errorMessage.includes(errType))) {
73
+ this.logger.logOperation(clientInfo.client?.phoneNumber || 'unknown', `Non-retryable error detected: ${error.message}`);
74
+ return false;
75
+ }
76
+ return true;
56
77
  }
57
- updateLastUsed(mobile) {
58
- const connection = this.clients.get(mobile);
59
- if (connection) {
60
- connection.lastUsed = Date.now();
61
- this.clients.set(mobile, connection);
78
+ async waitForRetry(clientInfo) {
79
+ if (!clientInfo.nextRetryAt)
80
+ return;
81
+ const now = Date.now();
82
+ const waitTime = Math.max(0, clientInfo.nextRetryAt - now);
83
+ if (waitTime > 0) {
84
+ this.logger.logOperation(clientInfo.client?.phoneNumber || 'unknown', `Waiting ${waitTime}ms before retry attempt ${clientInfo.connectionAttempts + 1}`);
85
+ await new Promise(resolve => setTimeout(resolve, waitTime));
62
86
  }
63
87
  }
64
88
  async validateConnection(mobile, client) {
65
89
  try {
66
- const isConnected = client.connected();
67
- if (!isConnected) {
68
- throw new Error('Connection validation failed');
90
+ if (!client.connected()) {
91
+ return false;
69
92
  }
70
- await Promise.race([
93
+ const validationPromises = [
71
94
  client.client.getMe(),
72
- new Promise((_, reject) => setTimeout(() => reject(new Error('Connection validation timeout')), 5000))
73
- ]);
95
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Validation timeout')), this.VALIDATION_TIMEOUT))
96
+ ];
97
+ await Promise.race(validationPromises);
74
98
  return true;
75
99
  }
76
100
  catch (error) {
@@ -78,6 +102,18 @@ class ConnectionManager {
78
102
  return false;
79
103
  }
80
104
  }
105
+ async attemptConnection(mobile, telegramManager, timeout) {
106
+ const connectionPromises = [
107
+ telegramManager.createClient(true),
108
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), timeout))
109
+ ];
110
+ const client = await Promise.race(connectionPromises);
111
+ await Promise.race([
112
+ client.getMe(),
113
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Client verification timeout')), 5000))
114
+ ]);
115
+ return client;
116
+ }
81
117
  async getClient(mobile, options = {}) {
82
118
  if (!mobile) {
83
119
  throw new common_1.BadRequestException('Mobile number is required');
@@ -85,77 +121,159 @@ class ConnectionManager {
85
121
  if (this.clients.size >= this.MAX_CONCURRENT_CONNECTIONS) {
86
122
  throw new common_1.InternalServerErrorException('Maximum connection limit reached');
87
123
  }
88
- const { autoDisconnect = true, handler = true, timeout = this.CONNECTION_TIMEOUT } = options;
89
- const clientInfo = this.clients.get(mobile);
90
- if (clientInfo?.client) {
124
+ const { autoDisconnect = true, handler = true, timeout = this.CONNECTION_TIMEOUT, retryConfig = {}, forceReconnect = false } = options;
125
+ const mergedRetryConfig = {
126
+ ...this.DEFAULT_RETRY_CONFIG,
127
+ ...retryConfig
128
+ };
129
+ let clientInfo = this.clients.get(mobile);
130
+ if (clientInfo?.client && !forceReconnect) {
91
131
  this.updateLastUsed(mobile);
92
- if (clientInfo.state === 'connected' && await this.validateConnection(mobile, clientInfo.client)) {
132
+ if (clientInfo.state === 'connected' &&
133
+ await this.validateConnection(mobile, clientInfo.client)) {
93
134
  this.logger.logOperation(mobile, 'Reusing existing connected client');
135
+ clientInfo.consecutiveFailures = 0;
136
+ clientInfo.lastSuccessfulConnection = Date.now();
94
137
  return clientInfo.client;
95
138
  }
96
- if (clientInfo.connectionAttempts < this.MAX_RETRY_ATTEMPTS) {
97
- try {
98
- this.logger.logOperation(mobile, 'Reconnecting existing client');
99
- clientInfo.state = 'connecting';
100
- this.clients.set(mobile, clientInfo);
101
- await Promise.race([
102
- clientInfo.client.connect(),
103
- new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), timeout))
104
- ]);
105
- if (await this.validateConnection(mobile, clientInfo.client)) {
106
- clientInfo.state = 'connected';
107
- clientInfo.connectionAttempts = 0;
108
- this.clients.set(mobile, clientInfo);
109
- return clientInfo.client;
110
- }
111
- }
112
- catch (error) {
113
- clientInfo.connectionAttempts++;
114
- clientInfo.lastError = error;
115
- clientInfo.state = 'error';
116
- this.clients.set(mobile, clientInfo);
117
- this.logger.logError(mobile, 'Failed to reconnect client', error);
118
- }
139
+ if (clientInfo.state === 'error' && this.shouldRetry(clientInfo, clientInfo.lastError)) {
140
+ await this.waitForRetry(clientInfo);
141
+ return this.retryConnection(mobile, clientInfo, timeout);
119
142
  }
143
+ if (clientInfo.connectionAttempts >= clientInfo.retryConfig.maxAttempts) {
144
+ this.logger.logOperation(mobile, 'Max retry attempts reached, cleaning up client');
145
+ await this.unregisterClient(mobile);
146
+ clientInfo = undefined;
147
+ }
148
+ }
149
+ return this.createNewClient(mobile, mergedRetryConfig, { autoDisconnect, handler, timeout });
150
+ }
151
+ async retryConnection(mobile, clientInfo, timeout) {
152
+ try {
153
+ clientInfo.state = 'connecting';
154
+ clientInfo.connectionAttempts++;
155
+ this.clients.set(mobile, clientInfo);
156
+ this.logger.logOperation(mobile, `Retry attempt ${clientInfo.connectionAttempts}/${clientInfo.retryConfig.maxAttempts}`);
157
+ await Promise.race([
158
+ clientInfo.client.connect(),
159
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Reconnection timeout')), timeout))
160
+ ]);
161
+ if (await this.validateConnection(mobile, clientInfo.client)) {
162
+ clientInfo.state = 'connected';
163
+ clientInfo.consecutiveFailures = 0;
164
+ clientInfo.lastSuccessfulConnection = Date.now();
165
+ delete clientInfo.nextRetryAt;
166
+ delete clientInfo.lastError;
167
+ this.clients.set(mobile, clientInfo);
168
+ this.logger.logOperation(mobile, 'Retry connection successful');
169
+ return clientInfo.client;
170
+ }
171
+ throw new Error('Connection validation failed after retry');
172
+ }
173
+ catch (error) {
174
+ return this.handleConnectionError(mobile, clientInfo, error);
175
+ }
176
+ }
177
+ async handleConnectionError(mobile, clientInfo, error) {
178
+ clientInfo.lastError = error;
179
+ clientInfo.consecutiveFailures++;
180
+ clientInfo.state = 'error';
181
+ if (this.shouldRetry(clientInfo, error)) {
182
+ const delay = this.calculateRetryDelay(clientInfo.connectionAttempts, clientInfo.retryConfig);
183
+ clientInfo.nextRetryAt = Date.now() + delay;
184
+ this.clients.set(mobile, clientInfo);
185
+ this.logger.logOperation(mobile, `Connection failed, will retry in ${delay}ms. Attempt ${clientInfo.connectionAttempts}/${clientInfo.retryConfig.maxAttempts}`);
186
+ }
187
+ else {
188
+ this.logger.logOperation(mobile, 'Connection failed with non-retryable error or max attempts reached');
120
189
  await this.unregisterClient(mobile);
121
190
  }
191
+ const errorDetails = (0, parseError_1.parseError)(error, mobile, false);
192
+ throw new common_1.BadRequestException(errorDetails.message);
193
+ }
194
+ async createNewClient(mobile, retryConfig, options) {
122
195
  if (!this.usersService) {
123
- throw new Error('UsersService not initialized');
196
+ throw new common_1.InternalServerErrorException('UsersService not initialized');
124
197
  }
125
198
  const users = await this.usersService.search({ mobile });
126
199
  const user = users[0];
127
200
  if (!user) {
128
201
  throw new common_1.BadRequestException('User not found');
129
202
  }
130
- this.logger.logOperation(mobile, 'Creating New client', { autoDisconnect, handler });
203
+ this.logger.logOperation(mobile, 'Creating new client', {
204
+ autoDisconnect: options.autoDisconnect,
205
+ handler: options.handler,
206
+ retryConfig
207
+ });
131
208
  const telegramManager = new TelegramManager_1.default(user.session, user.mobile);
132
- let client;
209
+ const clientInfo = {
210
+ client: telegramManager,
211
+ lastUsed: Date.now(),
212
+ autoDisconnect: options.autoDisconnect,
213
+ connectionAttempts: 1,
214
+ state: 'connecting',
215
+ retryConfig,
216
+ consecutiveFailures: 0
217
+ };
218
+ this.clients.set(mobile, clientInfo);
133
219
  try {
134
- client = await Promise.race([
135
- telegramManager.createClient(handler),
136
- new Promise((_, reject) => setTimeout(() => reject(new Error('Client creation timeout')), timeout))
137
- ]);
138
- await client.getMe();
220
+ const client = await this.attemptConnection(mobile, telegramManager, options.timeout);
139
221
  if (client) {
140
- await this.registerClient(mobile, telegramManager, { autoDisconnect });
141
- this.logger.logOperation(mobile, 'Client created successfully');
222
+ clientInfo.state = 'connected';
223
+ clientInfo.consecutiveFailures = 0;
224
+ clientInfo.lastSuccessfulConnection = Date.now();
225
+ delete clientInfo.lastError;
226
+ delete clientInfo.nextRetryAt;
227
+ this.clients.set(mobile, clientInfo);
228
+ this.logger.logOperation(mobile, 'New client created successfully');
142
229
  return telegramManager;
143
230
  }
144
231
  else {
145
- throw new common_1.BadRequestException('Client creation failed');
232
+ throw new Error('Client creation returned null');
146
233
  }
147
234
  }
148
235
  catch (error) {
149
- this.logger.logError(mobile, 'Client creation failed', error);
150
- this.logger.logDebug(mobile, 'Parsing error details...');
151
- await this.unregisterClient(mobile);
236
+ this.logger.logError(mobile, 'New client creation failed', error);
152
237
  const errorDetails = (0, parseError_1.parseError)(error, mobile, false);
153
- await TelegramBots_config_1.BotConfig.getInstance().sendMessage(TelegramBots_config_1.ChannelCategory.ACCOUNT_LOGIN_FAILURES, `${process.env.clientId}::${mobile}\n\n${errorDetails.message}`);
238
+ try {
239
+ await TelegramBots_config_1.BotConfig.getInstance().sendMessage(TelegramBots_config_1.ChannelCategory.ACCOUNT_LOGIN_FAILURES, `${process.env.clientId}::${mobile}\n\nAttempt: ${clientInfo.connectionAttempts}\nError: ${errorDetails.message}`);
240
+ }
241
+ catch (notificationError) {
242
+ this.logger.logError(mobile, 'Failed to send error notification', notificationError);
243
+ }
154
244
  if ((0, utils_1.contains)(errorDetails.message.toLowerCase(), ['expired', 'unregistered', 'deactivated', 'revoked', 'user_deactivated_ban'])) {
155
- this.logger.logOperation(mobile, 'Marking user as expired');
156
- await this.usersService.updateByFilter({ $or: [{ tgId: user.tgId }, { mobile: mobile }] }, { expired: true });
245
+ this.logger.logOperation(mobile, 'Marking user as expired due to permanent error');
246
+ try {
247
+ await this.usersService.updateByFilter({ $or: [{ tgId: user.tgId }, { mobile: mobile }] }, { expired: true });
248
+ }
249
+ catch (updateError) {
250
+ this.logger.logError(mobile, 'Failed to mark user as expired', updateError);
251
+ }
157
252
  }
158
- throw new common_1.BadRequestException(errorDetails.message);
253
+ return this.handleConnectionError(mobile, clientInfo, error);
254
+ }
255
+ }
256
+ async cleanupInactiveConnections(maxIdleTime = 180000) {
257
+ const now = Date.now();
258
+ const disconnectionPromises = [];
259
+ for (const [mobile, connection] of this.clients.entries()) {
260
+ const shouldCleanup = (connection.autoDisconnect || connection.lastUsed <= now - this.COOLDOWN_PERIOD) &&
261
+ (now - connection.lastUsed > maxIdleTime ||
262
+ connection.state === 'error' ||
263
+ connection.consecutiveFailures >= connection.retryConfig.maxAttempts ||
264
+ (connection.state === 'connecting' && now - connection.lastUsed > this.CONNECTION_TIMEOUT * 2));
265
+ if (shouldCleanup) {
266
+ this.logger.logOperation(mobile, `Cleaning up connection - state: ${connection.state}, failures: ${connection.consecutiveFailures}`);
267
+ disconnectionPromises.push(this.unregisterClient(mobile));
268
+ }
269
+ }
270
+ await Promise.all(disconnectionPromises);
271
+ }
272
+ updateLastUsed(mobile) {
273
+ const connection = this.clients.get(mobile);
274
+ if (connection) {
275
+ connection.lastUsed = Date.now();
276
+ this.clients.set(mobile, connection);
159
277
  }
160
278
  }
161
279
  hasClient(number) {
@@ -169,7 +287,6 @@ class ConnectionManager {
169
287
  if (connection.state !== 'disconnecting' && connection.state !== 'disconnected') {
170
288
  connection.state = 'disconnecting';
171
289
  this.clients.set(mobile, connection);
172
- this.logger.logOperation(mobile, 'Disconnecting client');
173
290
  disconnectionPromises.push(this.unregisterClient(mobile));
174
291
  }
175
292
  }
@@ -177,26 +294,17 @@ class ConnectionManager {
177
294
  this.clients.clear();
178
295
  this.logger.logOperation('ConnectionManager', 'All clients disconnected');
179
296
  }
180
- async registerClient(mobile, telegramManager, options = { autoDisconnect: true }) {
181
- this.clients.set(mobile, {
182
- client: telegramManager,
183
- lastUsed: Date.now(),
184
- autoDisconnect: options.autoDisconnect,
185
- connectionAttempts: 0,
186
- state: 'connected'
187
- });
188
- this.logger.logOperation(mobile, `Client registered successfully${!options.autoDisconnect ? ' (excluded from auto-cleanup)' : ''}`);
189
- }
190
297
  async unregisterClient(mobile) {
191
298
  try {
192
299
  const clientInfo = this.clients.get(mobile);
193
300
  if (clientInfo) {
194
301
  clientInfo.state = 'disconnecting';
195
302
  this.clients.set(mobile, clientInfo);
196
- await Promise.race([
303
+ const disconnectionPromises = [
197
304
  clientInfo.client?.disconnect(),
198
305
  new Promise((resolve) => setTimeout(resolve, 5000))
199
- ]);
306
+ ];
307
+ await Promise.race(disconnectionPromises);
200
308
  this.logger.logOperation(mobile, 'Client unregistered successfully');
201
309
  }
202
310
  }
@@ -213,6 +321,9 @@ class ConnectionManager {
213
321
  .length;
214
322
  }
215
323
  startCleanupInterval(intervalMs = 120000) {
324
+ if (this.cleanupInterval) {
325
+ return this.cleanupInterval;
326
+ }
216
327
  this.stopCleanupInterval();
217
328
  this.cleanupInterval = setInterval(() => {
218
329
  this.cleanupInactiveConnections().catch(err => {
@@ -220,6 +331,9 @@ class ConnectionManager {
220
331
  });
221
332
  }, intervalMs);
222
333
  this.logger.logOperation('ConnectionManager', `Cleanup interval started with ${intervalMs}ms interval`);
334
+ this.cleanupInactiveConnections().catch(err => {
335
+ this.logger.logError('ConnectionManager', 'Error in initial cleanup', err);
336
+ });
223
337
  return this.cleanupInterval;
224
338
  }
225
339
  stopCleanupInterval() {
@@ -238,13 +352,37 @@ class ConnectionManager {
238
352
  connected: 0,
239
353
  connecting: 0,
240
354
  disconnecting: 0,
241
- error: 0
355
+ error: 0,
356
+ retrying: 0
242
357
  };
358
+ const now = Date.now();
243
359
  for (const client of this.clients.values()) {
244
- stats[client.state]++;
360
+ if (client.state === 'error' && client.nextRetryAt && now < client.nextRetryAt) {
361
+ stats.retrying++;
362
+ }
363
+ else {
364
+ stats[client.state]++;
365
+ }
245
366
  }
246
367
  return stats;
247
368
  }
369
+ getClientInfo(mobile) {
370
+ return this.clients.get(mobile);
371
+ }
372
+ async forceReconnect(mobile) {
373
+ this.logger.logOperation(mobile, 'Force reconnection requested');
374
+ await this.unregisterClient(mobile);
375
+ return this.getClient(mobile, { forceReconnect: true });
376
+ }
377
+ setRetryConfig(mobile, config) {
378
+ const clientInfo = this.clients.get(mobile);
379
+ if (clientInfo) {
380
+ clientInfo.retryConfig = { ...clientInfo.retryConfig, ...config };
381
+ this.clients.set(mobile, clientInfo);
382
+ return true;
383
+ }
384
+ return false;
385
+ }
248
386
  }
249
387
  exports.connectionManager = ConnectionManager.getInstance();
250
388
  //# sourceMappingURL=connection-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../../src/components/Telegram/utils/connection-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../../src/components/Telegram/utils/connection-manager.ts"],"names":[],"mappings":"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"}