@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":"normalize-input-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-file.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,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAuB,EACvB,KAAoB,EACpB,MAKC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;QACxD,MAAM,IAAI,eAAe,CAAC,+CAA+C,CAAC,CAAA;KAC7E;SAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YACpD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE;gBACtC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,GAAG,MAAM;aACZ,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAC,SAAS,CAAA;SAC5B;QACD,MAAM,IAAI,eAAe,CAAC,qDAAqD,CAAC,CAAA;KACnF;SAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,KAAK,CAAC,SAAS,CAAA;KACzB;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QAC9D,OAAO,KAAK,CAAA;KACf;SAAM;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE;YACtC,IAAI,EAAE,KAAK;YACX,GAAG,MAAM;SACZ,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,SAAS,CAAA;KAC5B;AACL,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, isUploadedFile } from '../../types/files/index.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize a {@link InputFileLike} to `InputFile`,\n * uploading it if needed.\n */\nexport async function _normalizeInputFile(\n client: ITelegramClient,\n input: InputFileLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n fileName?: string\n fileSize?: number\n fileMime?: string\n },\n): Promise<tl.TypeInputFile> {\n if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n throw new MtArgumentError(\"InputFile can't be created from an InputMedia\")\n } else if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^file:/)) {\n const uploaded = await uploadFile(client, {\n file: input.substring(5),\n ...params,\n })\n\n return uploaded.inputFile\n }\n throw new MtArgumentError(\"InputFile can't be created from an URL or a File ID\")\n } else if (isUploadedFile(input)) {\n return input.inputFile\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n return input\n } else {\n const uploaded = await uploadFile(client, {\n file: input,\n ...params,\n })\n\n return uploaded.inputFile\n }\n}\n"]}
1
+ {"version":3,"file":"normalize-input-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-file.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,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAuB,EACvB,KAAoB,EACpB,MAKC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,eAAe,CAAC,+CAA+C,CAAC,CAAA;IAC9E,CAAC;SAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE;gBACtC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,GAAG,MAAM;aACZ,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAC,SAAS,CAAA;QAC7B,CAAC;QACD,MAAM,IAAI,eAAe,CAAC,qDAAqD,CAAC,CAAA;IACpF,CAAC;SAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,SAAS,CAAA;IAC1B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAA;IAChB,CAAC;SAAM,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE;YACtC,IAAI,EAAE,KAAK;YACX,GAAG,MAAM;SACZ,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,SAAS,CAAA;IAC7B,CAAC;AACL,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, isUploadedFile } from '../../types/files/index.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize a {@link InputFileLike} to `InputFile`,\n * uploading it if needed.\n */\nexport async function _normalizeInputFile(\n client: ITelegramClient,\n input: InputFileLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n fileName?: string\n fileSize?: number\n fileMime?: string\n },\n): Promise<tl.TypeInputFile> {\n if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n throw new MtArgumentError(\"InputFile can't be created from an InputMedia\")\n } else if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^file:/)) {\n const uploaded = await uploadFile(client, {\n file: input.substring(5),\n ...params,\n })\n\n return uploaded.inputFile\n }\n throw new MtArgumentError(\"InputFile can't be created from an URL or a File ID\")\n } else if (isUploadedFile(input)) {\n return input.inputFile\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n return input\n } else {\n const uploaded = await uploadFile(client, {\n file: input,\n ...params,\n })\n\n return uploaded.inputFile\n }\n}\n"]}
@@ -5,7 +5,6 @@ import { getPlatform } from '../../../platform.js';
5
5
  import { assertTypeIs } from '../../../utils/type-assertions.js';
6
6
  import { isUploadedFile } from '../../types/files/uploaded-file.js';
7
7
  import { fileIdToInputDocument, fileIdToInputPhoto } from '../../utils/convert-file-id.js';
8
- import { extractFileName } from '../../utils/file-utils.js';
9
8
  import { normalizeDate } from '../../utils/misc-utils.js';
10
9
  import { encodeWaveform } from '../../utils/voice-utils.js';
11
10
  import { _normalizeInputText } from '../misc/normalize-text.js';
@@ -310,7 +309,7 @@ export async function _normalizeInputMedia(client, media, params = {}, uploadMed
310
309
  if (media.type !== 'voice') {
311
310
  attributes.push({
312
311
  _: 'documentAttributeFilename',
313
- fileName: media.fileName || (typeof media.file === 'string' ? extractFileName(media.file) : 'unnamed'),
312
+ fileName: media.fileName || inputFile.name,
314
313
  });
315
314
  }
316
315
  if (media.type === 'video') {
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-input-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-media.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAGnE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,MAAuB,EACvB,KAAqB,EACrB,SAGI,EAAE,EACN,WAAW,GAAG,KAAK;IAEnB,sFAAsF;IAEtF,wEAAwE;IAExE,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;QAC3B,6GAA6G;QAC7G,QAAQ,KAAK,CAAC,CAAC,EAAE;YACb,KAAK,iBAAiB;gBAClB,OAAO;oBACH,GAAG,KAAK;oBACR,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;iBAC9C,CAAA;SACR;QAED,OAAO,KAAK,CAAA;KACf;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QACxB,OAAO;YACH,CAAC,EAAE,iBAAiB;YACpB,QAAQ,EAAE;gBACN,CAAC,EAAE,eAAe;gBAClB,GAAG,EAAE,KAAK,CAAC,QAAQ;gBACnB,IAAI,EAAE,KAAK,CAAC,SAAS;aACxB;YACD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE;YACtC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE;YAC/B,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;SACtC,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QACtB,OAAO;YACH,CAAC,EAAE,oBAAoB;YACvB,QAAQ,EAAE;gBACN,CAAC,EAAE,eAAe;gBAClB,GAAG,EAAE,KAAK,CAAC,QAAQ;gBACnB,IAAI,EAAE,KAAK,CAAC,SAAS;aACxB;SACJ,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;QAC3B,OAAO;YACH,CAAC,EAAE,mBAAmB;YACtB,QAAQ,EAAE;gBACN,CAAC,EAAE,eAAe;gBAClB,GAAG,EAAE,KAAK,CAAC,QAAQ;gBACnB,IAAI,EAAE,KAAK,CAAC,SAAS;aACxB;YACD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,2BAA2B,EAAE,KAAK,CAAC,2BAA2B;SACjE,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACvB,OAAO;YACH,CAAC,EAAE,gBAAgB;YACnB,QAAQ,EAAE,KAAK,CAAC,KAAK;SACxB,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC1B,OAAO;YACH,CAAC,EAAE,mBAAmB;YACtB,WAAW,EAAE,KAAK,CAAC,KAAK;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;SAC3B,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACvB,OAAO;YACH,CAAC,EAAE,gBAAgB;YACnB,EAAE,EACE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAC5B;oBACI,CAAC,EAAE,oBAAoB;oBACvB,KAAK,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE;oBAC7B,SAAS,EAAE,KAAK,CAAC,IAAI;iBACxB,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI;SACrB,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC1B,OAAO;YACH,CAAC,EAAE,mBAAmB;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,KAAK,EACD,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAC7B;oBACI,CAAC,EAAE,kBAAkB;oBACrB,GAAG,EAAE,KAAK,CAAC,KAAK;oBAChB,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,CAAC;oBACP,UAAU,EAAE,EAAE;iBACjB,CAAC,CAAC;gBACH,KAAK,CAAC,KAAK;YACnB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,KAAK;YACrB,YAAY,EAAE;gBACV,CAAC,EAAE,UAAU;gBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC;aAC3C;YACD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;gBAChC,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjE,SAAS;SAChB,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QAChD,MAAM,OAAO,GAAwB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBACzB,OAAO;oBACH,CAAC,EAAE,YAAY;oBACf,IAAI,EAAE,GAAG;oBACT,gDAAgD;oBAChD,MAAM,EAAE,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;iBAC/C,CAAA;aACJ;YAED,OAAO,GAAG,CAAA;QACd,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,GAA6B,SAAS,CAAA;QACjD,IAAI,QAAQ,GAAuB,SAAS,CAAA;QAC5C,IAAI,gBAAgB,GAAuC,SAAS,CAAA;QAEpE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACvB,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1C,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACvB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;oBACxB,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAA;iBAC5B;gBAED,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YAEF,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAChB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;aACnF;SACJ;QAED,OAAO;YACH,CAAC,EAAE,gBAAgB;YACnB,IAAI,EAAE;gBACF,CAAC,EAAE,MAAM;gBACT,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,EAAE,EAAE,IAAI,CAAC,IAAI;gBACb,YAAY,EAAE,KAAK,CAAC,MAAM;gBAC1B,cAAc,EAAE,KAAK,CAAC,QAAQ;gBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM;gBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO;gBACP,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;aAC5C;YACD,cAAc,EAAE,OAAO;YACvB,QAAQ;YACR,gBAAgB;SACnB,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QACxB,OAAO;YACH,CAAC,EAAE,iBAAiB;YACpB,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;YAC3C,EAAE,EAAE,KAAK,CAAC,EAAE;SACf,CAAA;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC1B,OAAO;YACH,CAAC,EAAE,mBAAmB;YACtB,eAAe,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO;YACvC,eAAe,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO;YACvC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ;YACzB,GAAG,EAAE,KAAK,CAAC,GAAG;SACjB,CAAA;KACJ;IAED,IAAI,SAAS,GAAiC,SAAS,CAAA;IACvD,IAAI,KAAK,GAAiC,SAAS,CAAA;IACnD,IAAI,IAAI,GAAG,0BAA0B,CAAA;IAErC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAoB,EAAiB,EAAE;QACzD,IAAI,QAAQ,CAAA;QAEZ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YAC1B,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAA;SACzE;aAAM;YACH,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;SAC5B;QAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE;YACtC,IAAI;YACJ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,eAAe,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO;SAC1C,CAAC,CAAA;QACF,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;QAC9B,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IACxB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAA;IAE9D,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAA6B,EAAE,KAAc,EAA8B,EAAE;QAC5G,IAAI,CAAC,WAAW;YAAE,OAAO,UAAU,CAAA;QAEnC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,EAAE,sBAAsB;YACzB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,UAAU;SACpB,CAAC,CAAA;QAEF,IAAI,KAAK,EAAE;YACP,YAAY,CAAC,8CAA8C,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;YACtF,YAAY,CAAC,8CAA8C,EAAE,GAAG,CAAC,KAAM,EAAE,OAAO,CAAC,CAAA;YAEjF,OAAO;gBACH,CAAC,EAAE,iBAAiB;gBACpB,EAAE,EAAE;oBACA,CAAC,EAAE,YAAY;oBACf,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;oBAChB,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;oBAChC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa;iBACzC;gBACD,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO;aACnD,CAAA;SACJ;QACD,YAAY,CAAC,8CAA8C,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAA;QACzF,YAAY,CAAC,8CAA8C,EAAE,GAAG,CAAC,QAAS,EAAE,UAAU,CAAC,CAAA;QAEvF,OAAO;YACH,CAAC,EAAE,oBAAoB;YACvB,EAAE,EAAE;gBACA,CAAC,EAAE,eAAe;gBAClB,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACnB,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU;gBACnC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAa;aAC5C;YACD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO;SACnD,CAAA;IACL,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;IAExB,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAC1D,OAAO,mBAAmB,CACtB;gBACI,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,4BAA4B;gBACpF,GAAG,EAAE,KAAK;aACb,EACD,KAAK,CAAC,IAAI,KAAK,OAAO,CACzB,CAAA;SACJ;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC3D,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;SACnC;aAAM;YACH,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAEpF,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,OAAO,EAAE;gBAC/B,OAAO;oBACH,CAAC,EAAE,iBAAiB;oBACpB,EAAE,EAAE,kBAAkB,CAAC,MAAM,CAAC;iBACjC,CAAA;aACJ;iBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,EAAE;gBACpC,OAAO,mBAAmB,CACtB;oBACI,CAAC,EACG,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACrC,yBAAyB,CAAC,CAAC;wBAC3B,4BAA4B;oBACpC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;iBAC3B,EACD,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAC1C,CAAA;aACJ;YAED,OAAO;gBACH,CAAC,EAAE,oBAAoB;gBACvB,EAAE,EAAE,qBAAqB,CAAC,MAAM,CAAC;aACpC,CAAA;SACJ;KACJ;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;QAC/D,OAAO,KAAK,CAAA;KACf;SAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;QAC9B,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;QAC3B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;KACpB;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QAC9D,SAAS,GAAG,KAAK,CAAA;KACpB;SAAM;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;KACtB;IAED,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAEpD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QACxB,OAAO,mBAAmB,CACtB;YACI,CAAC,EAAE,yBAAyB;YAC5B,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;SACzB,EACD,IAAI,CACP,CAAA;KACJ;IAED,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;QACjC,KAAK,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;KAC7D;IAED,MAAM,UAAU,GAA+B,EAAE,CAAA;IAEjD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QACxB,UAAU,CAAC,IAAI,CAAC;YACZ,CAAC,EAAE,2BAA2B;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SACzG,CAAC,CAAA;KACL;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QACxB,UAAU,CAAC,IAAI,CAAC;YACZ,CAAC,EAAE,wBAAwB;YAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;YAC7B,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;YACnB,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;YACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,YAAY,EAAE,KAAK,CAAC,OAAO;SAC9B,CAAC,CAAA;QAEF,IAAI,KAAK,CAAC,UAAU,EAAE;YAClB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,CAAA;SACtD;KACJ;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAClD,UAAU,CAAC,IAAI,CAAC;YACZ,CAAC,EAAE,wBAAwB;YAC3B,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO;YAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;YAC7B,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvD,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC/D,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAClG,CAAC,CAAA;KACL;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC1B,UAAU,CAAC,IAAI,CAAC;YACZ,CAAC,EAAE,0BAA0B;YAC7B,UAAU,EAAE;gBACR,CAAC,EAAE,sBAAsB;aAC5B;YACD,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;SACvB,CAAC,CAAA;KACL;IAED,OAAO,mBAAmB,CACtB;QACI,CAAC,EAAE,4BAA4B;QAC/B,YAAY,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU;QACxD,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,UAAU;QACpC,IAAI,EAAE,SAAS;QACf,KAAK;QACL,QAAQ,EAAE,IAAI;QACd,UAAU;QACV,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO;KACnD,EACD,KAAK,CACR,CAAA;AACL,CAAC","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { isUploadedFile } from '../../types/files/uploaded-file.js'\nimport { UploadFileLike } from '../../types/files/utils.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { extractFileName } from '../../utils/file-utils.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { encodeWaveform } from '../../utils/voice-utils.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputFile } from './normalize-input-file.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n */\nexport async function _normalizeInputMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n } = {},\n uploadMedia = false,\n): Promise<tl.TypeInputMedia> {\n // my condolences to those poor souls who are going to maintain this (myself included)\n\n // thanks to @pacificescape for pointing out messages.uploadMedia method\n\n if (tl.isAnyInputMedia(media)) {\n // make sure the peers in the media are correctly resolved (i.e. mtcute.* ones are replaced with proper ones)\n switch (media._) {\n case 'inputMediaStory':\n return {\n ...media,\n peer: await resolvePeer(client, media.peer),\n }\n }\n\n return media\n }\n\n if (media.type === 'venue') {\n return {\n _: 'inputMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n title: media.title,\n address: media.address,\n provider: media.source?.provider ?? '',\n venueId: media.source?.id ?? '',\n venueType: media.source?.type ?? '',\n }\n }\n\n if (media.type === 'geo') {\n return {\n _: 'inputMediaGeoPoint',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n }\n }\n\n if (media.type === 'geo_live') {\n return {\n _: 'inputMediaGeoLive',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n stopped: media.stopped,\n heading: media.heading,\n period: media.period,\n proximityNotificationRadius: media.proximityNotificationRadius,\n }\n }\n\n if (media.type === 'dice') {\n return {\n _: 'inputMediaDice',\n emoticon: media.emoji,\n }\n }\n\n if (media.type === 'contact') {\n return {\n _: 'inputMediaContact',\n phoneNumber: media.phone,\n firstName: media.firstName,\n lastName: media.lastName ?? '',\n vcard: media.vcard ?? '',\n }\n }\n\n if (media.type === 'game') {\n return {\n _: 'inputMediaGame',\n id:\n typeof media.game === 'string' ?\n {\n _: 'inputGameShortName',\n botId: { _: 'inputUserSelf' },\n shortName: media.game,\n } :\n media.game,\n }\n }\n\n if (media.type === 'invoice') {\n return {\n _: 'inputMediaInvoice',\n title: media.title,\n description: media.description,\n photo:\n typeof media.photo === 'string' ?\n {\n _: 'inputWebDocument',\n url: media.photo,\n mimeType: 'image/jpeg',\n size: 0,\n attributes: [],\n } :\n media.photo,\n invoice: media.invoice,\n payload: media.payload,\n provider: media.token,\n providerData: {\n _: 'dataJSON',\n data: JSON.stringify(media.providerData),\n },\n startParam: media.startParam,\n extendedMedia: media.extendedMedia ?\n await _normalizeInputMedia(client, media.extendedMedia, params) :\n undefined,\n }\n }\n\n if (media.type === 'poll' || media.type === 'quiz') {\n const answers: tl.TypePollAnswer[] = media.answers.map((ans, idx) => {\n if (typeof ans === 'string') {\n return {\n _: 'pollAnswer',\n text: ans,\n // emulate the behaviour of most implementations\n option: new Uint8Array([48 /* '0' */ + idx]),\n }\n }\n\n return ans\n })\n\n let correct: Uint8Array[] | undefined = undefined\n let solution: string | undefined = undefined\n let solutionEntities: tl.TypeMessageEntity[] | undefined = undefined\n\n if (media.type === 'quiz') {\n let input = media.correct\n if (!Array.isArray(input)) input = [input]\n correct = input.map((it) => {\n if (typeof it === 'number') {\n return answers[it].option\n }\n\n return it\n })\n\n if (media.solution) {\n [solution, solutionEntities] = await _normalizeInputText(client, media.solution)\n }\n }\n\n return {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n closed: media.closed,\n id: Long.ZERO,\n publicVoters: media.public,\n multipleChoice: media.multiple,\n quiz: media.type === 'quiz',\n question: media.question,\n answers,\n closePeriod: media.closePeriod,\n closeDate: normalizeDate(media.closeDate),\n },\n correctAnswers: correct,\n solution,\n solutionEntities,\n }\n }\n\n if (media.type === 'story') {\n return {\n _: 'inputMediaStory',\n peer: await resolvePeer(client, media.peer),\n id: media.id,\n }\n }\n\n if (media.type === 'webpage') {\n return {\n _: 'inputMediaWebPage',\n forceLargeMedia: media.size === 'large',\n forceSmallMedia: media.size === 'small',\n optional: !media.required,\n url: media.url,\n }\n }\n\n let inputFile: tl.TypeInputFile | undefined = undefined\n let thumb: tl.TypeInputFile | undefined = undefined\n let mime = 'application/octet-stream'\n\n const upload = async (file: UploadFileLike): Promise<void> => {\n let sendMime\n\n if (media.type === 'sticker') {\n sendMime = media.isAnimated ? 'application/x-tgsticker' : 'image/webp'\n } else {\n sendMime = media.fileMime\n }\n\n const uploaded = await uploadFile(client, {\n file,\n progressCallback: params.progressCallback,\n fileName: media.fileName,\n fileMime: sendMime,\n fileSize: media.fileSize,\n requireFileSize: media.type === 'photo',\n })\n inputFile = uploaded.inputFile\n mime = uploaded.mime\n }\n\n const uploadPeer = params.uploadPeer ?? { _: 'inputPeerSelf' }\n\n const uploadMediaIfNeeded = async (inputMedia: tl.TypeInputMedia, photo: boolean): Promise<tl.TypeInputMedia> => {\n if (!uploadMedia) return inputMedia\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: uploadPeer,\n media: inputMedia,\n })\n\n if (photo) {\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaPhoto')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.photo!, 'photo')\n\n return {\n _: 'inputMediaPhoto',\n id: {\n _: 'inputPhoto',\n id: res.photo.id,\n accessHash: res.photo.accessHash,\n fileReference: res.photo.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaDocument')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.document!, 'document')\n\n return {\n _: 'inputMediaDocument',\n id: {\n _: 'inputDocument',\n id: res.document.id,\n accessHash: res.document.accessHash,\n fileReference: res.document.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n\n const input = media.file\n\n if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^https?:\\/\\//)) {\n return uploadMediaIfNeeded(\n {\n _: media.type === 'photo' ? 'inputMediaPhotoExternal' : 'inputMediaDocumentExternal',\n url: input,\n },\n media.type === 'photo',\n )\n } else if (typeof input === 'string' && input.match(/^file:/)) {\n await upload(input.substring(5))\n } else {\n const parsed = typeof input === 'string' ? parseFileId(getPlatform(), input) : input\n\n if (parsed.location._ === 'photo') {\n return {\n _: 'inputMediaPhoto',\n id: fileIdToInputPhoto(parsed),\n }\n } else if (parsed.location._ === 'web') {\n return uploadMediaIfNeeded(\n {\n _:\n parsed.type === tdFileId.FileType.Photo ?\n 'inputMediaPhotoExternal' :\n 'inputMediaDocumentExternal',\n url: parsed.location.url,\n },\n parsed.type === tdFileId.FileType.Photo,\n )\n }\n\n return {\n _: 'inputMediaDocument',\n id: fileIdToInputDocument(parsed),\n }\n }\n } else if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n return input\n } else if (isUploadedFile(input)) {\n inputFile = input.inputFile\n mime = input.mime\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n inputFile = input\n } else {\n await upload(input)\n }\n\n if (!inputFile) throw new Error('should not happen')\n\n if (media.type === 'photo') {\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedPhoto',\n file: inputFile,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.spoiler,\n },\n true,\n )\n }\n\n if ('thumb' in media && media.thumb) {\n thumb = await _normalizeInputFile(client, media.thumb, {})\n }\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (media.type !== 'voice') {\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: media.fileName || (typeof media.file === 'string' ? extractFileName(media.file) : 'unnamed'),\n })\n }\n\n if (media.type === 'video') {\n attributes.push({\n _: 'documentAttributeVideo',\n duration: media.duration || 0,\n w: media.width || 0,\n h: media.height || 0,\n supportsStreaming: media.supportsStreaming,\n roundMessage: media.isRound,\n })\n\n if (media.isAnimated) {\n attributes.push({ _: 'documentAttributeAnimated' })\n }\n }\n\n if (media.type === 'audio' || media.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: media.type === 'voice',\n duration: media.duration || 0,\n title: media.type === 'audio' ? media.title : undefined,\n performer: media.type === 'audio' ? media.performer : undefined,\n waveform: media.type === 'voice' && media.waveform ? encodeWaveform(media.waveform) : undefined,\n })\n }\n\n if (media.type === 'sticker') {\n attributes.push({\n _: 'documentAttributeSticker',\n stickerset: {\n _: 'inputStickerSetEmpty',\n },\n alt: media.alt ?? '',\n })\n }\n\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedDocument',\n nosoundVideo: media.type === 'video' && media.isAnimated,\n forceFile: media.type === 'document',\n file: inputFile,\n thumb,\n mimeType: mime,\n attributes,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n },\n false,\n )\n}\n"]}
1
+ {"version":3,"file":"normalize-input-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-media.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { isUploadedFile } from '../../types/files/uploaded-file.js'\nimport { UploadFileLike } from '../../types/files/utils.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { encodeWaveform } from '../../utils/voice-utils.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputFile } from './normalize-input-file.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n */\nexport async function _normalizeInputMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n } = {},\n uploadMedia = false,\n): Promise<tl.TypeInputMedia> {\n // my condolences to those poor souls who are going to maintain this (myself included)\n\n // thanks to @pacificescape for pointing out messages.uploadMedia method\n\n if (tl.isAnyInputMedia(media)) {\n // make sure the peers in the media are correctly resolved (i.e. mtcute.* ones are replaced with proper ones)\n switch (media._) {\n case 'inputMediaStory':\n return {\n ...media,\n peer: await resolvePeer(client, media.peer),\n }\n }\n\n return media\n }\n\n if (media.type === 'venue') {\n return {\n _: 'inputMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n title: media.title,\n address: media.address,\n provider: media.source?.provider ?? '',\n venueId: media.source?.id ?? '',\n venueType: media.source?.type ?? '',\n }\n }\n\n if (media.type === 'geo') {\n return {\n _: 'inputMediaGeoPoint',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n }\n }\n\n if (media.type === 'geo_live') {\n return {\n _: 'inputMediaGeoLive',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n stopped: media.stopped,\n heading: media.heading,\n period: media.period,\n proximityNotificationRadius: media.proximityNotificationRadius,\n }\n }\n\n if (media.type === 'dice') {\n return {\n _: 'inputMediaDice',\n emoticon: media.emoji,\n }\n }\n\n if (media.type === 'contact') {\n return {\n _: 'inputMediaContact',\n phoneNumber: media.phone,\n firstName: media.firstName,\n lastName: media.lastName ?? '',\n vcard: media.vcard ?? '',\n }\n }\n\n if (media.type === 'game') {\n return {\n _: 'inputMediaGame',\n id:\n typeof media.game === 'string' ?\n {\n _: 'inputGameShortName',\n botId: { _: 'inputUserSelf' },\n shortName: media.game,\n } :\n media.game,\n }\n }\n\n if (media.type === 'invoice') {\n return {\n _: 'inputMediaInvoice',\n title: media.title,\n description: media.description,\n photo:\n typeof media.photo === 'string' ?\n {\n _: 'inputWebDocument',\n url: media.photo,\n mimeType: 'image/jpeg',\n size: 0,\n attributes: [],\n } :\n media.photo,\n invoice: media.invoice,\n payload: media.payload,\n provider: media.token,\n providerData: {\n _: 'dataJSON',\n data: JSON.stringify(media.providerData),\n },\n startParam: media.startParam,\n extendedMedia: media.extendedMedia ?\n await _normalizeInputMedia(client, media.extendedMedia, params) :\n undefined,\n }\n }\n\n if (media.type === 'poll' || media.type === 'quiz') {\n const answers: tl.TypePollAnswer[] = media.answers.map((ans, idx) => {\n if (typeof ans === 'string') {\n return {\n _: 'pollAnswer',\n text: ans,\n // emulate the behaviour of most implementations\n option: new Uint8Array([48 /* '0' */ + idx]),\n }\n }\n\n return ans\n })\n\n let correct: Uint8Array[] | undefined = undefined\n let solution: string | undefined = undefined\n let solutionEntities: tl.TypeMessageEntity[] | undefined = undefined\n\n if (media.type === 'quiz') {\n let input = media.correct\n if (!Array.isArray(input)) input = [input]\n correct = input.map((it) => {\n if (typeof it === 'number') {\n return answers[it].option\n }\n\n return it\n })\n\n if (media.solution) {\n [solution, solutionEntities] = await _normalizeInputText(client, media.solution)\n }\n }\n\n return {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n closed: media.closed,\n id: Long.ZERO,\n publicVoters: media.public,\n multipleChoice: media.multiple,\n quiz: media.type === 'quiz',\n question: media.question,\n answers,\n closePeriod: media.closePeriod,\n closeDate: normalizeDate(media.closeDate),\n },\n correctAnswers: correct,\n solution,\n solutionEntities,\n }\n }\n\n if (media.type === 'story') {\n return {\n _: 'inputMediaStory',\n peer: await resolvePeer(client, media.peer),\n id: media.id,\n }\n }\n\n if (media.type === 'webpage') {\n return {\n _: 'inputMediaWebPage',\n forceLargeMedia: media.size === 'large',\n forceSmallMedia: media.size === 'small',\n optional: !media.required,\n url: media.url,\n }\n }\n\n let inputFile: tl.TypeInputFile | undefined = undefined\n let thumb: tl.TypeInputFile | undefined = undefined\n let mime = 'application/octet-stream'\n\n const upload = async (file: UploadFileLike): Promise<void> => {\n let sendMime\n\n if (media.type === 'sticker') {\n sendMime = media.isAnimated ? 'application/x-tgsticker' : 'image/webp'\n } else {\n sendMime = media.fileMime\n }\n\n const uploaded = await uploadFile(client, {\n file,\n progressCallback: params.progressCallback,\n fileName: media.fileName,\n fileMime: sendMime,\n fileSize: media.fileSize,\n requireFileSize: media.type === 'photo',\n })\n inputFile = uploaded.inputFile\n mime = uploaded.mime\n }\n\n const uploadPeer = params.uploadPeer ?? { _: 'inputPeerSelf' }\n\n const uploadMediaIfNeeded = async (inputMedia: tl.TypeInputMedia, photo: boolean): Promise<tl.TypeInputMedia> => {\n if (!uploadMedia) return inputMedia\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: uploadPeer,\n media: inputMedia,\n })\n\n if (photo) {\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaPhoto')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.photo!, 'photo')\n\n return {\n _: 'inputMediaPhoto',\n id: {\n _: 'inputPhoto',\n id: res.photo.id,\n accessHash: res.photo.accessHash,\n fileReference: res.photo.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaDocument')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.document!, 'document')\n\n return {\n _: 'inputMediaDocument',\n id: {\n _: 'inputDocument',\n id: res.document.id,\n accessHash: res.document.accessHash,\n fileReference: res.document.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n\n const input = media.file\n\n if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^https?:\\/\\//)) {\n return uploadMediaIfNeeded(\n {\n _: media.type === 'photo' ? 'inputMediaPhotoExternal' : 'inputMediaDocumentExternal',\n url: input,\n },\n media.type === 'photo',\n )\n } else if (typeof input === 'string' && input.match(/^file:/)) {\n await upload(input.substring(5))\n } else {\n const parsed = typeof input === 'string' ? parseFileId(getPlatform(), input) : input\n\n if (parsed.location._ === 'photo') {\n return {\n _: 'inputMediaPhoto',\n id: fileIdToInputPhoto(parsed),\n }\n } else if (parsed.location._ === 'web') {\n return uploadMediaIfNeeded(\n {\n _:\n parsed.type === tdFileId.FileType.Photo ?\n 'inputMediaPhotoExternal' :\n 'inputMediaDocumentExternal',\n url: parsed.location.url,\n },\n parsed.type === tdFileId.FileType.Photo,\n )\n }\n\n return {\n _: 'inputMediaDocument',\n id: fileIdToInputDocument(parsed),\n }\n }\n } else if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n return input\n } else if (isUploadedFile(input)) {\n inputFile = input.inputFile\n mime = input.mime\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n inputFile = input\n } else {\n await upload(input)\n }\n\n if (!inputFile) throw new Error('should not happen')\n\n if (media.type === 'photo') {\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedPhoto',\n file: inputFile,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.spoiler,\n },\n true,\n )\n }\n\n if ('thumb' in media && media.thumb) {\n thumb = await _normalizeInputFile(client, media.thumb, {})\n }\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (media.type !== 'voice') {\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: media.fileName || inputFile.name,\n })\n }\n\n if (media.type === 'video') {\n attributes.push({\n _: 'documentAttributeVideo',\n duration: media.duration || 0,\n w: media.width || 0,\n h: media.height || 0,\n supportsStreaming: media.supportsStreaming,\n roundMessage: media.isRound,\n })\n\n if (media.isAnimated) {\n attributes.push({ _: 'documentAttributeAnimated' })\n }\n }\n\n if (media.type === 'audio' || media.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: media.type === 'voice',\n duration: media.duration || 0,\n title: media.type === 'audio' ? media.title : undefined,\n performer: media.type === 'audio' ? media.performer : undefined,\n waveform: media.type === 'voice' && media.waveform ? encodeWaveform(media.waveform) : undefined,\n })\n }\n\n if (media.type === 'sticker') {\n attributes.push({\n _: 'documentAttributeSticker',\n stickerset: {\n _: 'inputStickerSetEmpty',\n },\n alt: media.alt ?? '',\n })\n }\n\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedDocument',\n nosoundVideo: media.type === 'video' && media.isAnimated,\n forceFile: media.type === 'document',\n file: inputFile,\n thumb,\n mimeType: mime,\n attributes,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n },\n false,\n )\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { getPlatform } from '../../../platform.js';
2
2
  import { MtArgumentError } from '../../../types/errors.js';
3
3
  import { randomLong } from '../../../utils/long-utils.js';
4
- import { guessFileMime } from '../../utils/file-type.js';
4
+ import { guessFileMime, MIME_TO_EXTENSION } from '../../utils/file-type.js';
5
5
  import { determinePartSize, isProbablyPlainText } from '../../utils/file-utils.js';
6
6
  import { bufferToStream, createChunkedReader, streamToBuffer } from '../../utils/stream-utils.js';
7
7
  const OVERRIDE_MIME = {
@@ -34,7 +34,7 @@ export async function uploadFile(client, params) {
34
34
  // normalize params
35
35
  let file = params.file;
36
36
  let fileSize = -1; // unknown
37
- let fileName = DEFAULT_FILE_NAME;
37
+ let fileName = params.fileName;
38
38
  let fileMime = params.fileMime;
39
39
  const platform = getPlatform();
40
40
  if (platform.normalizeFile) {
@@ -92,9 +92,6 @@ export async function uploadFile(client, params) {
92
92
  if (!(file instanceof ReadableStream)) {
93
93
  throw new MtArgumentError('Could not convert input `file` to stream!');
94
94
  }
95
- // override file name and mime (if any)
96
- if (params.fileName)
97
- fileName = params.fileName;
98
95
  // set file size if not automatically inferred
99
96
  if (fileSize === -1 && params.fileSize)
100
97
  fileSize = params.fileSize;
@@ -129,8 +126,6 @@ export async function uploadFile(client, params) {
129
126
  const connectionPoolSize = Math.min(await client.getPoolSize(connectionKind), partCount);
130
127
  const requestsPerConnection = params.requestsPerConnection ?? REQUESTS_PER_CONNECTION;
131
128
  client.log.debug('uploading %d bytes file in %d chunks, each %d bytes in %s connection pool of size %d', fileSize, partCount, partSize, connectionKind, connectionPoolSize);
132
- // why is the file id generated by the client?
133
- // isn't the server supposed to generate it and handle collisions?
134
129
  const fileId = randomLong();
135
130
  const stream = file;
136
131
  let pos = 0;
@@ -197,6 +192,12 @@ export async function uploadFile(client, params) {
197
192
  if (partCount !== -1 && poolSize > partCount)
198
193
  poolSize = partCount;
199
194
  await Promise.all(Array.from({ length: poolSize }, uploadNextPart));
195
+ if (fileName === undefined) {
196
+ // infer file extension from mime type. for some media types,
197
+ // telegram requires us to specify the file extension
198
+ const ext = MIME_TO_EXTENSION[fileMime];
199
+ fileName = ext ? `${DEFAULT_FILE_NAME}.${ext}` : DEFAULT_FILE_NAME;
200
+ }
200
201
  let inputFile;
201
202
  if (isBig) {
202
203
  inputFile = {
@@ -1 +1 @@
1
- {"version":3,"file":"upload-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-file.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { UploadedFile, UploadFileLike } from '../../types/index.js'\nimport { guessFileMime } from '../../utils/file-type.js'\nimport { determinePartSize, isProbablyPlainText } from '../../utils/file-utils.js'\nimport { bufferToStream, createChunkedReader, streamToBuffer } from '../../utils/stream-utils.js'\n\nconst OVERRIDE_MIME: Record<string, string> = {\n // tg doesn't interpret `audio/opus` files as voice messages for some reason\n 'audio/opus': 'audio/ogg',\n}\n\n// small files (less than 128 kb) are uploaded using the current connection and not the \"upload\" pool\nconst SMALL_FILE_MAX_SIZE = 131072\nconst BIG_FILE_MIN_SIZE = 10485760 // files >10 MB are considered \"big\"\nconst DEFAULT_FILE_NAME = 'unnamed'\nconst REQUESTS_PER_CONNECTION = 3\nconst MAX_PART_COUNT = 4000 // 512 kb * 4000 = 2000 MiB\nconst MAX_PART_COUNT_PREMIUM = 8000 // 512 kb * 8000 = 4000 MiB\n\n// platform-specific\nconst HAS_FILE = typeof File !== 'undefined'\nconst HAS_RESPONSE = typeof Response !== 'undefined'\nconst HAS_URL = typeof URL !== 'undefined'\nconst HAS_BLOB = typeof Blob !== 'undefined'\n\n// @available=both\n/**\n * Upload a file to Telegram servers, without actually\n * sending a message anywhere. Useful when an `InputFile` is required.\n *\n * This method is quite low-level, and you should use other\n * methods like {@link sendMedia} that handle this under the hood.\n *\n * @param params Upload parameters\n */\nexport async function uploadFile(\n client: ITelegramClient,\n params: {\n /**\n * Upload file source.\n */\n file: UploadFileLike\n\n /**\n * File name for the uploaded file. Is usually inferred from path,\n * but should be provided for files sent as `Buffer` or stream.\n *\n * When file name can't be inferred, it falls back to \"unnamed\"\n */\n fileName?: string\n\n /**\n * Total file size. Automatically inferred for Buffer, File and local files.\n */\n fileSize?: number\n\n /**\n * If the file size is unknown, you can provide an estimate,\n * which will be used to determine appropriate part size.\n */\n estimatedSize?: number\n\n /**\n * File MIME type. By default is automatically inferred from magic number\n * If MIME can't be inferred, it defaults to `application/octet-stream`\n */\n fileMime?: string\n\n /**\n * Upload part size (in KB).\n *\n * By default, automatically selected by file size.\n * Must not be bigger than 512 and must not be a fraction.\n */\n partSize?: number\n\n /**\n * Number of parts to be sent in parallel per connection.\n */\n requestsPerConnection?: number\n\n /**\n * Function that will be called after some part has been uploaded.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size, if known\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * When using `inputMediaUploadedPhoto` (e.g. when sending an uploaded photo) require\n * the file size to be known beforehand.\n *\n * In case this is set to `true`, a stream is passed as `file` and the file size is unknown,\n * the stream will be buffered in memory and the file size will be inferred from the buffer.\n */\n requireFileSize?: boolean\n },\n): Promise<UploadedFile> {\n // normalize params\n let file = params.file\n let fileSize = -1 // unknown\n let fileName = DEFAULT_FILE_NAME\n let fileMime = params.fileMime\n\n const platform = getPlatform()\n\n if (platform.normalizeFile) {\n const res = await platform.normalizeFile(file)\n\n if (res?.file) {\n file = res.file\n if (res.fileSize) fileSize = res.fileSize\n if (res.fileName) fileName = res.fileName\n }\n }\n\n if (ArrayBuffer.isView(file)) {\n fileSize = file.length\n file = bufferToStream(file)\n }\n\n if (HAS_FILE && file instanceof File) {\n fileName = file.name\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_URL && file instanceof URL) {\n file = await fetch(file)\n }\n\n if (HAS_BLOB && file instanceof Blob) {\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_RESPONSE && file instanceof Response) {\n const length = parseInt(file.headers.get('content-length') || '0')\n if (!isNaN(length) && length) fileSize = length\n\n fileMime = file.headers.get('content-type')?.split(';')[0]\n\n const disposition = file.headers.get('content-disposition')\n\n if (disposition) {\n const idx = disposition.indexOf('filename=')\n\n if (idx > -1) {\n const raw = disposition.slice(idx + 9).split(';')[0]\n fileName = JSON.parse(raw) as string\n }\n }\n\n if (fileName === DEFAULT_FILE_NAME) {\n // try to infer from url\n const url = new URL(file.url)\n const name = url.pathname.split('/').pop()\n\n if (name && name.includes('.')) {\n fileName = name\n }\n }\n\n if (!file.body) {\n throw new MtArgumentError('Fetch response contains `null` body')\n }\n\n file = file.body\n }\n\n if (!(file instanceof ReadableStream)) {\n throw new MtArgumentError('Could not convert input `file` to stream!')\n }\n\n // override file name and mime (if any)\n if (params.fileName) fileName = params.fileName\n\n // set file size if not automatically inferred\n if (fileSize === -1 && params.fileSize) fileSize = params.fileSize\n\n if (fileSize === -1 && params.requireFileSize) {\n // buffer the entire stream in memory, then convert it back to stream (bruh)\n const buffer = await streamToBuffer(file)\n fileSize = buffer.length\n file = bufferToStream(buffer)\n }\n\n let partSizeKb = params.partSize\n\n if (!partSizeKb) {\n if (fileSize === -1) {\n partSizeKb = params.estimatedSize ? determinePartSize(params.estimatedSize) : 64\n } else {\n partSizeKb = determinePartSize(fileSize)\n }\n }\n\n if (partSizeKb > 512) {\n throw new MtArgumentError(`Invalid part size: ${partSizeKb}KB`)\n }\n const partSize = partSizeKb * 1024\n\n let partCount = fileSize === -1 ? -1 : ~~((fileSize + partSize - 1) / partSize)\n const maxPartCount = client.storage.self.getCached()?.isPremium ? MAX_PART_COUNT_PREMIUM : MAX_PART_COUNT\n\n if (partCount > maxPartCount) {\n throw new MtArgumentError(`File is too large (max ${maxPartCount} parts, got ${partCount})`)\n }\n\n const isBig = fileSize === -1 || fileSize > BIG_FILE_MIN_SIZE\n const isSmall = fileSize !== -1 && fileSize < SMALL_FILE_MAX_SIZE\n const connectionKind = isSmall ? 'main' : 'upload'\n // streamed uploads must be serialized, otherwise we'll get FILE_PART_SIZE_INVALID\n const connectionPoolSize = Math.min(await client.getPoolSize(connectionKind), partCount)\n const requestsPerConnection = params.requestsPerConnection ?? REQUESTS_PER_CONNECTION\n\n client.log.debug(\n 'uploading %d bytes file in %d chunks, each %d bytes in %s connection pool of size %d',\n fileSize,\n partCount,\n partSize,\n connectionKind,\n connectionPoolSize,\n )\n\n // why is the file id generated by the client?\n // isn't the server supposed to generate it and handle collisions?\n const fileId = randomLong()\n const stream = file\n\n let pos = 0\n let idx = 0\n const reader = createChunkedReader(stream, partSize)\n\n const uploadNextPart = async (): Promise<void> => {\n const thisIdx = idx++\n\n let part = await reader.read()\n\n if (!part && fileSize !== -1) {\n throw new MtArgumentError(`Unexpected EOS (there were only ${idx - 1} parts, but expected ${partCount})`)\n }\n\n if (fileSize === -1 && (reader.ended() || !part)) {\n fileSize = pos + (part?.length ?? 0)\n partCount = ~~((fileSize + partSize - 1) / partSize)\n if (!part) part = new Uint8Array(0)\n client.log.debug('readable ended, file size = %d, part count = %d', fileSize, partCount)\n }\n\n if (!ArrayBuffer.isView(part)) {\n throw new MtArgumentError(`Part ${thisIdx} was not a Uint8Array!`)\n }\n if (part.length > partSize) {\n throw new MtArgumentError(`Part ${thisIdx} had invalid size (expected ${partSize}, got ${part.length})`)\n }\n\n if (thisIdx === 0 && fileMime === undefined) {\n const mime = guessFileMime(part)\n\n if (mime) {\n fileMime = mime\n } else {\n // either plain text or random binary gibberish\n // make an assumption based on the first 8 bytes\n // if all 8 bytes are printable ASCII characters,\n // the entire file is probably plain text\n const isPlainText = isProbablyPlainText(part.slice(0, 8))\n fileMime = isPlainText ? 'text/plain' : 'application/octet-stream'\n }\n }\n\n // why\n const request = isBig ?\n ({\n _: 'upload.saveBigFilePart',\n fileId,\n filePart: thisIdx,\n fileTotalParts: partCount,\n bytes: part,\n } satisfies tl.upload.RawSaveBigFilePartRequest) :\n ({\n _: 'upload.saveFilePart',\n fileId,\n filePart: thisIdx,\n bytes: part,\n } satisfies tl.upload.RawSaveFilePartRequest)\n\n const result = await client.call(request, { kind: connectionKind })\n if (!result) throw new Error(`Failed to upload part ${idx}`)\n\n pos += part.length\n\n params.progressCallback?.(pos, fileSize)\n\n if (idx === partCount) return\n\n return uploadNextPart()\n }\n\n let poolSize = partCount === -1 ? 1 : connectionPoolSize * requestsPerConnection\n if (partCount !== -1 && poolSize > partCount) poolSize = partCount\n\n await Promise.all(Array.from({ length: poolSize }, uploadNextPart))\n\n let inputFile: tl.TypeInputFile\n\n if (isBig) {\n inputFile = {\n _: 'inputFileBig',\n id: fileId,\n parts: partCount,\n name: fileName,\n }\n } else {\n inputFile = {\n _: 'inputFile',\n id: fileId,\n parts: partCount,\n name: fileName,\n md5Checksum: '', // tdlib doesn't do this, why should we?\n }\n }\n\n if (fileMime! in OVERRIDE_MIME) fileMime = OVERRIDE_MIME[fileMime!]\n\n return {\n inputFile,\n size: fileSize,\n mime: fileMime!,\n }\n}\n"]}
1
+ {"version":3,"file":"upload-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-file.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { UploadedFile, UploadFileLike } from '../../types/index.js'\nimport { guessFileMime, MIME_TO_EXTENSION } from '../../utils/file-type.js'\nimport { determinePartSize, isProbablyPlainText } from '../../utils/file-utils.js'\nimport { bufferToStream, createChunkedReader, streamToBuffer } from '../../utils/stream-utils.js'\n\nconst OVERRIDE_MIME: Record<string, string> = {\n // tg doesn't interpret `audio/opus` files as voice messages for some reason\n 'audio/opus': 'audio/ogg',\n}\n\n// small files (less than 128 kb) are uploaded using the current connection and not the \"upload\" pool\nconst SMALL_FILE_MAX_SIZE = 131072\nconst BIG_FILE_MIN_SIZE = 10485760 // files >10 MB are considered \"big\"\nconst DEFAULT_FILE_NAME = 'unnamed'\nconst REQUESTS_PER_CONNECTION = 3\nconst MAX_PART_COUNT = 4000 // 512 kb * 4000 = 2000 MiB\nconst MAX_PART_COUNT_PREMIUM = 8000 // 512 kb * 8000 = 4000 MiB\n\n// platform-specific\nconst HAS_FILE = typeof File !== 'undefined'\nconst HAS_RESPONSE = typeof Response !== 'undefined'\nconst HAS_URL = typeof URL !== 'undefined'\nconst HAS_BLOB = typeof Blob !== 'undefined'\n\n// @available=both\n/**\n * Upload a file to Telegram servers, without actually\n * sending a message anywhere. Useful when an `InputFile` is required.\n *\n * This method is quite low-level, and you should use other\n * methods like {@link sendMedia} that handle this under the hood.\n *\n * @param params Upload parameters\n */\nexport async function uploadFile(\n client: ITelegramClient,\n params: {\n /**\n * Upload file source.\n */\n file: UploadFileLike\n\n /**\n * File name for the uploaded file. Is usually inferred from path,\n * but should be provided for files sent as `Buffer` or stream.\n *\n * When file name can't be inferred, it falls back to \"unnamed\"\n */\n fileName?: string\n\n /**\n * Total file size. Automatically inferred for Buffer, File and local files.\n */\n fileSize?: number\n\n /**\n * If the file size is unknown, you can provide an estimate,\n * which will be used to determine appropriate part size.\n */\n estimatedSize?: number\n\n /**\n * File MIME type. By default is automatically inferred from magic number\n * If MIME can't be inferred, it defaults to `application/octet-stream`\n */\n fileMime?: string\n\n /**\n * Upload part size (in KB).\n *\n * By default, automatically selected by file size.\n * Must not be bigger than 512 and must not be a fraction.\n */\n partSize?: number\n\n /**\n * Number of parts to be sent in parallel per connection.\n */\n requestsPerConnection?: number\n\n /**\n * Function that will be called after some part has been uploaded.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size, if known\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * When using `inputMediaUploadedPhoto` (e.g. when sending an uploaded photo) require\n * the file size to be known beforehand.\n *\n * In case this is set to `true`, a stream is passed as `file` and the file size is unknown,\n * the stream will be buffered in memory and the file size will be inferred from the buffer.\n */\n requireFileSize?: boolean\n },\n): Promise<UploadedFile> {\n // normalize params\n let file = params.file\n let fileSize = -1 // unknown\n let fileName = params.fileName\n let fileMime = params.fileMime\n\n const platform = getPlatform()\n\n if (platform.normalizeFile) {\n const res = await platform.normalizeFile(file)\n\n if (res?.file) {\n file = res.file\n if (res.fileSize) fileSize = res.fileSize\n if (res.fileName) fileName = res.fileName\n }\n }\n\n if (ArrayBuffer.isView(file)) {\n fileSize = file.length\n file = bufferToStream(file)\n }\n\n if (HAS_FILE && file instanceof File) {\n fileName = file.name\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_URL && file instanceof URL) {\n file = await fetch(file)\n }\n\n if (HAS_BLOB && file instanceof Blob) {\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_RESPONSE && file instanceof Response) {\n const length = parseInt(file.headers.get('content-length') || '0')\n if (!isNaN(length) && length) fileSize = length\n\n fileMime = file.headers.get('content-type')?.split(';')[0]\n\n const disposition = file.headers.get('content-disposition')\n\n if (disposition) {\n const idx = disposition.indexOf('filename=')\n\n if (idx > -1) {\n const raw = disposition.slice(idx + 9).split(';')[0]\n fileName = JSON.parse(raw) as string\n }\n }\n\n if (fileName === DEFAULT_FILE_NAME) {\n // try to infer from url\n const url = new URL(file.url)\n const name = url.pathname.split('/').pop()\n\n if (name && name.includes('.')) {\n fileName = name\n }\n }\n\n if (!file.body) {\n throw new MtArgumentError('Fetch response contains `null` body')\n }\n\n file = file.body\n }\n\n if (!(file instanceof ReadableStream)) {\n throw new MtArgumentError('Could not convert input `file` to stream!')\n }\n\n // set file size if not automatically inferred\n if (fileSize === -1 && params.fileSize) fileSize = params.fileSize\n\n if (fileSize === -1 && params.requireFileSize) {\n // buffer the entire stream in memory, then convert it back to stream (bruh)\n const buffer = await streamToBuffer(file)\n fileSize = buffer.length\n file = bufferToStream(buffer)\n }\n\n let partSizeKb = params.partSize\n\n if (!partSizeKb) {\n if (fileSize === -1) {\n partSizeKb = params.estimatedSize ? determinePartSize(params.estimatedSize) : 64\n } else {\n partSizeKb = determinePartSize(fileSize)\n }\n }\n\n if (partSizeKb > 512) {\n throw new MtArgumentError(`Invalid part size: ${partSizeKb}KB`)\n }\n const partSize = partSizeKb * 1024\n\n let partCount = fileSize === -1 ? -1 : ~~((fileSize + partSize - 1) / partSize)\n const maxPartCount = client.storage.self.getCached()?.isPremium ? MAX_PART_COUNT_PREMIUM : MAX_PART_COUNT\n\n if (partCount > maxPartCount) {\n throw new MtArgumentError(`File is too large (max ${maxPartCount} parts, got ${partCount})`)\n }\n\n const isBig = fileSize === -1 || fileSize > BIG_FILE_MIN_SIZE\n const isSmall = fileSize !== -1 && fileSize < SMALL_FILE_MAX_SIZE\n const connectionKind = isSmall ? 'main' : 'upload'\n // streamed uploads must be serialized, otherwise we'll get FILE_PART_SIZE_INVALID\n const connectionPoolSize = Math.min(await client.getPoolSize(connectionKind), partCount)\n const requestsPerConnection = params.requestsPerConnection ?? REQUESTS_PER_CONNECTION\n\n client.log.debug(\n 'uploading %d bytes file in %d chunks, each %d bytes in %s connection pool of size %d',\n fileSize,\n partCount,\n partSize,\n connectionKind,\n connectionPoolSize,\n )\n\n const fileId = randomLong()\n const stream = file\n\n let pos = 0\n let idx = 0\n const reader = createChunkedReader(stream, partSize)\n\n const uploadNextPart = async (): Promise<void> => {\n const thisIdx = idx++\n\n let part = await reader.read()\n\n if (!part && fileSize !== -1) {\n throw new MtArgumentError(`Unexpected EOS (there were only ${idx - 1} parts, but expected ${partCount})`)\n }\n\n if (fileSize === -1 && (reader.ended() || !part)) {\n fileSize = pos + (part?.length ?? 0)\n partCount = ~~((fileSize + partSize - 1) / partSize)\n if (!part) part = new Uint8Array(0)\n client.log.debug('readable ended, file size = %d, part count = %d', fileSize, partCount)\n }\n\n if (!ArrayBuffer.isView(part)) {\n throw new MtArgumentError(`Part ${thisIdx} was not a Uint8Array!`)\n }\n if (part.length > partSize) {\n throw new MtArgumentError(`Part ${thisIdx} had invalid size (expected ${partSize}, got ${part.length})`)\n }\n\n if (thisIdx === 0 && fileMime === undefined) {\n const mime = guessFileMime(part)\n\n if (mime) {\n fileMime = mime\n } else {\n // either plain text or random binary gibberish\n // make an assumption based on the first 8 bytes\n // if all 8 bytes are printable ASCII characters,\n // the entire file is probably plain text\n const isPlainText = isProbablyPlainText(part.slice(0, 8))\n fileMime = isPlainText ? 'text/plain' : 'application/octet-stream'\n }\n }\n\n // why\n const request = isBig ?\n ({\n _: 'upload.saveBigFilePart',\n fileId,\n filePart: thisIdx,\n fileTotalParts: partCount,\n bytes: part,\n } satisfies tl.upload.RawSaveBigFilePartRequest) :\n ({\n _: 'upload.saveFilePart',\n fileId,\n filePart: thisIdx,\n bytes: part,\n } satisfies tl.upload.RawSaveFilePartRequest)\n\n const result = await client.call(request, { kind: connectionKind })\n if (!result) throw new Error(`Failed to upload part ${idx}`)\n\n pos += part.length\n\n params.progressCallback?.(pos, fileSize)\n\n if (idx === partCount) return\n\n return uploadNextPart()\n }\n\n let poolSize = partCount === -1 ? 1 : connectionPoolSize * requestsPerConnection\n if (partCount !== -1 && poolSize > partCount) poolSize = partCount\n\n await Promise.all(Array.from({ length: poolSize }, uploadNextPart))\n\n if (fileName === undefined) {\n // infer file extension from mime type. for some media types,\n // telegram requires us to specify the file extension\n const ext = MIME_TO_EXTENSION[fileMime!]\n fileName = ext ? `${DEFAULT_FILE_NAME}.${ext}` : DEFAULT_FILE_NAME\n }\n\n let inputFile: tl.TypeInputFile\n\n if (isBig) {\n inputFile = {\n _: 'inputFileBig',\n id: fileId,\n parts: partCount,\n name: fileName,\n }\n } else {\n inputFile = {\n _: 'inputFile',\n id: fileId,\n parts: partCount,\n name: fileName,\n md5Checksum: '', // tdlib doesn't do this, why should we?\n }\n }\n\n if (fileMime! in OVERRIDE_MIME) fileMime = OVERRIDE_MIME[fileMime!]\n\n return {\n inputFile,\n size: fileSize,\n mime: fileMime!,\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"upload-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAEjF,OAAO,EAA+C,KAAK,EAAe,MAAM,sBAAsB,CAAA;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,KAAqB,EACrB,SAeI,EAAE;IAEN,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAE1E,QAAQ,SAAS,CAAC,CAAC,EAAE;QACjB,KAAK,iBAAiB,CAAC;QACvB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB,CAAC;QACzB,KAAK,iBAAiB,CAAC;QACvB,KAAK,gBAAgB,CAAC;QACtB,KAAK,mBAAmB,CAAC;QACzB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACjB,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAA;KAChE;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,sBAAsB;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC;gBACI,CAAC,EAAE,eAAe;aACrB;QACL,KAAK,EAAE,SAAS;KACnB,CAAC,CAAA;IAEF,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;IAExD,QAAQ,SAAS,CAAC,CAAC,EAAE;QACjB,KAAK,yBAAyB,CAAC;QAC/B,KAAK,iBAAiB,CAAC;QACvB,KAAK,yBAAyB;YAC1B,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;YACrD,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,KAAM,EAAE,OAAO,CAAC,CAAA;YAEhD,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC/B,KAAK,4BAA4B,CAAC;QAClC,KAAK,oBAAoB,CAAC;QAC1B,KAAK,4BAA4B;YAC7B,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAA;YACxD,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,QAAS,EAAE,UAAU,CAAC,CAAA;YAEtD,2BAA2B;YAC3B,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAQ,CAAA;QAClD,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB;YACpB,MAAM,IAAI,eAAe,CAAC,eAAe,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAA;QAC9E;YACI,WAAW,CAAC,SAAS,CAAC,CAAA;KAC7B;AACL,CAAC","sourcesContent":["import { MtArgumentError } from '../../../types/errors.js'\nimport { assertNever } from '../../../types/utils.js'\nimport { assertTypeIs, assertTypeIsNot } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputMediaLike, InputPeerLike, MessageMedia, Photo, RawDocument } from '../../types/index.js'\nimport { parseDocument } from '../../types/media/document-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputMedia } from './normalize-input-media.js'\n\n/**\n * Upload a media to Telegram servers, without actually\n * sending a message anywhere. Useful when File ID is needed.\n *\n * The difference with {@link uploadFile} is that\n * the returned object will act like a message media\n * and contain fields like File ID.\n *\n * @param media Media to upload\n * @param params Upload parameters\n */\nexport async function uploadMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n /**\n * Peer to associate this media with.\n *\n * @default `self`\n */\n peer?: InputPeerLike\n\n /**\n * Upload progress callback\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n } = {},\n): Promise<Extract<MessageMedia, Photo | RawDocument>> {\n const normMedia = await _normalizeInputMedia(client, media, params, false)\n\n switch (normMedia._) {\n case 'inputMediaEmpty':\n case 'inputMediaGeoPoint':\n case 'inputMediaGeoLive':\n case 'inputMediaContact':\n case 'inputMediaVenue':\n case 'inputMediaGame':\n case 'inputMediaInvoice':\n case 'inputMediaPoll':\n case 'inputMediaDice':\n throw new MtArgumentError(\"This media can't be uploaded\")\n }\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: params.peer ?\n await resolvePeer(client, params.peer) :\n {\n _: 'inputPeerSelf',\n },\n media: normMedia,\n })\n\n assertTypeIsNot('uploadMedia', res, 'messageMediaEmpty')\n\n switch (normMedia._) {\n case 'inputMediaUploadedPhoto':\n case 'inputMediaPhoto':\n case 'inputMediaPhotoExternal':\n assertTypeIs('uploadMedia', res, 'messageMediaPhoto')\n assertTypeIs('uploadMedia', res.photo!, 'photo')\n\n return new Photo(res.photo)\n case 'inputMediaUploadedDocument':\n case 'inputMediaDocument':\n case 'inputMediaDocumentExternal':\n assertTypeIs('uploadMedia', res, 'messageMediaDocument')\n assertTypeIs('uploadMedia', res.document!, 'document')\n\n // eslint-disable-next-line\n return parseDocument(res.document, res) as any\n case 'inputMediaStory':\n case 'inputMediaWebPage':\n throw new MtArgumentError(`This media (${normMedia._}) can't be uploaded`)\n default:\n assertNever(normMedia)\n }\n}\n"]}
1
+ {"version":3,"file":"upload-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAEjF,OAAO,EAA+C,KAAK,EAAe,MAAM,sBAAsB,CAAA;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,KAAqB,EACrB,SAeI,EAAE;IAEN,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAE1E,QAAQ,SAAS,CAAC,CAAC,EAAE,CAAC;QAClB,KAAK,iBAAiB,CAAC;QACvB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB,CAAC;QACzB,KAAK,iBAAiB,CAAC;QACvB,KAAK,gBAAgB,CAAC;QACtB,KAAK,mBAAmB,CAAC;QACzB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACjB,MAAM,IAAI,eAAe,CAAC,8BAA8B,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,sBAAsB;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC;gBACI,CAAC,EAAE,eAAe;aACrB;QACL,KAAK,EAAE,SAAS;KACnB,CAAC,CAAA;IAEF,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;IAExD,QAAQ,SAAS,CAAC,CAAC,EAAE,CAAC;QAClB,KAAK,yBAAyB,CAAC;QAC/B,KAAK,iBAAiB,CAAC;QACvB,KAAK,yBAAyB;YAC1B,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;YACrD,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,KAAM,EAAE,OAAO,CAAC,CAAA;YAEhD,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC/B,KAAK,4BAA4B,CAAC;QAClC,KAAK,oBAAoB,CAAC;QAC1B,KAAK,4BAA4B;YAC7B,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAA;YACxD,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,QAAS,EAAE,UAAU,CAAC,CAAA;YAEtD,2BAA2B;YAC3B,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAQ,CAAA;QAClD,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB;YACpB,MAAM,IAAI,eAAe,CAAC,eAAe,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAA;QAC9E;YACI,WAAW,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;AACL,CAAC","sourcesContent":["import { MtArgumentError } from '../../../types/errors.js'\nimport { assertNever } from '../../../types/utils.js'\nimport { assertTypeIs, assertTypeIsNot } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputMediaLike, InputPeerLike, MessageMedia, Photo, RawDocument } from '../../types/index.js'\nimport { parseDocument } from '../../types/media/document-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputMedia } from './normalize-input-media.js'\n\n/**\n * Upload a media to Telegram servers, without actually\n * sending a message anywhere. Useful when File ID is needed.\n *\n * The difference with {@link uploadFile} is that\n * the returned object will act like a message media\n * and contain fields like File ID.\n *\n * @param media Media to upload\n * @param params Upload parameters\n */\nexport async function uploadMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n /**\n * Peer to associate this media with.\n *\n * @default `self`\n */\n peer?: InputPeerLike\n\n /**\n * Upload progress callback\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n } = {},\n): Promise<Extract<MessageMedia, Photo | RawDocument>> {\n const normMedia = await _normalizeInputMedia(client, media, params, false)\n\n switch (normMedia._) {\n case 'inputMediaEmpty':\n case 'inputMediaGeoPoint':\n case 'inputMediaGeoLive':\n case 'inputMediaContact':\n case 'inputMediaVenue':\n case 'inputMediaGame':\n case 'inputMediaInvoice':\n case 'inputMediaPoll':\n case 'inputMediaDice':\n throw new MtArgumentError(\"This media can't be uploaded\")\n }\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: params.peer ?\n await resolvePeer(client, params.peer) :\n {\n _: 'inputPeerSelf',\n },\n media: normMedia,\n })\n\n assertTypeIsNot('uploadMedia', res, 'messageMediaEmpty')\n\n switch (normMedia._) {\n case 'inputMediaUploadedPhoto':\n case 'inputMediaPhoto':\n case 'inputMediaPhotoExternal':\n assertTypeIs('uploadMedia', res, 'messageMediaPhoto')\n assertTypeIs('uploadMedia', res.photo!, 'photo')\n\n return new Photo(res.photo)\n case 'inputMediaUploadedDocument':\n case 'inputMediaDocument':\n case 'inputMediaDocumentExternal':\n assertTypeIs('uploadMedia', res, 'messageMediaDocument')\n assertTypeIs('uploadMedia', res.document!, 'document')\n\n // eslint-disable-next-line\n return parseDocument(res.document, res) as any\n case 'inputMediaStory':\n case 'inputMediaWebPage':\n throw new MtArgumentError(`This media (${normMedia._}) can't be uploaded`)\n default:\n assertNever(normMedia)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"iter-forum-topics.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/forums/iter-forum-topics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAYC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,MAAM,CAAA;IAE3D,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEjD,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS;QACL,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;YAC3C,KAAK;YACL,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;SAC9C,CAAC,CAAA;QAEF,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;YACrB,MAAM,KAAK,CAAA;YAEX,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,OAAM;SACjC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAM;QACrB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;KACpB;AACL,CAAC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ForumTopic, InputPeerLike } from '../../types/index.js'\nimport { resolveChannel } from '../users/resolve-peer.js'\nimport { getForumTopics } from './get-forum-topics.js'\n\n/**\n * Iterate over forum topics. Wrapper over {@link getForumTopics}.\n *\n * @param chatId Chat ID or username\n */\nexport async function* iterForumTopics(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getForumTopics>[2] & {\n /**\n * Maximum number of topics to return.\n *\n * @default `Infinity`, i.e. return all topics\n */\n limit?: number\n\n /**\n * Chunk size. Usually you shouldn't care about this.\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ForumTopic> {\n if (!params) params = {}\n\n const { query, limit = Infinity, chunkSize = 100 } = params\n\n const peer = await resolveChannel(client, chatId)\n\n let { offset } = params\n let current = 0\n\n for (;;) {\n const res = await getForumTopics(client, peer, {\n query,\n offset,\n limit: Math.min(chunkSize, limit - current),\n })\n\n for (const topic of res) {\n yield topic\n\n if (++current >= limit) return\n }\n\n if (!res.next) return\n offset = res.next\n }\n}\n"]}
1
+ {"version":3,"file":"iter-forum-topics.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/forums/iter-forum-topics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAYC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,MAAM,CAAA;IAE3D,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEjD,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;YAC3C,KAAK;YACL,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;SAC9C,CAAC,CAAA;QAEF,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,KAAK,CAAA;YAEX,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,OAAM;QAClC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAM;QACrB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,CAAC;AACL,CAAC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ForumTopic, InputPeerLike } from '../../types/index.js'\nimport { resolveChannel } from '../users/resolve-peer.js'\nimport { getForumTopics } from './get-forum-topics.js'\n\n/**\n * Iterate over forum topics. Wrapper over {@link getForumTopics}.\n *\n * @param chatId Chat ID or username\n */\nexport async function* iterForumTopics(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getForumTopics>[2] & {\n /**\n * Maximum number of topics to return.\n *\n * @default `Infinity`, i.e. return all topics\n */\n limit?: number\n\n /**\n * Chunk size. Usually you shouldn't care about this.\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ForumTopic> {\n if (!params) params = {}\n\n const { query, limit = Infinity, chunkSize = 100 } = params\n\n const peer = await resolveChannel(client, chatId)\n\n let { offset } = params\n let current = 0\n\n for (;;) {\n const res = await getForumTopics(client, peer, {\n query,\n offset,\n limit: Math.min(chunkSize, limit - current),\n })\n\n for (const topic of res) {\n yield topic\n\n if (++current >= limit) return\n }\n\n if (!res.next) return\n offset = res.next\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"get-primary-invite-link.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/get-primary-invite-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAiB,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAuB,EAAE,MAAqB;IACrF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,iCAAiC;QACpC,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,OAAO,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE;QAC/B,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,KAAK;KACjB,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,oBAAoB,EAAE;QAC5C,MAAM,IAAI,oBAAoB,CAC1B,iDAAiD,EACjD,oBAAoB,EACpB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CACpB,CAAA;KACJ;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;QAC3B,MAAM,IAAI,oBAAoB,CAAC,2DAA2D,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/G;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC","sourcesContent":["import { MtTypeAssertionError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLink, InputPeerLike, PeersIndex } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Get primary invite link of a chat\n *\n * @param chatId Chat ID\n */\nexport async function getPrimaryInviteLink(client: ITelegramClient, chatId: InputPeerLike): Promise<ChatInviteLink> {\n const res = await client.call({\n _: 'messages.getExportedChatInvites',\n peer: await resolvePeer(client, chatId),\n adminId: { _: 'inputUserSelf' },\n limit: 1,\n revoked: false,\n })\n\n if (res.invites[0]?._ !== 'chatInviteExported') {\n throw new MtTypeAssertionError(\n 'messages.getExportedChatInvites (@ .invites[0])',\n 'chatInviteExported',\n res.invites[0]?._,\n )\n }\n\n if (!res.invites[0].permanent) {\n throw new MtTypeAssertionError('messages.getExportedChatInvites (@ .invites[0].permanent)', 'true', 'false')\n }\n\n const peers = PeersIndex.from(res)\n\n return new ChatInviteLink(res.invites[0], peers)\n}\n"]}
1
+ {"version":3,"file":"get-primary-invite-link.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/get-primary-invite-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAiB,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAuB,EAAE,MAAqB;IACrF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,iCAAiC;QACpC,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,OAAO,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE;QAC/B,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,KAAK;KACjB,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,oBAAoB,CAC1B,iDAAiD,EACjD,oBAAoB,EACpB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CACpB,CAAA;IACL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,oBAAoB,CAAC,2DAA2D,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAChH,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC","sourcesContent":["import { MtTypeAssertionError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLink, InputPeerLike, PeersIndex } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Get primary invite link of a chat\n *\n * @param chatId Chat ID\n */\nexport async function getPrimaryInviteLink(client: ITelegramClient, chatId: InputPeerLike): Promise<ChatInviteLink> {\n const res = await client.call({\n _: 'messages.getExportedChatInvites',\n peer: await resolvePeer(client, chatId),\n adminId: { _: 'inputUserSelf' },\n limit: 1,\n revoked: false,\n })\n\n if (res.invites[0]?._ !== 'chatInviteExported') {\n throw new MtTypeAssertionError(\n 'messages.getExportedChatInvites (@ .invites[0])',\n 'chatInviteExported',\n res.invites[0]?._,\n )\n }\n\n if (!res.invites[0].permanent) {\n throw new MtTypeAssertionError('messages.getExportedChatInvites (@ .invites[0].permanent)', 'true', 'false')\n }\n\n const peers = PeersIndex.from(res)\n\n return new ChatInviteLink(res.invites[0], peers)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"iter-invite-link-members.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-link-members.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CACxC,MAAuB,EACvB,MAAqB,EACrB,MAeC;IAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,CAAA;IAEjH,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,GAAG,MAAM,CAAA;IAEjE,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS;QACL,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;YAC3C,IAAI;YACJ,SAAS;YACT,eAAe;YACf,UAAU;YACV,UAAU;SACb,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,MAAK;QAExB,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE;YACpB,MAAM,EAAE,CAAA;YAER,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,OAAM;SACjC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAM;QAEvB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;QAC5B,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;KAC/B;AACL,CAAC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLinkMember, InputPeerLike } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { getInviteLinkMembers } from './get-invite-link-members.js'\n\n/**\n * Iterate over users who have joined\n * the chat with the given invite link.\n *\n * @param chatId Chat ID\n * @param params Additional params\n */\nexport async function* iterInviteLinkMembers(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinkMembers>[2] & {\n /**\n * Maximum number of users to return\n *\n * @default `Infinity`, i.e. all users are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getChatInviteImporters`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ChatInviteLinkMember> {\n const peer = await resolvePeer(client, chatId)\n if (!params) params = {}\n\n const { limit = Infinity, chunkSize = 100, link, requestedSearch, requested = Boolean(requestedSearch) } = params\n\n let { offsetDate, offsetUser = { _: 'inputUserEmpty' } } = params\n\n let current = 0\n\n for (;;) {\n const items = await getInviteLinkMembers(client, peer, {\n limit: Math.min(chunkSize, limit - current),\n link,\n requested,\n requestedSearch,\n offsetDate,\n offsetUser,\n })\n\n if (!items.length) break\n\n for (const it of items) {\n yield it\n\n if (++current >= limit) return\n }\n\n if (!items.next) return\n\n offsetDate = items.next.date\n offsetUser = items.next.user\n }\n}\n"]}
1
+ {"version":3,"file":"iter-invite-link-members.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-link-members.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CACxC,MAAuB,EACvB,MAAqB,EACrB,MAeC;IAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,CAAA;IAEjH,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,GAAG,MAAM,CAAA;IAEjE,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS,CAAC;QACN,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;YAC3C,IAAI;YACJ,SAAS;YACT,eAAe;YACf,UAAU;YACV,UAAU;SACb,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,MAAK;QAExB,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,EAAE,CAAA;YAER,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,OAAM;QAClC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAM;QAEvB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;QAC5B,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAChC,CAAC;AACL,CAAC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLinkMember, InputPeerLike } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { getInviteLinkMembers } from './get-invite-link-members.js'\n\n/**\n * Iterate over users who have joined\n * the chat with the given invite link.\n *\n * @param chatId Chat ID\n * @param params Additional params\n */\nexport async function* iterInviteLinkMembers(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinkMembers>[2] & {\n /**\n * Maximum number of users to return\n *\n * @default `Infinity`, i.e. all users are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getChatInviteImporters`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ChatInviteLinkMember> {\n const peer = await resolvePeer(client, chatId)\n if (!params) params = {}\n\n const { limit = Infinity, chunkSize = 100, link, requestedSearch, requested = Boolean(requestedSearch) } = params\n\n let { offsetDate, offsetUser = { _: 'inputUserEmpty' } } = params\n\n let current = 0\n\n for (;;) {\n const items = await getInviteLinkMembers(client, peer, {\n limit: Math.min(chunkSize, limit - current),\n link,\n requested,\n requestedSearch,\n offsetDate,\n offsetUser,\n })\n\n if (!items.length) break\n\n for (const it of items) {\n yield it\n\n if (++current >= limit) return\n }\n\n if (!items.next) return\n\n offsetDate = items.next.date\n offsetUser = items.next.user\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"iter-invite-links.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-links.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAaC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAE5E,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAEvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,EAAE,eAAe,EAAY,CAAA;IAElG,SAAS;QACL,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;YAC7C,KAAK,EAAE,aAAa;YACpB,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;YAC3C,MAAM;SACT,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,MAAM,IAAI,CAAA;YAEV,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,MAAK;SAChC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAM;QACvB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAA;KACtB;AACL,CAAC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLink, InputPeerLike } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { getInviteLinks } from './get-invite-links.js'\n\n/**\n * Iterate over invite links created by some administrator in the chat.\n *\n * As an administrator you can only get your own links\n * (i.e. `adminId = \"self\"`), as a creator you can get\n * any other admin's links.\n *\n * @param chatId Chat ID\n * @param adminId Admin who created the links\n * @param params\n */\nexport async function* iterInviteLinks(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinks>[2] & {\n /**\n * Limit the number of invite links to be fetched.\n * By default, all links are fetched.\n */\n limit?: number\n\n /**\n * Size of chunks which are fetched. Usually not needed.\n *\n * @default `100`\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ChatInviteLink> {\n if (!params) params = {}\n\n const { revoked = false, limit = Infinity, chunkSize = 100, admin } = params\n\n let { offset } = params\n\n let current = 0\n\n const peer = await resolvePeer(client, chatId)\n const adminResolved = admin ? await resolvePeer(client, admin) : ({ _: 'inputUserSelf' } as const)\n\n for (;;) {\n const links = await getInviteLinks(client, peer, {\n admin: adminResolved,\n revoked,\n limit: Math.min(chunkSize, limit - current),\n offset,\n })\n\n if (!links.length) return\n\n for (const link of links) {\n yield link\n\n if (++current >= limit) break\n }\n\n if (!links.next) return\n offset = links.next\n }\n}\n"]}
1
+ {"version":3,"file":"iter-invite-links.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-links.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAaC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAE5E,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAEvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,EAAE,eAAe,EAAY,CAAA;IAElG,SAAS,CAAC;QACN,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;YAC7C,KAAK,EAAE,aAAa;YACpB,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;YAC3C,MAAM;SACT,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,CAAA;YAEV,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,MAAK;QACjC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAM;QACvB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,CAAC;AACL,CAAC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLink, InputPeerLike } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { getInviteLinks } from './get-invite-links.js'\n\n/**\n * Iterate over invite links created by some administrator in the chat.\n *\n * As an administrator you can only get your own links\n * (i.e. `adminId = \"self\"`), as a creator you can get\n * any other admin's links.\n *\n * @param chatId Chat ID\n * @param adminId Admin who created the links\n * @param params\n */\nexport async function* iterInviteLinks(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinks>[2] & {\n /**\n * Limit the number of invite links to be fetched.\n * By default, all links are fetched.\n */\n limit?: number\n\n /**\n * Size of chunks which are fetched. Usually not needed.\n *\n * @default `100`\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ChatInviteLink> {\n if (!params) params = {}\n\n const { revoked = false, limit = Infinity, chunkSize = 100, admin } = params\n\n let { offset } = params\n\n let current = 0\n\n const peer = await resolvePeer(client, chatId)\n const adminResolved = admin ? await resolvePeer(client, admin) : ({ _: 'inputUserSelf' } as const)\n\n for (;;) {\n const links = await getInviteLinks(client, peer, {\n admin: adminResolved,\n revoked,\n limit: Math.min(chunkSize, limit - current),\n offset,\n })\n\n if (!links.length) return\n\n for (const link of links) {\n yield link\n\n if (++current >= limit) break\n }\n\n if (!links.next) return\n offset = links.next\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"close-poll.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/close-poll.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,OAAO,EAAkB,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,MAAuB,EACvB,MAMC;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAE3D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,sBAAsB;QACzB,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,EAAE,EAAE,OAAO;QACX,KAAK,EAAE;YACH,CAAC,EAAE,gBAAgB;YACnB,IAAI,EAAE;gBACF,CAAC,EAAE,MAAM;gBACT,EAAE,EAAE,IAAI,CAAC,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;aACd;SACJ;KACJ,CAAC,CAAA;IAEF,oBAAoB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAA;IAEjD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAEtD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC1B,YAAY,CAAC,sCAAsC,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;IAE9E,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACX,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;KACnG;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC","sourcesContent":["import Long from 'long'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputMessageId, normalizeInputMessageId, PeersIndex, Poll } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Close a poll sent by you.\n *\n * Once closed, poll can't be re-opened, and nobody\n * will be able to vote in it\n */\nexport async function closePoll(\n client: ITelegramClient,\n params: InputMessageId & {\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n): Promise<Poll> {\n const { chatId, message } = normalizeInputMessageId(params)\n\n const res = await client.call({\n _: 'messages.editMessage',\n peer: await resolvePeer(client, chatId),\n id: message,\n media: {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n id: Long.ZERO,\n closed: true,\n question: '',\n answers: [],\n },\n },\n })\n\n assertIsUpdatesGroup('messages.editMessage', res)\n\n client.handleClientUpdate(res, !params.shouldDispatch)\n\n const upd = res.updates[0]\n assertTypeIs('messages.editMessage (@ .updates[0])', upd, 'updateMessagePoll')\n\n if (!upd.poll) {\n throw new MtTypeAssertionError('messages.editMessage (@ .updates[0].poll)', 'poll', 'undefined')\n }\n\n const peers = PeersIndex.from(res)\n\n return new Poll(upd.poll, peers, upd.results)\n}\n"]}
1
+ {"version":3,"file":"close-poll.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/close-poll.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,OAAO,EAAkB,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,MAAuB,EACvB,MAMC;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAE3D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,sBAAsB;QACzB,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,EAAE,EAAE,OAAO;QACX,KAAK,EAAE;YACH,CAAC,EAAE,gBAAgB;YACnB,IAAI,EAAE;gBACF,CAAC,EAAE,MAAM;gBACT,EAAE,EAAE,IAAI,CAAC,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;aACd;SACJ;KACJ,CAAC,CAAA;IAEF,oBAAoB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAA;IAEjD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAEtD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC1B,YAAY,CAAC,sCAAsC,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;IAE9E,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IACpG,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC","sourcesContent":["import Long from 'long'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputMessageId, normalizeInputMessageId, PeersIndex, Poll } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Close a poll sent by you.\n *\n * Once closed, poll can't be re-opened, and nobody\n * will be able to vote in it\n */\nexport async function closePoll(\n client: ITelegramClient,\n params: InputMessageId & {\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n): Promise<Poll> {\n const { chatId, message } = normalizeInputMessageId(params)\n\n const res = await client.call({\n _: 'messages.editMessage',\n peer: await resolvePeer(client, chatId),\n id: message,\n media: {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n id: Long.ZERO,\n closed: true,\n question: '',\n answers: [],\n },\n },\n })\n\n assertIsUpdatesGroup('messages.editMessage', res)\n\n client.handleClientUpdate(res, !params.shouldDispatch)\n\n const upd = res.updates[0]\n assertTypeIs('messages.editMessage (@ .updates[0])', upd, 'updateMessagePoll')\n\n if (!upd.poll) {\n throw new MtTypeAssertionError('messages.editMessage (@ .updates[0].poll)', 'poll', 'undefined')\n }\n\n const peers = PeersIndex.from(res)\n\n return new Poll(upd.poll, peers, upd.results)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"delete-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/delete-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { isInputPeerChannel, toInputChannel } from '../../utils/peer-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { deleteScheduledMessages } from './delete-scheduled-messages.js'\n\n// @exported\nexport interface DeleteMessagesParams {\n /**\n * Whether to \"revoke\" (i.e. delete for both sides).\n * Only used for chats and private chats.\n *\n * @default true\n */\n revoke?: boolean\n}\n\n/**\n * Delete messages by their IDs\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\nexport async function deleteMessagesById(\n client: ITelegramClient,\n chatId: InputPeerLike,\n ids: number[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n const { revoke = true } = params ?? {}\n\n const peer = await resolvePeer(client, chatId)\n\n let upd\n\n if (isInputPeerChannel(peer)) {\n const channel = toInputChannel(peer)\n const res = await client.call({\n _: 'channels.deleteMessages',\n channel,\n id: ids,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount, peer.channelId)\n } else {\n const res = await client.call({\n _: 'messages.deleteMessages',\n id: ids,\n revoke,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount)\n }\n\n client.handleClientUpdate(upd)\n}\n\n/**\n * Delete one or more {@link Message}\n *\n * @param messages Message(s) to delete\n */\nexport async function deleteMessages(\n client: ITelegramClient,\n messages: Message[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n if (messages.length === 1) {\n return deleteMessagesById(client, messages[0].chat.inputPeer, [messages[0].id], params)\n }\n\n const byChat = new Map<number, [tl.TypeInputPeer, number[]]>()\n const byChatScheduled = new Map<number, [tl.TypeInputPeer, number[]]>()\n\n for (const msg of messages) {\n const map = msg.isScheduled ? byChatScheduled : byChat\n\n if (!map.has(msg.chat.id)) {\n map.set(msg.chat.id, [msg.chat.inputPeer, []])\n }\n map.get(msg.chat.id)![1].push(msg.id)\n }\n\n for (const [peer, ids] of byChat.values()) {\n await deleteMessagesById(client, peer, ids, params)\n }\n\n for (const [peer, ids] of byChatScheduled.values()) {\n await deleteScheduledMessages(client, peer, ids)\n }\n}\n"]}
1
+ {"version":3,"file":"delete-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/delete-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message } from '../../types/index.js'\nimport { createDummyUpdate } from '../../updates/utils.js'\nimport { isInputPeerChannel, toInputChannel } from '../../utils/peer-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { deleteScheduledMessages } from './delete-scheduled-messages.js'\n\n// @exported\nexport interface DeleteMessagesParams {\n /**\n * Whether to \"revoke\" (i.e. delete for both sides).\n * Only used for chats and private chats.\n *\n * @default true\n */\n revoke?: boolean\n}\n\n/**\n * Delete messages by their IDs\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\nexport async function deleteMessagesById(\n client: ITelegramClient,\n chatId: InputPeerLike,\n ids: number[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n const { revoke = true } = params ?? {}\n\n const peer = await resolvePeer(client, chatId)\n\n let upd\n\n if (isInputPeerChannel(peer)) {\n const channel = toInputChannel(peer)\n const res = await client.call({\n _: 'channels.deleteMessages',\n channel,\n id: ids,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount, peer.channelId)\n } else {\n const res = await client.call({\n _: 'messages.deleteMessages',\n id: ids,\n revoke,\n })\n upd = createDummyUpdate(res.pts, res.ptsCount)\n }\n\n client.handleClientUpdate(upd)\n}\n\n/**\n * Delete one or more {@link Message}\n *\n * @param messages Message(s) to delete\n */\nexport async function deleteMessages(\n client: ITelegramClient,\n messages: Message[],\n params?: DeleteMessagesParams,\n): Promise<void> {\n if (messages.length === 1) {\n return deleteMessagesById(client, messages[0].chat.inputPeer, [messages[0].id], params)\n }\n\n const byChat = new Map<number, [tl.TypeInputPeer, number[]]>()\n const byChatScheduled = new Map<number, [tl.TypeInputPeer, number[]]>()\n\n for (const msg of messages) {\n const map = msg.isScheduled ? byChatScheduled : byChat\n\n if (!map.has(msg.chat.id)) {\n map.set(msg.chat.id, [msg.chat.inputPeer, []])\n }\n map.get(msg.chat.id)![1].push(msg.id)\n }\n\n for (const [peer, ids] of byChat.values()) {\n await deleteMessagesById(client, peer, ids, params)\n }\n\n for (const [peer, ids] of byChatScheduled.values()) {\n await deleteScheduledMessages(client, peer, ids)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"edit-inline-message.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/edit-inline-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAG/B,OAAO,EAAE,WAAW,EAA0C,MAAM,sBAAsB,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAuB,EACvB,MA6CC;IAED,IAAI,OAAO,GAAuB,SAAS,CAAA;IAC3C,IAAI,QAA4C,CAAA;IAChD,IAAI,KAAK,GAAkC,SAAS,CAAA;IAEpD,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAE9C,IAAI,MAAM,CAAC,KAAK,EAAE;QACd,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAEtE,wEAAwE;QACxE,+EAA+E;QAC/E,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YACjE,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SAChF;KACJ;SAAM,IAAI,MAAM,CAAC,IAAI,EAAE;QACpB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;KACvE;IAED,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,OAAO,OAAO,EAAE,EAAE;QACd,IAAI;YACA,MAAM,MAAM,CAAC,IAAI,CACb;gBACI,CAAC,EAAE,+BAA+B;gBAClC,EAAE;gBACF,SAAS,EAAE,MAAM,CAAC,iBAAiB;gBACnC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;gBACzD,OAAO,EAAE,OAAO;gBAChB,QAAQ;gBACR,KAAK;gBACL,WAAW,EAAE,MAAM,CAAC,WAAW;aAClC,EACD,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CACpB,CAAA;YAED,OAAM;SACT;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE;gBAClC,SAAQ;aACX;YAED,MAAM,CAAC,CAAA;SACV;KACJ;AACL,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { BotKeyboard, InputMediaLike, InputText, ReplyMarkup } from '../../types/index.js'\nimport { normalizeInlineId } from '../../utils/inline-utils.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\n\n/**\n * Edit sent inline message text, media and reply markup.\n *\n * @param messageId\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n * @param params\n */\nexport async function editInlineMessage(\n client: ITelegramClient,\n params: {\n /**\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n */\n messageId: tl.TypeInputBotInlineMessageID | string\n\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n): Promise<void> {\n let content: string | undefined = undefined\n let entities: tl.TypeMessageEntity[] | undefined\n let media: tl.TypeInputMedia | undefined = undefined\n\n const id = normalizeInlineId(params.messageId)\n\n if (params.media) {\n media = await _normalizeInputMedia(client, params.media, params, true)\n\n // if there's no caption in input media (i.e. not present or undefined),\n // user wants to keep current caption, thus `content` needs to stay `undefined`\n if ('caption' in params.media && params.media.caption !== undefined) {\n [content, entities] = await _normalizeInputText(client, params.media.caption)\n }\n } else if (params.text) {\n [content, entities] = await _normalizeInputText(client, params.text)\n }\n\n let retries = 3\n\n while (retries--) {\n try {\n await client.call(\n {\n _: 'messages.editInlineBotMessage',\n id,\n noWebpage: params.disableWebPreview,\n replyMarkup: BotKeyboard._convertToTl(params.replyMarkup),\n message: content,\n entities,\n media,\n invertMedia: params.invertMedia,\n },\n { dcId: id.dcId },\n )\n\n return\n } catch (e) {\n if (tl.RpcError.is(e, 'MEDIA_EMPTY')) {\n continue\n }\n\n throw e\n }\n }\n}\n"]}
1
+ {"version":3,"file":"edit-inline-message.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/edit-inline-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAG/B,OAAO,EAAE,WAAW,EAA0C,MAAM,sBAAsB,CAAA;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAuB,EACvB,MA6CC;IAED,IAAI,OAAO,GAAuB,SAAS,CAAA;IAC3C,IAAI,QAA4C,CAAA;IAChD,IAAI,KAAK,GAAkC,SAAS,CAAA;IAEpD,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAE9C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAEtE,wEAAwE;QACxE,+EAA+E;QAC/E,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClE,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACjF,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,OAAO,OAAO,EAAE,EAAE,CAAC;QACf,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,CACb;gBACI,CAAC,EAAE,+BAA+B;gBAClC,EAAE;gBACF,SAAS,EAAE,MAAM,CAAC,iBAAiB;gBACnC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;gBACzD,OAAO,EAAE,OAAO;gBAChB,QAAQ;gBACR,KAAK;gBACL,WAAW,EAAE,MAAM,CAAC,WAAW;aAClC,EACD,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CACpB,CAAA;YAED,OAAM;QACV,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC;gBACnC,SAAQ;YACZ,CAAC;YAED,MAAM,CAAC,CAAA;QACX,CAAC;IACL,CAAC;AACL,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { BotKeyboard, InputMediaLike, InputText, ReplyMarkup } from '../../types/index.js'\nimport { normalizeInlineId } from '../../utils/inline-utils.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\n\n/**\n * Edit sent inline message text, media and reply markup.\n *\n * @param messageId\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n * @param params\n */\nexport async function editInlineMessage(\n client: ITelegramClient,\n params: {\n /**\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n */\n messageId: tl.TypeInputBotInlineMessageID | string\n\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n): Promise<void> {\n let content: string | undefined = undefined\n let entities: tl.TypeMessageEntity[] | undefined\n let media: tl.TypeInputMedia | undefined = undefined\n\n const id = normalizeInlineId(params.messageId)\n\n if (params.media) {\n media = await _normalizeInputMedia(client, params.media, params, true)\n\n // if there's no caption in input media (i.e. not present or undefined),\n // user wants to keep current caption, thus `content` needs to stay `undefined`\n if ('caption' in params.media && params.media.caption !== undefined) {\n [content, entities] = await _normalizeInputText(client, params.media.caption)\n }\n } else if (params.text) {\n [content, entities] = await _normalizeInputText(client, params.text)\n }\n\n let retries = 3\n\n while (retries--) {\n try {\n await client.call(\n {\n _: 'messages.editInlineBotMessage',\n id,\n noWebpage: params.disableWebPreview,\n replyMarkup: BotKeyboard._convertToTl(params.replyMarkup),\n message: content,\n entities,\n media,\n invertMedia: params.invertMedia,\n },\n { dcId: id.dcId },\n )\n\n return\n } catch (e) {\n if (tl.RpcError.is(e, 'MEDIA_EMPTY')) {\n continue\n }\n\n throw e\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"edit-message.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/edit-message.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,WAAW,EAKX,uBAAuB,GAE1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,MAmDC;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC3D,IAAI,OAAO,GAAuB,SAAS,CAAA;IAC3C,IAAI,QAA4C,CAAA;IAChD,IAAI,KAAK,GAAkC,SAAS,CAAA;IAEpD,IAAI,MAAM,CAAC,KAAK,EAAE;QACd,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEhE,wEAAwE;QACxE,+EAA+E;QAC/E,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YACjE,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SAChF;KACJ;IAED,IAAI,MAAM,CAAC,IAAI,EAAE;QACb,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;KACvE;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,sBAAsB;QACzB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC,iBAAiB;QACnC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;QACzD,OAAO,EAAE,OAAO;QAChB,QAAQ;QACR,KAAK;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;KAClC,CAAC,CAAA;IAEF,OAAO,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC1E,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport {\n BotKeyboard,\n InputMediaLike,\n InputMessageId,\n InputText,\n Message,\n normalizeInputMessageId,\n ReplyMarkup,\n} from '../../types/index.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _findMessageInUpdate } from './find-in-update.js'\n\n/**\n * Edit message text, media, reply markup and schedule date.\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param message Message or its ID\n * @param params\n */\nexport async function editMessage(\n client: ITelegramClient,\n params: InputMessageId & {\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * To re-schedule a message: new schedule date.\n * When passing a number, a UNIX time in ms is expected.\n */\n scheduleDate?: Date | number\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n): Promise<Message> {\n const { chatId, message } = normalizeInputMessageId(params)\n let content: string | undefined = undefined\n let entities: tl.TypeMessageEntity[] | undefined\n let media: tl.TypeInputMedia | undefined = undefined\n\n if (params.media) {\n media = await _normalizeInputMedia(client, params.media, params)\n\n // if there's no caption in input media (i.e. not present or undefined),\n // user wants to keep current caption, thus `content` needs to stay `undefined`\n if ('caption' in params.media && params.media.caption !== undefined) {\n [content, entities] = await _normalizeInputText(client, params.media.caption)\n }\n }\n\n if (params.text) {\n [content, entities] = await _normalizeInputText(client, params.text)\n }\n\n const res = await client.call({\n _: 'messages.editMessage',\n id: message,\n peer: await resolvePeer(client, chatId),\n noWebpage: params.disableWebPreview,\n replyMarkup: BotKeyboard._convertToTl(params.replyMarkup),\n message: content,\n entities,\n media,\n invertMedia: params.invertMedia,\n })\n\n return _findMessageInUpdate(client, res, true, !params.shouldDispatch)\n}\n"]}
1
+ {"version":3,"file":"edit-message.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/edit-message.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,WAAW,EAKX,uBAAuB,GAE1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,MAmDC;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC3D,IAAI,OAAO,GAAuB,SAAS,CAAA;IAC3C,IAAI,QAA4C,CAAA;IAChD,IAAI,KAAK,GAAkC,SAAS,CAAA;IAEpD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEhE,wEAAwE;QACxE,+EAA+E;QAC/E,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClE,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACjF,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,sBAAsB;QACzB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC,iBAAiB;QACnC,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;QACzD,OAAO,EAAE,OAAO;QAChB,QAAQ;QACR,KAAK;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;KAClC,CAAC,CAAA;IAEF,OAAO,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC1E,CAAC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { ITelegramClient } from '../../client.types.js'\nimport {\n BotKeyboard,\n InputMediaLike,\n InputMessageId,\n InputText,\n Message,\n normalizeInputMessageId,\n ReplyMarkup,\n} from '../../types/index.js'\nimport { _normalizeInputMedia } from '../files/normalize-input-media.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _findMessageInUpdate } from './find-in-update.js'\n\n/**\n * Edit message text, media, reply markup and schedule date.\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param message Message or its ID\n * @param params\n */\nexport async function editMessage(\n client: ITelegramClient,\n params: InputMessageId & {\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * To re-schedule a message: new schedule date.\n * When passing a number, a UNIX time in ms is expected.\n */\n scheduleDate?: Date | number\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n): Promise<Message> {\n const { chatId, message } = normalizeInputMessageId(params)\n let content: string | undefined = undefined\n let entities: tl.TypeMessageEntity[] | undefined\n let media: tl.TypeInputMedia | undefined = undefined\n\n if (params.media) {\n media = await _normalizeInputMedia(client, params.media, params)\n\n // if there's no caption in input media (i.e. not present or undefined),\n // user wants to keep current caption, thus `content` needs to stay `undefined`\n if ('caption' in params.media && params.media.caption !== undefined) {\n [content, entities] = await _normalizeInputText(client, params.media.caption)\n }\n }\n\n if (params.text) {\n [content, entities] = await _normalizeInputText(client, params.text)\n }\n\n const res = await client.call({\n _: 'messages.editMessage',\n id: message,\n peer: await resolvePeer(client, chatId),\n noWebpage: params.disableWebPreview,\n replyMarkup: BotKeyboard._convertToTl(params.replyMarkup),\n message: content,\n entities,\n media,\n invertMedia: params.invertMedia,\n })\n\n return _findMessageInUpdate(client, res, true, !params.shouldDispatch)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"find-in-update.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/find-in-update.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AA2B7D;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAChC,MAAuB,EACvB,GAAmB,EACnB,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,KAAK,EACjB,QAAkB;IAElB,oBAAoB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAA;IAEjD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAE1C,IAAI,YAAY,GAAG,CAAC,CAAA;IAEpB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;QACzB,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;YAClE,YAAY,GAAG,CAAC,CAAC,EAAE,CAAA;YACnB,SAAQ;SACX;QAED,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,mBAAmB,IAAI,CAAC,CAAC,CAAC,KAAK,0BAA0B,CAAC;gBAAE,SAAQ;SACrF;aAAM;YACH,IACI,CAAC,CACG,CAAC,CAAC,CAAC,KAAK,kBAAkB;gBAC1B,CAAC,CAAC,CAAC,KAAK,yBAAyB;gBACjC,CAAC,CAAC,CAAC,KAAK,2BAA2B,CACtC,EACH;gBAAE,SAAQ;aAAE;SACjB;QAED,qEAAqE;QACrE,uDAAuD;QACvD,iEAAiE;QACjE,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,YAAY;YAAE,SAAQ;QAEjE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAElC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,2BAA2B,CAAC,CAAA;KAC5E;IAED,IAAI,SAAS;QAAE,OAAO,IAAI,CAAA;IAE1B,MAAM,IAAI,oBAAoB,CAC1B,+BAA+B,EAC/B,wEAAwE,EACxE,MAAM,CACT,CAAA;AACL,CAAC","sourcesContent":["/* eslint-disable max-params,no-lonely-if */\nimport { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { Message } from '../../types/messages/index.js'\nimport { PeersIndex } from '../../types/peers/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\n\n/**\n * @internal\n * @noemit\n */\nexport function _findMessageInUpdate(\n client: ITelegramClient,\n res: tl.TypeUpdates,\n isEdit?: boolean,\n noDispatch?: boolean,\n allowNull?: false,\n randomId?: tl.Long,\n): Message\n/**\n * @internal\n * @noemit\n */\nexport function _findMessageInUpdate(\n client: ITelegramClient,\n res: tl.TypeUpdates,\n isEdit?: boolean,\n noDispatch?: boolean,\n allowNull?: true,\n randomId?: tl.Long,\n): Message | null\n\n/**\n * @internal\n * @noemit\n */\nexport function _findMessageInUpdate(\n client: ITelegramClient,\n res: tl.TypeUpdates,\n isEdit = false,\n noDispatch = true,\n allowNull = false,\n randomId?: tl.Long,\n): Message | null {\n assertIsUpdatesGroup('_findMessageInUpdate', res)\n\n client.handleClientUpdate(res, noDispatch)\n\n let ourMessageId = 0\n\n for (const u of res.updates) {\n if (randomId && u._ === 'updateMessageID' && u.randomId.eq(randomId)) {\n ourMessageId = u.id\n continue\n }\n\n if (isEdit) {\n if (!(u._ === 'updateEditMessage' || u._ === 'updateEditChannelMessage')) continue\n } else {\n if (\n !(\n u._ === 'updateNewMessage' ||\n u._ === 'updateNewChannelMessage' ||\n u._ === 'updateNewScheduledMessage'\n )\n ) { continue }\n }\n\n // this *may* break if updateMessageID comes after the message update\n // but it's unlikely and is not worth the effort to fix\n // we should eventually move to properly handling updateMessageID\n if (ourMessageId !== 0 && u.message.id !== ourMessageId) continue\n\n const peers = PeersIndex.from(res)\n\n return new Message(u.message, peers, u._ === 'updateNewScheduledMessage')\n }\n\n if (allowNull) return null\n\n throw new MtTypeAssertionError(\n '_findInUpdate (@ .updates[*])',\n 'updateNewMessage | updateNewChannelMessage | updateNewScheduledMessage',\n 'none',\n )\n}\n"]}
1
+ {"version":3,"file":"find-in-update.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/find-in-update.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AA2B7D;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAChC,MAAuB,EACvB,GAAmB,EACnB,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,KAAK,EACjB,QAAkB;IAElB,oBAAoB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAA;IAEjD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAE1C,IAAI,YAAY,GAAG,CAAC,CAAA;IAEpB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,YAAY,GAAG,CAAC,CAAC,EAAE,CAAA;YACnB,SAAQ;QACZ,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,mBAAmB,IAAI,CAAC,CAAC,CAAC,KAAK,0BAA0B,CAAC;gBAAE,SAAQ;QACtF,CAAC;aAAM,CAAC;YACJ,IACI,CAAC,CACG,CAAC,CAAC,CAAC,KAAK,kBAAkB;gBAC1B,CAAC,CAAC,CAAC,KAAK,yBAAyB;gBACjC,CAAC,CAAC,CAAC,KAAK,2BAA2B,CACtC,EACH,CAAC;gBAAC,SAAQ;YAAC,CAAC;QAClB,CAAC;QAED,qEAAqE;QACrE,uDAAuD;QACvD,iEAAiE;QACjE,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,YAAY;YAAE,SAAQ;QAEjE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAElC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,2BAA2B,CAAC,CAAA;IAC7E,CAAC;IAED,IAAI,SAAS;QAAE,OAAO,IAAI,CAAA;IAE1B,MAAM,IAAI,oBAAoB,CAC1B,+BAA+B,EAC/B,wEAAwE,EACxE,MAAM,CACT,CAAA;AACL,CAAC","sourcesContent":["/* eslint-disable max-params,no-lonely-if */\nimport { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { Message } from '../../types/messages/index.js'\nimport { PeersIndex } from '../../types/peers/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\n\n/**\n * @internal\n * @noemit\n */\nexport function _findMessageInUpdate(\n client: ITelegramClient,\n res: tl.TypeUpdates,\n isEdit?: boolean,\n noDispatch?: boolean,\n allowNull?: false,\n randomId?: tl.Long,\n): Message\n/**\n * @internal\n * @noemit\n */\nexport function _findMessageInUpdate(\n client: ITelegramClient,\n res: tl.TypeUpdates,\n isEdit?: boolean,\n noDispatch?: boolean,\n allowNull?: true,\n randomId?: tl.Long,\n): Message | null\n\n/**\n * @internal\n * @noemit\n */\nexport function _findMessageInUpdate(\n client: ITelegramClient,\n res: tl.TypeUpdates,\n isEdit = false,\n noDispatch = true,\n allowNull = false,\n randomId?: tl.Long,\n): Message | null {\n assertIsUpdatesGroup('_findMessageInUpdate', res)\n\n client.handleClientUpdate(res, noDispatch)\n\n let ourMessageId = 0\n\n for (const u of res.updates) {\n if (randomId && u._ === 'updateMessageID' && u.randomId.eq(randomId)) {\n ourMessageId = u.id\n continue\n }\n\n if (isEdit) {\n if (!(u._ === 'updateEditMessage' || u._ === 'updateEditChannelMessage')) continue\n } else {\n if (\n !(\n u._ === 'updateNewMessage' ||\n u._ === 'updateNewChannelMessage' ||\n u._ === 'updateNewScheduledMessage'\n )\n ) { continue }\n }\n\n // this *may* break if updateMessageID comes after the message update\n // but it's unlikely and is not worth the effort to fix\n // we should eventually move to properly handling updateMessageID\n if (ourMessageId !== 0 && u.message.id !== ourMessageId) continue\n\n const peers = PeersIndex.from(res)\n\n return new Message(u.message, peers, u._ === 'updateNewScheduledMessage')\n }\n\n if (allowNull) return null\n\n throw new MtTypeAssertionError(\n '_findInUpdate (@ .updates[*])',\n 'updateNewMessage | updateNewChannelMessage | updateNewScheduledMessage',\n 'none',\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"forward-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/forward-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAEzD,OAAO,EAAiB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AA2DtD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAuB,EACvB,MAKC;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAEhH,yDAAyD;IACzD,uDAAuD;IACvD,4CAA4C;IAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;QACvB,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAA;KACjF;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAElD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,0BAA0B;QAC7B,MAAM;QACN,QAAQ,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;QAC/C,EAAE,EAAE,QAAQ;QACZ,MAAM;QACN,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC;QACrC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;QACrE,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KACjE,CAAC,CAAA;IAEF,oBAAoB,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;IAErD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAEtD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,MAAM,SAAS,GAAc,EAAE,CAAA;IAC/B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACxB,QAAQ,GAAG,CAAC,CAAC,EAAE;YACX,KAAK,kBAAkB,CAAC;YACxB,KAAK,yBAAyB,CAAC;YAC/B,KAAK,2BAA2B;gBAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,2BAA2B,CAAC,CAAC,CAAA;gBACtF,MAAK;SACZ;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,SAAS,CAAA;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,MAAuB,EACvB,MAEC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;IAEpC,OAAO,mBAAmB,CAAC,MAAM,EAAE;QAC/B,GAAG,IAAI;QACP,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;QACtC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACxC,CAAC,CAAA;AACN,CAAC","sourcesContent":["import { MtArgumentError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message, PeersIndex } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n// @exported\nexport interface ForwardMessageOptions {\n /** Destination chat ID, username, phone, `\"me\"` or `\"self\"` */\n toChatId: InputPeerLike\n\n /**\n * Whether to forward silently (also applies to caption message).\n */\n silent?: boolean\n\n /**\n * If set, the forwarding will be scheduled to this date\n * (also applies to caption message).\n * When passing a number, a UNIX time in ms is expected.\n *\n * You can also pass `0x7FFFFFFE`, this will send the message\n * once the peer is online\n */\n schedule?: Date | number\n\n /**\n * Whether to clear draft after sending this message (only used for caption)\n *\n * @default `false`\n */\n clearDraft?: boolean\n\n /**\n * Whether to forward without author\n */\n noAuthor?: boolean\n\n /**\n * Whether to forward without caption (implies {@link noAuthor})\n */\n noCaption?: boolean\n\n /**\n * Whether to disallow further forwards of this message.\n *\n * Only for bots, works even if the target chat does not\n * have content protection.\n */\n forbidForwards?: boolean\n\n /**\n * Peer to use when sending the message.\n */\n sendAs?: InputPeerLike\n\n /**\n * Whether to dispatch the forwarded messages\n * to the client's update handler.\n */\n shouldDispatch?: true\n}\n\n/**\n * Forward one or more messages by their IDs.\n * You can forward no more than 100 messages at once.\n *\n * @param toChatId Destination chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param fromChatId Source chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param messages Message IDs\n * @param params Additional sending parameters\n * @returns Newly sent, forwarded messages in the destination chat.\n */\nexport async function forwardMessagesById(\n client: ITelegramClient,\n params: ForwardMessageOptions & {\n /** Source chat ID, username, phone, `\"me\"` or `\"self\"` */\n fromChatId: InputPeerLike\n /** Message IDs to forward */\n messages: number[]\n },\n): Promise<Message[]> {\n const { messages, toChatId, fromChatId, silent, schedule, forbidForwards, sendAs, noAuthor, noCaption } = params\n\n // sending more than 100 will not result in a server-sent\n // error, instead only first 100 IDs will be forwarded,\n // which is definitely not the best outcome.\n if (messages.length > 100) {\n throw new MtArgumentError('You can forward no more than 100 messages at once')\n }\n\n const toPeer = await resolvePeer(client, toChatId)\n\n const res = await client.call({\n _: 'messages.forwardMessages',\n toPeer,\n fromPeer: await resolvePeer(client, fromChatId),\n id: messages,\n silent,\n scheduleDate: normalizeDate(schedule),\n randomId: Array.from({ length: messages.length }, () => randomLong()),\n dropAuthor: noAuthor,\n dropMediaCaptions: noCaption,\n noforwards: forbidForwards,\n sendAs: sendAs ? await resolvePeer(client, sendAs) : undefined,\n })\n\n assertIsUpdatesGroup('messages.forwardMessages', res)\n\n client.handleClientUpdate(res, !params.shouldDispatch)\n\n const peers = PeersIndex.from(res)\n\n const forwarded: Message[] = []\n res.updates.forEach((upd) => {\n switch (upd._) {\n case 'updateNewMessage':\n case 'updateNewChannelMessage':\n case 'updateNewScheduledMessage':\n forwarded.push(new Message(upd.message, peers, upd._ === 'updateNewScheduledMessage'))\n break\n }\n })\n\n return forwarded\n}\n\n/**\n * Forward one or more {@link Message}s to another chat.\n *\n * > **Note**: all messages must be from the same chat.\n */\nexport async function forwardMessages(\n client: ITelegramClient,\n params: ForwardMessageOptions & {\n messages: Message[]\n },\n): Promise<Message[]> {\n const { messages, ...rest } = params\n\n return forwardMessagesById(client, {\n ...rest,\n fromChatId: messages[0].chat.inputPeer,\n messages: messages.map((it) => it.id),\n })\n}\n"]}
1
+ {"version":3,"file":"forward-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/messages/forward-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import { MtArgumentError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputPeerLike, Message, PeersIndex } from '../../types/index.js'\nimport { assertIsUpdatesGroup } from '../../updates/utils.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n// @exported\nexport interface ForwardMessageOptions {\n /** Destination chat ID, username, phone, `\"me\"` or `\"self\"` */\n toChatId: InputPeerLike\n\n /**\n * Whether to forward silently (also applies to caption message).\n */\n silent?: boolean\n\n /**\n * If set, the forwarding will be scheduled to this date\n * (also applies to caption message).\n * When passing a number, a UNIX time in ms is expected.\n *\n * You can also pass `0x7FFFFFFE`, this will send the message\n * once the peer is online\n */\n schedule?: Date | number\n\n /**\n * Whether to clear draft after sending this message (only used for caption)\n *\n * @default `false`\n */\n clearDraft?: boolean\n\n /**\n * Whether to forward without author\n */\n noAuthor?: boolean\n\n /**\n * Whether to forward without caption (implies {@link noAuthor})\n */\n noCaption?: boolean\n\n /**\n * Whether to disallow further forwards of this message.\n *\n * Only for bots, works even if the target chat does not\n * have content protection.\n */\n forbidForwards?: boolean\n\n /**\n * Peer to use when sending the message.\n */\n sendAs?: InputPeerLike\n\n /**\n * Whether to dispatch the forwarded messages\n * to the client's update handler.\n */\n shouldDispatch?: true\n}\n\n/**\n * Forward one or more messages by their IDs.\n * You can forward no more than 100 messages at once.\n *\n * @param toChatId Destination chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param fromChatId Source chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param messages Message IDs\n * @param params Additional sending parameters\n * @returns Newly sent, forwarded messages in the destination chat.\n */\nexport async function forwardMessagesById(\n client: ITelegramClient,\n params: ForwardMessageOptions & {\n /** Source chat ID, username, phone, `\"me\"` or `\"self\"` */\n fromChatId: InputPeerLike\n /** Message IDs to forward */\n messages: number[]\n },\n): Promise<Message[]> {\n const { messages, toChatId, fromChatId, silent, schedule, forbidForwards, sendAs, noAuthor, noCaption } = params\n\n // sending more than 100 will not result in a server-sent\n // error, instead only first 100 IDs will be forwarded,\n // which is definitely not the best outcome.\n if (messages.length > 100) {\n throw new MtArgumentError('You can forward no more than 100 messages at once')\n }\n\n const toPeer = await resolvePeer(client, toChatId)\n\n const res = await client.call({\n _: 'messages.forwardMessages',\n toPeer,\n fromPeer: await resolvePeer(client, fromChatId),\n id: messages,\n silent,\n scheduleDate: normalizeDate(schedule),\n randomId: Array.from({ length: messages.length }, () => randomLong()),\n dropAuthor: noAuthor,\n dropMediaCaptions: noCaption,\n noforwards: forbidForwards,\n sendAs: sendAs ? await resolvePeer(client, sendAs) : undefined,\n })\n\n assertIsUpdatesGroup('messages.forwardMessages', res)\n\n client.handleClientUpdate(res, !params.shouldDispatch)\n\n const peers = PeersIndex.from(res)\n\n const forwarded: Message[] = []\n res.updates.forEach((upd) => {\n switch (upd._) {\n case 'updateNewMessage':\n case 'updateNewChannelMessage':\n case 'updateNewScheduledMessage':\n forwarded.push(new Message(upd.message, peers, upd._ === 'updateNewScheduledMessage'))\n break\n }\n })\n\n return forwarded\n}\n\n/**\n * Forward one or more {@link Message}s to another chat.\n *\n * > **Note**: all messages must be from the same chat.\n */\nexport async function forwardMessages(\n client: ITelegramClient,\n params: ForwardMessageOptions & {\n messages: Message[]\n },\n): Promise<Message[]> {\n const { messages, ...rest } = params\n\n return forwardMessagesById(client, {\n ...rest,\n fromChatId: messages[0].chat.inputPeer,\n messages: messages.map((it) => it.id),\n })\n}\n"]}