@mtcute/core 0.10.2 → 0.11.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 (963) hide show
  1. package/cjs/highlevel/base.d.ts +1 -1
  2. package/cjs/highlevel/base.js +29 -23
  3. package/cjs/highlevel/base.js.map +1 -1
  4. package/cjs/highlevel/client.d.ts +3 -2
  5. package/cjs/highlevel/client.js +1 -0
  6. package/cjs/highlevel/client.js.map +1 -1
  7. package/cjs/highlevel/managers/app-config-manager.js +7 -5
  8. package/cjs/highlevel/managers/app-config-manager.js.map +1 -1
  9. package/cjs/highlevel/methods/_init.js.map +1 -1
  10. package/cjs/highlevel/methods/auth/start-test.js.map +1 -1
  11. package/cjs/highlevel/methods/auth/start.js.map +1 -1
  12. package/cjs/highlevel/methods/auth/utils.js.map +1 -1
  13. package/cjs/highlevel/methods/bots/get-callback-answer.js.map +1 -1
  14. package/cjs/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
  15. package/cjs/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
  16. package/cjs/highlevel/methods/bots/set-my-commands.js.map +1 -1
  17. package/cjs/highlevel/methods/chats/add-chat-members.js.map +1 -1
  18. package/cjs/highlevel/methods/chats/ban-chat-member.js.map +1 -1
  19. package/cjs/highlevel/methods/chats/batched-queries.js.map +1 -1
  20. package/cjs/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
  21. package/cjs/highlevel/methods/chats/delete-history.js.map +1 -1
  22. package/cjs/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
  23. package/cjs/highlevel/methods/chats/get-chat-member.js.map +1 -1
  24. package/cjs/highlevel/methods/chats/get-chat-members.js.map +1 -1
  25. package/cjs/highlevel/methods/chats/get-chat-preview.js.map +1 -1
  26. package/cjs/highlevel/methods/chats/get-chat.js.map +1 -1
  27. package/cjs/highlevel/methods/chats/get-full-chat.js.map +1 -1
  28. package/cjs/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
  29. package/cjs/highlevel/methods/chats/get-similar-channels.js.map +1 -1
  30. package/cjs/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
  31. package/cjs/highlevel/methods/chats/iter-chat-members.js.map +1 -1
  32. package/cjs/highlevel/methods/chats/join-chat.js.map +1 -1
  33. package/cjs/highlevel/methods/chats/kick-chat-member.js.map +1 -1
  34. package/cjs/highlevel/methods/chats/leave-chat.js.map +1 -1
  35. package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
  36. package/cjs/highlevel/methods/chats/reorder-usernames.js.map +1 -1
  37. package/cjs/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
  38. package/cjs/highlevel/methods/chats/save-draft.js.map +1 -1
  39. package/cjs/highlevel/methods/chats/set-chat-color.js.map +1 -1
  40. package/cjs/highlevel/methods/chats/set-chat-photo.js.map +1 -1
  41. package/cjs/highlevel/methods/chats/set-chat-title.js.map +1 -1
  42. package/cjs/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
  43. package/cjs/highlevel/methods/chats/unarchive-chats.js.map +1 -1
  44. package/cjs/highlevel/methods/chats/unban-chat-member.js.map +1 -1
  45. package/cjs/highlevel/methods/contacts/delete-contacts.js.map +1 -1
  46. package/cjs/highlevel/methods/dialogs/create-folder.js.map +1 -1
  47. package/cjs/highlevel/methods/dialogs/edit-folder.js.map +1 -1
  48. package/cjs/highlevel/methods/dialogs/find-folder.js.map +1 -1
  49. package/cjs/highlevel/methods/dialogs/get-folders.js.map +1 -1
  50. package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  51. package/cjs/highlevel/methods/files/download-buffer.js.map +1 -1
  52. package/cjs/highlevel/methods/files/download-iterable.js +1 -1
  53. package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
  54. package/cjs/highlevel/methods/files/download-node-stream.js.map +1 -1
  55. package/cjs/highlevel/methods/files/download-stream.js.map +1 -1
  56. package/cjs/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
  57. package/cjs/highlevel/methods/files/normalize-input-file.js.map +1 -1
  58. package/cjs/highlevel/methods/files/normalize-input-media.js +1 -2
  59. package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
  60. package/cjs/highlevel/methods/files/upload-file.js +7 -6
  61. package/cjs/highlevel/methods/files/upload-file.js.map +1 -1
  62. package/cjs/highlevel/methods/files/upload-media.js.map +1 -1
  63. package/cjs/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
  64. package/cjs/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
  65. package/cjs/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
  66. package/cjs/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
  67. package/cjs/highlevel/methods/messages/close-poll.js.map +1 -1
  68. package/cjs/highlevel/methods/messages/delete-messages.js.map +1 -1
  69. package/cjs/highlevel/methods/messages/edit-inline-message.js.map +1 -1
  70. package/cjs/highlevel/methods/messages/edit-message.js.map +1 -1
  71. package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
  72. package/cjs/highlevel/methods/messages/forward-messages.js.map +1 -1
  73. package/cjs/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
  74. package/cjs/highlevel/methods/messages/get-discussion-message.js.map +1 -1
  75. package/cjs/highlevel/methods/messages/get-history.js +5 -1
  76. package/cjs/highlevel/methods/messages/get-history.js.map +1 -1
  77. package/cjs/highlevel/methods/messages/get-message-by-link.js.map +1 -1
  78. package/cjs/highlevel/methods/messages/get-message-group.js.map +1 -1
  79. package/cjs/highlevel/methods/messages/get-message-reactions.js.map +1 -1
  80. package/cjs/highlevel/methods/messages/get-messages.js.map +1 -1
  81. package/cjs/highlevel/methods/messages/get-reply-to.js.map +1 -1
  82. package/cjs/highlevel/methods/messages/iter-history.js.map +1 -1
  83. package/cjs/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
  84. package/cjs/highlevel/methods/messages/iter-search-global.js.map +1 -1
  85. package/cjs/highlevel/methods/messages/iter-search-messages.js.map +1 -1
  86. package/cjs/highlevel/methods/messages/read-history.js.map +1 -1
  87. package/cjs/highlevel/methods/messages/send-answer.js.map +1 -1
  88. package/cjs/highlevel/methods/messages/send-comment.js.map +1 -1
  89. package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
  90. package/cjs/highlevel/methods/messages/send-copy-group.js.map +1 -1
  91. package/cjs/highlevel/methods/messages/send-copy.js.map +1 -1
  92. package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
  93. package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
  94. package/cjs/highlevel/methods/messages/send-quote.js.map +1 -1
  95. package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
  96. package/cjs/highlevel/methods/messages/send-typing.js.map +1 -1
  97. package/cjs/highlevel/methods/messages/send-vote.js.map +1 -1
  98. package/cjs/highlevel/methods/messages/translate-text.js.map +1 -1
  99. package/cjs/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  100. package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
  101. package/cjs/highlevel/methods/misc/normalize-text.js.map +1 -1
  102. package/cjs/highlevel/methods/misc/with-params.js.map +1 -1
  103. package/cjs/highlevel/methods/password/change-cloud-password.js.map +1 -1
  104. package/cjs/highlevel/methods/password/enable-cloud-password.js.map +1 -1
  105. package/cjs/highlevel/methods/password/remove-cloud-password.js.map +1 -1
  106. package/cjs/highlevel/methods/premium/can-apply-boost.js.map +1 -1
  107. package/cjs/highlevel/methods/premium/iter-boosters.js.map +1 -1
  108. package/cjs/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
  109. package/cjs/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
  110. package/cjs/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
  111. package/cjs/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
  112. package/cjs/highlevel/methods/stories/can-send-story.js.map +1 -1
  113. package/cjs/highlevel/methods/stories/edit-story.js.map +1 -1
  114. package/cjs/highlevel/methods/stories/find-in-update.js.map +1 -1
  115. package/cjs/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
  116. package/cjs/highlevel/methods/stories/iter-all-stories.js.map +1 -1
  117. package/cjs/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
  118. package/cjs/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
  119. package/cjs/highlevel/methods/stories/send-story.js.map +1 -1
  120. package/cjs/highlevel/methods/users/delete-profile-photos.js.map +1 -1
  121. package/cjs/highlevel/methods/users/get-users.js.map +1 -1
  122. package/cjs/highlevel/methods/users/iter-profile-photos.js.map +1 -1
  123. package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  124. package/cjs/highlevel/methods/users/resolve-peer.js.map +1 -1
  125. package/cjs/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
  126. package/cjs/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
  127. package/cjs/highlevel/storage/service/current-user.js +2 -0
  128. package/cjs/highlevel/storage/service/current-user.js.map +1 -1
  129. package/cjs/highlevel/storage/service/peers.js +5 -1
  130. package/cjs/highlevel/storage/service/peers.js.map +1 -1
  131. package/cjs/highlevel/storage/service/ref-messages.js +3 -0
  132. package/cjs/highlevel/storage/service/ref-messages.js.map +1 -1
  133. package/cjs/highlevel/storage/service/updates.js +1 -0
  134. package/cjs/highlevel/storage/service/updates.js.map +1 -1
  135. package/cjs/highlevel/storage/storage.d.ts +1 -1
  136. package/cjs/highlevel/storage/storage.js +17 -4
  137. package/cjs/highlevel/storage/storage.js.map +1 -1
  138. package/cjs/highlevel/types/auth/sent-code.js +1 -0
  139. package/cjs/highlevel/types/auth/sent-code.js.map +1 -1
  140. package/cjs/highlevel/types/bots/game-high-score.js +2 -0
  141. package/cjs/highlevel/types/bots/game-high-score.js.map +1 -1
  142. package/cjs/highlevel/types/bots/inline-message/factories.js.map +1 -1
  143. package/cjs/highlevel/types/bots/inline-result/factories.js.map +1 -1
  144. package/cjs/highlevel/types/bots/keyboards/builder.js +2 -1
  145. package/cjs/highlevel/types/bots/keyboards/builder.js.map +1 -1
  146. package/cjs/highlevel/types/bots/keyboards/factories.js.map +1 -1
  147. package/cjs/highlevel/types/calls/discard-reason.js.map +1 -1
  148. package/cjs/highlevel/types/conversation.js +13 -7
  149. package/cjs/highlevel/types/conversation.js.map +1 -1
  150. package/cjs/highlevel/types/errors.js +3 -0
  151. package/cjs/highlevel/types/errors.js.map +1 -1
  152. package/cjs/highlevel/types/files/file-location.js +3 -0
  153. package/cjs/highlevel/types/files/file-location.js.map +1 -1
  154. package/cjs/highlevel/types/files/uploaded-file.js +1 -1
  155. package/cjs/highlevel/types/files/uploaded-file.js.map +1 -1
  156. package/cjs/highlevel/types/files/utils.d.ts +3 -3
  157. package/cjs/highlevel/types/files/utils.js.map +1 -1
  158. package/cjs/highlevel/types/files/web-document.js +1 -0
  159. package/cjs/highlevel/types/files/web-document.js.map +1 -1
  160. package/cjs/highlevel/types/media/audio.js +3 -2
  161. package/cjs/highlevel/types/media/audio.js.map +1 -1
  162. package/cjs/highlevel/types/media/contact.js +2 -1
  163. package/cjs/highlevel/types/media/contact.js.map +1 -1
  164. package/cjs/highlevel/types/media/dice.js +125 -124
  165. package/cjs/highlevel/types/media/dice.js.map +1 -1
  166. package/cjs/highlevel/types/media/document-utils.js.map +1 -1
  167. package/cjs/highlevel/types/media/document.js +2 -4
  168. package/cjs/highlevel/types/media/document.js.map +1 -1
  169. package/cjs/highlevel/types/media/game.js +2 -1
  170. package/cjs/highlevel/types/media/game.js.map +1 -1
  171. package/cjs/highlevel/types/media/invoice.js +4 -1
  172. package/cjs/highlevel/types/media/invoice.js.map +1 -1
  173. package/cjs/highlevel/types/media/location.js +4 -5
  174. package/cjs/highlevel/types/media/location.js.map +1 -1
  175. package/cjs/highlevel/types/media/photo.js +8 -1
  176. package/cjs/highlevel/types/media/photo.js.map +1 -1
  177. package/cjs/highlevel/types/media/poll.js +4 -1
  178. package/cjs/highlevel/types/media/poll.js.map +1 -1
  179. package/cjs/highlevel/types/media/sticker.js +3 -1
  180. package/cjs/highlevel/types/media/sticker.js.map +1 -1
  181. package/cjs/highlevel/types/media/story.js +3 -1
  182. package/cjs/highlevel/types/media/story.js.map +1 -1
  183. package/cjs/highlevel/types/media/thumbnail.js +35 -22
  184. package/cjs/highlevel/types/media/thumbnail.js.map +1 -1
  185. package/cjs/highlevel/types/media/venue.js +2 -1
  186. package/cjs/highlevel/types/media/venue.js.map +1 -1
  187. package/cjs/highlevel/types/media/video.js +3 -1
  188. package/cjs/highlevel/types/media/video.js.map +1 -1
  189. package/cjs/highlevel/types/media/voice.js +2 -1
  190. package/cjs/highlevel/types/media/voice.js.map +1 -1
  191. package/cjs/highlevel/types/media/web-page.js +2 -1
  192. package/cjs/highlevel/types/media/web-page.js.map +1 -1
  193. package/cjs/highlevel/types/messages/dialog.js +3 -0
  194. package/cjs/highlevel/types/messages/dialog.js.map +1 -1
  195. package/cjs/highlevel/types/messages/draft-message.js +1 -0
  196. package/cjs/highlevel/types/messages/draft-message.js.map +1 -1
  197. package/cjs/highlevel/types/messages/message-action.js.map +1 -1
  198. package/cjs/highlevel/types/messages/message-entity.js +2 -0
  199. package/cjs/highlevel/types/messages/message-entity.js.map +1 -1
  200. package/cjs/highlevel/types/messages/message-forward.js +2 -0
  201. package/cjs/highlevel/types/messages/message-forward.js.map +1 -1
  202. package/cjs/highlevel/types/messages/message-media.js.map +1 -1
  203. package/cjs/highlevel/types/messages/message-reactions.js +4 -0
  204. package/cjs/highlevel/types/messages/message-reactions.js.map +1 -1
  205. package/cjs/highlevel/types/messages/message-replies.js +2 -0
  206. package/cjs/highlevel/types/messages/message-replies.js.map +1 -1
  207. package/cjs/highlevel/types/messages/message.js +6 -0
  208. package/cjs/highlevel/types/messages/message.js.map +1 -1
  209. package/cjs/highlevel/types/messages/replied-message.js +2 -0
  210. package/cjs/highlevel/types/messages/replied-message.js.map +1 -1
  211. package/cjs/highlevel/types/misc/sticker-set.js +7 -1
  212. package/cjs/highlevel/types/misc/sticker-set.js.map +1 -1
  213. package/cjs/highlevel/types/misc/takeout-session.js +5 -0
  214. package/cjs/highlevel/types/misc/takeout-session.js.map +1 -1
  215. package/cjs/highlevel/types/peers/chat-colors.js +2 -0
  216. package/cjs/highlevel/types/peers/chat-colors.js.map +1 -1
  217. package/cjs/highlevel/types/peers/chat-event/actions.js.map +1 -1
  218. package/cjs/highlevel/types/peers/chat-event/filters.js.map +1 -1
  219. package/cjs/highlevel/types/peers/chat-event/index.js +2 -0
  220. package/cjs/highlevel/types/peers/chat-event/index.js.map +1 -1
  221. package/cjs/highlevel/types/peers/chat-invite-link-member.js +2 -0
  222. package/cjs/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
  223. package/cjs/highlevel/types/peers/chat-invite-link.js +2 -0
  224. package/cjs/highlevel/types/peers/chat-invite-link.js.map +1 -1
  225. package/cjs/highlevel/types/peers/chat-location.js +1 -0
  226. package/cjs/highlevel/types/peers/chat-location.js.map +1 -1
  227. package/cjs/highlevel/types/peers/chat-member.js +2 -0
  228. package/cjs/highlevel/types/peers/chat-member.js.map +1 -1
  229. package/cjs/highlevel/types/peers/chat-permissions.js +1 -0
  230. package/cjs/highlevel/types/peers/chat-permissions.js.map +1 -1
  231. package/cjs/highlevel/types/peers/chat-photo.js +5 -0
  232. package/cjs/highlevel/types/peers/chat-photo.js.map +1 -1
  233. package/cjs/highlevel/types/peers/chat-preview.js +2 -0
  234. package/cjs/highlevel/types/peers/chat-preview.js.map +1 -1
  235. package/cjs/highlevel/types/peers/chat.js +12 -1
  236. package/cjs/highlevel/types/peers/chat.js.map +1 -1
  237. package/cjs/highlevel/types/peers/forum-topic.js +9 -6
  238. package/cjs/highlevel/types/peers/forum-topic.js.map +1 -1
  239. package/cjs/highlevel/types/peers/peer.js.map +1 -1
  240. package/cjs/highlevel/types/peers/peers-index.js +3 -1
  241. package/cjs/highlevel/types/peers/peers-index.js.map +1 -1
  242. package/cjs/highlevel/types/peers/user.js +5 -1
  243. package/cjs/highlevel/types/peers/user.js.map +1 -1
  244. package/cjs/highlevel/types/premium/boost-slot.js +2 -0
  245. package/cjs/highlevel/types/premium/boost-slot.js.map +1 -1
  246. package/cjs/highlevel/types/premium/boost-stats.js +1 -0
  247. package/cjs/highlevel/types/premium/boost-stats.js.map +1 -1
  248. package/cjs/highlevel/types/premium/boost.js +2 -0
  249. package/cjs/highlevel/types/premium/boost.js.map +1 -1
  250. package/cjs/highlevel/types/reactions/emoji-status.js +1 -0
  251. package/cjs/highlevel/types/reactions/emoji-status.js.map +1 -1
  252. package/cjs/highlevel/types/reactions/peer-reaction.js +2 -0
  253. package/cjs/highlevel/types/reactions/peer-reaction.js.map +1 -1
  254. package/cjs/highlevel/types/reactions/reaction-count.js +1 -0
  255. package/cjs/highlevel/types/reactions/reaction-count.js.map +1 -1
  256. package/cjs/highlevel/types/reactions/types.js.map +1 -1
  257. package/cjs/highlevel/types/stories/all-stories.d.ts +2 -2
  258. package/cjs/highlevel/types/stories/all-stories.js +3 -1
  259. package/cjs/highlevel/types/stories/all-stories.js.map +1 -1
  260. package/cjs/highlevel/types/stories/interactive/base.js +1 -0
  261. package/cjs/highlevel/types/stories/interactive/base.js.map +1 -1
  262. package/cjs/highlevel/types/stories/interactive/channel-post.js +3 -1
  263. package/cjs/highlevel/types/stories/interactive/channel-post.js.map +1 -1
  264. package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
  265. package/cjs/highlevel/types/stories/interactive/input.js +1 -0
  266. package/cjs/highlevel/types/stories/interactive/input.js.map +1 -1
  267. package/cjs/highlevel/types/stories/interactive/location.js +2 -1
  268. package/cjs/highlevel/types/stories/interactive/location.js.map +1 -1
  269. package/cjs/highlevel/types/stories/interactive/reaction.js +2 -1
  270. package/cjs/highlevel/types/stories/interactive/reaction.js.map +1 -1
  271. package/cjs/highlevel/types/stories/interactive/venue.js +2 -1
  272. package/cjs/highlevel/types/stories/interactive/venue.js.map +1 -1
  273. package/cjs/highlevel/types/stories/peer-stories.js +2 -0
  274. package/cjs/highlevel/types/stories/peer-stories.js.map +1 -1
  275. package/cjs/highlevel/types/stories/stealth-mode.js +1 -0
  276. package/cjs/highlevel/types/stories/stealth-mode.js.map +1 -1
  277. package/cjs/highlevel/types/stories/story-interactions.js +2 -0
  278. package/cjs/highlevel/types/stories/story-interactions.js.map +1 -1
  279. package/cjs/highlevel/types/stories/story-viewer.d.ts +1 -1
  280. package/cjs/highlevel/types/stories/story-viewer.js +6 -0
  281. package/cjs/highlevel/types/stories/story-viewer.js.map +1 -1
  282. package/cjs/highlevel/types/stories/story.js +2 -0
  283. package/cjs/highlevel/types/stories/story.js.map +1 -1
  284. package/cjs/highlevel/types/updates/bot-chat-join-request.js +2 -0
  285. package/cjs/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
  286. package/cjs/highlevel/types/updates/bot-reaction.js +4 -0
  287. package/cjs/highlevel/types/updates/bot-reaction.js.map +1 -1
  288. package/cjs/highlevel/types/updates/bot-stopped.js +2 -0
  289. package/cjs/highlevel/types/updates/bot-stopped.js.map +1 -1
  290. package/cjs/highlevel/types/updates/callback-query.js +4 -0
  291. package/cjs/highlevel/types/updates/callback-query.js.map +1 -1
  292. package/cjs/highlevel/types/updates/chat-join-request.js +2 -0
  293. package/cjs/highlevel/types/updates/chat-join-request.js.map +1 -1
  294. package/cjs/highlevel/types/updates/chat-member-update.js +2 -0
  295. package/cjs/highlevel/types/updates/chat-member-update.js.map +1 -1
  296. package/cjs/highlevel/types/updates/chosen-inline-result.js +2 -0
  297. package/cjs/highlevel/types/updates/chosen-inline-result.js.map +1 -1
  298. package/cjs/highlevel/types/updates/delete-message-update.js +1 -0
  299. package/cjs/highlevel/types/updates/delete-message-update.js.map +1 -1
  300. package/cjs/highlevel/types/updates/delete-story-update.js +2 -0
  301. package/cjs/highlevel/types/updates/delete-story-update.js.map +1 -1
  302. package/cjs/highlevel/types/updates/history-read-update.js +1 -0
  303. package/cjs/highlevel/types/updates/history-read-update.js.map +1 -1
  304. package/cjs/highlevel/types/updates/inline-query.js +2 -0
  305. package/cjs/highlevel/types/updates/inline-query.js.map +1 -1
  306. package/cjs/highlevel/types/updates/parse-update.js.map +1 -1
  307. package/cjs/highlevel/types/updates/poll-update.js +2 -0
  308. package/cjs/highlevel/types/updates/poll-update.js.map +1 -1
  309. package/cjs/highlevel/types/updates/poll-vote.js +2 -0
  310. package/cjs/highlevel/types/updates/poll-vote.js.map +1 -1
  311. package/cjs/highlevel/types/updates/pre-checkout-query.js +2 -0
  312. package/cjs/highlevel/types/updates/pre-checkout-query.js.map +1 -1
  313. package/cjs/highlevel/types/updates/story-update.js +2 -0
  314. package/cjs/highlevel/types/updates/story-update.js.map +1 -1
  315. package/cjs/highlevel/types/updates/user-status-update.js +1 -0
  316. package/cjs/highlevel/types/updates/user-status-update.js.map +1 -1
  317. package/cjs/highlevel/types/updates/user-typing-update.js +1 -0
  318. package/cjs/highlevel/types/updates/user-typing-update.js.map +1 -1
  319. package/cjs/highlevel/updates/manager.d.ts +1 -1
  320. package/cjs/highlevel/updates/manager.js +50 -28
  321. package/cjs/highlevel/updates/manager.js.map +1 -1
  322. package/cjs/highlevel/updates/parsed.js.map +1 -1
  323. package/cjs/highlevel/updates/utils.js.map +1 -1
  324. package/cjs/highlevel/utils/convert-file-id.js.map +1 -1
  325. package/cjs/highlevel/utils/entities.js.map +1 -1
  326. package/cjs/highlevel/utils/file-type.d.ts +1 -0
  327. package/cjs/highlevel/utils/file-type.js +35 -1
  328. package/cjs/highlevel/utils/file-type.js.map +1 -1
  329. package/cjs/highlevel/utils/file-utils.js +1 -1
  330. package/cjs/highlevel/utils/file-utils.js.map +1 -1
  331. package/cjs/highlevel/utils/inline-utils.js.map +1 -1
  332. package/cjs/highlevel/utils/inspectable.js.map +1 -1
  333. package/cjs/highlevel/utils/memoize.js.map +1 -1
  334. package/cjs/highlevel/utils/peer-utils.js.map +1 -1
  335. package/cjs/highlevel/utils/query-batcher.js.map +1 -1
  336. package/cjs/highlevel/utils/rps-meter.js +3 -0
  337. package/cjs/highlevel/utils/rps-meter.js.map +1 -1
  338. package/cjs/highlevel/utils/stream-utils.js.map +1 -1
  339. package/cjs/highlevel/utils/string-session.d.ts +1 -2
  340. package/cjs/highlevel/utils/string-session.js +27 -7
  341. package/cjs/highlevel/utils/string-session.js.map +1 -1
  342. package/cjs/highlevel/utils/voice-utils.js.map +1 -1
  343. package/cjs/highlevel/worker/app-config.d.ts +2 -3
  344. package/cjs/highlevel/worker/app-config.js +6 -3
  345. package/cjs/highlevel/worker/app-config.js.map +1 -1
  346. package/cjs/highlevel/worker/errors.js.map +1 -1
  347. package/cjs/highlevel/worker/invoker.js +3 -2
  348. package/cjs/highlevel/worker/invoker.js.map +1 -1
  349. package/cjs/highlevel/worker/port.d.ts +16 -17
  350. package/cjs/highlevel/worker/port.js +74 -49
  351. package/cjs/highlevel/worker/port.js.map +1 -1
  352. package/cjs/highlevel/worker/protocol.d.ts +2 -2
  353. package/cjs/highlevel/worker/protocol.js.map +1 -1
  354. package/cjs/highlevel/worker/storage.d.ts +9 -13
  355. package/cjs/highlevel/worker/storage.js +34 -19
  356. package/cjs/highlevel/worker/storage.js.map +1 -1
  357. package/cjs/highlevel/worker/worker.js +3 -0
  358. package/cjs/highlevel/worker/worker.js.map +1 -1
  359. package/cjs/network/auth-key.js +8 -1
  360. package/cjs/network/auth-key.js.map +1 -1
  361. package/cjs/network/authorization.js.map +1 -1
  362. package/cjs/network/client.d.ts +1 -1
  363. package/cjs/network/client.js +39 -14
  364. package/cjs/network/client.js.map +1 -1
  365. package/cjs/network/config-manager.js.map +1 -1
  366. package/cjs/network/mtproto-session.d.ts +1 -1
  367. package/cjs/network/mtproto-session.js +40 -30
  368. package/cjs/network/mtproto-session.js.map +1 -1
  369. package/cjs/network/multi-session-connection.d.ts +2 -2
  370. package/cjs/network/multi-session-connection.js +13 -7
  371. package/cjs/network/multi-session-connection.js.map +1 -1
  372. package/cjs/network/network-manager.d.ts +2 -3
  373. package/cjs/network/network-manager.js +49 -28
  374. package/cjs/network/network-manager.js.map +1 -1
  375. package/cjs/network/persistent-connection.d.ts +3 -3
  376. package/cjs/network/persistent-connection.js +33 -22
  377. package/cjs/network/persistent-connection.js.map +1 -1
  378. package/cjs/network/server-salt.js +4 -5
  379. package/cjs/network/server-salt.js.map +1 -1
  380. package/cjs/network/session-connection.d.ts +1 -1
  381. package/cjs/network/session-connection.js +22 -12
  382. package/cjs/network/session-connection.js.map +1 -1
  383. package/cjs/network/transports/abstract.d.ts +2 -2
  384. package/cjs/network/transports/abstract.js +1 -0
  385. package/cjs/network/transports/abstract.js.map +1 -1
  386. package/cjs/network/transports/intermediate.js +1 -0
  387. package/cjs/network/transports/intermediate.js.map +1 -1
  388. package/cjs/network/transports/obfuscated.js +3 -0
  389. package/cjs/network/transports/obfuscated.js.map +1 -1
  390. package/cjs/network/transports/streamed.d.ts +1 -1
  391. package/cjs/network/transports/streamed.js +1 -4
  392. package/cjs/network/transports/streamed.js.map +1 -1
  393. package/cjs/network/transports/wrapped.d.ts +1 -1
  394. package/cjs/network/transports/wrapped.js +2 -0
  395. package/cjs/network/transports/wrapped.js.map +1 -1
  396. package/cjs/platform.js.map +1 -1
  397. package/cjs/storage/driver.js +3 -4
  398. package/cjs/storage/driver.js.map +1 -1
  399. package/cjs/storage/memory/driver.js +1 -3
  400. package/cjs/storage/memory/driver.js.map +1 -1
  401. package/cjs/storage/memory/index.js +5 -7
  402. package/cjs/storage/memory/index.js.map +1 -1
  403. package/cjs/storage/memory/repository/auth-keys.d.ts +1 -1
  404. package/cjs/storage/memory/repository/auth-keys.js +2 -0
  405. package/cjs/storage/memory/repository/auth-keys.js.map +1 -1
  406. package/cjs/storage/memory/repository/kv.d.ts +1 -1
  407. package/cjs/storage/memory/repository/kv.js +2 -0
  408. package/cjs/storage/memory/repository/kv.js.map +1 -1
  409. package/cjs/storage/memory/repository/peers.d.ts +1 -1
  410. package/cjs/storage/memory/repository/peers.js +2 -0
  411. package/cjs/storage/memory/repository/peers.js.map +1 -1
  412. package/cjs/storage/memory/repository/ref-messages.d.ts +1 -1
  413. package/cjs/storage/memory/repository/ref-messages.js +2 -0
  414. package/cjs/storage/memory/repository/ref-messages.js.map +1 -1
  415. package/cjs/storage/service/auth-keys.js +2 -0
  416. package/cjs/storage/service/auth-keys.js.map +1 -1
  417. package/cjs/storage/service/base.js +4 -0
  418. package/cjs/storage/service/base.js.map +1 -1
  419. package/cjs/storage/service/default-dcs.js +2 -0
  420. package/cjs/storage/service/default-dcs.js.map +1 -1
  421. package/cjs/storage/service/future-salts.js +2 -1
  422. package/cjs/storage/service/future-salts.js.map +1 -1
  423. package/cjs/storage/sqlite/driver.js +10 -10
  424. package/cjs/storage/sqlite/driver.js.map +1 -1
  425. package/cjs/storage/sqlite/index.d.ts +1 -1
  426. package/cjs/storage/sqlite/index.js +5 -0
  427. package/cjs/storage/sqlite/index.js.map +1 -1
  428. package/cjs/storage/sqlite/repository/auth-keys.js +9 -0
  429. package/cjs/storage/sqlite/repository/auth-keys.js.map +1 -1
  430. package/cjs/storage/sqlite/repository/kv.js +5 -0
  431. package/cjs/storage/sqlite/repository/kv.js.map +1 -1
  432. package/cjs/storage/sqlite/repository/peers.js +6 -0
  433. package/cjs/storage/sqlite/repository/peers.js.map +1 -1
  434. package/cjs/storage/sqlite/repository/ref-messages.d.ts +1 -1
  435. package/cjs/storage/sqlite/repository/ref-messages.js +6 -0
  436. package/cjs/storage/sqlite/repository/ref-messages.js.map +1 -1
  437. package/cjs/storage/storage.d.ts +1 -3
  438. package/cjs/storage/storage.js +21 -13
  439. package/cjs/storage/storage.js.map +1 -1
  440. package/cjs/types/errors.js +13 -0
  441. package/cjs/types/errors.js.map +1 -1
  442. package/cjs/utils/async-lock.js +1 -3
  443. package/cjs/utils/async-lock.js.map +1 -1
  444. package/cjs/utils/bigint-utils.js.map +1 -1
  445. package/cjs/utils/binary/asn1-parser.js.map +1 -1
  446. package/cjs/utils/buffer-utils.js.map +1 -1
  447. package/cjs/utils/condition-variable.js +2 -0
  448. package/cjs/utils/condition-variable.js.map +1 -1
  449. package/cjs/utils/crypto/factorization.js.map +1 -1
  450. package/cjs/utils/crypto/keys.js.map +1 -1
  451. package/cjs/utils/crypto/miller-rabin.js.map +1 -1
  452. package/cjs/utils/crypto/password.js.map +1 -1
  453. package/cjs/utils/crypto/utils.js.map +1 -1
  454. package/cjs/utils/dcs.js +1 -1
  455. package/cjs/utils/dcs.js.map +1 -1
  456. package/cjs/utils/deque.js +8 -2
  457. package/cjs/utils/deque.js.map +1 -1
  458. package/cjs/utils/early-timer.js +4 -1
  459. package/cjs/utils/early-timer.js.map +1 -1
  460. package/cjs/utils/error-reporting.js.map +1 -1
  461. package/cjs/utils/function-utils.js.map +1 -1
  462. package/cjs/utils/linked-list.js +4 -1
  463. package/cjs/utils/linked-list.js.map +1 -1
  464. package/cjs/utils/links/bots.js.map +1 -1
  465. package/cjs/utils/links/chat.js.map +1 -1
  466. package/cjs/utils/links/common.js.map +1 -1
  467. package/cjs/utils/links/misc.js.map +1 -1
  468. package/cjs/utils/logger.d.ts +2 -2
  469. package/cjs/utils/logger.js +21 -14
  470. package/cjs/utils/logger.js.map +1 -1
  471. package/cjs/utils/long-utils.js +2 -6
  472. package/cjs/utils/long-utils.js.map +1 -1
  473. package/cjs/utils/lru-map.js +5 -1
  474. package/cjs/utils/lru-map.js.map +1 -1
  475. package/cjs/utils/lru-set.js +4 -0
  476. package/cjs/utils/lru-set.js.map +1 -1
  477. package/cjs/utils/peer-utils.js.map +1 -1
  478. package/cjs/utils/reloadable.d.ts +1 -1
  479. package/cjs/utils/reloadable.js +10 -7
  480. package/cjs/utils/reloadable.js.map +1 -1
  481. package/cjs/utils/sorted-array.js +2 -0
  482. package/cjs/utils/sorted-array.js.map +1 -1
  483. package/cjs/utils/tl-json.js.map +1 -1
  484. package/cjs/utils/type-assertions.js.map +1 -1
  485. package/esm/highlevel/base.d.ts +1 -1
  486. package/esm/highlevel/base.js +29 -23
  487. package/esm/highlevel/base.js.map +1 -1
  488. package/esm/highlevel/client.d.ts +2 -1
  489. package/esm/highlevel/client.js +1 -0
  490. package/esm/highlevel/client.js.map +1 -1
  491. package/esm/highlevel/managers/app-config-manager.js +7 -5
  492. package/esm/highlevel/managers/app-config-manager.js.map +1 -1
  493. package/esm/highlevel/methods/_init.js.map +1 -1
  494. package/esm/highlevel/methods/auth/start-test.js.map +1 -1
  495. package/esm/highlevel/methods/auth/start.js.map +1 -1
  496. package/esm/highlevel/methods/auth/utils.js.map +1 -1
  497. package/esm/highlevel/methods/bots/get-callback-answer.js.map +1 -1
  498. package/esm/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
  499. package/esm/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
  500. package/esm/highlevel/methods/bots/set-my-commands.js.map +1 -1
  501. package/esm/highlevel/methods/chats/add-chat-members.js.map +1 -1
  502. package/esm/highlevel/methods/chats/ban-chat-member.js.map +1 -1
  503. package/esm/highlevel/methods/chats/batched-queries.js.map +1 -1
  504. package/esm/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
  505. package/esm/highlevel/methods/chats/delete-history.js.map +1 -1
  506. package/esm/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
  507. package/esm/highlevel/methods/chats/get-chat-member.js.map +1 -1
  508. package/esm/highlevel/methods/chats/get-chat-members.js.map +1 -1
  509. package/esm/highlevel/methods/chats/get-chat-preview.js.map +1 -1
  510. package/esm/highlevel/methods/chats/get-chat.js.map +1 -1
  511. package/esm/highlevel/methods/chats/get-full-chat.js.map +1 -1
  512. package/esm/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
  513. package/esm/highlevel/methods/chats/get-similar-channels.js.map +1 -1
  514. package/esm/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
  515. package/esm/highlevel/methods/chats/iter-chat-members.js.map +1 -1
  516. package/esm/highlevel/methods/chats/join-chat.js.map +1 -1
  517. package/esm/highlevel/methods/chats/kick-chat-member.js.map +1 -1
  518. package/esm/highlevel/methods/chats/leave-chat.js.map +1 -1
  519. package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
  520. package/esm/highlevel/methods/chats/reorder-usernames.js.map +1 -1
  521. package/esm/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
  522. package/esm/highlevel/methods/chats/save-draft.js.map +1 -1
  523. package/esm/highlevel/methods/chats/set-chat-color.js.map +1 -1
  524. package/esm/highlevel/methods/chats/set-chat-photo.js.map +1 -1
  525. package/esm/highlevel/methods/chats/set-chat-title.js.map +1 -1
  526. package/esm/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
  527. package/esm/highlevel/methods/chats/unarchive-chats.js.map +1 -1
  528. package/esm/highlevel/methods/chats/unban-chat-member.js.map +1 -1
  529. package/esm/highlevel/methods/contacts/delete-contacts.js.map +1 -1
  530. package/esm/highlevel/methods/dialogs/create-folder.js.map +1 -1
  531. package/esm/highlevel/methods/dialogs/edit-folder.js.map +1 -1
  532. package/esm/highlevel/methods/dialogs/find-folder.js.map +1 -1
  533. package/esm/highlevel/methods/dialogs/get-folders.js.map +1 -1
  534. package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  535. package/esm/highlevel/methods/files/download-buffer.js.map +1 -1
  536. package/esm/highlevel/methods/files/download-iterable.js +1 -1
  537. package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
  538. package/esm/highlevel/methods/files/download-node-stream.js.map +1 -1
  539. package/esm/highlevel/methods/files/download-stream.js.map +1 -1
  540. package/esm/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
  541. package/esm/highlevel/methods/files/normalize-input-file.js.map +1 -1
  542. package/esm/highlevel/methods/files/normalize-input-media.js +1 -2
  543. package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
  544. package/esm/highlevel/methods/files/upload-file.js +8 -7
  545. package/esm/highlevel/methods/files/upload-file.js.map +1 -1
  546. package/esm/highlevel/methods/files/upload-media.js.map +1 -1
  547. package/esm/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
  548. package/esm/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
  549. package/esm/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
  550. package/esm/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
  551. package/esm/highlevel/methods/messages/close-poll.js.map +1 -1
  552. package/esm/highlevel/methods/messages/delete-messages.js.map +1 -1
  553. package/esm/highlevel/methods/messages/edit-inline-message.js.map +1 -1
  554. package/esm/highlevel/methods/messages/edit-message.js.map +1 -1
  555. package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
  556. package/esm/highlevel/methods/messages/forward-messages.js.map +1 -1
  557. package/esm/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
  558. package/esm/highlevel/methods/messages/get-discussion-message.js.map +1 -1
  559. package/esm/highlevel/methods/messages/get-history.js +5 -1
  560. package/esm/highlevel/methods/messages/get-history.js.map +1 -1
  561. package/esm/highlevel/methods/messages/get-message-by-link.js.map +1 -1
  562. package/esm/highlevel/methods/messages/get-message-group.js.map +1 -1
  563. package/esm/highlevel/methods/messages/get-message-reactions.js.map +1 -1
  564. package/esm/highlevel/methods/messages/get-messages.js.map +1 -1
  565. package/esm/highlevel/methods/messages/get-reply-to.js.map +1 -1
  566. package/esm/highlevel/methods/messages/iter-history.js.map +1 -1
  567. package/esm/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
  568. package/esm/highlevel/methods/messages/iter-search-global.js.map +1 -1
  569. package/esm/highlevel/methods/messages/iter-search-messages.js.map +1 -1
  570. package/esm/highlevel/methods/messages/read-history.js.map +1 -1
  571. package/esm/highlevel/methods/messages/send-answer.js.map +1 -1
  572. package/esm/highlevel/methods/messages/send-comment.js.map +1 -1
  573. package/esm/highlevel/methods/messages/send-common.js.map +1 -1
  574. package/esm/highlevel/methods/messages/send-copy-group.js.map +1 -1
  575. package/esm/highlevel/methods/messages/send-copy.js.map +1 -1
  576. package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
  577. package/esm/highlevel/methods/messages/send-media.js.map +1 -1
  578. package/esm/highlevel/methods/messages/send-quote.js.map +1 -1
  579. package/esm/highlevel/methods/messages/send-text.js.map +1 -1
  580. package/esm/highlevel/methods/messages/send-typing.js.map +1 -1
  581. package/esm/highlevel/methods/messages/send-vote.js.map +1 -1
  582. package/esm/highlevel/methods/messages/translate-text.js.map +1 -1
  583. package/esm/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  584. package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
  585. package/esm/highlevel/methods/misc/normalize-text.js.map +1 -1
  586. package/esm/highlevel/methods/misc/with-params.js.map +1 -1
  587. package/esm/highlevel/methods/password/change-cloud-password.js.map +1 -1
  588. package/esm/highlevel/methods/password/enable-cloud-password.js.map +1 -1
  589. package/esm/highlevel/methods/password/remove-cloud-password.js.map +1 -1
  590. package/esm/highlevel/methods/premium/can-apply-boost.js.map +1 -1
  591. package/esm/highlevel/methods/premium/iter-boosters.js.map +1 -1
  592. package/esm/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
  593. package/esm/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
  594. package/esm/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
  595. package/esm/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
  596. package/esm/highlevel/methods/stories/can-send-story.js.map +1 -1
  597. package/esm/highlevel/methods/stories/edit-story.js.map +1 -1
  598. package/esm/highlevel/methods/stories/find-in-update.js.map +1 -1
  599. package/esm/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
  600. package/esm/highlevel/methods/stories/iter-all-stories.js.map +1 -1
  601. package/esm/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
  602. package/esm/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
  603. package/esm/highlevel/methods/stories/send-story.js.map +1 -1
  604. package/esm/highlevel/methods/users/delete-profile-photos.js.map +1 -1
  605. package/esm/highlevel/methods/users/get-users.js.map +1 -1
  606. package/esm/highlevel/methods/users/iter-profile-photos.js.map +1 -1
  607. package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  608. package/esm/highlevel/methods/users/resolve-peer.js.map +1 -1
  609. package/esm/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
  610. package/esm/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
  611. package/esm/highlevel/storage/service/current-user.js +2 -0
  612. package/esm/highlevel/storage/service/current-user.js.map +1 -1
  613. package/esm/highlevel/storage/service/peers.js +5 -1
  614. package/esm/highlevel/storage/service/peers.js.map +1 -1
  615. package/esm/highlevel/storage/service/ref-messages.js +3 -0
  616. package/esm/highlevel/storage/service/ref-messages.js.map +1 -1
  617. package/esm/highlevel/storage/service/updates.js +1 -0
  618. package/esm/highlevel/storage/service/updates.js.map +1 -1
  619. package/esm/highlevel/storage/storage.d.ts +1 -1
  620. package/esm/highlevel/storage/storage.js +17 -4
  621. package/esm/highlevel/storage/storage.js.map +1 -1
  622. package/esm/highlevel/types/auth/sent-code.js +1 -0
  623. package/esm/highlevel/types/auth/sent-code.js.map +1 -1
  624. package/esm/highlevel/types/bots/game-high-score.js +2 -0
  625. package/esm/highlevel/types/bots/game-high-score.js.map +1 -1
  626. package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -1
  627. package/esm/highlevel/types/bots/inline-result/factories.js.map +1 -1
  628. package/esm/highlevel/types/bots/keyboards/builder.js +2 -1
  629. package/esm/highlevel/types/bots/keyboards/builder.js.map +1 -1
  630. package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -1
  631. package/esm/highlevel/types/calls/discard-reason.js.map +1 -1
  632. package/esm/highlevel/types/conversation.js +13 -7
  633. package/esm/highlevel/types/conversation.js.map +1 -1
  634. package/esm/highlevel/types/errors.js +3 -0
  635. package/esm/highlevel/types/errors.js.map +1 -1
  636. package/esm/highlevel/types/files/file-location.js +3 -0
  637. package/esm/highlevel/types/files/file-location.js.map +1 -1
  638. package/esm/highlevel/types/files/uploaded-file.js +1 -1
  639. package/esm/highlevel/types/files/uploaded-file.js.map +1 -1
  640. package/esm/highlevel/types/files/utils.d.ts +1 -1
  641. package/esm/highlevel/types/files/utils.js.map +1 -1
  642. package/esm/highlevel/types/files/web-document.js +1 -0
  643. package/esm/highlevel/types/files/web-document.js.map +1 -1
  644. package/esm/highlevel/types/media/audio.js +3 -2
  645. package/esm/highlevel/types/media/audio.js.map +1 -1
  646. package/esm/highlevel/types/media/contact.js +2 -1
  647. package/esm/highlevel/types/media/contact.js.map +1 -1
  648. package/esm/highlevel/types/media/dice.js +125 -124
  649. package/esm/highlevel/types/media/dice.js.map +1 -1
  650. package/esm/highlevel/types/media/document-utils.js.map +1 -1
  651. package/esm/highlevel/types/media/document.js +2 -4
  652. package/esm/highlevel/types/media/document.js.map +1 -1
  653. package/esm/highlevel/types/media/game.js +2 -1
  654. package/esm/highlevel/types/media/game.js.map +1 -1
  655. package/esm/highlevel/types/media/invoice.js +4 -1
  656. package/esm/highlevel/types/media/invoice.js.map +1 -1
  657. package/esm/highlevel/types/media/location.js +4 -5
  658. package/esm/highlevel/types/media/location.js.map +1 -1
  659. package/esm/highlevel/types/media/photo.js +8 -1
  660. package/esm/highlevel/types/media/photo.js.map +1 -1
  661. package/esm/highlevel/types/media/poll.js +4 -1
  662. package/esm/highlevel/types/media/poll.js.map +1 -1
  663. package/esm/highlevel/types/media/sticker.js +3 -1
  664. package/esm/highlevel/types/media/sticker.js.map +1 -1
  665. package/esm/highlevel/types/media/story.js +3 -1
  666. package/esm/highlevel/types/media/story.js.map +1 -1
  667. package/esm/highlevel/types/media/thumbnail.js +35 -22
  668. package/esm/highlevel/types/media/thumbnail.js.map +1 -1
  669. package/esm/highlevel/types/media/venue.js +2 -1
  670. package/esm/highlevel/types/media/venue.js.map +1 -1
  671. package/esm/highlevel/types/media/video.js +3 -1
  672. package/esm/highlevel/types/media/video.js.map +1 -1
  673. package/esm/highlevel/types/media/voice.js +2 -1
  674. package/esm/highlevel/types/media/voice.js.map +1 -1
  675. package/esm/highlevel/types/media/web-page.js +2 -1
  676. package/esm/highlevel/types/media/web-page.js.map +1 -1
  677. package/esm/highlevel/types/messages/dialog.js +3 -0
  678. package/esm/highlevel/types/messages/dialog.js.map +1 -1
  679. package/esm/highlevel/types/messages/draft-message.js +1 -0
  680. package/esm/highlevel/types/messages/draft-message.js.map +1 -1
  681. package/esm/highlevel/types/messages/message-action.js.map +1 -1
  682. package/esm/highlevel/types/messages/message-entity.js +2 -0
  683. package/esm/highlevel/types/messages/message-entity.js.map +1 -1
  684. package/esm/highlevel/types/messages/message-forward.js +2 -0
  685. package/esm/highlevel/types/messages/message-forward.js.map +1 -1
  686. package/esm/highlevel/types/messages/message-media.js.map +1 -1
  687. package/esm/highlevel/types/messages/message-reactions.js +4 -0
  688. package/esm/highlevel/types/messages/message-reactions.js.map +1 -1
  689. package/esm/highlevel/types/messages/message-replies.js +2 -0
  690. package/esm/highlevel/types/messages/message-replies.js.map +1 -1
  691. package/esm/highlevel/types/messages/message.js +6 -0
  692. package/esm/highlevel/types/messages/message.js.map +1 -1
  693. package/esm/highlevel/types/messages/replied-message.js +2 -0
  694. package/esm/highlevel/types/messages/replied-message.js.map +1 -1
  695. package/esm/highlevel/types/misc/sticker-set.js +7 -1
  696. package/esm/highlevel/types/misc/sticker-set.js.map +1 -1
  697. package/esm/highlevel/types/misc/takeout-session.js +5 -0
  698. package/esm/highlevel/types/misc/takeout-session.js.map +1 -1
  699. package/esm/highlevel/types/peers/chat-colors.js +2 -0
  700. package/esm/highlevel/types/peers/chat-colors.js.map +1 -1
  701. package/esm/highlevel/types/peers/chat-event/actions.js.map +1 -1
  702. package/esm/highlevel/types/peers/chat-event/filters.js.map +1 -1
  703. package/esm/highlevel/types/peers/chat-event/index.js +2 -0
  704. package/esm/highlevel/types/peers/chat-event/index.js.map +1 -1
  705. package/esm/highlevel/types/peers/chat-invite-link-member.js +2 -0
  706. package/esm/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
  707. package/esm/highlevel/types/peers/chat-invite-link.js +2 -0
  708. package/esm/highlevel/types/peers/chat-invite-link.js.map +1 -1
  709. package/esm/highlevel/types/peers/chat-location.js +1 -0
  710. package/esm/highlevel/types/peers/chat-location.js.map +1 -1
  711. package/esm/highlevel/types/peers/chat-member.js +2 -0
  712. package/esm/highlevel/types/peers/chat-member.js.map +1 -1
  713. package/esm/highlevel/types/peers/chat-permissions.js +1 -0
  714. package/esm/highlevel/types/peers/chat-permissions.js.map +1 -1
  715. package/esm/highlevel/types/peers/chat-photo.js +5 -0
  716. package/esm/highlevel/types/peers/chat-photo.js.map +1 -1
  717. package/esm/highlevel/types/peers/chat-preview.js +2 -0
  718. package/esm/highlevel/types/peers/chat-preview.js.map +1 -1
  719. package/esm/highlevel/types/peers/chat.js +12 -1
  720. package/esm/highlevel/types/peers/chat.js.map +1 -1
  721. package/esm/highlevel/types/peers/forum-topic.js +9 -6
  722. package/esm/highlevel/types/peers/forum-topic.js.map +1 -1
  723. package/esm/highlevel/types/peers/peer.js.map +1 -1
  724. package/esm/highlevel/types/peers/peers-index.js +3 -1
  725. package/esm/highlevel/types/peers/peers-index.js.map +1 -1
  726. package/esm/highlevel/types/peers/user.js +5 -1
  727. package/esm/highlevel/types/peers/user.js.map +1 -1
  728. package/esm/highlevel/types/premium/boost-slot.js +2 -0
  729. package/esm/highlevel/types/premium/boost-slot.js.map +1 -1
  730. package/esm/highlevel/types/premium/boost-stats.js +1 -0
  731. package/esm/highlevel/types/premium/boost-stats.js.map +1 -1
  732. package/esm/highlevel/types/premium/boost.js +2 -0
  733. package/esm/highlevel/types/premium/boost.js.map +1 -1
  734. package/esm/highlevel/types/reactions/emoji-status.js +1 -0
  735. package/esm/highlevel/types/reactions/emoji-status.js.map +1 -1
  736. package/esm/highlevel/types/reactions/peer-reaction.js +2 -0
  737. package/esm/highlevel/types/reactions/peer-reaction.js.map +1 -1
  738. package/esm/highlevel/types/reactions/reaction-count.js +1 -0
  739. package/esm/highlevel/types/reactions/reaction-count.js.map +1 -1
  740. package/esm/highlevel/types/reactions/types.js.map +1 -1
  741. package/esm/highlevel/types/stories/all-stories.d.ts +2 -2
  742. package/esm/highlevel/types/stories/all-stories.js +3 -1
  743. package/esm/highlevel/types/stories/all-stories.js.map +1 -1
  744. package/esm/highlevel/types/stories/interactive/base.js +1 -0
  745. package/esm/highlevel/types/stories/interactive/base.js.map +1 -1
  746. package/esm/highlevel/types/stories/interactive/channel-post.js +3 -1
  747. package/esm/highlevel/types/stories/interactive/channel-post.js.map +1 -1
  748. package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
  749. package/esm/highlevel/types/stories/interactive/input.js +1 -0
  750. package/esm/highlevel/types/stories/interactive/input.js.map +1 -1
  751. package/esm/highlevel/types/stories/interactive/location.js +2 -1
  752. package/esm/highlevel/types/stories/interactive/location.js.map +1 -1
  753. package/esm/highlevel/types/stories/interactive/reaction.js +2 -1
  754. package/esm/highlevel/types/stories/interactive/reaction.js.map +1 -1
  755. package/esm/highlevel/types/stories/interactive/venue.js +2 -1
  756. package/esm/highlevel/types/stories/interactive/venue.js.map +1 -1
  757. package/esm/highlevel/types/stories/peer-stories.js +2 -0
  758. package/esm/highlevel/types/stories/peer-stories.js.map +1 -1
  759. package/esm/highlevel/types/stories/stealth-mode.js +1 -0
  760. package/esm/highlevel/types/stories/stealth-mode.js.map +1 -1
  761. package/esm/highlevel/types/stories/story-interactions.js +2 -0
  762. package/esm/highlevel/types/stories/story-interactions.js.map +1 -1
  763. package/esm/highlevel/types/stories/story-viewer.d.ts +1 -1
  764. package/esm/highlevel/types/stories/story-viewer.js +6 -0
  765. package/esm/highlevel/types/stories/story-viewer.js.map +1 -1
  766. package/esm/highlevel/types/stories/story.js +2 -0
  767. package/esm/highlevel/types/stories/story.js.map +1 -1
  768. package/esm/highlevel/types/updates/bot-chat-join-request.js +2 -0
  769. package/esm/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
  770. package/esm/highlevel/types/updates/bot-reaction.js +4 -0
  771. package/esm/highlevel/types/updates/bot-reaction.js.map +1 -1
  772. package/esm/highlevel/types/updates/bot-stopped.js +2 -0
  773. package/esm/highlevel/types/updates/bot-stopped.js.map +1 -1
  774. package/esm/highlevel/types/updates/callback-query.js +4 -0
  775. package/esm/highlevel/types/updates/callback-query.js.map +1 -1
  776. package/esm/highlevel/types/updates/chat-join-request.js +2 -0
  777. package/esm/highlevel/types/updates/chat-join-request.js.map +1 -1
  778. package/esm/highlevel/types/updates/chat-member-update.js +2 -0
  779. package/esm/highlevel/types/updates/chat-member-update.js.map +1 -1
  780. package/esm/highlevel/types/updates/chosen-inline-result.js +2 -0
  781. package/esm/highlevel/types/updates/chosen-inline-result.js.map +1 -1
  782. package/esm/highlevel/types/updates/delete-message-update.js +1 -0
  783. package/esm/highlevel/types/updates/delete-message-update.js.map +1 -1
  784. package/esm/highlevel/types/updates/delete-story-update.js +2 -0
  785. package/esm/highlevel/types/updates/delete-story-update.js.map +1 -1
  786. package/esm/highlevel/types/updates/history-read-update.js +1 -0
  787. package/esm/highlevel/types/updates/history-read-update.js.map +1 -1
  788. package/esm/highlevel/types/updates/inline-query.js +2 -0
  789. package/esm/highlevel/types/updates/inline-query.js.map +1 -1
  790. package/esm/highlevel/types/updates/parse-update.js.map +1 -1
  791. package/esm/highlevel/types/updates/poll-update.js +2 -0
  792. package/esm/highlevel/types/updates/poll-update.js.map +1 -1
  793. package/esm/highlevel/types/updates/poll-vote.js +2 -0
  794. package/esm/highlevel/types/updates/poll-vote.js.map +1 -1
  795. package/esm/highlevel/types/updates/pre-checkout-query.js +2 -0
  796. package/esm/highlevel/types/updates/pre-checkout-query.js.map +1 -1
  797. package/esm/highlevel/types/updates/story-update.js +2 -0
  798. package/esm/highlevel/types/updates/story-update.js.map +1 -1
  799. package/esm/highlevel/types/updates/user-status-update.js +1 -0
  800. package/esm/highlevel/types/updates/user-status-update.js.map +1 -1
  801. package/esm/highlevel/types/updates/user-typing-update.js +1 -0
  802. package/esm/highlevel/types/updates/user-typing-update.js.map +1 -1
  803. package/esm/highlevel/updates/manager.js +50 -28
  804. package/esm/highlevel/updates/manager.js.map +1 -1
  805. package/esm/highlevel/updates/parsed.js.map +1 -1
  806. package/esm/highlevel/updates/utils.js.map +1 -1
  807. package/esm/highlevel/utils/convert-file-id.js.map +1 -1
  808. package/esm/highlevel/utils/entities.js.map +1 -1
  809. package/esm/highlevel/utils/file-type.d.ts +1 -0
  810. package/esm/highlevel/utils/file-type.js +34 -0
  811. package/esm/highlevel/utils/file-type.js.map +1 -1
  812. package/esm/highlevel/utils/file-utils.js +1 -1
  813. package/esm/highlevel/utils/file-utils.js.map +1 -1
  814. package/esm/highlevel/utils/inline-utils.js.map +1 -1
  815. package/esm/highlevel/utils/inspectable.js.map +1 -1
  816. package/esm/highlevel/utils/memoize.js.map +1 -1
  817. package/esm/highlevel/utils/peer-utils.js.map +1 -1
  818. package/esm/highlevel/utils/query-batcher.js.map +1 -1
  819. package/esm/highlevel/utils/rps-meter.js +3 -0
  820. package/esm/highlevel/utils/rps-meter.js.map +1 -1
  821. package/esm/highlevel/utils/stream-utils.js.map +1 -1
  822. package/esm/highlevel/utils/string-session.d.ts +1 -2
  823. package/esm/highlevel/utils/string-session.js +27 -7
  824. package/esm/highlevel/utils/string-session.js.map +1 -1
  825. package/esm/highlevel/utils/voice-utils.js.map +1 -1
  826. package/esm/highlevel/worker/app-config.d.ts +2 -3
  827. package/esm/highlevel/worker/app-config.js +6 -3
  828. package/esm/highlevel/worker/app-config.js.map +1 -1
  829. package/esm/highlevel/worker/errors.js.map +1 -1
  830. package/esm/highlevel/worker/invoker.js +3 -2
  831. package/esm/highlevel/worker/invoker.js.map +1 -1
  832. package/esm/highlevel/worker/port.d.ts +16 -17
  833. package/esm/highlevel/worker/port.js +74 -49
  834. package/esm/highlevel/worker/port.js.map +1 -1
  835. package/esm/highlevel/worker/protocol.d.ts +1 -1
  836. package/esm/highlevel/worker/protocol.js.map +1 -1
  837. package/esm/highlevel/worker/storage.d.ts +9 -13
  838. package/esm/highlevel/worker/storage.js +34 -19
  839. package/esm/highlevel/worker/storage.js.map +1 -1
  840. package/esm/highlevel/worker/worker.js +3 -0
  841. package/esm/highlevel/worker/worker.js.map +1 -1
  842. package/esm/network/auth-key.js +8 -1
  843. package/esm/network/auth-key.js.map +1 -1
  844. package/esm/network/authorization.js.map +1 -1
  845. package/esm/network/client.js +39 -14
  846. package/esm/network/client.js.map +1 -1
  847. package/esm/network/config-manager.js.map +1 -1
  848. package/esm/network/mtproto-session.js +40 -30
  849. package/esm/network/mtproto-session.js.map +1 -1
  850. package/esm/network/multi-session-connection.d.ts +1 -1
  851. package/esm/network/multi-session-connection.js +13 -7
  852. package/esm/network/multi-session-connection.js.map +1 -1
  853. package/esm/network/network-manager.d.ts +2 -3
  854. package/esm/network/network-manager.js +49 -28
  855. package/esm/network/network-manager.js.map +1 -1
  856. package/esm/network/persistent-connection.d.ts +2 -2
  857. package/esm/network/persistent-connection.js +33 -22
  858. package/esm/network/persistent-connection.js.map +1 -1
  859. package/esm/network/server-salt.js +4 -5
  860. package/esm/network/server-salt.js.map +1 -1
  861. package/esm/network/session-connection.d.ts +1 -1
  862. package/esm/network/session-connection.js +22 -12
  863. package/esm/network/session-connection.js.map +1 -1
  864. package/esm/network/transports/abstract.d.ts +1 -1
  865. package/esm/network/transports/abstract.js +1 -0
  866. package/esm/network/transports/abstract.js.map +1 -1
  867. package/esm/network/transports/intermediate.js +1 -0
  868. package/esm/network/transports/intermediate.js.map +1 -1
  869. package/esm/network/transports/obfuscated.js +3 -0
  870. package/esm/network/transports/obfuscated.js.map +1 -1
  871. package/esm/network/transports/streamed.js +1 -4
  872. package/esm/network/transports/streamed.js.map +1 -1
  873. package/esm/network/transports/wrapped.js +2 -0
  874. package/esm/network/transports/wrapped.js.map +1 -1
  875. package/esm/platform.js.map +1 -1
  876. package/esm/storage/driver.js +3 -4
  877. package/esm/storage/driver.js.map +1 -1
  878. package/esm/storage/memory/driver.js +1 -3
  879. package/esm/storage/memory/driver.js.map +1 -1
  880. package/esm/storage/memory/index.js +5 -7
  881. package/esm/storage/memory/index.js.map +1 -1
  882. package/esm/storage/memory/repository/auth-keys.d.ts +1 -1
  883. package/esm/storage/memory/repository/auth-keys.js +2 -0
  884. package/esm/storage/memory/repository/auth-keys.js.map +1 -1
  885. package/esm/storage/memory/repository/kv.d.ts +1 -1
  886. package/esm/storage/memory/repository/kv.js +2 -0
  887. package/esm/storage/memory/repository/kv.js.map +1 -1
  888. package/esm/storage/memory/repository/peers.d.ts +1 -1
  889. package/esm/storage/memory/repository/peers.js +2 -0
  890. package/esm/storage/memory/repository/peers.js.map +1 -1
  891. package/esm/storage/memory/repository/ref-messages.d.ts +1 -1
  892. package/esm/storage/memory/repository/ref-messages.js +2 -0
  893. package/esm/storage/memory/repository/ref-messages.js.map +1 -1
  894. package/esm/storage/service/auth-keys.js +2 -0
  895. package/esm/storage/service/auth-keys.js.map +1 -1
  896. package/esm/storage/service/base.js +4 -0
  897. package/esm/storage/service/base.js.map +1 -1
  898. package/esm/storage/service/default-dcs.js +2 -0
  899. package/esm/storage/service/default-dcs.js.map +1 -1
  900. package/esm/storage/service/future-salts.js +2 -1
  901. package/esm/storage/service/future-salts.js.map +1 -1
  902. package/esm/storage/sqlite/driver.js +10 -10
  903. package/esm/storage/sqlite/driver.js.map +1 -1
  904. package/esm/storage/sqlite/index.d.ts +1 -1
  905. package/esm/storage/sqlite/index.js +5 -0
  906. package/esm/storage/sqlite/index.js.map +1 -1
  907. package/esm/storage/sqlite/repository/auth-keys.js +9 -0
  908. package/esm/storage/sqlite/repository/auth-keys.js.map +1 -1
  909. package/esm/storage/sqlite/repository/kv.js +5 -0
  910. package/esm/storage/sqlite/repository/kv.js.map +1 -1
  911. package/esm/storage/sqlite/repository/peers.js +6 -0
  912. package/esm/storage/sqlite/repository/peers.js.map +1 -1
  913. package/esm/storage/sqlite/repository/ref-messages.d.ts +1 -1
  914. package/esm/storage/sqlite/repository/ref-messages.js +6 -0
  915. package/esm/storage/sqlite/repository/ref-messages.js.map +1 -1
  916. package/esm/storage/storage.d.ts +1 -3
  917. package/esm/storage/storage.js +21 -13
  918. package/esm/storage/storage.js.map +1 -1
  919. package/esm/types/errors.js +13 -0
  920. package/esm/types/errors.js.map +1 -1
  921. package/esm/utils/async-lock.js +1 -3
  922. package/esm/utils/async-lock.js.map +1 -1
  923. package/esm/utils/bigint-utils.js.map +1 -1
  924. package/esm/utils/binary/asn1-parser.js.map +1 -1
  925. package/esm/utils/buffer-utils.js.map +1 -1
  926. package/esm/utils/condition-variable.js +2 -0
  927. package/esm/utils/condition-variable.js.map +1 -1
  928. package/esm/utils/crypto/factorization.js.map +1 -1
  929. package/esm/utils/crypto/keys.js.map +1 -1
  930. package/esm/utils/crypto/miller-rabin.js.map +1 -1
  931. package/esm/utils/crypto/password.js.map +1 -1
  932. package/esm/utils/crypto/utils.js.map +1 -1
  933. package/esm/utils/dcs.js +1 -1
  934. package/esm/utils/dcs.js.map +1 -1
  935. package/esm/utils/deque.js +8 -2
  936. package/esm/utils/deque.js.map +1 -1
  937. package/esm/utils/early-timer.js +4 -1
  938. package/esm/utils/early-timer.js.map +1 -1
  939. package/esm/utils/error-reporting.js.map +1 -1
  940. package/esm/utils/function-utils.js.map +1 -1
  941. package/esm/utils/linked-list.js +4 -1
  942. package/esm/utils/linked-list.js.map +1 -1
  943. package/esm/utils/links/bots.js.map +1 -1
  944. package/esm/utils/links/chat.js.map +1 -1
  945. package/esm/utils/links/common.js.map +1 -1
  946. package/esm/utils/links/misc.js.map +1 -1
  947. package/esm/utils/logger.d.ts +2 -2
  948. package/esm/utils/logger.js +21 -14
  949. package/esm/utils/logger.js.map +1 -1
  950. package/esm/utils/long-utils.js +2 -6
  951. package/esm/utils/long-utils.js.map +1 -1
  952. package/esm/utils/lru-map.js +5 -1
  953. package/esm/utils/lru-map.js.map +1 -1
  954. package/esm/utils/lru-set.js +4 -0
  955. package/esm/utils/lru-set.js.map +1 -1
  956. package/esm/utils/peer-utils.js.map +1 -1
  957. package/esm/utils/reloadable.js +10 -7
  958. package/esm/utils/reloadable.js.map +1 -1
  959. package/esm/utils/sorted-array.js +2 -0
  960. package/esm/utils/sorted-array.js.map +1 -1
  961. package/esm/utils/tl-json.js.map +1 -1
  962. package/esm/utils/type-assertions.js.map +1 -1
  963. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-peer.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/resolve-peer.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { getMarkedPeerId, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { MtPeerNotFoundError } from '../../types/errors.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { toInputChannel, toInputPeer, toInputUser } from '../../utils/peer-utils.js'\n\n// @available=both\n/**\n * Get the `InputPeer` of a known peer id.\n * Useful when an `InputPeer` is needed in Raw API.\n *\n * @param peerId The peer identifier that you want to extract the `InputPeer` from.\n * @param force Whether to force re-fetch the peer from the server (only for usernames and phone numbers)\n */\nexport async function resolvePeer(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputPeer> {\n // for convenience we also accept tl and User/Chat objects directly\n if (typeof peerId === 'object') {\n if (tl.isAnyPeer(peerId)) {\n peerId = getMarkedPeerId(peerId)\n } else if ('inputPeer' in peerId) {\n // User | Chat\n peerId = peerId.inputPeer\n } else {\n peerId = toInputPeer(peerId)\n }\n }\n\n if (typeof peerId === 'object') {\n switch (peerId._) {\n case 'mtcute.dummyInputPeerMinUser':\n peerId = peerId.userId\n break\n case 'mtcute.dummyInputPeerMinChannel':\n peerId = toggleChannelIdMark(peerId.channelId)\n break\n default:\n return peerId\n }\n }\n\n if (typeof peerId === 'number' && !force) {\n const fromStorage = await client.storage.peers.getById(peerId)\n if (fromStorage) return fromStorage\n }\n\n if (typeof peerId === 'string') {\n if (peerId === 'self' || peerId === 'me') return { _: 'inputPeerSelf' }\n\n peerId = peerId.replace(/[@+\\s()]/g, '')\n\n let res\n\n if (peerId.match(/^\\d+$/)) {\n // phone number\n const fromStorage = await client.storage.peers.getByPhone(peerId)\n if (fromStorage) return fromStorage\n\n res = await client.call({\n _: 'contacts.resolvePhone',\n phone: peerId,\n })\n } else {\n // username\n if (!force) {\n const fromStorage = await client.storage.peers.getByUsername(peerId)\n if (fromStorage) return fromStorage\n }\n\n res = await client.call({\n _: 'contacts.resolveUsername',\n username: peerId,\n })\n }\n\n if (res.peer._ === 'peerUser') {\n const id = res.peer.userId\n\n const found = res.users.find((it) => it.id === id)\n\n if (found && found._ === 'user') {\n if (!found.accessHash) {\n // no access hash, we can't use it\n // this may happen when bot resolves a username\n // of a user who hasn't started a conversation with it\n throw new MtPeerNotFoundError(\n `Peer (user) with username ${peerId} was found, but it has no access hash`,\n )\n }\n\n return {\n _: 'inputPeerUser',\n userId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else if (res.peer._ === 'peerChannel') {\n const id = res.peer.channelId\n const found = res.chats.find((it) => it.id === id)\n\n if (found) {\n if (!(found._ === 'channel' || found._ === 'channelForbidden')) {\n // chats can't have usernames\n // furthermore, our id is a channel id, so it must be a channel\n // this should never happen, unless Telegram goes crazy\n throw new MtTypeAssertionError('contacts.resolveUsername#chats', 'channel', found._)\n }\n\n if (!found.accessHash) {\n // shouldn't happen? but just in case\n throw new MtPeerNotFoundError(`Peer (channel) with ${peerId} was found, but it has no access hash`)\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else {\n // chats can't have usernames\n throw new MtTypeAssertionError('contacts.resolveUsername', 'user or channel', res.peer._)\n }\n\n throw new MtPeerNotFoundError(`Could not find a peer by ${peerId}`)\n }\n\n // in some cases, the server allows us to use access_hash=0.\n // particularly, when we're a bot or we're referencing a user\n // who we have \"seen\" recently\n // if it's not the case, we'll get an `PEER_ID_INVALID` error anyways\n const [peerType, bareId] = parseMarkedPeerId(peerId)\n\n switch (peerType) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: bareId,\n accessHash: Long.ZERO,\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: bareId,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: bareId,\n accessHash: Long.ZERO,\n }\n }\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputUser`.\n */\nexport async function resolveUser(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputUser> {\n return toInputUser(await resolvePeer(client, peerId, force), peerId)\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`.\n */\nexport async function resolveChannel(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputChannel> {\n return toInputChannel(await resolvePeer(client, peerId, force), peerId)\n}\n"]}
1
+ {"version":3,"file":"resolve-peer.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/resolve-peer.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { getMarkedPeerId, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { MtPeerNotFoundError } from '../../types/errors.js'\nimport { InputPeerLike } from '../../types/peers/index.js'\nimport { toInputChannel, toInputPeer, toInputUser } from '../../utils/peer-utils.js'\n\n// @available=both\n/**\n * Get the `InputPeer` of a known peer id.\n * Useful when an `InputPeer` is needed in Raw API.\n *\n * @param peerId The peer identifier that you want to extract the `InputPeer` from.\n * @param force Whether to force re-fetch the peer from the server (only for usernames and phone numbers)\n */\nexport async function resolvePeer(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputPeer> {\n // for convenience we also accept tl and User/Chat objects directly\n if (typeof peerId === 'object') {\n if (tl.isAnyPeer(peerId)) {\n peerId = getMarkedPeerId(peerId)\n } else if ('inputPeer' in peerId) {\n // User | Chat\n peerId = peerId.inputPeer\n } else {\n peerId = toInputPeer(peerId)\n }\n }\n\n if (typeof peerId === 'object') {\n switch (peerId._) {\n case 'mtcute.dummyInputPeerMinUser':\n peerId = peerId.userId\n break\n case 'mtcute.dummyInputPeerMinChannel':\n peerId = toggleChannelIdMark(peerId.channelId)\n break\n default:\n return peerId\n }\n }\n\n if (typeof peerId === 'number' && !force) {\n const fromStorage = await client.storage.peers.getById(peerId)\n if (fromStorage) return fromStorage\n }\n\n if (typeof peerId === 'string') {\n if (peerId === 'self' || peerId === 'me') return { _: 'inputPeerSelf' }\n\n peerId = peerId.replace(/[@+\\s()]/g, '')\n\n let res\n\n if (peerId.match(/^\\d+$/)) {\n // phone number\n const fromStorage = await client.storage.peers.getByPhone(peerId)\n if (fromStorage) return fromStorage\n\n res = await client.call({\n _: 'contacts.resolvePhone',\n phone: peerId,\n })\n } else {\n // username\n if (!force) {\n const fromStorage = await client.storage.peers.getByUsername(peerId)\n if (fromStorage) return fromStorage\n }\n\n res = await client.call({\n _: 'contacts.resolveUsername',\n username: peerId,\n })\n }\n\n if (res.peer._ === 'peerUser') {\n const id = res.peer.userId\n\n const found = res.users.find((it) => it.id === id)\n\n if (found && found._ === 'user') {\n if (!found.accessHash) {\n // no access hash, we can't use it\n // this may happen when bot resolves a username\n // of a user who hasn't started a conversation with it\n throw new MtPeerNotFoundError(\n `Peer (user) with username ${peerId} was found, but it has no access hash`,\n )\n }\n\n return {\n _: 'inputPeerUser',\n userId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else if (res.peer._ === 'peerChannel') {\n const id = res.peer.channelId\n const found = res.chats.find((it) => it.id === id)\n\n if (found) {\n if (!(found._ === 'channel' || found._ === 'channelForbidden')) {\n // chats can't have usernames\n // furthermore, our id is a channel id, so it must be a channel\n // this should never happen, unless Telegram goes crazy\n throw new MtTypeAssertionError('contacts.resolveUsername#chats', 'channel', found._)\n }\n\n if (!found.accessHash) {\n // shouldn't happen? but just in case\n throw new MtPeerNotFoundError(`Peer (channel) with ${peerId} was found, but it has no access hash`)\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: found.id,\n accessHash: found.accessHash,\n }\n }\n } else {\n // chats can't have usernames\n throw new MtTypeAssertionError('contacts.resolveUsername', 'user or channel', res.peer._)\n }\n\n throw new MtPeerNotFoundError(`Could not find a peer by ${peerId}`)\n }\n\n // in some cases, the server allows us to use access_hash=0.\n // particularly, when we're a bot or we're referencing a user\n // who we have \"seen\" recently\n // if it's not the case, we'll get an `PEER_ID_INVALID` error anyways\n const [peerType, bareId] = parseMarkedPeerId(peerId)\n\n switch (peerType) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: bareId,\n accessHash: Long.ZERO,\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: bareId,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: bareId,\n accessHash: Long.ZERO,\n }\n }\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputUser`.\n */\nexport async function resolveUser(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputUser> {\n return toInputUser(await resolvePeer(client, peerId, force), peerId)\n}\n\n/**\n * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`.\n */\nexport async function resolveChannel(\n client: ITelegramClient,\n peerId: InputPeerLike,\n force = false,\n): Promise<tl.TypeInputChannel> {\n return toInputChannel(await resolvePeer(client, peerId, force), peerId)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"set-my-emoji-status.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/set-my-emoji-status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAuB,EACvB,KAAqB,EACrB,MAKC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAE9B,IAAI,WAA+B,CAAA;IAEnC,IAAI,KAAK,KAAK,IAAI,EAAE;QAChB,WAAW,GAAG,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAA;KAC1C;SAAM,IAAI,KAAK,EAAE;QACd,WAAW,GAAG;YACV,CAAC,EAAE,kBAAkB;YACrB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;SAC9B,CAAA;KACJ;SAAM;QACH,WAAW,GAAG;YACV,CAAC,EAAE,aAAa;YAChB,UAAU,EAAE,KAAK;SACpB,CAAA;KACJ;IAED,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QACxB,CAAC,EAAE,2BAA2B;QAC9B,WAAW;KACd,CAAC,CAAA;IAEF,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAA;AAC9C,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertTrue } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { normalizeDate } from '../../utils/index.js'\n\n/**\n * Set an emoji status for the current user\n *\n * @param emoji Custom emoji ID or `null` to remove the emoji\n */\nexport async function setMyEmojiStatus(\n client: ITelegramClient,\n emoji: tl.Long | null,\n params?: {\n /**\n * Date when the emoji status should expire (only if `emoji` is not `null`)\n */\n until?: number | Date\n },\n): Promise<void> {\n const { until } = params ?? {}\n\n let emojiStatus: tl.TypeEmojiStatus\n\n if (emoji === null) {\n emojiStatus = { _: 'emojiStatusEmpty' }\n } else if (until) {\n emojiStatus = {\n _: 'emojiStatusUntil',\n documentId: emoji,\n until: normalizeDate(until),\n }\n } else {\n emojiStatus = {\n _: 'emojiStatus',\n documentId: emoji,\n }\n }\n\n const r = await client.call({\n _: 'account.updateEmojiStatus',\n emojiStatus,\n })\n\n assertTrue('account.updateEmojiStatus', r)\n}\n"]}
1
+ {"version":3,"file":"set-my-emoji-status.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/set-my-emoji-status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,MAAuB,EACvB,KAAqB,EACrB,MAKC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAE9B,IAAI,WAA+B,CAAA;IAEnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,WAAW,GAAG,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC3C,CAAC;SAAM,IAAI,KAAK,EAAE,CAAC;QACf,WAAW,GAAG;YACV,CAAC,EAAE,kBAAkB;YACrB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;SAC9B,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,WAAW,GAAG;YACV,CAAC,EAAE,aAAa;YAChB,UAAU,EAAE,KAAK;SACpB,CAAA;IACL,CAAC;IAED,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QACxB,CAAC,EAAE,2BAA2B;QAC9B,WAAW;KACd,CAAC,CAAA;IAEF,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAA;AAC9C,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertTrue } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { normalizeDate } from '../../utils/index.js'\n\n/**\n * Set an emoji status for the current user\n *\n * @param emoji Custom emoji ID or `null` to remove the emoji\n */\nexport async function setMyEmojiStatus(\n client: ITelegramClient,\n emoji: tl.Long | null,\n params?: {\n /**\n * Date when the emoji status should expire (only if `emoji` is not `null`)\n */\n until?: number | Date\n },\n): Promise<void> {\n const { until } = params ?? {}\n\n let emojiStatus: tl.TypeEmojiStatus\n\n if (emoji === null) {\n emojiStatus = { _: 'emojiStatusEmpty' }\n } else if (until) {\n emojiStatus = {\n _: 'emojiStatusUntil',\n documentId: emoji,\n until: normalizeDate(until),\n }\n } else {\n emojiStatus = {\n _: 'emojiStatus',\n documentId: emoji,\n }\n }\n\n const r = await client.call({\n _: 'account.updateEmojiStatus',\n emojiStatus,\n })\n\n assertTrue('account.updateEmojiStatus', r)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"set-my-profile-photo.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/set-my-profile-photo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAiB,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAuB,EACvB,MAOC;IAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IACnC,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAEtB,8CAA8C;IAC9C,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC1F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAC1D,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAA;SACpE;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACrD,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC9B,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;aACpC;YAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBAC1B,CAAC,EAAE,2BAA2B;gBAC9B,EAAE,EAAE,KAAK;aACZ,CAAC,CAAA;YAEF,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAoB,CAAC,CAAA;SAC7C;KACJ;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,2BAA2B;QAC9B,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACnF,YAAY,EAAE,UAAU;KAC3B,CAAC,CAAA;IAEF,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAoB,CAAC,CAAA;AAC9C,CAAC","sourcesContent":["import { tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputFileLike, Photo } from '../../types/index.js'\nimport { fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { _normalizeInputFile } from '../files/normalize-input-file.js'\n\n/**\n * Set a new profile photo or video for the current user.\n *\n * You can also pass a file ID or an InputPhoto to re-use existing photo.\n */\nexport async function setMyProfilePhoto(\n client: ITelegramClient,\n params: {\n /** Media type (photo or video) */\n type: 'photo' | 'video'\n /** Input media file */\n media: InputFileLike | tl.TypeInputPhoto\n /** When `type = video`, timestamp in seconds which will be shown as a static preview. */\n previewSec?: number\n },\n): Promise<Photo> {\n const { type, previewSec } = params\n let { media } = params\n\n // try parsing media as file id or input photo\n if (tdFileId.isFileIdLike(media) || (typeof media === 'object' && tl.isAnyInputPhoto(media))) {\n if (typeof media === 'string' && media.match(/^https?:\\/\\//)) {\n throw new MtArgumentError(\"Profile photo can't be set from URL.\")\n }\n\n if (typeof media !== 'string' || !media.match(/^file:/)) {\n if (tdFileId.isFileIdLike(media)) {\n media = fileIdToInputPhoto(media)\n }\n\n const res = await client.call({\n _: 'photos.updateProfilePhoto',\n id: media,\n })\n\n return new Photo(res.photo as tl.RawPhoto)\n }\n }\n\n const res = await client.call({\n _: 'photos.uploadProfilePhoto',\n [type === 'photo' ? 'file' : 'video']: await _normalizeInputFile(client, media, {}),\n videoStartTs: previewSec,\n })\n\n return new Photo(res.photo as tl.RawPhoto)\n}\n"]}
1
+ {"version":3,"file":"set-my-profile-photo.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/users/set-my-profile-photo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAiB,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAuB,EACvB,MAOC;IAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IACnC,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAEtB,8CAA8C;IAC9C,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACrC,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBAC1B,CAAC,EAAE,2BAA2B;gBAC9B,EAAE,EAAE,KAAK;aACZ,CAAC,CAAA;YAEF,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAoB,CAAC,CAAA;QAC9C,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,2BAA2B;QAC9B,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACnF,YAAY,EAAE,UAAU;KAC3B,CAAC,CAAA;IAEF,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAoB,CAAC,CAAA;AAC9C,CAAC","sourcesContent":["import { tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputFileLike, Photo } from '../../types/index.js'\nimport { fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { _normalizeInputFile } from '../files/normalize-input-file.js'\n\n/**\n * Set a new profile photo or video for the current user.\n *\n * You can also pass a file ID or an InputPhoto to re-use existing photo.\n */\nexport async function setMyProfilePhoto(\n client: ITelegramClient,\n params: {\n /** Media type (photo or video) */\n type: 'photo' | 'video'\n /** Input media file */\n media: InputFileLike | tl.TypeInputPhoto\n /** When `type = video`, timestamp in seconds which will be shown as a static preview. */\n previewSec?: number\n },\n): Promise<Photo> {\n const { type, previewSec } = params\n let { media } = params\n\n // try parsing media as file id or input photo\n if (tdFileId.isFileIdLike(media) || (typeof media === 'object' && tl.isAnyInputPhoto(media))) {\n if (typeof media === 'string' && media.match(/^https?:\\/\\//)) {\n throw new MtArgumentError(\"Profile photo can't be set from URL.\")\n }\n\n if (typeof media !== 'string' || !media.match(/^file:/)) {\n if (tdFileId.isFileIdLike(media)) {\n media = fileIdToInputPhoto(media)\n }\n\n const res = await client.call({\n _: 'photos.updateProfilePhoto',\n id: media,\n })\n\n return new Photo(res.photo as tl.RawPhoto)\n }\n }\n\n const res = await client.call({\n _: 'photos.uploadProfilePhoto',\n [type === 'photo' ? 'file' : 'video']: await _normalizeInputFile(client, media, {}),\n videoStartTs: previewSec,\n })\n\n return new Photo(res.photo as tl.RawPhoto)\n}\n"]}
@@ -57,10 +57,12 @@ function parse(data) {
57
57
  }
58
58
  // todo: add testMode here
59
59
  export class CurrentUserService extends BaseService {
60
+ _kv;
60
61
  constructor(_kv, opts) {
61
62
  super(opts);
62
63
  this._kv = _kv;
63
64
  }
65
+ _cached;
64
66
  async store(info) {
65
67
  if (info && this._cached) {
66
68
  // update the existing object so the references to it are still valid
@@ -1 +1 @@
1
- {"version":3,"file":"current-user.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/current-user.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\nimport { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime'\n\nimport { IKeyValueRepository } from '../../../storage/repository/key-value.js'\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { MtArgumentError } from '../../../types/index.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { extractUsernames } from '../../utils/peer-utils.js'\n\nexport interface CurrentUserInfo {\n userId: number\n isBot: boolean\n isPremium: boolean\n usernames: string[]\n}\n\nconst KV_CURRENT_USER = 'current_user'\n\nfunction serialize(info: CurrentUserInfo | null): Uint8Array {\n if (!info) return new Uint8Array(0)\n\n const hasUsernames = info.usernames.length > 0\n\n let usernamesOverhead = hasUsernames ? 4 : 0\n\n for (const username of info.usernames) {\n // since usernames are always ASCII, string length is the same as byte length\n usernamesOverhead += TlSerializationCounter.countBytesOverhead(username.length) + username.length\n }\n\n const writer = TlBinaryWriter.manual(16 + usernamesOverhead)\n writer.int(1) // version\n\n let flags = 0\n if (info.isBot) flags |= 1\n if (hasUsernames) flags |= 2\n if (info.isPremium) flags |= 4\n\n writer.int(flags)\n writer.int53(info.userId)\n\n if (hasUsernames) {\n writer.int(info.usernames.length)\n\n for (const username of info.usernames) {\n writer.string(username)\n }\n }\n\n return writer.result()\n}\n\nfunction parse(data: Uint8Array): CurrentUserInfo | null {\n if (data.length === 0) return null\n\n const reader = TlBinaryReader.manual(data)\n if (reader.int() !== 1) return null\n\n const flags = reader.int()\n const userId = reader.int53()\n\n let usernames: string[] = []\n\n if (flags & 2) {\n const len = reader.int()\n usernames = new Array<string>(len)\n\n for (let i = 0; i < len; i++) {\n usernames[i] = reader.string()\n }\n }\n\n return {\n userId,\n isBot: (flags & 1) !== 0,\n isPremium: (flags & 4) !== 0,\n usernames,\n }\n}\n\n// todo: add testMode here\n\nexport class CurrentUserService extends BaseService {\n constructor(\n private _kv: IKeyValueRepository,\n opts: ServiceOptions,\n ) {\n super(opts)\n }\n\n private _cached?: CurrentUserInfo | null\n\n async store(info: CurrentUserInfo | null): Promise<void> {\n if (info && this._cached) {\n // update the existing object so the references to it are still valid\n if (this._cached.userId === info.userId) {\n return\n }\n\n this._cached.userId = info.userId\n this._cached.isBot = info.isBot\n } else {\n this._cached = info\n }\n\n await this._kv.set(KV_CURRENT_USER, serialize(info))\n await this._driver.save?.()\n }\n\n async storeFrom(user: tl.TypeUser): Promise<CurrentUserInfo> {\n assertTypeIs('storeFrom', user, 'user')\n\n const obj: CurrentUserInfo = {\n userId: user.id,\n isBot: user.bot!,\n isPremium: user.premium!,\n usernames: extractUsernames(user),\n }\n await this.store(obj)\n\n return obj\n }\n\n async fetch(): Promise<CurrentUserInfo | null> {\n if (this._cached) return this._cached\n\n const data = await this._kv.get(KV_CURRENT_USER)\n if (!data) return null\n\n const info = parse(data)\n this._cached = info\n\n return info\n }\n\n getCached(safe = false): CurrentUserInfo | null {\n if (this._cached === undefined) {\n if (safe) return null\n\n throw new MtArgumentError('User info is not cached yet')\n }\n\n return this._cached\n }\n\n async update(params: { username?: string; usernames?: string[]; isPremium?: boolean }): Promise<void> {\n const info = await this.fetch()\n if (!info) return\n\n const { username, usernames, isPremium } = params\n\n if (isPremium !== undefined) info.isPremium = isPremium\n\n if (username !== undefined) {\n // \"main\" username is always the first one\n info.usernames[0] = username\n } else if (usernames !== undefined) {\n info.usernames = usernames\n }\n\n return this.store(info)\n }\n}\n"]}
1
+ {"version":3,"file":"current-user.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/current-user.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\nimport { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime'\n\nimport { IKeyValueRepository } from '../../../storage/repository/key-value.js'\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { MtArgumentError } from '../../../types/index.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { extractUsernames } from '../../utils/peer-utils.js'\n\nexport interface CurrentUserInfo {\n userId: number\n isBot: boolean\n isPremium: boolean\n usernames: string[]\n}\n\nconst KV_CURRENT_USER = 'current_user'\n\nfunction serialize(info: CurrentUserInfo | null): Uint8Array {\n if (!info) return new Uint8Array(0)\n\n const hasUsernames = info.usernames.length > 0\n\n let usernamesOverhead = hasUsernames ? 4 : 0\n\n for (const username of info.usernames) {\n // since usernames are always ASCII, string length is the same as byte length\n usernamesOverhead += TlSerializationCounter.countBytesOverhead(username.length) + username.length\n }\n\n const writer = TlBinaryWriter.manual(16 + usernamesOverhead)\n writer.int(1) // version\n\n let flags = 0\n if (info.isBot) flags |= 1\n if (hasUsernames) flags |= 2\n if (info.isPremium) flags |= 4\n\n writer.int(flags)\n writer.int53(info.userId)\n\n if (hasUsernames) {\n writer.int(info.usernames.length)\n\n for (const username of info.usernames) {\n writer.string(username)\n }\n }\n\n return writer.result()\n}\n\nfunction parse(data: Uint8Array): CurrentUserInfo | null {\n if (data.length === 0) return null\n\n const reader = TlBinaryReader.manual(data)\n if (reader.int() !== 1) return null\n\n const flags = reader.int()\n const userId = reader.int53()\n\n let usernames: string[] = []\n\n if (flags & 2) {\n const len = reader.int()\n usernames = new Array<string>(len)\n\n for (let i = 0; i < len; i++) {\n usernames[i] = reader.string()\n }\n }\n\n return {\n userId,\n isBot: (flags & 1) !== 0,\n isPremium: (flags & 4) !== 0,\n usernames,\n }\n}\n\n// todo: add testMode here\n\nexport class CurrentUserService extends BaseService {\n constructor(\n private _kv: IKeyValueRepository,\n opts: ServiceOptions,\n ) {\n super(opts)\n }\n\n private _cached?: CurrentUserInfo | null\n\n async store(info: CurrentUserInfo | null): Promise<void> {\n if (info && this._cached) {\n // update the existing object so the references to it are still valid\n if (this._cached.userId === info.userId) {\n return\n }\n\n this._cached.userId = info.userId\n this._cached.isBot = info.isBot\n } else {\n this._cached = info\n }\n\n await this._kv.set(KV_CURRENT_USER, serialize(info))\n await this._driver.save?.()\n }\n\n async storeFrom(user: tl.TypeUser): Promise<CurrentUserInfo> {\n assertTypeIs('storeFrom', user, 'user')\n\n const obj: CurrentUserInfo = {\n userId: user.id,\n isBot: user.bot!,\n isPremium: user.premium!,\n usernames: extractUsernames(user),\n }\n await this.store(obj)\n\n return obj\n }\n\n async fetch(): Promise<CurrentUserInfo | null> {\n if (this._cached) return this._cached\n\n const data = await this._kv.get(KV_CURRENT_USER)\n if (!data) return null\n\n const info = parse(data)\n this._cached = info\n\n return info\n }\n\n getCached(safe = false): CurrentUserInfo | null {\n if (this._cached === undefined) {\n if (safe) return null\n\n throw new MtArgumentError('User info is not cached yet')\n }\n\n return this._cached\n }\n\n async update(params: { username?: string; usernames?: string[]; isPremium?: boolean }): Promise<void> {\n const info = await this.fetch()\n if (!info) return\n\n const { username, usernames, isPremium } = params\n\n if (isPremium !== undefined) info.isPremium = isPremium\n\n if (username !== undefined) {\n // \"main\" username is always the first one\n info.usernames[0] = username\n } else if (usernames !== undefined) {\n info.usernames = usernames\n }\n\n return this.store(info)\n }\n}\n"]}
@@ -28,12 +28,16 @@ function getInputPeer(dto) {
28
28
  }
29
29
  }
30
30
  export class PeersService extends BaseService {
31
+ options;
32
+ _peers;
33
+ _refs;
34
+ _cache;
35
+ _pendingWrites = new Map();
31
36
  constructor(options, _peers, _refs, common) {
32
37
  super(common);
33
38
  this.options = options;
34
39
  this._peers = _peers;
35
40
  this._refs = _refs;
36
- this._pendingWrites = new Map();
37
41
  this._cache = new LruMap(options.cacheSize ?? 100);
38
42
  }
39
43
  async updatePeersFrom(obj) {
@@ -1 +1 @@
1
- {"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/peers.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { longFromFastString, longToFastString } from '../../../utils/long-utils.js'\nimport { LruMap } from '../../../utils/lru-map.js'\nimport { getAllPeersFrom, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { extractUsernames } from '../../utils/peer-utils.js'\nimport { IPeersRepository } from '../repository/peers.js'\nimport { RefMessagesService } from './ref-messages.js'\n\ninterface CacheItem {\n peer: tl.TypeInputPeer\n complete: tl.TypeUser | tl.TypeChat | null\n}\n\nexport interface PeersServiceOptions {\n cacheSize?: number\n updatesWriteInterval?: number\n}\n\nconst USERNAME_TTL = 24 * 60 * 60 * 1000 // 1 day\n\nfunction getInputPeer(dto: IPeersRepository.PeerInfo): tl.TypeInputPeer {\n const [type, id] = parseMarkedPeerId(dto.id)\n\n switch (type) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: id,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n }\n}\n\nexport class PeersService extends BaseService {\n private _cache: LruMap<number, CacheItem>\n private _pendingWrites = new Map<number, IPeersRepository.PeerInfo>()\n\n constructor(\n private options: PeersServiceOptions,\n private _peers: IPeersRepository,\n private _refs: RefMessagesService,\n common: ServiceOptions,\n ) {\n super(common)\n\n this._cache = new LruMap(options.cacheSize ?? 100)\n }\n\n async updatePeersFrom(obj: tl.TlObject | tl.TlObject[]) {\n let count = 0\n\n for (const peer of getAllPeersFrom(obj)) {\n // no point in caching min peers as we can't use them\n if ((peer as Extract<typeof peer, { min?: unknown }>).min) continue\n\n count += 1\n\n await this.store(peer)\n }\n\n if (count > 0) {\n await this._driver.save?.()\n this._log.debug('cached %d peers', count)\n\n return true\n }\n\n return false\n }\n\n async store(peer: tl.TypeUser | tl.TypeChat): Promise<void> {\n let dto: IPeersRepository.PeerInfo\n let accessHash: tl.Long\n\n switch (peer._) {\n case 'user': {\n if (!peer.accessHash) {\n this._log.warn('received user without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: peer.id,\n accessHash: longToFastString(peer.accessHash),\n phone: peer.phone,\n usernames: extractUsernames(peer),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n case 'chat':\n case 'chatForbidden': {\n dto = {\n id: -peer.id,\n accessHash: '',\n updated: Date.now(),\n complete: this._serializeTl(peer),\n usernames: [],\n }\n accessHash = Long.ZERO\n break\n }\n case 'channel':\n case 'channelForbidden': {\n if (!peer.accessHash) {\n this._log.warn('received channel without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: toggleChannelIdMark(peer.id),\n accessHash: longToFastString(peer.accessHash),\n usernames: extractUsernames(peer as tl.RawChannel),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n default:\n return\n }\n\n const cached = this._cache.get(peer.id)\n\n if (cached && this.options.updatesWriteInterval !== 0) {\n const oldAccessHash = (cached.peer as Extract<tl.TypeInputPeer, { accessHash?: unknown }>).accessHash\n\n if (oldAccessHash?.eq(accessHash)) {\n // when entity is cached and hash is the same, an update query is needed,\n // since some field in the full entity might have changed, or the username/phone\n //\n // to avoid too many DB calls, and since these updates are pretty common,\n // they are grouped and applied in batches no more than once every 30sec (or user-defined).\n //\n // until then, they are either served from in-memory cache,\n // or an older version is fetched from DB\n\n this._pendingWrites.set(peer.id, dto)\n cached.complete = peer\n\n return\n }\n }\n\n // entity is not cached in memory, or the access hash has changed\n // we need to update it in the DB asap, and also update the in-memory cache\n await this._peers.store(dto)\n this._cache.set(peer.id, {\n peer: getInputPeer(dto),\n complete: peer,\n })\n\n // todo: if (!this._cachedSelf?.isBot) {\n // we have the full peer, we no longer need the references\n // we can skip this in the other branch, since in that case it would've already been deleted\n await this._refs.deleteByPeer(peer.id)\n }\n\n private _returnCaching(id: number, dto: IPeersRepository.PeerInfo) {\n const peer = getInputPeer(dto)\n const complete = this._deserializeTl(dto.complete)\n\n this._cache.set(id, {\n peer,\n complete: complete as tl.TypeUser | tl.TypeChat | null,\n })\n\n return peer\n }\n\n async getById(id: number, allowRefs = true): Promise<tl.TypeInputPeer | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.peer\n\n const dto = await this._peers.getById(id)\n\n if (dto) {\n return this._returnCaching(id, dto)\n }\n\n if (allowRefs) {\n const ref = await this._refs.getForPeer(id)\n if (!ref) return null\n\n const [chatId, msgId] = ref\n const chat = await this.getById(chatId, false)\n if (!chat) return null\n\n if (id > 0) {\n // user\n return {\n _: 'inputPeerUserFromMessage',\n peer: chat,\n msgId,\n userId: id,\n }\n }\n\n // channel\n return {\n _: 'inputPeerChannelFromMessage',\n peer: chat,\n msgId,\n channelId: toggleChannelIdMark(id),\n }\n }\n\n return null\n }\n\n async getByPhone(phone: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByPhone(phone)\n if (!dto) return null\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getByUsername(username: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByUsername(username.toLowerCase())\n if (!dto) return null\n\n if (Date.now() - dto.updated > USERNAME_TTL) {\n // username is too old, we can't trust it. ask the client to re-fetch it\n return null\n }\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getCompleteById(id: number): Promise<tl.TypeUser | tl.TypeChat | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.complete\n\n const dto = await this._peers.getById(id)\n if (!dto) return null\n\n const cacheItem: CacheItem = {\n peer: getInputPeer(dto),\n complete: this._deserializeTl(dto.complete) as tl.TypeUser | tl.TypeChat | null,\n }\n this._cache.set(id, cacheItem)\n\n return cacheItem.complete\n }\n}\n"]}
1
+ {"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/peers.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { longFromFastString, longToFastString } from '../../../utils/long-utils.js'\nimport { LruMap } from '../../../utils/lru-map.js'\nimport { getAllPeersFrom, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { extractUsernames } from '../../utils/peer-utils.js'\nimport { IPeersRepository } from '../repository/peers.js'\nimport { RefMessagesService } from './ref-messages.js'\n\ninterface CacheItem {\n peer: tl.TypeInputPeer\n complete: tl.TypeUser | tl.TypeChat | null\n}\n\nexport interface PeersServiceOptions {\n cacheSize?: number\n updatesWriteInterval?: number\n}\n\nconst USERNAME_TTL = 24 * 60 * 60 * 1000 // 1 day\n\nfunction getInputPeer(dto: IPeersRepository.PeerInfo): tl.TypeInputPeer {\n const [type, id] = parseMarkedPeerId(dto.id)\n\n switch (type) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: id,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n }\n}\n\nexport class PeersService extends BaseService {\n private _cache: LruMap<number, CacheItem>\n private _pendingWrites = new Map<number, IPeersRepository.PeerInfo>()\n\n constructor(\n private options: PeersServiceOptions,\n private _peers: IPeersRepository,\n private _refs: RefMessagesService,\n common: ServiceOptions,\n ) {\n super(common)\n\n this._cache = new LruMap(options.cacheSize ?? 100)\n }\n\n async updatePeersFrom(obj: tl.TlObject | tl.TlObject[]) {\n let count = 0\n\n for (const peer of getAllPeersFrom(obj)) {\n // no point in caching min peers as we can't use them\n if ((peer as Extract<typeof peer, { min?: unknown }>).min) continue\n\n count += 1\n\n await this.store(peer)\n }\n\n if (count > 0) {\n await this._driver.save?.()\n this._log.debug('cached %d peers', count)\n\n return true\n }\n\n return false\n }\n\n async store(peer: tl.TypeUser | tl.TypeChat): Promise<void> {\n let dto: IPeersRepository.PeerInfo\n let accessHash: tl.Long\n\n switch (peer._) {\n case 'user': {\n if (!peer.accessHash) {\n this._log.warn('received user without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: peer.id,\n accessHash: longToFastString(peer.accessHash),\n phone: peer.phone,\n usernames: extractUsernames(peer),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n case 'chat':\n case 'chatForbidden': {\n dto = {\n id: -peer.id,\n accessHash: '',\n updated: Date.now(),\n complete: this._serializeTl(peer),\n usernames: [],\n }\n accessHash = Long.ZERO\n break\n }\n case 'channel':\n case 'channelForbidden': {\n if (!peer.accessHash) {\n this._log.warn('received channel without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: toggleChannelIdMark(peer.id),\n accessHash: longToFastString(peer.accessHash),\n usernames: extractUsernames(peer as tl.RawChannel),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n default:\n return\n }\n\n const cached = this._cache.get(peer.id)\n\n if (cached && this.options.updatesWriteInterval !== 0) {\n const oldAccessHash = (cached.peer as Extract<tl.TypeInputPeer, { accessHash?: unknown }>).accessHash\n\n if (oldAccessHash?.eq(accessHash)) {\n // when entity is cached and hash is the same, an update query is needed,\n // since some field in the full entity might have changed, or the username/phone\n //\n // to avoid too many DB calls, and since these updates are pretty common,\n // they are grouped and applied in batches no more than once every 30sec (or user-defined).\n //\n // until then, they are either served from in-memory cache,\n // or an older version is fetched from DB\n\n this._pendingWrites.set(peer.id, dto)\n cached.complete = peer\n\n return\n }\n }\n\n // entity is not cached in memory, or the access hash has changed\n // we need to update it in the DB asap, and also update the in-memory cache\n await this._peers.store(dto)\n this._cache.set(peer.id, {\n peer: getInputPeer(dto),\n complete: peer,\n })\n\n // todo: if (!this._cachedSelf?.isBot) {\n // we have the full peer, we no longer need the references\n // we can skip this in the other branch, since in that case it would've already been deleted\n await this._refs.deleteByPeer(peer.id)\n }\n\n private _returnCaching(id: number, dto: IPeersRepository.PeerInfo) {\n const peer = getInputPeer(dto)\n const complete = this._deserializeTl(dto.complete)\n\n this._cache.set(id, {\n peer,\n complete: complete as tl.TypeUser | tl.TypeChat | null,\n })\n\n return peer\n }\n\n async getById(id: number, allowRefs = true): Promise<tl.TypeInputPeer | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.peer\n\n const dto = await this._peers.getById(id)\n\n if (dto) {\n return this._returnCaching(id, dto)\n }\n\n if (allowRefs) {\n const ref = await this._refs.getForPeer(id)\n if (!ref) return null\n\n const [chatId, msgId] = ref\n const chat = await this.getById(chatId, false)\n if (!chat) return null\n\n if (id > 0) {\n // user\n return {\n _: 'inputPeerUserFromMessage',\n peer: chat,\n msgId,\n userId: id,\n }\n }\n\n // channel\n return {\n _: 'inputPeerChannelFromMessage',\n peer: chat,\n msgId,\n channelId: toggleChannelIdMark(id),\n }\n }\n\n return null\n }\n\n async getByPhone(phone: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByPhone(phone)\n if (!dto) return null\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getByUsername(username: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByUsername(username.toLowerCase())\n if (!dto) return null\n\n if (Date.now() - dto.updated > USERNAME_TTL) {\n // username is too old, we can't trust it. ask the client to re-fetch it\n return null\n }\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getCompleteById(id: number): Promise<tl.TypeUser | tl.TypeChat | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.complete\n\n const dto = await this._peers.getById(id)\n if (!dto) return null\n\n const cacheItem: CacheItem = {\n peer: getInputPeer(dto),\n complete: this._deserializeTl(dto.complete) as tl.TypeUser | tl.TypeChat | null,\n }\n this._cache.set(id, cacheItem)\n\n return cacheItem.complete\n }\n}\n"]}
@@ -3,6 +3,9 @@ import { LruMap } from '../../../utils/lru-map.js';
3
3
  // todo: move inside updates manager?
4
4
  // todo: chatId -> channelId
5
5
  export class RefMessagesService extends BaseService {
6
+ options;
7
+ _refs;
8
+ _cache;
6
9
  constructor(options, _refs, common) {
7
10
  super(common);
8
11
  this.options = options;
@@ -1 +1 @@
1
- {"version":3,"file":"ref-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/ref-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kCAAkC,CAAA;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAOlD,qCAAqC;AACrC,4BAA4B;AAE5B,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAG/C,YACa,OAAkC,EAClC,KAAmC,EAC5C,MAAsB;QAEtB,KAAK,CAAC,MAAM,CAAC,CAAA;QAJJ,YAAO,GAAP,OAAO,CAA2B;QAClC,UAAK,GAAL,KAAK,CAA8B;QAK5C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,GAAG;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAErC,OAAO,GAAG,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAgB;QACzC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACvC,8CAA8C;QAC9C,yCAAyC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;CACJ","sourcesContent":["import { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { LruMap } from '../../../utils/lru-map.js'\nimport { IReferenceMessagesRepository } from '../repository/ref-messages.js'\n\nexport interface RefMessagesServiceOptions {\n cacheSize?: number\n}\n\n// todo: move inside updates manager?\n// todo: chatId -> channelId\n\nexport class RefMessagesService extends BaseService {\n private _cache: LruMap<number, [number, number]>\n\n constructor(\n readonly options: RefMessagesServiceOptions,\n readonly _refs: IReferenceMessagesRepository,\n common: ServiceOptions,\n ) {\n super(common)\n\n this._cache = new LruMap(options.cacheSize ?? 1000)\n }\n\n async store(peerId: number, chatId: number, msgId: number): Promise<void> {\n await this._refs.store(peerId, chatId, msgId)\n this._cache.set(peerId, [chatId, msgId])\n }\n\n async getForPeer(peerId: number): Promise<[number, number] | null> {\n const cached = this._cache.get(peerId)\n if (cached) return cached\n\n const ref = await this._refs.getByPeer(peerId)\n if (ref) this._cache.set(peerId, ref)\n\n return ref\n }\n\n async delete(chatId: number, msgIds: number[]): Promise<void> {\n await this._refs.delete(chatId, msgIds)\n // it's too expensive to invalidate the cache,\n // so we just clear it completely instead\n this._cache.clear()\n }\n\n async deleteByPeer(peerId: number): Promise<void> {\n await this._refs.deleteByPeer(peerId)\n this._cache.delete(peerId)\n }\n}\n"]}
1
+ {"version":3,"file":"ref-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/ref-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kCAAkC,CAAA;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAOlD,qCAAqC;AACrC,4BAA4B;AAE5B,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAIlC;IACA;IAJL,MAAM,CAAkC;IAEhD,YACa,OAAkC,EAClC,KAAmC,EAC5C,MAAsB;QAEtB,KAAK,CAAC,MAAM,CAAC,CAAA;QAJJ,YAAO,GAAP,OAAO,CAA2B;QAClC,UAAK,GAAL,KAAK,CAA8B;QAK5C,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,GAAG;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAErC,OAAO,GAAG,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAgB;QACzC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACvC,8CAA8C;QAC9C,yCAAyC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;CACJ","sourcesContent":["import { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { LruMap } from '../../../utils/lru-map.js'\nimport { IReferenceMessagesRepository } from '../repository/ref-messages.js'\n\nexport interface RefMessagesServiceOptions {\n cacheSize?: number\n}\n\n// todo: move inside updates manager?\n// todo: chatId -> channelId\n\nexport class RefMessagesService extends BaseService {\n private _cache: LruMap<number, [number, number]>\n\n constructor(\n readonly options: RefMessagesServiceOptions,\n readonly _refs: IReferenceMessagesRepository,\n common: ServiceOptions,\n ) {\n super(common)\n\n this._cache = new LruMap(options.cacheSize ?? 1000)\n }\n\n async store(peerId: number, chatId: number, msgId: number): Promise<void> {\n await this._refs.store(peerId, chatId, msgId)\n this._cache.set(peerId, [chatId, msgId])\n }\n\n async getForPeer(peerId: number): Promise<[number, number] | null> {\n const cached = this._cache.get(peerId)\n if (cached) return cached\n\n const ref = await this._refs.getByPeer(peerId)\n if (ref) this._cache.set(peerId, ref)\n\n return ref\n }\n\n async delete(chatId: number, msgIds: number[]): Promise<void> {\n await this._refs.delete(chatId, msgIds)\n // it's too expensive to invalidate the cache,\n // so we just clear it completely instead\n this._cache.clear()\n }\n\n async deleteByPeer(peerId: number): Promise<void> {\n await this._refs.deleteByPeer(peerId)\n this._cache.delete(peerId)\n }\n}\n"]}
@@ -7,6 +7,7 @@ const KV_SEQ = 'updates_seq';
7
7
  const KV_CHANNEL_PREFIX = 'updates_channel:';
8
8
  // todo: move inside updates manager?
9
9
  export class UpdatesStateService extends BaseService {
10
+ _kv;
10
11
  constructor(_kv, opts) {
11
12
  super(opts);
12
13
  this._kv = _kv;
@@ -1 +1 @@
1
- {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/updates.ts"],"names":[],"mappings":"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","sourcesContent":["import { IKeyValueRepository } from '../../../storage/repository/key-value.js'\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { dataViewFromBuffer } from '../../../utils/buffer-utils.js'\n\nconst KV_PTS = 'updates_pts'\nconst KV_QTS = 'updates_qts'\nconst KV_DATE = 'updates_date'\nconst KV_SEQ = 'updates_seq'\nconst KV_CHANNEL_PREFIX = 'updates_channel:'\n\n// todo: move inside updates manager?\n\nexport class UpdatesStateService extends BaseService {\n constructor(\n readonly _kv: IKeyValueRepository,\n opts: ServiceOptions,\n ) {\n super(opts)\n }\n\n private async _getInt(key: string): Promise<number | null> {\n const val = await this._kv.get(key)\n if (!val) return null\n\n return dataViewFromBuffer(val).getInt32(0, true)\n }\n\n private async _setInt(key: string, val: number): Promise<void> {\n const buf = new Uint8Array(4)\n dataViewFromBuffer(buf).setInt32(0, val, true)\n\n await this._kv.set(key, buf)\n }\n\n async getState(): Promise<[number, number, number, number] | null> {\n const [pts, qts, date, seq] = await Promise.all([\n this._getInt(KV_PTS),\n this._getInt(KV_QTS),\n this._getInt(KV_DATE),\n this._getInt(KV_SEQ),\n ])\n\n if (pts === null || qts === null || date === null || seq === null) {\n return null\n }\n\n return [pts, qts, date, seq]\n }\n\n async setPts(pts: number): Promise<void> {\n await this._setInt(KV_PTS, pts)\n }\n\n async setQts(qts: number): Promise<void> {\n await this._setInt(KV_QTS, qts)\n }\n\n async setDate(date: number): Promise<void> {\n await this._setInt(KV_DATE, date)\n }\n\n async setSeq(seq: number): Promise<void> {\n await this._setInt(KV_SEQ, seq)\n }\n\n async getChannelPts(channelId: number): Promise<number | null> {\n const val = await this._kv.get(KV_CHANNEL_PREFIX + channelId)\n if (!val) return null\n\n return dataViewFromBuffer(val).getUint32(0, true)\n }\n\n async setChannelPts(channelId: number, pts: number): Promise<void> {\n const buf = new Uint8Array(4)\n dataViewFromBuffer(buf).setUint32(0, pts, true)\n\n await this._kv.set(KV_CHANNEL_PREFIX + channelId, buf)\n }\n\n async setManyChannelPts(cpts: Map<number, number>): Promise<void> {\n const promises: Promise<void>[] = []\n\n for (const [channelId, pts] of cpts.entries()) {\n promises.push(this.setChannelPts(channelId, pts))\n }\n\n await Promise.all(promises)\n }\n}\n"]}
1
+ {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/updates.ts"],"names":[],"mappings":"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","sourcesContent":["import { IKeyValueRepository } from '../../../storage/repository/key-value.js'\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { dataViewFromBuffer } from '../../../utils/buffer-utils.js'\n\nconst KV_PTS = 'updates_pts'\nconst KV_QTS = 'updates_qts'\nconst KV_DATE = 'updates_date'\nconst KV_SEQ = 'updates_seq'\nconst KV_CHANNEL_PREFIX = 'updates_channel:'\n\n// todo: move inside updates manager?\n\nexport class UpdatesStateService extends BaseService {\n constructor(\n readonly _kv: IKeyValueRepository,\n opts: ServiceOptions,\n ) {\n super(opts)\n }\n\n private async _getInt(key: string): Promise<number | null> {\n const val = await this._kv.get(key)\n if (!val) return null\n\n return dataViewFromBuffer(val).getInt32(0, true)\n }\n\n private async _setInt(key: string, val: number): Promise<void> {\n const buf = new Uint8Array(4)\n dataViewFromBuffer(buf).setInt32(0, val, true)\n\n await this._kv.set(key, buf)\n }\n\n async getState(): Promise<[number, number, number, number] | null> {\n const [pts, qts, date, seq] = await Promise.all([\n this._getInt(KV_PTS),\n this._getInt(KV_QTS),\n this._getInt(KV_DATE),\n this._getInt(KV_SEQ),\n ])\n\n if (pts === null || qts === null || date === null || seq === null) {\n return null\n }\n\n return [pts, qts, date, seq]\n }\n\n async setPts(pts: number): Promise<void> {\n await this._setInt(KV_PTS, pts)\n }\n\n async setQts(qts: number): Promise<void> {\n await this._setInt(KV_QTS, qts)\n }\n\n async setDate(date: number): Promise<void> {\n await this._setInt(KV_DATE, date)\n }\n\n async setSeq(seq: number): Promise<void> {\n await this._setInt(KV_SEQ, seq)\n }\n\n async getChannelPts(channelId: number): Promise<number | null> {\n const val = await this._kv.get(KV_CHANNEL_PREFIX + channelId)\n if (!val) return null\n\n return dataViewFromBuffer(val).getUint32(0, true)\n }\n\n async setChannelPts(channelId: number, pts: number): Promise<void> {\n const buf = new Uint8Array(4)\n dataViewFromBuffer(buf).setUint32(0, pts, true)\n\n await this._kv.set(KV_CHANNEL_PREFIX + channelId, buf)\n }\n\n async setManyChannelPts(cpts: Map<number, number>): Promise<void> {\n const promises: Promise<void>[] = []\n\n for (const [channelId, pts] of cpts.entries()) {\n promises.push(this.setChannelPts(channelId, pts))\n }\n\n await Promise.all(promises)\n }\n}\n"]}
@@ -11,12 +11,12 @@ interface TelegramStorageManagerOptions {
11
11
  export declare class TelegramStorageManager {
12
12
  private mt;
13
13
  private options;
14
- constructor(mt: StorageManager, options: TelegramStorageManagerOptions & TelegramStorageManagerExtraOptions);
15
14
  private provider;
16
15
  readonly updates: UpdatesStateService;
17
16
  readonly self: PublicPart<CurrentUserService>;
18
17
  readonly refMsgs: RefMessagesService;
19
18
  readonly peers: PublicPart<PeersService>;
19
+ constructor(mt: StorageManager, options: TelegramStorageManagerOptions & TelegramStorageManagerExtraOptions);
20
20
  clear(withAuthKeys?: boolean): Promise<void>;
21
21
  }
22
22
  export {};
@@ -3,14 +3,27 @@ import { PeersService } from './service/peers.js';
3
3
  import { RefMessagesService } from './service/ref-messages.js';
4
4
  import { UpdatesStateService } from './service/updates.js';
5
5
  export class TelegramStorageManager {
6
+ mt;
7
+ options;
8
+ provider;
9
+ updates;
10
+ self;
11
+ refMsgs;
12
+ peers;
6
13
  constructor(mt, options) {
7
14
  this.mt = mt;
8
15
  this.options = options;
9
16
  this.provider = this.options.provider;
10
- this.updates = new UpdatesStateService(this.provider.kv, this.mt._serviceOptions);
11
- this.self = new CurrentUserService(this.provider.kv, this.mt._serviceOptions);
12
- this.refMsgs = new RefMessagesService(this.options.refMessages ?? {}, this.provider.refMessages, this.mt._serviceOptions);
13
- this.peers = new PeersService(this.options.peers ?? {}, this.provider.peers, this.refMsgs, this.mt._serviceOptions);
17
+ const serviceOptions = {
18
+ driver: this.mt.driver,
19
+ readerMap: this.mt.options.readerMap,
20
+ writerMap: this.mt.options.writerMap,
21
+ log: this.mt.log,
22
+ };
23
+ this.updates = new UpdatesStateService(this.provider.kv, serviceOptions);
24
+ this.self = new CurrentUserService(this.provider.kv, serviceOptions);
25
+ this.refMsgs = new RefMessagesService(this.options.refMessages ?? {}, this.provider.refMessages, serviceOptions);
26
+ this.peers = new PeersService(this.options.peers ?? {}, this.provider.peers, this.refMsgs, serviceOptions);
14
27
  }
15
28
  async clear(withAuthKeys = false) {
16
29
  await this.provider.peers.deleteAll();
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/highlevel/storage/storage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAA6B,MAAM,2BAA2B,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAY1D,MAAM,OAAO,sBAAsB;IAC/B,YACY,EAAkB,EAClB,OAA2E;QAD3E,OAAE,GAAF,EAAE,CAAgB;QAClB,YAAO,GAAP,OAAO,CAAoE;QAG/E,aAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QAE/B,YAAO,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA;QAC5E,SAAI,GAAmC,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA;QACxG,YAAO,GAAG,IAAI,kBAAkB,CACrC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAC9B,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,EAAE,CAAC,eAAe,CAC1B,CAAA;QACQ,UAAK,GAA6B,IAAI,YAAY,CACvD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,EAAE,CAAC,eAAe,CAC1B,CAAA;IAhBE,CAAC;IAkBJ,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;QACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAA;QAC3C,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACrC,CAAC;CACJ","sourcesContent":["import { StorageManager } from '../../storage/storage.js'\nimport { PublicPart } from '../../types/utils.js'\nimport { ITelegramStorageProvider } from './provider.js'\nimport { CurrentUserService } from './service/current-user.js'\nimport { PeersService, PeersServiceOptions } from './service/peers.js'\nimport { RefMessagesService, RefMessagesServiceOptions } from './service/ref-messages.js'\nimport { UpdatesStateService } from './service/updates.js'\n\ninterface TelegramStorageManagerOptions {\n provider: ITelegramStorageProvider\n}\n\n/** @internal */\nexport interface TelegramStorageManagerExtraOptions {\n refMessages?: RefMessagesServiceOptions\n peers?: PeersServiceOptions\n}\n\nexport class TelegramStorageManager {\n constructor(\n private mt: StorageManager,\n private options: TelegramStorageManagerOptions & TelegramStorageManagerExtraOptions,\n ) {}\n\n private provider = this.options.provider\n\n readonly updates = new UpdatesStateService(this.provider.kv, this.mt._serviceOptions)\n readonly self: PublicPart<CurrentUserService> = new CurrentUserService(this.provider.kv, this.mt._serviceOptions)\n readonly refMsgs = new RefMessagesService(\n this.options.refMessages ?? {},\n this.provider.refMessages,\n this.mt._serviceOptions,\n )\n readonly peers: PublicPart<PeersService> = new PeersService(\n this.options.peers ?? {},\n this.provider.peers,\n this.refMsgs,\n this.mt._serviceOptions,\n )\n\n async clear(withAuthKeys = false) {\n await this.provider.peers.deleteAll()\n await this.provider.refMessages.deleteAll()\n await this.mt.clear(withAuthKeys)\n }\n}\n"]}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/highlevel/storage/storage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAA6B,MAAM,2BAA2B,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAY1D,MAAM,OAAO,sBAAsB;IASnB;IACA;IATJ,QAAQ,CAAA;IAEP,OAAO,CAAA;IACP,IAAI,CAAgC;IACpC,OAAO,CAAA;IACP,KAAK,CAA0B;IAExC,YACY,EAAkB,EAClB,OAA2E;QAD3E,OAAE,GAAF,EAAE,CAAgB;QAClB,YAAO,GAAP,OAAO,CAAoE;QAEnF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QAErC,MAAM,cAAc,GAAmB;YACnC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS;YACpC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS;YACpC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG;SACnB,CAAA;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;QACxE,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,CACjC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAC9B,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,cAAc,CACjB,CAAA;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CACzB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,IAAI,CAAC,OAAO,EACZ,cAAc,CACjB,CAAA;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;QACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAA;QAC3C,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACrC,CAAC;CACJ","sourcesContent":["import { ServiceOptions } from '../../storage/service/base.js'\nimport { StorageManager } from '../../storage/storage.js'\nimport { PublicPart } from '../../types/utils.js'\nimport { ITelegramStorageProvider } from './provider.js'\nimport { CurrentUserService } from './service/current-user.js'\nimport { PeersService, PeersServiceOptions } from './service/peers.js'\nimport { RefMessagesService, RefMessagesServiceOptions } from './service/ref-messages.js'\nimport { UpdatesStateService } from './service/updates.js'\n\ninterface TelegramStorageManagerOptions {\n provider: ITelegramStorageProvider\n}\n\n/** @internal */\nexport interface TelegramStorageManagerExtraOptions {\n refMessages?: RefMessagesServiceOptions\n peers?: PeersServiceOptions\n}\n\nexport class TelegramStorageManager {\n private provider\n\n readonly updates\n readonly self: PublicPart<CurrentUserService>\n readonly refMsgs\n readonly peers: PublicPart<PeersService>\n\n constructor(\n private mt: StorageManager,\n private options: TelegramStorageManagerOptions & TelegramStorageManagerExtraOptions,\n ) {\n this.provider = this.options.provider\n\n const serviceOptions: ServiceOptions = {\n driver: this.mt.driver,\n readerMap: this.mt.options.readerMap,\n writerMap: this.mt.options.writerMap,\n log: this.mt.log,\n }\n\n this.updates = new UpdatesStateService(this.provider.kv, serviceOptions)\n this.self = new CurrentUserService(this.provider.kv, serviceOptions)\n this.refMsgs = new RefMessagesService(\n this.options.refMessages ?? {},\n this.provider.refMessages,\n serviceOptions,\n )\n this.peers = new PeersService(\n this.options.peers ?? {},\n this.provider.peers,\n this.refMsgs,\n serviceOptions,\n )\n }\n\n async clear(withAuthKeys = false) {\n await this.provider.peers.deleteAll()\n await this.provider.refMessages.deleteAll()\n await this.mt.clear(withAuthKeys)\n }\n}\n"]}
@@ -21,6 +21,7 @@ const nextCodeMap = {
21
21
  * Information about sent confirmation code
22
22
  */
23
23
  class SentCode {
24
+ raw;
24
25
  constructor(raw) {
25
26
  this.raw = raw;
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sent-code.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/auth/sent-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,WAAW,GAAgE;IAC7E,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,MAAM;IAC/B,4BAA4B,EAAE,YAAY;IAC1C,sBAAsB,EAAE,KAAK;IAC7B,6BAA6B,EAAE,aAAa;IAC5C,4BAA4B,EAAE,OAAO;IACrC,qCAAqC,EAAE,gBAAgB;IACvD,8BAA8B,EAAE,UAAU;IAC1C,8BAA8B,EAAE,UAAU;CAC7C,CAAA;AAED,MAAM,WAAW,GAA4D;IACzE,mBAAmB,EAAE,MAAM;IAC3B,wBAAwB,EAAE,YAAY;IACtC,kBAAkB,EAAE,KAAK;IACzB,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,UAAU;CACzC,CAAA;AAmCD;;GAEG;AACH,MAAM,OAAO,QAAQ;IACjB,YAAqB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;IAAG,CAAC;IAEjD;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACxE,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;CACJ;AAED,eAAe,CAAC,QAAQ,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\n\nconst sentCodeMap: Record<tl.auth.TypeSentCodeType['_'], SentCodeDeliveryType> = {\n 'auth.sentCodeTypeApp': 'app',\n 'auth.sentCodeTypeCall': 'call',\n 'auth.sentCodeTypeFlashCall': 'flash_call',\n 'auth.sentCodeTypeSms': 'sms',\n 'auth.sentCodeTypeMissedCall': 'missed_call',\n 'auth.sentCodeTypeEmailCode': 'email',\n 'auth.sentCodeTypeSetUpEmailRequired': 'email_required',\n 'auth.sentCodeTypeFragmentSms': 'fragment',\n 'auth.sentCodeTypeFirebaseSms': 'firebase',\n}\n\nconst nextCodeMap: Record<tl.auth.TypeCodeType['_'], NextCodeDeliveryType> = {\n 'auth.codeTypeCall': 'call',\n 'auth.codeTypeFlashCall': 'flash_call',\n 'auth.codeTypeSms': 'sms',\n 'auth.codeTypeMissedCall': 'missed_call',\n 'auth.codeTypeFragmentSms': 'fragment',\n}\n\n/**\n * Type describing code delivery type.\n * - `app`: Code is delivered via Telegram account\n * - `sms`: Code is sent via SMS\n * - `call`: Code is sent via voice call\n * - `flash_call`: Code is the last 5 digits of the caller's phone number\n * - `missed_call`: Code is the last 5 digits of the caller's phone number\n * - `email`: Code is sent via Email\n * - `email_required`: Code sending via email setup is required\n * - `fragment`: Code is sent via Fragment anonymous numbers\n * - `firebase`: Code is sent via Firebase\n * - `Success`: Code is not needed, you're already logged in (only for future auth tokens)\n */\nexport type SentCodeDeliveryType =\n | 'app'\n | 'sms'\n | 'call'\n | 'flash_call'\n | 'missed_call'\n | 'email'\n | 'email_required'\n | 'fragment'\n | 'firebase'\n | 'success'\n\n/**\n * Type describing next code delivery type.\n * See {@link DeliveryType} for information on values.\n *\n * Additionally, can be `none` if no more types are available\n */\nexport type NextCodeDeliveryType = Exclude<SentCodeDeliveryType, 'app'> | 'none'\n\n/**\n * Information about sent confirmation code\n */\nexport class SentCode {\n constructor(readonly raw: tl.auth.RawSentCode) {}\n\n /**\n * Type of currently sent confirmation code\n */\n get type(): SentCodeDeliveryType {\n return sentCodeMap[this.raw.type._]\n }\n\n /**\n * Type of the confirmation code that will be sent\n * if you call {@link TelegramClient.resendCode}.\n */\n get nextType(): NextCodeDeliveryType {\n return this.raw.nextType ? nextCodeMap[this.raw.nextType._] : 'none'\n }\n\n /**\n * Confirmation code identifier used for the next authorization steps\n * (like {@link TelegramClient.signIn} and {@link TelegramClient.signUp})\n */\n get phoneCodeHash(): string {\n return this.raw.phoneCodeHash\n }\n\n /**\n * Delay in seconds to wait before calling {@link TelegramClient.resendCode}\n */\n get timeout(): number {\n return this.raw.timeout ?? 0\n }\n\n /**\n * Length of the code (0 for flash calls)\n */\n get length(): number {\n return 'length' in this.raw.type ? this.raw.type.length : 0\n }\n}\n\nmakeInspectable(SentCode)\n"]}
1
+ {"version":3,"file":"sent-code.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/auth/sent-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,WAAW,GAAgE;IAC7E,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,MAAM;IAC/B,4BAA4B,EAAE,YAAY;IAC1C,sBAAsB,EAAE,KAAK;IAC7B,6BAA6B,EAAE,aAAa;IAC5C,4BAA4B,EAAE,OAAO;IACrC,qCAAqC,EAAE,gBAAgB;IACvD,8BAA8B,EAAE,UAAU;IAC1C,8BAA8B,EAAE,UAAU;CAC7C,CAAA;AAED,MAAM,WAAW,GAA4D;IACzE,mBAAmB,EAAE,MAAM;IAC3B,wBAAwB,EAAE,YAAY;IACtC,kBAAkB,EAAE,KAAK;IACzB,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,UAAU;CACzC,CAAA;AAmCD;;GAEG;AACH,MAAM,OAAO,QAAQ;IACI;IAArB,YAAqB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;IAAG,CAAC;IAEjD;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACxE,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;CACJ;AAED,eAAe,CAAC,QAAQ,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\n\nconst sentCodeMap: Record<tl.auth.TypeSentCodeType['_'], SentCodeDeliveryType> = {\n 'auth.sentCodeTypeApp': 'app',\n 'auth.sentCodeTypeCall': 'call',\n 'auth.sentCodeTypeFlashCall': 'flash_call',\n 'auth.sentCodeTypeSms': 'sms',\n 'auth.sentCodeTypeMissedCall': 'missed_call',\n 'auth.sentCodeTypeEmailCode': 'email',\n 'auth.sentCodeTypeSetUpEmailRequired': 'email_required',\n 'auth.sentCodeTypeFragmentSms': 'fragment',\n 'auth.sentCodeTypeFirebaseSms': 'firebase',\n}\n\nconst nextCodeMap: Record<tl.auth.TypeCodeType['_'], NextCodeDeliveryType> = {\n 'auth.codeTypeCall': 'call',\n 'auth.codeTypeFlashCall': 'flash_call',\n 'auth.codeTypeSms': 'sms',\n 'auth.codeTypeMissedCall': 'missed_call',\n 'auth.codeTypeFragmentSms': 'fragment',\n}\n\n/**\n * Type describing code delivery type.\n * - `app`: Code is delivered via Telegram account\n * - `sms`: Code is sent via SMS\n * - `call`: Code is sent via voice call\n * - `flash_call`: Code is the last 5 digits of the caller's phone number\n * - `missed_call`: Code is the last 5 digits of the caller's phone number\n * - `email`: Code is sent via Email\n * - `email_required`: Code sending via email setup is required\n * - `fragment`: Code is sent via Fragment anonymous numbers\n * - `firebase`: Code is sent via Firebase\n * - `Success`: Code is not needed, you're already logged in (only for future auth tokens)\n */\nexport type SentCodeDeliveryType =\n | 'app'\n | 'sms'\n | 'call'\n | 'flash_call'\n | 'missed_call'\n | 'email'\n | 'email_required'\n | 'fragment'\n | 'firebase'\n | 'success'\n\n/**\n * Type describing next code delivery type.\n * See {@link DeliveryType} for information on values.\n *\n * Additionally, can be `none` if no more types are available\n */\nexport type NextCodeDeliveryType = Exclude<SentCodeDeliveryType, 'app'> | 'none'\n\n/**\n * Information about sent confirmation code\n */\nexport class SentCode {\n constructor(readonly raw: tl.auth.RawSentCode) {}\n\n /**\n * Type of currently sent confirmation code\n */\n get type(): SentCodeDeliveryType {\n return sentCodeMap[this.raw.type._]\n }\n\n /**\n * Type of the confirmation code that will be sent\n * if you call {@link TelegramClient.resendCode}.\n */\n get nextType(): NextCodeDeliveryType {\n return this.raw.nextType ? nextCodeMap[this.raw.nextType._] : 'none'\n }\n\n /**\n * Confirmation code identifier used for the next authorization steps\n * (like {@link TelegramClient.signIn} and {@link TelegramClient.signUp})\n */\n get phoneCodeHash(): string {\n return this.raw.phoneCodeHash\n }\n\n /**\n * Delay in seconds to wait before calling {@link TelegramClient.resendCode}\n */\n get timeout(): number {\n return this.raw.timeout ?? 0\n }\n\n /**\n * Length of the code (0 for flash calls)\n */\n get length(): number {\n return 'length' in this.raw.type ? this.raw.type.length : 0\n }\n}\n\nmakeInspectable(SentCode)\n"]}
@@ -5,6 +5,8 @@ import { User } from '../peers/user.js';
5
5
  * Game high score
6
6
  */
7
7
  class GameHighScore {
8
+ raw;
9
+ _peers;
8
10
  constructor(raw, _peers) {
9
11
  this.raw = raw;
10
12
  this._peers = _peers;
@@ -1 +1 @@
1
- {"version":3,"file":"game-high-score.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/bots/game-high-score.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC;;GAEG;AACH,MAAM,OAAO,aAAa;IACtB,YACa,GAAoB,EACpB,MAAkB;QADlB,QAAG,GAAH,GAAG,CAAiB;QACpB,WAAM,GAAN,MAAM,CAAY;IAC5B,CAAC;IAEJ;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;IACzB,CAAC;CACJ;AAED,cAAc,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACvC,eAAe,CAAC,aAAa,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { PeersIndex } from '../peers/peers-index.js'\nimport { User } from '../peers/user.js'\n\n/**\n * Game high score\n */\nexport class GameHighScore {\n constructor(\n readonly raw: tl.RawHighScore,\n readonly _peers: PeersIndex,\n ) {}\n\n /**\n * User who has scored this score\n */\n get user(): User {\n return new User(this._peers.user(this.raw.userId))\n }\n\n /**\n * Position in the records list\n */\n get position(): number {\n return this.raw.pos\n }\n\n /**\n * Score\n */\n get score(): number {\n return this.raw.score\n }\n}\n\nmemoizeGetters(GameHighScore, ['user'])\nmakeInspectable(GameHighScore)\n"]}
1
+ {"version":3,"file":"game-high-score.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/bots/game-high-score.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC;;GAEG;AACH,MAAM,OAAO,aAAa;IAET;IACA;IAFb,YACa,GAAoB,EACpB,MAAkB;QADlB,QAAG,GAAH,GAAG,CAAiB;QACpB,WAAM,GAAN,MAAM,CAAY;IAC5B,CAAC;IAEJ;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;IACzB,CAAC;CACJ;AAED,cAAc,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACvC,eAAe,CAAC,aAAa,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { PeersIndex } from '../peers/peers-index.js'\nimport { User } from '../peers/user.js'\n\n/**\n * Game high score\n */\nexport class GameHighScore {\n constructor(\n readonly raw: tl.RawHighScore,\n readonly _peers: PeersIndex,\n ) {}\n\n /**\n * User who has scored this score\n */\n get user(): User {\n return new User(this._peers.user(this.raw.userId))\n }\n\n /**\n * Position in the records list\n */\n get position(): number {\n return this.raw.pos\n }\n\n /**\n * Score\n */\n get score(): number {\n return this.raw.score\n }\n}\n\nmemoizeGetters(GameHighScore, ['user'])\nmakeInspectable(GameHighScore)\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/inline-message/factories.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAanD;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAChB,IAAe,EACf,SAAwD,EAAE;IAE1D,MAAM,GAAG,GAAG,MAA4C,CAAA;IACxD,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACjB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IAEf,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,SAAgD,EAAE;IACpE,MAAM,GAAG,GAAG,MAA6C,CAAA;IACzD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;IAElB,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,MAA2C;IAC3D,MAAM,GAAG,GAAG,MAA2C,CAAA;IACvD,GAAG,CAAC,IAAI,GAAG,KAAK,CAAA;IAEhB,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,MAA+C;IACnE,MAAM,GAAG,GAAG,MAA+C,CAAA;IAC3D,GAAG,CAAC,IAAI,GAAG,UAAU,CAAA;IAErB,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,MAA6C;IAC/D,MAAM,GAAG,GAAG,MAA6C,CAAA;IACzD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;IAElB,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,MAA4C;IAC7D,MAAM,GAAG,GAAG,MAA4C,CAAA;IACxD,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IAEjB,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAA+C;IACnE,MAAM,GAAG,GAAG,MAA+C,CAAA;IAC3D,GAAG,CAAC,IAAI,GAAG,SAAS,CAAA;IAEpB,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAA+C;IACnE,MAAM,GAAG,GAAG,MAA+C,CAAA;IAC3D,GAAG,CAAC,IAAI,GAAG,SAAS,CAAA;IAEpB,OAAO,GAAG,CAAA;AACd,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,MAAuB,EACvB,GAAuB;IAEvB,QAAQ,GAAG,CAAC,IAAI,EAAE;QACd,KAAK,MAAM,CAAC,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAEvE,OAAO;gBACH,CAAC,EAAE,2BAA2B;gBAC9B,OAAO;gBACP,QAAQ;gBACR,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;gBACtD,WAAW,EAAE,GAAG,CAAC,WAAW;aAC/B,CAAA;SACJ;QACD,KAAK,OAAO,CAAC,CAAC;YACV,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAEvE,OAAO;gBACH,CAAC,EAAE,gCAAgC;gBACnC,OAAO;gBACP,QAAQ;gBACR,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;gBACtD,WAAW,EAAE,GAAG,CAAC,WAAW;aAC/B,CAAA;SACJ;QACD,KAAK,KAAK,CAAC;QACX,KAAK,UAAU;YACX,OAAO;gBACH,CAAC,EAAE,+BAA+B;gBAClC,QAAQ,EAAE;oBACN,CAAC,EAAE,eAAe;oBAClB,GAAG,EAAE,GAAG,CAAC,QAAQ;oBACjB,IAAI,EAAE,GAAG,CAAC,SAAS;iBACtB;gBACD,gDAAgD;gBAChD,OAAO,EAAG,GAAyB,CAAC,OAAO;gBAC3C,MAAM,EAAG,GAAyB,CAAC,MAAM;gBACzC,2BAA2B,EAAG,GAAyB,CAAC,2BAA2B;gBACnF,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;aACzD,CAAA;QACL,KAAK,OAAO;YACR,OAAO;gBACH,CAAC,EAAE,iCAAiC;gBACpC,QAAQ,EAAE;oBACN,CAAC,EAAE,eAAe;oBAClB,GAAG,EAAE,GAAG,CAAC,QAAQ;oBACjB,IAAI,EAAE,GAAG,CAAC,SAAS;iBACtB;gBACD,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE;gBACpC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE;gBAC7B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;gBACjC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;aACzD,CAAA;QACL,KAAK,MAAM;YACP,OAAO;gBACH,CAAC,EAAE,2BAA2B;gBAC9B,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;aACzD,CAAA;QACL,KAAK,SAAS;YACV,OAAO;gBACH,CAAC,EAAE,mCAAmC;gBACtC,WAAW,EAAE,GAAG,CAAC,KAAK;gBACtB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;gBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;gBACtB,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;aACzD,CAAA;QACL,KAAK,SAAS,CAAC,CAAC;YACZ,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAEvE,OAAO;gBACH,CAAC,EAAE,mCAAmC;gBACtC,OAAO;gBACP,QAAQ;gBACR,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;gBACtD,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,eAAe,EAAE,GAAG,CAAC,IAAI,KAAK,OAAO;gBACrC,eAAe,EAAE,GAAG,CAAC,IAAI,KAAK,OAAO;gBACrC,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ;gBACvB,GAAG,EAAE,GAAG,CAAC,GAAG;aACf,CAAA;SACJ;QACD;YACI,WAAW,CAAC,GAAG,CAAC,CAAA;KACvB;AACL,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertNever } from '../../../../types/utils.js'\nimport { ITelegramClient } from '../../../client.types.js'\nimport { _normalizeInputText } from '../../../methods/misc/normalize-text.js'\nimport { InputText } from '../../../types/misc/entities.js'\nimport { InputMediaGeoLive } from '../../media/index.js'\nimport { BotKeyboard } from '../keyboards/index.js'\nimport {\n InputInlineMessage,\n InputInlineMessageContact,\n InputInlineMessageGame,\n InputInlineMessageGeo,\n InputInlineMessageGeoLive,\n InputInlineMessageMedia,\n InputInlineMessageText,\n InputInlineMessageVenue,\n InputInlineMessageWebpage,\n} from './types.js'\n\n/**\n * Create a text inline message\n *\n * @param text Message text\n * @param params\n */\nexport function text(\n text: InputText,\n params: Omit<InputInlineMessageText, 'type' | 'text'> = {},\n): InputInlineMessageText {\n const ret = params as tl.Mutable<InputInlineMessageText>\n ret.type = 'text'\n ret.text = text\n\n return ret\n}\n\n/**\n * Create an inline message containing\n * media from the result\n */\nexport function media(params: Omit<InputInlineMessageMedia, 'type'> = {}): InputInlineMessageMedia {\n const ret = params as tl.Mutable<InputInlineMessageMedia>\n ret.type = 'media'\n\n return ret\n}\n\n/**\n * Create an inline message containing a geolocation\n *\n * @param params Additional parameters\n */\nexport function geo(params: Omit<InputInlineMessageGeo, 'type'>): InputInlineMessageGeo {\n const ret = params as tl.Mutable<InputInlineMessageGeo>\n ret.type = 'geo'\n\n return ret\n}\n\n/**\n * Create an inline message containing a live geolocation\n *\n * @param params Additional parameters\n */\nexport function geoLive(params: Omit<InputInlineMessageGeoLive, 'type'>): InputInlineMessageGeoLive {\n const ret = params as tl.Mutable<InputInlineMessageGeoLive>\n ret.type = 'geo_live'\n\n return ret\n}\n\n/**\n * Create an inline message containing a venue\n */\nexport function venue(params: Omit<InputInlineMessageVenue, 'type'>): InputInlineMessageVenue {\n const ret = params as tl.Mutable<InputInlineMessageVenue>\n ret.type = 'venue'\n\n return ret\n}\n\n/**\n * Create an inline message containing a game\n * from the inline result\n */\nexport function game(params: Omit<InputInlineMessageGame, 'type'>): InputInlineMessageGame {\n const ret = params as tl.Mutable<InputInlineMessageGame>\n ret.type = 'game'\n\n return ret\n}\n\n/**\n * Create an inline message containing a contact\n */\nexport function contact(params: Omit<InputInlineMessageContact, 'type'>): InputInlineMessageContact {\n const ret = params as tl.Mutable<InputInlineMessageContact>\n ret.type = 'contact'\n\n return ret\n}\n\n/**\n * Create an inline message containing a webpage\n */\nexport function webpage(params: Omit<InputInlineMessageWebpage, 'type'>): InputInlineMessageWebpage {\n const ret = params as tl.Mutable<InputInlineMessageWebpage>\n ret.type = 'webpage'\n\n return ret\n}\n\n/** @internal */\nexport async function _convertToTl(\n client: ITelegramClient,\n obj: InputInlineMessage,\n): Promise<tl.TypeInputBotInlineMessage> {\n switch (obj.type) {\n case 'text': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageText',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'media': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaAuto',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'geo':\n case 'geo_live':\n return {\n _: 'inputBotInlineMessageMediaGeo',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n // fields will be `undefined` if this is a `geo`\n heading: (obj as InputMediaGeoLive).heading,\n period: (obj as InputMediaGeoLive).period,\n proximityNotificationRadius: (obj as InputMediaGeoLive).proximityNotificationRadius,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'venue':\n return {\n _: 'inputBotInlineMessageMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n title: obj.title,\n address: obj.address,\n provider: obj.source?.provider ?? '',\n venueId: obj.source?.id ?? '',\n venueType: obj.source?.type ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'game':\n return {\n _: 'inputBotInlineMessageGame',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'contact':\n return {\n _: 'inputBotInlineMessageMediaContact',\n phoneNumber: obj.phone,\n firstName: obj.firstName,\n lastName: obj.lastName ?? '',\n vcard: obj.vcard ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'webpage': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaWebPage',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n forceLargeMedia: obj.size === 'large',\n forceSmallMedia: obj.size === 'small',\n optional: !obj.required,\n url: obj.url,\n }\n }\n default:\n assertNever(obj)\n }\n}\n"]}
1
+ {"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/inline-message/factories.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertNever } from '../../../../types/utils.js'\nimport { ITelegramClient } from '../../../client.types.js'\nimport { _normalizeInputText } from '../../../methods/misc/normalize-text.js'\nimport { InputText } from '../../../types/misc/entities.js'\nimport { InputMediaGeoLive } from '../../media/index.js'\nimport { BotKeyboard } from '../keyboards/index.js'\nimport {\n InputInlineMessage,\n InputInlineMessageContact,\n InputInlineMessageGame,\n InputInlineMessageGeo,\n InputInlineMessageGeoLive,\n InputInlineMessageMedia,\n InputInlineMessageText,\n InputInlineMessageVenue,\n InputInlineMessageWebpage,\n} from './types.js'\n\n/**\n * Create a text inline message\n *\n * @param text Message text\n * @param params\n */\nexport function text(\n text: InputText,\n params: Omit<InputInlineMessageText, 'type' | 'text'> = {},\n): InputInlineMessageText {\n const ret = params as tl.Mutable<InputInlineMessageText>\n ret.type = 'text'\n ret.text = text\n\n return ret\n}\n\n/**\n * Create an inline message containing\n * media from the result\n */\nexport function media(params: Omit<InputInlineMessageMedia, 'type'> = {}): InputInlineMessageMedia {\n const ret = params as tl.Mutable<InputInlineMessageMedia>\n ret.type = 'media'\n\n return ret\n}\n\n/**\n * Create an inline message containing a geolocation\n *\n * @param params Additional parameters\n */\nexport function geo(params: Omit<InputInlineMessageGeo, 'type'>): InputInlineMessageGeo {\n const ret = params as tl.Mutable<InputInlineMessageGeo>\n ret.type = 'geo'\n\n return ret\n}\n\n/**\n * Create an inline message containing a live geolocation\n *\n * @param params Additional parameters\n */\nexport function geoLive(params: Omit<InputInlineMessageGeoLive, 'type'>): InputInlineMessageGeoLive {\n const ret = params as tl.Mutable<InputInlineMessageGeoLive>\n ret.type = 'geo_live'\n\n return ret\n}\n\n/**\n * Create an inline message containing a venue\n */\nexport function venue(params: Omit<InputInlineMessageVenue, 'type'>): InputInlineMessageVenue {\n const ret = params as tl.Mutable<InputInlineMessageVenue>\n ret.type = 'venue'\n\n return ret\n}\n\n/**\n * Create an inline message containing a game\n * from the inline result\n */\nexport function game(params: Omit<InputInlineMessageGame, 'type'>): InputInlineMessageGame {\n const ret = params as tl.Mutable<InputInlineMessageGame>\n ret.type = 'game'\n\n return ret\n}\n\n/**\n * Create an inline message containing a contact\n */\nexport function contact(params: Omit<InputInlineMessageContact, 'type'>): InputInlineMessageContact {\n const ret = params as tl.Mutable<InputInlineMessageContact>\n ret.type = 'contact'\n\n return ret\n}\n\n/**\n * Create an inline message containing a webpage\n */\nexport function webpage(params: Omit<InputInlineMessageWebpage, 'type'>): InputInlineMessageWebpage {\n const ret = params as tl.Mutable<InputInlineMessageWebpage>\n ret.type = 'webpage'\n\n return ret\n}\n\n/** @internal */\nexport async function _convertToTl(\n client: ITelegramClient,\n obj: InputInlineMessage,\n): Promise<tl.TypeInputBotInlineMessage> {\n switch (obj.type) {\n case 'text': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageText',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'media': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaAuto',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'geo':\n case 'geo_live':\n return {\n _: 'inputBotInlineMessageMediaGeo',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n // fields will be `undefined` if this is a `geo`\n heading: (obj as InputMediaGeoLive).heading,\n period: (obj as InputMediaGeoLive).period,\n proximityNotificationRadius: (obj as InputMediaGeoLive).proximityNotificationRadius,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'venue':\n return {\n _: 'inputBotInlineMessageMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n title: obj.title,\n address: obj.address,\n provider: obj.source?.provider ?? '',\n venueId: obj.source?.id ?? '',\n venueType: obj.source?.type ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'game':\n return {\n _: 'inputBotInlineMessageGame',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'contact':\n return {\n _: 'inputBotInlineMessageMediaContact',\n phoneNumber: obj.phone,\n firstName: obj.firstName,\n lastName: obj.lastName ?? '',\n vcard: obj.vcard ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'webpage': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaWebPage',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n forceLargeMedia: obj.size === 'large',\n forceSmallMedia: obj.size === 'small',\n optional: !obj.required,\n url: obj.url,\n }\n }\n default:\n assertNever(obj)\n }\n}\n"]}