@mtcute/core 0.7.3 → 0.8.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 (1122) hide show
  1. package/README.md +26 -3
  2. package/cjs/highlevel/base.d.ts +3 -1
  3. package/cjs/highlevel/base.js +18 -0
  4. package/cjs/highlevel/base.js.map +1 -1
  5. package/cjs/highlevel/client.d.ts +23 -10
  6. package/cjs/highlevel/client.js +26 -19
  7. package/cjs/highlevel/client.js.map +1 -1
  8. package/cjs/highlevel/client.types.d.ts +14 -0
  9. package/cjs/highlevel/client.types.js.map +1 -1
  10. package/cjs/highlevel/index.d.ts +0 -2
  11. package/cjs/highlevel/index.js +0 -2
  12. package/cjs/highlevel/index.js.map +1 -1
  13. package/cjs/highlevel/methods/_imports.js.map +1 -1
  14. package/cjs/highlevel/methods/_init.js +4 -29
  15. package/cjs/highlevel/methods/_init.js.map +1 -1
  16. package/cjs/highlevel/methods/bots/get-callback-answer.js +2 -2
  17. package/cjs/highlevel/methods/bots/get-callback-answer.js.map +1 -1
  18. package/cjs/highlevel/methods/dialogs/create-folder.js +1 -1
  19. package/cjs/highlevel/methods/dialogs/create-folder.js.map +1 -1
  20. package/cjs/highlevel/methods/dialogs/edit-folder.js +1 -1
  21. package/cjs/highlevel/methods/dialogs/edit-folder.js.map +1 -1
  22. package/cjs/highlevel/methods/dialogs/find-folder.js +1 -1
  23. package/cjs/highlevel/methods/dialogs/find-folder.js.map +1 -1
  24. package/cjs/highlevel/methods/dialogs/get-folders.d.ts +1 -1
  25. package/cjs/highlevel/methods/dialogs/get-folders.js +1 -1
  26. package/cjs/highlevel/methods/dialogs/get-folders.js.map +1 -1
  27. package/cjs/highlevel/methods/files/download-file.d.ts +1 -10
  28. package/cjs/highlevel/methods/files/download-file.js +1 -32
  29. package/cjs/highlevel/methods/files/download-file.js.map +1 -1
  30. package/cjs/highlevel/methods/files/download-iterable.js +2 -1
  31. package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
  32. package/cjs/highlevel/methods/files/download-node-stream.js +4 -0
  33. package/cjs/highlevel/methods/files/download-node-stream.js.map +1 -0
  34. package/cjs/highlevel/methods/files/normalize-input-media.d.ts +1 -1
  35. package/cjs/highlevel/methods/files/normalize-input-media.js +2 -1
  36. package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
  37. package/cjs/highlevel/methods/files/upload-file.d.ts +0 -3
  38. package/cjs/highlevel/methods/files/upload-file.js +17 -13
  39. package/cjs/highlevel/methods/files/upload-file.js.map +1 -1
  40. package/cjs/highlevel/methods/messages/find-in-update.js +23 -8
  41. package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
  42. package/cjs/highlevel/methods/messages/send-media-group.d.ts +1 -1
  43. package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
  44. package/cjs/highlevel/methods/messages/send-media.d.ts +2 -2
  45. package/cjs/highlevel/methods/messages/send-media.js +5 -4
  46. package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
  47. package/cjs/highlevel/methods/messages/send-text.d.ts +1 -1
  48. package/cjs/highlevel/methods/messages/send-text.js +7 -6
  49. package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
  50. package/cjs/highlevel/methods/misc/with-params.d.ts +10 -0
  51. package/cjs/highlevel/methods/misc/with-params.js +32 -0
  52. package/cjs/highlevel/methods/misc/with-params.js.map +1 -0
  53. package/cjs/highlevel/methods.d.ts +13 -1
  54. package/cjs/highlevel/methods.js +4 -6
  55. package/cjs/highlevel/methods.js.map +1 -1
  56. package/cjs/highlevel/types/bots/command-scope/index.d.ts +10 -0
  57. package/cjs/highlevel/types/bots/command-scope/index.js +29 -0
  58. package/cjs/highlevel/types/bots/command-scope/index.js.map +1 -0
  59. package/cjs/highlevel/types/bots/command-scope/inner.d.ts +54 -0
  60. package/cjs/highlevel/types/bots/command-scope/inner.js +76 -0
  61. package/cjs/highlevel/types/bots/command-scope/inner.js.map +1 -0
  62. package/cjs/highlevel/types/bots/index.d.ts +4 -4
  63. package/cjs/highlevel/types/bots/index.js +4 -4
  64. package/cjs/highlevel/types/bots/index.js.map +1 -1
  65. package/cjs/highlevel/types/bots/inline-message/factories.d.ts +43 -0
  66. package/cjs/highlevel/types/bots/inline-message/factories.js +175 -0
  67. package/cjs/highlevel/types/bots/inline-message/factories.js.map +1 -0
  68. package/cjs/highlevel/types/bots/inline-message/index.d.ts +3 -0
  69. package/cjs/highlevel/types/bots/inline-message/index.js +33 -0
  70. package/cjs/highlevel/types/bots/inline-message/index.js.map +1 -0
  71. package/{esm/highlevel/types/bots/input/input-inline-message.d.ts → cjs/highlevel/types/bots/inline-message/types.d.ts} +2 -45
  72. package/cjs/highlevel/types/bots/inline-message/types.js +3 -0
  73. package/cjs/highlevel/types/bots/inline-message/types.js.map +1 -0
  74. package/cjs/highlevel/types/bots/inline-result/factories.d.ts +94 -0
  75. package/cjs/highlevel/types/bots/inline-result/factories.js +486 -0
  76. package/cjs/highlevel/types/bots/inline-result/factories.js.map +1 -0
  77. package/cjs/highlevel/types/bots/inline-result/index.d.ts +3 -0
  78. package/cjs/highlevel/types/bots/inline-result/index.js +33 -0
  79. package/cjs/highlevel/types/bots/inline-result/index.js.map +1 -0
  80. package/{esm/highlevel/types/bots/input/input-inline-result.d.ts → cjs/highlevel/types/bots/inline-result/types.d.ts} +1 -95
  81. package/cjs/highlevel/types/bots/inline-result/types.js +3 -0
  82. package/cjs/highlevel/types/bots/inline-result/types.js.map +1 -0
  83. package/cjs/highlevel/types/bots/{keyboard-builder.d.ts → keyboards/builder.d.ts} +1 -1
  84. package/cjs/highlevel/types/bots/{keyboard-builder.js → keyboards/builder.js} +1 -1
  85. package/cjs/highlevel/types/bots/keyboards/builder.js.map +1 -0
  86. package/cjs/highlevel/types/bots/keyboards/factories.d.ts +195 -0
  87. package/cjs/highlevel/types/bots/keyboards/factories.js +366 -0
  88. package/cjs/highlevel/types/bots/keyboards/factories.js.map +1 -0
  89. package/cjs/highlevel/types/bots/keyboards/index.d.ts +14 -0
  90. package/cjs/highlevel/types/bots/keyboards/index.js +33 -0
  91. package/cjs/highlevel/types/bots/keyboards/index.js.map +1 -0
  92. package/cjs/highlevel/types/bots/keyboards/types.d.ts +34 -0
  93. package/cjs/highlevel/types/bots/keyboards/types.js +3 -0
  94. package/cjs/highlevel/types/bots/keyboards/types.js.map +1 -0
  95. package/cjs/highlevel/types/media/document.js +3 -2
  96. package/cjs/highlevel/types/media/document.js.map +1 -1
  97. package/cjs/highlevel/types/media/index.d.ts +1 -1
  98. package/cjs/highlevel/types/media/index.js +1 -1
  99. package/cjs/highlevel/types/media/index.js.map +1 -1
  100. package/cjs/highlevel/types/media/input-media/factories.d.ts +141 -0
  101. package/cjs/highlevel/types/media/input-media/factories.js +250 -0
  102. package/cjs/highlevel/types/media/input-media/factories.js.map +1 -0
  103. package/cjs/highlevel/types/media/input-media/index.d.ts +3 -0
  104. package/cjs/highlevel/types/media/input-media/index.js +33 -0
  105. package/cjs/highlevel/types/media/input-media/index.js.map +1 -0
  106. package/cjs/highlevel/types/media/{input-media.d.ts → input-media/types.d.ts} +5 -145
  107. package/cjs/highlevel/types/media/input-media/types.js +3 -0
  108. package/cjs/highlevel/types/media/input-media/types.js.map +1 -0
  109. package/cjs/highlevel/types/media/thumbnail.js +5 -4
  110. package/cjs/highlevel/types/media/thumbnail.js.map +1 -1
  111. package/cjs/highlevel/types/messages/message.d.ts +1 -1
  112. package/cjs/highlevel/types/messages/message.js +3 -3
  113. package/cjs/highlevel/types/messages/message.js.map +1 -1
  114. package/cjs/highlevel/types/misc/index.d.ts +1 -1
  115. package/cjs/highlevel/types/misc/index.js +1 -1
  116. package/cjs/highlevel/types/misc/index.js.map +1 -1
  117. package/cjs/highlevel/types/misc/input-privacy-rule/allow.d.ts +22 -0
  118. package/cjs/highlevel/types/misc/input-privacy-rule/allow.js +36 -0
  119. package/cjs/highlevel/types/misc/input-privacy-rule/allow.js.map +1 -0
  120. package/cjs/highlevel/types/misc/input-privacy-rule/bundle.d.ts +3 -0
  121. package/cjs/highlevel/types/misc/input-privacy-rule/bundle.js +31 -0
  122. package/cjs/highlevel/types/misc/input-privacy-rule/bundle.js.map +1 -0
  123. package/cjs/highlevel/types/misc/input-privacy-rule/disallow.d.ts +20 -0
  124. package/cjs/highlevel/types/misc/input-privacy-rule/disallow.js +32 -0
  125. package/cjs/highlevel/types/misc/input-privacy-rule/disallow.js.map +1 -0
  126. package/cjs/highlevel/types/misc/input-privacy-rule/index.d.ts +3 -0
  127. package/cjs/highlevel/types/misc/input-privacy-rule/index.js +33 -0
  128. package/cjs/highlevel/types/misc/input-privacy-rule/index.js.map +1 -0
  129. package/cjs/highlevel/types/misc/input-privacy-rule/types.d.ts +11 -0
  130. package/cjs/highlevel/types/misc/input-privacy-rule/types.js +3 -0
  131. package/cjs/highlevel/types/misc/input-privacy-rule/types.js.map +1 -0
  132. package/cjs/highlevel/types/peers/chat-photo.js +3 -2
  133. package/cjs/highlevel/types/peers/chat-photo.js.map +1 -1
  134. package/cjs/highlevel/types/updates/callback-query.js +2 -2
  135. package/cjs/highlevel/types/updates/callback-query.js.map +1 -1
  136. package/cjs/highlevel/types/updates/user-status-update.js +1 -1
  137. package/cjs/highlevel/types/updates/user-status-update.js.map +1 -1
  138. package/cjs/highlevel/updates/manager.d.ts +5 -3
  139. package/cjs/highlevel/updates/manager.js +81 -67
  140. package/cjs/highlevel/updates/manager.js.map +1 -1
  141. package/cjs/highlevel/utils/convert-file-id.js +7 -6
  142. package/cjs/highlevel/utils/convert-file-id.js.map +1 -1
  143. package/cjs/highlevel/utils/file-utils.js +8 -4
  144. package/cjs/highlevel/utils/file-utils.js.map +1 -1
  145. package/cjs/highlevel/utils/inline-utils.js +3 -2
  146. package/cjs/highlevel/utils/inline-utils.js.map +1 -1
  147. package/cjs/highlevel/utils/inspectable.d.ts +1 -1
  148. package/cjs/highlevel/utils/inspectable.js +3 -2
  149. package/cjs/highlevel/utils/inspectable.js.map +1 -1
  150. package/cjs/highlevel/utils/memoize.d.ts +1 -1
  151. package/cjs/highlevel/utils/memoize.js +1 -0
  152. package/cjs/highlevel/utils/memoize.js.map +1 -1
  153. package/cjs/highlevel/utils/stream-utils.d.ts +0 -2
  154. package/cjs/highlevel/utils/stream-utils.js +1 -28
  155. package/cjs/highlevel/utils/stream-utils.js.map +1 -1
  156. package/cjs/highlevel/utils/string-session.js +3 -2
  157. package/cjs/highlevel/utils/string-session.js.map +1 -1
  158. package/cjs/highlevel/worker/index.d.ts +3 -0
  159. package/cjs/highlevel/{types/bots/input → worker}/index.js +3 -2
  160. package/cjs/highlevel/worker/index.js.map +1 -0
  161. package/cjs/highlevel/worker/port.d.ts +6 -3
  162. package/cjs/highlevel/worker/port.js +8 -2
  163. package/cjs/highlevel/worker/port.js.map +1 -1
  164. package/cjs/highlevel/worker/protocol.d.ts +5 -1
  165. package/cjs/highlevel/worker/protocol.js.map +1 -1
  166. package/cjs/highlevel/worker/worker.d.ts +11 -4
  167. package/cjs/highlevel/worker/worker.js +53 -49
  168. package/cjs/highlevel/worker/worker.js.map +1 -1
  169. package/cjs/network/client.d.ts +4 -4
  170. package/cjs/network/client.js +3 -1
  171. package/cjs/network/client.js.map +1 -1
  172. package/cjs/network/multi-session-connection.d.ts +1 -0
  173. package/cjs/network/multi-session-connection.js +6 -0
  174. package/cjs/network/multi-session-connection.js.map +1 -1
  175. package/cjs/network/network-manager.d.ts +5 -1
  176. package/cjs/network/network-manager.js +24 -15
  177. package/cjs/network/network-manager.js.map +1 -1
  178. package/cjs/network/persistent-connection.d.ts +3 -0
  179. package/cjs/network/persistent-connection.js +23 -1
  180. package/cjs/network/persistent-connection.js.map +1 -1
  181. package/cjs/network/session-connection.d.ts +2 -0
  182. package/cjs/network/session-connection.js +18 -4
  183. package/cjs/network/session-connection.js.map +1 -1
  184. package/cjs/network/transports/index.d.ts +0 -3
  185. package/cjs/network/transports/index.js +0 -4
  186. package/cjs/network/transports/index.js.map +1 -1
  187. package/cjs/platform.d.ts +18 -0
  188. package/cjs/platform.js +36 -0
  189. package/cjs/platform.js.map +1 -0
  190. package/cjs/storage/index.d.ts +1 -2
  191. package/cjs/storage/index.js +1 -2
  192. package/cjs/storage/index.js.map +1 -1
  193. package/{esm/storage/providers → cjs/storage}/memory/driver.d.ts +1 -1
  194. package/cjs/storage/memory/driver.js.map +1 -0
  195. package/{esm/storage/providers → cjs/storage}/memory/index.d.ts +2 -2
  196. package/cjs/storage/memory/index.js.map +1 -0
  197. package/cjs/storage/{providers/memory → memory}/repository/auth-keys.d.ts +1 -1
  198. package/cjs/storage/memory/repository/auth-keys.js.map +1 -0
  199. package/{esm/storage/providers → cjs/storage}/memory/repository/kv.d.ts +1 -1
  200. package/cjs/storage/memory/repository/kv.js.map +1 -0
  201. package/{esm/storage/providers → cjs/storage}/memory/repository/peers.d.ts +1 -1
  202. package/cjs/storage/memory/repository/peers.js.map +1 -0
  203. package/{esm/storage/providers → cjs/storage}/memory/repository/ref-messages.d.ts +1 -1
  204. package/cjs/storage/memory/repository/ref-messages.js.map +1 -0
  205. package/cjs/storage/storage.js +2 -1
  206. package/cjs/storage/storage.js.map +1 -1
  207. package/cjs/utils/binary/asn1-parser.js +3 -3
  208. package/cjs/utils/binary/asn1-parser.js.map +1 -1
  209. package/cjs/utils/crypto/abstract.d.ts +0 -1
  210. package/cjs/utils/crypto/abstract.js.map +1 -1
  211. package/cjs/utils/crypto/index.d.ts +0 -2
  212. package/cjs/utils/crypto/index.js +0 -3
  213. package/cjs/utils/crypto/index.js.map +1 -1
  214. package/cjs/utils/crypto/keys.js +5 -3
  215. package/cjs/utils/crypto/keys.js.map +1 -1
  216. package/cjs/utils/crypto/password.js +3 -3
  217. package/cjs/utils/crypto/password.js.map +1 -1
  218. package/cjs/utils/dcs.d.ts +4 -0
  219. package/cjs/utils/dcs.js +0 -4
  220. package/cjs/utils/dcs.js.map +1 -1
  221. package/cjs/utils/{platform/error-reporting.d.ts → error-reporting.d.ts} +1 -1
  222. package/cjs/utils/error-reporting.js.map +1 -0
  223. package/cjs/utils/index.d.ts +4 -1
  224. package/cjs/utils/index.js +6 -1
  225. package/cjs/utils/index.js.map +1 -1
  226. package/cjs/utils/links/common.js +1 -1
  227. package/cjs/utils/links/common.js.map +1 -1
  228. package/cjs/utils/logger.d.ts +1 -0
  229. package/cjs/utils/logger.js +9 -22
  230. package/cjs/utils/logger.js.map +1 -1
  231. package/esm/highlevel/base.d.ts +3 -1
  232. package/esm/highlevel/base.js +18 -0
  233. package/esm/highlevel/base.js.map +1 -1
  234. package/esm/highlevel/client.d.ts +23 -10
  235. package/esm/highlevel/client.js +12 -19
  236. package/esm/highlevel/client.js.map +1 -1
  237. package/esm/highlevel/client.types.d.ts +14 -0
  238. package/esm/highlevel/client.types.js.map +1 -1
  239. package/esm/highlevel/index.d.ts +0 -2
  240. package/esm/highlevel/index.js +0 -2
  241. package/esm/highlevel/index.js.map +1 -1
  242. package/esm/highlevel/methods/_imports.js.map +1 -1
  243. package/esm/highlevel/methods/_init.js +4 -29
  244. package/esm/highlevel/methods/_init.js.map +1 -1
  245. package/esm/highlevel/methods/bots/get-callback-answer.js +2 -2
  246. package/esm/highlevel/methods/bots/get-callback-answer.js.map +1 -1
  247. package/esm/highlevel/methods/dialogs/create-folder.js +1 -1
  248. package/esm/highlevel/methods/dialogs/create-folder.js.map +1 -1
  249. package/esm/highlevel/methods/dialogs/edit-folder.js +1 -1
  250. package/esm/highlevel/methods/dialogs/edit-folder.js.map +1 -1
  251. package/esm/highlevel/methods/dialogs/find-folder.js +1 -1
  252. package/esm/highlevel/methods/dialogs/find-folder.js.map +1 -1
  253. package/esm/highlevel/methods/dialogs/get-folders.d.ts +1 -1
  254. package/esm/highlevel/methods/dialogs/get-folders.js +1 -1
  255. package/esm/highlevel/methods/dialogs/get-folders.js.map +1 -1
  256. package/esm/highlevel/methods/files/download-file.d.ts +1 -10
  257. package/esm/highlevel/methods/files/download-file.js +2 -30
  258. package/esm/highlevel/methods/files/download-file.js.map +1 -1
  259. package/esm/highlevel/methods/files/download-iterable.js +2 -1
  260. package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
  261. package/esm/highlevel/methods/files/download-node-stream.js +3 -0
  262. package/esm/highlevel/methods/files/download-node-stream.js.map +1 -0
  263. package/esm/highlevel/methods/files/normalize-input-media.d.ts +1 -1
  264. package/esm/highlevel/methods/files/normalize-input-media.js +2 -1
  265. package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
  266. package/esm/highlevel/methods/files/upload-file.d.ts +0 -3
  267. package/esm/highlevel/methods/files/upload-file.js +17 -13
  268. package/esm/highlevel/methods/files/upload-file.js.map +1 -1
  269. package/esm/highlevel/methods/messages/find-in-update.js +23 -8
  270. package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
  271. package/esm/highlevel/methods/messages/send-media-group.d.ts +1 -1
  272. package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
  273. package/esm/highlevel/methods/messages/send-media.d.ts +2 -2
  274. package/esm/highlevel/methods/messages/send-media.js +4 -3
  275. package/esm/highlevel/methods/messages/send-media.js.map +1 -1
  276. package/esm/highlevel/methods/messages/send-text.d.ts +1 -1
  277. package/esm/highlevel/methods/messages/send-text.js +4 -3
  278. package/esm/highlevel/methods/messages/send-text.js.map +1 -1
  279. package/esm/highlevel/methods/misc/with-params.d.ts +10 -0
  280. package/esm/highlevel/methods/misc/with-params.js +28 -0
  281. package/esm/highlevel/methods/misc/with-params.js.map +1 -0
  282. package/esm/highlevel/methods.d.ts +13 -1
  283. package/esm/highlevel/methods.js +0 -1
  284. package/esm/highlevel/methods.js.map +1 -1
  285. package/esm/highlevel/types/auth/sent-code.js +4 -3
  286. package/esm/highlevel/types/bots/command-scope/index.d.ts +10 -0
  287. package/esm/highlevel/types/bots/command-scope/index.js +11 -0
  288. package/esm/highlevel/types/bots/command-scope/index.js.map +1 -0
  289. package/esm/highlevel/types/bots/command-scope/inner.d.ts +54 -0
  290. package/esm/highlevel/types/bots/command-scope/inner.js +69 -0
  291. package/esm/highlevel/types/bots/command-scope/inner.js.map +1 -0
  292. package/esm/highlevel/types/bots/game-high-score.js +5 -4
  293. package/esm/highlevel/types/bots/index.d.ts +4 -4
  294. package/esm/highlevel/types/bots/index.js +4 -4
  295. package/esm/highlevel/types/bots/index.js.map +1 -1
  296. package/esm/highlevel/types/bots/inline-message/factories.d.ts +43 -0
  297. package/esm/highlevel/types/bots/inline-message/factories.js +163 -0
  298. package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -0
  299. package/esm/highlevel/types/bots/inline-message/index.d.ts +3 -0
  300. package/esm/highlevel/types/bots/inline-message/index.js +4 -0
  301. package/esm/highlevel/types/bots/inline-message/index.js.map +1 -0
  302. package/{cjs/highlevel/types/bots/input/input-inline-message.d.ts → esm/highlevel/types/bots/inline-message/types.d.ts} +2 -45
  303. package/esm/highlevel/types/bots/inline-message/types.js +2 -0
  304. package/esm/highlevel/types/bots/inline-message/types.js.map +1 -0
  305. package/esm/highlevel/types/bots/inline-result/factories.d.ts +94 -0
  306. package/esm/highlevel/types/bots/inline-result/factories.js +470 -0
  307. package/esm/highlevel/types/bots/inline-result/factories.js.map +1 -0
  308. package/esm/highlevel/types/bots/inline-result/index.d.ts +3 -0
  309. package/esm/highlevel/types/bots/inline-result/index.js +4 -0
  310. package/esm/highlevel/types/bots/inline-result/index.js.map +1 -0
  311. package/{cjs/highlevel/types/bots/input/input-inline-result.d.ts → esm/highlevel/types/bots/inline-result/types.d.ts} +1 -95
  312. package/esm/highlevel/types/bots/inline-result/types.js +2 -0
  313. package/esm/highlevel/types/bots/inline-result/types.js.map +1 -0
  314. package/esm/highlevel/types/bots/{keyboard-builder.d.ts → keyboards/builder.d.ts} +1 -1
  315. package/esm/highlevel/types/bots/{keyboard-builder.js → keyboards/builder.js} +1 -1
  316. package/esm/highlevel/types/bots/keyboards/builder.js.map +1 -0
  317. package/esm/highlevel/types/bots/keyboards/factories.d.ts +195 -0
  318. package/esm/highlevel/types/bots/keyboards/factories.js +341 -0
  319. package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -0
  320. package/esm/highlevel/types/bots/keyboards/index.d.ts +14 -0
  321. package/esm/highlevel/types/bots/keyboards/index.js +15 -0
  322. package/esm/highlevel/types/bots/keyboards/index.js.map +1 -0
  323. package/esm/highlevel/types/bots/keyboards/types.d.ts +34 -0
  324. package/esm/highlevel/types/bots/keyboards/types.js +2 -0
  325. package/esm/highlevel/types/bots/keyboards/types.js.map +1 -0
  326. package/esm/highlevel/types/files/file-location.js +4 -3
  327. package/esm/highlevel/types/files/web-document.js +4 -3
  328. package/esm/highlevel/types/media/audio.js +5 -4
  329. package/esm/highlevel/types/media/contact.js +4 -3
  330. package/esm/highlevel/types/media/dice.js +4 -3
  331. package/esm/highlevel/types/media/document.js +8 -6
  332. package/esm/highlevel/types/media/document.js.map +1 -1
  333. package/esm/highlevel/types/media/game.js +5 -4
  334. package/esm/highlevel/types/media/index.d.ts +1 -1
  335. package/esm/highlevel/types/media/index.js +1 -1
  336. package/esm/highlevel/types/media/index.js.map +1 -1
  337. package/esm/highlevel/types/media/input-media/factories.d.ts +141 -0
  338. package/esm/highlevel/types/media/input-media/factories.js +228 -0
  339. package/esm/highlevel/types/media/input-media/factories.js.map +1 -0
  340. package/esm/highlevel/types/media/input-media/index.d.ts +3 -0
  341. package/esm/highlevel/types/media/input-media/index.js +4 -0
  342. package/esm/highlevel/types/media/input-media/index.js.map +1 -0
  343. package/esm/highlevel/types/media/{input-media.d.ts → input-media/types.d.ts} +5 -145
  344. package/esm/highlevel/types/media/input-media/types.js +2 -0
  345. package/esm/highlevel/types/media/input-media/types.js.map +1 -0
  346. package/esm/highlevel/types/media/invoice.js +9 -7
  347. package/esm/highlevel/types/media/location.js +7 -5
  348. package/esm/highlevel/types/media/photo.js +5 -4
  349. package/esm/highlevel/types/media/poll.js +5 -4
  350. package/esm/highlevel/types/media/sticker.js +5 -4
  351. package/esm/highlevel/types/media/story.js +4 -3
  352. package/esm/highlevel/types/media/thumbnail.js +10 -8
  353. package/esm/highlevel/types/media/thumbnail.js.map +1 -1
  354. package/esm/highlevel/types/media/venue.js +5 -4
  355. package/esm/highlevel/types/media/video.js +5 -4
  356. package/esm/highlevel/types/media/voice.js +5 -4
  357. package/esm/highlevel/types/media/web-page.js +5 -4
  358. package/esm/highlevel/types/messages/dialog.js +5 -4
  359. package/esm/highlevel/types/messages/draft-message.js +5 -4
  360. package/esm/highlevel/types/messages/message-entity.js +5 -4
  361. package/esm/highlevel/types/messages/message-forward.js +5 -4
  362. package/esm/highlevel/types/messages/message-reactions.js +5 -4
  363. package/esm/highlevel/types/messages/message-replies.js +5 -4
  364. package/esm/highlevel/types/messages/message.d.ts +1 -1
  365. package/esm/highlevel/types/messages/message.js +6 -5
  366. package/esm/highlevel/types/messages/message.js.map +1 -1
  367. package/esm/highlevel/types/messages/replied-message.js +5 -4
  368. package/esm/highlevel/types/misc/index.d.ts +1 -1
  369. package/esm/highlevel/types/misc/index.js +1 -1
  370. package/esm/highlevel/types/misc/index.js.map +1 -1
  371. package/esm/highlevel/types/misc/input-privacy-rule/allow.d.ts +22 -0
  372. package/esm/highlevel/types/misc/input-privacy-rule/allow.js +31 -0
  373. package/esm/highlevel/types/misc/input-privacy-rule/allow.js.map +1 -0
  374. package/esm/highlevel/types/misc/input-privacy-rule/bundle.d.ts +3 -0
  375. package/esm/highlevel/types/misc/input-privacy-rule/bundle.js +4 -0
  376. package/esm/highlevel/types/misc/input-privacy-rule/bundle.js.map +1 -0
  377. package/esm/highlevel/types/misc/input-privacy-rule/disallow.d.ts +20 -0
  378. package/esm/highlevel/types/misc/input-privacy-rule/disallow.js +27 -0
  379. package/esm/highlevel/types/misc/input-privacy-rule/disallow.js.map +1 -0
  380. package/esm/highlevel/types/misc/input-privacy-rule/index.d.ts +3 -0
  381. package/esm/highlevel/types/misc/input-privacy-rule/index.js +4 -0
  382. package/esm/highlevel/types/misc/input-privacy-rule/index.js.map +1 -0
  383. package/esm/highlevel/types/misc/input-privacy-rule/types.d.ts +11 -0
  384. package/esm/highlevel/types/misc/input-privacy-rule/types.js +2 -0
  385. package/esm/highlevel/types/misc/input-privacy-rule/types.js.map +1 -0
  386. package/esm/highlevel/types/misc/sticker-set.js +5 -4
  387. package/esm/highlevel/types/misc/takeout-session.js +4 -3
  388. package/esm/highlevel/types/peers/chat-colors.js +4 -3
  389. package/esm/highlevel/types/peers/chat-event/index.js +5 -4
  390. package/esm/highlevel/types/peers/chat-invite-link-member.js +5 -4
  391. package/esm/highlevel/types/peers/chat-invite-link.js +5 -4
  392. package/esm/highlevel/types/peers/chat-location.js +5 -4
  393. package/esm/highlevel/types/peers/chat-member.js +5 -4
  394. package/esm/highlevel/types/peers/chat-permissions.js +4 -3
  395. package/esm/highlevel/types/peers/chat-photo.js +12 -9
  396. package/esm/highlevel/types/peers/chat-photo.js.map +1 -1
  397. package/esm/highlevel/types/peers/chat-preview.js +5 -4
  398. package/esm/highlevel/types/peers/chat.js +5 -4
  399. package/esm/highlevel/types/peers/forum-topic.js +5 -4
  400. package/esm/highlevel/types/peers/user.js +5 -4
  401. package/esm/highlevel/types/premium/boost-slot.js +5 -4
  402. package/esm/highlevel/types/premium/boost-stats.js +4 -3
  403. package/esm/highlevel/types/premium/boost.js +5 -4
  404. package/esm/highlevel/types/reactions/emoji-status.js +4 -3
  405. package/esm/highlevel/types/reactions/peer-reaction.js +5 -4
  406. package/esm/highlevel/types/reactions/reaction-count.js +4 -3
  407. package/esm/highlevel/types/stories/all-stories.js +5 -4
  408. package/esm/highlevel/types/stories/interactive/channel-post.js +5 -4
  409. package/esm/highlevel/types/stories/interactive/location.js +5 -4
  410. package/esm/highlevel/types/stories/interactive/reaction.js +4 -3
  411. package/esm/highlevel/types/stories/interactive/venue.js +5 -4
  412. package/esm/highlevel/types/stories/peer-stories.js +5 -4
  413. package/esm/highlevel/types/stories/stealth-mode.js +4 -3
  414. package/esm/highlevel/types/stories/story-interactions.js +5 -4
  415. package/esm/highlevel/types/stories/story-viewer.js +9 -7
  416. package/esm/highlevel/types/stories/story.js +5 -4
  417. package/esm/highlevel/types/updates/bot-chat-join-request.js +5 -4
  418. package/esm/highlevel/types/updates/bot-reaction.js +9 -7
  419. package/esm/highlevel/types/updates/bot-stopped.js +5 -4
  420. package/esm/highlevel/types/updates/callback-query.js +11 -9
  421. package/esm/highlevel/types/updates/callback-query.js.map +1 -1
  422. package/esm/highlevel/types/updates/chat-join-request.js +5 -4
  423. package/esm/highlevel/types/updates/chat-member-update.js +5 -4
  424. package/esm/highlevel/types/updates/chosen-inline-result.js +5 -4
  425. package/esm/highlevel/types/updates/delete-message-update.js +4 -3
  426. package/esm/highlevel/types/updates/delete-story-update.js +5 -4
  427. package/esm/highlevel/types/updates/history-read-update.js +4 -3
  428. package/esm/highlevel/types/updates/inline-query.js +5 -4
  429. package/esm/highlevel/types/updates/poll-update.js +5 -4
  430. package/esm/highlevel/types/updates/poll-vote.js +5 -4
  431. package/esm/highlevel/types/updates/pre-checkout-query.js +5 -4
  432. package/esm/highlevel/types/updates/story-update.js +5 -4
  433. package/esm/highlevel/types/updates/user-status-update.js +5 -4
  434. package/esm/highlevel/types/updates/user-status-update.js.map +1 -1
  435. package/esm/highlevel/types/updates/user-typing-update.js +4 -3
  436. package/esm/highlevel/updates/manager.d.ts +5 -3
  437. package/esm/highlevel/updates/manager.js +81 -67
  438. package/esm/highlevel/updates/manager.js.map +1 -1
  439. package/esm/highlevel/utils/convert-file-id.js +7 -6
  440. package/esm/highlevel/utils/convert-file-id.js.map +1 -1
  441. package/esm/highlevel/utils/file-utils.js +8 -4
  442. package/esm/highlevel/utils/file-utils.js.map +1 -1
  443. package/esm/highlevel/utils/inline-utils.js +4 -3
  444. package/esm/highlevel/utils/inline-utils.js.map +1 -1
  445. package/esm/highlevel/utils/inspectable.d.ts +1 -1
  446. package/esm/highlevel/utils/inspectable.js +3 -2
  447. package/esm/highlevel/utils/inspectable.js.map +1 -1
  448. package/esm/highlevel/utils/memoize.d.ts +1 -1
  449. package/esm/highlevel/utils/memoize.js +1 -0
  450. package/esm/highlevel/utils/memoize.js.map +1 -1
  451. package/esm/highlevel/utils/stream-utils.d.ts +0 -2
  452. package/esm/highlevel/utils/stream-utils.js +0 -26
  453. package/esm/highlevel/utils/stream-utils.js.map +1 -1
  454. package/esm/highlevel/utils/string-session.js +4 -3
  455. package/esm/highlevel/utils/string-session.js.map +1 -1
  456. package/esm/highlevel/worker/index.d.ts +3 -0
  457. package/esm/highlevel/worker/index.js +4 -0
  458. package/esm/highlevel/worker/index.js.map +1 -0
  459. package/esm/highlevel/worker/port.d.ts +6 -3
  460. package/esm/highlevel/worker/port.js +8 -2
  461. package/esm/highlevel/worker/port.js.map +1 -1
  462. package/esm/highlevel/worker/protocol.d.ts +5 -1
  463. package/esm/highlevel/worker/protocol.js.map +1 -1
  464. package/esm/highlevel/worker/worker.d.ts +11 -4
  465. package/esm/highlevel/worker/worker.js +51 -47
  466. package/esm/highlevel/worker/worker.js.map +1 -1
  467. package/esm/network/client.d.ts +4 -4
  468. package/esm/network/client.js +4 -2
  469. package/esm/network/client.js.map +1 -1
  470. package/esm/network/multi-session-connection.d.ts +1 -0
  471. package/esm/network/multi-session-connection.js +6 -0
  472. package/esm/network/multi-session-connection.js.map +1 -1
  473. package/esm/network/network-manager.d.ts +5 -1
  474. package/esm/network/network-manager.js +24 -15
  475. package/esm/network/network-manager.js.map +1 -1
  476. package/esm/network/persistent-connection.d.ts +3 -0
  477. package/esm/network/persistent-connection.js +23 -1
  478. package/esm/network/persistent-connection.js.map +1 -1
  479. package/esm/network/session-connection.d.ts +2 -0
  480. package/esm/network/session-connection.js +18 -4
  481. package/esm/network/session-connection.js.map +1 -1
  482. package/esm/network/transports/index.d.ts +0 -3
  483. package/esm/network/transports/index.js +0 -3
  484. package/esm/network/transports/index.js.map +1 -1
  485. package/esm/platform.d.ts +18 -0
  486. package/esm/platform.js +31 -0
  487. package/esm/platform.js.map +1 -0
  488. package/esm/storage/index.d.ts +1 -2
  489. package/esm/storage/index.js +1 -2
  490. package/esm/storage/index.js.map +1 -1
  491. package/{cjs/storage/providers → esm/storage}/memory/driver.d.ts +1 -1
  492. package/esm/storage/memory/driver.js.map +1 -0
  493. package/{cjs/storage/providers → esm/storage}/memory/index.d.ts +2 -2
  494. package/esm/storage/memory/index.js.map +1 -0
  495. package/esm/storage/{providers/memory → memory}/repository/auth-keys.d.ts +1 -1
  496. package/esm/storage/memory/repository/auth-keys.js.map +1 -0
  497. package/{cjs/storage/providers → esm/storage}/memory/repository/kv.d.ts +1 -1
  498. package/esm/storage/memory/repository/kv.js.map +1 -0
  499. package/{cjs/storage/providers → esm/storage}/memory/repository/peers.d.ts +1 -1
  500. package/esm/storage/memory/repository/peers.js.map +1 -0
  501. package/{cjs/storage/providers → esm/storage}/memory/repository/ref-messages.d.ts +1 -1
  502. package/esm/storage/memory/repository/ref-messages.js.map +1 -0
  503. package/esm/storage/storage.js +3 -2
  504. package/esm/storage/storage.js.map +1 -1
  505. package/esm/utils/binary/asn1-parser.js +3 -3
  506. package/esm/utils/binary/asn1-parser.js.map +1 -1
  507. package/esm/utils/crypto/abstract.d.ts +0 -1
  508. package/esm/utils/crypto/abstract.js.map +1 -1
  509. package/esm/utils/crypto/index.d.ts +0 -2
  510. package/esm/utils/crypto/index.js +0 -2
  511. package/esm/utils/crypto/index.js.map +1 -1
  512. package/esm/utils/crypto/keys.js +6 -4
  513. package/esm/utils/crypto/keys.js.map +1 -1
  514. package/esm/utils/crypto/password.js +3 -3
  515. package/esm/utils/crypto/password.js.map +1 -1
  516. package/esm/utils/dcs.d.ts +4 -0
  517. package/esm/utils/dcs.js +0 -4
  518. package/esm/utils/dcs.js.map +1 -1
  519. package/esm/utils/{platform/error-reporting.d.ts → error-reporting.d.ts} +1 -1
  520. package/esm/utils/error-reporting.js.map +1 -0
  521. package/esm/utils/index.d.ts +4 -1
  522. package/esm/utils/index.js +6 -1
  523. package/esm/utils/index.js.map +1 -1
  524. package/esm/utils/links/common.js +1 -1
  525. package/esm/utils/links/common.js.map +1 -1
  526. package/esm/utils/logger.d.ts +1 -0
  527. package/esm/utils/logger.js +9 -22
  528. package/esm/utils/logger.js.map +1 -1
  529. package/package.json +24 -52
  530. package/cjs/highlevel/base.test.js +0 -14
  531. package/cjs/highlevel/base.test.js.map +0 -1
  532. package/cjs/highlevel/methods/files/_platform.js +0 -33
  533. package/cjs/highlevel/methods/files/_platform.js.map +0 -1
  534. package/cjs/highlevel/methods/files/_platform.web.d.ts +0 -1
  535. package/cjs/highlevel/methods/files/_platform.web.js +0 -26
  536. package/cjs/highlevel/methods/files/_platform.web.js.map +0 -1
  537. package/cjs/highlevel/methods/files/download-file.web.d.ts +0 -1
  538. package/cjs/highlevel/methods/files/download-file.web.js +0 -9
  539. package/cjs/highlevel/methods/files/download-file.web.js.map +0 -1
  540. package/cjs/highlevel/methods/messages/send-text.test.d.ts +0 -1
  541. package/cjs/highlevel/methods/messages/send-text.test.js +0 -140
  542. package/cjs/highlevel/methods/messages/send-text.test.js.map +0 -1
  543. package/cjs/highlevel/methods/users/get-users.test.d.ts +0 -1
  544. package/cjs/highlevel/methods/users/get-users.test.js +0 -33
  545. package/cjs/highlevel/methods/users/get-users.test.js.map +0 -1
  546. package/cjs/highlevel/methods/users/resolve-peer.test.d.ts +0 -1
  547. package/cjs/highlevel/methods/users/resolve-peer.test.js +0 -307
  548. package/cjs/highlevel/methods/users/resolve-peer.test.js.map +0 -1
  549. package/cjs/highlevel/types/bots/command-scope.d.ts +0 -63
  550. package/cjs/highlevel/types/bots/command-scope.js +0 -87
  551. package/cjs/highlevel/types/bots/command-scope.js.map +0 -1
  552. package/cjs/highlevel/types/bots/input/index.d.ts +0 -2
  553. package/cjs/highlevel/types/bots/input/index.js.map +0 -1
  554. package/cjs/highlevel/types/bots/input/input-inline-message.js +0 -179
  555. package/cjs/highlevel/types/bots/input/input-inline-message.js.map +0 -1
  556. package/cjs/highlevel/types/bots/input/input-inline-result.js +0 -490
  557. package/cjs/highlevel/types/bots/input/input-inline-result.js.map +0 -1
  558. package/cjs/highlevel/types/bots/keyboard-builder.js.map +0 -1
  559. package/cjs/highlevel/types/bots/keyboard-builder.test.d.ts +0 -1
  560. package/cjs/highlevel/types/bots/keyboard-builder.test.js +0 -162
  561. package/cjs/highlevel/types/bots/keyboard-builder.test.js.map +0 -1
  562. package/cjs/highlevel/types/bots/keyboards.d.ts +0 -239
  563. package/cjs/highlevel/types/bots/keyboards.js +0 -380
  564. package/cjs/highlevel/types/bots/keyboards.js.map +0 -1
  565. package/cjs/highlevel/types/bots/keyboards.test.d.ts +0 -1
  566. package/cjs/highlevel/types/bots/keyboards.test.js +0 -146
  567. package/cjs/highlevel/types/bots/keyboards.test.js.map +0 -1
  568. package/cjs/highlevel/types/media/input-media.js +0 -254
  569. package/cjs/highlevel/types/media/input-media.js.map +0 -1
  570. package/cjs/highlevel/types/misc/input-privacy-rule.d.ts +0 -63
  571. package/cjs/highlevel/types/misc/input-privacy-rule.js +0 -85
  572. package/cjs/highlevel/types/misc/input-privacy-rule.js.map +0 -1
  573. package/cjs/highlevel/types/peers/peers-index.test.d.ts +0 -1
  574. package/cjs/highlevel/types/peers/peers-index.test.js +0 -71
  575. package/cjs/highlevel/types/peers/peers-index.test.js.map +0 -1
  576. package/cjs/highlevel/types/peers/user.test.d.ts +0 -1
  577. package/cjs/highlevel/types/peers/user.test.js +0 -176
  578. package/cjs/highlevel/types/peers/user.test.js.map +0 -1
  579. package/cjs/highlevel/utils/file-type.test.d.ts +0 -1
  580. package/cjs/highlevel/utils/file-type.test.js +0 -64
  581. package/cjs/highlevel/utils/file-type.test.js.map +0 -1
  582. package/cjs/highlevel/utils/file-utils.test.d.ts +0 -1
  583. package/cjs/highlevel/utils/file-utils.test.js +0 -126
  584. package/cjs/highlevel/utils/file-utils.test.js.map +0 -1
  585. package/cjs/highlevel/utils/inline-utils.test.d.ts +0 -1
  586. package/cjs/highlevel/utils/inline-utils.test.js +0 -47
  587. package/cjs/highlevel/utils/inline-utils.test.js.map +0 -1
  588. package/cjs/highlevel/utils/inspectable.test.d.ts +0 -1
  589. package/cjs/highlevel/utils/inspectable.test.js +0 -97
  590. package/cjs/highlevel/utils/inspectable.test.js.map +0 -1
  591. package/cjs/highlevel/utils/memoize.test.d.ts +0 -1
  592. package/cjs/highlevel/utils/memoize.test.js +0 -60
  593. package/cjs/highlevel/utils/memoize.test.js.map +0 -1
  594. package/cjs/highlevel/utils/peer-utils.test.d.ts +0 -1
  595. package/cjs/highlevel/utils/peer-utils.test.js +0 -109
  596. package/cjs/highlevel/utils/peer-utils.test.js.map +0 -1
  597. package/cjs/highlevel/utils/platform/storage.d.ts +0 -1
  598. package/cjs/highlevel/utils/platform/storage.js +0 -10
  599. package/cjs/highlevel/utils/platform/storage.js.map +0 -1
  600. package/cjs/highlevel/utils/platform/storage.web.d.ts +0 -1
  601. package/cjs/highlevel/utils/platform/storage.web.js +0 -14
  602. package/cjs/highlevel/utils/platform/storage.web.js.map +0 -1
  603. package/cjs/highlevel/utils/query-batcher.test.d.ts +0 -1
  604. package/cjs/highlevel/utils/query-batcher.test.js +0 -502
  605. package/cjs/highlevel/utils/query-batcher.test.js.map +0 -1
  606. package/cjs/highlevel/utils/stream-utils.test.d.ts +0 -1
  607. package/cjs/highlevel/utils/stream-utils.test.js +0 -98
  608. package/cjs/highlevel/utils/stream-utils.test.js.map +0 -1
  609. package/cjs/highlevel/utils/string-session.test.d.ts +0 -1
  610. package/cjs/highlevel/utils/string-session.test.js +0 -198
  611. package/cjs/highlevel/utils/string-session.test.js.map +0 -1
  612. package/cjs/highlevel/utils/voice-utils.test.d.ts +0 -1
  613. package/cjs/highlevel/utils/voice-utils.test.js +0 -28
  614. package/cjs/highlevel/utils/voice-utils.test.js.map +0 -1
  615. package/cjs/highlevel/worker/platform/connect.d.ts +0 -2
  616. package/cjs/highlevel/worker/platform/connect.js +0 -19
  617. package/cjs/highlevel/worker/platform/connect.js.map +0 -1
  618. package/cjs/highlevel/worker/platform/connect.web.d.ts +0 -2
  619. package/cjs/highlevel/worker/platform/connect.web.js +0 -51
  620. package/cjs/highlevel/worker/platform/connect.web.js.map +0 -1
  621. package/cjs/highlevel/worker/platform/register.d.ts +0 -2
  622. package/cjs/highlevel/worker/platform/register.js +0 -20
  623. package/cjs/highlevel/worker/platform/register.js.map +0 -1
  624. package/cjs/highlevel/worker/platform/register.web.d.ts +0 -2
  625. package/cjs/highlevel/worker/platform/register.web.js +0 -64
  626. package/cjs/highlevel/worker/platform/register.web.js.map +0 -1
  627. package/cjs/network/auth-key.test.d.ts +0 -1
  628. package/cjs/network/auth-key.test.js +0 -111
  629. package/cjs/network/auth-key.test.js.map +0 -1
  630. package/cjs/network/config-manager.test.d.ts +0 -1
  631. package/cjs/network/config-manager.test.js +0 -174
  632. package/cjs/network/config-manager.test.js.map +0 -1
  633. package/cjs/network/persistent-connection.test.d.ts +0 -1
  634. package/cjs/network/persistent-connection.test.js +0 -157
  635. package/cjs/network/persistent-connection.test.js.map +0 -1
  636. package/cjs/network/transports/intermediate.test.d.ts +0 -1
  637. package/cjs/network/transports/intermediate.test.js +0 -84
  638. package/cjs/network/transports/intermediate.test.js.map +0 -1
  639. package/cjs/network/transports/obfuscated.test.d.ts +0 -1
  640. package/cjs/network/transports/obfuscated.test.js +0 -131
  641. package/cjs/network/transports/obfuscated.test.js.map +0 -1
  642. package/cjs/network/transports/tcp.d.ts +0 -32
  643. package/cjs/network/transports/tcp.js +0 -130
  644. package/cjs/network/transports/tcp.js.map +0 -1
  645. package/cjs/network/transports/tcp.test.d.ts +0 -1
  646. package/cjs/network/transports/tcp.test.js +0 -103
  647. package/cjs/network/transports/tcp.test.js.map +0 -1
  648. package/cjs/network/transports/websocket.d.ts +0 -46
  649. package/cjs/network/transports/websocket.js +0 -124
  650. package/cjs/network/transports/websocket.js.map +0 -1
  651. package/cjs/network/transports/websocket.test.d.ts +0 -1
  652. package/cjs/network/transports/websocket.test.js +0 -91
  653. package/cjs/network/transports/websocket.test.js.map +0 -1
  654. package/cjs/storage/providers/idb/driver.d.ts +0 -18
  655. package/cjs/storage/providers/idb/driver.js +0 -138
  656. package/cjs/storage/providers/idb/driver.js.map +0 -1
  657. package/cjs/storage/providers/idb/idb.test.d.ts +0 -1
  658. package/cjs/storage/providers/idb/idb.test.js +0 -29
  659. package/cjs/storage/providers/idb/idb.test.js.map +0 -1
  660. package/cjs/storage/providers/idb/index.d.ts +0 -22
  661. package/cjs/storage/providers/idb/index.js +0 -28
  662. package/cjs/storage/providers/idb/index.js.map +0 -1
  663. package/cjs/storage/providers/idb/repository/auth-keys.d.ts +0 -14
  664. package/cjs/storage/providers/idb/repository/auth-keys.js +0 -70
  665. package/cjs/storage/providers/idb/repository/auth-keys.js.map +0 -1
  666. package/cjs/storage/providers/idb/repository/kv.d.ts +0 -11
  667. package/cjs/storage/providers/idb/repository/kv.js +0 -34
  668. package/cjs/storage/providers/idb/repository/kv.js.map +0 -1
  669. package/cjs/storage/providers/idb/repository/peers.d.ts +0 -12
  670. package/cjs/storage/providers/idb/repository/peers.js +0 -38
  671. package/cjs/storage/providers/idb/repository/peers.js.map +0 -1
  672. package/cjs/storage/providers/idb/repository/ref-messages.d.ts +0 -12
  673. package/cjs/storage/providers/idb/repository/ref-messages.js +0 -57
  674. package/cjs/storage/providers/idb/repository/ref-messages.js.map +0 -1
  675. package/cjs/storage/providers/idb/utils.d.ts +0 -3
  676. package/cjs/storage/providers/idb/utils.js +0 -27
  677. package/cjs/storage/providers/idb/utils.js.map +0 -1
  678. package/cjs/storage/providers/memory/driver.js.map +0 -1
  679. package/cjs/storage/providers/memory/index.js.map +0 -1
  680. package/cjs/storage/providers/memory/memory.test.d.ts +0 -1
  681. package/cjs/storage/providers/memory/memory.test.js +0 -13
  682. package/cjs/storage/providers/memory/memory.test.js.map +0 -1
  683. package/cjs/storage/providers/memory/repository/auth-keys.js.map +0 -1
  684. package/cjs/storage/providers/memory/repository/kv.js.map +0 -1
  685. package/cjs/storage/providers/memory/repository/peers.js.map +0 -1
  686. package/cjs/storage/providers/memory/repository/ref-messages.js.map +0 -1
  687. package/cjs/storage/service/auth-keys.test.d.ts +0 -1
  688. package/cjs/storage/service/auth-keys.test.js +0 -22
  689. package/cjs/storage/service/auth-keys.test.js.map +0 -1
  690. package/cjs/storage/service/updates.test.d.ts +0 -1
  691. package/cjs/storage/service/updates.test.js +0 -60
  692. package/cjs/storage/service/updates.test.js.map +0 -1
  693. package/cjs/storage/service/utils.test-utils.d.ts +0 -2
  694. package/cjs/storage/service/utils.test-utils.js +0 -19
  695. package/cjs/storage/service/utils.test-utils.js.map +0 -1
  696. package/cjs/utils/async-lock.test.d.ts +0 -1
  697. package/cjs/utils/async-lock.test.js +0 -25
  698. package/cjs/utils/async-lock.test.js.map +0 -1
  699. package/cjs/utils/bigint-utils.test.d.ts +0 -1
  700. package/cjs/utils/bigint-utils.test.js +0 -150
  701. package/cjs/utils/bigint-utils.test.js.map +0 -1
  702. package/cjs/utils/buffer-utils.test.d.ts +0 -1
  703. package/cjs/utils/buffer-utils.test.js +0 -69
  704. package/cjs/utils/buffer-utils.test.js.map +0 -1
  705. package/cjs/utils/condition-variable.test.d.ts +0 -1
  706. package/cjs/utils/condition-variable.test.js +0 -27
  707. package/cjs/utils/condition-variable.test.js.map +0 -1
  708. package/cjs/utils/controllable-promise.test.d.ts +0 -1
  709. package/cjs/utils/controllable-promise.test.js +0 -17
  710. package/cjs/utils/controllable-promise.test.js.map +0 -1
  711. package/cjs/utils/crypto/factorization.test.d.ts +0 -1
  712. package/cjs/utils/crypto/factorization.test.js +0 -19
  713. package/cjs/utils/crypto/factorization.test.js.map +0 -1
  714. package/cjs/utils/crypto/keys.test.d.ts +0 -1
  715. package/cjs/utils/crypto/keys.test.js +0 -40
  716. package/cjs/utils/crypto/keys.test.js.map +0 -1
  717. package/cjs/utils/crypto/miller-rabin.test.d.ts +0 -1
  718. package/cjs/utils/crypto/miller-rabin.test.js +0 -60
  719. package/cjs/utils/crypto/miller-rabin.test.js.map +0 -1
  720. package/cjs/utils/crypto/mtproto.test.d.ts +0 -1
  721. package/cjs/utils/crypto/mtproto.test.js +0 -50
  722. package/cjs/utils/crypto/mtproto.test.js.map +0 -1
  723. package/cjs/utils/crypto/node.d.ts +0 -21
  724. package/cjs/utils/crypto/node.js +0 -74
  725. package/cjs/utils/crypto/node.js.map +0 -1
  726. package/cjs/utils/crypto/node.test.d.ts +0 -1
  727. package/cjs/utils/crypto/node.test.js +0 -14
  728. package/cjs/utils/crypto/node.test.js.map +0 -1
  729. package/cjs/utils/crypto/password.test.d.ts +0 -1
  730. package/cjs/utils/crypto/password.test.js +0 -95
  731. package/cjs/utils/crypto/password.test.js.map +0 -1
  732. package/cjs/utils/crypto/utils.test.d.ts +0 -1
  733. package/cjs/utils/crypto/utils.test.js +0 -49
  734. package/cjs/utils/crypto/utils.test.js.map +0 -1
  735. package/cjs/utils/crypto/wasm.d.ts +0 -22
  736. package/cjs/utils/crypto/wasm.js +0 -41
  737. package/cjs/utils/crypto/wasm.js.map +0 -1
  738. package/cjs/utils/crypto/web.d.ts +0 -11
  739. package/cjs/utils/crypto/web.js +0 -40
  740. package/cjs/utils/crypto/web.js.map +0 -1
  741. package/cjs/utils/crypto/web.test.d.ts +0 -1
  742. package/cjs/utils/crypto/web.test.js +0 -17
  743. package/cjs/utils/crypto/web.test.js.map +0 -1
  744. package/cjs/utils/deque.test.d.ts +0 -1
  745. package/cjs/utils/deque.test.js +0 -128
  746. package/cjs/utils/deque.test.js.map +0 -1
  747. package/cjs/utils/function-utils.test.d.ts +0 -1
  748. package/cjs/utils/function-utils.test.js +0 -23
  749. package/cjs/utils/function-utils.test.js.map +0 -1
  750. package/cjs/utils/linked-list.test.d.ts +0 -1
  751. package/cjs/utils/linked-list.test.js +0 -36
  752. package/cjs/utils/linked-list.test.js.map +0 -1
  753. package/cjs/utils/links/bots.test.d.ts +0 -1
  754. package/cjs/utils/links/bots.test.js +0 -152
  755. package/cjs/utils/links/bots.test.js.map +0 -1
  756. package/cjs/utils/links/chat.test.d.ts +0 -1
  757. package/cjs/utils/links/chat.test.js +0 -84
  758. package/cjs/utils/links/chat.test.js.map +0 -1
  759. package/cjs/utils/links/misc.test.d.ts +0 -1
  760. package/cjs/utils/links/misc.test.js +0 -153
  761. package/cjs/utils/links/misc.test.js.map +0 -1
  762. package/cjs/utils/links/proxy.test.d.ts +0 -1
  763. package/cjs/utils/links/proxy.test.js +0 -74
  764. package/cjs/utils/links/proxy.test.js.map +0 -1
  765. package/cjs/utils/links/user.test.d.ts +0 -1
  766. package/cjs/utils/links/user.test.js +0 -63
  767. package/cjs/utils/links/user.test.js.map +0 -1
  768. package/cjs/utils/logger.test.d.ts +0 -1
  769. package/cjs/utils/logger.test.js +0 -139
  770. package/cjs/utils/logger.test.js.map +0 -1
  771. package/cjs/utils/long-utils.test.d.ts +0 -1
  772. package/cjs/utils/long-utils.test.js +0 -158
  773. package/cjs/utils/long-utils.test.js.map +0 -1
  774. package/cjs/utils/lru-map.test.d.ts +0 -1
  775. package/cjs/utils/lru-map.test.js +0 -96
  776. package/cjs/utils/lru-map.test.js.map +0 -1
  777. package/cjs/utils/lru-set.test.d.ts +0 -1
  778. package/cjs/utils/lru-set.test.js +0 -77
  779. package/cjs/utils/lru-set.test.js.map +0 -1
  780. package/cjs/utils/peer-utils.test.d.ts +0 -1
  781. package/cjs/utils/peer-utils.test.js +0 -110
  782. package/cjs/utils/peer-utils.test.js.map +0 -1
  783. package/cjs/utils/platform/crypto.d.ts +0 -1
  784. package/cjs/utils/platform/crypto.js +0 -8
  785. package/cjs/utils/platform/crypto.js.map +0 -1
  786. package/cjs/utils/platform/crypto.web.d.ts +0 -1
  787. package/cjs/utils/platform/crypto.web.js +0 -14
  788. package/cjs/utils/platform/crypto.web.js.map +0 -1
  789. package/cjs/utils/platform/error-reporting.js.map +0 -1
  790. package/cjs/utils/platform/exit-hook.d.ts +0 -1
  791. package/cjs/utils/platform/exit-hook.js +0 -45
  792. package/cjs/utils/platform/exit-hook.js.map +0 -1
  793. package/cjs/utils/platform/exit-hook.web.d.ts +0 -1
  794. package/cjs/utils/platform/exit-hook.web.js +0 -21
  795. package/cjs/utils/platform/exit-hook.web.js.map +0 -1
  796. package/cjs/utils/platform/logging.d.ts +0 -1
  797. package/cjs/utils/platform/logging.js +0 -34
  798. package/cjs/utils/platform/logging.js.map +0 -1
  799. package/cjs/utils/platform/logging.web.d.ts +0 -1
  800. package/cjs/utils/platform/logging.web.js +0 -35
  801. package/cjs/utils/platform/logging.web.js.map +0 -1
  802. package/cjs/utils/platform/transport.d.ts +0 -1
  803. package/cjs/utils/platform/transport.js +0 -8
  804. package/cjs/utils/platform/transport.js.map +0 -1
  805. package/cjs/utils/platform/transport.web.d.ts +0 -1
  806. package/cjs/utils/platform/transport.web.js +0 -15
  807. package/cjs/utils/platform/transport.web.js.map +0 -1
  808. package/cjs/utils/sorted-array.test.d.ts +0 -1
  809. package/cjs/utils/sorted-array.test.js +0 -66
  810. package/cjs/utils/sorted-array.test.js.map +0 -1
  811. package/cjs/utils/tl-json.test.d.ts +0 -1
  812. package/cjs/utils/tl-json.test.js +0 -83
  813. package/cjs/utils/tl-json.test.js.map +0 -1
  814. package/cjs/utils/type-assertions.test.d.ts +0 -1
  815. package/cjs/utils/type-assertions.test.js +0 -67
  816. package/cjs/utils/type-assertions.test.js.map +0 -1
  817. package/esm/highlevel/base.test.d.ts +0 -1
  818. package/esm/highlevel/base.test.js +0 -12
  819. package/esm/highlevel/base.test.js.map +0 -1
  820. package/esm/highlevel/methods/files/_platform.d.ts +0 -1
  821. package/esm/highlevel/methods/files/_platform.js +0 -26
  822. package/esm/highlevel/methods/files/_platform.js.map +0 -1
  823. package/esm/highlevel/methods/files/_platform.web.d.ts +0 -1
  824. package/esm/highlevel/methods/files/_platform.web.js +0 -19
  825. package/esm/highlevel/methods/files/_platform.web.js.map +0 -1
  826. package/esm/highlevel/methods/files/download-file.web.d.ts +0 -1
  827. package/esm/highlevel/methods/files/download-file.web.js +0 -5
  828. package/esm/highlevel/methods/files/download-file.web.js.map +0 -1
  829. package/esm/highlevel/methods/messages/send-text.test.d.ts +0 -1
  830. package/esm/highlevel/methods/messages/send-text.test.js +0 -135
  831. package/esm/highlevel/methods/messages/send-text.test.js.map +0 -1
  832. package/esm/highlevel/methods/users/get-users.test.d.ts +0 -1
  833. package/esm/highlevel/methods/users/get-users.test.js +0 -28
  834. package/esm/highlevel/methods/users/get-users.test.js.map +0 -1
  835. package/esm/highlevel/methods/users/resolve-peer.test.d.ts +0 -1
  836. package/esm/highlevel/methods/users/resolve-peer.test.js +0 -302
  837. package/esm/highlevel/methods/users/resolve-peer.test.js.map +0 -1
  838. package/esm/highlevel/types/bots/command-scope.d.ts +0 -63
  839. package/esm/highlevel/types/bots/command-scope.js +0 -84
  840. package/esm/highlevel/types/bots/command-scope.js.map +0 -1
  841. package/esm/highlevel/types/bots/input/index.d.ts +0 -2
  842. package/esm/highlevel/types/bots/input/index.js +0 -3
  843. package/esm/highlevel/types/bots/input/index.js.map +0 -1
  844. package/esm/highlevel/types/bots/input/input-inline-message.js +0 -176
  845. package/esm/highlevel/types/bots/input/input-inline-message.js.map +0 -1
  846. package/esm/highlevel/types/bots/input/input-inline-result.js +0 -487
  847. package/esm/highlevel/types/bots/input/input-inline-result.js.map +0 -1
  848. package/esm/highlevel/types/bots/keyboard-builder.js.map +0 -1
  849. package/esm/highlevel/types/bots/keyboard-builder.test.d.ts +0 -1
  850. package/esm/highlevel/types/bots/keyboard-builder.test.js +0 -160
  851. package/esm/highlevel/types/bots/keyboard-builder.test.js.map +0 -1
  852. package/esm/highlevel/types/bots/keyboards.d.ts +0 -239
  853. package/esm/highlevel/types/bots/keyboards.js +0 -377
  854. package/esm/highlevel/types/bots/keyboards.js.map +0 -1
  855. package/esm/highlevel/types/bots/keyboards.test.d.ts +0 -1
  856. package/esm/highlevel/types/bots/keyboards.test.js +0 -144
  857. package/esm/highlevel/types/bots/keyboards.test.js.map +0 -1
  858. package/esm/highlevel/types/media/input-media.js +0 -251
  859. package/esm/highlevel/types/media/input-media.js.map +0 -1
  860. package/esm/highlevel/types/misc/input-privacy-rule.d.ts +0 -63
  861. package/esm/highlevel/types/misc/input-privacy-rule.js +0 -82
  862. package/esm/highlevel/types/misc/input-privacy-rule.js.map +0 -1
  863. package/esm/highlevel/types/peers/peers-index.test.d.ts +0 -1
  864. package/esm/highlevel/types/peers/peers-index.test.js +0 -69
  865. package/esm/highlevel/types/peers/peers-index.test.js.map +0 -1
  866. package/esm/highlevel/types/peers/user.test.d.ts +0 -1
  867. package/esm/highlevel/types/peers/user.test.js +0 -171
  868. package/esm/highlevel/types/peers/user.test.js.map +0 -1
  869. package/esm/highlevel/utils/file-type.test.d.ts +0 -1
  870. package/esm/highlevel/utils/file-type.test.js +0 -62
  871. package/esm/highlevel/utils/file-type.test.js.map +0 -1
  872. package/esm/highlevel/utils/file-utils.test.d.ts +0 -1
  873. package/esm/highlevel/utils/file-utils.test.js +0 -124
  874. package/esm/highlevel/utils/file-utils.test.js.map +0 -1
  875. package/esm/highlevel/utils/inline-utils.test.d.ts +0 -1
  876. package/esm/highlevel/utils/inline-utils.test.js +0 -42
  877. package/esm/highlevel/utils/inline-utils.test.js.map +0 -1
  878. package/esm/highlevel/utils/inspectable.test.d.ts +0 -1
  879. package/esm/highlevel/utils/inspectable.test.js +0 -95
  880. package/esm/highlevel/utils/inspectable.test.js.map +0 -1
  881. package/esm/highlevel/utils/memoize.test.d.ts +0 -1
  882. package/esm/highlevel/utils/memoize.test.js +0 -58
  883. package/esm/highlevel/utils/memoize.test.js.map +0 -1
  884. package/esm/highlevel/utils/peer-utils.test.d.ts +0 -1
  885. package/esm/highlevel/utils/peer-utils.test.js +0 -107
  886. package/esm/highlevel/utils/peer-utils.test.js.map +0 -1
  887. package/esm/highlevel/utils/platform/storage.d.ts +0 -1
  888. package/esm/highlevel/utils/platform/storage.js +0 -6
  889. package/esm/highlevel/utils/platform/storage.js.map +0 -1
  890. package/esm/highlevel/utils/platform/storage.web.d.ts +0 -1
  891. package/esm/highlevel/utils/platform/storage.web.js +0 -10
  892. package/esm/highlevel/utils/platform/storage.web.js.map +0 -1
  893. package/esm/highlevel/utils/query-batcher.test.d.ts +0 -1
  894. package/esm/highlevel/utils/query-batcher.test.js +0 -500
  895. package/esm/highlevel/utils/query-batcher.test.js.map +0 -1
  896. package/esm/highlevel/utils/stream-utils.test.d.ts +0 -1
  897. package/esm/highlevel/utils/stream-utils.test.js +0 -96
  898. package/esm/highlevel/utils/stream-utils.test.js.map +0 -1
  899. package/esm/highlevel/utils/string-session.test.d.ts +0 -1
  900. package/esm/highlevel/utils/string-session.test.js +0 -196
  901. package/esm/highlevel/utils/string-session.test.js.map +0 -1
  902. package/esm/highlevel/utils/voice-utils.test.d.ts +0 -1
  903. package/esm/highlevel/utils/voice-utils.test.js +0 -26
  904. package/esm/highlevel/utils/voice-utils.test.js.map +0 -1
  905. package/esm/highlevel/worker/platform/connect.d.ts +0 -2
  906. package/esm/highlevel/worker/platform/connect.js +0 -15
  907. package/esm/highlevel/worker/platform/connect.js.map +0 -1
  908. package/esm/highlevel/worker/platform/connect.web.d.ts +0 -2
  909. package/esm/highlevel/worker/platform/connect.web.js +0 -47
  910. package/esm/highlevel/worker/platform/connect.web.js.map +0 -1
  911. package/esm/highlevel/worker/platform/register.d.ts +0 -2
  912. package/esm/highlevel/worker/platform/register.js +0 -16
  913. package/esm/highlevel/worker/platform/register.js.map +0 -1
  914. package/esm/highlevel/worker/platform/register.web.d.ts +0 -2
  915. package/esm/highlevel/worker/platform/register.web.js +0 -60
  916. package/esm/highlevel/worker/platform/register.web.js.map +0 -1
  917. package/esm/network/auth-key.test.d.ts +0 -1
  918. package/esm/network/auth-key.test.js +0 -106
  919. package/esm/network/auth-key.test.js.map +0 -1
  920. package/esm/network/config-manager.test.d.ts +0 -1
  921. package/esm/network/config-manager.test.js +0 -172
  922. package/esm/network/config-manager.test.js.map +0 -1
  923. package/esm/network/persistent-connection.test.d.ts +0 -1
  924. package/esm/network/persistent-connection.test.js +0 -155
  925. package/esm/network/persistent-connection.test.js.map +0 -1
  926. package/esm/network/transports/intermediate.test.d.ts +0 -1
  927. package/esm/network/transports/intermediate.test.js +0 -82
  928. package/esm/network/transports/intermediate.test.js.map +0 -1
  929. package/esm/network/transports/obfuscated.test.d.ts +0 -1
  930. package/esm/network/transports/obfuscated.test.js +0 -129
  931. package/esm/network/transports/obfuscated.test.js.map +0 -1
  932. package/esm/network/transports/tcp.d.ts +0 -32
  933. package/esm/network/transports/tcp.js +0 -122
  934. package/esm/network/transports/tcp.js.map +0 -1
  935. package/esm/network/transports/tcp.test.d.ts +0 -1
  936. package/esm/network/transports/tcp.test.js +0 -101
  937. package/esm/network/transports/tcp.test.js.map +0 -1
  938. package/esm/network/transports/websocket.d.ts +0 -46
  939. package/esm/network/transports/websocket.js +0 -116
  940. package/esm/network/transports/websocket.js.map +0 -1
  941. package/esm/network/transports/websocket.test.d.ts +0 -1
  942. package/esm/network/transports/websocket.test.js +0 -89
  943. package/esm/network/transports/websocket.test.js.map +0 -1
  944. package/esm/storage/providers/idb/driver.d.ts +0 -18
  945. package/esm/storage/providers/idb/driver.js +0 -134
  946. package/esm/storage/providers/idb/driver.js.map +0 -1
  947. package/esm/storage/providers/idb/idb.test.d.ts +0 -1
  948. package/esm/storage/providers/idb/idb.test.js +0 -27
  949. package/esm/storage/providers/idb/idb.test.js.map +0 -1
  950. package/esm/storage/providers/idb/index.d.ts +0 -22
  951. package/esm/storage/providers/idb/index.js +0 -23
  952. package/esm/storage/providers/idb/index.js.map +0 -1
  953. package/esm/storage/providers/idb/repository/auth-keys.d.ts +0 -14
  954. package/esm/storage/providers/idb/repository/auth-keys.js +0 -66
  955. package/esm/storage/providers/idb/repository/auth-keys.js.map +0 -1
  956. package/esm/storage/providers/idb/repository/kv.d.ts +0 -11
  957. package/esm/storage/providers/idb/repository/kv.js +0 -30
  958. package/esm/storage/providers/idb/repository/kv.js.map +0 -1
  959. package/esm/storage/providers/idb/repository/peers.d.ts +0 -12
  960. package/esm/storage/providers/idb/repository/peers.js +0 -34
  961. package/esm/storage/providers/idb/repository/peers.js.map +0 -1
  962. package/esm/storage/providers/idb/repository/ref-messages.d.ts +0 -12
  963. package/esm/storage/providers/idb/repository/ref-messages.js +0 -53
  964. package/esm/storage/providers/idb/repository/ref-messages.js.map +0 -1
  965. package/esm/storage/providers/idb/utils.d.ts +0 -3
  966. package/esm/storage/providers/idb/utils.js +0 -21
  967. package/esm/storage/providers/idb/utils.js.map +0 -1
  968. package/esm/storage/providers/memory/driver.js.map +0 -1
  969. package/esm/storage/providers/memory/index.js.map +0 -1
  970. package/esm/storage/providers/memory/memory.test.d.ts +0 -1
  971. package/esm/storage/providers/memory/memory.test.js +0 -11
  972. package/esm/storage/providers/memory/memory.test.js.map +0 -1
  973. package/esm/storage/providers/memory/repository/auth-keys.js.map +0 -1
  974. package/esm/storage/providers/memory/repository/kv.js.map +0 -1
  975. package/esm/storage/providers/memory/repository/peers.js.map +0 -1
  976. package/esm/storage/providers/memory/repository/ref-messages.js.map +0 -1
  977. package/esm/storage/service/auth-keys.test.d.ts +0 -1
  978. package/esm/storage/service/auth-keys.test.js +0 -20
  979. package/esm/storage/service/auth-keys.test.js.map +0 -1
  980. package/esm/storage/service/updates.test.d.ts +0 -1
  981. package/esm/storage/service/updates.test.js +0 -58
  982. package/esm/storage/service/updates.test.js.map +0 -1
  983. package/esm/storage/service/utils.test-utils.d.ts +0 -2
  984. package/esm/storage/service/utils.test-utils.js +0 -15
  985. package/esm/storage/service/utils.test-utils.js.map +0 -1
  986. package/esm/utils/async-lock.test.d.ts +0 -1
  987. package/esm/utils/async-lock.test.js +0 -23
  988. package/esm/utils/async-lock.test.js.map +0 -1
  989. package/esm/utils/bigint-utils.test.d.ts +0 -1
  990. package/esm/utils/bigint-utils.test.js +0 -148
  991. package/esm/utils/bigint-utils.test.js.map +0 -1
  992. package/esm/utils/buffer-utils.test.d.ts +0 -1
  993. package/esm/utils/buffer-utils.test.js +0 -67
  994. package/esm/utils/buffer-utils.test.js.map +0 -1
  995. package/esm/utils/condition-variable.test.d.ts +0 -1
  996. package/esm/utils/condition-variable.test.js +0 -25
  997. package/esm/utils/condition-variable.test.js.map +0 -1
  998. package/esm/utils/controllable-promise.test.d.ts +0 -1
  999. package/esm/utils/controllable-promise.test.js +0 -15
  1000. package/esm/utils/controllable-promise.test.js.map +0 -1
  1001. package/esm/utils/crypto/factorization.test.d.ts +0 -1
  1002. package/esm/utils/crypto/factorization.test.js +0 -17
  1003. package/esm/utils/crypto/factorization.test.js.map +0 -1
  1004. package/esm/utils/crypto/keys.test.d.ts +0 -1
  1005. package/esm/utils/crypto/keys.test.js +0 -38
  1006. package/esm/utils/crypto/keys.test.js.map +0 -1
  1007. package/esm/utils/crypto/miller-rabin.test.d.ts +0 -1
  1008. package/esm/utils/crypto/miller-rabin.test.js +0 -58
  1009. package/esm/utils/crypto/miller-rabin.test.js.map +0 -1
  1010. package/esm/utils/crypto/mtproto.test.d.ts +0 -1
  1011. package/esm/utils/crypto/mtproto.test.js +0 -48
  1012. package/esm/utils/crypto/mtproto.test.js.map +0 -1
  1013. package/esm/utils/crypto/node.d.ts +0 -21
  1014. package/esm/utils/crypto/node.js +0 -69
  1015. package/esm/utils/crypto/node.js.map +0 -1
  1016. package/esm/utils/crypto/node.test.d.ts +0 -1
  1017. package/esm/utils/crypto/node.test.js +0 -12
  1018. package/esm/utils/crypto/node.test.js.map +0 -1
  1019. package/esm/utils/crypto/password.test.d.ts +0 -1
  1020. package/esm/utils/crypto/password.test.js +0 -90
  1021. package/esm/utils/crypto/password.test.js.map +0 -1
  1022. package/esm/utils/crypto/utils.test.d.ts +0 -1
  1023. package/esm/utils/crypto/utils.test.js +0 -47
  1024. package/esm/utils/crypto/utils.test.js.map +0 -1
  1025. package/esm/utils/crypto/wasm.d.ts +0 -22
  1026. package/esm/utils/crypto/wasm.js +0 -37
  1027. package/esm/utils/crypto/wasm.js.map +0 -1
  1028. package/esm/utils/crypto/web.d.ts +0 -11
  1029. package/esm/utils/crypto/web.js +0 -36
  1030. package/esm/utils/crypto/web.js.map +0 -1
  1031. package/esm/utils/crypto/web.test.d.ts +0 -1
  1032. package/esm/utils/crypto/web.test.js +0 -15
  1033. package/esm/utils/crypto/web.test.js.map +0 -1
  1034. package/esm/utils/deque.test.d.ts +0 -1
  1035. package/esm/utils/deque.test.js +0 -126
  1036. package/esm/utils/deque.test.js.map +0 -1
  1037. package/esm/utils/function-utils.test.d.ts +0 -1
  1038. package/esm/utils/function-utils.test.js +0 -21
  1039. package/esm/utils/function-utils.test.js.map +0 -1
  1040. package/esm/utils/linked-list.test.d.ts +0 -1
  1041. package/esm/utils/linked-list.test.js +0 -34
  1042. package/esm/utils/linked-list.test.js.map +0 -1
  1043. package/esm/utils/links/bots.test.d.ts +0 -1
  1044. package/esm/utils/links/bots.test.js +0 -150
  1045. package/esm/utils/links/bots.test.js.map +0 -1
  1046. package/esm/utils/links/chat.test.d.ts +0 -1
  1047. package/esm/utils/links/chat.test.js +0 -82
  1048. package/esm/utils/links/chat.test.js.map +0 -1
  1049. package/esm/utils/links/misc.test.d.ts +0 -1
  1050. package/esm/utils/links/misc.test.js +0 -151
  1051. package/esm/utils/links/misc.test.js.map +0 -1
  1052. package/esm/utils/links/proxy.test.d.ts +0 -1
  1053. package/esm/utils/links/proxy.test.js +0 -72
  1054. package/esm/utils/links/proxy.test.js.map +0 -1
  1055. package/esm/utils/links/user.test.d.ts +0 -1
  1056. package/esm/utils/links/user.test.js +0 -61
  1057. package/esm/utils/links/user.test.js.map +0 -1
  1058. package/esm/utils/logger.test.d.ts +0 -1
  1059. package/esm/utils/logger.test.js +0 -134
  1060. package/esm/utils/logger.test.js.map +0 -1
  1061. package/esm/utils/long-utils.test.d.ts +0 -1
  1062. package/esm/utils/long-utils.test.js +0 -153
  1063. package/esm/utils/long-utils.test.js.map +0 -1
  1064. package/esm/utils/lru-map.test.d.ts +0 -1
  1065. package/esm/utils/lru-map.test.js +0 -94
  1066. package/esm/utils/lru-map.test.js.map +0 -1
  1067. package/esm/utils/lru-set.test.d.ts +0 -1
  1068. package/esm/utils/lru-set.test.js +0 -72
  1069. package/esm/utils/lru-set.test.js.map +0 -1
  1070. package/esm/utils/peer-utils.test.d.ts +0 -1
  1071. package/esm/utils/peer-utils.test.js +0 -105
  1072. package/esm/utils/peer-utils.test.js.map +0 -1
  1073. package/esm/utils/platform/crypto.d.ts +0 -1
  1074. package/esm/utils/platform/crypto.js +0 -4
  1075. package/esm/utils/platform/crypto.js.map +0 -1
  1076. package/esm/utils/platform/crypto.web.d.ts +0 -1
  1077. package/esm/utils/platform/crypto.web.js +0 -10
  1078. package/esm/utils/platform/crypto.web.js.map +0 -1
  1079. package/esm/utils/platform/error-reporting.js.map +0 -1
  1080. package/esm/utils/platform/exit-hook.d.ts +0 -1
  1081. package/esm/utils/platform/exit-hook.js +0 -41
  1082. package/esm/utils/platform/exit-hook.js.map +0 -1
  1083. package/esm/utils/platform/exit-hook.web.d.ts +0 -1
  1084. package/esm/utils/platform/exit-hook.web.js +0 -17
  1085. package/esm/utils/platform/exit-hook.web.js.map +0 -1
  1086. package/esm/utils/platform/logging.d.ts +0 -1
  1087. package/esm/utils/platform/logging.js +0 -31
  1088. package/esm/utils/platform/logging.js.map +0 -1
  1089. package/esm/utils/platform/logging.web.d.ts +0 -1
  1090. package/esm/utils/platform/logging.web.js +0 -31
  1091. package/esm/utils/platform/logging.web.js.map +0 -1
  1092. package/esm/utils/platform/transport.d.ts +0 -1
  1093. package/esm/utils/platform/transport.js +0 -4
  1094. package/esm/utils/platform/transport.js.map +0 -1
  1095. package/esm/utils/platform/transport.web.d.ts +0 -1
  1096. package/esm/utils/platform/transport.web.js +0 -12
  1097. package/esm/utils/platform/transport.web.js.map +0 -1
  1098. package/esm/utils/sorted-array.test.d.ts +0 -1
  1099. package/esm/utils/sorted-array.test.js +0 -64
  1100. package/esm/utils/sorted-array.test.js.map +0 -1
  1101. package/esm/utils/tl-json.test.d.ts +0 -1
  1102. package/esm/utils/tl-json.test.js +0 -81
  1103. package/esm/utils/tl-json.test.js.map +0 -1
  1104. package/esm/utils/type-assertions.test.d.ts +0 -1
  1105. package/esm/utils/type-assertions.test.js +0 -65
  1106. package/esm/utils/type-assertions.test.js.map +0 -1
  1107. /package/cjs/highlevel/{base.test.d.ts → methods/files/download-node-stream.d.ts} +0 -0
  1108. /package/cjs/storage/{providers/memory → memory}/driver.js +0 -0
  1109. /package/cjs/storage/{providers/memory → memory}/index.js +0 -0
  1110. /package/cjs/storage/{providers/memory → memory}/repository/auth-keys.js +0 -0
  1111. /package/cjs/storage/{providers/memory → memory}/repository/kv.js +0 -0
  1112. /package/cjs/storage/{providers/memory → memory}/repository/peers.js +0 -0
  1113. /package/cjs/storage/{providers/memory → memory}/repository/ref-messages.js +0 -0
  1114. /package/cjs/utils/{platform/error-reporting.js → error-reporting.js} +0 -0
  1115. /package/{cjs/highlevel/methods/files/_platform.d.ts → esm/highlevel/methods/files/download-node-stream.d.ts} +0 -0
  1116. /package/esm/storage/{providers/memory → memory}/driver.js +0 -0
  1117. /package/esm/storage/{providers/memory → memory}/index.js +0 -0
  1118. /package/esm/storage/{providers/memory → memory}/repository/auth-keys.js +0 -0
  1119. /package/esm/storage/{providers/memory → memory}/repository/kv.js +0 -0
  1120. /package/esm/storage/{providers/memory → memory}/repository/peers.js +0 -0
  1121. /package/esm/storage/{providers/memory → memory}/repository/ref-messages.js +0 -0
  1122. /package/esm/utils/{platform/error-reporting.js → error-reporting.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/port.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { LogManager } from '../../utils/logger.js'\nimport { ITelegramClient } from '../client.types.js'\nimport { PeersIndex } from '../types/peers/peers-index.js'\nimport { RawUpdateHandler } from '../updates/types.js'\nimport { AppConfigManagerProxy } from './app-config.js'\nimport { WorkerInvoker } from './invoker.js'\nimport { connectToWorker } from './platform/connect.js'\nimport { ClientMessageHandler, SomeWorker, WorkerCustomMethods } from './protocol.js'\nimport { TelegramStorageProxy } from './storage.js'\n\nexport interface TelegramWorkerPortOptions {\n worker: SomeWorker\n}\n\nexport class TelegramWorkerPort<Custom extends WorkerCustomMethods> implements ITelegramClient {\n constructor(readonly options: TelegramWorkerPortOptions) {}\n\n readonly log = new LogManager('worker')\n\n private _serverUpdatesHandler: (updates: tl.TypeUpdates) => void = () => {}\n onServerUpdate(handler: (updates: tl.TypeUpdates) => void): void {\n this._serverUpdatesHandler = handler\n }\n\n private _errorHandler: (err: unknown) => void = () => {}\n onError(handler: (err: unknown) => void): void {\n this._errorHandler = handler\n }\n emitError(err: unknown): void {\n this._errorHandler(err)\n }\n\n private _updateHandler: RawUpdateHandler = () => {}\n onUpdate(handler: RawUpdateHandler): void {\n this._updateHandler = handler\n }\n\n private _onMessage: ClientMessageHandler = (message) => {\n switch (message.type) {\n case 'log':\n this.log.handler(message.color, message.level, message.tag, message.fmt, message.args)\n break\n case 'server_update':\n this._serverUpdatesHandler(message.update)\n break\n case 'update': {\n const peers = new PeersIndex(message.users, message.chats)\n peers.hasMin = message.hasMin\n this._updateHandler(message.update, peers)\n break\n }\n case 'result':\n this._invoker.handleResult(message)\n break\n case 'error':\n this.emitError(message.error)\n break\n }\n }\n\n private _connection = connectToWorker(this.options.worker, this._onMessage)\n private _invoker = new WorkerInvoker(this._connection[0])\n private _bind = this._invoker.makeBinder<ITelegramClient>('client')\n\n readonly storage = new TelegramStorageProxy(this._invoker)\n readonly appConfig = new AppConfigManagerProxy(this._invoker)\n\n private _destroyed = false\n destroy(terminate = false): void {\n if (this._destroyed) return\n this._connection[1]()\n this._destroyed = true\n\n if (terminate && 'terminate' in this.options.worker) {\n Promise.resolve(this.options.worker.terminate()).catch(() => {})\n }\n }\n\n invokeCustom<T extends keyof Custom>(method: T, ...args: Parameters<Custom[T]>): Promise<ReturnType<Custom[T]>> {\n return this._invoker.invoke('custom', method as string, args) as Promise<ReturnType<Custom[T]>>\n }\n\n readonly prepare = this._bind('prepare')\n private _connect = this._bind('connect')\n async connect(): Promise<void> {\n await this._connect()\n await this.storage.self.fetch() // force cache self locally\n }\n readonly close = this._bind('close')\n readonly notifyLoggedIn = this._bind('notifyLoggedIn')\n readonly notifyLoggedOut = this._bind('notifyLoggedOut')\n readonly notifyChannelOpened = this._bind('notifyChannelOpened')\n readonly notifyChannelClosed = this._bind('notifyChannelClosed')\n readonly call = this._bind('call')\n readonly importSession = this._bind('importSession')\n readonly exportSession = this._bind('exportSession')\n readonly handleClientUpdate = this._bind('handleClientUpdate', true)\n readonly getApiCrenetials = this._bind('getApiCrenetials')\n readonly getPoolSize = this._bind('getPoolSize')\n readonly getPrimaryDcId = this._bind('getPrimaryDcId')\n readonly computeSrpParams = this._bind('computeSrpParams')\n readonly computeNewPasswordHash = this._bind('computeNewPasswordHash')\n readonly startUpdatesLoop = this._bind('startUpdatesLoop')\n readonly stopUpdatesLoop = this._bind('stopUpdatesLoop')\n}\n"]}
1
+ {"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/port.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { LogManager } from '../../utils/logger.js'\nimport { ConnectionState, ITelegramClient } from '../client.types.js'\nimport { PeersIndex } from '../types/peers/peers-index.js'\nimport { RawUpdateHandler } from '../updates/types.js'\nimport { AppConfigManagerProxy } from './app-config.js'\nimport { WorkerInvoker } from './invoker.js'\nimport { ClientMessageHandler, SendFn, SomeWorker, WorkerCustomMethods } from './protocol.js'\nimport { TelegramStorageProxy } from './storage.js'\n\nexport interface TelegramWorkerPortOptions {\n worker: SomeWorker\n}\n\nexport abstract class TelegramWorkerPort<Custom extends WorkerCustomMethods> implements ITelegramClient {\n constructor(readonly options: TelegramWorkerPortOptions) {}\n\n abstract connectToWorker(worker: SomeWorker, handler: ClientMessageHandler): [SendFn, () => void]\n\n readonly log = new LogManager('worker')\n\n private _serverUpdatesHandler: (updates: tl.TypeUpdates) => void = () => {}\n onServerUpdate(handler: (updates: tl.TypeUpdates) => void): void {\n this._serverUpdatesHandler = handler\n }\n\n private _errorHandler: (err: unknown) => void = () => {}\n onError(handler: (err: unknown) => void): void {\n this._errorHandler = handler\n }\n emitError(err: unknown): void {\n this._errorHandler(err)\n }\n\n private _updateHandler: RawUpdateHandler = () => {}\n onUpdate(handler: RawUpdateHandler): void {\n this._updateHandler = handler\n }\n\n private _connectionStateHandler: (state: ConnectionState) => void = () => {}\n onConnectionState(handler: (state: ConnectionState) => void): void {\n this._connectionStateHandler = handler\n }\n\n private _onMessage: ClientMessageHandler = (message) => {\n switch (message.type) {\n case 'log':\n this.log.handler(message.color, message.level, message.tag, message.fmt, message.args)\n break\n case 'server_update':\n this._serverUpdatesHandler(message.update)\n break\n case 'conn_state':\n this._connectionStateHandler(message.state)\n break\n case 'update': {\n const peers = new PeersIndex(message.users, message.chats)\n peers.hasMin = message.hasMin\n this._updateHandler(message.update, peers)\n break\n }\n case 'result':\n this._invoker.handleResult(message)\n break\n case 'error':\n this.emitError(message.error)\n break\n }\n }\n\n private _connection = this.connectToWorker(this.options.worker, this._onMessage)\n private _invoker = new WorkerInvoker(this._connection[0])\n private _bind = this._invoker.makeBinder<ITelegramClient>('client')\n\n readonly storage = new TelegramStorageProxy(this._invoker)\n readonly appConfig = new AppConfigManagerProxy(this._invoker)\n\n private _destroyed = false\n destroy(terminate = false): void {\n if (this._destroyed) return\n this._connection[1]()\n this._destroyed = true\n\n if (terminate && 'terminate' in this.options.worker) {\n Promise.resolve(this.options.worker.terminate()).catch(() => {})\n }\n }\n\n invokeCustom<T extends keyof Custom>(method: T, ...args: Parameters<Custom[T]>): Promise<ReturnType<Custom[T]>> {\n return this._invoker.invoke('custom', method as string, args) as Promise<ReturnType<Custom[T]>>\n }\n\n readonly prepare = this._bind('prepare')\n private _connect = this._bind('connect')\n async connect(): Promise<void> {\n await this._connect()\n await this.storage.self.fetch() // force cache self locally\n }\n readonly close = this._bind('close')\n readonly notifyLoggedIn = this._bind('notifyLoggedIn')\n readonly notifyLoggedOut = this._bind('notifyLoggedOut')\n readonly notifyChannelOpened = this._bind('notifyChannelOpened')\n readonly notifyChannelClosed = this._bind('notifyChannelClosed')\n readonly call = this._bind('call')\n readonly importSession = this._bind('importSession')\n readonly exportSession = this._bind('exportSession')\n readonly handleClientUpdate = this._bind('handleClientUpdate', true)\n readonly getApiCrenetials = this._bind('getApiCrenetials')\n readonly getPoolSize = this._bind('getPoolSize')\n readonly getPrimaryDcId = this._bind('getPrimaryDcId')\n readonly computeSrpParams = this._bind('computeSrpParams')\n readonly computeNewPasswordHash = this._bind('computeNewPasswordHash')\n readonly startUpdatesLoop = this._bind('startUpdatesLoop')\n readonly stopUpdatesLoop = this._bind('stopUpdatesLoop')\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import type { Worker as NodeWorker } from 'worker_threads';
3
3
  import { tl } from '@mtcute/tl';
4
+ import { ConnectionState } from '../client.types.js';
4
5
  import { SerializedError } from './errors.js';
5
6
  export type WorkerInboundMessage = {
6
7
  type: 'invoke';
@@ -22,6 +23,9 @@ export type WorkerOutboundMessage = {
22
23
  } | {
23
24
  type: 'error';
24
25
  error: unknown;
26
+ } | {
27
+ type: 'conn_state';
28
+ state: ConnectionState;
25
29
  } | {
26
30
  type: 'log';
27
31
  color: number;
@@ -40,4 +44,4 @@ export type SendFn = (message: WorkerInboundMessage) => void;
40
44
  export type ClientMessageHandler = (message: WorkerOutboundMessage) => void;
41
45
  export type RespondFn = (message: WorkerOutboundMessage) => void;
42
46
  export type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void;
43
- export type WorkerCustomMethods = Record<string, (...args: unknown[]) => Promise<unknown>>;
47
+ export type WorkerCustomMethods = Record<string, (...args: any[]) => Promise<any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/protocol.ts"],"names":[],"mappings":"","sourcesContent":["import type { Worker as NodeWorker } from 'worker_threads'\n\nimport { tl } from '@mtcute/tl'\n\nimport { SerializedError } from './errors.js'\n\nexport type WorkerInboundMessage = {\n type: 'invoke'\n id: number\n target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config'\n method: string\n args: unknown[]\n void: boolean\n}\n\nexport type WorkerOutboundMessage =\n | { type: 'server_update'; update: tl.TypeUpdates }\n | {\n type: 'update'\n update: tl.TypeUpdate\n users: Map<number, tl.TypeUser>\n chats: Map<number, tl.TypeChat>\n hasMin: boolean\n }\n | { type: 'error'; error: unknown }\n | {\n type: 'log'\n color: number\n level: number\n tag: string\n fmt: string\n args: unknown[]\n }\n | {\n type: 'result'\n id: number\n result?: unknown\n error?: SerializedError\n }\n\nexport type SomeWorker = NodeWorker | Worker | SharedWorker\n\nexport type SendFn = (message: WorkerInboundMessage) => void\nexport type ClientMessageHandler = (message: WorkerOutboundMessage) => void\n\nexport type RespondFn = (message: WorkerOutboundMessage) => void\nexport type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void\n\nexport type WorkerCustomMethods = Record<string, (...args: unknown[]) => Promise<unknown>>\n"]}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/protocol.ts"],"names":[],"mappings":"","sourcesContent":["import type { Worker as NodeWorker } from 'worker_threads'\n\nimport { tl } from '@mtcute/tl'\n\nimport { ConnectionState } from '../client.types.js'\nimport { SerializedError } from './errors.js'\n\nexport type WorkerInboundMessage = {\n type: 'invoke'\n id: number\n target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config'\n method: string\n args: unknown[]\n void: boolean\n}\n\nexport type WorkerOutboundMessage =\n | { type: 'server_update'; update: tl.TypeUpdates }\n | {\n type: 'update'\n update: tl.TypeUpdate\n users: Map<number, tl.TypeUser>\n chats: Map<number, tl.TypeChat>\n hasMin: boolean\n }\n | { type: 'error'; error: unknown }\n | { type: 'conn_state'; state: ConnectionState }\n | {\n type: 'log'\n color: number\n level: number\n tag: string\n fmt: string\n args: unknown[]\n }\n | {\n type: 'result'\n id: number\n result?: unknown\n error?: SerializedError\n }\n\nexport type SomeWorker = NodeWorker | Worker | SharedWorker\n\nexport type SendFn = (message: WorkerInboundMessage) => void\nexport type ClientMessageHandler = (message: WorkerOutboundMessage) => void\n\nexport type RespondFn = (message: WorkerOutboundMessage) => void\nexport type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type WorkerCustomMethods = Record<string, (...args: any[]) => Promise<any>>\n"]}
@@ -1,7 +1,14 @@
1
- import { BaseTelegramClient, BaseTelegramClientOptions } from '../base.js';
2
- import { WorkerCustomMethods } from './protocol.js';
1
+ import { BaseTelegramClient } from '../base.js';
2
+ import { RespondFn, WorkerCustomMethods, WorkerMessageHandler } from './protocol.js';
3
3
  export interface TelegramWorkerOptions<T extends WorkerCustomMethods> {
4
- client: BaseTelegramClient | BaseTelegramClientOptions;
4
+ client: BaseTelegramClient;
5
5
  customMethods?: T;
6
6
  }
7
- export declare function makeTelegramWorker<T extends WorkerCustomMethods>(params: TelegramWorkerOptions<T>): void;
7
+ export declare abstract class TelegramWorker<T extends WorkerCustomMethods> {
8
+ readonly params: TelegramWorkerOptions<T>;
9
+ readonly client: BaseTelegramClient;
10
+ readonly broadcast: RespondFn;
11
+ abstract registerWorker(handler: WorkerMessageHandler): RespondFn;
12
+ constructor(params: TelegramWorkerOptions<T>);
13
+ private onInvoke;
14
+ }
@@ -1,30 +1,69 @@
1
- import { BaseTelegramClient } from '../base.js';
2
1
  import { serializeError } from './errors.js';
3
- import { registerWorker } from './platform/register.js';
4
- export function makeTelegramWorker(params) {
5
- const { client: client_, customMethods } = params;
6
- const client = client_ instanceof BaseTelegramClient ? client_ : new BaseTelegramClient(client_);
7
- const onInvoke = (msg, respond) => {
2
+ export class TelegramWorker {
3
+ constructor(params) {
4
+ this.params = params;
5
+ this.broadcast = this.registerWorker((message, respond) => {
6
+ switch (message.type) {
7
+ case 'invoke':
8
+ this.onInvoke(message, respond);
9
+ break;
10
+ }
11
+ });
12
+ const client = params.client;
13
+ this.client = client;
14
+ client.log.mgr.handler = (color, level, tag, fmt, args) => this.broadcast({
15
+ type: 'log',
16
+ color,
17
+ level,
18
+ tag,
19
+ fmt,
20
+ args,
21
+ });
22
+ client.onError((err) => this.broadcast({
23
+ type: 'error',
24
+ error: err,
25
+ }));
26
+ client.onConnectionState((state) => this.broadcast({
27
+ type: 'conn_state',
28
+ state,
29
+ }));
30
+ if (client.updates) {
31
+ client.onUpdate((update, peers) => this.broadcast({
32
+ type: 'update',
33
+ update,
34
+ users: peers.users,
35
+ chats: peers.chats,
36
+ hasMin: peers.hasMin,
37
+ }));
38
+ }
39
+ else {
40
+ client.onServerUpdate((update) => this.broadcast({
41
+ type: 'server_update',
42
+ update,
43
+ }));
44
+ }
45
+ }
46
+ onInvoke(msg, respond) {
8
47
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
48
  let target;
10
49
  switch (msg.target) {
11
50
  case 'custom':
12
- target = customMethods;
51
+ target = this.params.customMethods;
13
52
  break;
14
53
  case 'client':
15
- target = client;
54
+ target = this.client;
16
55
  break;
17
56
  case 'storage':
18
- target = client.storage;
57
+ target = this.client.storage;
19
58
  break;
20
59
  case 'storage-self':
21
- target = client.storage.self;
60
+ target = this.client.storage.self;
22
61
  break;
23
62
  case 'storage-peers':
24
- target = client.storage.peers;
63
+ target = this.client.storage.peers;
25
64
  break;
26
65
  case 'app-config':
27
- target = client.appConfig;
66
+ target = this.client.appConfig;
28
67
  break;
29
68
  default: {
30
69
  respond({
@@ -63,41 +102,6 @@ export function makeTelegramWorker(params) {
63
102
  error: serializeError(err),
64
103
  });
65
104
  });
66
- };
67
- const onMessage = (message, respond) => {
68
- switch (message.type) {
69
- case 'invoke':
70
- onInvoke(message, respond);
71
- break;
72
- }
73
- };
74
- const broadcast = registerWorker(onMessage);
75
- client.log.mgr.handler = (color, level, tag, fmt, args) => broadcast({
76
- type: 'log',
77
- color,
78
- level,
79
- tag,
80
- fmt,
81
- args,
82
- });
83
- client.onError((err) => broadcast({
84
- type: 'error',
85
- error: err,
86
- }));
87
- if (client.updates) {
88
- client.onUpdate((update, peers) => broadcast({
89
- type: 'update',
90
- update,
91
- users: peers.users,
92
- chats: peers.chats,
93
- hasMin: peers.hasMin,
94
- }));
95
- }
96
- else {
97
- client.onServerUpdate((update) => broadcast({
98
- type: 'server_update',
99
- update,
100
- }));
101
105
  }
102
106
  }
103
107
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTelegramClient, BaseTelegramClientOptions } from '../base.js'\nimport { serializeError } from './errors.js'\nimport { registerWorker } from './platform/register.js'\nimport { RespondFn, WorkerCustomMethods, WorkerInboundMessage, WorkerMessageHandler } from './protocol.js'\n\nexport interface TelegramWorkerOptions<T extends WorkerCustomMethods> {\n client: BaseTelegramClient | BaseTelegramClientOptions\n customMethods?: T\n}\n\nexport function makeTelegramWorker<T extends WorkerCustomMethods>(params: TelegramWorkerOptions<T>) {\n const { client: client_, customMethods } = params\n\n const client = client_ instanceof BaseTelegramClient ? client_ : new BaseTelegramClient(client_)\n\n const onInvoke = (msg: Extract<WorkerInboundMessage, { type: 'invoke' }>, respond: RespondFn) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let target: any\n\n switch (msg.target) {\n case 'custom':\n target = customMethods\n break\n case 'client':\n target = client\n break\n case 'storage':\n target = client.storage\n break\n case 'storage-self':\n target = client.storage.self\n break\n case 'storage-peers':\n target = client.storage.peers\n break\n case 'app-config':\n target = client.appConfig\n break\n\n default: {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Unknown target ${msg.target}`),\n })\n\n return\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const method = target[msg.method]\n\n if (!method) {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Method ${msg.method} not found on ${msg.target}`),\n })\n\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n Promise.resolve(method.apply(target, msg.args))\n .then((res) => {\n if (msg.void) return\n\n respond({\n type: 'result',\n id: msg.id,\n result: res,\n })\n })\n .catch((err) => {\n respond({\n type: 'result',\n id: msg.id,\n error: serializeError(err),\n })\n })\n }\n\n const onMessage: WorkerMessageHandler = (message, respond) => {\n switch (message.type) {\n case 'invoke':\n onInvoke(message, respond)\n break\n }\n }\n\n const broadcast = registerWorker(onMessage)\n\n client.log.mgr.handler = (color, level, tag, fmt, args) =>\n broadcast({\n type: 'log',\n color,\n level,\n tag,\n fmt,\n args,\n })\n client.onError((err) =>\n broadcast({\n type: 'error',\n error: err,\n }),\n )\n\n if (client.updates) {\n client.onUpdate((update, peers) =>\n broadcast({\n type: 'update',\n update,\n users: peers.users,\n chats: peers.chats,\n hasMin: peers.hasMin,\n }),\n )\n } else {\n client.onServerUpdate((update) =>\n broadcast({\n type: 'server_update',\n update,\n }),\n )\n }\n}\n"]}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTelegramClient } from '../base.js'\nimport { serializeError } from './errors.js'\nimport { RespondFn, WorkerCustomMethods, WorkerInboundMessage, WorkerMessageHandler } from './protocol.js'\n\nexport interface TelegramWorkerOptions<T extends WorkerCustomMethods> {\n client: BaseTelegramClient\n customMethods?: T\n}\n\nexport abstract class TelegramWorker<T extends WorkerCustomMethods> {\n readonly client: BaseTelegramClient\n readonly broadcast: RespondFn\n\n abstract registerWorker(handler: WorkerMessageHandler): RespondFn\n\n constructor(readonly params: TelegramWorkerOptions<T>) {\n this.broadcast = this.registerWorker((message, respond) => {\n switch (message.type) {\n case 'invoke':\n this.onInvoke(message, respond)\n break\n }\n })\n\n const client = params.client\n this.client = client\n\n client.log.mgr.handler = (color, level, tag, fmt, args) =>\n this.broadcast({\n type: 'log',\n color,\n level,\n tag,\n fmt,\n args,\n })\n client.onError((err) =>\n this.broadcast({\n type: 'error',\n error: err,\n }),\n )\n client.onConnectionState((state) =>\n this.broadcast({\n type: 'conn_state',\n state,\n }),\n )\n\n if (client.updates) {\n client.onUpdate((update, peers) =>\n this.broadcast({\n type: 'update',\n update,\n users: peers.users,\n chats: peers.chats,\n hasMin: peers.hasMin,\n }),\n )\n } else {\n client.onServerUpdate((update) =>\n this.broadcast({\n type: 'server_update',\n update,\n }),\n )\n }\n }\n\n private onInvoke(msg: Extract<WorkerInboundMessage, { type: 'invoke' }>, respond: RespondFn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let target: any\n\n switch (msg.target) {\n case 'custom':\n target = this.params.customMethods\n break\n case 'client':\n target = this.client\n break\n case 'storage':\n target = this.client.storage\n break\n case 'storage-self':\n target = this.client.storage.self\n break\n case 'storage-peers':\n target = this.client.storage.peers\n break\n case 'app-config':\n target = this.client.appConfig\n break\n\n default: {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Unknown target ${msg.target}`),\n })\n\n return\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const method = target[msg.method]\n\n if (!method) {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Method ${msg.method} not found on ${msg.target}`),\n })\n\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n Promise.resolve(method.apply(target, msg.args))\n .then((res) => {\n if (msg.void) return\n\n respond({\n type: 'result',\n id: msg.id,\n result: res,\n })\n })\n .catch((err) => {\n respond({\n type: 'result',\n id: msg.id,\n error: serializeError(err),\n })\n })\n }\n}\n"]}
@@ -5,7 +5,7 @@ import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime';
5
5
  import { IMtStorageProvider } from '../storage/provider.js';
6
6
  import { StorageManager, StorageManagerExtraOptions } from '../storage/storage.js';
7
7
  import { MustEqual } from '../types/index.js';
8
- import { CryptoProviderFactory, DcOptions, ICryptoProvider, Logger } from '../utils/index.js';
8
+ import { DcOptions, ICryptoProvider, Logger } from '../utils/index.js';
9
9
  import { ConfigManager } from './config-manager.js';
10
10
  import { NetworkManager, NetworkManagerExtraParams, RpcCallOptions } from './network-manager.js';
11
11
  import { PersistentConnectionParams } from './persistent-connection.js';
@@ -29,10 +29,10 @@ export interface MtClientOptions {
29
29
  /** Additional options for the storage manager */
30
30
  storageOptions?: StorageManagerExtraOptions;
31
31
  /**
32
- * Cryptography provider factory to allow delegating
32
+ * Cryptography provider to allow delegating
33
33
  * crypto to native addon, worker, etc.
34
34
  */
35
- crypto?: CryptoProviderFactory;
35
+ crypto: ICryptoProvider;
36
36
  /**
37
37
  * Whether to use IPv6 datacenters
38
38
  * (IPv6 will be preferred when choosing a DC by id)
@@ -71,7 +71,7 @@ export interface MtClientOptions {
71
71
  *
72
72
  * @default platform-specific transport: WebSocket on the web, TCP in node
73
73
  */
74
- transport?: TransportFactory;
74
+ transport: TransportFactory;
75
75
  /**
76
76
  * Reconnection strategy.
77
77
  *
@@ -4,7 +4,7 @@ import { tl } from '@mtcute/tl';
4
4
  import { __tlReaderMap as defaultReaderMap } from '@mtcute/tl/binary/reader.js';
5
5
  import { __tlWriterMap as defaultWriterMap } from '@mtcute/tl/binary/writer.js';
6
6
  import { StorageManager } from '../storage/storage.js';
7
- import { asyncResettable, defaultCryptoProviderFactory, defaultProductionDc, defaultProductionIpv6Dc, defaultTestDc, defaultTestIpv6Dc, LogManager, } from '../utils/index.js';
7
+ import { asyncResettable, defaultProductionDc, defaultProductionIpv6Dc, defaultTestDc, defaultTestIpv6Dc, LogManager, } from '../utils/index.js';
8
8
  import { ConfigManager } from './config-manager.js';
9
9
  import { NetworkManager } from './network-manager.js';
10
10
  /**
@@ -33,7 +33,7 @@ export class MtClient extends EventEmitter {
33
33
  if (params.logLevel !== undefined) {
34
34
  this.log.mgr.level = params.logLevel;
35
35
  }
36
- this.crypto = (params.crypto ?? defaultCryptoProviderFactory)();
36
+ this.crypto = params.crypto;
37
37
  this._testMode = Boolean(params.testMode);
38
38
  let dc = params.defaultDcs;
39
39
  if (!dc) {
@@ -76,6 +76,8 @@ export class MtClient extends EventEmitter {
76
76
  useIpv6: Boolean(params.useIpv6),
77
77
  enableErrorReporting: params.enableErrorReporting ?? false,
78
78
  onUsable: () => this.emit('usable'),
79
+ onConnecting: () => this.emit('connecting'),
80
+ onNetworkChanged: (connected) => this.emit('networkChanged', connected),
79
81
  onUpdate: (upd) => this.emit('update', upd),
80
82
  ...params.network,
81
83
  }, this._config);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/network/client.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport EventEmitter from 'events'\n\nimport { tl } from '@mtcute/tl'\nimport { __tlReaderMap as defaultReaderMap } from '@mtcute/tl/binary/reader.js'\nimport { __tlWriterMap as defaultWriterMap } from '@mtcute/tl/binary/writer.js'\nimport { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime'\n\nimport { IMtStorageProvider } from '../storage/provider.js'\nimport { StorageManager, StorageManagerExtraOptions } from '../storage/storage.js'\nimport { MustEqual } from '../types/index.js'\nimport {\n asyncResettable,\n CryptoProviderFactory,\n DcOptions,\n defaultCryptoProviderFactory,\n defaultProductionDc,\n defaultProductionIpv6Dc,\n defaultTestDc,\n defaultTestIpv6Dc,\n ICryptoProvider,\n Logger,\n LogManager,\n} from '../utils/index.js'\nimport { ConfigManager } from './config-manager.js'\nimport { NetworkManager, NetworkManagerExtraParams, RpcCallOptions } from './network-manager.js'\nimport { PersistentConnectionParams } from './persistent-connection.js'\nimport { ReconnectionStrategy } from './reconnection.js'\nimport { SessionConnection } from './session-connection.js'\nimport { TransportFactory } from './transports/index.js'\n\n/** Options for {@link MtClient} */\nexport interface MtClientOptions {\n /**\n * API ID from my.telegram.org\n */\n apiId: number\n /**\n * API hash from my.telegram.org\n */\n apiHash: string\n\n /**\n * Storage to use for this client.\n */\n storage: IMtStorageProvider\n\n /** Additional options for the storage manager */\n storageOptions?: StorageManagerExtraOptions\n\n /**\n * Cryptography provider factory to allow delegating\n * crypto to native addon, worker, etc.\n */\n crypto?: CryptoProviderFactory\n\n /**\n * Whether to use IPv6 datacenters\n * (IPv6 will be preferred when choosing a DC by id)\n * (default: false)\n */\n useIpv6?: boolean\n\n /**\n * Primary DC to use for initial connection.\n * This does not mean this will be the only DC used,\n * nor that this DC will actually be primary, this only\n * determines the first DC the library will try to connect to.\n * Can be used to connect to other networks (like test DCs).\n *\n * When session already contains primary DC, this parameter is ignored.\n *\n * @default Production DC 2.\n */\n defaultDcs?: DcOptions\n\n /**\n * Whether to connect to test servers.\n *\n * If passed, {@link defaultDc} defaults to Test DC 2.\n *\n * **Must** be passed if using test servers, even if\n * you passed custom {@link defaultDc}\n */\n testMode?: boolean\n\n /**\n * Additional options for initConnection call.\n * `apiId` and `query` are not available and will be ignored.\n * Omitted values will be filled with defaults\n */\n initConnectionOptions?: Partial<Omit<tl.RawInitConnectionRequest, 'apiId' | 'query'>>\n\n /**\n * Transport factory to use in the client.\n *\n * @default platform-specific transport: WebSocket on the web, TCP in node\n */\n transport?: TransportFactory\n\n /**\n * Reconnection strategy.\n *\n * @default simple reconnection strategy: first 0ms, then up to 5s (increasing by 1s)\n */\n reconnectionStrategy?: ReconnectionStrategy<PersistentConnectionParams>\n\n /**\n * Maximum duration of a flood_wait that will be waited automatically.\n * Flood waits above this threshold will throw a FloodWaitError.\n * Set to 0 to disable. Can be overridden with `throwFlood` parameter in call() params\n *\n * @default 10000\n */\n floodSleepThreshold?: number\n\n /**\n * Maximum number of retries when calling RPC methods.\n * Call is retried when InternalError or FloodWaitError is encountered.\n * Can be set to Infinity.\n *\n * @default 5\n */\n maxRetryCount?: number\n\n /**\n * If true, every single API call will be wrapped with `tl.invokeWithoutUpdates`,\n * effectively disabling the server-sent events for the clients.\n * May be useful in some cases.\n *\n * Note that this only wraps calls made with `.call()` within the primary\n * connection. Additional connections and direct `.sendForResult()` calls\n * must be wrapped manually.\n *\n * @default false\n */\n disableUpdates?: boolean\n\n /**\n * mtcute can send all unknown RPC errors to [danog](https://github.com/danog)'s\n * [error reporting service](https://rpc.pwrtelegram.xyz/).\n *\n * This is fully anonymous (except maybe IP) and is only used to improve the library\n * and developer experience for everyone working with MTProto. This is fully opt-in,\n * and if you're too paranoid, you can disable it by manually passing `enableErrorReporting: false` to the client.\n *\n * @default false\n */\n enableErrorReporting?: boolean\n\n /**\n * If true, RPC errors will have a stack trace of the initial `.call()`\n * or `.sendForResult()` call position, which drastically improves\n * debugging experience.<br>\n * If false, they will have a stack trace of mtcute internals.\n *\n * Internally this creates a stack capture before every RPC call\n * and stores it until the result is received. This might\n * use a lot more memory than normal, thus can be disabled here.\n *\n * @default true\n */\n niceStacks?: boolean\n\n /**\n * Extra parameters for {@link NetworkManager}\n */\n network?: NetworkManagerExtraParams\n\n /**\n * Logger instance for the client.\n * If not passed, a new one will be created.\n */\n logger?: Logger\n\n /**\n * Set logging level for the client.\n * Shorthand for `client.log.level = level`.\n *\n * See static members of {@link LogManager} for possible values.\n */\n logLevel?: number\n\n /**\n * **EXPERT USE ONLY!**\n *\n * Override TL layer used for the connection.\n *\n * **Does not** change the schema used.\n */\n overrideLayer?: number\n\n /**\n * **EXPERT USE ONLY**\n *\n * Override reader map used for the connection.\n */\n readerMap?: TlReaderMap\n\n /**\n * **EXPERT USE ONLY**\n *\n * Override writer map used for the connection.\n */\n writerMap?: TlWriterMap\n}\n\n/**\n * Basic MTProto client implementation, only doing the bare minimum\n * to make RPC calls and receive low-level updates, as well as providing\n * some APIs to manage that.\n */\nexport class MtClient extends EventEmitter {\n /**\n * Crypto provider taken from {@link MtClientOptions.crypto}\n */\n readonly crypto: ICryptoProvider\n\n /** Storage manager */\n readonly storage: StorageManager\n\n /**\n * \"Test mode\" taken from {@link MtClientOptions.testMode}\n */\n protected readonly _testMode: boolean\n\n /**\n * Primary DCs taken from {@link MtClientOptions.defaultDcs},\n * loaded from session or changed by other means (like redirecting).\n */\n _defaultDcs: DcOptions\n\n private _niceStacks: boolean\n /** TL layer used by the client */\n readonly _layer: number\n /** TL readers map used by the client */\n readonly _readerMap: TlReaderMap\n /** TL writers map used by the client */\n readonly _writerMap: TlWriterMap\n\n readonly _config = new ConfigManager(() => this.call({ _: 'help.getConfig' }))\n\n emitError: (err: unknown, connection?: SessionConnection) => void = console.error.bind(console)\n\n readonly log: Logger\n readonly network: NetworkManager\n\n constructor(readonly params: MtClientOptions) {\n super()\n\n this.log = params.logger ?? new LogManager()\n\n if (params.logLevel !== undefined) {\n this.log.mgr.level = params.logLevel\n }\n\n this.crypto = (params.crypto ?? defaultCryptoProviderFactory)()\n this._testMode = Boolean(params.testMode)\n\n let dc = params.defaultDcs\n\n if (!dc) {\n if (params.testMode) {\n dc = params.useIpv6 ? defaultTestIpv6Dc : defaultTestDc\n } else {\n dc = params.useIpv6 ? defaultProductionIpv6Dc : defaultProductionDc\n }\n }\n\n this._defaultDcs = dc\n this._niceStacks = params.niceStacks ?? true\n\n this._layer = params.overrideLayer ?? tl.LAYER\n this._readerMap = params.readerMap ?? defaultReaderMap\n this._writerMap = params.writerMap ?? defaultWriterMap\n\n this.storage = new StorageManager({\n provider: params.storage,\n log: this.log,\n readerMap: this._readerMap,\n writerMap: this._writerMap,\n ...params.storageOptions,\n })\n\n this.network = new NetworkManager(\n {\n apiId: params.apiId,\n crypto: this.crypto,\n disableUpdates: params.disableUpdates ?? false,\n initConnectionOptions: params.initConnectionOptions,\n layer: this._layer,\n log: this.log,\n readerMap: this._readerMap,\n writerMap: this._writerMap,\n reconnectionStrategy: params.reconnectionStrategy,\n storage: this.storage,\n testMode: Boolean(params.testMode),\n transport: params.transport,\n emitError: this.emitError.bind(this),\n floodSleepThreshold: params.floodSleepThreshold ?? 10000,\n maxRetryCount: params.maxRetryCount ?? 5,\n isPremium: false,\n useIpv6: Boolean(params.useIpv6),\n enableErrorReporting: params.enableErrorReporting ?? false,\n onUsable: () => this.emit('usable'),\n onUpdate: (upd) => this.emit('update', upd),\n ...params.network,\n },\n this._config,\n )\n }\n\n private _prepare = asyncResettable(async () => {\n await this.crypto.initialize?.()\n await this.storage.load()\n\n const primaryDc = await this.storage.dcs.fetch()\n if (primaryDc !== null) this._defaultDcs = primaryDc\n })\n\n /**\n * **ADVANCED**\n *\n * Do all the preparations, but don't connect just yet.\n * Useful when you want to do some preparations before\n * connecting, like setting up session.\n *\n * Call {@link connect} to actually connect.\n */\n prepare() {\n return this._prepare.run()\n }\n\n private _connect = asyncResettable(async () => {\n await this._prepare.run()\n await this.network.connect(this._defaultDcs)\n })\n\n /**\n * Initialize the connection to the primary DC.\n *\n * You shouldn't usually call this method directly as it is called\n * implicitly the first time you call {@link call}.\n */\n async connect(): Promise<void> {\n return this._connect.run()\n }\n\n /**\n * Close all connections and finalize the client.\n */\n async close(): Promise<void> {\n this._config.destroy()\n this.network.destroy()\n\n await this.storage.save()\n await this.storage.destroy?.()\n\n this._prepare.reset()\n this._connect.reset()\n }\n\n /**\n * Make an RPC call.\n *\n * The connection must have been {@link connect}-ed\n * before calling this method.\n *\n * This method is still quite low-level and you shouldn't use this\n * when using high-level API provided by `@mtcute/client`.\n *\n * @param message RPC method to call\n * @param params Additional call parameters\n */\n async call<T extends tl.RpcMethod>(\n message: MustEqual<T, tl.RpcMethod>,\n params?: RpcCallOptions,\n ): Promise<tl.RpcCallReturn[T['_']]> {\n const stack = this._niceStacks ? new Error().stack : undefined\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.network.call(message, params, stack)\n }\n\n /**\n * Register an error handler for the client\n *\n * @param handler Error handler.\n */\n onError(handler: (err: unknown) => void): void {\n this.emitError = handler\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/network/client.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport EventEmitter from 'events'\n\nimport { tl } from '@mtcute/tl'\nimport { __tlReaderMap as defaultReaderMap } from '@mtcute/tl/binary/reader.js'\nimport { __tlWriterMap as defaultWriterMap } from '@mtcute/tl/binary/writer.js'\nimport { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime'\n\nimport { IMtStorageProvider } from '../storage/provider.js'\nimport { StorageManager, StorageManagerExtraOptions } from '../storage/storage.js'\nimport { MustEqual } from '../types/index.js'\nimport {\n asyncResettable,\n DcOptions,\n defaultProductionDc,\n defaultProductionIpv6Dc,\n defaultTestDc,\n defaultTestIpv6Dc,\n ICryptoProvider,\n Logger,\n LogManager,\n} from '../utils/index.js'\nimport { ConfigManager } from './config-manager.js'\nimport { NetworkManager, NetworkManagerExtraParams, RpcCallOptions } from './network-manager.js'\nimport { PersistentConnectionParams } from './persistent-connection.js'\nimport { ReconnectionStrategy } from './reconnection.js'\nimport { SessionConnection } from './session-connection.js'\nimport { TransportFactory } from './transports/index.js'\n\n/** Options for {@link MtClient} */\nexport interface MtClientOptions {\n /**\n * API ID from my.telegram.org\n */\n apiId: number\n /**\n * API hash from my.telegram.org\n */\n apiHash: string\n\n /**\n * Storage to use for this client.\n */\n storage: IMtStorageProvider\n\n /** Additional options for the storage manager */\n storageOptions?: StorageManagerExtraOptions\n\n /**\n * Cryptography provider to allow delegating\n * crypto to native addon, worker, etc.\n */\n crypto: ICryptoProvider\n\n /**\n * Whether to use IPv6 datacenters\n * (IPv6 will be preferred when choosing a DC by id)\n * (default: false)\n */\n useIpv6?: boolean\n\n /**\n * Primary DC to use for initial connection.\n * This does not mean this will be the only DC used,\n * nor that this DC will actually be primary, this only\n * determines the first DC the library will try to connect to.\n * Can be used to connect to other networks (like test DCs).\n *\n * When session already contains primary DC, this parameter is ignored.\n *\n * @default Production DC 2.\n */\n defaultDcs?: DcOptions\n\n /**\n * Whether to connect to test servers.\n *\n * If passed, {@link defaultDc} defaults to Test DC 2.\n *\n * **Must** be passed if using test servers, even if\n * you passed custom {@link defaultDc}\n */\n testMode?: boolean\n\n /**\n * Additional options for initConnection call.\n * `apiId` and `query` are not available and will be ignored.\n * Omitted values will be filled with defaults\n */\n initConnectionOptions?: Partial<Omit<tl.RawInitConnectionRequest, 'apiId' | 'query'>>\n\n /**\n * Transport factory to use in the client.\n *\n * @default platform-specific transport: WebSocket on the web, TCP in node\n */\n transport: TransportFactory\n\n /**\n * Reconnection strategy.\n *\n * @default simple reconnection strategy: first 0ms, then up to 5s (increasing by 1s)\n */\n reconnectionStrategy?: ReconnectionStrategy<PersistentConnectionParams>\n\n /**\n * Maximum duration of a flood_wait that will be waited automatically.\n * Flood waits above this threshold will throw a FloodWaitError.\n * Set to 0 to disable. Can be overridden with `throwFlood` parameter in call() params\n *\n * @default 10000\n */\n floodSleepThreshold?: number\n\n /**\n * Maximum number of retries when calling RPC methods.\n * Call is retried when InternalError or FloodWaitError is encountered.\n * Can be set to Infinity.\n *\n * @default 5\n */\n maxRetryCount?: number\n\n /**\n * If true, every single API call will be wrapped with `tl.invokeWithoutUpdates`,\n * effectively disabling the server-sent events for the clients.\n * May be useful in some cases.\n *\n * Note that this only wraps calls made with `.call()` within the primary\n * connection. Additional connections and direct `.sendForResult()` calls\n * must be wrapped manually.\n *\n * @default false\n */\n disableUpdates?: boolean\n\n /**\n * mtcute can send all unknown RPC errors to [danog](https://github.com/danog)'s\n * [error reporting service](https://rpc.pwrtelegram.xyz/).\n *\n * This is fully anonymous (except maybe IP) and is only used to improve the library\n * and developer experience for everyone working with MTProto. This is fully opt-in,\n * and if you're too paranoid, you can disable it by manually passing `enableErrorReporting: false` to the client.\n *\n * @default false\n */\n enableErrorReporting?: boolean\n\n /**\n * If true, RPC errors will have a stack trace of the initial `.call()`\n * or `.sendForResult()` call position, which drastically improves\n * debugging experience.<br>\n * If false, they will have a stack trace of mtcute internals.\n *\n * Internally this creates a stack capture before every RPC call\n * and stores it until the result is received. This might\n * use a lot more memory than normal, thus can be disabled here.\n *\n * @default true\n */\n niceStacks?: boolean\n\n /**\n * Extra parameters for {@link NetworkManager}\n */\n network?: NetworkManagerExtraParams\n\n /**\n * Logger instance for the client.\n * If not passed, a new one will be created.\n */\n logger?: Logger\n\n /**\n * Set logging level for the client.\n * Shorthand for `client.log.level = level`.\n *\n * See static members of {@link LogManager} for possible values.\n */\n logLevel?: number\n\n /**\n * **EXPERT USE ONLY!**\n *\n * Override TL layer used for the connection.\n *\n * **Does not** change the schema used.\n */\n overrideLayer?: number\n\n /**\n * **EXPERT USE ONLY**\n *\n * Override reader map used for the connection.\n */\n readerMap?: TlReaderMap\n\n /**\n * **EXPERT USE ONLY**\n *\n * Override writer map used for the connection.\n */\n writerMap?: TlWriterMap\n}\n\n/**\n * Basic MTProto client implementation, only doing the bare minimum\n * to make RPC calls and receive low-level updates, as well as providing\n * some APIs to manage that.\n */\nexport class MtClient extends EventEmitter {\n /**\n * Crypto provider taken from {@link MtClientOptions.crypto}\n */\n readonly crypto: ICryptoProvider\n\n /** Storage manager */\n readonly storage: StorageManager\n\n /**\n * \"Test mode\" taken from {@link MtClientOptions.testMode}\n */\n protected readonly _testMode: boolean\n\n /**\n * Primary DCs taken from {@link MtClientOptions.defaultDcs},\n * loaded from session or changed by other means (like redirecting).\n */\n _defaultDcs: DcOptions\n\n private _niceStacks: boolean\n /** TL layer used by the client */\n readonly _layer: number\n /** TL readers map used by the client */\n readonly _readerMap: TlReaderMap\n /** TL writers map used by the client */\n readonly _writerMap: TlWriterMap\n\n readonly _config = new ConfigManager(() => this.call({ _: 'help.getConfig' }))\n\n emitError: (err: unknown, connection?: SessionConnection) => void = console.error.bind(console)\n\n readonly log: Logger\n readonly network: NetworkManager\n\n constructor(readonly params: MtClientOptions) {\n super()\n\n this.log = params.logger ?? new LogManager()\n\n if (params.logLevel !== undefined) {\n this.log.mgr.level = params.logLevel\n }\n\n this.crypto = params.crypto\n this._testMode = Boolean(params.testMode)\n\n let dc = params.defaultDcs\n\n if (!dc) {\n if (params.testMode) {\n dc = params.useIpv6 ? defaultTestIpv6Dc : defaultTestDc\n } else {\n dc = params.useIpv6 ? defaultProductionIpv6Dc : defaultProductionDc\n }\n }\n\n this._defaultDcs = dc\n this._niceStacks = params.niceStacks ?? true\n\n this._layer = params.overrideLayer ?? tl.LAYER\n this._readerMap = params.readerMap ?? defaultReaderMap\n this._writerMap = params.writerMap ?? defaultWriterMap\n\n this.storage = new StorageManager({\n provider: params.storage,\n log: this.log,\n readerMap: this._readerMap,\n writerMap: this._writerMap,\n ...params.storageOptions,\n })\n\n this.network = new NetworkManager(\n {\n apiId: params.apiId,\n crypto: this.crypto,\n disableUpdates: params.disableUpdates ?? false,\n initConnectionOptions: params.initConnectionOptions,\n layer: this._layer,\n log: this.log,\n readerMap: this._readerMap,\n writerMap: this._writerMap,\n reconnectionStrategy: params.reconnectionStrategy,\n storage: this.storage,\n testMode: Boolean(params.testMode),\n transport: params.transport,\n emitError: this.emitError.bind(this),\n floodSleepThreshold: params.floodSleepThreshold ?? 10000,\n maxRetryCount: params.maxRetryCount ?? 5,\n isPremium: false,\n useIpv6: Boolean(params.useIpv6),\n enableErrorReporting: params.enableErrorReporting ?? false,\n onUsable: () => this.emit('usable'),\n onConnecting: () => this.emit('connecting'),\n onNetworkChanged: (connected) => this.emit('networkChanged', connected),\n onUpdate: (upd) => this.emit('update', upd),\n ...params.network,\n },\n this._config,\n )\n }\n\n private _prepare = asyncResettable(async () => {\n await this.crypto.initialize?.()\n await this.storage.load()\n\n const primaryDc = await this.storage.dcs.fetch()\n if (primaryDc !== null) this._defaultDcs = primaryDc\n })\n\n /**\n * **ADVANCED**\n *\n * Do all the preparations, but don't connect just yet.\n * Useful when you want to do some preparations before\n * connecting, like setting up session.\n *\n * Call {@link connect} to actually connect.\n */\n prepare() {\n return this._prepare.run()\n }\n\n private _connect = asyncResettable(async () => {\n await this._prepare.run()\n await this.network.connect(this._defaultDcs)\n })\n\n /**\n * Initialize the connection to the primary DC.\n *\n * You shouldn't usually call this method directly as it is called\n * implicitly the first time you call {@link call}.\n */\n async connect(): Promise<void> {\n return this._connect.run()\n }\n\n /**\n * Close all connections and finalize the client.\n */\n async close(): Promise<void> {\n this._config.destroy()\n this.network.destroy()\n\n await this.storage.save()\n await this.storage.destroy?.()\n\n this._prepare.reset()\n this._connect.reset()\n }\n\n /**\n * Make an RPC call.\n *\n * The connection must have been {@link connect}-ed\n * before calling this method.\n *\n * This method is still quite low-level and you shouldn't use this\n * when using high-level API provided by `@mtcute/client`.\n *\n * @param message RPC method to call\n * @param params Additional call parameters\n */\n async call<T extends tl.RpcMethod>(\n message: MustEqual<T, tl.RpcMethod>,\n params?: RpcCallOptions,\n ): Promise<tl.RpcCallReturn[T['_']]> {\n const stack = this._niceStacks ? new Error().stack : undefined\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.network.call(message, params, stack)\n }\n\n /**\n * Register an error handler for the client\n *\n * @param handler Error handler.\n */\n onError(handler: (err: unknown) => void): void {\n this.emitError = handler\n }\n}\n"]}
@@ -26,6 +26,7 @@ export declare class MultiSessionConnection extends EventEmitter {
26
26
  resetAuthKeys(): void;
27
27
  setInactivityTimeout(timeout?: number): void;
28
28
  notifyKeyChange(): void;
29
+ notifyNetworkChanged(connected: boolean): void;
29
30
  requestAuth(): void;
30
31
  resetSessions(): void;
31
32
  changeTransport(factory: TransportFactory): void;
@@ -144,6 +144,7 @@ export class MultiSessionConnection extends EventEmitter {
144
144
  });
145
145
  });
146
146
  conn.on('usable', () => this.emit('usable', i));
147
+ conn.on('wait', () => this.emit('wait', i));
147
148
  conn.on('request-auth', () => this.emit('request-auth', i));
148
149
  conn.on('flood-done', () => {
149
150
  this._log.debug('received flood-done from connection %d', i);
@@ -227,6 +228,11 @@ export class MultiSessionConnection extends EventEmitter {
227
228
  }
228
229
  // connection is idle, we don't need to notify it
229
230
  }
231
+ notifyNetworkChanged(connected) {
232
+ for (const conn of this._connections) {
233
+ conn.notifyNetworkChanged(connected);
234
+ }
235
+ }
230
236
  requestAuth() {
231
237
  this._connections[0]._authorize();
232
238
  }
@@ -1 +1 @@
1
- {"version":3,"file":"multi-session-connection.js","sourceRoot":"","sources":["../../../src/network/multi-session-connection.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from 'events'\n\nimport { tl } from '@mtcute/tl'\n\nimport { createControllablePromise, Logger } from '../utils/index.js'\nimport { MtprotoSession } from './mtproto-session.js'\nimport { SessionConnection, SessionConnectionParams } from './session-connection.js'\nimport { TransportFactory } from './transports/index.js'\n\nexport class MultiSessionConnection extends EventEmitter {\n private _log: Logger\n readonly _sessions: MtprotoSession[]\n private _enforcePfs = false\n\n constructor(\n readonly params: SessionConnectionParams,\n private _count: number,\n log: Logger,\n logPrefix = '',\n ) {\n super()\n this._log = log.create('multi')\n if (logPrefix) this._log.prefix = `[${logPrefix}] `\n this._enforcePfs = _count > 1 && params.isMainConnection\n\n this._sessions = []\n this._updateConnections()\n }\n\n protected _connections: SessionConnection[] = []\n\n setCount(count: number, connect = this.params.isMainConnection): void {\n this._count = count\n\n this._updateConnections(connect)\n }\n\n private _updateSessions(): void {\n // there are two cases\n // 1. this msc is main, in which case every connection should have its own session\n // 2. this msc is not main, in which case all connections should share the same session\n // if (!this.params.isMainConnection) {\n // // case 2\n // this._log.debug(\n // 'updating sessions count: %d -> 1',\n // this._sessions.length,\n // )\n //\n // if (this._sessions.length === 0) {\n // this._sessions.push(\n // new MtprotoSession(\n // this.params.crypto,\n // this._log.create('session'),\n // this.params.readerMap,\n // this.params.writerMap,\n // ),\n // )\n // }\n //\n // // shouldn't happen, but just in case\n // while (this._sessions.length > 1) {\n // this._sessions.pop()!.reset()\n // }\n //\n // return\n // }\n\n this._log.debug('updating sessions count: %d -> %d', this._sessions.length, this._count)\n\n // case 1\n if (this._sessions.length === this._count) return\n\n if (this._sessions.length > this._count) {\n // destroy extra sessions\n for (let i = this._sessions.length - 1; i >= this._count; i--) {\n this._sessions[i].reset()\n }\n\n this._sessions.splice(this._count)\n\n return\n }\n\n while (this._sessions.length < this._count) {\n const idx = this._sessions.length\n const session = new MtprotoSession(\n this.params.crypto,\n this._log.create('session'),\n this.params.readerMap,\n this.params.writerMap,\n this.params.salts,\n )\n\n // brvh\n if (idx !== 0) session._authKey = this._sessions[0]._authKey\n\n this._sessions.push(session)\n }\n }\n\n private _updateConnections(connect = false): void {\n this._updateSessions()\n if (this._connections.length === this._count) return\n\n this._log.debug('updating connections count: %d -> %d', this._connections.length, this._count)\n\n const newEnforcePfs = this._count > 1 && this.params.isMainConnection\n const enforcePfsChanged = newEnforcePfs !== this._enforcePfs\n\n if (enforcePfsChanged) {\n this._log.debug('enforcePfs changed: %s -> %s', this._enforcePfs, newEnforcePfs)\n this._enforcePfs = newEnforcePfs\n }\n\n if (this._connections.length > this._count) {\n // destroy extra connections\n for (let i = this._connections.length - 1; i >= this._count; i--) {\n this._connections[i].removeAllListeners()\n this._connections[i].destroy()\n }\n\n this._connections.splice(this._count)\n\n return\n }\n\n if (enforcePfsChanged) {\n // we need to fetch new auth keys first\n const promise = createControllablePromise<void>()\n this.emit('request-keys', promise)\n\n promise\n .then(() => {\n this._connections.forEach((conn) => {\n conn.setUsePfs(this.params.usePfs || this._enforcePfs)\n\n if (connect) conn.connect()\n })\n })\n .catch((err) => {\n this.emit('error', err)\n })\n }\n\n // create new connections\n for (let i = this._connections.length; i < this._count; i++) {\n const session = this._sessions[i] // this.params.isMainConnection ? // :\n // this._sessions[0]\n const conn = new SessionConnection(\n {\n ...this.params,\n usePfs: this.params.usePfs || this._enforcePfs,\n isMainConnection: this.params.isMainConnection && i === 0,\n withUpdates:\n this.params.isMainConnection && this.params.isMainDcConnection && !this.params.disableUpdates,\n },\n session,\n )\n\n if (this.params.isMainConnection && this.params.isMainDcConnection) {\n conn.on('update', (update) => this.emit('update', update))\n }\n conn.on('error', (err) => this.emit('error', err, conn))\n conn.on('key-change', (key) => {\n this.emit('key-change', i, key)\n\n // notify other connections\n for (const conn_ of this._connections) {\n if (conn_ === conn) continue\n conn_.onConnected()\n }\n })\n conn.on('tmp-key-change', (key, expires) => this.emit('tmp-key-change', i, key, expires))\n conn.on('future-salts', (salts) => this.emit('future-salts', salts))\n conn.on('auth-begin', () => {\n this._log.debug('received auth-begin from connection %d', i)\n this.emit('auth-begin', i)\n\n // we need to reset temp auth keys if there are any left\n\n this._connections.forEach((conn_) => {\n conn_._session._authKeyTemp.reset()\n if (conn_ !== conn) conn_.reconnect()\n })\n })\n conn.on('usable', () => this.emit('usable', i))\n conn.on('request-auth', () => this.emit('request-auth', i))\n conn.on('flood-done', () => {\n this._log.debug('received flood-done from connection %d', i)\n\n this._connections.forEach((it) => it.flushWhenIdle())\n })\n\n this._connections.push(conn)\n // if enforcePfsChanged, we need to connect after setting the new auth key\n if (connect && !enforcePfsChanged) conn.connect()\n }\n }\n\n _destroyed = false\n destroy(): void {\n this._connections.forEach((conn) => conn.destroy())\n this._sessions.forEach((sess) => sess.reset())\n this.removeAllListeners()\n\n this._destroyed = true\n }\n\n private _nextConnection = 0\n\n sendRpc<T extends tl.RpcMethod>(\n request: T,\n stack?: string,\n timeout?: number,\n abortSignal?: AbortSignal,\n chainId?: string | number,\n ): Promise<tl.RpcCallReturn[T['_']]> {\n // if (this.params.isMainConnection) {\n // find the least loaded connection\n let min = Infinity\n let minIdx = 0\n\n for (let i = 0; i < this._connections.length; i++) {\n const conn = this._connections[i]\n const total = conn._session.queuedRpc.length + conn._session.pendingMessages.size()\n\n if (total < min) {\n min = total\n minIdx = i\n }\n }\n\n return this._connections[minIdx].sendRpc(request, stack, timeout, abortSignal, chainId)\n // }\n\n // round-robin connections\n // since they all share the same session, it doesn't matter which one we use\n // the connection chosen here will only affect the first attempt at sending\n // return this._connections[\n // this._nextConnection++ % this._connections.length\n // ].sendRpc(request, stack, timeout)\n }\n\n connect(): void {\n for (const conn of this._connections) {\n conn.connect()\n }\n }\n\n ensureConnected(): void {\n if (this._connections[0].isConnected) return\n\n this.connect()\n }\n\n setAuthKey(authKey: Uint8Array | null, temp = false, idx = 0): void {\n const session = this._sessions[idx]\n const key = temp ? session._authKeyTemp : session._authKey\n key.setup(authKey)\n }\n\n resetAuthKeys(): void {\n for (const session of this._sessions) {\n session.reset(true)\n }\n this.notifyKeyChange()\n }\n\n setInactivityTimeout(timeout?: number): void {\n this._log.debug('setting inactivity timeout to %s', timeout)\n\n // for future connections (if any)\n this.params.inactivityTimeout = timeout\n\n // for current connections\n for (const conn of this._connections) {\n conn.setInactivityTimeout(timeout)\n }\n }\n\n notifyKeyChange(): void {\n // only expected to be called on non-main connections\n const session = this._sessions[0]\n\n if (this.params.usePfs && !session._authKeyTemp.ready) {\n this._log.debug('temp auth key needed but not ready, ignoring key change')\n\n return\n }\n\n if (this._sessions[0].queuedRpc.length) {\n // there are pending requests, we need to reconnect.\n this._log.debug('notifying key change on the connection due to queued rpc')\n this._connections[0].onConnected()\n }\n\n // connection is idle, we don't need to notify it\n }\n\n requestAuth(): void {\n this._connections[0]._authorize()\n }\n\n resetSessions(): void {\n if (this.params.isMainConnection) {\n for (const conn of this._connections) {\n conn._resetSession()\n }\n } else {\n this._connections[0]._resetSession()\n }\n }\n\n changeTransport(factory: TransportFactory): void {\n this._connections.forEach((conn) => conn.changeTransport(factory))\n }\n\n getPoolSize(): number {\n return this._connections.length\n }\n}\n"]}
1
+ {"version":3,"file":"multi-session-connection.js","sourceRoot":"","sources":["../../../src/network/multi-session-connection.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from 'events'\n\nimport { tl } from '@mtcute/tl'\n\nimport { createControllablePromise, Logger } from '../utils/index.js'\nimport { MtprotoSession } from './mtproto-session.js'\nimport { SessionConnection, SessionConnectionParams } from './session-connection.js'\nimport { TransportFactory } from './transports/index.js'\n\nexport class MultiSessionConnection extends EventEmitter {\n private _log: Logger\n readonly _sessions: MtprotoSession[]\n private _enforcePfs = false\n\n constructor(\n readonly params: SessionConnectionParams,\n private _count: number,\n log: Logger,\n logPrefix = '',\n ) {\n super()\n this._log = log.create('multi')\n if (logPrefix) this._log.prefix = `[${logPrefix}] `\n this._enforcePfs = _count > 1 && params.isMainConnection\n\n this._sessions = []\n this._updateConnections()\n }\n\n protected _connections: SessionConnection[] = []\n\n setCount(count: number, connect = this.params.isMainConnection): void {\n this._count = count\n\n this._updateConnections(connect)\n }\n\n private _updateSessions(): void {\n // there are two cases\n // 1. this msc is main, in which case every connection should have its own session\n // 2. this msc is not main, in which case all connections should share the same session\n // if (!this.params.isMainConnection) {\n // // case 2\n // this._log.debug(\n // 'updating sessions count: %d -> 1',\n // this._sessions.length,\n // )\n //\n // if (this._sessions.length === 0) {\n // this._sessions.push(\n // new MtprotoSession(\n // this.params.crypto,\n // this._log.create('session'),\n // this.params.readerMap,\n // this.params.writerMap,\n // ),\n // )\n // }\n //\n // // shouldn't happen, but just in case\n // while (this._sessions.length > 1) {\n // this._sessions.pop()!.reset()\n // }\n //\n // return\n // }\n\n this._log.debug('updating sessions count: %d -> %d', this._sessions.length, this._count)\n\n // case 1\n if (this._sessions.length === this._count) return\n\n if (this._sessions.length > this._count) {\n // destroy extra sessions\n for (let i = this._sessions.length - 1; i >= this._count; i--) {\n this._sessions[i].reset()\n }\n\n this._sessions.splice(this._count)\n\n return\n }\n\n while (this._sessions.length < this._count) {\n const idx = this._sessions.length\n const session = new MtprotoSession(\n this.params.crypto,\n this._log.create('session'),\n this.params.readerMap,\n this.params.writerMap,\n this.params.salts,\n )\n\n // brvh\n if (idx !== 0) session._authKey = this._sessions[0]._authKey\n\n this._sessions.push(session)\n }\n }\n\n private _updateConnections(connect = false): void {\n this._updateSessions()\n if (this._connections.length === this._count) return\n\n this._log.debug('updating connections count: %d -> %d', this._connections.length, this._count)\n\n const newEnforcePfs = this._count > 1 && this.params.isMainConnection\n const enforcePfsChanged = newEnforcePfs !== this._enforcePfs\n\n if (enforcePfsChanged) {\n this._log.debug('enforcePfs changed: %s -> %s', this._enforcePfs, newEnforcePfs)\n this._enforcePfs = newEnforcePfs\n }\n\n if (this._connections.length > this._count) {\n // destroy extra connections\n for (let i = this._connections.length - 1; i >= this._count; i--) {\n this._connections[i].removeAllListeners()\n this._connections[i].destroy()\n }\n\n this._connections.splice(this._count)\n\n return\n }\n\n if (enforcePfsChanged) {\n // we need to fetch new auth keys first\n const promise = createControllablePromise<void>()\n this.emit('request-keys', promise)\n\n promise\n .then(() => {\n this._connections.forEach((conn) => {\n conn.setUsePfs(this.params.usePfs || this._enforcePfs)\n\n if (connect) conn.connect()\n })\n })\n .catch((err) => {\n this.emit('error', err)\n })\n }\n\n // create new connections\n for (let i = this._connections.length; i < this._count; i++) {\n const session = this._sessions[i] // this.params.isMainConnection ? // :\n // this._sessions[0]\n const conn = new SessionConnection(\n {\n ...this.params,\n usePfs: this.params.usePfs || this._enforcePfs,\n isMainConnection: this.params.isMainConnection && i === 0,\n withUpdates:\n this.params.isMainConnection && this.params.isMainDcConnection && !this.params.disableUpdates,\n },\n session,\n )\n\n if (this.params.isMainConnection && this.params.isMainDcConnection) {\n conn.on('update', (update) => this.emit('update', update))\n }\n conn.on('error', (err) => this.emit('error', err, conn))\n conn.on('key-change', (key) => {\n this.emit('key-change', i, key)\n\n // notify other connections\n for (const conn_ of this._connections) {\n if (conn_ === conn) continue\n conn_.onConnected()\n }\n })\n conn.on('tmp-key-change', (key, expires) => this.emit('tmp-key-change', i, key, expires))\n conn.on('future-salts', (salts) => this.emit('future-salts', salts))\n conn.on('auth-begin', () => {\n this._log.debug('received auth-begin from connection %d', i)\n this.emit('auth-begin', i)\n\n // we need to reset temp auth keys if there are any left\n\n this._connections.forEach((conn_) => {\n conn_._session._authKeyTemp.reset()\n if (conn_ !== conn) conn_.reconnect()\n })\n })\n conn.on('usable', () => this.emit('usable', i))\n conn.on('wait', () => this.emit('wait', i))\n conn.on('request-auth', () => this.emit('request-auth', i))\n conn.on('flood-done', () => {\n this._log.debug('received flood-done from connection %d', i)\n\n this._connections.forEach((it) => it.flushWhenIdle())\n })\n\n this._connections.push(conn)\n // if enforcePfsChanged, we need to connect after setting the new auth key\n if (connect && !enforcePfsChanged) conn.connect()\n }\n }\n\n _destroyed = false\n destroy(): void {\n this._connections.forEach((conn) => conn.destroy())\n this._sessions.forEach((sess) => sess.reset())\n this.removeAllListeners()\n\n this._destroyed = true\n }\n\n private _nextConnection = 0\n\n sendRpc<T extends tl.RpcMethod>(\n request: T,\n stack?: string,\n timeout?: number,\n abortSignal?: AbortSignal,\n chainId?: string | number,\n ): Promise<tl.RpcCallReturn[T['_']]> {\n // if (this.params.isMainConnection) {\n // find the least loaded connection\n let min = Infinity\n let minIdx = 0\n\n for (let i = 0; i < this._connections.length; i++) {\n const conn = this._connections[i]\n const total = conn._session.queuedRpc.length + conn._session.pendingMessages.size()\n\n if (total < min) {\n min = total\n minIdx = i\n }\n }\n\n return this._connections[minIdx].sendRpc(request, stack, timeout, abortSignal, chainId)\n // }\n\n // round-robin connections\n // since they all share the same session, it doesn't matter which one we use\n // the connection chosen here will only affect the first attempt at sending\n // return this._connections[\n // this._nextConnection++ % this._connections.length\n // ].sendRpc(request, stack, timeout)\n }\n\n connect(): void {\n for (const conn of this._connections) {\n conn.connect()\n }\n }\n\n ensureConnected(): void {\n if (this._connections[0].isConnected) return\n\n this.connect()\n }\n\n setAuthKey(authKey: Uint8Array | null, temp = false, idx = 0): void {\n const session = this._sessions[idx]\n const key = temp ? session._authKeyTemp : session._authKey\n key.setup(authKey)\n }\n\n resetAuthKeys(): void {\n for (const session of this._sessions) {\n session.reset(true)\n }\n this.notifyKeyChange()\n }\n\n setInactivityTimeout(timeout?: number): void {\n this._log.debug('setting inactivity timeout to %s', timeout)\n\n // for future connections (if any)\n this.params.inactivityTimeout = timeout\n\n // for current connections\n for (const conn of this._connections) {\n conn.setInactivityTimeout(timeout)\n }\n }\n\n notifyKeyChange(): void {\n // only expected to be called on non-main connections\n const session = this._sessions[0]\n\n if (this.params.usePfs && !session._authKeyTemp.ready) {\n this._log.debug('temp auth key needed but not ready, ignoring key change')\n\n return\n }\n\n if (this._sessions[0].queuedRpc.length) {\n // there are pending requests, we need to reconnect.\n this._log.debug('notifying key change on the connection due to queued rpc')\n this._connections[0].onConnected()\n }\n\n // connection is idle, we don't need to notify it\n }\n\n notifyNetworkChanged(connected: boolean): void {\n for (const conn of this._connections) {\n conn.notifyNetworkChanged(connected)\n }\n }\n\n requestAuth(): void {\n this._connections[0]._authorize()\n }\n\n resetSessions(): void {\n if (this.params.isMainConnection) {\n for (const conn of this._connections) {\n conn._resetSession()\n }\n } else {\n this._connections[0]._resetSession()\n }\n }\n\n changeTransport(factory: TransportFactory): void {\n this._connections.forEach((conn) => conn.changeTransport(factory))\n }\n\n getPoolSize(): number {\n return this._connections.length\n }\n}\n"]}
@@ -20,7 +20,7 @@ export interface NetworkManagerParams {
20
20
  enableErrorReporting: boolean;
21
21
  apiId: number;
22
22
  initConnectionOptions?: Partial<Omit<tl.RawInitConnectionRequest, 'apiId' | 'query'>>;
23
- transport?: TransportFactory;
23
+ transport: TransportFactory;
24
24
  reconnectionStrategy?: ReconnectionStrategy<PersistentConnectionParams>;
25
25
  floodSleepThreshold: number;
26
26
  maxRetryCount: number;
@@ -34,6 +34,8 @@ export interface NetworkManagerParams {
34
34
  emitError: (err: Error, connection?: SessionConnection) => void;
35
35
  onUpdate: (upd: tl.TypeUpdates) => void;
36
36
  onUsable: () => void;
37
+ onConnecting: () => void;
38
+ onNetworkChanged: (connected: boolean) => void;
37
39
  }
38
40
  export type ConnectionCountDelegate = (kind: ConnectionKind, dcId: number, isPremium: boolean) => number;
39
41
  /**
@@ -185,6 +187,7 @@ export declare class NetworkManager {
185
187
  private _updateHandler;
186
188
  constructor(params: NetworkManagerParams & NetworkManagerExtraParams, config: ConfigManager);
187
189
  private _findDcOptions;
190
+ private _resetOnNetworkChange?;
188
191
  private _switchPrimaryDc;
189
192
  private _dcCreationPromise;
190
193
  _getOtherDc(dcId: number): Promise<DcConnectionManager>;
@@ -199,6 +202,7 @@ export declare class NetworkManager {
199
202
  setIsPremium(isPremium: boolean): void;
200
203
  notifyLoggedIn(auth: tl.auth.TypeAuthorization | tl.RawUser): tl.RawUser;
201
204
  notifyLoggedOut(): void;
205
+ notifyNetworkChanged(connected: boolean): void;
202
206
  resetSessions(): void;
203
207
  private _onConfigChanged;
204
208
  changePrimaryDc(newDc: number): Promise<void>;