@mtcute/core 0.7.2 → 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 (1132) 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/authorization.js +1 -0
  170. package/cjs/network/authorization.js.map +1 -1
  171. package/cjs/network/client.d.ts +4 -4
  172. package/cjs/network/client.js +3 -1
  173. package/cjs/network/client.js.map +1 -1
  174. package/cjs/network/mtproto-session.d.ts +1 -0
  175. package/cjs/network/mtproto-session.js +7 -1
  176. package/cjs/network/mtproto-session.js.map +1 -1
  177. package/cjs/network/multi-session-connection.d.ts +1 -0
  178. package/cjs/network/multi-session-connection.js +6 -0
  179. package/cjs/network/multi-session-connection.js.map +1 -1
  180. package/cjs/network/network-manager.d.ts +5 -1
  181. package/cjs/network/network-manager.js +24 -15
  182. package/cjs/network/network-manager.js.map +1 -1
  183. package/cjs/network/persistent-connection.d.ts +3 -0
  184. package/cjs/network/persistent-connection.js +23 -1
  185. package/cjs/network/persistent-connection.js.map +1 -1
  186. package/cjs/network/session-connection.d.ts +2 -0
  187. package/cjs/network/session-connection.js +21 -7
  188. package/cjs/network/session-connection.js.map +1 -1
  189. package/cjs/network/transports/index.d.ts +0 -3
  190. package/cjs/network/transports/index.js +0 -4
  191. package/cjs/network/transports/index.js.map +1 -1
  192. package/cjs/platform.d.ts +18 -0
  193. package/cjs/platform.js +36 -0
  194. package/cjs/platform.js.map +1 -0
  195. package/cjs/storage/index.d.ts +1 -2
  196. package/cjs/storage/index.js +1 -2
  197. package/cjs/storage/index.js.map +1 -1
  198. package/{esm/storage/providers → cjs/storage}/memory/driver.d.ts +1 -1
  199. package/cjs/storage/memory/driver.js.map +1 -0
  200. package/{esm/storage/providers → cjs/storage}/memory/index.d.ts +2 -2
  201. package/cjs/storage/memory/index.js.map +1 -0
  202. package/cjs/storage/{providers/memory → memory}/repository/auth-keys.d.ts +1 -1
  203. package/cjs/storage/memory/repository/auth-keys.js.map +1 -0
  204. package/{esm/storage/providers → cjs/storage}/memory/repository/kv.d.ts +1 -1
  205. package/cjs/storage/memory/repository/kv.js.map +1 -0
  206. package/{esm/storage/providers → cjs/storage}/memory/repository/peers.d.ts +1 -1
  207. package/cjs/storage/memory/repository/peers.js.map +1 -0
  208. package/{esm/storage/providers → cjs/storage}/memory/repository/ref-messages.d.ts +1 -1
  209. package/cjs/storage/memory/repository/ref-messages.js.map +1 -0
  210. package/cjs/storage/storage.js +2 -1
  211. package/cjs/storage/storage.js.map +1 -1
  212. package/cjs/utils/binary/asn1-parser.js +3 -3
  213. package/cjs/utils/binary/asn1-parser.js.map +1 -1
  214. package/cjs/utils/crypto/abstract.d.ts +0 -1
  215. package/cjs/utils/crypto/abstract.js.map +1 -1
  216. package/cjs/utils/crypto/index.d.ts +0 -2
  217. package/cjs/utils/crypto/index.js +0 -3
  218. package/cjs/utils/crypto/index.js.map +1 -1
  219. package/cjs/utils/crypto/keys.js +5 -3
  220. package/cjs/utils/crypto/keys.js.map +1 -1
  221. package/cjs/utils/crypto/password.js +3 -3
  222. package/cjs/utils/crypto/password.js.map +1 -1
  223. package/cjs/utils/dcs.d.ts +4 -0
  224. package/cjs/utils/dcs.js +0 -4
  225. package/cjs/utils/dcs.js.map +1 -1
  226. package/cjs/utils/{platform/error-reporting.d.ts → error-reporting.d.ts} +1 -1
  227. package/cjs/utils/error-reporting.js.map +1 -0
  228. package/cjs/utils/index.d.ts +4 -1
  229. package/cjs/utils/index.js +6 -1
  230. package/cjs/utils/index.js.map +1 -1
  231. package/cjs/utils/links/common.js +1 -1
  232. package/cjs/utils/links/common.js.map +1 -1
  233. package/cjs/utils/logger.d.ts +1 -0
  234. package/cjs/utils/logger.js +9 -22
  235. package/cjs/utils/logger.js.map +1 -1
  236. package/esm/highlevel/base.d.ts +3 -1
  237. package/esm/highlevel/base.js +18 -0
  238. package/esm/highlevel/base.js.map +1 -1
  239. package/esm/highlevel/client.d.ts +23 -10
  240. package/esm/highlevel/client.js +12 -19
  241. package/esm/highlevel/client.js.map +1 -1
  242. package/esm/highlevel/client.types.d.ts +14 -0
  243. package/esm/highlevel/client.types.js.map +1 -1
  244. package/esm/highlevel/index.d.ts +0 -2
  245. package/esm/highlevel/index.js +0 -2
  246. package/esm/highlevel/index.js.map +1 -1
  247. package/esm/highlevel/methods/_imports.js.map +1 -1
  248. package/esm/highlevel/methods/_init.js +4 -29
  249. package/esm/highlevel/methods/_init.js.map +1 -1
  250. package/esm/highlevel/methods/bots/get-callback-answer.js +2 -2
  251. package/esm/highlevel/methods/bots/get-callback-answer.js.map +1 -1
  252. package/esm/highlevel/methods/dialogs/create-folder.js +1 -1
  253. package/esm/highlevel/methods/dialogs/create-folder.js.map +1 -1
  254. package/esm/highlevel/methods/dialogs/edit-folder.js +1 -1
  255. package/esm/highlevel/methods/dialogs/edit-folder.js.map +1 -1
  256. package/esm/highlevel/methods/dialogs/find-folder.js +1 -1
  257. package/esm/highlevel/methods/dialogs/find-folder.js.map +1 -1
  258. package/esm/highlevel/methods/dialogs/get-folders.d.ts +1 -1
  259. package/esm/highlevel/methods/dialogs/get-folders.js +1 -1
  260. package/esm/highlevel/methods/dialogs/get-folders.js.map +1 -1
  261. package/esm/highlevel/methods/files/download-file.d.ts +1 -10
  262. package/esm/highlevel/methods/files/download-file.js +2 -30
  263. package/esm/highlevel/methods/files/download-file.js.map +1 -1
  264. package/esm/highlevel/methods/files/download-iterable.js +2 -1
  265. package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
  266. package/esm/highlevel/methods/files/download-node-stream.js +3 -0
  267. package/esm/highlevel/methods/files/download-node-stream.js.map +1 -0
  268. package/esm/highlevel/methods/files/normalize-input-media.d.ts +1 -1
  269. package/esm/highlevel/methods/files/normalize-input-media.js +2 -1
  270. package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
  271. package/esm/highlevel/methods/files/upload-file.d.ts +0 -3
  272. package/esm/highlevel/methods/files/upload-file.js +17 -13
  273. package/esm/highlevel/methods/files/upload-file.js.map +1 -1
  274. package/esm/highlevel/methods/messages/find-in-update.js +23 -8
  275. package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
  276. package/esm/highlevel/methods/messages/send-media-group.d.ts +1 -1
  277. package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
  278. package/esm/highlevel/methods/messages/send-media.d.ts +2 -2
  279. package/esm/highlevel/methods/messages/send-media.js +4 -3
  280. package/esm/highlevel/methods/messages/send-media.js.map +1 -1
  281. package/esm/highlevel/methods/messages/send-text.d.ts +1 -1
  282. package/esm/highlevel/methods/messages/send-text.js +4 -3
  283. package/esm/highlevel/methods/messages/send-text.js.map +1 -1
  284. package/esm/highlevel/methods/misc/with-params.d.ts +10 -0
  285. package/esm/highlevel/methods/misc/with-params.js +28 -0
  286. package/esm/highlevel/methods/misc/with-params.js.map +1 -0
  287. package/esm/highlevel/methods.d.ts +13 -1
  288. package/esm/highlevel/methods.js +0 -1
  289. package/esm/highlevel/methods.js.map +1 -1
  290. package/esm/highlevel/types/auth/sent-code.js +4 -3
  291. package/esm/highlevel/types/bots/command-scope/index.d.ts +10 -0
  292. package/esm/highlevel/types/bots/command-scope/index.js +11 -0
  293. package/esm/highlevel/types/bots/command-scope/index.js.map +1 -0
  294. package/esm/highlevel/types/bots/command-scope/inner.d.ts +54 -0
  295. package/esm/highlevel/types/bots/command-scope/inner.js +69 -0
  296. package/esm/highlevel/types/bots/command-scope/inner.js.map +1 -0
  297. package/esm/highlevel/types/bots/game-high-score.js +5 -4
  298. package/esm/highlevel/types/bots/index.d.ts +4 -4
  299. package/esm/highlevel/types/bots/index.js +4 -4
  300. package/esm/highlevel/types/bots/index.js.map +1 -1
  301. package/esm/highlevel/types/bots/inline-message/factories.d.ts +43 -0
  302. package/esm/highlevel/types/bots/inline-message/factories.js +163 -0
  303. package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -0
  304. package/esm/highlevel/types/bots/inline-message/index.d.ts +3 -0
  305. package/esm/highlevel/types/bots/inline-message/index.js +4 -0
  306. package/esm/highlevel/types/bots/inline-message/index.js.map +1 -0
  307. package/{cjs/highlevel/types/bots/input/input-inline-message.d.ts → esm/highlevel/types/bots/inline-message/types.d.ts} +2 -45
  308. package/esm/highlevel/types/bots/inline-message/types.js +2 -0
  309. package/esm/highlevel/types/bots/inline-message/types.js.map +1 -0
  310. package/esm/highlevel/types/bots/inline-result/factories.d.ts +94 -0
  311. package/esm/highlevel/types/bots/inline-result/factories.js +470 -0
  312. package/esm/highlevel/types/bots/inline-result/factories.js.map +1 -0
  313. package/esm/highlevel/types/bots/inline-result/index.d.ts +3 -0
  314. package/esm/highlevel/types/bots/inline-result/index.js +4 -0
  315. package/esm/highlevel/types/bots/inline-result/index.js.map +1 -0
  316. package/{cjs/highlevel/types/bots/input/input-inline-result.d.ts → esm/highlevel/types/bots/inline-result/types.d.ts} +1 -95
  317. package/esm/highlevel/types/bots/inline-result/types.js +2 -0
  318. package/esm/highlevel/types/bots/inline-result/types.js.map +1 -0
  319. package/esm/highlevel/types/bots/{keyboard-builder.d.ts → keyboards/builder.d.ts} +1 -1
  320. package/esm/highlevel/types/bots/{keyboard-builder.js → keyboards/builder.js} +1 -1
  321. package/esm/highlevel/types/bots/keyboards/builder.js.map +1 -0
  322. package/esm/highlevel/types/bots/keyboards/factories.d.ts +195 -0
  323. package/esm/highlevel/types/bots/keyboards/factories.js +341 -0
  324. package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -0
  325. package/esm/highlevel/types/bots/keyboards/index.d.ts +14 -0
  326. package/esm/highlevel/types/bots/keyboards/index.js +15 -0
  327. package/esm/highlevel/types/bots/keyboards/index.js.map +1 -0
  328. package/esm/highlevel/types/bots/keyboards/types.d.ts +34 -0
  329. package/esm/highlevel/types/bots/keyboards/types.js +2 -0
  330. package/esm/highlevel/types/bots/keyboards/types.js.map +1 -0
  331. package/esm/highlevel/types/files/file-location.js +4 -3
  332. package/esm/highlevel/types/files/web-document.js +4 -3
  333. package/esm/highlevel/types/media/audio.js +5 -4
  334. package/esm/highlevel/types/media/contact.js +4 -3
  335. package/esm/highlevel/types/media/dice.js +4 -3
  336. package/esm/highlevel/types/media/document.js +8 -6
  337. package/esm/highlevel/types/media/document.js.map +1 -1
  338. package/esm/highlevel/types/media/game.js +5 -4
  339. package/esm/highlevel/types/media/index.d.ts +1 -1
  340. package/esm/highlevel/types/media/index.js +1 -1
  341. package/esm/highlevel/types/media/index.js.map +1 -1
  342. package/esm/highlevel/types/media/input-media/factories.d.ts +141 -0
  343. package/esm/highlevel/types/media/input-media/factories.js +228 -0
  344. package/esm/highlevel/types/media/input-media/factories.js.map +1 -0
  345. package/esm/highlevel/types/media/input-media/index.d.ts +3 -0
  346. package/esm/highlevel/types/media/input-media/index.js +4 -0
  347. package/esm/highlevel/types/media/input-media/index.js.map +1 -0
  348. package/esm/highlevel/types/media/{input-media.d.ts → input-media/types.d.ts} +5 -145
  349. package/esm/highlevel/types/media/input-media/types.js +2 -0
  350. package/esm/highlevel/types/media/input-media/types.js.map +1 -0
  351. package/esm/highlevel/types/media/invoice.js +9 -7
  352. package/esm/highlevel/types/media/location.js +7 -5
  353. package/esm/highlevel/types/media/photo.js +5 -4
  354. package/esm/highlevel/types/media/poll.js +5 -4
  355. package/esm/highlevel/types/media/sticker.js +5 -4
  356. package/esm/highlevel/types/media/story.js +4 -3
  357. package/esm/highlevel/types/media/thumbnail.js +10 -8
  358. package/esm/highlevel/types/media/thumbnail.js.map +1 -1
  359. package/esm/highlevel/types/media/venue.js +5 -4
  360. package/esm/highlevel/types/media/video.js +5 -4
  361. package/esm/highlevel/types/media/voice.js +5 -4
  362. package/esm/highlevel/types/media/web-page.js +5 -4
  363. package/esm/highlevel/types/messages/dialog.js +5 -4
  364. package/esm/highlevel/types/messages/draft-message.js +5 -4
  365. package/esm/highlevel/types/messages/message-entity.js +5 -4
  366. package/esm/highlevel/types/messages/message-forward.js +5 -4
  367. package/esm/highlevel/types/messages/message-reactions.js +5 -4
  368. package/esm/highlevel/types/messages/message-replies.js +5 -4
  369. package/esm/highlevel/types/messages/message.d.ts +1 -1
  370. package/esm/highlevel/types/messages/message.js +6 -5
  371. package/esm/highlevel/types/messages/message.js.map +1 -1
  372. package/esm/highlevel/types/messages/replied-message.js +5 -4
  373. package/esm/highlevel/types/misc/index.d.ts +1 -1
  374. package/esm/highlevel/types/misc/index.js +1 -1
  375. package/esm/highlevel/types/misc/index.js.map +1 -1
  376. package/esm/highlevel/types/misc/input-privacy-rule/allow.d.ts +22 -0
  377. package/esm/highlevel/types/misc/input-privacy-rule/allow.js +31 -0
  378. package/esm/highlevel/types/misc/input-privacy-rule/allow.js.map +1 -0
  379. package/esm/highlevel/types/misc/input-privacy-rule/bundle.d.ts +3 -0
  380. package/esm/highlevel/types/misc/input-privacy-rule/bundle.js +4 -0
  381. package/esm/highlevel/types/misc/input-privacy-rule/bundle.js.map +1 -0
  382. package/esm/highlevel/types/misc/input-privacy-rule/disallow.d.ts +20 -0
  383. package/esm/highlevel/types/misc/input-privacy-rule/disallow.js +27 -0
  384. package/esm/highlevel/types/misc/input-privacy-rule/disallow.js.map +1 -0
  385. package/esm/highlevel/types/misc/input-privacy-rule/index.d.ts +3 -0
  386. package/esm/highlevel/types/misc/input-privacy-rule/index.js +4 -0
  387. package/esm/highlevel/types/misc/input-privacy-rule/index.js.map +1 -0
  388. package/esm/highlevel/types/misc/input-privacy-rule/types.d.ts +11 -0
  389. package/esm/highlevel/types/misc/input-privacy-rule/types.js +2 -0
  390. package/esm/highlevel/types/misc/input-privacy-rule/types.js.map +1 -0
  391. package/esm/highlevel/types/misc/sticker-set.js +5 -4
  392. package/esm/highlevel/types/misc/takeout-session.js +4 -3
  393. package/esm/highlevel/types/peers/chat-colors.js +4 -3
  394. package/esm/highlevel/types/peers/chat-event/index.js +5 -4
  395. package/esm/highlevel/types/peers/chat-invite-link-member.js +5 -4
  396. package/esm/highlevel/types/peers/chat-invite-link.js +5 -4
  397. package/esm/highlevel/types/peers/chat-location.js +5 -4
  398. package/esm/highlevel/types/peers/chat-member.js +5 -4
  399. package/esm/highlevel/types/peers/chat-permissions.js +4 -3
  400. package/esm/highlevel/types/peers/chat-photo.js +12 -9
  401. package/esm/highlevel/types/peers/chat-photo.js.map +1 -1
  402. package/esm/highlevel/types/peers/chat-preview.js +5 -4
  403. package/esm/highlevel/types/peers/chat.js +5 -4
  404. package/esm/highlevel/types/peers/forum-topic.js +5 -4
  405. package/esm/highlevel/types/peers/user.js +5 -4
  406. package/esm/highlevel/types/premium/boost-slot.js +5 -4
  407. package/esm/highlevel/types/premium/boost-stats.js +4 -3
  408. package/esm/highlevel/types/premium/boost.js +5 -4
  409. package/esm/highlevel/types/reactions/emoji-status.js +4 -3
  410. package/esm/highlevel/types/reactions/peer-reaction.js +5 -4
  411. package/esm/highlevel/types/reactions/reaction-count.js +4 -3
  412. package/esm/highlevel/types/stories/all-stories.js +5 -4
  413. package/esm/highlevel/types/stories/interactive/channel-post.js +5 -4
  414. package/esm/highlevel/types/stories/interactive/location.js +5 -4
  415. package/esm/highlevel/types/stories/interactive/reaction.js +4 -3
  416. package/esm/highlevel/types/stories/interactive/venue.js +5 -4
  417. package/esm/highlevel/types/stories/peer-stories.js +5 -4
  418. package/esm/highlevel/types/stories/stealth-mode.js +4 -3
  419. package/esm/highlevel/types/stories/story-interactions.js +5 -4
  420. package/esm/highlevel/types/stories/story-viewer.js +9 -7
  421. package/esm/highlevel/types/stories/story.js +5 -4
  422. package/esm/highlevel/types/updates/bot-chat-join-request.js +5 -4
  423. package/esm/highlevel/types/updates/bot-reaction.js +9 -7
  424. package/esm/highlevel/types/updates/bot-stopped.js +5 -4
  425. package/esm/highlevel/types/updates/callback-query.js +11 -9
  426. package/esm/highlevel/types/updates/callback-query.js.map +1 -1
  427. package/esm/highlevel/types/updates/chat-join-request.js +5 -4
  428. package/esm/highlevel/types/updates/chat-member-update.js +5 -4
  429. package/esm/highlevel/types/updates/chosen-inline-result.js +5 -4
  430. package/esm/highlevel/types/updates/delete-message-update.js +4 -3
  431. package/esm/highlevel/types/updates/delete-story-update.js +5 -4
  432. package/esm/highlevel/types/updates/history-read-update.js +4 -3
  433. package/esm/highlevel/types/updates/inline-query.js +5 -4
  434. package/esm/highlevel/types/updates/poll-update.js +5 -4
  435. package/esm/highlevel/types/updates/poll-vote.js +5 -4
  436. package/esm/highlevel/types/updates/pre-checkout-query.js +5 -4
  437. package/esm/highlevel/types/updates/story-update.js +5 -4
  438. package/esm/highlevel/types/updates/user-status-update.js +5 -4
  439. package/esm/highlevel/types/updates/user-status-update.js.map +1 -1
  440. package/esm/highlevel/types/updates/user-typing-update.js +4 -3
  441. package/esm/highlevel/updates/manager.d.ts +5 -3
  442. package/esm/highlevel/updates/manager.js +81 -67
  443. package/esm/highlevel/updates/manager.js.map +1 -1
  444. package/esm/highlevel/utils/convert-file-id.js +7 -6
  445. package/esm/highlevel/utils/convert-file-id.js.map +1 -1
  446. package/esm/highlevel/utils/file-utils.js +8 -4
  447. package/esm/highlevel/utils/file-utils.js.map +1 -1
  448. package/esm/highlevel/utils/inline-utils.js +4 -3
  449. package/esm/highlevel/utils/inline-utils.js.map +1 -1
  450. package/esm/highlevel/utils/inspectable.d.ts +1 -1
  451. package/esm/highlevel/utils/inspectable.js +3 -2
  452. package/esm/highlevel/utils/inspectable.js.map +1 -1
  453. package/esm/highlevel/utils/memoize.d.ts +1 -1
  454. package/esm/highlevel/utils/memoize.js +1 -0
  455. package/esm/highlevel/utils/memoize.js.map +1 -1
  456. package/esm/highlevel/utils/stream-utils.d.ts +0 -2
  457. package/esm/highlevel/utils/stream-utils.js +0 -26
  458. package/esm/highlevel/utils/stream-utils.js.map +1 -1
  459. package/esm/highlevel/utils/string-session.js +4 -3
  460. package/esm/highlevel/utils/string-session.js.map +1 -1
  461. package/esm/highlevel/worker/index.d.ts +3 -0
  462. package/esm/highlevel/worker/index.js +4 -0
  463. package/esm/highlevel/worker/index.js.map +1 -0
  464. package/esm/highlevel/worker/port.d.ts +6 -3
  465. package/esm/highlevel/worker/port.js +8 -2
  466. package/esm/highlevel/worker/port.js.map +1 -1
  467. package/esm/highlevel/worker/protocol.d.ts +5 -1
  468. package/esm/highlevel/worker/protocol.js.map +1 -1
  469. package/esm/highlevel/worker/worker.d.ts +11 -4
  470. package/esm/highlevel/worker/worker.js +51 -47
  471. package/esm/highlevel/worker/worker.js.map +1 -1
  472. package/esm/network/authorization.js +1 -0
  473. package/esm/network/authorization.js.map +1 -1
  474. package/esm/network/client.d.ts +4 -4
  475. package/esm/network/client.js +4 -2
  476. package/esm/network/client.js.map +1 -1
  477. package/esm/network/mtproto-session.d.ts +1 -0
  478. package/esm/network/mtproto-session.js +7 -1
  479. package/esm/network/mtproto-session.js.map +1 -1
  480. package/esm/network/multi-session-connection.d.ts +1 -0
  481. package/esm/network/multi-session-connection.js +6 -0
  482. package/esm/network/multi-session-connection.js.map +1 -1
  483. package/esm/network/network-manager.d.ts +5 -1
  484. package/esm/network/network-manager.js +24 -15
  485. package/esm/network/network-manager.js.map +1 -1
  486. package/esm/network/persistent-connection.d.ts +3 -0
  487. package/esm/network/persistent-connection.js +23 -1
  488. package/esm/network/persistent-connection.js.map +1 -1
  489. package/esm/network/session-connection.d.ts +2 -0
  490. package/esm/network/session-connection.js +21 -7
  491. package/esm/network/session-connection.js.map +1 -1
  492. package/esm/network/transports/index.d.ts +0 -3
  493. package/esm/network/transports/index.js +0 -3
  494. package/esm/network/transports/index.js.map +1 -1
  495. package/esm/platform.d.ts +18 -0
  496. package/esm/platform.js +31 -0
  497. package/esm/platform.js.map +1 -0
  498. package/esm/storage/index.d.ts +1 -2
  499. package/esm/storage/index.js +1 -2
  500. package/esm/storage/index.js.map +1 -1
  501. package/{cjs/storage/providers → esm/storage}/memory/driver.d.ts +1 -1
  502. package/esm/storage/memory/driver.js.map +1 -0
  503. package/{cjs/storage/providers → esm/storage}/memory/index.d.ts +2 -2
  504. package/esm/storage/memory/index.js.map +1 -0
  505. package/esm/storage/{providers/memory → memory}/repository/auth-keys.d.ts +1 -1
  506. package/esm/storage/memory/repository/auth-keys.js.map +1 -0
  507. package/{cjs/storage/providers → esm/storage}/memory/repository/kv.d.ts +1 -1
  508. package/esm/storage/memory/repository/kv.js.map +1 -0
  509. package/{cjs/storage/providers → esm/storage}/memory/repository/peers.d.ts +1 -1
  510. package/esm/storage/memory/repository/peers.js.map +1 -0
  511. package/{cjs/storage/providers → esm/storage}/memory/repository/ref-messages.d.ts +1 -1
  512. package/esm/storage/memory/repository/ref-messages.js.map +1 -0
  513. package/esm/storage/storage.js +3 -2
  514. package/esm/storage/storage.js.map +1 -1
  515. package/esm/utils/binary/asn1-parser.js +3 -3
  516. package/esm/utils/binary/asn1-parser.js.map +1 -1
  517. package/esm/utils/crypto/abstract.d.ts +0 -1
  518. package/esm/utils/crypto/abstract.js.map +1 -1
  519. package/esm/utils/crypto/index.d.ts +0 -2
  520. package/esm/utils/crypto/index.js +0 -2
  521. package/esm/utils/crypto/index.js.map +1 -1
  522. package/esm/utils/crypto/keys.js +6 -4
  523. package/esm/utils/crypto/keys.js.map +1 -1
  524. package/esm/utils/crypto/password.js +3 -3
  525. package/esm/utils/crypto/password.js.map +1 -1
  526. package/esm/utils/dcs.d.ts +4 -0
  527. package/esm/utils/dcs.js +0 -4
  528. package/esm/utils/dcs.js.map +1 -1
  529. package/esm/utils/{platform/error-reporting.d.ts → error-reporting.d.ts} +1 -1
  530. package/esm/utils/error-reporting.js.map +1 -0
  531. package/esm/utils/index.d.ts +4 -1
  532. package/esm/utils/index.js +6 -1
  533. package/esm/utils/index.js.map +1 -1
  534. package/esm/utils/links/common.js +1 -1
  535. package/esm/utils/links/common.js.map +1 -1
  536. package/esm/utils/logger.d.ts +1 -0
  537. package/esm/utils/logger.js +9 -22
  538. package/esm/utils/logger.js.map +1 -1
  539. package/package.json +24 -52
  540. package/cjs/highlevel/base.test.js +0 -14
  541. package/cjs/highlevel/base.test.js.map +0 -1
  542. package/cjs/highlevel/methods/files/_platform.js +0 -33
  543. package/cjs/highlevel/methods/files/_platform.js.map +0 -1
  544. package/cjs/highlevel/methods/files/_platform.web.d.ts +0 -1
  545. package/cjs/highlevel/methods/files/_platform.web.js +0 -26
  546. package/cjs/highlevel/methods/files/_platform.web.js.map +0 -1
  547. package/cjs/highlevel/methods/files/download-file.web.d.ts +0 -1
  548. package/cjs/highlevel/methods/files/download-file.web.js +0 -9
  549. package/cjs/highlevel/methods/files/download-file.web.js.map +0 -1
  550. package/cjs/highlevel/methods/messages/send-text.test.d.ts +0 -1
  551. package/cjs/highlevel/methods/messages/send-text.test.js +0 -140
  552. package/cjs/highlevel/methods/messages/send-text.test.js.map +0 -1
  553. package/cjs/highlevel/methods/users/get-users.test.d.ts +0 -1
  554. package/cjs/highlevel/methods/users/get-users.test.js +0 -33
  555. package/cjs/highlevel/methods/users/get-users.test.js.map +0 -1
  556. package/cjs/highlevel/methods/users/resolve-peer.test.d.ts +0 -1
  557. package/cjs/highlevel/methods/users/resolve-peer.test.js +0 -307
  558. package/cjs/highlevel/methods/users/resolve-peer.test.js.map +0 -1
  559. package/cjs/highlevel/types/bots/command-scope.d.ts +0 -63
  560. package/cjs/highlevel/types/bots/command-scope.js +0 -87
  561. package/cjs/highlevel/types/bots/command-scope.js.map +0 -1
  562. package/cjs/highlevel/types/bots/input/index.d.ts +0 -2
  563. package/cjs/highlevel/types/bots/input/index.js.map +0 -1
  564. package/cjs/highlevel/types/bots/input/input-inline-message.js +0 -179
  565. package/cjs/highlevel/types/bots/input/input-inline-message.js.map +0 -1
  566. package/cjs/highlevel/types/bots/input/input-inline-result.js +0 -490
  567. package/cjs/highlevel/types/bots/input/input-inline-result.js.map +0 -1
  568. package/cjs/highlevel/types/bots/keyboard-builder.js.map +0 -1
  569. package/cjs/highlevel/types/bots/keyboard-builder.test.d.ts +0 -1
  570. package/cjs/highlevel/types/bots/keyboard-builder.test.js +0 -162
  571. package/cjs/highlevel/types/bots/keyboard-builder.test.js.map +0 -1
  572. package/cjs/highlevel/types/bots/keyboards.d.ts +0 -239
  573. package/cjs/highlevel/types/bots/keyboards.js +0 -380
  574. package/cjs/highlevel/types/bots/keyboards.js.map +0 -1
  575. package/cjs/highlevel/types/bots/keyboards.test.d.ts +0 -1
  576. package/cjs/highlevel/types/bots/keyboards.test.js +0 -146
  577. package/cjs/highlevel/types/bots/keyboards.test.js.map +0 -1
  578. package/cjs/highlevel/types/media/input-media.js +0 -254
  579. package/cjs/highlevel/types/media/input-media.js.map +0 -1
  580. package/cjs/highlevel/types/misc/input-privacy-rule.d.ts +0 -63
  581. package/cjs/highlevel/types/misc/input-privacy-rule.js +0 -85
  582. package/cjs/highlevel/types/misc/input-privacy-rule.js.map +0 -1
  583. package/cjs/highlevel/types/peers/peers-index.test.d.ts +0 -1
  584. package/cjs/highlevel/types/peers/peers-index.test.js +0 -71
  585. package/cjs/highlevel/types/peers/peers-index.test.js.map +0 -1
  586. package/cjs/highlevel/types/peers/user.test.d.ts +0 -1
  587. package/cjs/highlevel/types/peers/user.test.js +0 -176
  588. package/cjs/highlevel/types/peers/user.test.js.map +0 -1
  589. package/cjs/highlevel/utils/file-type.test.d.ts +0 -1
  590. package/cjs/highlevel/utils/file-type.test.js +0 -64
  591. package/cjs/highlevel/utils/file-type.test.js.map +0 -1
  592. package/cjs/highlevel/utils/file-utils.test.d.ts +0 -1
  593. package/cjs/highlevel/utils/file-utils.test.js +0 -126
  594. package/cjs/highlevel/utils/file-utils.test.js.map +0 -1
  595. package/cjs/highlevel/utils/inline-utils.test.d.ts +0 -1
  596. package/cjs/highlevel/utils/inline-utils.test.js +0 -47
  597. package/cjs/highlevel/utils/inline-utils.test.js.map +0 -1
  598. package/cjs/highlevel/utils/inspectable.test.d.ts +0 -1
  599. package/cjs/highlevel/utils/inspectable.test.js +0 -97
  600. package/cjs/highlevel/utils/inspectable.test.js.map +0 -1
  601. package/cjs/highlevel/utils/memoize.test.d.ts +0 -1
  602. package/cjs/highlevel/utils/memoize.test.js +0 -60
  603. package/cjs/highlevel/utils/memoize.test.js.map +0 -1
  604. package/cjs/highlevel/utils/peer-utils.test.d.ts +0 -1
  605. package/cjs/highlevel/utils/peer-utils.test.js +0 -109
  606. package/cjs/highlevel/utils/peer-utils.test.js.map +0 -1
  607. package/cjs/highlevel/utils/platform/storage.d.ts +0 -1
  608. package/cjs/highlevel/utils/platform/storage.js +0 -10
  609. package/cjs/highlevel/utils/platform/storage.js.map +0 -1
  610. package/cjs/highlevel/utils/platform/storage.web.d.ts +0 -1
  611. package/cjs/highlevel/utils/platform/storage.web.js +0 -14
  612. package/cjs/highlevel/utils/platform/storage.web.js.map +0 -1
  613. package/cjs/highlevel/utils/query-batcher.test.d.ts +0 -1
  614. package/cjs/highlevel/utils/query-batcher.test.js +0 -502
  615. package/cjs/highlevel/utils/query-batcher.test.js.map +0 -1
  616. package/cjs/highlevel/utils/stream-utils.test.d.ts +0 -1
  617. package/cjs/highlevel/utils/stream-utils.test.js +0 -98
  618. package/cjs/highlevel/utils/stream-utils.test.js.map +0 -1
  619. package/cjs/highlevel/utils/string-session.test.d.ts +0 -1
  620. package/cjs/highlevel/utils/string-session.test.js +0 -198
  621. package/cjs/highlevel/utils/string-session.test.js.map +0 -1
  622. package/cjs/highlevel/utils/voice-utils.test.d.ts +0 -1
  623. package/cjs/highlevel/utils/voice-utils.test.js +0 -28
  624. package/cjs/highlevel/utils/voice-utils.test.js.map +0 -1
  625. package/cjs/highlevel/worker/platform/connect.d.ts +0 -2
  626. package/cjs/highlevel/worker/platform/connect.js +0 -19
  627. package/cjs/highlevel/worker/platform/connect.js.map +0 -1
  628. package/cjs/highlevel/worker/platform/connect.web.d.ts +0 -2
  629. package/cjs/highlevel/worker/platform/connect.web.js +0 -51
  630. package/cjs/highlevel/worker/platform/connect.web.js.map +0 -1
  631. package/cjs/highlevel/worker/platform/register.d.ts +0 -2
  632. package/cjs/highlevel/worker/platform/register.js +0 -20
  633. package/cjs/highlevel/worker/platform/register.js.map +0 -1
  634. package/cjs/highlevel/worker/platform/register.web.d.ts +0 -2
  635. package/cjs/highlevel/worker/platform/register.web.js +0 -64
  636. package/cjs/highlevel/worker/platform/register.web.js.map +0 -1
  637. package/cjs/network/auth-key.test.d.ts +0 -1
  638. package/cjs/network/auth-key.test.js +0 -111
  639. package/cjs/network/auth-key.test.js.map +0 -1
  640. package/cjs/network/config-manager.test.d.ts +0 -1
  641. package/cjs/network/config-manager.test.js +0 -174
  642. package/cjs/network/config-manager.test.js.map +0 -1
  643. package/cjs/network/persistent-connection.test.d.ts +0 -1
  644. package/cjs/network/persistent-connection.test.js +0 -157
  645. package/cjs/network/persistent-connection.test.js.map +0 -1
  646. package/cjs/network/transports/intermediate.test.d.ts +0 -1
  647. package/cjs/network/transports/intermediate.test.js +0 -84
  648. package/cjs/network/transports/intermediate.test.js.map +0 -1
  649. package/cjs/network/transports/obfuscated.test.d.ts +0 -1
  650. package/cjs/network/transports/obfuscated.test.js +0 -131
  651. package/cjs/network/transports/obfuscated.test.js.map +0 -1
  652. package/cjs/network/transports/tcp.d.ts +0 -32
  653. package/cjs/network/transports/tcp.js +0 -130
  654. package/cjs/network/transports/tcp.js.map +0 -1
  655. package/cjs/network/transports/tcp.test.d.ts +0 -1
  656. package/cjs/network/transports/tcp.test.js +0 -103
  657. package/cjs/network/transports/tcp.test.js.map +0 -1
  658. package/cjs/network/transports/websocket.d.ts +0 -46
  659. package/cjs/network/transports/websocket.js +0 -124
  660. package/cjs/network/transports/websocket.js.map +0 -1
  661. package/cjs/network/transports/websocket.test.d.ts +0 -1
  662. package/cjs/network/transports/websocket.test.js +0 -91
  663. package/cjs/network/transports/websocket.test.js.map +0 -1
  664. package/cjs/storage/providers/idb/driver.d.ts +0 -18
  665. package/cjs/storage/providers/idb/driver.js +0 -138
  666. package/cjs/storage/providers/idb/driver.js.map +0 -1
  667. package/cjs/storage/providers/idb/idb.test.d.ts +0 -1
  668. package/cjs/storage/providers/idb/idb.test.js +0 -29
  669. package/cjs/storage/providers/idb/idb.test.js.map +0 -1
  670. package/cjs/storage/providers/idb/index.d.ts +0 -22
  671. package/cjs/storage/providers/idb/index.js +0 -28
  672. package/cjs/storage/providers/idb/index.js.map +0 -1
  673. package/cjs/storage/providers/idb/repository/auth-keys.d.ts +0 -14
  674. package/cjs/storage/providers/idb/repository/auth-keys.js +0 -70
  675. package/cjs/storage/providers/idb/repository/auth-keys.js.map +0 -1
  676. package/cjs/storage/providers/idb/repository/kv.d.ts +0 -11
  677. package/cjs/storage/providers/idb/repository/kv.js +0 -34
  678. package/cjs/storage/providers/idb/repository/kv.js.map +0 -1
  679. package/cjs/storage/providers/idb/repository/peers.d.ts +0 -12
  680. package/cjs/storage/providers/idb/repository/peers.js +0 -38
  681. package/cjs/storage/providers/idb/repository/peers.js.map +0 -1
  682. package/cjs/storage/providers/idb/repository/ref-messages.d.ts +0 -12
  683. package/cjs/storage/providers/idb/repository/ref-messages.js +0 -57
  684. package/cjs/storage/providers/idb/repository/ref-messages.js.map +0 -1
  685. package/cjs/storage/providers/idb/utils.d.ts +0 -3
  686. package/cjs/storage/providers/idb/utils.js +0 -27
  687. package/cjs/storage/providers/idb/utils.js.map +0 -1
  688. package/cjs/storage/providers/memory/driver.js.map +0 -1
  689. package/cjs/storage/providers/memory/index.js.map +0 -1
  690. package/cjs/storage/providers/memory/memory.test.d.ts +0 -1
  691. package/cjs/storage/providers/memory/memory.test.js +0 -13
  692. package/cjs/storage/providers/memory/memory.test.js.map +0 -1
  693. package/cjs/storage/providers/memory/repository/auth-keys.js.map +0 -1
  694. package/cjs/storage/providers/memory/repository/kv.js.map +0 -1
  695. package/cjs/storage/providers/memory/repository/peers.js.map +0 -1
  696. package/cjs/storage/providers/memory/repository/ref-messages.js.map +0 -1
  697. package/cjs/storage/service/auth-keys.test.d.ts +0 -1
  698. package/cjs/storage/service/auth-keys.test.js +0 -22
  699. package/cjs/storage/service/auth-keys.test.js.map +0 -1
  700. package/cjs/storage/service/updates.test.d.ts +0 -1
  701. package/cjs/storage/service/updates.test.js +0 -60
  702. package/cjs/storage/service/updates.test.js.map +0 -1
  703. package/cjs/storage/service/utils.test-utils.d.ts +0 -2
  704. package/cjs/storage/service/utils.test-utils.js +0 -19
  705. package/cjs/storage/service/utils.test-utils.js.map +0 -1
  706. package/cjs/utils/async-lock.test.d.ts +0 -1
  707. package/cjs/utils/async-lock.test.js +0 -25
  708. package/cjs/utils/async-lock.test.js.map +0 -1
  709. package/cjs/utils/bigint-utils.test.d.ts +0 -1
  710. package/cjs/utils/bigint-utils.test.js +0 -150
  711. package/cjs/utils/bigint-utils.test.js.map +0 -1
  712. package/cjs/utils/buffer-utils.test.d.ts +0 -1
  713. package/cjs/utils/buffer-utils.test.js +0 -69
  714. package/cjs/utils/buffer-utils.test.js.map +0 -1
  715. package/cjs/utils/condition-variable.test.d.ts +0 -1
  716. package/cjs/utils/condition-variable.test.js +0 -27
  717. package/cjs/utils/condition-variable.test.js.map +0 -1
  718. package/cjs/utils/controllable-promise.test.d.ts +0 -1
  719. package/cjs/utils/controllable-promise.test.js +0 -17
  720. package/cjs/utils/controllable-promise.test.js.map +0 -1
  721. package/cjs/utils/crypto/factorization.test.d.ts +0 -1
  722. package/cjs/utils/crypto/factorization.test.js +0 -19
  723. package/cjs/utils/crypto/factorization.test.js.map +0 -1
  724. package/cjs/utils/crypto/keys.test.d.ts +0 -1
  725. package/cjs/utils/crypto/keys.test.js +0 -40
  726. package/cjs/utils/crypto/keys.test.js.map +0 -1
  727. package/cjs/utils/crypto/miller-rabin.test.d.ts +0 -1
  728. package/cjs/utils/crypto/miller-rabin.test.js +0 -60
  729. package/cjs/utils/crypto/miller-rabin.test.js.map +0 -1
  730. package/cjs/utils/crypto/mtproto.test.d.ts +0 -1
  731. package/cjs/utils/crypto/mtproto.test.js +0 -50
  732. package/cjs/utils/crypto/mtproto.test.js.map +0 -1
  733. package/cjs/utils/crypto/node.d.ts +0 -21
  734. package/cjs/utils/crypto/node.js +0 -74
  735. package/cjs/utils/crypto/node.js.map +0 -1
  736. package/cjs/utils/crypto/node.test.d.ts +0 -1
  737. package/cjs/utils/crypto/node.test.js +0 -14
  738. package/cjs/utils/crypto/node.test.js.map +0 -1
  739. package/cjs/utils/crypto/password.test.d.ts +0 -1
  740. package/cjs/utils/crypto/password.test.js +0 -95
  741. package/cjs/utils/crypto/password.test.js.map +0 -1
  742. package/cjs/utils/crypto/utils.test.d.ts +0 -1
  743. package/cjs/utils/crypto/utils.test.js +0 -49
  744. package/cjs/utils/crypto/utils.test.js.map +0 -1
  745. package/cjs/utils/crypto/wasm.d.ts +0 -22
  746. package/cjs/utils/crypto/wasm.js +0 -41
  747. package/cjs/utils/crypto/wasm.js.map +0 -1
  748. package/cjs/utils/crypto/web.d.ts +0 -11
  749. package/cjs/utils/crypto/web.js +0 -40
  750. package/cjs/utils/crypto/web.js.map +0 -1
  751. package/cjs/utils/crypto/web.test.d.ts +0 -1
  752. package/cjs/utils/crypto/web.test.js +0 -17
  753. package/cjs/utils/crypto/web.test.js.map +0 -1
  754. package/cjs/utils/deque.test.d.ts +0 -1
  755. package/cjs/utils/deque.test.js +0 -128
  756. package/cjs/utils/deque.test.js.map +0 -1
  757. package/cjs/utils/function-utils.test.d.ts +0 -1
  758. package/cjs/utils/function-utils.test.js +0 -23
  759. package/cjs/utils/function-utils.test.js.map +0 -1
  760. package/cjs/utils/linked-list.test.d.ts +0 -1
  761. package/cjs/utils/linked-list.test.js +0 -36
  762. package/cjs/utils/linked-list.test.js.map +0 -1
  763. package/cjs/utils/links/bots.test.d.ts +0 -1
  764. package/cjs/utils/links/bots.test.js +0 -152
  765. package/cjs/utils/links/bots.test.js.map +0 -1
  766. package/cjs/utils/links/chat.test.d.ts +0 -1
  767. package/cjs/utils/links/chat.test.js +0 -84
  768. package/cjs/utils/links/chat.test.js.map +0 -1
  769. package/cjs/utils/links/misc.test.d.ts +0 -1
  770. package/cjs/utils/links/misc.test.js +0 -153
  771. package/cjs/utils/links/misc.test.js.map +0 -1
  772. package/cjs/utils/links/proxy.test.d.ts +0 -1
  773. package/cjs/utils/links/proxy.test.js +0 -74
  774. package/cjs/utils/links/proxy.test.js.map +0 -1
  775. package/cjs/utils/links/user.test.d.ts +0 -1
  776. package/cjs/utils/links/user.test.js +0 -63
  777. package/cjs/utils/links/user.test.js.map +0 -1
  778. package/cjs/utils/logger.test.d.ts +0 -1
  779. package/cjs/utils/logger.test.js +0 -139
  780. package/cjs/utils/logger.test.js.map +0 -1
  781. package/cjs/utils/long-utils.test.d.ts +0 -1
  782. package/cjs/utils/long-utils.test.js +0 -158
  783. package/cjs/utils/long-utils.test.js.map +0 -1
  784. package/cjs/utils/lru-map.test.d.ts +0 -1
  785. package/cjs/utils/lru-map.test.js +0 -96
  786. package/cjs/utils/lru-map.test.js.map +0 -1
  787. package/cjs/utils/lru-set.test.d.ts +0 -1
  788. package/cjs/utils/lru-set.test.js +0 -77
  789. package/cjs/utils/lru-set.test.js.map +0 -1
  790. package/cjs/utils/peer-utils.test.d.ts +0 -1
  791. package/cjs/utils/peer-utils.test.js +0 -110
  792. package/cjs/utils/peer-utils.test.js.map +0 -1
  793. package/cjs/utils/platform/crypto.d.ts +0 -1
  794. package/cjs/utils/platform/crypto.js +0 -8
  795. package/cjs/utils/platform/crypto.js.map +0 -1
  796. package/cjs/utils/platform/crypto.web.d.ts +0 -1
  797. package/cjs/utils/platform/crypto.web.js +0 -14
  798. package/cjs/utils/platform/crypto.web.js.map +0 -1
  799. package/cjs/utils/platform/error-reporting.js.map +0 -1
  800. package/cjs/utils/platform/exit-hook.d.ts +0 -1
  801. package/cjs/utils/platform/exit-hook.js +0 -45
  802. package/cjs/utils/platform/exit-hook.js.map +0 -1
  803. package/cjs/utils/platform/exit-hook.web.d.ts +0 -1
  804. package/cjs/utils/platform/exit-hook.web.js +0 -21
  805. package/cjs/utils/platform/exit-hook.web.js.map +0 -1
  806. package/cjs/utils/platform/logging.d.ts +0 -1
  807. package/cjs/utils/platform/logging.js +0 -34
  808. package/cjs/utils/platform/logging.js.map +0 -1
  809. package/cjs/utils/platform/logging.web.d.ts +0 -1
  810. package/cjs/utils/platform/logging.web.js +0 -35
  811. package/cjs/utils/platform/logging.web.js.map +0 -1
  812. package/cjs/utils/platform/transport.d.ts +0 -1
  813. package/cjs/utils/platform/transport.js +0 -8
  814. package/cjs/utils/platform/transport.js.map +0 -1
  815. package/cjs/utils/platform/transport.web.d.ts +0 -1
  816. package/cjs/utils/platform/transport.web.js +0 -15
  817. package/cjs/utils/platform/transport.web.js.map +0 -1
  818. package/cjs/utils/sorted-array.test.d.ts +0 -1
  819. package/cjs/utils/sorted-array.test.js +0 -66
  820. package/cjs/utils/sorted-array.test.js.map +0 -1
  821. package/cjs/utils/tl-json.test.d.ts +0 -1
  822. package/cjs/utils/tl-json.test.js +0 -83
  823. package/cjs/utils/tl-json.test.js.map +0 -1
  824. package/cjs/utils/type-assertions.test.d.ts +0 -1
  825. package/cjs/utils/type-assertions.test.js +0 -67
  826. package/cjs/utils/type-assertions.test.js.map +0 -1
  827. package/esm/highlevel/base.test.d.ts +0 -1
  828. package/esm/highlevel/base.test.js +0 -12
  829. package/esm/highlevel/base.test.js.map +0 -1
  830. package/esm/highlevel/methods/files/_platform.d.ts +0 -1
  831. package/esm/highlevel/methods/files/_platform.js +0 -26
  832. package/esm/highlevel/methods/files/_platform.js.map +0 -1
  833. package/esm/highlevel/methods/files/_platform.web.d.ts +0 -1
  834. package/esm/highlevel/methods/files/_platform.web.js +0 -19
  835. package/esm/highlevel/methods/files/_platform.web.js.map +0 -1
  836. package/esm/highlevel/methods/files/download-file.web.d.ts +0 -1
  837. package/esm/highlevel/methods/files/download-file.web.js +0 -5
  838. package/esm/highlevel/methods/files/download-file.web.js.map +0 -1
  839. package/esm/highlevel/methods/messages/send-text.test.d.ts +0 -1
  840. package/esm/highlevel/methods/messages/send-text.test.js +0 -135
  841. package/esm/highlevel/methods/messages/send-text.test.js.map +0 -1
  842. package/esm/highlevel/methods/users/get-users.test.d.ts +0 -1
  843. package/esm/highlevel/methods/users/get-users.test.js +0 -28
  844. package/esm/highlevel/methods/users/get-users.test.js.map +0 -1
  845. package/esm/highlevel/methods/users/resolve-peer.test.d.ts +0 -1
  846. package/esm/highlevel/methods/users/resolve-peer.test.js +0 -302
  847. package/esm/highlevel/methods/users/resolve-peer.test.js.map +0 -1
  848. package/esm/highlevel/types/bots/command-scope.d.ts +0 -63
  849. package/esm/highlevel/types/bots/command-scope.js +0 -84
  850. package/esm/highlevel/types/bots/command-scope.js.map +0 -1
  851. package/esm/highlevel/types/bots/input/index.d.ts +0 -2
  852. package/esm/highlevel/types/bots/input/index.js +0 -3
  853. package/esm/highlevel/types/bots/input/index.js.map +0 -1
  854. package/esm/highlevel/types/bots/input/input-inline-message.js +0 -176
  855. package/esm/highlevel/types/bots/input/input-inline-message.js.map +0 -1
  856. package/esm/highlevel/types/bots/input/input-inline-result.js +0 -487
  857. package/esm/highlevel/types/bots/input/input-inline-result.js.map +0 -1
  858. package/esm/highlevel/types/bots/keyboard-builder.js.map +0 -1
  859. package/esm/highlevel/types/bots/keyboard-builder.test.d.ts +0 -1
  860. package/esm/highlevel/types/bots/keyboard-builder.test.js +0 -160
  861. package/esm/highlevel/types/bots/keyboard-builder.test.js.map +0 -1
  862. package/esm/highlevel/types/bots/keyboards.d.ts +0 -239
  863. package/esm/highlevel/types/bots/keyboards.js +0 -377
  864. package/esm/highlevel/types/bots/keyboards.js.map +0 -1
  865. package/esm/highlevel/types/bots/keyboards.test.d.ts +0 -1
  866. package/esm/highlevel/types/bots/keyboards.test.js +0 -144
  867. package/esm/highlevel/types/bots/keyboards.test.js.map +0 -1
  868. package/esm/highlevel/types/media/input-media.js +0 -251
  869. package/esm/highlevel/types/media/input-media.js.map +0 -1
  870. package/esm/highlevel/types/misc/input-privacy-rule.d.ts +0 -63
  871. package/esm/highlevel/types/misc/input-privacy-rule.js +0 -82
  872. package/esm/highlevel/types/misc/input-privacy-rule.js.map +0 -1
  873. package/esm/highlevel/types/peers/peers-index.test.d.ts +0 -1
  874. package/esm/highlevel/types/peers/peers-index.test.js +0 -69
  875. package/esm/highlevel/types/peers/peers-index.test.js.map +0 -1
  876. package/esm/highlevel/types/peers/user.test.d.ts +0 -1
  877. package/esm/highlevel/types/peers/user.test.js +0 -171
  878. package/esm/highlevel/types/peers/user.test.js.map +0 -1
  879. package/esm/highlevel/utils/file-type.test.d.ts +0 -1
  880. package/esm/highlevel/utils/file-type.test.js +0 -62
  881. package/esm/highlevel/utils/file-type.test.js.map +0 -1
  882. package/esm/highlevel/utils/file-utils.test.d.ts +0 -1
  883. package/esm/highlevel/utils/file-utils.test.js +0 -124
  884. package/esm/highlevel/utils/file-utils.test.js.map +0 -1
  885. package/esm/highlevel/utils/inline-utils.test.d.ts +0 -1
  886. package/esm/highlevel/utils/inline-utils.test.js +0 -42
  887. package/esm/highlevel/utils/inline-utils.test.js.map +0 -1
  888. package/esm/highlevel/utils/inspectable.test.d.ts +0 -1
  889. package/esm/highlevel/utils/inspectable.test.js +0 -95
  890. package/esm/highlevel/utils/inspectable.test.js.map +0 -1
  891. package/esm/highlevel/utils/memoize.test.d.ts +0 -1
  892. package/esm/highlevel/utils/memoize.test.js +0 -58
  893. package/esm/highlevel/utils/memoize.test.js.map +0 -1
  894. package/esm/highlevel/utils/peer-utils.test.d.ts +0 -1
  895. package/esm/highlevel/utils/peer-utils.test.js +0 -107
  896. package/esm/highlevel/utils/peer-utils.test.js.map +0 -1
  897. package/esm/highlevel/utils/platform/storage.d.ts +0 -1
  898. package/esm/highlevel/utils/platform/storage.js +0 -6
  899. package/esm/highlevel/utils/platform/storage.js.map +0 -1
  900. package/esm/highlevel/utils/platform/storage.web.d.ts +0 -1
  901. package/esm/highlevel/utils/platform/storage.web.js +0 -10
  902. package/esm/highlevel/utils/platform/storage.web.js.map +0 -1
  903. package/esm/highlevel/utils/query-batcher.test.d.ts +0 -1
  904. package/esm/highlevel/utils/query-batcher.test.js +0 -500
  905. package/esm/highlevel/utils/query-batcher.test.js.map +0 -1
  906. package/esm/highlevel/utils/stream-utils.test.d.ts +0 -1
  907. package/esm/highlevel/utils/stream-utils.test.js +0 -96
  908. package/esm/highlevel/utils/stream-utils.test.js.map +0 -1
  909. package/esm/highlevel/utils/string-session.test.d.ts +0 -1
  910. package/esm/highlevel/utils/string-session.test.js +0 -196
  911. package/esm/highlevel/utils/string-session.test.js.map +0 -1
  912. package/esm/highlevel/utils/voice-utils.test.d.ts +0 -1
  913. package/esm/highlevel/utils/voice-utils.test.js +0 -26
  914. package/esm/highlevel/utils/voice-utils.test.js.map +0 -1
  915. package/esm/highlevel/worker/platform/connect.d.ts +0 -2
  916. package/esm/highlevel/worker/platform/connect.js +0 -15
  917. package/esm/highlevel/worker/platform/connect.js.map +0 -1
  918. package/esm/highlevel/worker/platform/connect.web.d.ts +0 -2
  919. package/esm/highlevel/worker/platform/connect.web.js +0 -47
  920. package/esm/highlevel/worker/platform/connect.web.js.map +0 -1
  921. package/esm/highlevel/worker/platform/register.d.ts +0 -2
  922. package/esm/highlevel/worker/platform/register.js +0 -16
  923. package/esm/highlevel/worker/platform/register.js.map +0 -1
  924. package/esm/highlevel/worker/platform/register.web.d.ts +0 -2
  925. package/esm/highlevel/worker/platform/register.web.js +0 -60
  926. package/esm/highlevel/worker/platform/register.web.js.map +0 -1
  927. package/esm/network/auth-key.test.d.ts +0 -1
  928. package/esm/network/auth-key.test.js +0 -106
  929. package/esm/network/auth-key.test.js.map +0 -1
  930. package/esm/network/config-manager.test.d.ts +0 -1
  931. package/esm/network/config-manager.test.js +0 -172
  932. package/esm/network/config-manager.test.js.map +0 -1
  933. package/esm/network/persistent-connection.test.d.ts +0 -1
  934. package/esm/network/persistent-connection.test.js +0 -155
  935. package/esm/network/persistent-connection.test.js.map +0 -1
  936. package/esm/network/transports/intermediate.test.d.ts +0 -1
  937. package/esm/network/transports/intermediate.test.js +0 -82
  938. package/esm/network/transports/intermediate.test.js.map +0 -1
  939. package/esm/network/transports/obfuscated.test.d.ts +0 -1
  940. package/esm/network/transports/obfuscated.test.js +0 -129
  941. package/esm/network/transports/obfuscated.test.js.map +0 -1
  942. package/esm/network/transports/tcp.d.ts +0 -32
  943. package/esm/network/transports/tcp.js +0 -122
  944. package/esm/network/transports/tcp.js.map +0 -1
  945. package/esm/network/transports/tcp.test.d.ts +0 -1
  946. package/esm/network/transports/tcp.test.js +0 -101
  947. package/esm/network/transports/tcp.test.js.map +0 -1
  948. package/esm/network/transports/websocket.d.ts +0 -46
  949. package/esm/network/transports/websocket.js +0 -116
  950. package/esm/network/transports/websocket.js.map +0 -1
  951. package/esm/network/transports/websocket.test.d.ts +0 -1
  952. package/esm/network/transports/websocket.test.js +0 -89
  953. package/esm/network/transports/websocket.test.js.map +0 -1
  954. package/esm/storage/providers/idb/driver.d.ts +0 -18
  955. package/esm/storage/providers/idb/driver.js +0 -134
  956. package/esm/storage/providers/idb/driver.js.map +0 -1
  957. package/esm/storage/providers/idb/idb.test.d.ts +0 -1
  958. package/esm/storage/providers/idb/idb.test.js +0 -27
  959. package/esm/storage/providers/idb/idb.test.js.map +0 -1
  960. package/esm/storage/providers/idb/index.d.ts +0 -22
  961. package/esm/storage/providers/idb/index.js +0 -23
  962. package/esm/storage/providers/idb/index.js.map +0 -1
  963. package/esm/storage/providers/idb/repository/auth-keys.d.ts +0 -14
  964. package/esm/storage/providers/idb/repository/auth-keys.js +0 -66
  965. package/esm/storage/providers/idb/repository/auth-keys.js.map +0 -1
  966. package/esm/storage/providers/idb/repository/kv.d.ts +0 -11
  967. package/esm/storage/providers/idb/repository/kv.js +0 -30
  968. package/esm/storage/providers/idb/repository/kv.js.map +0 -1
  969. package/esm/storage/providers/idb/repository/peers.d.ts +0 -12
  970. package/esm/storage/providers/idb/repository/peers.js +0 -34
  971. package/esm/storage/providers/idb/repository/peers.js.map +0 -1
  972. package/esm/storage/providers/idb/repository/ref-messages.d.ts +0 -12
  973. package/esm/storage/providers/idb/repository/ref-messages.js +0 -53
  974. package/esm/storage/providers/idb/repository/ref-messages.js.map +0 -1
  975. package/esm/storage/providers/idb/utils.d.ts +0 -3
  976. package/esm/storage/providers/idb/utils.js +0 -21
  977. package/esm/storage/providers/idb/utils.js.map +0 -1
  978. package/esm/storage/providers/memory/driver.js.map +0 -1
  979. package/esm/storage/providers/memory/index.js.map +0 -1
  980. package/esm/storage/providers/memory/memory.test.d.ts +0 -1
  981. package/esm/storage/providers/memory/memory.test.js +0 -11
  982. package/esm/storage/providers/memory/memory.test.js.map +0 -1
  983. package/esm/storage/providers/memory/repository/auth-keys.js.map +0 -1
  984. package/esm/storage/providers/memory/repository/kv.js.map +0 -1
  985. package/esm/storage/providers/memory/repository/peers.js.map +0 -1
  986. package/esm/storage/providers/memory/repository/ref-messages.js.map +0 -1
  987. package/esm/storage/service/auth-keys.test.d.ts +0 -1
  988. package/esm/storage/service/auth-keys.test.js +0 -20
  989. package/esm/storage/service/auth-keys.test.js.map +0 -1
  990. package/esm/storage/service/updates.test.d.ts +0 -1
  991. package/esm/storage/service/updates.test.js +0 -58
  992. package/esm/storage/service/updates.test.js.map +0 -1
  993. package/esm/storage/service/utils.test-utils.d.ts +0 -2
  994. package/esm/storage/service/utils.test-utils.js +0 -15
  995. package/esm/storage/service/utils.test-utils.js.map +0 -1
  996. package/esm/utils/async-lock.test.d.ts +0 -1
  997. package/esm/utils/async-lock.test.js +0 -23
  998. package/esm/utils/async-lock.test.js.map +0 -1
  999. package/esm/utils/bigint-utils.test.d.ts +0 -1
  1000. package/esm/utils/bigint-utils.test.js +0 -148
  1001. package/esm/utils/bigint-utils.test.js.map +0 -1
  1002. package/esm/utils/buffer-utils.test.d.ts +0 -1
  1003. package/esm/utils/buffer-utils.test.js +0 -67
  1004. package/esm/utils/buffer-utils.test.js.map +0 -1
  1005. package/esm/utils/condition-variable.test.d.ts +0 -1
  1006. package/esm/utils/condition-variable.test.js +0 -25
  1007. package/esm/utils/condition-variable.test.js.map +0 -1
  1008. package/esm/utils/controllable-promise.test.d.ts +0 -1
  1009. package/esm/utils/controllable-promise.test.js +0 -15
  1010. package/esm/utils/controllable-promise.test.js.map +0 -1
  1011. package/esm/utils/crypto/factorization.test.d.ts +0 -1
  1012. package/esm/utils/crypto/factorization.test.js +0 -17
  1013. package/esm/utils/crypto/factorization.test.js.map +0 -1
  1014. package/esm/utils/crypto/keys.test.d.ts +0 -1
  1015. package/esm/utils/crypto/keys.test.js +0 -38
  1016. package/esm/utils/crypto/keys.test.js.map +0 -1
  1017. package/esm/utils/crypto/miller-rabin.test.d.ts +0 -1
  1018. package/esm/utils/crypto/miller-rabin.test.js +0 -58
  1019. package/esm/utils/crypto/miller-rabin.test.js.map +0 -1
  1020. package/esm/utils/crypto/mtproto.test.d.ts +0 -1
  1021. package/esm/utils/crypto/mtproto.test.js +0 -48
  1022. package/esm/utils/crypto/mtproto.test.js.map +0 -1
  1023. package/esm/utils/crypto/node.d.ts +0 -21
  1024. package/esm/utils/crypto/node.js +0 -69
  1025. package/esm/utils/crypto/node.js.map +0 -1
  1026. package/esm/utils/crypto/node.test.d.ts +0 -1
  1027. package/esm/utils/crypto/node.test.js +0 -12
  1028. package/esm/utils/crypto/node.test.js.map +0 -1
  1029. package/esm/utils/crypto/password.test.d.ts +0 -1
  1030. package/esm/utils/crypto/password.test.js +0 -90
  1031. package/esm/utils/crypto/password.test.js.map +0 -1
  1032. package/esm/utils/crypto/utils.test.d.ts +0 -1
  1033. package/esm/utils/crypto/utils.test.js +0 -47
  1034. package/esm/utils/crypto/utils.test.js.map +0 -1
  1035. package/esm/utils/crypto/wasm.d.ts +0 -22
  1036. package/esm/utils/crypto/wasm.js +0 -37
  1037. package/esm/utils/crypto/wasm.js.map +0 -1
  1038. package/esm/utils/crypto/web.d.ts +0 -11
  1039. package/esm/utils/crypto/web.js +0 -36
  1040. package/esm/utils/crypto/web.js.map +0 -1
  1041. package/esm/utils/crypto/web.test.d.ts +0 -1
  1042. package/esm/utils/crypto/web.test.js +0 -15
  1043. package/esm/utils/crypto/web.test.js.map +0 -1
  1044. package/esm/utils/deque.test.d.ts +0 -1
  1045. package/esm/utils/deque.test.js +0 -126
  1046. package/esm/utils/deque.test.js.map +0 -1
  1047. package/esm/utils/function-utils.test.d.ts +0 -1
  1048. package/esm/utils/function-utils.test.js +0 -21
  1049. package/esm/utils/function-utils.test.js.map +0 -1
  1050. package/esm/utils/linked-list.test.d.ts +0 -1
  1051. package/esm/utils/linked-list.test.js +0 -34
  1052. package/esm/utils/linked-list.test.js.map +0 -1
  1053. package/esm/utils/links/bots.test.d.ts +0 -1
  1054. package/esm/utils/links/bots.test.js +0 -150
  1055. package/esm/utils/links/bots.test.js.map +0 -1
  1056. package/esm/utils/links/chat.test.d.ts +0 -1
  1057. package/esm/utils/links/chat.test.js +0 -82
  1058. package/esm/utils/links/chat.test.js.map +0 -1
  1059. package/esm/utils/links/misc.test.d.ts +0 -1
  1060. package/esm/utils/links/misc.test.js +0 -151
  1061. package/esm/utils/links/misc.test.js.map +0 -1
  1062. package/esm/utils/links/proxy.test.d.ts +0 -1
  1063. package/esm/utils/links/proxy.test.js +0 -72
  1064. package/esm/utils/links/proxy.test.js.map +0 -1
  1065. package/esm/utils/links/user.test.d.ts +0 -1
  1066. package/esm/utils/links/user.test.js +0 -61
  1067. package/esm/utils/links/user.test.js.map +0 -1
  1068. package/esm/utils/logger.test.d.ts +0 -1
  1069. package/esm/utils/logger.test.js +0 -134
  1070. package/esm/utils/logger.test.js.map +0 -1
  1071. package/esm/utils/long-utils.test.d.ts +0 -1
  1072. package/esm/utils/long-utils.test.js +0 -153
  1073. package/esm/utils/long-utils.test.js.map +0 -1
  1074. package/esm/utils/lru-map.test.d.ts +0 -1
  1075. package/esm/utils/lru-map.test.js +0 -94
  1076. package/esm/utils/lru-map.test.js.map +0 -1
  1077. package/esm/utils/lru-set.test.d.ts +0 -1
  1078. package/esm/utils/lru-set.test.js +0 -72
  1079. package/esm/utils/lru-set.test.js.map +0 -1
  1080. package/esm/utils/peer-utils.test.d.ts +0 -1
  1081. package/esm/utils/peer-utils.test.js +0 -105
  1082. package/esm/utils/peer-utils.test.js.map +0 -1
  1083. package/esm/utils/platform/crypto.d.ts +0 -1
  1084. package/esm/utils/platform/crypto.js +0 -4
  1085. package/esm/utils/platform/crypto.js.map +0 -1
  1086. package/esm/utils/platform/crypto.web.d.ts +0 -1
  1087. package/esm/utils/platform/crypto.web.js +0 -10
  1088. package/esm/utils/platform/crypto.web.js.map +0 -1
  1089. package/esm/utils/platform/error-reporting.js.map +0 -1
  1090. package/esm/utils/platform/exit-hook.d.ts +0 -1
  1091. package/esm/utils/platform/exit-hook.js +0 -41
  1092. package/esm/utils/platform/exit-hook.js.map +0 -1
  1093. package/esm/utils/platform/exit-hook.web.d.ts +0 -1
  1094. package/esm/utils/platform/exit-hook.web.js +0 -17
  1095. package/esm/utils/platform/exit-hook.web.js.map +0 -1
  1096. package/esm/utils/platform/logging.d.ts +0 -1
  1097. package/esm/utils/platform/logging.js +0 -31
  1098. package/esm/utils/platform/logging.js.map +0 -1
  1099. package/esm/utils/platform/logging.web.d.ts +0 -1
  1100. package/esm/utils/platform/logging.web.js +0 -31
  1101. package/esm/utils/platform/logging.web.js.map +0 -1
  1102. package/esm/utils/platform/transport.d.ts +0 -1
  1103. package/esm/utils/platform/transport.js +0 -4
  1104. package/esm/utils/platform/transport.js.map +0 -1
  1105. package/esm/utils/platform/transport.web.d.ts +0 -1
  1106. package/esm/utils/platform/transport.web.js +0 -12
  1107. package/esm/utils/platform/transport.web.js.map +0 -1
  1108. package/esm/utils/sorted-array.test.d.ts +0 -1
  1109. package/esm/utils/sorted-array.test.js +0 -64
  1110. package/esm/utils/sorted-array.test.js.map +0 -1
  1111. package/esm/utils/tl-json.test.d.ts +0 -1
  1112. package/esm/utils/tl-json.test.js +0 -81
  1113. package/esm/utils/tl-json.test.js.map +0 -1
  1114. package/esm/utils/type-assertions.test.d.ts +0 -1
  1115. package/esm/utils/type-assertions.test.js +0 -65
  1116. package/esm/utils/type-assertions.test.js.map +0 -1
  1117. /package/cjs/highlevel/{base.test.d.ts → methods/files/download-node-stream.d.ts} +0 -0
  1118. /package/cjs/storage/{providers/memory → memory}/driver.js +0 -0
  1119. /package/cjs/storage/{providers/memory → memory}/index.js +0 -0
  1120. /package/cjs/storage/{providers/memory → memory}/repository/auth-keys.js +0 -0
  1121. /package/cjs/storage/{providers/memory → memory}/repository/kv.js +0 -0
  1122. /package/cjs/storage/{providers/memory → memory}/repository/peers.js +0 -0
  1123. /package/cjs/storage/{providers/memory → memory}/repository/ref-messages.js +0 -0
  1124. /package/cjs/utils/{platform/error-reporting.js → error-reporting.js} +0 -0
  1125. /package/{cjs/highlevel/methods/files/_platform.d.ts → esm/highlevel/methods/files/download-node-stream.d.ts} +0 -0
  1126. /package/esm/storage/{providers/memory → memory}/driver.js +0 -0
  1127. /package/esm/storage/{providers/memory → memory}/index.js +0 -0
  1128. /package/esm/storage/{providers/memory → memory}/repository/auth-keys.js +0 -0
  1129. /package/esm/storage/{providers/memory → memory}/repository/kv.js +0 -0
  1130. /package/esm/storage/{providers/memory → memory}/repository/peers.js +0 -0
  1131. /package/esm/storage/{providers/memory → memory}/repository/ref-messages.js +0 -0
  1132. /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"]}
@@ -243,6 +243,7 @@ export async function doAuthorization(connection, crypto, expiresIn) {
243
243
  }
244
244
  const dhPrime = bufferToBigInt(serverDhInner.dhPrime);
245
245
  const timeOffset = Math.floor(Date.now() / 1000) - serverDhInner.serverTime;
246
+ session.updateTimeOffset(timeOffset);
246
247
  const g = BigInt(serverDhInner.g);
247
248
  const gA = bufferToBigInt(serverDhInner.gA);
248
249
  checkDhPrime(crypto, log, dhPrime, serverDhInner.g);
@@ -1 +1 @@
1
- {"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../src/network/authorization.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { mtp } from '@mtcute/tl'\nimport { TlPublicKey } from '@mtcute/tl/binary/rsa-keys.js'\nimport { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime'\n\nimport { MtArgumentError, MtSecurityError, MtTypeAssertionError } from '../types/index.js'\nimport { buffersEqual, concatBuffers, dataViewFromBuffer } from '../utils/buffer-utils.js'\nimport { findKeyByFingerprints } from '../utils/crypto/keys.js'\nimport { millerRabin } from '../utils/crypto/miller-rabin.js'\nimport { generateKeyAndIvFromNonce } from '../utils/crypto/mtproto.js'\nimport { xorBuffer, xorBufferInPlace } from '../utils/crypto/utils.js'\nimport { bigIntModPow, bigIntToBuffer, bufferToBigInt, ICryptoProvider, Logger } from '../utils/index.js'\nimport { mtpAssertTypeIs } from '../utils/type-assertions.js'\nimport { SessionConnection } from './session-connection.js'\n\n// Heavily based on code from https://github.com/LonamiWebs/Telethon/blob/master/telethon/network/authenticator.py\n\n// see https://core.telegram.org/mtproto/security_guidelines\n// const DH_SAFETY_RANGE = bigInt[2].pow(2048 - 64)\nconst DH_SAFETY_RANGE = 2n ** (2048n - 64n)\nconst KNOWN_DH_PRIME =\n // eslint-disable-next-line max-len\n 0xc71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5bn\nconst TWO_POW_2047 = 2n ** 2047n\nconst TWO_POW_2048 = 2n ** 2048n\n\ninterface CheckedPrime {\n prime: bigint\n generators: number[]\n}\n\nconst checkedPrimesCache: CheckedPrime[] = []\n\nfunction checkDhPrime(crypto: ICryptoProvider, log: Logger, dhPrime: bigint, g: number) {\n if (KNOWN_DH_PRIME === dhPrime) {\n log.debug('server is using known dh prime, skipping validation')\n\n return\n }\n\n let checkedPrime = checkedPrimesCache.find((x) => x.prime === dhPrime)\n\n if (!checkedPrime) {\n if (dhPrime <= TWO_POW_2047 || dhPrime >= TWO_POW_2048) {\n throw new MtSecurityError('Step 3: dh_prime is not in the 2048-bit range')\n }\n\n if (!millerRabin(crypto, dhPrime)) {\n throw new MtSecurityError('Step 3: dh_prime is not prime')\n }\n if (!millerRabin(crypto, (dhPrime - 1n) / 2n)) {\n throw new MtSecurityError('Step 3: dh_prime is not a safe prime - (dh_prime-1)/2 is not prime')\n }\n\n log.debug('dh_prime is probably prime')\n\n checkedPrime = {\n prime: dhPrime,\n generators: [],\n }\n checkedPrimesCache.push(checkedPrime)\n } else {\n log.debug('dh_prime is probably prime (cached)')\n }\n\n const generatorChecked = checkedPrime.generators.includes(g)\n\n if (generatorChecked) {\n log.debug('g = %d is already checked for dh_prime', g)\n\n return\n }\n\n switch (g) {\n case 2:\n if (dhPrime % 8n !== 7n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 8 != 7')\n }\n break\n case 3:\n if (dhPrime % 3n !== 2n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 3 != 2')\n }\n break\n case 4:\n break\n case 5: {\n const mod = dhPrime % 5n\n\n if (mod !== 1n && mod !== 4n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 5 != 1 && dh_prime mod 5 != 4')\n }\n break\n }\n case 6: {\n const mod = dhPrime % 24n\n\n if (mod !== 19n && mod !== 23n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 24 != 19 && dh_prime mod 24 != 23')\n }\n break\n }\n case 7: {\n const mod = dhPrime % 7n\n\n if (mod !== 3n && mod !== 5n && mod !== 6n) {\n throw new MtSecurityError(\n 'Step 3: ivalid g - dh_prime mod 7 != 3 && dh_prime mod 7 != 5 && dh_prime mod 7 != 6',\n )\n }\n break\n }\n default:\n throw new MtSecurityError(`Step 3: ivalid g - unknown g = ${g}`)\n }\n\n checkedPrime.generators.push(g)\n\n log.debug('g = %d is safe to use with dh_prime', g)\n}\n\nfunction rsaPad(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n // since Summer 2021, they use \"version of RSA with a variant of OAEP+ padding explained below\"\n\n const keyModulus = BigInt(`0x${key.modulus}`)\n const keyExponent = BigInt(`0x${key.exponent}`)\n\n if (data.length > 144) {\n throw new MtArgumentError('Failed to pad: too big data')\n }\n\n const dataPadded = new Uint8Array(192)\n dataPadded.set(data, 0)\n crypto.randomFill(dataPadded.subarray(data.length))\n data = dataPadded\n\n for (;;) {\n const aesIv = new Uint8Array(32)\n\n const aesKey = crypto.randomBytes(32)\n\n const dataWithHash = concatBuffers([data, crypto.sha256(concatBuffers([aesKey, data]))])\n // we only need to reverse the data\n dataWithHash.subarray(0, 192).reverse()\n\n const aes = crypto.createAesIge(aesKey, aesIv)\n const encrypted = aes.encrypt(dataWithHash)\n const encryptedHash = crypto.sha256(encrypted)\n\n xorBufferInPlace(aesKey, encryptedHash)\n const decryptedData = concatBuffers([aesKey, encrypted])\n\n const decryptedDataBigint = bufferToBigInt(decryptedData)\n\n if (decryptedDataBigint >= keyModulus) {\n continue\n }\n\n const encryptedBigint = bigIntModPow(decryptedDataBigint, keyExponent, keyModulus)\n\n return bigIntToBuffer(encryptedBigint, 256)\n }\n}\n\nfunction rsaEncrypt(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n const toEncrypt = concatBuffers([\n crypto.sha1(data),\n data,\n // sha1 is always 20 bytes, so we're left with 255 - 20 - x padding\n crypto.randomBytes(235 - data.length),\n ])\n\n const encryptedBigInt = bigIntModPow(\n bufferToBigInt(toEncrypt),\n BigInt(`0x${key.exponent}`),\n BigInt(`0x${key.modulus}`),\n )\n\n return bigIntToBuffer(encryptedBigInt)\n}\n\n/**\n * Execute authorization flow on `connection` using `crypto`.\n *\n * @returns tuple: [authKey, serverSalt, timeOffset]\n */\nexport async function doAuthorization(\n connection: SessionConnection,\n crypto: ICryptoProvider,\n expiresIn?: number,\n): Promise<[Uint8Array, Long, number]> {\n // eslint-disable-next-line dot-notation\n const session = connection['_session']\n const readerMap = session._readerMap\n const writerMap = session._writerMap\n const log = connection.log.create('auth')\n\n function sendPlainMessage(message: mtp.TlObject): Promise<void> {\n const length = TlSerializationCounter.countNeededBytes(writerMap, message)\n const writer = TlBinaryWriter.alloc(writerMap, length + 20) // 20 bytes for mtproto header\n\n const messageId = session.getMessageId()\n\n log.verbose('[PLAIN] >>> %j', message)\n writer.long(Long.ZERO)\n writer.long(messageId)\n writer.uint(length)\n writer.object(message)\n\n return connection.send(writer.result())\n }\n\n async function readNext(): Promise<mtp.TlObject> {\n const res = TlBinaryReader.deserializeObject<mtp.TlObject>(\n readerMap,\n await connection.waitForUnencryptedMessage(),\n 20, // skip mtproto header\n )\n\n log.verbose('[PLAIN] <<< %j', res)\n\n return res\n }\n\n if (expiresIn) log.prefix = '[PFS] '\n\n const nonce = crypto.randomBytes(16)\n // Step 1: PQ request\n log.debug('starting PQ handshake (temp = %b), nonce = %h', expiresIn, nonce)\n\n await sendPlainMessage({ _: 'mt_req_pq_multi', nonce })\n const resPq = await readNext()\n\n mtpAssertTypeIs('auth step 1', resPq, 'mt_resPQ')\n\n if (!buffersEqual(resPq.nonce, nonce)) {\n throw new MtSecurityError('Step 1: invalid nonce from server')\n }\n\n const serverKeys = resPq.serverPublicKeyFingerprints.map((it) => it.toUnsigned().toString(16))\n log.debug('received PQ, keys: %j', serverKeys)\n\n // Step 2: DH exchange\n const publicKey = findKeyByFingerprints(serverKeys)\n\n if (!publicKey) {\n throw new MtSecurityError(\n 'Step 2: Could not find server public key with any of these fingerprints: ' + serverKeys.join(', '),\n )\n }\n log.debug('found server key, fp = %s, old = %s', publicKey.fingerprint, publicKey.old)\n\n if (millerRabin(crypto, bufferToBigInt(resPq.pq))) {\n throw new MtSecurityError('Step 2: pq is prime')\n }\n\n const [p, q] = await crypto.factorizePQ(resPq.pq)\n log.debug('factorized PQ: PQ = %h, P = %h, Q = %h', resPq.pq, p, q)\n\n const newNonce = crypto.randomBytes(32)\n\n let dcId = connection.params.dc.id\n if (connection.params.testMode) dcId += 10000\n if (connection.params.dc.mediaOnly) dcId = -dcId\n\n const _pqInnerData: mtp.TypeP_Q_inner_data = {\n _: expiresIn ? 'mt_p_q_inner_data_temp_dc' : 'mt_p_q_inner_data_dc',\n pq: resPq.pq,\n p,\n q,\n nonce,\n newNonce,\n serverNonce: resPq.serverNonce,\n dc: dcId,\n expiresIn: expiresIn!, // whatever\n }\n const pqInnerData = TlBinaryWriter.serializeObject(writerMap, _pqInnerData)\n\n const encryptedData = publicKey.old ?\n rsaEncrypt(pqInnerData, crypto, publicKey) :\n rsaPad(pqInnerData, crypto, publicKey)\n\n log.debug('requesting DH params')\n\n await sendPlainMessage({\n _: 'mt_req_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n p,\n q,\n publicKeyFingerprint: Long.fromString(publicKey.fingerprint, true, 16),\n encryptedData,\n })\n const serverDhParams = await readNext()\n\n mtpAssertTypeIs('auth step 2', serverDhParams, 'mt_server_DH_params_ok')\n\n if (!buffersEqual(serverDhParams.nonce, nonce)) {\n throw new MtSecurityError('Step 2: invalid nonce from server')\n }\n if (!buffersEqual(serverDhParams.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 2: invalid server nonce from server')\n }\n\n log.debug('server DH ok')\n\n if (serverDhParams.encryptedAnswer.length % 16 !== 0) {\n throw new MtSecurityError('Step 2: AES block size is invalid')\n }\n\n // Step 3: complete DH exchange\n const [key, iv] = generateKeyAndIvFromNonce(crypto, resPq.serverNonce, newNonce)\n const ige = crypto.createAesIge(key, iv)\n\n const plainTextAnswer = ige.decrypt(serverDhParams.encryptedAnswer)\n const innerDataHash = plainTextAnswer.subarray(0, 20)\n const serverDhInnerReader = new TlBinaryReader(readerMap, plainTextAnswer, 20)\n const serverDhInner = serverDhInnerReader.object() as mtp.TlObject\n\n if (!buffersEqual(innerDataHash, crypto.sha1(plainTextAnswer.subarray(20, serverDhInnerReader.pos)))) {\n throw new MtSecurityError('Step 3: invalid inner data hash')\n }\n\n mtpAssertTypeIs('auth step 3', serverDhInner, 'mt_server_DH_inner_data')\n\n if (!buffersEqual(serverDhInner.nonce, nonce)) {\n throw Error('Step 3: invalid nonce from server')\n }\n if (!buffersEqual(serverDhInner.serverNonce, resPq.serverNonce)) {\n throw Error('Step 3: invalid server nonce from server')\n }\n\n const dhPrime = bufferToBigInt(serverDhInner.dhPrime)\n const timeOffset = Math.floor(Date.now() / 1000) - serverDhInner.serverTime\n\n const g = BigInt(serverDhInner.g)\n const gA = bufferToBigInt(serverDhInner.gA)\n\n checkDhPrime(crypto, log, dhPrime, serverDhInner.g)\n\n let retryId = Long.ZERO\n const serverSalt = xorBuffer(newNonce.subarray(0, 8), resPq.serverNonce.subarray(0, 8))\n\n for (;;) {\n const b = bufferToBigInt(crypto.randomBytes(256))\n const gB = bigIntModPow(g, b, dhPrime)\n\n const authKey = bigIntToBuffer(bigIntModPow(gA, b, dhPrime))\n const authKeyAuxHash = crypto.sha1(authKey).subarray(0, 8)\n\n // validate DH params\n if (g <= 1 || g >= dhPrime - 1n) {\n throw new MtSecurityError('g is not within (1, dh_prime - 1)')\n }\n if (gA <= 1 || gA >= dhPrime - 1n) {\n throw new MtSecurityError('g_a is not within (1, dh_prime - 1)')\n }\n if (gB <= 1 || gB >= dhPrime - 1n) {\n throw new MtSecurityError('g_b is not within (1, dh_prime - 1)')\n }\n\n if (gA <= DH_SAFETY_RANGE || gA >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_a is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n if (gB <= DH_SAFETY_RANGE || gB >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_b is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n\n const gB_ = bigIntToBuffer(gB, 0, false)\n\n // Step 4: send client DH\n const clientDhInner: mtp.RawMt_client_DH_inner_data = {\n _: 'mt_client_DH_inner_data',\n nonce,\n serverNonce: resPq.serverNonce,\n retryId,\n gB: gB_,\n }\n let innerLength = TlSerializationCounter.countNeededBytes(writerMap, clientDhInner) + 20 // for hash\n const innerPaddingLength = innerLength % 16\n if (innerPaddingLength > 0) innerLength += 16 - innerPaddingLength\n\n const clientDhInnerWriter = TlBinaryWriter.alloc(writerMap, innerLength)\n clientDhInnerWriter.pos = 20\n clientDhInnerWriter.object(clientDhInner)\n const clientDhInnerHash = crypto.sha1(clientDhInnerWriter.uint8View.subarray(20, clientDhInnerWriter.pos))\n clientDhInnerWriter.pos = 0\n clientDhInnerWriter.raw(clientDhInnerHash)\n\n log.debug('sending client DH (timeOffset = %d)', timeOffset)\n\n const clientDhEncrypted = ige.encrypt(clientDhInnerWriter.uint8View)\n await sendPlainMessage({\n _: 'mt_set_client_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n encryptedData: clientDhEncrypted,\n })\n\n const dhGen = await readNext()\n\n if (!mtp.isAnySet_client_DH_params_answer(dhGen)) {\n throw new MtTypeAssertionError('auth step 4', 'set_client_DH_params_answer', dhGen._)\n }\n\n if (!buffersEqual(dhGen.nonce, nonce)) {\n throw new MtSecurityError('Step 4: invalid nonce from server')\n }\n if (!buffersEqual(dhGen.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 4: invalid server nonce from server')\n }\n\n log.debug('DH result: %s', dhGen._)\n\n if (dhGen._ === 'mt_dh_gen_fail') {\n // in theory i would be supposed to calculate newNonceHash, but why, we are failing anyway\n throw new MtTypeAssertionError('auth step 4', '!mt_dh_gen_fail', dhGen._)\n }\n\n if (dhGen._ === 'mt_dh_gen_retry') {\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([2]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash2)) {\n throw new MtSecurityError('Step 4: invalid retry nonce hash from server')\n }\n retryId = Long.fromBytesLE(authKeyAuxHash as unknown as number[])\n continue\n }\n\n if (dhGen._ !== 'mt_dh_gen_ok') throw new Error() // unreachable\n\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([1]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash1)) {\n throw new MtSecurityError('Step 4: invalid nonce hash from server')\n }\n\n log.info('authorization successful')\n\n const dv = dataViewFromBuffer(serverSalt)\n\n return [authKey, new Long(dv.getInt32(0, true), dv.getInt32(4, true)), timeOffset]\n }\n}\n"]}
1
+ {"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../src/network/authorization.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { mtp } from '@mtcute/tl'\nimport { TlPublicKey } from '@mtcute/tl/binary/rsa-keys.js'\nimport { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime'\n\nimport { MtArgumentError, MtSecurityError, MtTypeAssertionError } from '../types/index.js'\nimport { buffersEqual, concatBuffers, dataViewFromBuffer } from '../utils/buffer-utils.js'\nimport { findKeyByFingerprints } from '../utils/crypto/keys.js'\nimport { millerRabin } from '../utils/crypto/miller-rabin.js'\nimport { generateKeyAndIvFromNonce } from '../utils/crypto/mtproto.js'\nimport { xorBuffer, xorBufferInPlace } from '../utils/crypto/utils.js'\nimport { bigIntModPow, bigIntToBuffer, bufferToBigInt, ICryptoProvider, Logger } from '../utils/index.js'\nimport { mtpAssertTypeIs } from '../utils/type-assertions.js'\nimport { SessionConnection } from './session-connection.js'\n\n// Heavily based on code from https://github.com/LonamiWebs/Telethon/blob/master/telethon/network/authenticator.py\n\n// see https://core.telegram.org/mtproto/security_guidelines\n// const DH_SAFETY_RANGE = bigInt[2].pow(2048 - 64)\nconst DH_SAFETY_RANGE = 2n ** (2048n - 64n)\nconst KNOWN_DH_PRIME =\n // eslint-disable-next-line max-len\n 0xc71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5bn\nconst TWO_POW_2047 = 2n ** 2047n\nconst TWO_POW_2048 = 2n ** 2048n\n\ninterface CheckedPrime {\n prime: bigint\n generators: number[]\n}\n\nconst checkedPrimesCache: CheckedPrime[] = []\n\nfunction checkDhPrime(crypto: ICryptoProvider, log: Logger, dhPrime: bigint, g: number) {\n if (KNOWN_DH_PRIME === dhPrime) {\n log.debug('server is using known dh prime, skipping validation')\n\n return\n }\n\n let checkedPrime = checkedPrimesCache.find((x) => x.prime === dhPrime)\n\n if (!checkedPrime) {\n if (dhPrime <= TWO_POW_2047 || dhPrime >= TWO_POW_2048) {\n throw new MtSecurityError('Step 3: dh_prime is not in the 2048-bit range')\n }\n\n if (!millerRabin(crypto, dhPrime)) {\n throw new MtSecurityError('Step 3: dh_prime is not prime')\n }\n if (!millerRabin(crypto, (dhPrime - 1n) / 2n)) {\n throw new MtSecurityError('Step 3: dh_prime is not a safe prime - (dh_prime-1)/2 is not prime')\n }\n\n log.debug('dh_prime is probably prime')\n\n checkedPrime = {\n prime: dhPrime,\n generators: [],\n }\n checkedPrimesCache.push(checkedPrime)\n } else {\n log.debug('dh_prime is probably prime (cached)')\n }\n\n const generatorChecked = checkedPrime.generators.includes(g)\n\n if (generatorChecked) {\n log.debug('g = %d is already checked for dh_prime', g)\n\n return\n }\n\n switch (g) {\n case 2:\n if (dhPrime % 8n !== 7n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 8 != 7')\n }\n break\n case 3:\n if (dhPrime % 3n !== 2n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 3 != 2')\n }\n break\n case 4:\n break\n case 5: {\n const mod = dhPrime % 5n\n\n if (mod !== 1n && mod !== 4n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 5 != 1 && dh_prime mod 5 != 4')\n }\n break\n }\n case 6: {\n const mod = dhPrime % 24n\n\n if (mod !== 19n && mod !== 23n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 24 != 19 && dh_prime mod 24 != 23')\n }\n break\n }\n case 7: {\n const mod = dhPrime % 7n\n\n if (mod !== 3n && mod !== 5n && mod !== 6n) {\n throw new MtSecurityError(\n 'Step 3: ivalid g - dh_prime mod 7 != 3 && dh_prime mod 7 != 5 && dh_prime mod 7 != 6',\n )\n }\n break\n }\n default:\n throw new MtSecurityError(`Step 3: ivalid g - unknown g = ${g}`)\n }\n\n checkedPrime.generators.push(g)\n\n log.debug('g = %d is safe to use with dh_prime', g)\n}\n\nfunction rsaPad(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n // since Summer 2021, they use \"version of RSA with a variant of OAEP+ padding explained below\"\n\n const keyModulus = BigInt(`0x${key.modulus}`)\n const keyExponent = BigInt(`0x${key.exponent}`)\n\n if (data.length > 144) {\n throw new MtArgumentError('Failed to pad: too big data')\n }\n\n const dataPadded = new Uint8Array(192)\n dataPadded.set(data, 0)\n crypto.randomFill(dataPadded.subarray(data.length))\n data = dataPadded\n\n for (;;) {\n const aesIv = new Uint8Array(32)\n\n const aesKey = crypto.randomBytes(32)\n\n const dataWithHash = concatBuffers([data, crypto.sha256(concatBuffers([aesKey, data]))])\n // we only need to reverse the data\n dataWithHash.subarray(0, 192).reverse()\n\n const aes = crypto.createAesIge(aesKey, aesIv)\n const encrypted = aes.encrypt(dataWithHash)\n const encryptedHash = crypto.sha256(encrypted)\n\n xorBufferInPlace(aesKey, encryptedHash)\n const decryptedData = concatBuffers([aesKey, encrypted])\n\n const decryptedDataBigint = bufferToBigInt(decryptedData)\n\n if (decryptedDataBigint >= keyModulus) {\n continue\n }\n\n const encryptedBigint = bigIntModPow(decryptedDataBigint, keyExponent, keyModulus)\n\n return bigIntToBuffer(encryptedBigint, 256)\n }\n}\n\nfunction rsaEncrypt(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n const toEncrypt = concatBuffers([\n crypto.sha1(data),\n data,\n // sha1 is always 20 bytes, so we're left with 255 - 20 - x padding\n crypto.randomBytes(235 - data.length),\n ])\n\n const encryptedBigInt = bigIntModPow(\n bufferToBigInt(toEncrypt),\n BigInt(`0x${key.exponent}`),\n BigInt(`0x${key.modulus}`),\n )\n\n return bigIntToBuffer(encryptedBigInt)\n}\n\n/**\n * Execute authorization flow on `connection` using `crypto`.\n *\n * @returns tuple: [authKey, serverSalt, timeOffset]\n */\nexport async function doAuthorization(\n connection: SessionConnection,\n crypto: ICryptoProvider,\n expiresIn?: number,\n): Promise<[Uint8Array, Long, number]> {\n // eslint-disable-next-line dot-notation\n const session = connection['_session']\n const readerMap = session._readerMap\n const writerMap = session._writerMap\n const log = connection.log.create('auth')\n\n function sendPlainMessage(message: mtp.TlObject): Promise<void> {\n const length = TlSerializationCounter.countNeededBytes(writerMap, message)\n const writer = TlBinaryWriter.alloc(writerMap, length + 20) // 20 bytes for mtproto header\n\n const messageId = session.getMessageId()\n\n log.verbose('[PLAIN] >>> %j', message)\n writer.long(Long.ZERO)\n writer.long(messageId)\n writer.uint(length)\n writer.object(message)\n\n return connection.send(writer.result())\n }\n\n async function readNext(): Promise<mtp.TlObject> {\n const res = TlBinaryReader.deserializeObject<mtp.TlObject>(\n readerMap,\n await connection.waitForUnencryptedMessage(),\n 20, // skip mtproto header\n )\n\n log.verbose('[PLAIN] <<< %j', res)\n\n return res\n }\n\n if (expiresIn) log.prefix = '[PFS] '\n\n const nonce = crypto.randomBytes(16)\n // Step 1: PQ request\n log.debug('starting PQ handshake (temp = %b), nonce = %h', expiresIn, nonce)\n\n await sendPlainMessage({ _: 'mt_req_pq_multi', nonce })\n const resPq = await readNext()\n\n mtpAssertTypeIs('auth step 1', resPq, 'mt_resPQ')\n\n if (!buffersEqual(resPq.nonce, nonce)) {\n throw new MtSecurityError('Step 1: invalid nonce from server')\n }\n\n const serverKeys = resPq.serverPublicKeyFingerprints.map((it) => it.toUnsigned().toString(16))\n log.debug('received PQ, keys: %j', serverKeys)\n\n // Step 2: DH exchange\n const publicKey = findKeyByFingerprints(serverKeys)\n\n if (!publicKey) {\n throw new MtSecurityError(\n 'Step 2: Could not find server public key with any of these fingerprints: ' + serverKeys.join(', '),\n )\n }\n log.debug('found server key, fp = %s, old = %s', publicKey.fingerprint, publicKey.old)\n\n if (millerRabin(crypto, bufferToBigInt(resPq.pq))) {\n throw new MtSecurityError('Step 2: pq is prime')\n }\n\n const [p, q] = await crypto.factorizePQ(resPq.pq)\n log.debug('factorized PQ: PQ = %h, P = %h, Q = %h', resPq.pq, p, q)\n\n const newNonce = crypto.randomBytes(32)\n\n let dcId = connection.params.dc.id\n if (connection.params.testMode) dcId += 10000\n if (connection.params.dc.mediaOnly) dcId = -dcId\n\n const _pqInnerData: mtp.TypeP_Q_inner_data = {\n _: expiresIn ? 'mt_p_q_inner_data_temp_dc' : 'mt_p_q_inner_data_dc',\n pq: resPq.pq,\n p,\n q,\n nonce,\n newNonce,\n serverNonce: resPq.serverNonce,\n dc: dcId,\n expiresIn: expiresIn!, // whatever\n }\n const pqInnerData = TlBinaryWriter.serializeObject(writerMap, _pqInnerData)\n\n const encryptedData = publicKey.old ?\n rsaEncrypt(pqInnerData, crypto, publicKey) :\n rsaPad(pqInnerData, crypto, publicKey)\n\n log.debug('requesting DH params')\n\n await sendPlainMessage({\n _: 'mt_req_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n p,\n q,\n publicKeyFingerprint: Long.fromString(publicKey.fingerprint, true, 16),\n encryptedData,\n })\n const serverDhParams = await readNext()\n\n mtpAssertTypeIs('auth step 2', serverDhParams, 'mt_server_DH_params_ok')\n\n if (!buffersEqual(serverDhParams.nonce, nonce)) {\n throw new MtSecurityError('Step 2: invalid nonce from server')\n }\n if (!buffersEqual(serverDhParams.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 2: invalid server nonce from server')\n }\n\n log.debug('server DH ok')\n\n if (serverDhParams.encryptedAnswer.length % 16 !== 0) {\n throw new MtSecurityError('Step 2: AES block size is invalid')\n }\n\n // Step 3: complete DH exchange\n const [key, iv] = generateKeyAndIvFromNonce(crypto, resPq.serverNonce, newNonce)\n const ige = crypto.createAesIge(key, iv)\n\n const plainTextAnswer = ige.decrypt(serverDhParams.encryptedAnswer)\n const innerDataHash = plainTextAnswer.subarray(0, 20)\n const serverDhInnerReader = new TlBinaryReader(readerMap, plainTextAnswer, 20)\n const serverDhInner = serverDhInnerReader.object() as mtp.TlObject\n\n if (!buffersEqual(innerDataHash, crypto.sha1(plainTextAnswer.subarray(20, serverDhInnerReader.pos)))) {\n throw new MtSecurityError('Step 3: invalid inner data hash')\n }\n\n mtpAssertTypeIs('auth step 3', serverDhInner, 'mt_server_DH_inner_data')\n\n if (!buffersEqual(serverDhInner.nonce, nonce)) {\n throw Error('Step 3: invalid nonce from server')\n }\n if (!buffersEqual(serverDhInner.serverNonce, resPq.serverNonce)) {\n throw Error('Step 3: invalid server nonce from server')\n }\n\n const dhPrime = bufferToBigInt(serverDhInner.dhPrime)\n const timeOffset = Math.floor(Date.now() / 1000) - serverDhInner.serverTime\n session.updateTimeOffset(timeOffset)\n\n const g = BigInt(serverDhInner.g)\n const gA = bufferToBigInt(serverDhInner.gA)\n\n checkDhPrime(crypto, log, dhPrime, serverDhInner.g)\n\n let retryId = Long.ZERO\n const serverSalt = xorBuffer(newNonce.subarray(0, 8), resPq.serverNonce.subarray(0, 8))\n\n for (;;) {\n const b = bufferToBigInt(crypto.randomBytes(256))\n const gB = bigIntModPow(g, b, dhPrime)\n\n const authKey = bigIntToBuffer(bigIntModPow(gA, b, dhPrime))\n const authKeyAuxHash = crypto.sha1(authKey).subarray(0, 8)\n\n // validate DH params\n if (g <= 1 || g >= dhPrime - 1n) {\n throw new MtSecurityError('g is not within (1, dh_prime - 1)')\n }\n if (gA <= 1 || gA >= dhPrime - 1n) {\n throw new MtSecurityError('g_a is not within (1, dh_prime - 1)')\n }\n if (gB <= 1 || gB >= dhPrime - 1n) {\n throw new MtSecurityError('g_b is not within (1, dh_prime - 1)')\n }\n\n if (gA <= DH_SAFETY_RANGE || gA >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_a is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n if (gB <= DH_SAFETY_RANGE || gB >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_b is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n\n const gB_ = bigIntToBuffer(gB, 0, false)\n\n // Step 4: send client DH\n const clientDhInner: mtp.RawMt_client_DH_inner_data = {\n _: 'mt_client_DH_inner_data',\n nonce,\n serverNonce: resPq.serverNonce,\n retryId,\n gB: gB_,\n }\n let innerLength = TlSerializationCounter.countNeededBytes(writerMap, clientDhInner) + 20 // for hash\n const innerPaddingLength = innerLength % 16\n if (innerPaddingLength > 0) innerLength += 16 - innerPaddingLength\n\n const clientDhInnerWriter = TlBinaryWriter.alloc(writerMap, innerLength)\n clientDhInnerWriter.pos = 20\n clientDhInnerWriter.object(clientDhInner)\n const clientDhInnerHash = crypto.sha1(clientDhInnerWriter.uint8View.subarray(20, clientDhInnerWriter.pos))\n clientDhInnerWriter.pos = 0\n clientDhInnerWriter.raw(clientDhInnerHash)\n\n log.debug('sending client DH (timeOffset = %d)', timeOffset)\n\n const clientDhEncrypted = ige.encrypt(clientDhInnerWriter.uint8View)\n await sendPlainMessage({\n _: 'mt_set_client_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n encryptedData: clientDhEncrypted,\n })\n\n const dhGen = await readNext()\n\n if (!mtp.isAnySet_client_DH_params_answer(dhGen)) {\n throw new MtTypeAssertionError('auth step 4', 'set_client_DH_params_answer', dhGen._)\n }\n\n if (!buffersEqual(dhGen.nonce, nonce)) {\n throw new MtSecurityError('Step 4: invalid nonce from server')\n }\n if (!buffersEqual(dhGen.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 4: invalid server nonce from server')\n }\n\n log.debug('DH result: %s', dhGen._)\n\n if (dhGen._ === 'mt_dh_gen_fail') {\n // in theory i would be supposed to calculate newNonceHash, but why, we are failing anyway\n throw new MtTypeAssertionError('auth step 4', '!mt_dh_gen_fail', dhGen._)\n }\n\n if (dhGen._ === 'mt_dh_gen_retry') {\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([2]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash2)) {\n throw new MtSecurityError('Step 4: invalid retry nonce hash from server')\n }\n retryId = Long.fromBytesLE(authKeyAuxHash as unknown as number[])\n continue\n }\n\n if (dhGen._ !== 'mt_dh_gen_ok') throw new Error() // unreachable\n\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([1]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash1)) {\n throw new MtSecurityError('Step 4: invalid nonce hash from server')\n }\n\n log.info('authorization successful')\n\n const dv = dataViewFromBuffer(serverSalt)\n\n return [authKey, new Long(dv.getInt32(0, true), dv.getInt32(4, true)), timeOffset]\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"]}
@@ -102,6 +102,7 @@ export declare class MtprotoSession {
102
102
  */
103
103
  reset(withAuthKey?: boolean): void;
104
104
  resetAuthKey(): void;
105
+ updateTimeOffset(offset: number): void;
105
106
  /**
106
107
  * Reset session state and generate a new session ID.
107
108
  *
@@ -68,6 +68,12 @@ export class MtprotoSession {
68
68
  this._authKeyTemp.reset();
69
69
  this._authKeyTempSecondary.reset();
70
70
  }
71
+ updateTimeOffset(offset) {
72
+ this._timeOffset = offset;
73
+ // lastMessageId was generated with (potentially) wrong time
74
+ // reset it to avoid bigger issues - at worst, we'll get bad_msg_notification
75
+ this._lastMessageId = Long.ZERO;
76
+ }
71
77
  /**
72
78
  * Reset session state and generate a new session ID.
73
79
  *
@@ -119,7 +125,7 @@ export class MtprotoSession {
119
125
  }
120
126
  getMessageId() {
121
127
  const timeTicks = Date.now();
122
- const timeSec = Math.floor(timeTicks / 1000) + this._timeOffset;
128
+ const timeSec = Math.floor(timeTicks / 1000) - this._timeOffset;
123
129
  const timeMSec = timeTicks % 1000;
124
130
  const random = getRandomInt(0xffff);
125
131
  let messageId = new Long((timeMSec << 21) | (random << 3) | 4, timeSec);