@mtkruto/node 0.1.138 → 0.1.140

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 (287) hide show
  1. package/esm/3_types.d.ts +10 -36
  2. package/esm/3_types.js +10 -36
  3. package/esm/4_constants.d.ts +1 -1
  4. package/esm/4_constants.js +1 -1
  5. package/esm/5_client.d.ts +1 -1
  6. package/esm/5_client.js +1 -1
  7. package/esm/_dnt.polyfills.d.ts +6 -0
  8. package/esm/client/0_filters.d.ts +60 -0
  9. package/esm/client/0_filters.js +27 -0
  10. package/esm/client/0_message.js +2 -2
  11. package/esm/client/{3_params.d.ts → 0_params.d.ts} +30 -33
  12. package/esm/client/0_types.d.ts +39 -0
  13. package/esm/client/0_types.js +2 -0
  14. package/esm/client/0_utilities.d.ts +1 -47
  15. package/esm/client/0_utilities.js +0 -27
  16. package/esm/client/1_composer.d.ts +1 -1
  17. package/esm/client/1_composer.js +1 -1
  18. package/esm/client/1_file_manager.d.ts +10 -0
  19. package/esm/client/1_file_manager.js +241 -0
  20. package/esm/client/1_update_manager.d.ts +18 -0
  21. package/esm/client/1_update_manager.js +553 -0
  22. package/esm/client/2_message_manager.d.ts +40 -0
  23. package/esm/client/2_message_manager.js +621 -0
  24. package/esm/client/3_chat_list_manager.d.ts +21 -0
  25. package/esm/client/3_chat_list_manager.js +353 -0
  26. package/esm/client/3_reaction_manager.d.ts +16 -0
  27. package/esm/client/3_reaction_manager.js +61 -0
  28. package/esm/client/4_client.d.ts +187 -60
  29. package/esm/client/4_client.js +492 -1699
  30. package/esm/connection/1_connection_web_socket.js +6 -6
  31. package/esm/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.d.ts +1 -1
  32. package/esm/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.js +1 -1
  33. package/esm/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.d.ts +1 -0
  34. package/esm/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.js +524 -0
  35. package/esm/mod.d.ts +1 -0
  36. package/esm/mod.js +1 -0
  37. package/esm/storage/0_storage.d.ts +5 -3
  38. package/esm/storage/0_storage.js +14 -4
  39. package/esm/tl/1_tl_object.d.ts +1 -0
  40. package/esm/tl/1_tl_object.js +24 -0
  41. package/esm/types/0_bot_command.d.ts +1 -0
  42. package/esm/types/0_chat_member_rights.d.ts +37 -0
  43. package/esm/types/0_chat_photo.d.ts +4 -4
  44. package/esm/types/0_file_source.d.ts +5 -0
  45. package/esm/types/0_giveaway_parameters.js +2 -1
  46. package/esm/types/0_id.d.ts +4 -0
  47. package/esm/types/0_message_entity.d.ts +20 -20
  48. package/esm/types/1__getters.d.ts +2 -2
  49. package/esm/types/1_animation.d.ts +1 -1
  50. package/esm/types/1_bot_command_scope.d.ts +5 -4
  51. package/esm/types/1_chat_p.d.ts +5 -6
  52. package/esm/types/1_document.d.ts +1 -0
  53. package/esm/types/1_input_message_content.d.ts +88 -0
  54. package/esm/types/1_photo.d.ts +1 -1
  55. package/esm/types/1_sticker.d.ts +1 -1
  56. package/esm/types/1_user.d.ts +1 -1
  57. package/esm/types/1_video.d.ts +1 -1
  58. package/esm/types/1_video_note.d.ts +1 -1
  59. package/esm/types/2_inline_keyboard_button.d.ts +10 -10
  60. package/esm/types/2_message_reaction_count.d.ts +3 -0
  61. package/esm/types/2_message_reaction_count.js +17 -1
  62. package/esm/types/2_message_reactions.d.ts +15 -0
  63. package/esm/types/2_message_reactions.js +37 -0
  64. package/esm/types/3_reply_markup.d.ts +42 -0
  65. package/esm/types/3_reply_markup.js +117 -0
  66. package/esm/types/4_inline_query_result.d.ts +193 -0
  67. package/esm/types/{5_inline_query_result.js → 4_inline_query_result.js} +2 -2
  68. package/esm/types/4_message.d.ts +36 -39
  69. package/esm/types/4_message.js +7 -24
  70. package/esm/types/5_callback_query.d.ts +2 -1
  71. package/esm/types/5_chat.d.ts +8 -5
  72. package/esm/types/6_update.d.ts +12 -2
  73. package/esm/utilities/0_buffer.js +9 -6
  74. package/esm/utilities/0_object.d.ts +1 -1
  75. package/esm/utilities/0_object.js +1 -6
  76. package/esm/utilities/1_misc.d.ts +2 -0
  77. package/esm/utilities/1_misc.js +6 -0
  78. package/package.json +1 -2
  79. package/script/3_types.d.ts +10 -36
  80. package/script/3_types.js +10 -36
  81. package/script/4_constants.d.ts +1 -1
  82. package/script/4_constants.js +1 -1
  83. package/script/5_client.d.ts +1 -1
  84. package/script/5_client.js +1 -1
  85. package/script/_dnt.polyfills.d.ts +6 -0
  86. package/script/client/0_filters.d.ts +60 -0
  87. package/script/client/0_filters.js +31 -0
  88. package/script/client/0_message.js +1 -1
  89. package/script/client/{3_params.d.ts → 0_params.d.ts} +30 -33
  90. package/script/client/0_types.d.ts +39 -0
  91. package/script/client/0_types.js +6 -0
  92. package/script/client/0_utilities.d.ts +1 -47
  93. package/script/client/0_utilities.js +1 -29
  94. package/script/client/1_composer.d.ts +1 -1
  95. package/script/client/1_composer.js +2 -2
  96. package/script/client/1_file_manager.d.ts +10 -0
  97. package/script/client/1_file_manager.js +245 -0
  98. package/script/client/1_update_manager.d.ts +18 -0
  99. package/script/client/1_update_manager.js +557 -0
  100. package/script/client/2_message_manager.d.ts +40 -0
  101. package/script/client/2_message_manager.js +625 -0
  102. package/script/client/3_chat_list_manager.d.ts +21 -0
  103. package/script/client/3_chat_list_manager.js +357 -0
  104. package/script/client/3_reaction_manager.d.ts +16 -0
  105. package/script/client/3_reaction_manager.js +65 -0
  106. package/script/client/4_client.d.ts +187 -60
  107. package/script/client/4_client.js +491 -1699
  108. package/script/connection/1_connection_web_socket.js +5 -5
  109. package/script/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.d.ts +1 -1
  110. package/script/deps/raw.githubusercontent.com/MTKruto/debug/main/deps.js +2 -2
  111. package/script/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.d.ts +1 -0
  112. package/script/deps/raw.githubusercontent.com/MTKruto/object-inspect/main/index.js +550 -0
  113. package/script/mod.d.ts +1 -0
  114. package/script/mod.js +1 -0
  115. package/script/storage/0_storage.d.ts +5 -3
  116. package/script/storage/0_storage.js +14 -4
  117. package/script/tl/1_tl_object.d.ts +1 -0
  118. package/script/tl/1_tl_object.js +24 -0
  119. package/script/types/0_bot_command.d.ts +1 -0
  120. package/script/types/0_chat_member_rights.d.ts +37 -0
  121. package/script/types/0_chat_photo.d.ts +4 -4
  122. package/script/types/0_file_source.d.ts +5 -0
  123. package/script/types/0_giveaway_parameters.js +2 -1
  124. package/script/types/0_id.d.ts +4 -0
  125. package/script/types/0_message_entity.d.ts +20 -20
  126. package/script/types/1__getters.d.ts +2 -2
  127. package/script/types/1_animation.d.ts +1 -1
  128. package/script/types/1_bot_command_scope.d.ts +5 -4
  129. package/script/types/1_chat_p.d.ts +5 -6
  130. package/script/types/1_document.d.ts +1 -0
  131. package/script/types/1_input_message_content.d.ts +88 -0
  132. package/script/types/1_photo.d.ts +1 -1
  133. package/script/types/1_sticker.d.ts +1 -1
  134. package/script/types/1_user.d.ts +1 -1
  135. package/script/types/1_video.d.ts +1 -1
  136. package/script/types/1_video_note.d.ts +1 -1
  137. package/script/types/2_inline_keyboard_button.d.ts +10 -10
  138. package/script/types/2_message_reaction_count.d.ts +3 -0
  139. package/script/types/2_message_reaction_count.js +19 -0
  140. package/script/types/2_message_reactions.d.ts +15 -0
  141. package/script/types/2_message_reactions.js +41 -0
  142. package/script/types/3_reply_markup.d.ts +42 -0
  143. package/script/types/3_reply_markup.js +122 -0
  144. package/script/types/4_inline_query_result.d.ts +193 -0
  145. package/script/types/{5_inline_query_result.js → 4_inline_query_result.js} +3 -3
  146. package/script/types/4_message.d.ts +36 -39
  147. package/script/types/4_message.js +6 -23
  148. package/script/types/5_callback_query.d.ts +2 -1
  149. package/script/types/5_chat.d.ts +8 -5
  150. package/script/types/6_update.d.ts +12 -2
  151. package/script/utilities/0_buffer.js +9 -6
  152. package/script/utilities/0_object.d.ts +1 -1
  153. package/script/utilities/0_object.js +1 -6
  154. package/script/utilities/1_misc.d.ts +2 -0
  155. package/script/utilities/1_misc.js +9 -1
  156. package/esm/types/0_chat_id.d.ts +0 -4
  157. package/esm/types/0_force_reply.d.ts +0 -12
  158. package/esm/types/0_force_reply.js +0 -17
  159. package/esm/types/0_input_contact_message_content.d.ts +0 -11
  160. package/esm/types/0_input_location_message_content.d.ts +0 -15
  161. package/esm/types/0_input_venue_message_content.d.ts +0 -19
  162. package/esm/types/0_reply_keyboard_remove.d.ts +0 -10
  163. package/esm/types/0_reply_keyboard_remove.js +0 -8
  164. package/esm/types/1_input_invoice_message_content.d.ts +0 -23
  165. package/esm/types/1_input_text_message_content.d.ts +0 -8
  166. package/esm/types/1_input_text_message_content.js +0 -1
  167. package/esm/types/2_input_message_content.d.ts +0 -6
  168. package/esm/types/2_input_message_content.js +0 -1
  169. package/esm/types/2_reply_keyboard_markup.d.ts +0 -12
  170. package/esm/types/2_reply_keyboard_markup.js +0 -37
  171. package/esm/types/3_inline_keyboard_markup.d.ts +0 -8
  172. package/esm/types/3_inline_keyboard_markup.js +0 -24
  173. package/esm/types/4_inline_query_result_article.d.ts +0 -15
  174. package/esm/types/4_inline_query_result_article.js +0 -1
  175. package/esm/types/4_inline_query_result_audio.d.ts +0 -17
  176. package/esm/types/4_inline_query_result_audio.js +0 -1
  177. package/esm/types/4_inline_query_result_cached_audio.d.ts +0 -14
  178. package/esm/types/4_inline_query_result_cached_audio.js +0 -1
  179. package/esm/types/4_inline_query_result_cached_document.d.ts +0 -15
  180. package/esm/types/4_inline_query_result_cached_document.js +0 -1
  181. package/esm/types/4_inline_query_result_cached_gif.d.ts +0 -15
  182. package/esm/types/4_inline_query_result_cached_gif.js +0 -1
  183. package/esm/types/4_inline_query_result_cached_mpeg4_gif.d.ts +0 -15
  184. package/esm/types/4_inline_query_result_cached_mpeg4_gif.js +0 -1
  185. package/esm/types/4_inline_query_result_cached_photo.d.ts +0 -16
  186. package/esm/types/4_inline_query_result_cached_photo.js +0 -1
  187. package/esm/types/4_inline_query_result_cached_sticker.d.ts +0 -9
  188. package/esm/types/4_inline_query_result_cached_sticker.js +0 -1
  189. package/esm/types/4_inline_query_result_cached_video.d.ts +0 -16
  190. package/esm/types/4_inline_query_result_cached_video.js +0 -1
  191. package/esm/types/4_inline_query_result_cached_voice.d.ts +0 -15
  192. package/esm/types/4_inline_query_result_cached_voice.js +0 -1
  193. package/esm/types/4_inline_query_result_contact.d.ts +0 -15
  194. package/esm/types/4_inline_query_result_contact.js +0 -1
  195. package/esm/types/4_inline_query_result_document.d.ts +0 -18
  196. package/esm/types/4_inline_query_result_document.js +0 -1
  197. package/esm/types/4_inline_query_result_game.d.ts +0 -7
  198. package/esm/types/4_inline_query_result_game.js +0 -1
  199. package/esm/types/4_inline_query_result_gif.d.ts +0 -20
  200. package/esm/types/4_inline_query_result_gif.js +0 -1
  201. package/esm/types/4_inline_query_result_location.d.ts +0 -18
  202. package/esm/types/4_inline_query_result_location.js +0 -1
  203. package/esm/types/4_inline_query_result_mpeg4_gif.d.ts +0 -20
  204. package/esm/types/4_inline_query_result_mpeg4_gif.js +0 -1
  205. package/esm/types/4_inline_query_result_photo.d.ts +0 -19
  206. package/esm/types/4_inline_query_result_photo.js +0 -1
  207. package/esm/types/4_inline_query_result_venue.d.ts +0 -19
  208. package/esm/types/4_inline_query_result_venue.js +0 -1
  209. package/esm/types/4_inline_query_result_video.d.ts +0 -21
  210. package/esm/types/4_inline_query_result_video.js +0 -1
  211. package/esm/types/4_inline_query_result_voice.d.ts +0 -16
  212. package/esm/types/4_inline_query_result_voice.js +0 -1
  213. package/esm/types/4_reply_markup.d.ts +0 -7
  214. package/esm/types/4_reply_markup.js +0 -22
  215. package/esm/types/5_inline_query_result.d.ts +0 -28
  216. package/script/types/0_chat_id.d.ts +0 -4
  217. package/script/types/0_force_reply.d.ts +0 -12
  218. package/script/types/0_force_reply.js +0 -22
  219. package/script/types/0_input_contact_message_content.d.ts +0 -11
  220. package/script/types/0_input_location_message_content.d.ts +0 -15
  221. package/script/types/0_input_venue_message_content.d.ts +0 -19
  222. package/script/types/0_reply_keyboard_remove.d.ts +0 -10
  223. package/script/types/0_reply_keyboard_remove.js +0 -13
  224. package/script/types/1_input_invoice_message_content.d.ts +0 -23
  225. package/script/types/1_input_text_message_content.d.ts +0 -8
  226. package/script/types/1_input_text_message_content.js +0 -2
  227. package/script/types/2_input_message_content.d.ts +0 -6
  228. package/script/types/2_input_message_content.js +0 -2
  229. package/script/types/2_reply_keyboard_markup.d.ts +0 -12
  230. package/script/types/2_reply_keyboard_markup.js +0 -42
  231. package/script/types/3_inline_keyboard_markup.d.ts +0 -8
  232. package/script/types/3_inline_keyboard_markup.js +0 -29
  233. package/script/types/4_inline_query_result_article.d.ts +0 -15
  234. package/script/types/4_inline_query_result_article.js +0 -2
  235. package/script/types/4_inline_query_result_audio.d.ts +0 -17
  236. package/script/types/4_inline_query_result_audio.js +0 -2
  237. package/script/types/4_inline_query_result_cached_audio.d.ts +0 -14
  238. package/script/types/4_inline_query_result_cached_audio.js +0 -2
  239. package/script/types/4_inline_query_result_cached_document.d.ts +0 -15
  240. package/script/types/4_inline_query_result_cached_document.js +0 -2
  241. package/script/types/4_inline_query_result_cached_gif.d.ts +0 -15
  242. package/script/types/4_inline_query_result_cached_gif.js +0 -2
  243. package/script/types/4_inline_query_result_cached_mpeg4_gif.d.ts +0 -15
  244. package/script/types/4_inline_query_result_cached_mpeg4_gif.js +0 -2
  245. package/script/types/4_inline_query_result_cached_photo.d.ts +0 -16
  246. package/script/types/4_inline_query_result_cached_photo.js +0 -2
  247. package/script/types/4_inline_query_result_cached_sticker.d.ts +0 -9
  248. package/script/types/4_inline_query_result_cached_sticker.js +0 -2
  249. package/script/types/4_inline_query_result_cached_video.d.ts +0 -16
  250. package/script/types/4_inline_query_result_cached_video.js +0 -2
  251. package/script/types/4_inline_query_result_cached_voice.d.ts +0 -15
  252. package/script/types/4_inline_query_result_cached_voice.js +0 -2
  253. package/script/types/4_inline_query_result_contact.d.ts +0 -15
  254. package/script/types/4_inline_query_result_contact.js +0 -2
  255. package/script/types/4_inline_query_result_document.d.ts +0 -18
  256. package/script/types/4_inline_query_result_document.js +0 -2
  257. package/script/types/4_inline_query_result_game.d.ts +0 -7
  258. package/script/types/4_inline_query_result_game.js +0 -2
  259. package/script/types/4_inline_query_result_gif.d.ts +0 -20
  260. package/script/types/4_inline_query_result_gif.js +0 -2
  261. package/script/types/4_inline_query_result_location.d.ts +0 -18
  262. package/script/types/4_inline_query_result_location.js +0 -2
  263. package/script/types/4_inline_query_result_mpeg4_gif.d.ts +0 -20
  264. package/script/types/4_inline_query_result_mpeg4_gif.js +0 -2
  265. package/script/types/4_inline_query_result_photo.d.ts +0 -19
  266. package/script/types/4_inline_query_result_photo.js +0 -2
  267. package/script/types/4_inline_query_result_venue.d.ts +0 -19
  268. package/script/types/4_inline_query_result_venue.js +0 -2
  269. package/script/types/4_inline_query_result_video.d.ts +0 -21
  270. package/script/types/4_inline_query_result_video.js +0 -2
  271. package/script/types/4_inline_query_result_voice.d.ts +0 -16
  272. package/script/types/4_inline_query_result_voice.js +0 -2
  273. package/script/types/4_reply_markup.d.ts +0 -7
  274. package/script/types/4_reply_markup.js +0 -26
  275. package/script/types/5_inline_query_result.d.ts +0 -28
  276. /package/esm/{client/3_params.js → _dnt.polyfills.js} +0 -0
  277. /package/esm/{types/0_chat_id.js → client/0_params.js} +0 -0
  278. /package/esm/types/{0_input_contact_message_content.js → 0_chat_member_rights.js} +0 -0
  279. /package/esm/types/{0_input_location_message_content.js → 0_file_source.js} +0 -0
  280. /package/esm/types/{0_input_venue_message_content.js → 0_id.js} +0 -0
  281. /package/esm/types/{1_input_invoice_message_content.js → 1_input_message_content.js} +0 -0
  282. /package/script/{client/3_params.js → _dnt.polyfills.js} +0 -0
  283. /package/script/{types/0_chat_id.js → client/0_params.js} +0 -0
  284. /package/script/types/{0_input_contact_message_content.js → 0_chat_member_rights.js} +0 -0
  285. /package/script/types/{0_input_location_message_content.js → 0_file_source.js} +0 -0
  286. /package/script/types/{0_input_venue_message_content.js → 0_id.js} +0 -0
  287. /package/script/types/{1_input_invoice_message_content.js → 1_input_message_content.js} +0 -0
@@ -0,0 +1,557 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _UpdateManager_instances, _a, _UpdateManager_c, _UpdateManager_updateState, _UpdateManager_updateHandler, _UpdateManager_handleUpdateQueues, _UpdateManager_checkGap, _UpdateManager_checkChannelGap, _UpdateManager_channelUpdateQueues, _UpdateManager_processChannelPtsUpdateInner, _UpdateManager_queueUpdate, _UpdateManager_processChannelPtsUpdate, _UpdateManager_processPtsUpdateInner, _UpdateManager_ptsUpdateQueue, _UpdateManager_processPtsUpdate, _UpdateManager_processUpdatesQueue, _UpdateManager_processUpdates, _UpdateManager_setUpdateStateDate, _UpdateManager_setUpdatePts, _UpdateManager_getLocalState, _UpdateManager_recoverChannelUpdateGap, _UpdateManager_handleUpdatesSet, _UpdateManager_handleStoredUpdates, _UpdateManager_handleUpdate;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.UpdateManager = void 0;
16
+ const _0_deps_js_1 = require("../0_deps.js");
17
+ const _1_utilities_js_1 = require("../1_utilities.js");
18
+ const _2_tl_js_1 = require("../2_tl.js");
19
+ const _4_constants_js_1 = require("../4_constants.js");
20
+ const _0_utilities_js_1 = require("./0_utilities.js");
21
+ const d = (0, _0_deps_js_1.debug)("UpdateManager");
22
+ const dGap = (0, _0_deps_js_1.debug)("UpdateManager/recoverUpdateGap");
23
+ const dGapC = (0, _0_deps_js_1.debug)("UpdateManager/recoverChannelUpdateGap");
24
+ class UpdateManager {
25
+ constructor(c) {
26
+ _UpdateManager_instances.add(this);
27
+ _UpdateManager_c.set(this, void 0);
28
+ _UpdateManager_updateState.set(this, void 0);
29
+ _UpdateManager_updateHandler.set(this, void 0);
30
+ _UpdateManager_handleUpdateQueues.set(this, new Map());
31
+ _UpdateManager_channelUpdateQueues.set(this, new Map());
32
+ _UpdateManager_ptsUpdateQueue.set(this, new _1_utilities_js_1.Queue("ptsUpdate"));
33
+ _UpdateManager_processUpdatesQueue.set(this, new _1_utilities_js_1.Queue("UpdateManager/processUpdates"));
34
+ _UpdateManager_handleUpdatesSet.set(this, new Set());
35
+ __classPrivateFieldSet(this, _UpdateManager_c, c, "f");
36
+ }
37
+ async fetchState(source) {
38
+ const state = await __classPrivateFieldGet(this, _UpdateManager_c, "f").api.updates.getState();
39
+ __classPrivateFieldSet(this, _UpdateManager_updateState, state, "f");
40
+ d("state fetched [%s]", source);
41
+ }
42
+ async processChats(chats) {
43
+ for (const chat of chats) {
44
+ if (chat instanceof _2_tl_js_1.types.Channel && chat.access_hash) {
45
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setEntity(chat);
46
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setChannelAccessHash(chat.id, chat.access_hash);
47
+ if (chat.username) {
48
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.updateUsernames("channel", chat.id, [chat.username]);
49
+ }
50
+ if (chat.usernames) {
51
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.updateUsernames("channel", chat.id, chat.usernames.map((v) => v.username));
52
+ }
53
+ }
54
+ else if (chat instanceof _2_tl_js_1.types.Chat) {
55
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setEntity(chat);
56
+ }
57
+ else if (chat instanceof _2_tl_js_1.types.ChannelForbidden || chat instanceof _2_tl_js_1.types.ChatForbidden) {
58
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.removeEntity(chat);
59
+ }
60
+ }
61
+ }
62
+ async processResult(result) {
63
+ if (result instanceof _2_tl_js_1.types.messages.Dialogs ||
64
+ result instanceof _2_tl_js_1.types.messages.DialogsSlice ||
65
+ result instanceof _2_tl_js_1.types.messages.Messages ||
66
+ result instanceof _2_tl_js_1.types.messages.MessagesSlice ||
67
+ result instanceof _2_tl_js_1.types.messages.ChannelMessages ||
68
+ result instanceof _2_tl_js_1.types.messages.ChatFull ||
69
+ result instanceof _2_tl_js_1.types.contacts.Found ||
70
+ result instanceof _2_tl_js_1.types.account.PrivacyRules ||
71
+ result instanceof _2_tl_js_1.types.contacts.ResolvedPeer ||
72
+ result instanceof _2_tl_js_1.types.channels.ChannelParticipants ||
73
+ result instanceof _2_tl_js_1.types.channels.ChannelParticipant ||
74
+ result instanceof _2_tl_js_1.types.messages.PeerDialogs ||
75
+ result instanceof _2_tl_js_1.types.contacts.TopPeers ||
76
+ result instanceof _2_tl_js_1.types.channels.AdminLogResults ||
77
+ result instanceof _2_tl_js_1.types.help.RecentMeUrls ||
78
+ result instanceof _2_tl_js_1.types.messages.InactiveChats ||
79
+ result instanceof _2_tl_js_1.types.help.PromoData ||
80
+ result instanceof _2_tl_js_1.types.messages.MessageViews ||
81
+ result instanceof _2_tl_js_1.types.messages.DiscussionMessage ||
82
+ result instanceof _2_tl_js_1.types.phone.GroupCall ||
83
+ result instanceof _2_tl_js_1.types.phone.GroupParticipants ||
84
+ result instanceof _2_tl_js_1.types.phone.JoinAsPeers ||
85
+ result instanceof _2_tl_js_1.types.messages.SponsoredMessages ||
86
+ result instanceof _2_tl_js_1.types.messages.SearchResultsCalendar ||
87
+ result instanceof _2_tl_js_1.types.channels.SendAsPeers ||
88
+ result instanceof _2_tl_js_1.types.users.UserFull ||
89
+ result instanceof _2_tl_js_1.types.messages.PeerSettings ||
90
+ result instanceof _2_tl_js_1.types.messages.MessageReactionsList ||
91
+ result instanceof _2_tl_js_1.types.messages.ForumTopics ||
92
+ result instanceof _2_tl_js_1.types.account.AutoSaveSettings ||
93
+ result instanceof _2_tl_js_1.types.chatlists.ExportedInvites ||
94
+ result instanceof _2_tl_js_1.types.chatlists.ChatlistInviteAlready ||
95
+ result instanceof _2_tl_js_1.types.chatlists.ChatlistInvite ||
96
+ result instanceof _2_tl_js_1.types.chatlists.ChatlistUpdates ||
97
+ result instanceof _2_tl_js_1.types.messages.Chats ||
98
+ result instanceof _2_tl_js_1.types.messages.ChatsSlice) {
99
+ await this.processChats(result.chats);
100
+ if ("users" in result) {
101
+ await this.processUsers(result.users);
102
+ }
103
+ if ("messages" in result) {
104
+ for (const message of result.messages) {
105
+ if (message instanceof _2_tl_js_1.types.Message || message instanceof _2_tl_js_1.types.MessageService) {
106
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setMessage((0, _2_tl_js_1.peerToChatId)(message.peer_id), message.id, message);
107
+ }
108
+ }
109
+ }
110
+ }
111
+ if (result instanceof _2_tl_js_1.types.messages.Messages) {
112
+ for (const message of result.messages) {
113
+ if (message instanceof _2_tl_js_1.types.Message || message instanceof _2_tl_js_1.types.MessageService) {
114
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setMessage((0, _2_tl_js_1.peerToChatId)(message.peer_id), message.id, message);
115
+ }
116
+ }
117
+ }
118
+ }
119
+ async processUsers(users) {
120
+ for (const user of users) {
121
+ if (user instanceof _2_tl_js_1.types.User && user.access_hash) {
122
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setEntity(user);
123
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setUserAccessHash(user.id, user.access_hash);
124
+ if (user.username) {
125
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.updateUsernames("user", user.id, [user.username]);
126
+ }
127
+ if (user.usernames) {
128
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.updateUsernames("user", user.id, user.usernames.map((v) => v.username));
129
+ }
130
+ }
131
+ }
132
+ }
133
+ getHandleUpdateQueue(boxId) {
134
+ let queue = __classPrivateFieldGet(this, _UpdateManager_handleUpdateQueues, "f").get(boxId);
135
+ if (queue !== undefined) {
136
+ return queue;
137
+ }
138
+ else {
139
+ queue = new _1_utilities_js_1.Queue(`handleUpdate-${boxId}`);
140
+ return queue;
141
+ }
142
+ }
143
+ processUpdates(updates, checkGap, call = null, callback) {
144
+ __classPrivateFieldGet(this, _UpdateManager_processUpdatesQueue, "f").add(() => __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processUpdates).call(this, updates, checkGap, call).then(callback));
145
+ }
146
+ async recoverUpdateGap(source) {
147
+ dGap("recovering from update gap [%s]", source);
148
+ __classPrivateFieldGet(this, _UpdateManager_c, "f").setConnectionState("updating");
149
+ try {
150
+ let state = await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_getLocalState).call(this);
151
+ while (true) {
152
+ const difference = await __classPrivateFieldGet(this, _UpdateManager_c, "f").api.updates.getDifference({ pts: state.pts, date: state.date, qts: state.qts ?? 0 });
153
+ if (difference instanceof _2_tl_js_1.types.updates.Difference || difference instanceof _2_tl_js_1.types.updates.DifferenceSlice) {
154
+ await this.processChats(difference.chats);
155
+ await this.processUsers(difference.users);
156
+ for (const message of difference.new_messages) {
157
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processUpdates).call(this, new _2_tl_js_1.types.UpdateNewMessage({ message, pts: 0, pts_count: 0 }), false);
158
+ }
159
+ for (const update of difference.other_updates) {
160
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processUpdates).call(this, update, false);
161
+ }
162
+ if (difference instanceof _2_tl_js_1.types.updates.Difference) {
163
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setState(difference.state);
164
+ dGap("recovered from update gap");
165
+ break;
166
+ }
167
+ else if (difference instanceof _2_tl_js_1.types.updates.DifferenceSlice) {
168
+ state = difference.intermediate_state;
169
+ }
170
+ else {
171
+ (0, _1_utilities_js_1.UNREACHABLE)();
172
+ }
173
+ }
174
+ else if (difference instanceof _2_tl_js_1.types.updates.DifferenceTooLong) {
175
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.deleteMessages();
176
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.removeChats(0);
177
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.removeChats(1);
178
+ state.pts = difference.pts;
179
+ dGap("received differenceTooLong");
180
+ }
181
+ else if (difference instanceof _2_tl_js_1.types.updates.DifferenceEmpty) {
182
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_setUpdateStateDate).call(this, difference.date);
183
+ dGap("there was no update gap");
184
+ break;
185
+ }
186
+ else {
187
+ (0, _1_utilities_js_1.UNREACHABLE)();
188
+ }
189
+ }
190
+ }
191
+ finally {
192
+ __classPrivateFieldGet(this, _UpdateManager_c, "f").resetConnectionState();
193
+ }
194
+ }
195
+ setUpdateHandler(handler) {
196
+ __classPrivateFieldSet(this, _UpdateManager_updateHandler, handler, "f");
197
+ }
198
+ }
199
+ exports.UpdateManager = UpdateManager;
200
+ _a = UpdateManager, _UpdateManager_c = new WeakMap(), _UpdateManager_updateState = new WeakMap(), _UpdateManager_updateHandler = new WeakMap(), _UpdateManager_handleUpdateQueues = new WeakMap(), _UpdateManager_channelUpdateQueues = new WeakMap(), _UpdateManager_ptsUpdateQueue = new WeakMap(), _UpdateManager_processUpdatesQueue = new WeakMap(), _UpdateManager_handleUpdatesSet = new WeakMap(), _UpdateManager_instances = new WeakSet(), _UpdateManager_checkGap = async function _UpdateManager_checkGap(pts, ptsCount) {
201
+ const localState = await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_getLocalState).call(this);
202
+ if (localState.pts + ptsCount < pts) {
203
+ await this.recoverUpdateGap("processUpdates");
204
+ }
205
+ }, _UpdateManager_checkChannelGap = async function _UpdateManager_checkChannelGap(channelId, pts, ptsCount) {
206
+ let localPts = await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.getChannelPts(channelId);
207
+ if (!localPts) {
208
+ localPts = pts - ptsCount;
209
+ }
210
+ if (localPts + ptsCount < pts) {
211
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_recoverChannelUpdateGap).call(this, channelId, "processUpdates");
212
+ }
213
+ }, _UpdateManager_processChannelPtsUpdateInner = async function _UpdateManager_processChannelPtsUpdateInner(update, checkGap) {
214
+ const channelId = update instanceof _2_tl_js_1.types.UpdateNewChannelMessage || update instanceof _2_tl_js_1.types.UpdateEditChannelMessage ? update.message.peer_id[_2_tl_js_1.as](_2_tl_js_1.types.PeerChannel).channel_id : update.channel_id;
215
+ if (update instanceof _2_tl_js_1.types.UpdateChannelTooLong) {
216
+ if (update.pts != undefined) {
217
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setChannelPts(channelId, update.pts);
218
+ }
219
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_recoverChannelUpdateGap).call(this, channelId, "updateChannelTooLong");
220
+ return;
221
+ }
222
+ if (update.pts != 0) {
223
+ const ptsCount = update.pts_count;
224
+ if (checkGap) {
225
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_checkChannelGap).call(this, channelId, update.pts, ptsCount);
226
+ }
227
+ let currentPts = await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.getChannelPts(channelId);
228
+ currentPts ??= update.pts - ptsCount;
229
+ if (currentPts + ptsCount > update.pts) {
230
+ return;
231
+ }
232
+ }
233
+ if (__classPrivateFieldGet(this, _UpdateManager_c, "f").guaranteeUpdateDelivery) {
234
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setUpdate(channelId, update);
235
+ }
236
+ if (update.pts != 0) {
237
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setChannelPts(channelId, update.pts);
238
+ }
239
+ __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_queueUpdate).call(this, update, channelId, true);
240
+ }, _UpdateManager_queueUpdate = function _UpdateManager_queueUpdate(update, boxId, pts) {
241
+ this.getHandleUpdateQueue(boxId).add(async () => {
242
+ if (__classPrivateFieldGet(this, _UpdateManager_c, "f").guaranteeUpdateDelivery && pts) {
243
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_handleStoredUpdates).call(this, boxId);
244
+ }
245
+ else {
246
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_handleUpdate).call(this, update);
247
+ }
248
+ });
249
+ }, _UpdateManager_processChannelPtsUpdate = function _UpdateManager_processChannelPtsUpdate(update, checkGap) {
250
+ const channelId = update instanceof _2_tl_js_1.types.UpdateNewChannelMessage || update instanceof _2_tl_js_1.types.UpdateEditChannelMessage ? update.message.peer_id[_2_tl_js_1.as](_2_tl_js_1.types.PeerChannel).channel_id : update.channel_id;
251
+ let queue = __classPrivateFieldGet(this, _UpdateManager_channelUpdateQueues, "f").get(channelId);
252
+ if (queue == undefined) {
253
+ queue = new _1_utilities_js_1.Queue(`channelUpdates-${channelId}`);
254
+ __classPrivateFieldGet(this, _UpdateManager_channelUpdateQueues, "f").set(channelId, queue);
255
+ }
256
+ queue.add(async () => {
257
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processChannelPtsUpdateInner).call(this, update, checkGap);
258
+ });
259
+ }, _UpdateManager_processPtsUpdateInner = async function _UpdateManager_processPtsUpdateInner(update, checkGap) {
260
+ const localState = await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_getLocalState).call(this);
261
+ if (update.pts != 0) {
262
+ if (checkGap) {
263
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_checkGap).call(this, update.pts, update.pts_count);
264
+ }
265
+ if (localState.pts + update.pts_count > update.pts) {
266
+ return;
267
+ }
268
+ }
269
+ if (__classPrivateFieldGet(this, _UpdateManager_c, "f").guaranteeUpdateDelivery) {
270
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setUpdate(_a.MAIN_BOX_ID, update);
271
+ }
272
+ if (update.pts != 0) {
273
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_setUpdatePts).call(this, update.pts);
274
+ }
275
+ __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_queueUpdate).call(this, update, 0n, true);
276
+ }, _UpdateManager_processPtsUpdate = function _UpdateManager_processPtsUpdate(update, checkGap) {
277
+ __classPrivateFieldGet(this, _UpdateManager_ptsUpdateQueue, "f").add(async () => {
278
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processPtsUpdateInner).call(this, update, checkGap);
279
+ });
280
+ }, _UpdateManager_processUpdates = async function _UpdateManager_processUpdates(updates_, checkGap, call = null) {
281
+ /// First, individual updates (Update[1]) are extracted from Updates.[2]
282
+ ///
283
+ /// If an updatesTooLong[3] was received, an update gap recovery is initiated and no further action will be taken.
284
+ ///
285
+ /// [1]: https://core.telegram.org/type/Update
286
+ /// [2]: https://core.telegram.org/type/Updates
287
+ /// [3]: https://core.telegram.org/constructor/updatesTooLong
288
+ let updates;
289
+ if (updates_ instanceof _2_tl_js_1.types.UpdatesCombined || updates_ instanceof _2_tl_js_1.types.Updates) {
290
+ updates = updates_.updates;
291
+ const seq = updates_.seq;
292
+ const seqStart = "seq_start" in updates_ ? updates_.seq_start : updates_.seq;
293
+ if (checkGap) {
294
+ if (seqStart == 0) {
295
+ checkGap = false;
296
+ d("seqStart=0");
297
+ }
298
+ else {
299
+ const localState = await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_getLocalState).call(this);
300
+ const localSeq = localState.seq;
301
+ if (localSeq + 1 == seqStart) {
302
+ // The update sequence can be applied.
303
+ localState.seq = seq;
304
+ localState.date = updates_.date;
305
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_setUpdateStateDate).call(this, updates_.date);
306
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setState(localState);
307
+ }
308
+ else if (localSeq + 1 > seqStart) {
309
+ // The update sequence was already applied, and must be ignored.
310
+ d("localSeq + 1 > seqStart");
311
+ return;
312
+ }
313
+ else if (localSeq + 1 < seqStart) {
314
+ // There's an updates gap that must be filled.
315
+ await this.recoverUpdateGap("localSeq + 1 < seqStart");
316
+ }
317
+ }
318
+ }
319
+ }
320
+ else if (updates_ instanceof _2_tl_js_1.types.UpdateShort) {
321
+ updates = [updates_.update];
322
+ }
323
+ else if (updates_ instanceof _2_tl_js_1.types.UpdateShortMessage) {
324
+ updates = [
325
+ new _2_tl_js_1.types.UpdateNewMessage({
326
+ message: new _2_tl_js_1.types.Message({
327
+ out: updates_.out,
328
+ mentioned: updates_.mentioned,
329
+ media_unread: updates_.media_unread,
330
+ silent: updates_.silent,
331
+ id: updates_.id,
332
+ from_id: updates_.out ? new _2_tl_js_1.types.PeerUser({ user_id: await __classPrivateFieldGet(this, _UpdateManager_c, "f").getSelfId().then(BigInt) }) : new _2_tl_js_1.types.PeerUser({ user_id: updates_.user_id }),
333
+ peer_id: new _2_tl_js_1.types.PeerUser({ user_id: updates_.user_id }),
334
+ message: updates_.message,
335
+ date: updates_.date,
336
+ fwd_from: updates_.fwd_from,
337
+ via_bot_id: updates_.via_bot_id,
338
+ reply_to: updates_.reply_to,
339
+ entities: updates_.entities,
340
+ ttl_period: updates_.ttl_period,
341
+ }),
342
+ pts: updates_.pts,
343
+ pts_count: updates_.pts_count,
344
+ }),
345
+ ];
346
+ }
347
+ else if (updates_ instanceof _2_tl_js_1.types.UpdateShortChatMessage) {
348
+ updates = [
349
+ new _2_tl_js_1.types.UpdateNewMessage({
350
+ message: new _2_tl_js_1.types.Message({
351
+ out: updates_.out,
352
+ mentioned: updates_.mentioned,
353
+ media_unread: updates_.media_unread,
354
+ silent: updates_.silent,
355
+ id: updates_.id,
356
+ from_id: new _2_tl_js_1.types.PeerUser({ user_id: updates_.from_id }),
357
+ peer_id: new _2_tl_js_1.types.PeerChat({ chat_id: updates_.chat_id }),
358
+ fwd_from: updates_.fwd_from,
359
+ via_bot_id: updates_.via_bot_id,
360
+ reply_to: updates_.reply_to,
361
+ date: updates_.date,
362
+ message: updates_.message,
363
+ entities: updates_.entities,
364
+ ttl_period: updates_.ttl_period,
365
+ }),
366
+ pts: updates_.pts,
367
+ pts_count: updates_.pts_count,
368
+ }),
369
+ ];
370
+ }
371
+ else if (updates_ instanceof _2_tl_js_1.types.UpdateShortSentMessage) {
372
+ if (!(call instanceof _2_tl_js_1.functions.messages.sendMessage)) {
373
+ (0, _1_utilities_js_1.UNREACHABLE)();
374
+ }
375
+ updates = [
376
+ new _2_tl_js_1.types.UpdateNewMessage({
377
+ message: new _2_tl_js_1.types.Message({
378
+ out: updates_.out,
379
+ silent: call.silent,
380
+ id: updates_.id,
381
+ from_id: new _2_tl_js_1.types.PeerUser({ user_id: await __classPrivateFieldGet(this, _UpdateManager_c, "f").getSelfId().then(BigInt) }),
382
+ peer_id: (0, _2_tl_js_1.inputPeerToPeer)(call.peer),
383
+ message: call.message,
384
+ media: updates_.media,
385
+ date: updates_.date,
386
+ // reply_to: call.reply_to, // TODO?
387
+ entities: updates_.entities,
388
+ ttl_period: updates_.ttl_period,
389
+ }),
390
+ pts: updates_.pts,
391
+ pts_count: updates_.pts_count,
392
+ }),
393
+ ];
394
+ }
395
+ else if (updates_ instanceof _2_tl_js_1.types.UpdatesTooLong) {
396
+ await this.recoverUpdateGap("updatesTooLong");
397
+ return;
398
+ }
399
+ else if (updates_ instanceof _2_tl_js_1.types._Update) {
400
+ updates = [updates_];
401
+ }
402
+ else {
403
+ (0, _1_utilities_js_1.UNREACHABLE)();
404
+ }
405
+ /// We process the updates when we are sure there is no gap.
406
+ if (updates_ instanceof _2_tl_js_1.types.Updates || updates_ instanceof _2_tl_js_1.types.UpdatesCombined) {
407
+ await this.processChats(updates_.chats);
408
+ await this.processUsers(updates_.users);
409
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_setUpdateStateDate).call(this, updates_.date);
410
+ }
411
+ else if (updates_ instanceof _2_tl_js_1.types.UpdateShort ||
412
+ updates_ instanceof _2_tl_js_1.types.UpdateShortMessage ||
413
+ updates_ instanceof _2_tl_js_1.types.UpdateShortChatMessage ||
414
+ updates_ instanceof _2_tl_js_1.types.UpdateShortSentMessage) {
415
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_setUpdateStateDate).call(this, updates_.date);
416
+ }
417
+ for (const update of updates) {
418
+ if (update instanceof _2_tl_js_1.types.UpdatePtsChanged) {
419
+ await this.fetchState("updatePtsChanged");
420
+ if (__classPrivateFieldGet(this, _UpdateManager_updateState, "f")) {
421
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setState(__classPrivateFieldGet(this, _UpdateManager_updateState, "f"));
422
+ }
423
+ else {
424
+ (0, _1_utilities_js_1.UNREACHABLE)();
425
+ }
426
+ }
427
+ else if ((0, _0_utilities_js_1.isPtsUpdate)(update)) {
428
+ __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processPtsUpdate).call(this, update, checkGap);
429
+ }
430
+ else if ((0, _0_utilities_js_1.isChannelPtsUpdate)(update)) {
431
+ __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processChannelPtsUpdate).call(this, update, checkGap);
432
+ }
433
+ else {
434
+ __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_queueUpdate).call(this, update, 0n, false);
435
+ }
436
+ }
437
+ }, _UpdateManager_setUpdateStateDate = async function _UpdateManager_setUpdateStateDate(date) {
438
+ const localState = await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_getLocalState).call(this);
439
+ localState.date = date;
440
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setState(localState);
441
+ }, _UpdateManager_setUpdatePts = async function _UpdateManager_setUpdatePts(pts) {
442
+ const localState = await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_getLocalState).call(this);
443
+ localState.pts = pts;
444
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setState(localState);
445
+ }, _UpdateManager_getLocalState = async function _UpdateManager_getLocalState() {
446
+ let localState = await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.getState();
447
+ if (!localState) {
448
+ if (__classPrivateFieldGet(this, _UpdateManager_updateState, "f")) {
449
+ localState = __classPrivateFieldGet(this, _UpdateManager_updateState, "f");
450
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setState(localState);
451
+ }
452
+ else {
453
+ await this.fetchState("getLocalState");
454
+ if (__classPrivateFieldGet(this, _UpdateManager_updateState, "f")) {
455
+ localState = __classPrivateFieldGet(this, _UpdateManager_updateState, "f");
456
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setState(localState);
457
+ }
458
+ else {
459
+ (0, _1_utilities_js_1.UNREACHABLE)();
460
+ }
461
+ }
462
+ }
463
+ return localState;
464
+ }, _UpdateManager_recoverChannelUpdateGap = async function _UpdateManager_recoverChannelUpdateGap(channelId, source) {
465
+ dGapC("recovering channel update gap [%o, %s]", channelId, source);
466
+ const pts_ = await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.getChannelPts(channelId);
467
+ let pts = pts_ == null ? 1 : pts_;
468
+ while (true) {
469
+ const { access_hash } = await __classPrivateFieldGet(this, _UpdateManager_c, "f").getInputPeer(_1_utilities_js_1.ZERO_CHANNEL_ID + -Number(channelId)).then((v) => v[_2_tl_js_1.as](_2_tl_js_1.types.InputPeerChannel));
470
+ const difference = await __classPrivateFieldGet(this, _UpdateManager_c, "f").api.updates.getChannelDifference({
471
+ pts,
472
+ channel: new _2_tl_js_1.types.InputChannel({ channel_id: channelId, access_hash }),
473
+ filter: new _2_tl_js_1.types.ChannelMessagesFilterEmpty(),
474
+ limit: await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.getAccountType() == "user" ? _4_constants_js_1.CHANNEL_DIFFERENCE_LIMIT_USER : _4_constants_js_1.CHANNEL_DIFFERENCE_LIMIT_BOT,
475
+ });
476
+ if (difference instanceof _2_tl_js_1.types.updates.ChannelDifference) {
477
+ await this.processChats(difference.chats);
478
+ await this.processUsers(difference.users);
479
+ for (const message of difference.new_messages) {
480
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processUpdates).call(this, new _2_tl_js_1.types.UpdateNewChannelMessage({ message, pts: 0, pts_count: 0 }), false);
481
+ }
482
+ for (const update of difference.other_updates) {
483
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processUpdates).call(this, update, false);
484
+ }
485
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.setChannelPts(channelId, difference.pts);
486
+ dGapC("recovered from update gap [%o, %s]", channelId, source);
487
+ break;
488
+ }
489
+ else if (difference instanceof _2_tl_js_1.types.updates.ChannelDifferenceTooLong) {
490
+ // TODO: invalidate messages
491
+ dGapC("received channelDifferenceTooLong");
492
+ await this.processChats(difference.chats);
493
+ await this.processUsers(difference.users);
494
+ for (const message of difference.messages) {
495
+ await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_processUpdates).call(this, new _2_tl_js_1.types.UpdateNewChannelMessage({ message, pts: 0, pts_count: 0 }), false);
496
+ }
497
+ const pts_ = difference.dialog[_2_tl_js_1.as](_2_tl_js_1.types.Dialog).pts;
498
+ if (pts_ != undefined) {
499
+ pts = pts_;
500
+ }
501
+ else {
502
+ (0, _1_utilities_js_1.UNREACHABLE)();
503
+ }
504
+ dGapC("processed channelDifferenceTooLong");
505
+ }
506
+ else if (difference instanceof _2_tl_js_1.types.updates.ChannelDifferenceEmpty) {
507
+ dGapC("there was no update gap");
508
+ break;
509
+ }
510
+ }
511
+ }, _UpdateManager_handleStoredUpdates = async function _UpdateManager_handleStoredUpdates(boxId) {
512
+ if (__classPrivateFieldGet(this, _UpdateManager_handleUpdatesSet, "f").has(boxId)) {
513
+ return;
514
+ }
515
+ __classPrivateFieldGet(this, _UpdateManager_handleUpdatesSet, "f").add(boxId);
516
+ do {
517
+ const maybeUpdate = await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.getFirstUpdate(boxId);
518
+ if (maybeUpdate == null) {
519
+ break;
520
+ }
521
+ const [key, update] = maybeUpdate;
522
+ for (let i = 0; i < 100; ++i) {
523
+ try {
524
+ const handle = await __classPrivateFieldGet(this, _UpdateManager_instances, "m", _UpdateManager_handleUpdate).call(this, update);
525
+ handle: for (let i = 0; i < 2; ++i) {
526
+ try {
527
+ await handle();
528
+ break handle;
529
+ }
530
+ catch {
531
+ continue handle;
532
+ }
533
+ }
534
+ break;
535
+ }
536
+ catch (err) {
537
+ d("#handleUpdate error: %o", err);
538
+ }
539
+ }
540
+ await __classPrivateFieldGet(this, _UpdateManager_c, "f").storage.set(key, null);
541
+ } while (true);
542
+ __classPrivateFieldGet(this, _UpdateManager_handleUpdatesSet, "f").delete(boxId);
543
+ }, _UpdateManager_handleUpdate = async function _UpdateManager_handleUpdate(update) {
544
+ const handler = __classPrivateFieldGet(this, _UpdateManager_updateHandler, "f");
545
+ if (handler) {
546
+ return await handler(update);
547
+ }
548
+ else {
549
+ return () => Promise.resolve();
550
+ }
551
+ };
552
+ Object.defineProperty(UpdateManager, "MAIN_BOX_ID", {
553
+ enumerable: true,
554
+ configurable: true,
555
+ writable: true,
556
+ value: 0n
557
+ });
@@ -0,0 +1,40 @@
1
+ import { enums, types } from "../2_tl.js";
2
+ import { FileSource, ID, Message } from "../3_types.js";
3
+ import { DeleteMessagesParams, EditMessageParams, EditMessageReplyMarkupParams, ForwardMessagesParams, GetHistoryParams, PinMessageParams, SendAnimationParams, SendAudioParams, SendContactParams, SendDiceParams, SendDocumentParams, SendLocationParams, SendMessageParams, SendPhotoParams, SendPollParams, SendVenueParams, SendVideoNoteParams, SendVideoParams, SendVoiceParams } from "./0_params.js";
4
+ import { C as C_ } from "./0_types.js";
5
+ import { FileManager } from "./1_file_manager.js";
6
+ interface C extends C_ {
7
+ fileManager: FileManager;
8
+ }
9
+ export declare class MessageManager {
10
+ #private;
11
+ constructor(c: C);
12
+ getMessages(chatId: ID, messageIds: number[]): Promise<Message[]>;
13
+ getMessageWithReply(chatId: ID, messageId: number): Promise<Message>;
14
+ getMessage(chatId: ID, messageId: number): Promise<Message>;
15
+ getStickerSetName(inputStickerSet: types.InputStickerSetID, hash?: number): Promise<string>;
16
+ constructMessage(message_: enums.Message, r?: boolean): Promise<Message>;
17
+ forwardMessages(from: ID, to: ID, messageIds: number[], params?: ForwardMessagesParams): Promise<Message[]>;
18
+ getHistory(chatId: ID, params?: GetHistoryParams): Promise<Message[]>;
19
+ sendMessage(chatId: ID, text: string, params?: SendMessageParams): Promise<import("../3_types.js").MessageText>;
20
+ sendVenue(chatId: ID, latitude: number, longitude: number, title: string, address: string, params?: SendVenueParams): Promise<import("../3_types.js").MessageVenue>;
21
+ sendContact(chatId: ID, firstName: string, number: string, params?: SendContactParams): Promise<import("../3_types.js").MessageContact>;
22
+ sendDice(chatId: ID, params?: SendDiceParams): Promise<import("../3_types.js").MessageDice>;
23
+ sendLocation(chatId: ID, latitude: number, longitude: number, params?: SendLocationParams): Promise<import("../3_types.js").MessageLocation>;
24
+ sendVideoNote(chatId: ID, audio: FileSource, params?: SendVideoNoteParams): Promise<import("../3_types.js").MessageVideoNote>;
25
+ sendAudio(chatId: ID, audio: FileSource, params?: SendAudioParams): Promise<import("../3_types.js").MessageAudio>;
26
+ sendVoice(chatId: ID, voice: FileSource, params?: SendVoiceParams): Promise<import("../3_types.js").MessageVoice>;
27
+ sendAnimation(chatId: ID, animation: FileSource, params?: SendAnimationParams): Promise<import("../3_types.js").MessageAnimation>;
28
+ sendVideo(chatId: ID, video: FileSource, params?: SendVideoParams): Promise<import("../3_types.js").MessageVideo>;
29
+ sendDocument(chatId: ID, document: FileSource, params?: SendDocumentParams): Promise<import("../3_types.js").MessageDocument>;
30
+ sendPhoto(chatId: ID, photo: FileSource, params?: SendPhotoParams): Promise<import("../3_types.js").MessagePhoto>;
31
+ sendPoll(chatId: ID, question: string, options: [string, string, ...string[]], params?: SendPollParams): Promise<import("../3_types.js").MessagePoll>;
32
+ editMessageReplyMarkup(chatId: ID, messageId: number, params?: EditMessageReplyMarkupParams): Promise<import("../3_types.js").MessageText | import("../3_types.js").MessagePhoto | import("../3_types.js").MessageDocument | import("../3_types.js").MessageVideo | import("../3_types.js").MessageSticker | import("../3_types.js").MessageAnimation | import("../3_types.js").MessageVoice | import("../3_types.js").MessageAudio | import("../3_types.js").MessageDice | import("../3_types.js").MessageVideoNote | import("../3_types.js").MessageContact | import("../3_types.js").MessageGame | import("../3_types.js").MessagePoll | import("../3_types.js").MessageVenue | import("../3_types.js").MessageLocation | import("../3_types.js").MessageNewChatMembers | import("../3_types.js").MessageLeftChatMember | import("../3_types.js").MessageNewChatTitle | import("../3_types.js").MessageNewChatPhoto | import("../3_types.js").MessageDeletedChatPhoto | import("../3_types.js").MessageGroupCreated | import("../3_types.js").MessageSupergroupCreated | import("../3_types.js").MessageChannelCreated | import("../3_types.js").MessageAutoDeleteTimerChanged | import("../3_types.js").MessageChatMigratedTo | import("../3_types.js").MessageChatMigratedFrom | import("../3_types.js").MessagePinnedMessage | import("../3_types.js").MessageUserShared | import("../3_types.js").MessageWriteAccessAllowed | import("../3_types.js").MessageForumTopicCreated | import("../3_types.js").MessageForumTopicEdited | import("../3_types.js").MessageForumTopicClosed | import("../3_types.js").MessageForumTopicReopened | import("../3_types.js").MessageVideoChatScheduled | import("../3_types.js").MessageVideoChatStarted | import("../3_types.js").MessageVideoChatEnded | import("../3_types.js").MessageGiveaway | import("../3_types.js").MessageUnsupported>;
33
+ editMessageText(chatId: ID, messageId: number, text: string, params?: EditMessageParams): Promise<import("../3_types.js").MessageText>;
34
+ deleteMessages(chatId: ID, messageIds: number[], params?: DeleteMessagesParams): Promise<void>;
35
+ deleteChatMemberMessages(chatId: ID, memberId: ID): Promise<void>;
36
+ pinMessage(chatId: ID, messageId: number, params?: PinMessageParams): Promise<void>;
37
+ unpinMessage(chatId: ID, messageId: number): Promise<void>;
38
+ unpinMessages(chatId: ID): Promise<void>;
39
+ }
40
+ export {};