@mtkruto/node 0.67.2 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/esm/0_errors.js +2 -6
  2. package/esm/3_errors.js +2 -12
  3. package/esm/3_types.d.ts +1 -0
  4. package/esm/3_types.d.ts.map +1 -1
  5. package/esm/3_types.js +1 -0
  6. package/esm/4_errors.js +2 -12
  7. package/esm/_dnt.polyfills.d.ts +99 -0
  8. package/esm/_dnt.polyfills.d.ts.map +1 -1
  9. package/esm/_dnt.polyfills.js +127 -1
  10. package/esm/_dnt.test_polyfills.d.ts.map +1 -0
  11. package/esm/client/0_filters_test.d.ts.map +1 -1
  12. package/esm/client/0_markdown_test.d.ts.map +1 -1
  13. package/esm/client/0_params.d.ts +2 -0
  14. package/esm/client/0_params.d.ts.map +1 -1
  15. package/esm/client/0_password.d.ts +5 -5
  16. package/esm/client/0_password.d.ts.map +1 -1
  17. package/esm/client/0_password_test.d.ts.map +1 -1
  18. package/esm/client/0_storage_operations.js +143 -155
  19. package/esm/client/0_storage_operations_test.d.ts.map +1 -1
  20. package/esm/client/0_utilities.d.ts +1 -1
  21. package/esm/client/0_utilities_test.d.ts.map +1 -1
  22. package/esm/client/1_client_plain.js +4 -22
  23. package/esm/client/1_composer.js +8 -21
  24. package/esm/client/2_account_manager.js +85 -97
  25. package/esm/client/2_bot_info_manager.js +26 -38
  26. package/esm/client/2_business_connection_manager.js +10 -23
  27. package/esm/client/2_client_encrypted.js +194 -211
  28. package/esm/client/2_file_manager.d.ts +4 -3
  29. package/esm/client/2_file_manager.d.ts.map +1 -1
  30. package/esm/client/2_file_manager.js +268 -224
  31. package/esm/client/2_file_manager_test.d.ts.map +1 -1
  32. package/esm/client/2_network_statistics_manager.js +8 -21
  33. package/esm/client/2_payment_manager.js +7 -20
  34. package/esm/client/2_reaction_manager.js +7 -20
  35. package/esm/client/2_translations_manager.js +97 -107
  36. package/esm/client/2_update_manager.js +764 -759
  37. package/esm/client/3_client_encrypted_pool.js +10 -26
  38. package/esm/client/3_client_encrypted_pool_test.d.ts.map +1 -1
  39. package/esm/client/3_message_manager.d.ts +1 -1
  40. package/esm/client/3_message_manager.js +441 -448
  41. package/esm/client/3_message_manager_test.d.ts.map +1 -1
  42. package/esm/client/3_video_chat_manager.d.ts +1 -1
  43. package/esm/client/3_video_chat_manager.js +57 -68
  44. package/esm/client/4_callback_query_manager.js +18 -30
  45. package/esm/client/4_chat_list_manager.js +322 -318
  46. package/esm/client/4_chat_manager.js +118 -131
  47. package/esm/client/4_forum_manager.js +67 -73
  48. package/esm/client/4_gift_manager.js +16 -29
  49. package/esm/client/4_inline_query_manager.js +16 -28
  50. package/esm/client/4_link_preview_manager.js +6 -19
  51. package/esm/client/4_poll_manager.js +44 -57
  52. package/esm/client/4_story_manager.js +41 -53
  53. package/esm/client/5_client.d.ts +7 -0
  54. package/esm/client/5_client.d.ts.map +1 -1
  55. package/esm/client/5_client.js +1269 -1288
  56. package/esm/connection/1_connection_tcp.node.js +48 -65
  57. package/esm/connection/1_connection_web_socket.js +75 -91
  58. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.1/dist/tgcrypto.js +3 -11
  59. package/esm/deps/jsr.io/@std/async/1.0.13/mux_async_iterator.js +31 -47
  60. package/esm/deps/jsr.io/@std/async/1.0.13/tee.js +11 -34
  61. package/esm/deps/jsr.io/@std/datetime/0.225.5/_date_time_formatter.js +4 -17
  62. package/esm/mod.js +2 -12
  63. package/esm/session/0_session_state.js +12 -38
  64. package/esm/session/1_session.js +49 -72
  65. package/esm/session/2_session_encrypted.js +324 -320
  66. package/esm/storage/1_utilities_test.d.ts.map +1 -1
  67. package/esm/storage/2_storage_indexed_db.js +26 -44
  68. package/esm/storage/2_storage_local_storage.node.js +12 -25
  69. package/esm/storage/2_storage_memory.js +24 -41
  70. package/esm/storage/2_storage_session_storage.js +3 -16
  71. package/esm/tl/0_utilities_test.d.ts.map +1 -1
  72. package/esm/tl/1_tl_reader.js +80 -88
  73. package/esm/tl/1_tl_reader_test.d.ts.map +1 -1
  74. package/esm/tl/1_tl_writer.js +155 -164
  75. package/esm/tl/1_tl_writer_test.d.ts.map +1 -1
  76. package/esm/transport/0_transport.js +1 -8
  77. package/esm/transport/1_transport_abridged.js +11 -24
  78. package/esm/transport/1_transport_intermediate.js +10 -23
  79. package/esm/transport/2_transport_provider_web_socket.d.ts.map +1 -1
  80. package/esm/types/0_upload_progress.d.ts +29 -0
  81. package/esm/types/0_upload_progress.d.ts.map +1 -0
  82. package/esm/types/0_upload_progress.js +20 -0
  83. package/esm/types/1_sticker.d.ts +1 -1
  84. package/esm/types/1_sticker.d.ts.map +1 -1
  85. package/esm/types/2_poll_answer.d.ts +19 -0
  86. package/esm/types/2_poll_answer.d.ts.map +1 -1
  87. package/esm/types/2_poll_answer.js +19 -0
  88. package/esm/types/7_update.d.ts +21 -2
  89. package/esm/types/7_update.d.ts.map +1 -1
  90. package/esm/utilities/0_bigint_test.d.ts.map +1 -1
  91. package/esm/utilities/0_buffer.d.ts +1 -1
  92. package/esm/utilities/0_buffer.d.ts.map +1 -1
  93. package/esm/utilities/0_buffer_test.d.ts.map +1 -1
  94. package/esm/utilities/0_hash.d.ts +2 -2
  95. package/esm/utilities/0_hash.d.ts.map +1 -1
  96. package/esm/utilities/0_mutex.js +4 -19
  97. package/esm/utilities/0_part_stream.js +11 -25
  98. package/esm/utilities/0_part_stream_test.d.ts.map +1 -1
  99. package/esm/utilities/0_rle.d.ts +2 -2
  100. package/esm/utilities/0_rle.d.ts.map +1 -1
  101. package/esm/utilities/0_rle_test.d.ts.map +1 -1
  102. package/esm/utilities/0_text.d.ts +20 -1
  103. package/esm/utilities/0_text.d.ts.map +1 -1
  104. package/esm/utilities/0_text.js +19 -0
  105. package/esm/utilities/1_auth.d.ts +1 -1
  106. package/esm/utilities/1_auth.d.ts.map +1 -1
  107. package/esm/utilities/1_base64.d.ts +1 -1
  108. package/esm/utilities/1_base64.d.ts.map +1 -1
  109. package/esm/utilities/1_base64_test.d.ts.map +1 -1
  110. package/esm/utilities/1_crypto.js +42 -53
  111. package/esm/utilities/1_crypto_test.d.ts.map +1 -1
  112. package/esm/utilities/1_logger.d.ts +2 -2
  113. package/esm/utilities/1_math_test.d.ts.map +1 -1
  114. package/esm/utilities/2_queue.js +29 -47
  115. package/package.json +1 -1
  116. package/script/0_errors.js +2 -6
  117. package/script/2_tl.js +17 -7
  118. package/script/3_errors.js +2 -12
  119. package/script/3_types.d.ts +1 -0
  120. package/script/3_types.d.ts.map +1 -1
  121. package/script/3_types.js +1 -0
  122. package/script/4_constants.js +17 -7
  123. package/script/4_errors.js +2 -12
  124. package/script/_dnt.polyfills.d.ts +99 -0
  125. package/script/_dnt.polyfills.d.ts.map +1 -1
  126. package/script/_dnt.polyfills.js +128 -0
  127. package/script/_dnt.test_polyfills.d.ts.map +1 -0
  128. package/script/client/0_filters_test.d.ts.map +1 -1
  129. package/script/client/0_markdown_test.d.ts.map +1 -1
  130. package/script/client/0_params.d.ts +2 -0
  131. package/script/client/0_params.d.ts.map +1 -1
  132. package/script/client/0_password.d.ts +5 -5
  133. package/script/client/0_password.d.ts.map +1 -1
  134. package/script/client/0_password.js +17 -7
  135. package/script/client/0_password_test.d.ts.map +1 -1
  136. package/script/client/0_storage_operations.js +143 -155
  137. package/script/client/0_storage_operations_test.d.ts.map +1 -1
  138. package/script/client/0_utilities.d.ts +1 -1
  139. package/script/client/0_utilities_test.d.ts.map +1 -1
  140. package/script/client/1_client_plain.js +4 -22
  141. package/script/client/1_composer.js +8 -21
  142. package/script/client/2_account_manager.js +85 -97
  143. package/script/client/2_bot_info_manager.js +26 -38
  144. package/script/client/2_business_connection_manager.js +10 -23
  145. package/script/client/2_client_encrypted.js +195 -212
  146. package/script/client/2_file_manager.d.ts +4 -3
  147. package/script/client/2_file_manager.d.ts.map +1 -1
  148. package/script/client/2_file_manager.js +285 -231
  149. package/script/client/2_file_manager_test.d.ts.map +1 -1
  150. package/script/client/2_network_statistics_manager.js +8 -21
  151. package/script/client/2_payment_manager.js +7 -20
  152. package/script/client/2_reaction_manager.js +7 -20
  153. package/script/client/2_translations_manager.js +98 -108
  154. package/script/client/2_update_manager.js +764 -759
  155. package/script/client/3_client_encrypted_pool.js +10 -26
  156. package/script/client/3_client_encrypted_pool_test.d.ts.map +1 -1
  157. package/script/client/3_message_manager.d.ts +1 -1
  158. package/script/client/3_message_manager.js +441 -448
  159. package/script/client/3_message_manager_test.d.ts.map +1 -1
  160. package/script/client/3_video_chat_manager.d.ts +1 -1
  161. package/script/client/3_video_chat_manager.js +57 -68
  162. package/script/client/4_callback_query_manager.js +18 -30
  163. package/script/client/4_chat_list_manager.js +322 -318
  164. package/script/client/4_chat_manager.js +118 -131
  165. package/script/client/4_forum_manager.js +67 -73
  166. package/script/client/4_gift_manager.js +16 -29
  167. package/script/client/4_inline_query_manager.js +16 -28
  168. package/script/client/4_link_preview_manager.js +6 -19
  169. package/script/client/4_poll_manager.js +44 -57
  170. package/script/client/4_story_manager.js +41 -53
  171. package/script/client/5_client.d.ts +7 -0
  172. package/script/client/5_client.d.ts.map +1 -1
  173. package/script/client/5_client.js +1269 -1288
  174. package/script/connection/1_connection_tcp.node.js +48 -65
  175. package/script/connection/1_connection_web_socket.js +92 -98
  176. package/script/deps/jsr.io/@roj/tgcrypto/1.0.1/dist/tgcrypto.js +3 -11
  177. package/script/deps/jsr.io/@std/assert/1.0.13/equal.js +17 -7
  178. package/script/deps/jsr.io/@std/async/1.0.13/delay.js +17 -7
  179. package/script/deps/jsr.io/@std/async/1.0.13/mux_async_iterator.js +31 -47
  180. package/script/deps/jsr.io/@std/async/1.0.13/tee.js +11 -34
  181. package/script/deps/jsr.io/@std/datetime/0.225.5/_date_time_formatter.js +4 -17
  182. package/script/deps/jsr.io/@std/internal/1.0.10/format.js +17 -7
  183. package/script/deps/jsr.io/@std/internal/1.0.10/styles.js +17 -7
  184. package/script/deps/jsr.io/@std/path/1.1.0/_os.js +17 -7
  185. package/script/mod.js +19 -19
  186. package/script/session/0_session_state.js +12 -38
  187. package/script/session/1_session.js +66 -79
  188. package/script/session/2_session_encrypted.js +325 -321
  189. package/script/storage/1_utilities_test.d.ts.map +1 -1
  190. package/script/storage/2_storage_indexed_db.js +26 -44
  191. package/script/storage/2_storage_local_storage.node.js +12 -25
  192. package/script/storage/2_storage_memory.js +24 -41
  193. package/script/storage/2_storage_session_storage.js +3 -16
  194. package/script/tl/0_utilities_test.d.ts.map +1 -1
  195. package/script/tl/1_tl_reader.js +81 -89
  196. package/script/tl/1_tl_reader_test.d.ts.map +1 -1
  197. package/script/tl/1_tl_writer.js +156 -165
  198. package/script/tl/1_tl_writer_test.d.ts.map +1 -1
  199. package/script/tl/2_telegram.js +17 -7
  200. package/script/transport/0_obfuscation.js +17 -7
  201. package/script/transport/0_transport.js +1 -8
  202. package/script/transport/1_transport_abridged.js +11 -24
  203. package/script/transport/1_transport_intermediate.js +10 -23
  204. package/script/transport/2_transport_provider_web_socket.d.ts.map +1 -1
  205. package/script/types/0_upload_progress.d.ts +29 -0
  206. package/script/types/0_upload_progress.d.ts.map +1 -0
  207. package/script/types/0_upload_progress.js +21 -0
  208. package/script/types/1_sticker.d.ts +1 -1
  209. package/script/types/1_sticker.d.ts.map +1 -1
  210. package/script/types/2_poll_answer.d.ts +19 -0
  211. package/script/types/2_poll_answer.d.ts.map +1 -1
  212. package/script/types/2_poll_answer.js +19 -0
  213. package/script/types/7_update.d.ts +21 -2
  214. package/script/types/7_update.d.ts.map +1 -1
  215. package/script/utilities/0_bigint.js +17 -7
  216. package/script/utilities/0_bigint_test.d.ts.map +1 -1
  217. package/script/utilities/0_buffer.d.ts +1 -1
  218. package/script/utilities/0_buffer.d.ts.map +1 -1
  219. package/script/utilities/0_buffer_test.d.ts.map +1 -1
  220. package/script/utilities/0_env.js +17 -7
  221. package/script/utilities/0_hash.d.ts +2 -2
  222. package/script/utilities/0_hash.d.ts.map +1 -1
  223. package/script/utilities/0_hash.js +17 -7
  224. package/script/utilities/0_misc.js +17 -7
  225. package/script/utilities/0_mutex.js +4 -19
  226. package/script/utilities/0_part_stream.js +11 -25
  227. package/script/utilities/0_part_stream_test.d.ts.map +1 -1
  228. package/script/utilities/0_rle.d.ts +2 -2
  229. package/script/utilities/0_rle.d.ts.map +1 -1
  230. package/script/utilities/0_rle_test.d.ts.map +1 -1
  231. package/script/utilities/0_text.d.ts +20 -1
  232. package/script/utilities/0_text.d.ts.map +1 -1
  233. package/script/utilities/0_text.js +19 -0
  234. package/script/utilities/1_auth.d.ts +1 -1
  235. package/script/utilities/1_auth.d.ts.map +1 -1
  236. package/script/utilities/1_auth.js +17 -7
  237. package/script/utilities/1_base64.d.ts +1 -1
  238. package/script/utilities/1_base64.d.ts.map +1 -1
  239. package/script/utilities/1_base64_test.d.ts.map +1 -1
  240. package/script/utilities/1_crypto.js +60 -61
  241. package/script/utilities/1_crypto_test.d.ts.map +1 -1
  242. package/script/utilities/1_logger.d.ts +2 -2
  243. package/script/utilities/1_math_test.d.ts.map +1 -1
  244. package/script/utilities/2_queue.js +30 -48
package/esm/mod.js CHANGED
@@ -35,19 +35,9 @@ if (!("CompressionStream" in dntShim.dntGlobalThis)) {
35
35
  // original idea: MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource>
36
36
  // @see https://github.com/oven-sh/bun/issues/1723#issuecomment-1774174194
37
37
  class Stream {
38
+ readable;
39
+ writable;
38
40
  constructor(compress, format) {
39
- Object.defineProperty(this, "readable", {
40
- enumerable: true,
41
- configurable: true,
42
- writable: true,
43
- value: void 0
44
- });
45
- Object.defineProperty(this, "writable", {
46
- enumerable: true,
47
- configurable: true,
48
- writable: true,
49
- value: void 0
50
- });
51
41
  let handler;
52
42
  if (format === "gzip") {
53
43
  handler = compress ? createGzip() : createGunzip();
@@ -17,61 +17,35 @@
17
17
  * You should have received a copy of the GNU Lesser General Public License
18
18
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
19
  */
20
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
21
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
22
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
23
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
24
- };
25
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
26
- if (kind === "m") throw new TypeError("Private method is not writable");
27
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
28
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
29
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
30
- };
31
- var _SessionState_seqNo, _SessionState_messageId;
32
20
  import { toUnixTimestamp } from "../1_utilities.js";
33
21
  export class SessionState {
34
- constructor() {
35
- Object.defineProperty(this, "timeDifference", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: 0
40
- });
41
- Object.defineProperty(this, "serverSalt", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: 0n
46
- });
47
- _SessionState_seqNo.set(this, 0);
48
- _SessionState_messageId.set(this, 0n);
49
- }
22
+ timeDifference = 0;
23
+ serverSalt = 0n;
24
+ #seqNo = 0;
25
+ #messageId = 0n;
50
26
  nextMessageId() {
51
27
  const now = toUnixTimestamp(new Date()) + this.timeDifference;
52
28
  const nanoseconds = Math.floor((now - Math.floor(now)) * 1e9);
53
29
  const newMessageId = (BigInt(Math.floor(now)) << 32n) || (BigInt(nanoseconds) << 2n);
54
- if (__classPrivateFieldGet(this, _SessionState_messageId, "f") >= newMessageId) {
55
- __classPrivateFieldSet(this, _SessionState_messageId, __classPrivateFieldGet(this, _SessionState_messageId, "f") + 4n, "f");
30
+ if (this.#messageId >= newMessageId) {
31
+ this.#messageId += 4n;
56
32
  }
57
33
  else {
58
- __classPrivateFieldSet(this, _SessionState_messageId, newMessageId, "f");
34
+ this.#messageId = newMessageId;
59
35
  }
60
- return __classPrivateFieldGet(this, _SessionState_messageId, "f");
36
+ return this.#messageId;
61
37
  }
62
38
  nextSeqNo(contentRelated) {
63
- var _a;
64
- let seqNo = __classPrivateFieldGet(this, _SessionState_seqNo, "f") * 2;
39
+ let seqNo = this.#seqNo * 2;
65
40
  if (contentRelated) {
66
41
  seqNo++;
67
- __classPrivateFieldSet(this, _SessionState_seqNo, (_a = __classPrivateFieldGet(this, _SessionState_seqNo, "f"), _a++, _a), "f");
42
+ this.#seqNo++;
68
43
  }
69
44
  return seqNo;
70
45
  }
71
46
  reset() {
72
47
  this.serverSalt = 0n;
73
- __classPrivateFieldSet(this, _SessionState_seqNo, 0, "f");
74
- __classPrivateFieldSet(this, _SessionState_messageId, 0n, "f");
48
+ this.#seqNo = 0;
49
+ this.#messageId = 0n;
75
50
  }
76
51
  }
77
- _SessionState_seqNo = new WeakMap(), _SessionState_messageId = new WeakMap();
@@ -1,15 +1,3 @@
1
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
- if (kind === "m") throw new TypeError("Private method is not writable");
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
- };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var _Session_instances, _Session_dc, _Session_cdn, _Session_lastConnect, _Session_disconnected, _Session_L, _Session_onConnectionStateChange, _Session_lastState, _Session_stateChangeHandler, _Session_connectMutex;
13
1
  /**
14
2
  * MTKruto - Cross-runtime JavaScript library for building Telegram clients
15
3
  * Copyright (C) 2023-2025 Roj <https://roj.im/>
@@ -39,107 +27,96 @@ let id = 0;
39
27
  // @ts-ignore: lib
40
28
  const defaultTransportProvider = typeof dntShim.Deno === "undefined" ? transportProviderWebSocket : transportProviderTcp;
41
29
  export class Session {
30
+ #dc;
31
+ #cdn;
32
+ state = new SessionState();
33
+ transport;
34
+ #lastConnect;
35
+ #disconnected = true;
36
+ #L;
37
+ #onConnectionStateChange;
42
38
  constructor(dc, params) {
43
- _Session_instances.add(this);
44
- _Session_dc.set(this, void 0);
45
- _Session_cdn.set(this, void 0);
46
- Object.defineProperty(this, "state", {
47
- enumerable: true,
48
- configurable: true,
49
- writable: true,
50
- value: new SessionState()
51
- });
52
- Object.defineProperty(this, "transport", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: true,
56
- value: void 0
57
- });
58
- _Session_lastConnect.set(this, void 0);
59
- _Session_disconnected.set(this, true);
60
- _Session_L.set(this, void 0);
61
- _Session_onConnectionStateChange.set(this, void 0);
62
- _Session_lastState.set(this, void 0);
63
- _Session_connectMutex.set(this, new Mutex());
64
- __classPrivateFieldSet(this, _Session_dc, dc, "f");
65
- __classPrivateFieldSet(this, _Session_cdn, params?.cdn ?? false, "f");
39
+ this.#dc = dc;
40
+ this.#cdn = params?.cdn ?? false;
66
41
  const transportProvider = params?.transportProvider ?? defaultTransportProvider();
67
- this.transport = transportProvider({ dc: __classPrivateFieldGet(this, _Session_dc, "f"), cdn: __classPrivateFieldGet(this, _Session_cdn, "f") });
42
+ this.transport = transportProvider({ dc: this.#dc, cdn: this.#cdn });
68
43
  this.transport.connection.stateChangeHandler = (connected) => {
69
44
  setTimeout(() => {
70
- drop(__classPrivateFieldGet(this, _Session_instances, "m", _Session_stateChangeHandler).call(this, connected));
45
+ drop(this.#stateChangeHandler(connected));
71
46
  });
72
47
  };
73
- __classPrivateFieldSet(this, _Session_L, getLogger("Session").client(id++), "f");
48
+ this.#L = getLogger("Session").client(id++);
74
49
  }
75
50
  set onConnectionStateChange(onConnectionStateChange) {
76
- __classPrivateFieldSet(this, _Session_onConnectionStateChange, onConnectionStateChange, "f");
51
+ this.#onConnectionStateChange = onConnectionStateChange;
77
52
  }
78
53
  set connectionCallback(connectionCallback) {
79
54
  this.transport.connection.callback = connectionCallback;
80
55
  }
81
56
  get dc() {
82
- return __classPrivateFieldGet(this, _Session_dc, "f");
57
+ return this.#dc;
83
58
  }
84
59
  get cdn() {
85
- return __classPrivateFieldGet(this, _Session_cdn, "f");
60
+ return this.#cdn;
86
61
  }
87
62
  set serverSalt(serverSalt) {
88
63
  this.state.serverSalt = serverSalt;
89
64
  }
65
+ #lastState;
66
+ async #stateChangeHandler(connected) {
67
+ if (this.#lastState !== connected) {
68
+ setTimeout(() => {
69
+ this.#onConnectionStateChange?.(connected);
70
+ });
71
+ }
72
+ if (this.#lastState === connected) {
73
+ return;
74
+ }
75
+ this.#lastState = connected;
76
+ if (connected || this.#disconnected) {
77
+ if (this.#disconnected) {
78
+ this.#L.debug("not reconnecting because explicitly disconnected");
79
+ }
80
+ return;
81
+ }
82
+ if (this.#lastConnect && Date.now() - this.#lastConnect.getTime() <= 10 * SECOND) {
83
+ this.#L.debug("reconnecting after a delay");
84
+ await delay(3 * SECOND);
85
+ }
86
+ else {
87
+ this.#L.debug("reconnecting");
88
+ }
89
+ await this.connect();
90
+ }
90
91
  get connected() {
91
92
  return this.transport.connection.connected;
92
93
  }
94
+ #connectMutex = new Mutex();
93
95
  async connect() {
94
- const unlock = await __classPrivateFieldGet(this, _Session_connectMutex, "f").lock();
96
+ const unlock = await this.#connectMutex.lock();
95
97
  try {
96
98
  if (this.connected) {
97
99
  return;
98
100
  }
99
101
  await this.transport.connection.open();
100
102
  await this.transport.transport.initialize();
101
- __classPrivateFieldSet(this, _Session_lastConnect, new Date(), "f");
102
- __classPrivateFieldSet(this, _Session_disconnected, false, "f");
103
+ this.#lastConnect = new Date();
104
+ this.#disconnected = false;
103
105
  }
104
106
  finally {
105
107
  unlock();
106
108
  }
107
109
  }
108
110
  async waitUntilConnected() {
109
- (await __classPrivateFieldGet(this, _Session_connectMutex, "f").lock())();
111
+ (await this.#connectMutex.lock())();
110
112
  }
111
113
  get disconnected() {
112
- return __classPrivateFieldGet(this, _Session_disconnected, "f");
114
+ return this.#disconnected;
113
115
  }
114
116
  disconnect() {
115
- __classPrivateFieldSet(this, _Session_disconnected, true, "f");
117
+ this.#disconnected = true;
116
118
  if (this.transport.connection.connected) {
117
119
  this.transport.connection.close();
118
120
  }
119
121
  }
120
122
  }
121
- _Session_dc = new WeakMap(), _Session_cdn = new WeakMap(), _Session_lastConnect = new WeakMap(), _Session_disconnected = new WeakMap(), _Session_L = new WeakMap(), _Session_onConnectionStateChange = new WeakMap(), _Session_lastState = new WeakMap(), _Session_connectMutex = new WeakMap(), _Session_instances = new WeakSet(), _Session_stateChangeHandler = async function _Session_stateChangeHandler(connected) {
122
- if (__classPrivateFieldGet(this, _Session_lastState, "f") !== connected) {
123
- setTimeout(() => {
124
- __classPrivateFieldGet(this, _Session_onConnectionStateChange, "f")?.call(this, connected);
125
- });
126
- }
127
- if (__classPrivateFieldGet(this, _Session_lastState, "f") === connected) {
128
- return;
129
- }
130
- __classPrivateFieldSet(this, _Session_lastState, connected, "f");
131
- if (connected || __classPrivateFieldGet(this, _Session_disconnected, "f")) {
132
- if (__classPrivateFieldGet(this, _Session_disconnected, "f")) {
133
- __classPrivateFieldGet(this, _Session_L, "f").debug("not reconnecting because explicitly disconnected");
134
- }
135
- return;
136
- }
137
- if (__classPrivateFieldGet(this, _Session_lastConnect, "f") && Date.now() - __classPrivateFieldGet(this, _Session_lastConnect, "f").getTime() <= 10 * SECOND) {
138
- __classPrivateFieldGet(this, _Session_L, "f").debug("reconnecting after a delay");
139
- await delay(3 * SECOND);
140
- }
141
- else {
142
- __classPrivateFieldGet(this, _Session_L, "f").debug("reconnecting");
143
- }
144
- await this.connect();
145
- };