@mtcute/core 0.10.2 → 0.12.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 (1309) 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 +199 -18
  5. package/cjs/highlevel/client.js +54 -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/_imports.js.map +1 -1
  10. package/cjs/highlevel/methods/_init.js.map +1 -1
  11. package/cjs/highlevel/methods/auth/start-test.js.map +1 -1
  12. package/cjs/highlevel/methods/auth/start.js.map +1 -1
  13. package/cjs/highlevel/methods/auth/utils.d.ts +3 -0
  14. package/cjs/highlevel/methods/auth/utils.js.map +1 -1
  15. package/cjs/highlevel/methods/bots/get-callback-answer.js.map +1 -1
  16. package/cjs/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
  17. package/cjs/highlevel/methods/bots/normalize-command-scope.d.ts +5 -1
  18. package/cjs/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
  19. package/cjs/highlevel/methods/bots/set-my-commands.js.map +1 -1
  20. package/cjs/highlevel/methods/chats/add-chat-members.js.map +1 -1
  21. package/cjs/highlevel/methods/chats/ban-chat-member.js.map +1 -1
  22. package/cjs/highlevel/methods/chats/batched-queries.d.ts +10 -1
  23. package/cjs/highlevel/methods/chats/batched-queries.js.map +1 -1
  24. package/cjs/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
  25. package/cjs/highlevel/methods/chats/delete-history.js.map +1 -1
  26. package/cjs/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
  27. package/cjs/highlevel/methods/chats/get-chat-member.js.map +1 -1
  28. package/cjs/highlevel/methods/chats/get-chat-members.js.map +1 -1
  29. package/cjs/highlevel/methods/chats/get-chat-preview.js.map +1 -1
  30. package/cjs/highlevel/methods/chats/get-chat.js.map +1 -1
  31. package/cjs/highlevel/methods/chats/get-full-chat.d.ts +2 -2
  32. package/cjs/highlevel/methods/chats/get-full-chat.js +1 -1
  33. package/cjs/highlevel/methods/chats/get-full-chat.js.map +1 -1
  34. package/cjs/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
  35. package/cjs/highlevel/methods/chats/get-similar-channels.js.map +1 -1
  36. package/cjs/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
  37. package/cjs/highlevel/methods/chats/iter-chat-members.js.map +1 -1
  38. package/cjs/highlevel/methods/chats/join-chat.js.map +1 -1
  39. package/cjs/highlevel/methods/chats/kick-chat-member.js.map +1 -1
  40. package/cjs/highlevel/methods/chats/leave-chat.js.map +1 -1
  41. package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
  42. package/cjs/highlevel/methods/chats/reorder-usernames.js.map +1 -1
  43. package/cjs/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
  44. package/cjs/highlevel/methods/chats/save-draft.js.map +1 -1
  45. package/cjs/highlevel/methods/chats/set-chat-color.js.map +1 -1
  46. package/cjs/highlevel/methods/chats/set-chat-photo.js.map +1 -1
  47. package/cjs/highlevel/methods/chats/set-chat-title.js.map +1 -1
  48. package/cjs/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
  49. package/cjs/highlevel/methods/chats/unarchive-chats.js.map +1 -1
  50. package/cjs/highlevel/methods/chats/unban-chat-member.js.map +1 -1
  51. package/cjs/highlevel/methods/contacts/delete-contacts.js.map +1 -1
  52. package/cjs/highlevel/methods/dialogs/create-folder.js.map +1 -1
  53. package/cjs/highlevel/methods/dialogs/edit-folder.js.map +1 -1
  54. package/cjs/highlevel/methods/dialogs/find-folder.js.map +1 -1
  55. package/cjs/highlevel/methods/dialogs/get-folders.d.ts +3 -0
  56. package/cjs/highlevel/methods/dialogs/get-folders.js.map +1 -1
  57. package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  58. package/cjs/highlevel/methods/files/download-buffer.js.map +1 -1
  59. package/cjs/highlevel/methods/files/download-iterable.js +1 -1
  60. package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
  61. package/cjs/highlevel/methods/files/download-node-stream.js.map +1 -1
  62. package/cjs/highlevel/methods/files/download-stream.js.map +1 -1
  63. package/cjs/highlevel/methods/files/normalize-file-to-document.d.ts +9 -1
  64. package/cjs/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
  65. package/cjs/highlevel/methods/files/normalize-input-file.js.map +1 -1
  66. package/cjs/highlevel/methods/files/normalize-input-media.d.ts +1 -0
  67. package/cjs/highlevel/methods/files/normalize-input-media.js +12 -12
  68. package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
  69. package/cjs/highlevel/methods/files/upload-file.js +7 -6
  70. package/cjs/highlevel/methods/files/upload-file.js.map +1 -1
  71. package/cjs/highlevel/methods/files/upload-media.js.map +1 -1
  72. package/cjs/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
  73. package/cjs/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
  74. package/cjs/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
  75. package/cjs/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
  76. package/cjs/highlevel/methods/messages/_business-connection.d.ts +7 -0
  77. package/cjs/highlevel/methods/messages/_business-connection.js +42 -0
  78. package/cjs/highlevel/methods/messages/_business-connection.js.map +1 -0
  79. package/cjs/highlevel/methods/messages/close-poll.js +1 -1
  80. package/cjs/highlevel/methods/messages/close-poll.js.map +1 -1
  81. package/cjs/highlevel/methods/messages/delete-messages.js.map +1 -1
  82. package/cjs/highlevel/methods/messages/edit-inline-message.js.map +1 -1
  83. package/cjs/highlevel/methods/messages/edit-message.d.ts +1 -0
  84. package/cjs/highlevel/methods/messages/edit-message.js +2 -1
  85. package/cjs/highlevel/methods/messages/edit-message.js.map +1 -1
  86. package/cjs/highlevel/methods/messages/find-in-update.d.ts +13 -1
  87. package/cjs/highlevel/methods/messages/find-in-update.js +7 -2
  88. package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
  89. package/cjs/highlevel/methods/messages/forward-messages.d.ts +5 -0
  90. package/cjs/highlevel/methods/messages/forward-messages.js +2 -0
  91. package/cjs/highlevel/methods/messages/forward-messages.js.map +1 -1
  92. package/cjs/highlevel/methods/messages/get-all-scheduled-messages.d.ts +8 -0
  93. package/cjs/highlevel/methods/messages/get-all-scheduled-messages.js +32 -0
  94. package/cjs/highlevel/methods/messages/get-all-scheduled-messages.js.map +1 -0
  95. package/cjs/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
  96. package/cjs/highlevel/methods/messages/get-discussion-message.d.ts +4 -0
  97. package/cjs/highlevel/methods/messages/get-discussion-message.js.map +1 -1
  98. package/cjs/highlevel/methods/messages/get-history.js +5 -1
  99. package/cjs/highlevel/methods/messages/get-history.js.map +1 -1
  100. package/cjs/highlevel/methods/messages/get-message-by-link.js.map +1 -1
  101. package/cjs/highlevel/methods/messages/get-message-group.js.map +1 -1
  102. package/cjs/highlevel/methods/messages/get-message-reactions.js.map +1 -1
  103. package/cjs/highlevel/methods/messages/get-messages.js.map +1 -1
  104. package/cjs/highlevel/methods/messages/get-reply-to.js.map +1 -1
  105. package/cjs/highlevel/methods/messages/iter-history.js.map +1 -1
  106. package/cjs/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
  107. package/cjs/highlevel/methods/messages/iter-search-global.js +2 -1
  108. package/cjs/highlevel/methods/messages/iter-search-global.js.map +1 -1
  109. package/cjs/highlevel/methods/messages/iter-search-messages.js.map +1 -1
  110. package/cjs/highlevel/methods/messages/read-history.js.map +1 -1
  111. package/cjs/highlevel/methods/messages/search-global.d.ts +4 -0
  112. package/cjs/highlevel/methods/messages/search-global.js +2 -1
  113. package/cjs/highlevel/methods/messages/search-global.js.map +1 -1
  114. package/cjs/highlevel/methods/messages/send-answer.js.map +1 -1
  115. package/cjs/highlevel/methods/messages/send-comment.js.map +1 -1
  116. package/cjs/highlevel/methods/messages/send-common.d.ts +28 -0
  117. package/cjs/highlevel/methods/messages/send-common.js +21 -1
  118. package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
  119. package/cjs/highlevel/methods/messages/send-copy-group.js.map +1 -1
  120. package/cjs/highlevel/methods/messages/send-copy.js.map +1 -1
  121. package/cjs/highlevel/methods/messages/send-media-group.js +5 -2
  122. package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
  123. package/cjs/highlevel/methods/messages/send-media.js +4 -2
  124. package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
  125. package/cjs/highlevel/methods/messages/send-quote.js.map +1 -1
  126. package/cjs/highlevel/methods/messages/send-text.js +4 -2
  127. package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
  128. package/cjs/highlevel/methods/messages/send-typing.d.ts +4 -0
  129. package/cjs/highlevel/methods/messages/send-typing.js +2 -1
  130. package/cjs/highlevel/methods/messages/send-typing.js.map +1 -1
  131. package/cjs/highlevel/methods/messages/send-vote.js.map +1 -1
  132. package/cjs/highlevel/methods/messages/translate-text.js.map +1 -1
  133. package/cjs/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  134. package/cjs/highlevel/methods/misc/chain-id.d.ts +4 -1
  135. package/cjs/highlevel/methods/misc/get-collectible-info.d.ts +6 -0
  136. package/cjs/highlevel/methods/misc/get-collectible-info.js +26 -0
  137. package/cjs/highlevel/methods/misc/get-collectible-info.js.map +1 -0
  138. package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
  139. package/cjs/highlevel/methods/misc/normalize-text.d.ts +5 -1
  140. package/cjs/highlevel/methods/misc/normalize-text.js.map +1 -1
  141. package/cjs/highlevel/methods/misc/with-params.js.map +1 -1
  142. package/cjs/highlevel/methods/password/change-cloud-password.js.map +1 -1
  143. package/cjs/highlevel/methods/password/enable-cloud-password.js.map +1 -1
  144. package/cjs/highlevel/methods/password/remove-cloud-password.js.map +1 -1
  145. package/cjs/highlevel/methods/premium/can-apply-boost.js.map +1 -1
  146. package/cjs/highlevel/methods/premium/create-business-chat-link.d.ts +12 -0
  147. package/cjs/highlevel/methods/premium/create-business-chat-link.js +26 -0
  148. package/cjs/highlevel/methods/premium/create-business-chat-link.js.map +1 -0
  149. package/cjs/highlevel/methods/premium/edit-business-chat-link.d.ts +20 -0
  150. package/cjs/highlevel/methods/premium/edit-business-chat-link.js +42 -0
  151. package/cjs/highlevel/methods/premium/edit-business-chat-link.js.map +1 -0
  152. package/cjs/highlevel/methods/premium/get-business-chat-links.d.ts +6 -0
  153. package/cjs/highlevel/methods/premium/get-business-chat-links.js +14 -0
  154. package/cjs/highlevel/methods/premium/get-business-chat-links.js.map +1 -0
  155. package/cjs/highlevel/methods/premium/get-business-connection.d.ts +8 -0
  156. package/cjs/highlevel/methods/premium/get-business-connection.js +25 -0
  157. package/cjs/highlevel/methods/premium/get-business-connection.js.map +1 -0
  158. package/cjs/highlevel/methods/premium/iter-boosters.js.map +1 -1
  159. package/cjs/highlevel/methods/premium/set-business-intro.d.ts +22 -0
  160. package/cjs/highlevel/methods/premium/set-business-intro.js +42 -0
  161. package/cjs/highlevel/methods/premium/set-business-intro.js.map +1 -0
  162. package/cjs/highlevel/methods/premium/set-business-work-hours.d.ts +18 -0
  163. package/cjs/highlevel/methods/premium/set-business-work-hours.js +33 -0
  164. package/cjs/highlevel/methods/premium/set-business-work-hours.js.map +1 -0
  165. package/cjs/highlevel/methods/stickers/_utils.d.ts +10 -0
  166. package/cjs/highlevel/methods/stickers/_utils.js +27 -0
  167. package/cjs/highlevel/methods/stickers/_utils.js.map +1 -0
  168. package/cjs/highlevel/methods/stickers/add-sticker-to-set.d.ts +1 -2
  169. package/cjs/highlevel/methods/stickers/add-sticker-to-set.js +3 -17
  170. package/cjs/highlevel/methods/stickers/add-sticker-to-set.js.map +1 -1
  171. package/cjs/highlevel/methods/stickers/create-sticker-set.d.ts +0 -3
  172. package/cjs/highlevel/methods/stickers/create-sticker-set.js +2 -19
  173. package/cjs/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
  174. package/cjs/highlevel/methods/stickers/delete-sticker-from-set.d.ts +1 -2
  175. package/cjs/highlevel/methods/stickers/delete-sticker-from-set.js +1 -2
  176. package/cjs/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
  177. package/cjs/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
  178. package/cjs/highlevel/methods/stickers/get-installed-stickers.d.ts +1 -2
  179. package/cjs/highlevel/methods/stickers/get-installed-stickers.js +1 -2
  180. package/cjs/highlevel/methods/stickers/get-installed-stickers.js.map +1 -1
  181. package/cjs/highlevel/methods/stickers/get-my-sticker-sets.d.ts +13 -0
  182. package/cjs/highlevel/methods/stickers/get-my-sticker-sets.js +24 -0
  183. package/cjs/highlevel/methods/stickers/get-my-sticker-sets.js.map +1 -0
  184. package/cjs/highlevel/methods/stickers/get-sticker-set.d.ts +2 -2
  185. package/cjs/highlevel/methods/stickers/get-sticker-set.js +2 -2
  186. package/cjs/highlevel/methods/stickers/get-sticker-set.js.map +1 -1
  187. package/cjs/highlevel/methods/stickers/move-sticker-in-set.d.ts +2 -3
  188. package/cjs/highlevel/methods/stickers/move-sticker-in-set.js +2 -3
  189. package/cjs/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
  190. package/cjs/highlevel/methods/stickers/replace-sticker-in-set.d.ts +24 -0
  191. package/cjs/highlevel/methods/stickers/replace-sticker-in-set.js +32 -0
  192. package/cjs/highlevel/methods/stickers/replace-sticker-in-set.js.map +1 -0
  193. package/cjs/highlevel/methods/stories/can-send-story.js.map +1 -1
  194. package/cjs/highlevel/methods/stories/edit-story.js.map +1 -1
  195. package/cjs/highlevel/methods/stories/find-in-update.d.ts +5 -1
  196. package/cjs/highlevel/methods/stories/find-in-update.js.map +1 -1
  197. package/cjs/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
  198. package/cjs/highlevel/methods/stories/iter-all-stories.js.map +1 -1
  199. package/cjs/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
  200. package/cjs/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
  201. package/cjs/highlevel/methods/stories/send-story.js.map +1 -1
  202. package/cjs/highlevel/methods/users/delete-profile-photos.js.map +1 -1
  203. package/cjs/highlevel/methods/users/get-users.js.map +1 -1
  204. package/cjs/highlevel/methods/users/iter-profile-photos.js.map +1 -1
  205. package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  206. package/cjs/highlevel/methods/users/resolve-peer.js.map +1 -1
  207. package/cjs/highlevel/methods/users/set-my-birthday.d.ts +12 -0
  208. package/cjs/highlevel/methods/users/set-my-birthday.js +22 -0
  209. package/cjs/highlevel/methods/users/set-my-birthday.js.map +1 -0
  210. package/cjs/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
  211. package/cjs/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
  212. package/cjs/highlevel/methods.d.ts +12 -0
  213. package/cjs/highlevel/methods.js +33 -3
  214. package/cjs/highlevel/methods.js.map +1 -1
  215. package/cjs/highlevel/storage/service/current-user.js +2 -0
  216. package/cjs/highlevel/storage/service/current-user.js.map +1 -1
  217. package/cjs/highlevel/storage/service/peers.js +5 -1
  218. package/cjs/highlevel/storage/service/peers.js.map +1 -1
  219. package/cjs/highlevel/storage/service/ref-messages.js +3 -0
  220. package/cjs/highlevel/storage/service/ref-messages.js.map +1 -1
  221. package/cjs/highlevel/storage/service/updates.js +1 -0
  222. package/cjs/highlevel/storage/service/updates.js.map +1 -1
  223. package/cjs/highlevel/storage/storage.d.ts +8 -3
  224. package/cjs/highlevel/storage/storage.js +17 -4
  225. package/cjs/highlevel/storage/storage.js.map +1 -1
  226. package/cjs/highlevel/types/auth/sent-code.d.ts +7 -2
  227. package/cjs/highlevel/types/auth/sent-code.js +15 -0
  228. package/cjs/highlevel/types/auth/sent-code.js.map +1 -1
  229. package/cjs/highlevel/types/bots/game-high-score.js +2 -0
  230. package/cjs/highlevel/types/bots/game-high-score.js.map +1 -1
  231. package/cjs/highlevel/types/bots/inline-message/factories.d.ts +5 -1
  232. package/cjs/highlevel/types/bots/inline-message/factories.js.map +1 -1
  233. package/cjs/highlevel/types/bots/inline-result/factories.d.ts +4 -1
  234. package/cjs/highlevel/types/bots/inline-result/factories.js.map +1 -1
  235. package/cjs/highlevel/types/bots/keyboards/builder.js +2 -1
  236. package/cjs/highlevel/types/bots/keyboards/builder.js.map +1 -1
  237. package/cjs/highlevel/types/bots/keyboards/factories.d.ts +7 -1
  238. package/cjs/highlevel/types/bots/keyboards/factories.js.map +1 -1
  239. package/cjs/highlevel/types/calls/discard-reason.d.ts +5 -0
  240. package/cjs/highlevel/types/calls/discard-reason.js.map +1 -1
  241. package/cjs/highlevel/types/conversation.js +13 -7
  242. package/cjs/highlevel/types/conversation.js.map +1 -1
  243. package/cjs/highlevel/types/errors.js +3 -0
  244. package/cjs/highlevel/types/errors.js.map +1 -1
  245. package/cjs/highlevel/types/files/file-location.js +3 -0
  246. package/cjs/highlevel/types/files/file-location.js.map +1 -1
  247. package/cjs/highlevel/types/files/uploaded-file.d.ts +2 -0
  248. package/cjs/highlevel/types/files/uploaded-file.js +1 -1
  249. package/cjs/highlevel/types/files/uploaded-file.js.map +1 -1
  250. package/cjs/highlevel/types/files/utils.d.ts +6 -5
  251. package/cjs/highlevel/types/files/utils.js.map +1 -1
  252. package/cjs/highlevel/types/files/web-document.js +1 -0
  253. package/cjs/highlevel/types/files/web-document.js.map +1 -1
  254. package/cjs/highlevel/types/media/audio.js +3 -2
  255. package/cjs/highlevel/types/media/audio.js.map +1 -1
  256. package/cjs/highlevel/types/media/contact.js +2 -1
  257. package/cjs/highlevel/types/media/contact.js.map +1 -1
  258. package/cjs/highlevel/types/media/dice.js +125 -124
  259. package/cjs/highlevel/types/media/dice.js.map +1 -1
  260. package/cjs/highlevel/types/media/document-utils.d.ts +5 -0
  261. package/cjs/highlevel/types/media/document-utils.js +9 -2
  262. package/cjs/highlevel/types/media/document-utils.js.map +1 -1
  263. package/cjs/highlevel/types/media/document.js +2 -4
  264. package/cjs/highlevel/types/media/document.js.map +1 -1
  265. package/cjs/highlevel/types/media/game.js +2 -1
  266. package/cjs/highlevel/types/media/game.js.map +1 -1
  267. package/cjs/highlevel/types/media/input-media/types.d.ts +2 -2
  268. package/cjs/highlevel/types/media/input-media/types.js.map +1 -1
  269. package/cjs/highlevel/types/media/invoice.js +4 -1
  270. package/cjs/highlevel/types/media/invoice.js.map +1 -1
  271. package/cjs/highlevel/types/media/location.js +4 -5
  272. package/cjs/highlevel/types/media/location.js.map +1 -1
  273. package/cjs/highlevel/types/media/photo.js +8 -1
  274. package/cjs/highlevel/types/media/photo.js.map +1 -1
  275. package/cjs/highlevel/types/media/poll.d.ts +17 -6
  276. package/cjs/highlevel/types/media/poll.js +69 -19
  277. package/cjs/highlevel/types/media/poll.js.map +1 -1
  278. package/cjs/highlevel/types/media/sticker.js +3 -1
  279. package/cjs/highlevel/types/media/sticker.js.map +1 -1
  280. package/cjs/highlevel/types/media/story.js +3 -1
  281. package/cjs/highlevel/types/media/story.js.map +1 -1
  282. package/cjs/highlevel/types/media/thumbnail.js +35 -22
  283. package/cjs/highlevel/types/media/thumbnail.js.map +1 -1
  284. package/cjs/highlevel/types/media/venue.js +2 -1
  285. package/cjs/highlevel/types/media/venue.js.map +1 -1
  286. package/cjs/highlevel/types/media/video.js +3 -1
  287. package/cjs/highlevel/types/media/video.js.map +1 -1
  288. package/cjs/highlevel/types/media/voice.js +2 -1
  289. package/cjs/highlevel/types/media/voice.js.map +1 -1
  290. package/cjs/highlevel/types/media/web-page.js +2 -1
  291. package/cjs/highlevel/types/media/web-page.js.map +1 -1
  292. package/cjs/highlevel/types/messages/dialog.js +4 -12
  293. package/cjs/highlevel/types/messages/dialog.js.map +1 -1
  294. package/cjs/highlevel/types/messages/draft-message.js +1 -0
  295. package/cjs/highlevel/types/messages/draft-message.js.map +1 -1
  296. package/cjs/highlevel/types/messages/input-message-id.d.ts +5 -0
  297. package/cjs/highlevel/types/messages/message-action.d.ts +19 -2
  298. package/cjs/highlevel/types/messages/message-action.js +6 -0
  299. package/cjs/highlevel/types/messages/message-action.js.map +1 -1
  300. package/cjs/highlevel/types/messages/message-entity.js +2 -0
  301. package/cjs/highlevel/types/messages/message-entity.js.map +1 -1
  302. package/cjs/highlevel/types/messages/message-forward.js +2 -0
  303. package/cjs/highlevel/types/messages/message-forward.js.map +1 -1
  304. package/cjs/highlevel/types/messages/message-media.d.ts +4 -0
  305. package/cjs/highlevel/types/messages/message-media.js.map +1 -1
  306. package/cjs/highlevel/types/messages/message-reactions.js +4 -0
  307. package/cjs/highlevel/types/messages/message-reactions.js.map +1 -1
  308. package/cjs/highlevel/types/messages/message-replies.js +2 -0
  309. package/cjs/highlevel/types/messages/message-replies.js.map +1 -1
  310. package/cjs/highlevel/types/messages/message.d.ts +59 -1
  311. package/cjs/highlevel/types/messages/message.js +102 -1
  312. package/cjs/highlevel/types/messages/message.js.map +1 -1
  313. package/cjs/highlevel/types/messages/replied-message.js +2 -0
  314. package/cjs/highlevel/types/messages/replied-message.js.map +1 -1
  315. package/cjs/highlevel/types/misc/collectible-info.d.ts +27 -0
  316. package/cjs/highlevel/types/misc/collectible-info.js +46 -0
  317. package/cjs/highlevel/types/misc/collectible-info.js.map +1 -0
  318. package/cjs/highlevel/types/misc/entities.d.ts +7 -0
  319. package/cjs/highlevel/types/misc/entities.js +15 -0
  320. package/cjs/highlevel/types/misc/entities.js.map +1 -1
  321. package/cjs/highlevel/types/misc/index.d.ts +1 -0
  322. package/cjs/highlevel/types/misc/index.js +1 -0
  323. package/cjs/highlevel/types/misc/index.js.map +1 -1
  324. package/cjs/highlevel/types/misc/sticker-set.d.ts +8 -1
  325. package/cjs/highlevel/types/misc/sticker-set.js +43 -6
  326. package/cjs/highlevel/types/misc/sticker-set.js.map +1 -1
  327. package/cjs/highlevel/types/misc/takeout-session.js +5 -0
  328. package/cjs/highlevel/types/misc/takeout-session.js.map +1 -1
  329. package/cjs/highlevel/types/peers/chat-colors.js +2 -0
  330. package/cjs/highlevel/types/peers/chat-colors.js.map +1 -1
  331. package/cjs/highlevel/types/peers/chat-event/actions.d.ts +3 -0
  332. package/cjs/highlevel/types/peers/chat-event/actions.js.map +1 -1
  333. package/cjs/highlevel/types/peers/chat-event/filters.d.ts +2 -0
  334. package/cjs/highlevel/types/peers/chat-event/filters.js.map +1 -1
  335. package/cjs/highlevel/types/peers/chat-event/index.js +2 -0
  336. package/cjs/highlevel/types/peers/chat-event/index.js.map +1 -1
  337. package/cjs/highlevel/types/peers/chat-invite-link-member.js +2 -0
  338. package/cjs/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
  339. package/cjs/highlevel/types/peers/chat-invite-link.js +2 -0
  340. package/cjs/highlevel/types/peers/chat-invite-link.js.map +1 -1
  341. package/cjs/highlevel/types/peers/chat-location.js +1 -0
  342. package/cjs/highlevel/types/peers/chat-location.js.map +1 -1
  343. package/cjs/highlevel/types/peers/chat-member.js +2 -0
  344. package/cjs/highlevel/types/peers/chat-member.js.map +1 -1
  345. package/cjs/highlevel/types/peers/chat-permissions.js +1 -0
  346. package/cjs/highlevel/types/peers/chat-permissions.js.map +1 -1
  347. package/cjs/highlevel/types/peers/chat-photo.js +5 -0
  348. package/cjs/highlevel/types/peers/chat-photo.js.map +1 -1
  349. package/cjs/highlevel/types/peers/chat-preview.js +2 -0
  350. package/cjs/highlevel/types/peers/chat-preview.js.map +1 -1
  351. package/cjs/highlevel/types/peers/chat.d.ts +7 -93
  352. package/cjs/highlevel/types/peers/chat.js +10 -192
  353. package/cjs/highlevel/types/peers/chat.js.map +1 -1
  354. package/cjs/highlevel/types/peers/forum-topic.js +9 -6
  355. package/cjs/highlevel/types/peers/forum-topic.js.map +1 -1
  356. package/cjs/highlevel/types/peers/full-chat.d.ts +103 -0
  357. package/cjs/highlevel/types/peers/full-chat.js +237 -0
  358. package/cjs/highlevel/types/peers/full-chat.js.map +1 -0
  359. package/cjs/highlevel/types/peers/index.d.ts +1 -0
  360. package/cjs/highlevel/types/peers/index.js +1 -0
  361. package/cjs/highlevel/types/peers/index.js.map +1 -1
  362. package/cjs/highlevel/types/peers/peer.js.map +1 -1
  363. package/cjs/highlevel/types/peers/peers-index.js +3 -1
  364. package/cjs/highlevel/types/peers/peers-index.js.map +1 -1
  365. package/cjs/highlevel/types/peers/user.d.ts +5 -0
  366. package/cjs/highlevel/types/peers/user.js +12 -1
  367. package/cjs/highlevel/types/peers/user.js.map +1 -1
  368. package/cjs/highlevel/types/premium/boost-slot.js +2 -0
  369. package/cjs/highlevel/types/premium/boost-slot.js.map +1 -1
  370. package/cjs/highlevel/types/premium/boost-stats.js +1 -0
  371. package/cjs/highlevel/types/premium/boost-stats.js.map +1 -1
  372. package/cjs/highlevel/types/premium/boost.js +2 -0
  373. package/cjs/highlevel/types/premium/boost.js.map +1 -1
  374. package/cjs/highlevel/types/premium/business-account.d.ts +19 -0
  375. package/cjs/highlevel/types/premium/business-account.js +45 -0
  376. package/cjs/highlevel/types/premium/business-account.js.map +1 -0
  377. package/cjs/highlevel/types/premium/business-chat-link.d.ts +19 -0
  378. package/cjs/highlevel/types/premium/business-chat-link.js +39 -0
  379. package/cjs/highlevel/types/premium/business-chat-link.js.map +1 -0
  380. package/cjs/highlevel/types/premium/business-connection.d.ts +23 -0
  381. package/cjs/highlevel/types/premium/business-connection.js +45 -0
  382. package/cjs/highlevel/types/premium/business-connection.js.map +1 -0
  383. package/cjs/highlevel/types/premium/business-intro.d.ts +22 -0
  384. package/cjs/highlevel/types/premium/business-intro.js +43 -0
  385. package/cjs/highlevel/types/premium/business-intro.js.map +1 -0
  386. package/cjs/highlevel/types/premium/business-location.d.ts +10 -0
  387. package/cjs/highlevel/types/premium/business-location.js +26 -0
  388. package/cjs/highlevel/types/premium/business-location.js.map +1 -0
  389. package/cjs/highlevel/types/premium/business-work-hours.d.ts +42 -0
  390. package/cjs/highlevel/types/premium/business-work-hours.js +141 -0
  391. package/cjs/highlevel/types/premium/business-work-hours.js.map +1 -0
  392. package/cjs/highlevel/types/premium/index.d.ts +5 -0
  393. package/cjs/highlevel/types/premium/index.js +5 -0
  394. package/cjs/highlevel/types/premium/index.js.map +1 -1
  395. package/cjs/highlevel/types/reactions/emoji-status.js +1 -0
  396. package/cjs/highlevel/types/reactions/emoji-status.js.map +1 -1
  397. package/cjs/highlevel/types/reactions/peer-reaction.js +2 -0
  398. package/cjs/highlevel/types/reactions/peer-reaction.js.map +1 -1
  399. package/cjs/highlevel/types/reactions/reaction-count.js +1 -0
  400. package/cjs/highlevel/types/reactions/reaction-count.js.map +1 -1
  401. package/cjs/highlevel/types/reactions/types.js.map +1 -1
  402. package/cjs/highlevel/types/stories/all-stories.d.ts +2 -2
  403. package/cjs/highlevel/types/stories/all-stories.js +3 -1
  404. package/cjs/highlevel/types/stories/all-stories.js.map +1 -1
  405. package/cjs/highlevel/types/stories/interactive/base.js +1 -0
  406. package/cjs/highlevel/types/stories/interactive/base.js.map +1 -1
  407. package/cjs/highlevel/types/stories/interactive/channel-post.js +3 -1
  408. package/cjs/highlevel/types/stories/interactive/channel-post.js.map +1 -1
  409. package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
  410. package/cjs/highlevel/types/stories/interactive/input.js +1 -0
  411. package/cjs/highlevel/types/stories/interactive/input.js.map +1 -1
  412. package/cjs/highlevel/types/stories/interactive/location.js +2 -1
  413. package/cjs/highlevel/types/stories/interactive/location.js.map +1 -1
  414. package/cjs/highlevel/types/stories/interactive/reaction.js +2 -1
  415. package/cjs/highlevel/types/stories/interactive/reaction.js.map +1 -1
  416. package/cjs/highlevel/types/stories/interactive/venue.js +2 -1
  417. package/cjs/highlevel/types/stories/interactive/venue.js.map +1 -1
  418. package/cjs/highlevel/types/stories/peer-stories.js +2 -0
  419. package/cjs/highlevel/types/stories/peer-stories.js.map +1 -1
  420. package/cjs/highlevel/types/stories/stealth-mode.js +1 -0
  421. package/cjs/highlevel/types/stories/stealth-mode.js.map +1 -1
  422. package/cjs/highlevel/types/stories/story-interactions.js +2 -0
  423. package/cjs/highlevel/types/stories/story-interactions.js.map +1 -1
  424. package/cjs/highlevel/types/stories/story-viewer.d.ts +1 -1
  425. package/cjs/highlevel/types/stories/story-viewer.js +6 -0
  426. package/cjs/highlevel/types/stories/story-viewer.js.map +1 -1
  427. package/cjs/highlevel/types/stories/story.js +2 -0
  428. package/cjs/highlevel/types/stories/story.js.map +1 -1
  429. package/cjs/highlevel/types/updates/bot-chat-join-request.js +2 -0
  430. package/cjs/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
  431. package/cjs/highlevel/types/updates/bot-reaction.js +4 -0
  432. package/cjs/highlevel/types/updates/bot-reaction.js.map +1 -1
  433. package/cjs/highlevel/types/updates/bot-stopped.js +2 -0
  434. package/cjs/highlevel/types/updates/bot-stopped.js.map +1 -1
  435. package/cjs/highlevel/types/updates/business-message.d.ts +18 -0
  436. package/cjs/highlevel/types/updates/business-message.js +35 -0
  437. package/cjs/highlevel/types/updates/business-message.js.map +1 -0
  438. package/cjs/highlevel/types/updates/callback-query.js +4 -0
  439. package/cjs/highlevel/types/updates/callback-query.js.map +1 -1
  440. package/cjs/highlevel/types/updates/chat-join-request.js +2 -0
  441. package/cjs/highlevel/types/updates/chat-join-request.js.map +1 -1
  442. package/cjs/highlevel/types/updates/chat-member-update.js +2 -0
  443. package/cjs/highlevel/types/updates/chat-member-update.js.map +1 -1
  444. package/cjs/highlevel/types/updates/chosen-inline-result.js +2 -0
  445. package/cjs/highlevel/types/updates/chosen-inline-result.js.map +1 -1
  446. package/cjs/highlevel/types/updates/delete-business-message-update.d.ts +21 -0
  447. package/cjs/highlevel/types/updates/delete-business-message-update.js +37 -0
  448. package/cjs/highlevel/types/updates/delete-business-message-update.js.map +1 -0
  449. package/cjs/highlevel/types/updates/delete-message-update.js +1 -0
  450. package/cjs/highlevel/types/updates/delete-message-update.js.map +1 -1
  451. package/cjs/highlevel/types/updates/delete-story-update.js +2 -0
  452. package/cjs/highlevel/types/updates/delete-story-update.js.map +1 -1
  453. package/cjs/highlevel/types/updates/history-read-update.js +1 -0
  454. package/cjs/highlevel/types/updates/history-read-update.js.map +1 -1
  455. package/cjs/highlevel/types/updates/index.d.ts +19 -2
  456. package/cjs/highlevel/types/updates/index.js +5 -1
  457. package/cjs/highlevel/types/updates/index.js.map +1 -1
  458. package/cjs/highlevel/types/updates/inline-query.js +2 -0
  459. package/cjs/highlevel/types/updates/inline-query.js.map +1 -1
  460. package/cjs/highlevel/types/updates/parse-update.d.ts +4 -1
  461. package/cjs/highlevel/types/updates/parse-update.js +8 -0
  462. package/cjs/highlevel/types/updates/parse-update.js.map +1 -1
  463. package/cjs/highlevel/types/updates/poll-update.js +4 -2
  464. package/cjs/highlevel/types/updates/poll-update.js.map +1 -1
  465. package/cjs/highlevel/types/updates/poll-vote.js +2 -0
  466. package/cjs/highlevel/types/updates/poll-vote.js.map +1 -1
  467. package/cjs/highlevel/types/updates/pre-checkout-query.js +2 -0
  468. package/cjs/highlevel/types/updates/pre-checkout-query.js.map +1 -1
  469. package/cjs/highlevel/types/updates/story-update.js +2 -0
  470. package/cjs/highlevel/types/updates/story-update.js.map +1 -1
  471. package/cjs/highlevel/types/updates/user-status-update.js +1 -0
  472. package/cjs/highlevel/types/updates/user-status-update.js.map +1 -1
  473. package/cjs/highlevel/types/updates/user-typing-update.js +1 -0
  474. package/cjs/highlevel/types/updates/user-typing-update.js.map +1 -1
  475. package/cjs/highlevel/updates/manager.d.ts +0 -1
  476. package/cjs/highlevel/updates/manager.js +57 -30
  477. package/cjs/highlevel/updates/manager.js.map +1 -1
  478. package/cjs/highlevel/updates/parsed.js +8 -2
  479. package/cjs/highlevel/updates/parsed.js.map +1 -1
  480. package/cjs/highlevel/updates/types.d.ts +57 -0
  481. package/cjs/highlevel/updates/utils.d.ts +2 -0
  482. package/cjs/highlevel/updates/utils.js.map +1 -1
  483. package/cjs/highlevel/utils/convert-file-id.js.map +1 -1
  484. package/cjs/highlevel/utils/entities.js.map +1 -1
  485. package/cjs/highlevel/utils/file-type.d.ts +1 -0
  486. package/cjs/highlevel/utils/file-type.js +35 -1
  487. package/cjs/highlevel/utils/file-type.js.map +1 -1
  488. package/cjs/highlevel/utils/file-utils.js +1 -1
  489. package/cjs/highlevel/utils/file-utils.js.map +1 -1
  490. package/cjs/highlevel/utils/inline-utils.js.map +1 -1
  491. package/cjs/highlevel/utils/inspectable.js +7 -0
  492. package/cjs/highlevel/utils/inspectable.js.map +1 -1
  493. package/cjs/highlevel/utils/memoize.js.map +1 -1
  494. package/cjs/highlevel/utils/peer-utils.js.map +1 -1
  495. package/cjs/highlevel/utils/query-batcher.js.map +1 -1
  496. package/cjs/highlevel/utils/rps-meter.js +3 -0
  497. package/cjs/highlevel/utils/rps-meter.js.map +1 -1
  498. package/cjs/highlevel/utils/stream-utils.js.map +1 -1
  499. package/cjs/highlevel/utils/string-session.d.ts +1 -2
  500. package/cjs/highlevel/utils/string-session.js +27 -7
  501. package/cjs/highlevel/utils/string-session.js.map +1 -1
  502. package/cjs/highlevel/utils/voice-utils.js.map +1 -1
  503. package/cjs/highlevel/worker/app-config.d.ts +2 -3
  504. package/cjs/highlevel/worker/app-config.js +6 -3
  505. package/cjs/highlevel/worker/app-config.js.map +1 -1
  506. package/cjs/highlevel/worker/errors.js.map +1 -1
  507. package/cjs/highlevel/worker/index.js +6 -0
  508. package/cjs/highlevel/worker/invoker.js +3 -2
  509. package/cjs/highlevel/worker/invoker.js.map +1 -1
  510. package/cjs/highlevel/worker/port.d.ts +16 -17
  511. package/cjs/highlevel/worker/port.js +74 -49
  512. package/cjs/highlevel/worker/port.js.map +1 -1
  513. package/cjs/highlevel/worker/protocol.d.ts +1 -2
  514. package/cjs/highlevel/worker/protocol.js.map +1 -1
  515. package/cjs/highlevel/worker/storage.d.ts +9 -13
  516. package/cjs/highlevel/worker/storage.js +34 -19
  517. package/cjs/highlevel/worker/storage.js.map +1 -1
  518. package/cjs/highlevel/worker/worker.js +3 -0
  519. package/cjs/highlevel/worker/worker.js.map +1 -1
  520. package/cjs/index.js +6 -0
  521. package/cjs/network/auth-key.js +8 -1
  522. package/cjs/network/auth-key.js.map +1 -1
  523. package/cjs/network/authorization.js.map +1 -1
  524. package/cjs/network/client.d.ts +0 -1
  525. package/cjs/network/client.js +39 -14
  526. package/cjs/network/client.js.map +1 -1
  527. package/cjs/network/config-manager.js.map +1 -1
  528. package/cjs/network/mtproto-session.d.ts +0 -1
  529. package/cjs/network/mtproto-session.js +40 -30
  530. package/cjs/network/mtproto-session.js.map +1 -1
  531. package/cjs/network/multi-session-connection.d.ts +1 -2
  532. package/cjs/network/multi-session-connection.js +13 -7
  533. package/cjs/network/multi-session-connection.js.map +1 -1
  534. package/cjs/network/network-manager.d.ts +10 -3
  535. package/cjs/network/network-manager.js +57 -31
  536. package/cjs/network/network-manager.js.map +1 -1
  537. package/cjs/network/persistent-connection.d.ts +2 -3
  538. package/cjs/network/persistent-connection.js +33 -22
  539. package/cjs/network/persistent-connection.js.map +1 -1
  540. package/cjs/network/server-salt.js +4 -5
  541. package/cjs/network/server-salt.js.map +1 -1
  542. package/cjs/network/session-connection.d.ts +1 -1
  543. package/cjs/network/session-connection.js +32 -12
  544. package/cjs/network/session-connection.js.map +1 -1
  545. package/cjs/network/transports/abstract.d.ts +1 -2
  546. package/cjs/network/transports/abstract.js +1 -0
  547. package/cjs/network/transports/abstract.js.map +1 -1
  548. package/cjs/network/transports/intermediate.js +1 -0
  549. package/cjs/network/transports/intermediate.js.map +1 -1
  550. package/cjs/network/transports/obfuscated.js +3 -0
  551. package/cjs/network/transports/obfuscated.js.map +1 -1
  552. package/cjs/network/transports/streamed.d.ts +0 -1
  553. package/cjs/network/transports/streamed.js +1 -4
  554. package/cjs/network/transports/streamed.js.map +1 -1
  555. package/cjs/network/transports/wrapped.d.ts +0 -1
  556. package/cjs/network/transports/wrapped.js +2 -0
  557. package/cjs/network/transports/wrapped.js.map +1 -1
  558. package/cjs/platform.js +6 -0
  559. package/cjs/platform.js.map +1 -1
  560. package/cjs/storage/driver.js +3 -4
  561. package/cjs/storage/driver.js.map +1 -1
  562. package/cjs/storage/memory/driver.js +1 -3
  563. package/cjs/storage/memory/driver.js.map +1 -1
  564. package/cjs/storage/memory/index.js +5 -7
  565. package/cjs/storage/memory/index.js.map +1 -1
  566. package/cjs/storage/memory/repository/auth-keys.d.ts +1 -1
  567. package/cjs/storage/memory/repository/auth-keys.js +2 -0
  568. package/cjs/storage/memory/repository/auth-keys.js.map +1 -1
  569. package/cjs/storage/memory/repository/kv.d.ts +1 -1
  570. package/cjs/storage/memory/repository/kv.js +2 -0
  571. package/cjs/storage/memory/repository/kv.js.map +1 -1
  572. package/cjs/storage/memory/repository/peers.d.ts +1 -1
  573. package/cjs/storage/memory/repository/peers.js +2 -0
  574. package/cjs/storage/memory/repository/peers.js.map +1 -1
  575. package/cjs/storage/memory/repository/ref-messages.d.ts +1 -1
  576. package/cjs/storage/memory/repository/ref-messages.js +2 -0
  577. package/cjs/storage/memory/repository/ref-messages.js.map +1 -1
  578. package/cjs/storage/service/auth-keys.js +2 -0
  579. package/cjs/storage/service/auth-keys.js.map +1 -1
  580. package/cjs/storage/service/base.js +4 -0
  581. package/cjs/storage/service/base.js.map +1 -1
  582. package/cjs/storage/service/default-dcs.js +2 -0
  583. package/cjs/storage/service/default-dcs.js.map +1 -1
  584. package/cjs/storage/service/future-salts.js +2 -1
  585. package/cjs/storage/service/future-salts.js.map +1 -1
  586. package/cjs/storage/sqlite/driver.js +10 -10
  587. package/cjs/storage/sqlite/driver.js.map +1 -1
  588. package/cjs/storage/sqlite/index.d.ts +1 -1
  589. package/cjs/storage/sqlite/index.js +5 -0
  590. package/cjs/storage/sqlite/index.js.map +1 -1
  591. package/cjs/storage/sqlite/repository/auth-keys.js +9 -0
  592. package/cjs/storage/sqlite/repository/auth-keys.js.map +1 -1
  593. package/cjs/storage/sqlite/repository/kv.js +5 -0
  594. package/cjs/storage/sqlite/repository/kv.js.map +1 -1
  595. package/cjs/storage/sqlite/repository/peers.js +7 -2
  596. package/cjs/storage/sqlite/repository/peers.js.map +1 -1
  597. package/cjs/storage/sqlite/repository/ref-messages.d.ts +1 -1
  598. package/cjs/storage/sqlite/repository/ref-messages.js +6 -0
  599. package/cjs/storage/sqlite/repository/ref-messages.js.map +1 -1
  600. package/cjs/storage/storage.d.ts +22 -3
  601. package/cjs/storage/storage.js +21 -13
  602. package/cjs/storage/storage.js.map +1 -1
  603. package/cjs/types/errors.js +13 -0
  604. package/cjs/types/errors.js.map +1 -1
  605. package/cjs/types/utils.d.ts +1 -0
  606. package/cjs/types/utils.js.map +1 -1
  607. package/cjs/utils/async-lock.js +1 -3
  608. package/cjs/utils/async-lock.js.map +1 -1
  609. package/cjs/utils/bigint-utils.js.map +1 -1
  610. package/cjs/utils/binary/asn1-parser.js.map +1 -1
  611. package/cjs/utils/buffer-utils.js.map +1 -1
  612. package/cjs/utils/condition-variable.js +2 -0
  613. package/cjs/utils/condition-variable.js.map +1 -1
  614. package/cjs/utils/crypto/factorization.js.map +1 -1
  615. package/cjs/utils/crypto/keys.js.map +1 -1
  616. package/cjs/utils/crypto/miller-rabin.js.map +1 -1
  617. package/cjs/utils/crypto/password.js.map +1 -1
  618. package/cjs/utils/crypto/utils.js.map +1 -1
  619. package/cjs/utils/dcs.js +1 -1
  620. package/cjs/utils/dcs.js.map +1 -1
  621. package/cjs/utils/deque.js +8 -2
  622. package/cjs/utils/deque.js.map +1 -1
  623. package/cjs/utils/early-timer.js +4 -1
  624. package/cjs/utils/early-timer.js.map +1 -1
  625. package/cjs/utils/error-reporting.js.map +1 -1
  626. package/cjs/utils/function-utils.js.map +1 -1
  627. package/cjs/utils/index.js +6 -0
  628. package/cjs/utils/linked-list.js +4 -1
  629. package/cjs/utils/linked-list.js.map +1 -1
  630. package/cjs/utils/links/bots.js.map +1 -1
  631. package/cjs/utils/links/chat.js.map +1 -1
  632. package/cjs/utils/links/common.js.map +1 -1
  633. package/cjs/utils/links/misc.js.map +1 -1
  634. package/cjs/utils/logger.d.ts +2 -2
  635. package/cjs/utils/logger.js +21 -14
  636. package/cjs/utils/logger.js.map +1 -1
  637. package/cjs/utils/long-utils.js +2 -6
  638. package/cjs/utils/long-utils.js.map +1 -1
  639. package/cjs/utils/lru-map.js +5 -1
  640. package/cjs/utils/lru-map.js.map +1 -1
  641. package/cjs/utils/lru-set.js +4 -0
  642. package/cjs/utils/lru-set.js.map +1 -1
  643. package/cjs/utils/peer-utils.js.map +1 -1
  644. package/cjs/utils/reloadable.d.ts +0 -1
  645. package/cjs/utils/reloadable.js +10 -7
  646. package/cjs/utils/reloadable.js.map +1 -1
  647. package/cjs/utils/sorted-array.js +2 -0
  648. package/cjs/utils/sorted-array.js.map +1 -1
  649. package/cjs/utils/tl-json.js.map +1 -1
  650. package/cjs/utils/type-assertions.js.map +1 -1
  651. package/client.d.ts +1 -0
  652. package/client.js +1 -0
  653. package/esm/highlevel/base.d.ts +1 -1
  654. package/esm/highlevel/base.js +29 -23
  655. package/esm/highlevel/base.js.map +1 -1
  656. package/esm/highlevel/client.d.ts +199 -18
  657. package/esm/highlevel/client.js +48 -0
  658. package/esm/highlevel/client.js.map +1 -1
  659. package/esm/highlevel/managers/app-config-manager.js +7 -5
  660. package/esm/highlevel/managers/app-config-manager.js.map +1 -1
  661. package/esm/highlevel/methods/_imports.js.map +1 -1
  662. package/esm/highlevel/methods/_init.js.map +1 -1
  663. package/esm/highlevel/methods/auth/start-test.js.map +1 -1
  664. package/esm/highlevel/methods/auth/start.js.map +1 -1
  665. package/esm/highlevel/methods/auth/utils.d.ts +3 -0
  666. package/esm/highlevel/methods/auth/utils.js.map +1 -1
  667. package/esm/highlevel/methods/bots/get-callback-answer.js.map +1 -1
  668. package/esm/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
  669. package/esm/highlevel/methods/bots/normalize-command-scope.d.ts +5 -1
  670. package/esm/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
  671. package/esm/highlevel/methods/bots/set-my-commands.js.map +1 -1
  672. package/esm/highlevel/methods/chats/add-chat-members.js.map +1 -1
  673. package/esm/highlevel/methods/chats/ban-chat-member.js.map +1 -1
  674. package/esm/highlevel/methods/chats/batched-queries.d.ts +10 -1
  675. package/esm/highlevel/methods/chats/batched-queries.js.map +1 -1
  676. package/esm/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
  677. package/esm/highlevel/methods/chats/delete-history.js.map +1 -1
  678. package/esm/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
  679. package/esm/highlevel/methods/chats/get-chat-member.js.map +1 -1
  680. package/esm/highlevel/methods/chats/get-chat-members.js.map +1 -1
  681. package/esm/highlevel/methods/chats/get-chat-preview.js.map +1 -1
  682. package/esm/highlevel/methods/chats/get-chat.js.map +1 -1
  683. package/esm/highlevel/methods/chats/get-full-chat.d.ts +2 -2
  684. package/esm/highlevel/methods/chats/get-full-chat.js +2 -2
  685. package/esm/highlevel/methods/chats/get-full-chat.js.map +1 -1
  686. package/esm/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
  687. package/esm/highlevel/methods/chats/get-similar-channels.js.map +1 -1
  688. package/esm/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
  689. package/esm/highlevel/methods/chats/iter-chat-members.js.map +1 -1
  690. package/esm/highlevel/methods/chats/join-chat.js.map +1 -1
  691. package/esm/highlevel/methods/chats/kick-chat-member.js.map +1 -1
  692. package/esm/highlevel/methods/chats/leave-chat.js.map +1 -1
  693. package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
  694. package/esm/highlevel/methods/chats/reorder-usernames.js.map +1 -1
  695. package/esm/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
  696. package/esm/highlevel/methods/chats/save-draft.js.map +1 -1
  697. package/esm/highlevel/methods/chats/set-chat-color.js.map +1 -1
  698. package/esm/highlevel/methods/chats/set-chat-photo.js.map +1 -1
  699. package/esm/highlevel/methods/chats/set-chat-title.js.map +1 -1
  700. package/esm/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
  701. package/esm/highlevel/methods/chats/unarchive-chats.js.map +1 -1
  702. package/esm/highlevel/methods/chats/unban-chat-member.js.map +1 -1
  703. package/esm/highlevel/methods/contacts/delete-contacts.js.map +1 -1
  704. package/esm/highlevel/methods/dialogs/create-folder.js.map +1 -1
  705. package/esm/highlevel/methods/dialogs/edit-folder.js.map +1 -1
  706. package/esm/highlevel/methods/dialogs/find-folder.js.map +1 -1
  707. package/esm/highlevel/methods/dialogs/get-folders.d.ts +3 -0
  708. package/esm/highlevel/methods/dialogs/get-folders.js.map +1 -1
  709. package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
  710. package/esm/highlevel/methods/files/download-buffer.js.map +1 -1
  711. package/esm/highlevel/methods/files/download-iterable.js +1 -1
  712. package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
  713. package/esm/highlevel/methods/files/download-node-stream.js.map +1 -1
  714. package/esm/highlevel/methods/files/download-stream.js.map +1 -1
  715. package/esm/highlevel/methods/files/normalize-file-to-document.d.ts +9 -1
  716. package/esm/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
  717. package/esm/highlevel/methods/files/normalize-input-file.js.map +1 -1
  718. package/esm/highlevel/methods/files/normalize-input-media.d.ts +1 -0
  719. package/esm/highlevel/methods/files/normalize-input-media.js +12 -12
  720. package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
  721. package/esm/highlevel/methods/files/upload-file.js +8 -7
  722. package/esm/highlevel/methods/files/upload-file.js.map +1 -1
  723. package/esm/highlevel/methods/files/upload-media.js.map +1 -1
  724. package/esm/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
  725. package/esm/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
  726. package/esm/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
  727. package/esm/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
  728. package/esm/highlevel/methods/messages/_business-connection.d.ts +7 -0
  729. package/esm/highlevel/methods/messages/_business-connection.js +38 -0
  730. package/esm/highlevel/methods/messages/_business-connection.js.map +1 -0
  731. package/esm/highlevel/methods/messages/close-poll.js +1 -1
  732. package/esm/highlevel/methods/messages/close-poll.js.map +1 -1
  733. package/esm/highlevel/methods/messages/delete-messages.js.map +1 -1
  734. package/esm/highlevel/methods/messages/edit-inline-message.js.map +1 -1
  735. package/esm/highlevel/methods/messages/edit-message.d.ts +1 -0
  736. package/esm/highlevel/methods/messages/edit-message.js +2 -1
  737. package/esm/highlevel/methods/messages/edit-message.js.map +1 -1
  738. package/esm/highlevel/methods/messages/find-in-update.d.ts +13 -1
  739. package/esm/highlevel/methods/messages/find-in-update.js +7 -2
  740. package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
  741. package/esm/highlevel/methods/messages/forward-messages.d.ts +5 -0
  742. package/esm/highlevel/methods/messages/forward-messages.js +2 -0
  743. package/esm/highlevel/methods/messages/forward-messages.js.map +1 -1
  744. package/esm/highlevel/methods/messages/get-all-scheduled-messages.d.ts +8 -0
  745. package/esm/highlevel/methods/messages/get-all-scheduled-messages.js +25 -0
  746. package/esm/highlevel/methods/messages/get-all-scheduled-messages.js.map +1 -0
  747. package/esm/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
  748. package/esm/highlevel/methods/messages/get-discussion-message.d.ts +4 -0
  749. package/esm/highlevel/methods/messages/get-discussion-message.js.map +1 -1
  750. package/esm/highlevel/methods/messages/get-history.js +5 -1
  751. package/esm/highlevel/methods/messages/get-history.js.map +1 -1
  752. package/esm/highlevel/methods/messages/get-message-by-link.js.map +1 -1
  753. package/esm/highlevel/methods/messages/get-message-group.js.map +1 -1
  754. package/esm/highlevel/methods/messages/get-message-reactions.js.map +1 -1
  755. package/esm/highlevel/methods/messages/get-messages.js.map +1 -1
  756. package/esm/highlevel/methods/messages/get-reply-to.js.map +1 -1
  757. package/esm/highlevel/methods/messages/iter-history.js.map +1 -1
  758. package/esm/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
  759. package/esm/highlevel/methods/messages/iter-search-global.js +2 -1
  760. package/esm/highlevel/methods/messages/iter-search-global.js.map +1 -1
  761. package/esm/highlevel/methods/messages/iter-search-messages.js.map +1 -1
  762. package/esm/highlevel/methods/messages/read-history.js.map +1 -1
  763. package/esm/highlevel/methods/messages/search-global.d.ts +4 -0
  764. package/esm/highlevel/methods/messages/search-global.js +2 -1
  765. package/esm/highlevel/methods/messages/search-global.js.map +1 -1
  766. package/esm/highlevel/methods/messages/send-answer.js.map +1 -1
  767. package/esm/highlevel/methods/messages/send-comment.js.map +1 -1
  768. package/esm/highlevel/methods/messages/send-common.d.ts +28 -0
  769. package/esm/highlevel/methods/messages/send-common.js +19 -0
  770. package/esm/highlevel/methods/messages/send-common.js.map +1 -1
  771. package/esm/highlevel/methods/messages/send-copy-group.js.map +1 -1
  772. package/esm/highlevel/methods/messages/send-copy.js.map +1 -1
  773. package/esm/highlevel/methods/messages/send-media-group.js +5 -2
  774. package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
  775. package/esm/highlevel/methods/messages/send-media.js +4 -2
  776. package/esm/highlevel/methods/messages/send-media.js.map +1 -1
  777. package/esm/highlevel/methods/messages/send-quote.js.map +1 -1
  778. package/esm/highlevel/methods/messages/send-text.js +4 -2
  779. package/esm/highlevel/methods/messages/send-text.js.map +1 -1
  780. package/esm/highlevel/methods/messages/send-typing.d.ts +4 -0
  781. package/esm/highlevel/methods/messages/send-typing.js +2 -1
  782. package/esm/highlevel/methods/messages/send-typing.js.map +1 -1
  783. package/esm/highlevel/methods/messages/send-vote.js.map +1 -1
  784. package/esm/highlevel/methods/messages/translate-text.js.map +1 -1
  785. package/esm/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
  786. package/esm/highlevel/methods/misc/chain-id.d.ts +4 -1
  787. package/esm/highlevel/methods/misc/get-collectible-info.d.ts +6 -0
  788. package/esm/highlevel/methods/misc/get-collectible-info.js +22 -0
  789. package/esm/highlevel/methods/misc/get-collectible-info.js.map +1 -0
  790. package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
  791. package/esm/highlevel/methods/misc/normalize-text.d.ts +5 -1
  792. package/esm/highlevel/methods/misc/normalize-text.js.map +1 -1
  793. package/esm/highlevel/methods/misc/with-params.js.map +1 -1
  794. package/esm/highlevel/methods/password/change-cloud-password.js.map +1 -1
  795. package/esm/highlevel/methods/password/enable-cloud-password.js.map +1 -1
  796. package/esm/highlevel/methods/password/remove-cloud-password.js.map +1 -1
  797. package/esm/highlevel/methods/premium/can-apply-boost.js.map +1 -1
  798. package/esm/highlevel/methods/premium/create-business-chat-link.d.ts +12 -0
  799. package/esm/highlevel/methods/premium/create-business-chat-link.js +22 -0
  800. package/esm/highlevel/methods/premium/create-business-chat-link.js.map +1 -0
  801. package/esm/highlevel/methods/premium/edit-business-chat-link.d.ts +20 -0
  802. package/esm/highlevel/methods/premium/edit-business-chat-link.js +37 -0
  803. package/esm/highlevel/methods/premium/edit-business-chat-link.js.map +1 -0
  804. package/esm/highlevel/methods/premium/get-business-chat-links.d.ts +6 -0
  805. package/esm/highlevel/methods/premium/get-business-chat-links.js +10 -0
  806. package/esm/highlevel/methods/premium/get-business-chat-links.js.map +1 -0
  807. package/esm/highlevel/methods/premium/get-business-connection.d.ts +8 -0
  808. package/esm/highlevel/methods/premium/get-business-connection.js +21 -0
  809. package/esm/highlevel/methods/premium/get-business-connection.js.map +1 -0
  810. package/esm/highlevel/methods/premium/iter-boosters.js.map +1 -1
  811. package/esm/highlevel/methods/premium/set-business-intro.d.ts +22 -0
  812. package/esm/highlevel/methods/premium/set-business-intro.js +38 -0
  813. package/esm/highlevel/methods/premium/set-business-intro.js.map +1 -0
  814. package/esm/highlevel/methods/premium/set-business-work-hours.d.ts +18 -0
  815. package/esm/highlevel/methods/premium/set-business-work-hours.js +29 -0
  816. package/esm/highlevel/methods/premium/set-business-work-hours.js.map +1 -0
  817. package/esm/highlevel/methods/stickers/_utils.d.ts +10 -0
  818. package/esm/highlevel/methods/stickers/_utils.js +23 -0
  819. package/esm/highlevel/methods/stickers/_utils.js.map +1 -0
  820. package/esm/highlevel/methods/stickers/add-sticker-to-set.d.ts +1 -2
  821. package/esm/highlevel/methods/stickers/add-sticker-to-set.js +4 -18
  822. package/esm/highlevel/methods/stickers/add-sticker-to-set.js.map +1 -1
  823. package/esm/highlevel/methods/stickers/create-sticker-set.d.ts +0 -3
  824. package/esm/highlevel/methods/stickers/create-sticker-set.js +3 -20
  825. package/esm/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
  826. package/esm/highlevel/methods/stickers/delete-sticker-from-set.d.ts +1 -2
  827. package/esm/highlevel/methods/stickers/delete-sticker-from-set.js +1 -2
  828. package/esm/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
  829. package/esm/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
  830. package/esm/highlevel/methods/stickers/get-installed-stickers.d.ts +1 -2
  831. package/esm/highlevel/methods/stickers/get-installed-stickers.js +1 -2
  832. package/esm/highlevel/methods/stickers/get-installed-stickers.js.map +1 -1
  833. package/esm/highlevel/methods/stickers/get-my-sticker-sets.d.ts +13 -0
  834. package/esm/highlevel/methods/stickers/get-my-sticker-sets.js +17 -0
  835. package/esm/highlevel/methods/stickers/get-my-sticker-sets.js.map +1 -0
  836. package/esm/highlevel/methods/stickers/get-sticker-set.d.ts +2 -2
  837. package/esm/highlevel/methods/stickers/get-sticker-set.js +2 -2
  838. package/esm/highlevel/methods/stickers/get-sticker-set.js.map +1 -1
  839. package/esm/highlevel/methods/stickers/move-sticker-in-set.d.ts +2 -3
  840. package/esm/highlevel/methods/stickers/move-sticker-in-set.js +2 -3
  841. package/esm/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
  842. package/esm/highlevel/methods/stickers/replace-sticker-in-set.d.ts +24 -0
  843. package/esm/highlevel/methods/stickers/replace-sticker-in-set.js +28 -0
  844. package/esm/highlevel/methods/stickers/replace-sticker-in-set.js.map +1 -0
  845. package/esm/highlevel/methods/stories/can-send-story.js.map +1 -1
  846. package/esm/highlevel/methods/stories/edit-story.js.map +1 -1
  847. package/esm/highlevel/methods/stories/find-in-update.d.ts +5 -1
  848. package/esm/highlevel/methods/stories/find-in-update.js.map +1 -1
  849. package/esm/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
  850. package/esm/highlevel/methods/stories/iter-all-stories.js.map +1 -1
  851. package/esm/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
  852. package/esm/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
  853. package/esm/highlevel/methods/stories/send-story.js.map +1 -1
  854. package/esm/highlevel/methods/users/delete-profile-photos.js.map +1 -1
  855. package/esm/highlevel/methods/users/get-users.js.map +1 -1
  856. package/esm/highlevel/methods/users/iter-profile-photos.js.map +1 -1
  857. package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
  858. package/esm/highlevel/methods/users/resolve-peer.js.map +1 -1
  859. package/esm/highlevel/methods/users/set-my-birthday.d.ts +12 -0
  860. package/esm/highlevel/methods/users/set-my-birthday.js +18 -0
  861. package/esm/highlevel/methods/users/set-my-birthday.js.map +1 -0
  862. package/esm/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
  863. package/esm/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
  864. package/esm/highlevel/methods.d.ts +12 -0
  865. package/esm/highlevel/methods.js +12 -0
  866. package/esm/highlevel/methods.js.map +1 -1
  867. package/esm/highlevel/storage/service/current-user.js +2 -0
  868. package/esm/highlevel/storage/service/current-user.js.map +1 -1
  869. package/esm/highlevel/storage/service/peers.js +5 -1
  870. package/esm/highlevel/storage/service/peers.js.map +1 -1
  871. package/esm/highlevel/storage/service/ref-messages.js +3 -0
  872. package/esm/highlevel/storage/service/ref-messages.js.map +1 -1
  873. package/esm/highlevel/storage/service/updates.js +1 -0
  874. package/esm/highlevel/storage/service/updates.js.map +1 -1
  875. package/esm/highlevel/storage/storage.d.ts +8 -3
  876. package/esm/highlevel/storage/storage.js +17 -4
  877. package/esm/highlevel/storage/storage.js.map +1 -1
  878. package/esm/highlevel/types/auth/sent-code.d.ts +7 -2
  879. package/esm/highlevel/types/auth/sent-code.js +15 -0
  880. package/esm/highlevel/types/auth/sent-code.js.map +1 -1
  881. package/esm/highlevel/types/bots/game-high-score.js +2 -0
  882. package/esm/highlevel/types/bots/game-high-score.js.map +1 -1
  883. package/esm/highlevel/types/bots/inline-message/factories.d.ts +5 -1
  884. package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -1
  885. package/esm/highlevel/types/bots/inline-result/factories.d.ts +4 -1
  886. package/esm/highlevel/types/bots/inline-result/factories.js.map +1 -1
  887. package/esm/highlevel/types/bots/keyboards/builder.js +2 -1
  888. package/esm/highlevel/types/bots/keyboards/builder.js.map +1 -1
  889. package/esm/highlevel/types/bots/keyboards/factories.d.ts +7 -1
  890. package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -1
  891. package/esm/highlevel/types/calls/discard-reason.d.ts +5 -0
  892. package/esm/highlevel/types/calls/discard-reason.js.map +1 -1
  893. package/esm/highlevel/types/conversation.js +13 -7
  894. package/esm/highlevel/types/conversation.js.map +1 -1
  895. package/esm/highlevel/types/errors.js +3 -0
  896. package/esm/highlevel/types/errors.js.map +1 -1
  897. package/esm/highlevel/types/files/file-location.js +3 -0
  898. package/esm/highlevel/types/files/file-location.js.map +1 -1
  899. package/esm/highlevel/types/files/uploaded-file.d.ts +2 -0
  900. package/esm/highlevel/types/files/uploaded-file.js +1 -1
  901. package/esm/highlevel/types/files/uploaded-file.js.map +1 -1
  902. package/esm/highlevel/types/files/utils.d.ts +6 -5
  903. package/esm/highlevel/types/files/utils.js.map +1 -1
  904. package/esm/highlevel/types/files/web-document.js +1 -0
  905. package/esm/highlevel/types/files/web-document.js.map +1 -1
  906. package/esm/highlevel/types/media/audio.js +3 -2
  907. package/esm/highlevel/types/media/audio.js.map +1 -1
  908. package/esm/highlevel/types/media/contact.js +2 -1
  909. package/esm/highlevel/types/media/contact.js.map +1 -1
  910. package/esm/highlevel/types/media/dice.js +125 -124
  911. package/esm/highlevel/types/media/dice.js.map +1 -1
  912. package/esm/highlevel/types/media/document-utils.d.ts +5 -0
  913. package/esm/highlevel/types/media/document-utils.js +7 -1
  914. package/esm/highlevel/types/media/document-utils.js.map +1 -1
  915. package/esm/highlevel/types/media/document.js +2 -4
  916. package/esm/highlevel/types/media/document.js.map +1 -1
  917. package/esm/highlevel/types/media/game.js +2 -1
  918. package/esm/highlevel/types/media/game.js.map +1 -1
  919. package/esm/highlevel/types/media/input-media/types.d.ts +2 -2
  920. package/esm/highlevel/types/media/input-media/types.js.map +1 -1
  921. package/esm/highlevel/types/media/invoice.js +4 -1
  922. package/esm/highlevel/types/media/invoice.js.map +1 -1
  923. package/esm/highlevel/types/media/location.js +4 -5
  924. package/esm/highlevel/types/media/location.js.map +1 -1
  925. package/esm/highlevel/types/media/photo.js +8 -1
  926. package/esm/highlevel/types/media/photo.js.map +1 -1
  927. package/esm/highlevel/types/media/poll.d.ts +17 -6
  928. package/esm/highlevel/types/media/poll.js +68 -18
  929. package/esm/highlevel/types/media/poll.js.map +1 -1
  930. package/esm/highlevel/types/media/sticker.js +3 -1
  931. package/esm/highlevel/types/media/sticker.js.map +1 -1
  932. package/esm/highlevel/types/media/story.js +3 -1
  933. package/esm/highlevel/types/media/story.js.map +1 -1
  934. package/esm/highlevel/types/media/thumbnail.js +35 -22
  935. package/esm/highlevel/types/media/thumbnail.js.map +1 -1
  936. package/esm/highlevel/types/media/venue.js +2 -1
  937. package/esm/highlevel/types/media/venue.js.map +1 -1
  938. package/esm/highlevel/types/media/video.js +3 -1
  939. package/esm/highlevel/types/media/video.js.map +1 -1
  940. package/esm/highlevel/types/media/voice.js +2 -1
  941. package/esm/highlevel/types/media/voice.js.map +1 -1
  942. package/esm/highlevel/types/media/web-page.js +2 -1
  943. package/esm/highlevel/types/media/web-page.js.map +1 -1
  944. package/esm/highlevel/types/messages/dialog.js +4 -12
  945. package/esm/highlevel/types/messages/dialog.js.map +1 -1
  946. package/esm/highlevel/types/messages/draft-message.js +1 -0
  947. package/esm/highlevel/types/messages/draft-message.js.map +1 -1
  948. package/esm/highlevel/types/messages/input-message-id.d.ts +5 -0
  949. package/esm/highlevel/types/messages/message-action.d.ts +19 -2
  950. package/esm/highlevel/types/messages/message-action.js +6 -0
  951. package/esm/highlevel/types/messages/message-action.js.map +1 -1
  952. package/esm/highlevel/types/messages/message-entity.js +2 -0
  953. package/esm/highlevel/types/messages/message-entity.js.map +1 -1
  954. package/esm/highlevel/types/messages/message-forward.js +2 -0
  955. package/esm/highlevel/types/messages/message-forward.js.map +1 -1
  956. package/esm/highlevel/types/messages/message-media.d.ts +4 -0
  957. package/esm/highlevel/types/messages/message-media.js.map +1 -1
  958. package/esm/highlevel/types/messages/message-reactions.js +4 -0
  959. package/esm/highlevel/types/messages/message-reactions.js.map +1 -1
  960. package/esm/highlevel/types/messages/message-replies.js +2 -0
  961. package/esm/highlevel/types/messages/message-replies.js.map +1 -1
  962. package/esm/highlevel/types/messages/message.d.ts +59 -1
  963. package/esm/highlevel/types/messages/message.js +102 -1
  964. package/esm/highlevel/types/messages/message.js.map +1 -1
  965. package/esm/highlevel/types/messages/replied-message.js +2 -0
  966. package/esm/highlevel/types/messages/replied-message.js.map +1 -1
  967. package/esm/highlevel/types/misc/collectible-info.d.ts +27 -0
  968. package/esm/highlevel/types/misc/collectible-info.js +43 -0
  969. package/esm/highlevel/types/misc/collectible-info.js.map +1 -0
  970. package/esm/highlevel/types/misc/entities.d.ts +7 -0
  971. package/esm/highlevel/types/misc/entities.js +13 -1
  972. package/esm/highlevel/types/misc/entities.js.map +1 -1
  973. package/esm/highlevel/types/misc/index.d.ts +1 -0
  974. package/esm/highlevel/types/misc/index.js +1 -0
  975. package/esm/highlevel/types/misc/index.js.map +1 -1
  976. package/esm/highlevel/types/misc/sticker-set.d.ts +8 -1
  977. package/esm/highlevel/types/misc/sticker-set.js +45 -8
  978. package/esm/highlevel/types/misc/sticker-set.js.map +1 -1
  979. package/esm/highlevel/types/misc/takeout-session.js +5 -0
  980. package/esm/highlevel/types/misc/takeout-session.js.map +1 -1
  981. package/esm/highlevel/types/peers/chat-colors.js +2 -0
  982. package/esm/highlevel/types/peers/chat-colors.js.map +1 -1
  983. package/esm/highlevel/types/peers/chat-event/actions.d.ts +3 -0
  984. package/esm/highlevel/types/peers/chat-event/actions.js.map +1 -1
  985. package/esm/highlevel/types/peers/chat-event/filters.d.ts +2 -0
  986. package/esm/highlevel/types/peers/chat-event/filters.js.map +1 -1
  987. package/esm/highlevel/types/peers/chat-event/index.js +2 -0
  988. package/esm/highlevel/types/peers/chat-event/index.js.map +1 -1
  989. package/esm/highlevel/types/peers/chat-invite-link-member.js +2 -0
  990. package/esm/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
  991. package/esm/highlevel/types/peers/chat-invite-link.js +2 -0
  992. package/esm/highlevel/types/peers/chat-invite-link.js.map +1 -1
  993. package/esm/highlevel/types/peers/chat-location.js +1 -0
  994. package/esm/highlevel/types/peers/chat-location.js.map +1 -1
  995. package/esm/highlevel/types/peers/chat-member.js +2 -0
  996. package/esm/highlevel/types/peers/chat-member.js.map +1 -1
  997. package/esm/highlevel/types/peers/chat-permissions.js +1 -0
  998. package/esm/highlevel/types/peers/chat-permissions.js.map +1 -1
  999. package/esm/highlevel/types/peers/chat-photo.js +5 -0
  1000. package/esm/highlevel/types/peers/chat-photo.js.map +1 -1
  1001. package/esm/highlevel/types/peers/chat-preview.js +2 -0
  1002. package/esm/highlevel/types/peers/chat-preview.js.map +1 -1
  1003. package/esm/highlevel/types/peers/chat.d.ts +7 -93
  1004. package/esm/highlevel/types/peers/chat.js +10 -192
  1005. package/esm/highlevel/types/peers/chat.js.map +1 -1
  1006. package/esm/highlevel/types/peers/forum-topic.js +9 -6
  1007. package/esm/highlevel/types/peers/forum-topic.js.map +1 -1
  1008. package/esm/highlevel/types/peers/full-chat.d.ts +103 -0
  1009. package/esm/highlevel/types/peers/full-chat.js +234 -0
  1010. package/esm/highlevel/types/peers/full-chat.js.map +1 -0
  1011. package/esm/highlevel/types/peers/index.d.ts +1 -0
  1012. package/esm/highlevel/types/peers/index.js +1 -0
  1013. package/esm/highlevel/types/peers/index.js.map +1 -1
  1014. package/esm/highlevel/types/peers/peer.js.map +1 -1
  1015. package/esm/highlevel/types/peers/peers-index.js +3 -1
  1016. package/esm/highlevel/types/peers/peers-index.js.map +1 -1
  1017. package/esm/highlevel/types/peers/user.d.ts +5 -0
  1018. package/esm/highlevel/types/peers/user.js +12 -1
  1019. package/esm/highlevel/types/peers/user.js.map +1 -1
  1020. package/esm/highlevel/types/premium/boost-slot.js +2 -0
  1021. package/esm/highlevel/types/premium/boost-slot.js.map +1 -1
  1022. package/esm/highlevel/types/premium/boost-stats.js +1 -0
  1023. package/esm/highlevel/types/premium/boost-stats.js.map +1 -1
  1024. package/esm/highlevel/types/premium/boost.js +2 -0
  1025. package/esm/highlevel/types/premium/boost.js.map +1 -1
  1026. package/esm/highlevel/types/premium/business-account.d.ts +19 -0
  1027. package/esm/highlevel/types/premium/business-account.js +42 -0
  1028. package/esm/highlevel/types/premium/business-account.js.map +1 -0
  1029. package/esm/highlevel/types/premium/business-chat-link.d.ts +19 -0
  1030. package/esm/highlevel/types/premium/business-chat-link.js +36 -0
  1031. package/esm/highlevel/types/premium/business-chat-link.js.map +1 -0
  1032. package/esm/highlevel/types/premium/business-connection.d.ts +23 -0
  1033. package/esm/highlevel/types/premium/business-connection.js +42 -0
  1034. package/esm/highlevel/types/premium/business-connection.js.map +1 -0
  1035. package/esm/highlevel/types/premium/business-intro.d.ts +22 -0
  1036. package/esm/highlevel/types/premium/business-intro.js +40 -0
  1037. package/esm/highlevel/types/premium/business-intro.js.map +1 -0
  1038. package/esm/highlevel/types/premium/business-location.d.ts +10 -0
  1039. package/esm/highlevel/types/premium/business-location.js +23 -0
  1040. package/esm/highlevel/types/premium/business-location.js.map +1 -0
  1041. package/esm/highlevel/types/premium/business-work-hours.d.ts +42 -0
  1042. package/esm/highlevel/types/premium/business-work-hours.js +137 -0
  1043. package/esm/highlevel/types/premium/business-work-hours.js.map +1 -0
  1044. package/esm/highlevel/types/premium/index.d.ts +5 -0
  1045. package/esm/highlevel/types/premium/index.js +5 -0
  1046. package/esm/highlevel/types/premium/index.js.map +1 -1
  1047. package/esm/highlevel/types/reactions/emoji-status.js +1 -0
  1048. package/esm/highlevel/types/reactions/emoji-status.js.map +1 -1
  1049. package/esm/highlevel/types/reactions/peer-reaction.js +2 -0
  1050. package/esm/highlevel/types/reactions/peer-reaction.js.map +1 -1
  1051. package/esm/highlevel/types/reactions/reaction-count.js +1 -0
  1052. package/esm/highlevel/types/reactions/reaction-count.js.map +1 -1
  1053. package/esm/highlevel/types/reactions/types.js.map +1 -1
  1054. package/esm/highlevel/types/stories/all-stories.d.ts +2 -2
  1055. package/esm/highlevel/types/stories/all-stories.js +3 -1
  1056. package/esm/highlevel/types/stories/all-stories.js.map +1 -1
  1057. package/esm/highlevel/types/stories/interactive/base.js +1 -0
  1058. package/esm/highlevel/types/stories/interactive/base.js.map +1 -1
  1059. package/esm/highlevel/types/stories/interactive/channel-post.js +3 -1
  1060. package/esm/highlevel/types/stories/interactive/channel-post.js.map +1 -1
  1061. package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
  1062. package/esm/highlevel/types/stories/interactive/input.js +1 -0
  1063. package/esm/highlevel/types/stories/interactive/input.js.map +1 -1
  1064. package/esm/highlevel/types/stories/interactive/location.js +2 -1
  1065. package/esm/highlevel/types/stories/interactive/location.js.map +1 -1
  1066. package/esm/highlevel/types/stories/interactive/reaction.js +2 -1
  1067. package/esm/highlevel/types/stories/interactive/reaction.js.map +1 -1
  1068. package/esm/highlevel/types/stories/interactive/venue.js +2 -1
  1069. package/esm/highlevel/types/stories/interactive/venue.js.map +1 -1
  1070. package/esm/highlevel/types/stories/peer-stories.js +2 -0
  1071. package/esm/highlevel/types/stories/peer-stories.js.map +1 -1
  1072. package/esm/highlevel/types/stories/stealth-mode.js +1 -0
  1073. package/esm/highlevel/types/stories/stealth-mode.js.map +1 -1
  1074. package/esm/highlevel/types/stories/story-interactions.js +2 -0
  1075. package/esm/highlevel/types/stories/story-interactions.js.map +1 -1
  1076. package/esm/highlevel/types/stories/story-viewer.d.ts +1 -1
  1077. package/esm/highlevel/types/stories/story-viewer.js +6 -0
  1078. package/esm/highlevel/types/stories/story-viewer.js.map +1 -1
  1079. package/esm/highlevel/types/stories/story.js +2 -0
  1080. package/esm/highlevel/types/stories/story.js.map +1 -1
  1081. package/esm/highlevel/types/updates/bot-chat-join-request.js +2 -0
  1082. package/esm/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
  1083. package/esm/highlevel/types/updates/bot-reaction.js +4 -0
  1084. package/esm/highlevel/types/updates/bot-reaction.js.map +1 -1
  1085. package/esm/highlevel/types/updates/bot-stopped.js +2 -0
  1086. package/esm/highlevel/types/updates/bot-stopped.js.map +1 -1
  1087. package/esm/highlevel/types/updates/business-message.d.ts +18 -0
  1088. package/esm/highlevel/types/updates/business-message.js +31 -0
  1089. package/esm/highlevel/types/updates/business-message.js.map +1 -0
  1090. package/esm/highlevel/types/updates/callback-query.js +4 -0
  1091. package/esm/highlevel/types/updates/callback-query.js.map +1 -1
  1092. package/esm/highlevel/types/updates/chat-join-request.js +2 -0
  1093. package/esm/highlevel/types/updates/chat-join-request.js.map +1 -1
  1094. package/esm/highlevel/types/updates/chat-member-update.js +2 -0
  1095. package/esm/highlevel/types/updates/chat-member-update.js.map +1 -1
  1096. package/esm/highlevel/types/updates/chosen-inline-result.js +2 -0
  1097. package/esm/highlevel/types/updates/chosen-inline-result.js.map +1 -1
  1098. package/esm/highlevel/types/updates/delete-business-message-update.d.ts +21 -0
  1099. package/esm/highlevel/types/updates/delete-business-message-update.js +34 -0
  1100. package/esm/highlevel/types/updates/delete-business-message-update.js.map +1 -0
  1101. package/esm/highlevel/types/updates/delete-message-update.js +1 -0
  1102. package/esm/highlevel/types/updates/delete-message-update.js.map +1 -1
  1103. package/esm/highlevel/types/updates/delete-story-update.js +2 -0
  1104. package/esm/highlevel/types/updates/delete-story-update.js.map +1 -1
  1105. package/esm/highlevel/types/updates/history-read-update.js +1 -0
  1106. package/esm/highlevel/types/updates/history-read-update.js.map +1 -1
  1107. package/esm/highlevel/types/updates/index.d.ts +19 -2
  1108. package/esm/highlevel/types/updates/index.js +3 -1
  1109. package/esm/highlevel/types/updates/index.js.map +1 -1
  1110. package/esm/highlevel/types/updates/inline-query.js +2 -0
  1111. package/esm/highlevel/types/updates/inline-query.js.map +1 -1
  1112. package/esm/highlevel/types/updates/parse-update.d.ts +4 -1
  1113. package/esm/highlevel/types/updates/parse-update.js +9 -1
  1114. package/esm/highlevel/types/updates/parse-update.js.map +1 -1
  1115. package/esm/highlevel/types/updates/poll-update.js +4 -2
  1116. package/esm/highlevel/types/updates/poll-update.js.map +1 -1
  1117. package/esm/highlevel/types/updates/poll-vote.js +2 -0
  1118. package/esm/highlevel/types/updates/poll-vote.js.map +1 -1
  1119. package/esm/highlevel/types/updates/pre-checkout-query.js +2 -0
  1120. package/esm/highlevel/types/updates/pre-checkout-query.js.map +1 -1
  1121. package/esm/highlevel/types/updates/story-update.js +2 -0
  1122. package/esm/highlevel/types/updates/story-update.js.map +1 -1
  1123. package/esm/highlevel/types/updates/user-status-update.js +1 -0
  1124. package/esm/highlevel/types/updates/user-status-update.js.map +1 -1
  1125. package/esm/highlevel/types/updates/user-typing-update.js +1 -0
  1126. package/esm/highlevel/types/updates/user-typing-update.js.map +1 -1
  1127. package/esm/highlevel/updates/manager.d.ts +0 -1
  1128. package/esm/highlevel/updates/manager.js +57 -30
  1129. package/esm/highlevel/updates/manager.js.map +1 -1
  1130. package/esm/highlevel/updates/parsed.js +8 -2
  1131. package/esm/highlevel/updates/parsed.js.map +1 -1
  1132. package/esm/highlevel/updates/types.d.ts +57 -0
  1133. package/esm/highlevel/updates/utils.d.ts +2 -0
  1134. package/esm/highlevel/updates/utils.js.map +1 -1
  1135. package/esm/highlevel/utils/convert-file-id.js.map +1 -1
  1136. package/esm/highlevel/utils/entities.js.map +1 -1
  1137. package/esm/highlevel/utils/file-type.d.ts +1 -0
  1138. package/esm/highlevel/utils/file-type.js +34 -0
  1139. package/esm/highlevel/utils/file-type.js.map +1 -1
  1140. package/esm/highlevel/utils/file-utils.js +1 -1
  1141. package/esm/highlevel/utils/file-utils.js.map +1 -1
  1142. package/esm/highlevel/utils/inline-utils.js.map +1 -1
  1143. package/esm/highlevel/utils/inspectable.js +4 -0
  1144. package/esm/highlevel/utils/inspectable.js.map +1 -1
  1145. package/esm/highlevel/utils/memoize.js.map +1 -1
  1146. package/esm/highlevel/utils/peer-utils.js.map +1 -1
  1147. package/esm/highlevel/utils/query-batcher.js.map +1 -1
  1148. package/esm/highlevel/utils/rps-meter.js +3 -0
  1149. package/esm/highlevel/utils/rps-meter.js.map +1 -1
  1150. package/esm/highlevel/utils/stream-utils.js.map +1 -1
  1151. package/esm/highlevel/utils/string-session.d.ts +1 -2
  1152. package/esm/highlevel/utils/string-session.js +27 -7
  1153. package/esm/highlevel/utils/string-session.js.map +1 -1
  1154. package/esm/highlevel/utils/voice-utils.js.map +1 -1
  1155. package/esm/highlevel/worker/app-config.d.ts +2 -3
  1156. package/esm/highlevel/worker/app-config.js +6 -3
  1157. package/esm/highlevel/worker/app-config.js.map +1 -1
  1158. package/esm/highlevel/worker/errors.js.map +1 -1
  1159. package/esm/highlevel/worker/invoker.js +3 -2
  1160. package/esm/highlevel/worker/invoker.js.map +1 -1
  1161. package/esm/highlevel/worker/port.d.ts +16 -17
  1162. package/esm/highlevel/worker/port.js +74 -49
  1163. package/esm/highlevel/worker/port.js.map +1 -1
  1164. package/esm/highlevel/worker/protocol.d.ts +1 -2
  1165. package/esm/highlevel/worker/protocol.js.map +1 -1
  1166. package/esm/highlevel/worker/storage.d.ts +9 -13
  1167. package/esm/highlevel/worker/storage.js +34 -19
  1168. package/esm/highlevel/worker/storage.js.map +1 -1
  1169. package/esm/highlevel/worker/worker.js +3 -0
  1170. package/esm/highlevel/worker/worker.js.map +1 -1
  1171. package/esm/network/auth-key.js +8 -1
  1172. package/esm/network/auth-key.js.map +1 -1
  1173. package/esm/network/authorization.js.map +1 -1
  1174. package/esm/network/client.d.ts +0 -1
  1175. package/esm/network/client.js +39 -14
  1176. package/esm/network/client.js.map +1 -1
  1177. package/esm/network/config-manager.js.map +1 -1
  1178. package/esm/network/mtproto-session.d.ts +0 -1
  1179. package/esm/network/mtproto-session.js +40 -30
  1180. package/esm/network/mtproto-session.js.map +1 -1
  1181. package/esm/network/multi-session-connection.d.ts +1 -2
  1182. package/esm/network/multi-session-connection.js +13 -7
  1183. package/esm/network/multi-session-connection.js.map +1 -1
  1184. package/esm/network/network-manager.d.ts +10 -3
  1185. package/esm/network/network-manager.js +57 -31
  1186. package/esm/network/network-manager.js.map +1 -1
  1187. package/esm/network/persistent-connection.d.ts +2 -3
  1188. package/esm/network/persistent-connection.js +33 -22
  1189. package/esm/network/persistent-connection.js.map +1 -1
  1190. package/esm/network/server-salt.js +4 -5
  1191. package/esm/network/server-salt.js.map +1 -1
  1192. package/esm/network/session-connection.d.ts +1 -1
  1193. package/esm/network/session-connection.js +32 -12
  1194. package/esm/network/session-connection.js.map +1 -1
  1195. package/esm/network/transports/abstract.d.ts +1 -2
  1196. package/esm/network/transports/abstract.js +1 -0
  1197. package/esm/network/transports/abstract.js.map +1 -1
  1198. package/esm/network/transports/intermediate.js +1 -0
  1199. package/esm/network/transports/intermediate.js.map +1 -1
  1200. package/esm/network/transports/obfuscated.js +3 -0
  1201. package/esm/network/transports/obfuscated.js.map +1 -1
  1202. package/esm/network/transports/streamed.d.ts +0 -1
  1203. package/esm/network/transports/streamed.js +1 -4
  1204. package/esm/network/transports/streamed.js.map +1 -1
  1205. package/esm/network/transports/wrapped.d.ts +0 -1
  1206. package/esm/network/transports/wrapped.js +2 -0
  1207. package/esm/network/transports/wrapped.js.map +1 -1
  1208. package/esm/platform.js.map +1 -1
  1209. package/esm/storage/driver.js +3 -4
  1210. package/esm/storage/driver.js.map +1 -1
  1211. package/esm/storage/memory/driver.js +1 -3
  1212. package/esm/storage/memory/driver.js.map +1 -1
  1213. package/esm/storage/memory/index.js +5 -7
  1214. package/esm/storage/memory/index.js.map +1 -1
  1215. package/esm/storage/memory/repository/auth-keys.d.ts +1 -1
  1216. package/esm/storage/memory/repository/auth-keys.js +2 -0
  1217. package/esm/storage/memory/repository/auth-keys.js.map +1 -1
  1218. package/esm/storage/memory/repository/kv.d.ts +1 -1
  1219. package/esm/storage/memory/repository/kv.js +2 -0
  1220. package/esm/storage/memory/repository/kv.js.map +1 -1
  1221. package/esm/storage/memory/repository/peers.d.ts +1 -1
  1222. package/esm/storage/memory/repository/peers.js +2 -0
  1223. package/esm/storage/memory/repository/peers.js.map +1 -1
  1224. package/esm/storage/memory/repository/ref-messages.d.ts +1 -1
  1225. package/esm/storage/memory/repository/ref-messages.js +2 -0
  1226. package/esm/storage/memory/repository/ref-messages.js.map +1 -1
  1227. package/esm/storage/service/auth-keys.js +2 -0
  1228. package/esm/storage/service/auth-keys.js.map +1 -1
  1229. package/esm/storage/service/base.js +4 -0
  1230. package/esm/storage/service/base.js.map +1 -1
  1231. package/esm/storage/service/default-dcs.js +2 -0
  1232. package/esm/storage/service/default-dcs.js.map +1 -1
  1233. package/esm/storage/service/future-salts.js +2 -1
  1234. package/esm/storage/service/future-salts.js.map +1 -1
  1235. package/esm/storage/sqlite/driver.js +10 -10
  1236. package/esm/storage/sqlite/driver.js.map +1 -1
  1237. package/esm/storage/sqlite/index.d.ts +1 -1
  1238. package/esm/storage/sqlite/index.js +5 -0
  1239. package/esm/storage/sqlite/index.js.map +1 -1
  1240. package/esm/storage/sqlite/repository/auth-keys.js +9 -0
  1241. package/esm/storage/sqlite/repository/auth-keys.js.map +1 -1
  1242. package/esm/storage/sqlite/repository/kv.js +5 -0
  1243. package/esm/storage/sqlite/repository/kv.js.map +1 -1
  1244. package/esm/storage/sqlite/repository/peers.js +7 -2
  1245. package/esm/storage/sqlite/repository/peers.js.map +1 -1
  1246. package/esm/storage/sqlite/repository/ref-messages.d.ts +1 -1
  1247. package/esm/storage/sqlite/repository/ref-messages.js +6 -0
  1248. package/esm/storage/sqlite/repository/ref-messages.js.map +1 -1
  1249. package/esm/storage/storage.d.ts +22 -3
  1250. package/esm/storage/storage.js +21 -13
  1251. package/esm/storage/storage.js.map +1 -1
  1252. package/esm/types/errors.js +13 -0
  1253. package/esm/types/errors.js.map +1 -1
  1254. package/esm/types/utils.d.ts +1 -0
  1255. package/esm/types/utils.js.map +1 -1
  1256. package/esm/utils/async-lock.js +1 -3
  1257. package/esm/utils/async-lock.js.map +1 -1
  1258. package/esm/utils/bigint-utils.js.map +1 -1
  1259. package/esm/utils/binary/asn1-parser.js.map +1 -1
  1260. package/esm/utils/buffer-utils.js.map +1 -1
  1261. package/esm/utils/condition-variable.js +2 -0
  1262. package/esm/utils/condition-variable.js.map +1 -1
  1263. package/esm/utils/crypto/factorization.js.map +1 -1
  1264. package/esm/utils/crypto/keys.js.map +1 -1
  1265. package/esm/utils/crypto/miller-rabin.js.map +1 -1
  1266. package/esm/utils/crypto/password.js.map +1 -1
  1267. package/esm/utils/crypto/utils.js.map +1 -1
  1268. package/esm/utils/dcs.js +1 -1
  1269. package/esm/utils/dcs.js.map +1 -1
  1270. package/esm/utils/deque.js +8 -2
  1271. package/esm/utils/deque.js.map +1 -1
  1272. package/esm/utils/early-timer.js +4 -1
  1273. package/esm/utils/early-timer.js.map +1 -1
  1274. package/esm/utils/error-reporting.js.map +1 -1
  1275. package/esm/utils/function-utils.js.map +1 -1
  1276. package/esm/utils/linked-list.js +4 -1
  1277. package/esm/utils/linked-list.js.map +1 -1
  1278. package/esm/utils/links/bots.js.map +1 -1
  1279. package/esm/utils/links/chat.js.map +1 -1
  1280. package/esm/utils/links/common.js.map +1 -1
  1281. package/esm/utils/links/misc.js.map +1 -1
  1282. package/esm/utils/logger.d.ts +2 -2
  1283. package/esm/utils/logger.js +21 -14
  1284. package/esm/utils/logger.js.map +1 -1
  1285. package/esm/utils/long-utils.js +2 -6
  1286. package/esm/utils/long-utils.js.map +1 -1
  1287. package/esm/utils/lru-map.js +5 -1
  1288. package/esm/utils/lru-map.js.map +1 -1
  1289. package/esm/utils/lru-set.js +4 -0
  1290. package/esm/utils/lru-set.js.map +1 -1
  1291. package/esm/utils/peer-utils.js.map +1 -1
  1292. package/esm/utils/reloadable.d.ts +0 -1
  1293. package/esm/utils/reloadable.js +10 -7
  1294. package/esm/utils/reloadable.js.map +1 -1
  1295. package/esm/utils/sorted-array.js +2 -0
  1296. package/esm/utils/sorted-array.js.map +1 -1
  1297. package/esm/utils/tl-json.js.map +1 -1
  1298. package/esm/utils/type-assertions.js.map +1 -1
  1299. package/index.d.ts +1 -0
  1300. package/index.js +1 -0
  1301. package/methods.d.ts +1 -0
  1302. package/methods.js +1 -0
  1303. package/package.json +13 -13
  1304. package/platform.d.ts +1 -0
  1305. package/platform.js +1 -0
  1306. package/utils.d.ts +1 -0
  1307. package/utils.js +1 -0
  1308. package/worker.d.ts +1 -0
  1309. package/worker.js +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bots.js","sourceRoot":"","sources":["../../../../src/utils/links/bots.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { isPresent } from '../type-assertions.js'\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Bot deeplinks\n *\n * Used to link to bots with a start parameter\n */\nexport const botStart = deeplinkBuilder<{\n /** Bot username */\n username: string\n /** Start parameter */\n parameter: string\n}>({\n internalBuild: ({ username, parameter }) => ['resolve', { domain: username, start: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const username = query.get('domain')\n const parameter = query.get('start')\n\n if (!username || !parameter) return null\n\n return { username, parameter }\n },\n externalBuild: ({ username, parameter }) => [username, { start: parameter }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const username = path\n const parameter = query.get('start')\n\n if (!parameter) return null\n\n return { username, parameter }\n },\n})\n\ntype BotAdminRight = Exclude<keyof tl.RawChatAdminRights, '_'>\n\nfunction normalizeBotAdmin(rights?: BotAdminRight[]): string | undefined {\n if (!rights?.length) return\n\n return rights\n .map((it) => {\n switch (it) {\n case 'changeInfo':\n return 'change_info'\n case 'postMessages':\n return 'post_messages'\n case 'editMessages':\n return 'edit_messages'\n case 'deleteMessages':\n return 'delete_messages'\n case 'banUsers':\n return 'restrict_members'\n case 'inviteUsers':\n return 'invite_users'\n case 'pinMessages':\n return 'pin_messages'\n case 'manageTopics':\n return 'manage_topics'\n case 'addAdmins':\n return 'promote_members'\n case 'manageCall':\n return 'manage_video_chats'\n case 'anonymous':\n return 'anonymous'\n case 'other':\n return 'manage_chat'\n case 'postStories':\n return 'post_stories'\n case 'editStories':\n return 'edit_stories'\n case 'deleteStories':\n return 'delete_stories'\n }\n })\n .join('+')\n}\n\nfunction parseBotAdmin(rights: string | null): BotAdminRight[] | undefined {\n if (!rights) return\n\n return rights\n .split('+')\n .map((it) => {\n switch (it) {\n case 'change_info':\n return 'changeInfo'\n case 'post_messages':\n return 'postMessages'\n case 'edit_messages':\n return 'editMessages'\n case 'delete_messages':\n return 'deleteMessages'\n case 'restrict_members':\n return 'banUsers'\n case 'invite_users':\n return 'inviteUsers'\n case 'pin_messages':\n return 'pinMessages'\n case 'manage_topics':\n return 'manageTopics'\n case 'promote_members':\n return 'addAdmins'\n case 'manage_video_chats':\n return 'manageCall'\n case 'anonymous':\n return 'anonymous'\n case 'manage_chat':\n return 'other'\n case 'post_stories':\n return 'postStories'\n case 'edit_stories':\n return 'editStories'\n case 'delete_stories':\n return 'deleteStories'\n default:\n return null\n }\n })\n .filter(isPresent)\n}\n\n/**\n * Bot add to group links\n *\n * Used to ask the user to add a bot to a group, optionally asking for admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToGroup = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** If specified, the client will call `/start parameter` on the bot once the bot has been added */\n parameter?: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, parameter, admin }) => [\n 'resolve',\n { domain: bot, startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, parameter, admin }) => [\n bot,\n { startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Bot add to channel links\n *\n * Used to ask the user to add a bot to a channel, optionally with admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToChannel = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, admin }) => [\n 'resolve',\n { domain: bot, startchannel: true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, admin }) => [bot, { startchannel: true, admin: normalizeBotAdmin(admin) }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Game links\n *\n * Used to share games.\n */\nexport const botGame = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Game short name */\n game: string\n}>({\n internalBuild: ({ bot, game }) => ['resolve', { domain: bot, game }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const game = query.get('game')\n\n if (!bot || !game) return null\n\n return { bot, game }\n },\n externalBuild: ({ bot, game }) => [bot, { game }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const game = query.get('game')\n\n if (!game) return null\n\n return { bot, game }\n },\n})\n\n/**\n * Named bot web app links\n *\n * Used to share named bot web apps.\n *\n * These links are different from bot attachment menu deep links,\n * because they don't require the user to install an attachment menu,\n * and a single bot can offer multiple named web apps, distinguished by\n * their `short_name`.\n */\nexport const botWebApp = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** App short name */\n app: string\n /** Parameter to be passed by the client to messages.requestAppWebView as `start_param` */\n parameter?: string\n}>({\n internalBuild: ({ bot, app, parameter }) => ['resolve', { domain: bot, appname: app, startapp: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const app = query.get('appname')\n const parameter = query.get('startapp')\n\n if (!bot || !app) return null\n\n return { bot, app, parameter: parameter || undefined }\n },\n\n externalBuild: ({ bot, app, parameter }) => [`${bot}/${app}`, { startapp: parameter }],\n externalParse: (path, query) => {\n const [bot, app, rest] = path.split('/')\n\n if (!app || rest) return null\n\n const parameter = query.get('startapp')\n\n return { bot, app, parameter: parameter || undefined }\n },\n})\n"]}
1
+ {"version":3,"file":"bots.js","sourceRoot":"","sources":["../../../../src/utils/links/bots.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { isPresent } from '../type-assertions.js'\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Bot deeplinks\n *\n * Used to link to bots with a start parameter\n */\nexport const botStart = deeplinkBuilder<{\n /** Bot username */\n username: string\n /** Start parameter */\n parameter: string\n}>({\n internalBuild: ({ username, parameter }) => ['resolve', { domain: username, start: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const username = query.get('domain')\n const parameter = query.get('start')\n\n if (!username || !parameter) return null\n\n return { username, parameter }\n },\n externalBuild: ({ username, parameter }) => [username, { start: parameter }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const username = path\n const parameter = query.get('start')\n\n if (!parameter) return null\n\n return { username, parameter }\n },\n})\n\ntype BotAdminRight = Exclude<keyof tl.RawChatAdminRights, '_'>\n\nfunction normalizeBotAdmin(rights?: BotAdminRight[]): string | undefined {\n if (!rights?.length) return\n\n return rights\n .map((it) => {\n switch (it) {\n case 'changeInfo':\n return 'change_info'\n case 'postMessages':\n return 'post_messages'\n case 'editMessages':\n return 'edit_messages'\n case 'deleteMessages':\n return 'delete_messages'\n case 'banUsers':\n return 'restrict_members'\n case 'inviteUsers':\n return 'invite_users'\n case 'pinMessages':\n return 'pin_messages'\n case 'manageTopics':\n return 'manage_topics'\n case 'addAdmins':\n return 'promote_members'\n case 'manageCall':\n return 'manage_video_chats'\n case 'anonymous':\n return 'anonymous'\n case 'other':\n return 'manage_chat'\n case 'postStories':\n return 'post_stories'\n case 'editStories':\n return 'edit_stories'\n case 'deleteStories':\n return 'delete_stories'\n }\n })\n .join('+')\n}\n\nfunction parseBotAdmin(rights: string | null): BotAdminRight[] | undefined {\n if (!rights) return\n\n return rights\n .split('+')\n .map((it) => {\n switch (it) {\n case 'change_info':\n return 'changeInfo'\n case 'post_messages':\n return 'postMessages'\n case 'edit_messages':\n return 'editMessages'\n case 'delete_messages':\n return 'deleteMessages'\n case 'restrict_members':\n return 'banUsers'\n case 'invite_users':\n return 'inviteUsers'\n case 'pin_messages':\n return 'pinMessages'\n case 'manage_topics':\n return 'manageTopics'\n case 'promote_members':\n return 'addAdmins'\n case 'manage_video_chats':\n return 'manageCall'\n case 'anonymous':\n return 'anonymous'\n case 'manage_chat':\n return 'other'\n case 'post_stories':\n return 'postStories'\n case 'edit_stories':\n return 'editStories'\n case 'delete_stories':\n return 'deleteStories'\n default:\n return null\n }\n })\n .filter(isPresent)\n}\n\n/**\n * Bot add to group links\n *\n * Used to ask the user to add a bot to a group, optionally asking for admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToGroup = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** If specified, the client will call `/start parameter` on the bot once the bot has been added */\n parameter?: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, parameter, admin }) => [\n 'resolve',\n { domain: bot, startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, parameter, admin }) => [\n bot,\n { startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Bot add to channel links\n *\n * Used to ask the user to add a bot to a channel, optionally with admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToChannel = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, admin }) => [\n 'resolve',\n { domain: bot, startchannel: true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, admin }) => [bot, { startchannel: true, admin: normalizeBotAdmin(admin) }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Game links\n *\n * Used to share games.\n */\nexport const botGame = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Game short name */\n game: string\n}>({\n internalBuild: ({ bot, game }) => ['resolve', { domain: bot, game }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const game = query.get('game')\n\n if (!bot || !game) return null\n\n return { bot, game }\n },\n externalBuild: ({ bot, game }) => [bot, { game }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const game = query.get('game')\n\n if (!game) return null\n\n return { bot, game }\n },\n})\n\n/**\n * Named bot web app links\n *\n * Used to share named bot web apps.\n *\n * These links are different from bot attachment menu deep links,\n * because they don't require the user to install an attachment menu,\n * and a single bot can offer multiple named web apps, distinguished by\n * their `short_name`.\n */\nexport const botWebApp = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** App short name */\n app: string\n /** Parameter to be passed by the client to messages.requestAppWebView as `start_param` */\n parameter?: string\n}>({\n internalBuild: ({ bot, app, parameter }) => ['resolve', { domain: bot, appname: app, startapp: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const app = query.get('appname')\n const parameter = query.get('startapp')\n\n if (!bot || !app) return null\n\n return { bot, app, parameter: parameter || undefined }\n },\n\n externalBuild: ({ bot, app, parameter }) => [`${bot}/${app}`, { startapp: parameter }],\n externalParse: (path, query) => {\n const [bot, app, rest] = path.split('/')\n\n if (!app || rest) return null\n\n const parameter = query.get('startapp')\n\n return { bot, app, parameter: parameter || undefined }\n },\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/utils/links/chat.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable indent,func-call-spacing */\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Chat invite links\n *\n * Used to invite users to private groups and channels\n */\nexport const chatInvite = deeplinkBuilder<{ hash: string }>({\n internalBuild: ({ hash }) => ['join', { invite: hash }],\n internalParse: (path, query) => {\n if (path !== 'join') return null\n\n const invite = query.get('invite')\n if (!invite) return null\n\n return { hash: invite }\n },\n externalBuild: ({ hash }) => [`+${hash}`, null],\n externalParse: (path) => {\n const m = path.match(/^(?:\\+|joinchat\\/)([a-zA-Z0-9_-]+)$/)\n if (!m) return null\n\n if (m[1].match(/^[0-9]+$/)) {\n // phone number\n return null\n }\n\n return { hash: m[1] }\n },\n})\n\n/**\n * Chat folder links\n */\nexport const chatFolder = deeplinkBuilder<{ slug: string }>({\n internalBuild: ({ slug }) => ['addlist', { slug }],\n internalParse: (path, query) => {\n if (path !== 'addlist') return null\n\n const slug = query.get('slug')\n if (!slug) return null\n\n return { slug }\n },\n externalBuild: ({ slug }) => [`addlist/${slug}`, null],\n externalParse: (path) => {\n const [prefix, slug] = path.split('/')\n if (prefix !== 'addlist') return null\n\n return { slug }\n },\n})\n\nfunction parseMediaTimestamp(timestamp: string) {\n let m\n\n if ((m = timestamp.match(/^(\\d+)$/))) {\n return Number(m[1])\n }\n\n if ((m = timestamp.match(/^(\\d+):(\\d{1,2})$/))) {\n return Number(m[1]) * 60 + Number(m[2])\n }\n\n if ((m = timestamp.match(/^(?:(\\d+)h)?(?:(\\d{1,2})m)?(?:(\\d{1,2})s)$/))) {\n return (Number(m[1]) || 0) * 3600 + (Number(m[2]) || 0) * 60 + (Number(m[3]) || 0)\n }\n\n return undefined\n}\n\n/**\n * Message links\n *\n * Used to link to specific messages in public or private groups and channels.\n *\n * Note: `channelId` is a non-marked channel ID\n */\nexport const message = deeplinkBuilder<\n ({ username: string } | { channelId: number }) & {\n /** Message ID */\n id: number\n /** Thread ID */\n threadId?: number\n\n /**\n * For comments, `id` will contain the message ID of the channel message that started\n * the comment section and this field will contain the message ID of the comment in\n * the discussion group.\n */\n commentId?: number\n\n /**\n * Timestamp at which to start playing the media file present\n * in the body or in the webpage preview of the message\n */\n mediaTimestamp?: number\n\n /**\n * Whether this is a link to a specific message in the album or to the entire album\n */\n single?: boolean\n }\n>({\n internalBuild: (params) => {\n const common = {\n post: params.id,\n thread: params.threadId,\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n return ['resolve', { domain: params.username, ...common }]\n }\n\n return ['privatepost', { channel: params.channelId, ...common }]\n },\n internalParse: (path, query) => {\n const common = {\n id: Number(query.get('post')),\n threadId: query.has('thread') ? Number(query.get('thread')) : undefined,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (path === 'resolve') {\n const username = query.get('domain')\n if (!username) return null\n\n return { username, ...common }\n }\n\n if (path === 'privatepost') {\n const channelId = Number(query.get('channel'))\n if (!channelId) return null\n\n return { channelId, ...common }\n }\n\n return null\n },\n\n externalBuild: (params) => {\n const common = {\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n if (params.threadId) {\n return [`${params.username}/${params.threadId}/${params.id}`, common]\n }\n\n return [`${params.username}/${params.id}`, common]\n }\n\n if (params.threadId) {\n return [`c/${params.channelId}/${params.threadId}/${params.id}`, common]\n }\n\n return [`c/${params.channelId}/${params.id}`, common]\n },\n externalParse: (path, query) => {\n const chunks = path.split('/')\n\n if (chunks.length < 2) return null\n\n const id = Number(chunks[chunks.length - 1])\n if (isNaN(id)) return null\n\n const common = {\n id,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (chunks[0] === 'c') {\n const channelId = Number(chunks[1])\n if (isNaN(channelId)) return null\n\n return {\n channelId,\n threadId: chunks[3] ? Number(chunks[2]) : undefined,\n ...common,\n }\n }\n\n const username = chunks[0]\n if (username[0] === '+') return null\n\n return {\n username,\n threadId: chunks[2] ? Number(chunks[1]) : undefined,\n ...common,\n }\n },\n})\n"]}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/utils/links/chat.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable indent,func-call-spacing */\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Chat invite links\n *\n * Used to invite users to private groups and channels\n */\nexport const chatInvite = deeplinkBuilder<{ hash: string }>({\n internalBuild: ({ hash }) => ['join', { invite: hash }],\n internalParse: (path, query) => {\n if (path !== 'join') return null\n\n const invite = query.get('invite')\n if (!invite) return null\n\n return { hash: invite }\n },\n externalBuild: ({ hash }) => [`+${hash}`, null],\n externalParse: (path) => {\n const m = path.match(/^(?:\\+|joinchat\\/)([a-zA-Z0-9_-]+)$/)\n if (!m) return null\n\n if (m[1].match(/^[0-9]+$/)) {\n // phone number\n return null\n }\n\n return { hash: m[1] }\n },\n})\n\n/**\n * Chat folder links\n */\nexport const chatFolder = deeplinkBuilder<{ slug: string }>({\n internalBuild: ({ slug }) => ['addlist', { slug }],\n internalParse: (path, query) => {\n if (path !== 'addlist') return null\n\n const slug = query.get('slug')\n if (!slug) return null\n\n return { slug }\n },\n externalBuild: ({ slug }) => [`addlist/${slug}`, null],\n externalParse: (path) => {\n const [prefix, slug] = path.split('/')\n if (prefix !== 'addlist') return null\n\n return { slug }\n },\n})\n\nfunction parseMediaTimestamp(timestamp: string) {\n let m\n\n if ((m = timestamp.match(/^(\\d+)$/))) {\n return Number(m[1])\n }\n\n if ((m = timestamp.match(/^(\\d+):(\\d{1,2})$/))) {\n return Number(m[1]) * 60 + Number(m[2])\n }\n\n if ((m = timestamp.match(/^(?:(\\d+)h)?(?:(\\d{1,2})m)?(?:(\\d{1,2})s)$/))) {\n return (Number(m[1]) || 0) * 3600 + (Number(m[2]) || 0) * 60 + (Number(m[3]) || 0)\n }\n\n return undefined\n}\n\n/**\n * Message links\n *\n * Used to link to specific messages in public or private groups and channels.\n *\n * Note: `channelId` is a non-marked channel ID\n */\nexport const message = deeplinkBuilder<\n ({ username: string } | { channelId: number }) & {\n /** Message ID */\n id: number\n /** Thread ID */\n threadId?: number\n\n /**\n * For comments, `id` will contain the message ID of the channel message that started\n * the comment section and this field will contain the message ID of the comment in\n * the discussion group.\n */\n commentId?: number\n\n /**\n * Timestamp at which to start playing the media file present\n * in the body or in the webpage preview of the message\n */\n mediaTimestamp?: number\n\n /**\n * Whether this is a link to a specific message in the album or to the entire album\n */\n single?: boolean\n }\n>({\n internalBuild: (params) => {\n const common = {\n post: params.id,\n thread: params.threadId,\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n return ['resolve', { domain: params.username, ...common }]\n }\n\n return ['privatepost', { channel: params.channelId, ...common }]\n },\n internalParse: (path, query) => {\n const common = {\n id: Number(query.get('post')),\n threadId: query.has('thread') ? Number(query.get('thread')) : undefined,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (path === 'resolve') {\n const username = query.get('domain')\n if (!username) return null\n\n return { username, ...common }\n }\n\n if (path === 'privatepost') {\n const channelId = Number(query.get('channel'))\n if (!channelId) return null\n\n return { channelId, ...common }\n }\n\n return null\n },\n\n externalBuild: (params) => {\n const common = {\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n if (params.threadId) {\n return [`${params.username}/${params.threadId}/${params.id}`, common]\n }\n\n return [`${params.username}/${params.id}`, common]\n }\n\n if (params.threadId) {\n return [`c/${params.channelId}/${params.threadId}/${params.id}`, common]\n }\n\n return [`c/${params.channelId}/${params.id}`, common]\n },\n externalParse: (path, query) => {\n const chunks = path.split('/')\n\n if (chunks.length < 2) return null\n\n const id = Number(chunks[chunks.length - 1])\n if (isNaN(id)) return null\n\n const common = {\n id,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (chunks[0] === 'c') {\n const channelId = Number(chunks[1])\n if (isNaN(channelId)) return null\n\n return {\n channelId,\n threadId: chunks[3] ? Number(chunks[2]) : undefined,\n ...common,\n }\n }\n\n const username = chunks[0]\n if (username[0] === '+') return null\n\n return {\n username,\n threadId: chunks[2] ? Number(chunks[1]) : undefined,\n ...common,\n }\n },\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/links/common.ts"],"names":[],"mappings":"AAmCA,SAAS,UAAU,CAAC,KAAiB;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAErB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC9C,kCAAkC;QAClC,IAAI,KAAK,IAAI,SAAS;YAAE,SAAQ;QAEhC,IAAI,GAAG;YAAE,GAAG,IAAI,GAAG,CAAA;QAEnB,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA;YACf,SAAQ;SACX;QAED,GAAG,IAAI,GAAG,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;KAC/C;IAED,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,OAAO,IAAI,GAAG,EAAE,CAAA;AACpB,CAAC;AAED,0BAA0B,CAAC,MAAM,UAAU,eAAe,CAAI,MAA+B;IACzF,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAE7E,MAAM,GAAG,GAAG,CAAC,OAAkC,EAAE,EAAE;QAC/C,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAEhE,IAAI,QAAQ,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAEtE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,IAAS,CAAC,CAAA;YAE9C,OAAO,QAAQ,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA;SAC5C;QAED,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAErE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,IAAS,CAAC,CAAA;QAE9C,OAAO,GAAG,QAAQ,MAAM,MAAM,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA;IAChE,CAAC,CAAA;IAED,MAAM,EAAE,GAAG,GAAkB,CAAA;IAE7B,EAAE,CAAC,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAE1C,uEAAuE;QACvE,IAAI,UAAU;YAAE,GAAG,GAAG,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAE3B,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAEtE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAErC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;SAClD;QAED,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAErE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAErC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,OAAO,EAAE,CAAA;AACb,CAAC","sourcesContent":["export interface CommonDeeplinkOptions {\n /**\n * Protocol to use for deeplink\n * - `tg` - use `tg://` protocol links (default)\n * - `http` - use `http://` protocol\n * - `https` - use `https://` protocol\n * - `none` - don't use any protocol\n *\n * @default 'https'\n */\n protocol?: 'tg' | 'http' | 'https' | 'none'\n\n /**\n * For protocols except `tg://`, domain to use\n *\n * @default 't.me'\n */\n domain?: string\n}\n\ntype InputQuery = Record<string, string | number | true | undefined> | null\n\ninterface BuildDeeplinkOptions<T> {\n internalBuild?: (options: T) => [string, InputQuery]\n internalParse?: (path: string, query: URLSearchParams) => T | null\n\n externalBuild?: (options: T) => [string, InputQuery]\n externalParse?: (path: string, query: URLSearchParams) => T | null\n}\n\nexport type Deeplink<T> = {\n (options: T & CommonDeeplinkOptions): string\n parse: (url: string) => T | null\n}\n\nfunction writeQuery(query: InputQuery) {\n if (!query) return ''\n\n let str = ''\n\n for (const [key, value] of Object.entries(query)) {\n // eslint-disable-next-line eqeqeq\n if (value == undefined) continue\n\n if (str) str += '&'\n\n if (value === true) {\n str += `${key}`\n continue\n }\n\n str += `${key}=${encodeURIComponent(value)}`\n }\n\n if (!str) return ''\n\n return `?${str}`\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function deeplinkBuilder<T>(params: BuildDeeplinkOptions<T>): Deeplink<T> {\n const { internalBuild, internalParse, externalBuild, externalParse } = params\n\n const fn_ = (options: T & CommonDeeplinkOptions) => {\n const { protocol = 'https', domain = 't.me', ...rest } = options\n\n if (protocol === 'tg') {\n if (!internalBuild) throw new Error('tg:// deeplink is not supported')\n\n const [path, query] = internalBuild(rest as T)\n\n return `tg://${path}${writeQuery(query)}`\n }\n\n if (!externalBuild) throw new Error('t.me deeplink is not supported')\n\n const [path, query] = externalBuild(rest as T)\n\n return `${protocol}://${domain}/${path}${writeQuery(query)}`\n }\n\n const fn = fn_ as Deeplink<T>\n\n fn.parse = (url: string) => {\n const isInternal = url.startsWith('tg://')\n\n // URL with non-standard protocols has bad behavior across environments\n if (isInternal) url = `https://fake/${url.slice(5)}`\n\n const parsed = new URL(url)\n\n if (isInternal) {\n if (!internalParse) throw new Error('tg:// deeplink is not supported')\n\n const path = parsed.pathname.slice(1)\n\n return internalParse(path, parsed.searchParams)\n }\n\n if (!externalParse) throw new Error('t.me deeplink is not supported')\n\n const path = parsed.pathname.slice(1)\n\n return externalParse(path, parsed.searchParams)\n }\n\n return fn\n}\n"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/links/common.ts"],"names":[],"mappings":"AAmCA,SAAS,UAAU,CAAC,KAAiB;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAErB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,kCAAkC;QAClC,IAAI,KAAK,IAAI,SAAS;YAAE,SAAQ;QAEhC,IAAI,GAAG;YAAE,GAAG,IAAI,GAAG,CAAA;QAEnB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjB,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA;YACf,SAAQ;QACZ,CAAC;QAED,GAAG,IAAI,GAAG,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;IAChD,CAAC;IAED,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,OAAO,IAAI,GAAG,EAAE,CAAA;AACpB,CAAC;AAED,0BAA0B,CAAC,MAAM,UAAU,eAAe,CAAI,MAA+B;IACzF,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAE7E,MAAM,GAAG,GAAG,CAAC,OAAkC,EAAE,EAAE;QAC/C,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAEhE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAEtE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,IAAS,CAAC,CAAA;YAE9C,OAAO,QAAQ,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAErE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,IAAS,CAAC,CAAA;QAE9C,OAAO,GAAG,QAAQ,MAAM,MAAM,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA;IAChE,CAAC,CAAA;IAED,MAAM,EAAE,GAAG,GAAkB,CAAA;IAE7B,EAAE,CAAC,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAE1C,uEAAuE;QACvE,IAAI,UAAU;YAAE,GAAG,GAAG,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAE3B,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAEtE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAErC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAErE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAErC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,OAAO,EAAE,CAAA;AACb,CAAC","sourcesContent":["export interface CommonDeeplinkOptions {\n /**\n * Protocol to use for deeplink\n * - `tg` - use `tg://` protocol links (default)\n * - `http` - use `http://` protocol\n * - `https` - use `https://` protocol\n * - `none` - don't use any protocol\n *\n * @default 'https'\n */\n protocol?: 'tg' | 'http' | 'https' | 'none'\n\n /**\n * For protocols except `tg://`, domain to use\n *\n * @default 't.me'\n */\n domain?: string\n}\n\ntype InputQuery = Record<string, string | number | true | undefined> | null\n\ninterface BuildDeeplinkOptions<T> {\n internalBuild?: (options: T) => [string, InputQuery]\n internalParse?: (path: string, query: URLSearchParams) => T | null\n\n externalBuild?: (options: T) => [string, InputQuery]\n externalParse?: (path: string, query: URLSearchParams) => T | null\n}\n\nexport type Deeplink<T> = {\n (options: T & CommonDeeplinkOptions): string\n parse: (url: string) => T | null\n}\n\nfunction writeQuery(query: InputQuery) {\n if (!query) return ''\n\n let str = ''\n\n for (const [key, value] of Object.entries(query)) {\n // eslint-disable-next-line eqeqeq\n if (value == undefined) continue\n\n if (str) str += '&'\n\n if (value === true) {\n str += `${key}`\n continue\n }\n\n str += `${key}=${encodeURIComponent(value)}`\n }\n\n if (!str) return ''\n\n return `?${str}`\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function deeplinkBuilder<T>(params: BuildDeeplinkOptions<T>): Deeplink<T> {\n const { internalBuild, internalParse, externalBuild, externalParse } = params\n\n const fn_ = (options: T & CommonDeeplinkOptions) => {\n const { protocol = 'https', domain = 't.me', ...rest } = options\n\n if (protocol === 'tg') {\n if (!internalBuild) throw new Error('tg:// deeplink is not supported')\n\n const [path, query] = internalBuild(rest as T)\n\n return `tg://${path}${writeQuery(query)}`\n }\n\n if (!externalBuild) throw new Error('t.me deeplink is not supported')\n\n const [path, query] = externalBuild(rest as T)\n\n return `${protocol}://${domain}/${path}${writeQuery(query)}`\n }\n\n const fn = fn_ as Deeplink<T>\n\n fn.parse = (url: string) => {\n const isInternal = url.startsWith('tg://')\n\n // URL with non-standard protocols has bad behavior across environments\n if (isInternal) url = `https://fake/${url.slice(5)}`\n\n const parsed = new URL(url)\n\n if (isInternal) {\n if (!internalParse) throw new Error('tg:// deeplink is not supported')\n\n const path = parsed.pathname.slice(1)\n\n return internalParse(path, parsed.searchParams)\n }\n\n if (!externalParse) throw new Error('t.me deeplink is not supported')\n\n const path = parsed.pathname.slice(1)\n\n return externalParse(path, parsed.searchParams)\n }\n\n return fn\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/utils/links/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAiC;IACjE,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC5D,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE9B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAA;IAC3C,CAAC;IACD,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1D,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QAEjC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE9B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAA;IAC3C,CAAC;CACJ,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAA+C;IAC/E,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;QACtB,IAAI,UAAU,IAAI,MAAM,EAAE;YACtB,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;SAChD;QAED,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QAEjC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEpC,IAAI,QAAQ,EAAE;YACV,OAAO,EAAE,QAAQ,EAAE,CAAA;SACtB;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;QAE9C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACnB,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;SAC1C;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;QACtB,IAAI,UAAU,IAAI,MAAM,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;SAC5C;QAED,OAAO,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAA;QAEpC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,IAAI,KAAK,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAA;YAEjC,OAAO,EAAE,SAAS,EAAE,CAAA;SACvB;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QAEnC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC;CACJ,CAAC,CAAA","sourcesContent":["import { deeplinkBuilder } from './common.js'\n\n/**\n * Share links\n *\n * Used to share a prepared message and URL into a chosen chat's text field.\n */\nexport const share = deeplinkBuilder<{ url: string; text?: string }>({\n internalBuild: ({ url, text }) => ['msg_url', { url, text }],\n internalParse: (path, query) => {\n if (path !== 'msg_url') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n externalBuild: ({ url, text }) => ['share', { url, text }],\n externalParse: (path, query) => {\n if (path !== 'share') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n})\n\n/**\n * Boost links\n *\n * Used by users to boost channels, granting them the ability to post stories.\n */\nexport const boost = deeplinkBuilder<{ username: string } | { channelId: number }>({\n internalBuild: (params) => {\n if ('username' in params) {\n return ['boost', { domain: params.username }]\n }\n\n return ['boost', { channel: params.channelId }]\n },\n internalParse: (path, query) => {\n if (path !== 'boost') return null\n\n const username = query.get('domain')\n\n if (username) {\n return { username }\n }\n\n const channelId = Number(query.get('channel'))\n\n if (!isNaN(channelId)) {\n return { channelId: Number(channelId) }\n }\n\n return null\n },\n externalBuild: (params) => {\n if ('username' in params) {\n return [params.username, { boost: true }]\n }\n\n return [`c/${params.channelId}`, { boost: true }]\n },\n externalParse: (path, query) => {\n if (!query.has('boost')) return null\n\n if (path.startsWith('c/')) {\n const channelId = Number(path.slice(2))\n if (isNaN(channelId)) return null\n\n return { channelId }\n }\n\n if (path.includes('/')) return null\n\n return { username: path }\n },\n})\n"]}
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/utils/links/misc.ts"],"names":[],"mappings":"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","sourcesContent":["import { deeplinkBuilder } from './common.js'\n\n/**\n * Share links\n *\n * Used to share a prepared message and URL into a chosen chat's text field.\n */\nexport const share = deeplinkBuilder<{ url: string; text?: string }>({\n internalBuild: ({ url, text }) => ['msg_url', { url, text }],\n internalParse: (path, query) => {\n if (path !== 'msg_url') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n externalBuild: ({ url, text }) => ['share', { url, text }],\n externalParse: (path, query) => {\n if (path !== 'share') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n})\n\n/**\n * Boost links\n *\n * Used by users to boost channels, granting them the ability to post stories.\n */\nexport const boost = deeplinkBuilder<{ username: string } | { channelId: number }>({\n internalBuild: (params) => {\n if ('username' in params) {\n return ['boost', { domain: params.username }]\n }\n\n return ['boost', { channel: params.channelId }]\n },\n internalParse: (path, query) => {\n if (path !== 'boost') return null\n\n const username = query.get('domain')\n\n if (username) {\n return { username }\n }\n\n const channelId = Number(query.get('channel'))\n\n if (!isNaN(channelId)) {\n return { channelId: Number(channelId) }\n }\n\n return null\n },\n externalBuild: (params) => {\n if ('username' in params) {\n return [params.username, { boost: true }]\n }\n\n return [`c/${params.channelId}`, { boost: true }]\n },\n externalParse: (path, query) => {\n if (!query.has('boost')) return null\n\n if (path.startsWith('c/')) {\n const channelId = Number(path.slice(2))\n if (isNaN(channelId)) return null\n\n return { channelId }\n }\n\n if (path.includes('/')) return null\n\n return { username: path }\n },\n})\n"]}
@@ -34,11 +34,11 @@ export declare class LogManager extends Logger {
34
34
  static INFO: number;
35
35
  static DEBUG: number;
36
36
  static VERBOSE: number;
37
- constructor(tag?: string);
38
- private _filter;
39
37
  readonly platform: import("../platform.js").ICorePlatform;
40
38
  level: number;
41
39
  handler: (color: number, level: number, tag: string, fmt: string, args: unknown[]) => void;
40
+ constructor(tag?: string);
41
+ private _filter;
42
42
  /**
43
43
  * Create a {@link Logger} with the given tag
44
44
  *
@@ -5,16 +5,15 @@ const FORMATTER_RE = /%[a-zA-Z]/g;
5
5
  * Logger created by {@link LogManager}
6
6
  */
7
7
  export class Logger {
8
+ mgr;
9
+ tag;
10
+ parent;
11
+ color;
12
+ prefix = '';
8
13
  constructor(mgr, tag, parent = mgr) {
9
14
  this.mgr = mgr;
10
15
  this.tag = tag;
11
16
  this.parent = parent;
12
- this.prefix = '';
13
- this.error = this.log.bind(this, LogManager.ERROR);
14
- this.warn = this.log.bind(this, LogManager.WARN);
15
- this.info = this.log.bind(this, LogManager.INFO);
16
- this.debug = this.log.bind(this, LogManager.DEBUG);
17
- this.verbose = this.log.bind(this, LogManager.VERBOSE);
18
17
  let hash = 0;
19
18
  for (let i = 0; i < tag.length; i++) {
20
19
  hash = (hash << 5) - hash + tag.charCodeAt(i);
@@ -93,6 +92,11 @@ export class Logger {
93
92
  }
94
93
  this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args);
95
94
  }
95
+ error = this.log.bind(this, LogManager.ERROR);
96
+ warn = this.log.bind(this, LogManager.WARN);
97
+ info = this.log.bind(this, LogManager.INFO);
98
+ debug = this.log.bind(this, LogManager.DEBUG);
99
+ verbose = this.log.bind(this, LogManager.VERBOSE);
96
100
  /**
97
101
  * Create a {@link Logger} with the given tag
98
102
  * from the same {@link LogManager} as the current
@@ -109,16 +113,25 @@ const defaultFilter = () => true;
109
113
  * Log manager. A logger that allows managing child loggers
110
114
  */
111
115
  export class LogManager extends Logger {
116
+ static OFF = 0;
117
+ static ERROR = 1;
118
+ static WARN = 2;
119
+ static INFO = 3;
120
+ static DEBUG = 4;
121
+ static VERBOSE = 5;
122
+ platform;
123
+ level;
124
+ handler;
112
125
  constructor(tag = 'base') {
113
126
  // workaround because we cant pass this to super
114
127
  // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument
115
128
  super(null, tag);
116
- this._filter = defaultFilter;
129
+ this.mgr = this;
117
130
  this.platform = getPlatform();
118
131
  this.level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL;
119
132
  this.handler = this.platform.log.bind(this.platform);
120
- this.mgr = this;
121
133
  }
134
+ _filter = defaultFilter;
122
135
  /**
123
136
  * Create a {@link Logger} with the given tag
124
137
  *
@@ -136,10 +149,4 @@ export class LogManager extends Logger {
136
149
  this._filter = cb ?? defaultFilter;
137
150
  }
138
151
  }
139
- LogManager.OFF = 0;
140
- LogManager.ERROR = 1;
141
- LogManager.WARN = 2;
142
- LogManager.INFO = 3;
143
- LogManager.DEBUG = 4;
144
- LogManager.VERBOSE = 5;
145
152
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPlatform } from '../platform.js'\n\nconst DEFAULT_LOG_LEVEL = 3\nconst FORMATTER_RE = /%[a-zA-Z]/g\n\n/**\n * Logger created by {@link LogManager}\n */\nexport class Logger {\n private color: number\n\n prefix = ''\n\n constructor(\n readonly mgr: LogManager,\n readonly tag: string,\n readonly parent: Logger = mgr,\n ) {\n let hash = 0\n\n for (let i = 0; i < tag.length; i++) {\n hash = (hash << 5) - hash + tag.charCodeAt(i)\n hash |= 0 // convert to 32bit int\n }\n\n this.color = Math.abs(hash) % 6\n }\n\n getPrefix(): string {\n let s = ''\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let obj: Logger | undefined = this\n\n while (obj) {\n if (obj.prefix) s = obj.prefix + s\n obj = obj.parent\n }\n\n return s\n }\n\n log(level: number, fmt: string, ...args: unknown[]): void {\n if (level > this.mgr.level) return\n // eslint-disable-next-line dot-notation\n if (!this.mgr['_filter'](this.tag)) return\n\n // custom formatters\n if (\n fmt.includes('%h') ||\n fmt.includes('%b') ||\n fmt.includes('%j') ||\n fmt.includes('%J') ||\n fmt.includes('%l') ||\n fmt.includes('%L')\n ) {\n let idx = 0\n fmt = fmt.replace(FORMATTER_RE, (m) => {\n if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L') {\n let val = args[idx]\n\n args.splice(idx, 1)\n\n if (m === '%h') {\n if (ArrayBuffer.isView(val)) return this.mgr.platform.hexEncode(val as Uint8Array)\n if (typeof val === 'number' || typeof val === 'bigint') return val.toString(16)\n\n return String(val)\n }\n if (m === '%b') return String(Boolean(val))\n\n if (m === '%j' || m === '%J') {\n if (m === '%J') {\n val = [...(val as IterableIterator<unknown>)]\n }\n\n return JSON.stringify(val, (k, v) => {\n if (\n ArrayBuffer.isView(v) ||\n (typeof v === 'object' && v.type === 'Buffer' && Array.isArray(v.data)) // todo: how can we do this better?\n ) {\n // eslint-disable-next-line\n let str = v.data ? Buffer.from(v.data as number[]).toString('hex') : this.mgr.platform.hexEncode(v)\n\n if (str.length > 300) {\n str = str.slice(0, 300) + '...'\n }\n\n return str\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return v\n })\n }\n if (m === '%l') return String(val)\n\n if (m === '%L') {\n if (!Array.isArray(val)) return 'n/a'\n\n return `[${(val as unknown[]).map(String).join(', ')}]`\n }\n }\n\n idx++\n\n return m\n })\n }\n\n this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args)\n }\n\n readonly error = this.log.bind(this, LogManager.ERROR)\n readonly warn = this.log.bind(this, LogManager.WARN)\n readonly info = this.log.bind(this, LogManager.INFO)\n readonly debug = this.log.bind(this, LogManager.DEBUG)\n readonly verbose = this.log.bind(this, LogManager.VERBOSE)\n\n /**\n * Create a {@link Logger} with the given tag\n * from the same {@link LogManager} as the current\n * Logger.\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this.mgr, tag, this)\n }\n}\n\nconst defaultFilter = () => true\n\n/**\n * Log manager. A logger that allows managing child loggers\n */\nexport class LogManager extends Logger {\n static OFF = 0\n static ERROR = 1\n static WARN = 2\n static INFO = 3\n static DEBUG = 4\n static VERBOSE = 5\n\n constructor(tag = 'base') {\n // workaround because we cant pass this to super\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument\n super(null as any, tag)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(this as any).mgr = this\n }\n\n private _filter: (tag: string) => boolean = defaultFilter\n\n readonly platform = getPlatform()\n\n level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL\n handler = this.platform.log.bind(this.platform)\n\n /**\n * Create a {@link Logger} with the given tag\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this, tag)\n }\n\n /**\n * Filter logging by tags.\n *\n * @param cb\n */\n filter(cb: ((tag: string) => boolean) | null): void {\n this._filter = cb ?? defaultFilter\n }\n}\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPlatform } from '../platform.js'\n\nconst DEFAULT_LOG_LEVEL = 3\nconst FORMATTER_RE = /%[a-zA-Z]/g\n\n/**\n * Logger created by {@link LogManager}\n */\nexport class Logger {\n private color: number\n\n prefix = ''\n\n constructor(\n readonly mgr: LogManager,\n readonly tag: string,\n readonly parent: Logger = mgr,\n ) {\n let hash = 0\n\n for (let i = 0; i < tag.length; i++) {\n hash = (hash << 5) - hash + tag.charCodeAt(i)\n hash |= 0 // convert to 32bit int\n }\n\n this.color = Math.abs(hash) % 6\n }\n\n getPrefix(): string {\n let s = ''\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let obj: Logger | undefined = this\n\n while (obj) {\n if (obj.prefix) s = obj.prefix + s\n obj = obj.parent\n }\n\n return s\n }\n\n log(level: number, fmt: string, ...args: unknown[]): void {\n if (level > this.mgr.level) return\n // eslint-disable-next-line dot-notation\n if (!this.mgr['_filter'](this.tag)) return\n\n // custom formatters\n if (\n fmt.includes('%h') ||\n fmt.includes('%b') ||\n fmt.includes('%j') ||\n fmt.includes('%J') ||\n fmt.includes('%l') ||\n fmt.includes('%L')\n ) {\n let idx = 0\n fmt = fmt.replace(FORMATTER_RE, (m) => {\n if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L') {\n let val = args[idx]\n\n args.splice(idx, 1)\n\n if (m === '%h') {\n if (ArrayBuffer.isView(val)) return this.mgr.platform.hexEncode(val as Uint8Array)\n if (typeof val === 'number' || typeof val === 'bigint') return val.toString(16)\n\n return String(val)\n }\n if (m === '%b') return String(Boolean(val))\n\n if (m === '%j' || m === '%J') {\n if (m === '%J') {\n val = [...(val as IterableIterator<unknown>)]\n }\n\n return JSON.stringify(val, (k, v) => {\n if (\n ArrayBuffer.isView(v) ||\n (typeof v === 'object' && v.type === 'Buffer' && Array.isArray(v.data)) // todo: how can we do this better?\n ) {\n // eslint-disable-next-line\n let str = v.data ? Buffer.from(v.data as number[]).toString('hex') : this.mgr.platform.hexEncode(v)\n\n if (str.length > 300) {\n str = str.slice(0, 300) + '...'\n }\n\n return str\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return v\n })\n }\n if (m === '%l') return String(val)\n\n if (m === '%L') {\n if (!Array.isArray(val)) return 'n/a'\n\n return `[${(val as unknown[]).map(String).join(', ')}]`\n }\n }\n\n idx++\n\n return m\n })\n }\n\n this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args)\n }\n\n readonly error = this.log.bind(this, LogManager.ERROR)\n readonly warn = this.log.bind(this, LogManager.WARN)\n readonly info = this.log.bind(this, LogManager.INFO)\n readonly debug = this.log.bind(this, LogManager.DEBUG)\n readonly verbose = this.log.bind(this, LogManager.VERBOSE)\n\n /**\n * Create a {@link Logger} with the given tag\n * from the same {@link LogManager} as the current\n * Logger.\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this.mgr, tag, this)\n }\n}\n\nconst defaultFilter = () => true\n\n/**\n * Log manager. A logger that allows managing child loggers\n */\nexport class LogManager extends Logger {\n static OFF = 0\n static ERROR = 1\n static WARN = 2\n static INFO = 3\n static DEBUG = 4\n static VERBOSE = 5\n\n readonly platform\n level: number\n handler\n\n constructor(tag = 'base') {\n // workaround because we cant pass this to super\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument\n super(null as any, tag)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(this as any).mgr = this\n\n this.platform = getPlatform()\n this.level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL\n this.handler = this.platform.log.bind(this.platform)\n }\n\n private _filter: (tag: string) => boolean = defaultFilter\n\n /**\n * Create a {@link Logger} with the given tag\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this, tag)\n }\n\n /**\n * Filter logging by tags.\n *\n * @param cb\n */\n filter(cb: ((tag: string) => boolean) | null): void {\n this._filter = cb ?? defaultFilter\n }\n}\n"]}
@@ -94,9 +94,7 @@ export function longFromFastString(val, unsigned = false) {
94
94
  * Uses fast string representation internally.
95
95
  */
96
96
  export class LongMap {
97
- constructor() {
98
- this._map = new Map();
99
- }
97
+ _map = new Map();
100
98
  set(key, value) {
101
99
  this._map.set(longToFastString(key), value);
102
100
  }
@@ -130,9 +128,7 @@ export class LongMap {
130
128
  * Uses fast string representation internally
131
129
  */
132
130
  export class LongSet {
133
- constructor() {
134
- this._set = new Set();
135
- }
131
+ _set = new Set();
136
132
  get size() {
137
133
  return this._set.size;
138
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"long-utils.js","sourceRoot":"","sources":["../../../src/utils/long-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { dataViewFromBuffer } from './buffer-utils.js'\nimport { getRandomInt } from './misc-utils.js'\n\n/**\n * Get a random Long\n *\n * @param unsigned Whether the number should be unsigned\n */\nexport function randomLong(unsigned = false): Long {\n const lo = getRandomInt(0xffffffff)\n const hi = getRandomInt(0xffffffff)\n\n return new Long(lo, hi, unsigned)\n}\n\n/**\n * Read a Long from a buffer\n *\n * @param buf Buffer to read from\n * @param unsigned Whether the number should be unsigned\n * @param le Whether the number is little-endian\n */\nexport function longFromBuffer(buf: Uint8Array, unsigned = false, le = true): Long {\n const dv = dataViewFromBuffer(buf)\n\n if (le) {\n return new Long(dv.getInt32(0, true), dv.getInt32(4, true), unsigned)\n }\n\n return new Long(dv.getInt32(4, false), dv.getInt32(0, false), unsigned)\n}\n\n/**\n * Remove a Long from an array\n *\n * @param arr Array to remove from\n * @param val Value to remove\n */\nexport function removeFromLongArray(arr: Long[], val: Long): boolean {\n for (let i = 0; i < arr.length; i++) {\n const v = arr[i]\n\n // v === val for the case when the exact same object was passed\n if (v === val || v.eq(val)) {\n arr.splice(i, 1)\n\n return true\n }\n }\n\n return false\n}\n\n/**\n * Compare two Longs and return -1, 0 or 1,\n * to be used as a comparator function.\n */\nexport function compareLongs(a: Long, b: Long): number {\n if (a.eq(b)) return 0\n\n if (a.gt(b)) return 1\n\n return -1\n}\n\n/**\n * Serialize a Long (int64) to its fast string representation:\n * `$high|$low`.\n *\n * This method is about 500* times faster than using `Long.toString()`,\n * and very useful when the string will only ever be used internally\n * (e.g. for keying a map)\n *\n * _\\* benchmark result, YMMV_\n *\n * @param val\n */\nexport function longToFastString(val: Long): string {\n return `${val.low}|${val.high}`\n}\n\n/**\n * Parse a Long (int64) from its fast string representation:\n * `$high|$low`.\n *\n * This method is about 2 times faster than using Long.fromString.\n *\n * @param val\n * @param unsigned\n */\nexport function longFromFastString(val: string, unsigned = false): Long {\n const parts = val.split('|')\n\n if (parts.length !== 2) throw new Error(`Invalid long fast string: ${val}`)\n const low = parseInt(parts[0])\n const high = parseInt(parts[1])\n\n if (isNaN(low) || isNaN(high)) {\n throw new Error(`Invalid long fast string: ${val}`)\n }\n\n return new Long(low, high, unsigned)\n}\n\n/**\n * Map with Longs as key.\n *\n * Uses fast string representation internally.\n */\nexport class LongMap<V> {\n private _map = new Map<string, V>()\n\n set(key: Long, value: V): void {\n this._map.set(longToFastString(key), value)\n }\n\n has(key: Long): boolean {\n return this._map.has(longToFastString(key))\n }\n\n get(key: Long): V | undefined {\n return this._map.get(longToFastString(key))\n }\n\n delete(key: Long): void {\n this._map.delete(longToFastString(key))\n }\n\n *keys(unsigned?: boolean): IterableIterator<Long> {\n for (const v of this._map.keys()) {\n yield longFromFastString(v, unsigned)\n }\n }\n\n values(): IterableIterator<V> {\n return this._map.values()\n }\n\n clear(): void {\n this._map.clear()\n }\n\n size(): number {\n return this._map.size\n }\n}\n\n/**\n * Set for Longs.\n *\n * Uses fast string representation internally\n */\nexport class LongSet {\n private _set = new Set<string>()\n\n get size(): number {\n return this._set.size\n }\n\n add(val: Long) {\n this._set.add(longToFastString(val))\n }\n\n delete(val: Long) {\n this._set.delete(longToFastString(val))\n }\n\n has(val: Long) {\n return this._set.has(longToFastString(val))\n }\n\n clear() {\n this._set.clear()\n }\n\n toArray() {\n const arr: Long[] = []\n\n for (const v of this._set) {\n arr.push(longFromFastString(v))\n }\n\n return arr\n }\n}\n"]}
1
+ {"version":3,"file":"long-utils.js","sourceRoot":"","sources":["../../../src/utils/long-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { dataViewFromBuffer } from './buffer-utils.js'\nimport { getRandomInt } from './misc-utils.js'\n\n/**\n * Get a random Long\n *\n * @param unsigned Whether the number should be unsigned\n */\nexport function randomLong(unsigned = false): Long {\n const lo = getRandomInt(0xffffffff)\n const hi = getRandomInt(0xffffffff)\n\n return new Long(lo, hi, unsigned)\n}\n\n/**\n * Read a Long from a buffer\n *\n * @param buf Buffer to read from\n * @param unsigned Whether the number should be unsigned\n * @param le Whether the number is little-endian\n */\nexport function longFromBuffer(buf: Uint8Array, unsigned = false, le = true): Long {\n const dv = dataViewFromBuffer(buf)\n\n if (le) {\n return new Long(dv.getInt32(0, true), dv.getInt32(4, true), unsigned)\n }\n\n return new Long(dv.getInt32(4, false), dv.getInt32(0, false), unsigned)\n}\n\n/**\n * Remove a Long from an array\n *\n * @param arr Array to remove from\n * @param val Value to remove\n */\nexport function removeFromLongArray(arr: Long[], val: Long): boolean {\n for (let i = 0; i < arr.length; i++) {\n const v = arr[i]\n\n // v === val for the case when the exact same object was passed\n if (v === val || v.eq(val)) {\n arr.splice(i, 1)\n\n return true\n }\n }\n\n return false\n}\n\n/**\n * Compare two Longs and return -1, 0 or 1,\n * to be used as a comparator function.\n */\nexport function compareLongs(a: Long, b: Long): number {\n if (a.eq(b)) return 0\n\n if (a.gt(b)) return 1\n\n return -1\n}\n\n/**\n * Serialize a Long (int64) to its fast string representation:\n * `$high|$low`.\n *\n * This method is about 500* times faster than using `Long.toString()`,\n * and very useful when the string will only ever be used internally\n * (e.g. for keying a map)\n *\n * _\\* benchmark result, YMMV_\n *\n * @param val\n */\nexport function longToFastString(val: Long): string {\n return `${val.low}|${val.high}`\n}\n\n/**\n * Parse a Long (int64) from its fast string representation:\n * `$high|$low`.\n *\n * This method is about 2 times faster than using Long.fromString.\n *\n * @param val\n * @param unsigned\n */\nexport function longFromFastString(val: string, unsigned = false): Long {\n const parts = val.split('|')\n\n if (parts.length !== 2) throw new Error(`Invalid long fast string: ${val}`)\n const low = parseInt(parts[0])\n const high = parseInt(parts[1])\n\n if (isNaN(low) || isNaN(high)) {\n throw new Error(`Invalid long fast string: ${val}`)\n }\n\n return new Long(low, high, unsigned)\n}\n\n/**\n * Map with Longs as key.\n *\n * Uses fast string representation internally.\n */\nexport class LongMap<V> {\n private _map = new Map<string, V>()\n\n set(key: Long, value: V): void {\n this._map.set(longToFastString(key), value)\n }\n\n has(key: Long): boolean {\n return this._map.has(longToFastString(key))\n }\n\n get(key: Long): V | undefined {\n return this._map.get(longToFastString(key))\n }\n\n delete(key: Long): void {\n this._map.delete(longToFastString(key))\n }\n\n *keys(unsigned?: boolean): IterableIterator<Long> {\n for (const v of this._map.keys()) {\n yield longFromFastString(v, unsigned)\n }\n }\n\n values(): IterableIterator<V> {\n return this._map.values()\n }\n\n clear(): void {\n this._map.clear()\n }\n\n size(): number {\n return this._map.size\n }\n}\n\n/**\n * Set for Longs.\n *\n * Uses fast string representation internally\n */\nexport class LongSet {\n private _set = new Set<string>()\n\n get size(): number {\n return this._set.size\n }\n\n add(val: Long) {\n this._set.add(longToFastString(val))\n }\n\n delete(val: Long) {\n this._set.delete(longToFastString(val))\n }\n\n has(val: Long) {\n return this._set.has(longToFastString(val))\n }\n\n clear() {\n this._set.clear()\n }\n\n toArray() {\n const arr: Long[] = []\n\n for (const v of this._set) {\n arr.push(longFromFastString(v))\n }\n\n return arr\n }\n}\n"]}
@@ -10,8 +10,12 @@ import { LongMap } from './long-utils.js';
10
10
  * Uses two-way linked list internally to keep track of insertion/access order
11
11
  */
12
12
  export class LruMap {
13
+ _capacity;
14
+ _first;
15
+ _last;
16
+ _map;
17
+ _size = 0;
13
18
  constructor(capacity, forLong = false) {
14
- this._size = 0;
15
19
  this._capacity = capacity;
16
20
  this._map = forLong ? new LongMap() : new Map();
17
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lru-map.js","sourceRoot":"","sources":["../../../src/utils/lru-map.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,0DAA0D;AAC1D,oCAAoC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAazC;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IASf,YAAY,QAAgB,EAAE,OAAO,GAAG,KAAK;QAFrC,UAAK,GAAG,CAAC,CAAA;QAGb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAE,IAAI,OAAO,EAAU,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;IAC5D,CAAC;IAEO,SAAS,CAAC,IAA4B;QAC1C,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;YACtB,OAAM,CAAC,iCAAiC;SAC3C;QAED,IAAI,IAAI,CAAC,CAAC,EAAE;YACR,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;aACtB;YACD,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;SACpB;QAED,IAAI,IAAI,CAAC,CAAC,EAAE;YACR,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;SACpB;QAED,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;QAClB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QAEpB,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;SACvB;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACtB,CAAC;IAED,GAAG,CAAC,GAAM;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAA;QAE3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAEpB,OAAO,IAAI,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,GAAG,CAAC,GAAM;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAEO,OAAO,CAAC,IAA4B;QACxC,IAAI,IAAI,CAAC,CAAC,EAAE;YACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;YACnB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAA;SAC3B;aAAM;YACH,YAAY;YACZ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;YACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;SAC1B;QAED,0CAA0C;QAC1C,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAE7B,IAAI,IAAI,EAAE;YACN,2BAA2B;YAC3B,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAEpB,OAAM;SACT;QAED,IAAI,GAAG;YACH,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,KAAK;YACR,4BAA4B;YAC5B,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,SAAS;SACf,CAAA;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAW,CAAC,CAAA;QAE/B,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;YACpB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;SACvB;aAAM;YACH,kBAAkB;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;SACpB;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAEf,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7B,uBAAuB;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;YAEzB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;aACvB;SACJ;IACL,CAAC;IAED,MAAM,CAAC,GAAM;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAClB,CAAC;CACJ","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n// ^^ because of performance reasons\nimport { LongMap } from './long-utils.js'\n\ninterface TwoWayLinkedList<K, T> {\n // k = key\n k: K\n // v = value\n v: T\n // p = previous\n p?: TwoWayLinkedList<K, T>\n // n = next\n n?: TwoWayLinkedList<K, T>\n}\n\n/**\n * Simple class implementing LRU-like behaviour for a Map\n *\n * Can be used to handle local cache of *something*\n *\n * Uses two-way linked list internally to keep track of insertion/access order\n */\nexport class LruMap<K extends string | number, V> {\n private _capacity: number\n private _first?: TwoWayLinkedList<K, V>\n private _last?: TwoWayLinkedList<K, V>\n\n private _map: Map<K, TwoWayLinkedList<K, V>>\n\n private _size = 0\n\n constructor(capacity: number, forLong = false) {\n this._capacity = capacity\n\n this._map = forLong ? (new LongMap() as any) : new Map()\n }\n\n private _markUsed(item: TwoWayLinkedList<K, V>): void {\n if (item === this._first) {\n return // already the most recently used\n }\n\n if (item.p) {\n if (item === this._last) {\n this._last = item.p\n }\n item.p.n = item.n\n }\n\n if (item.n) {\n item.n.p = item.p\n }\n\n item.p = undefined\n item.n = this._first\n\n if (this._first) {\n this._first.p = item\n }\n this._first = item\n }\n\n get(key: K): V | undefined {\n const item = this._map.get(key)\n if (!item) return undefined\n\n this._markUsed(item)\n\n return item.v\n }\n\n has(key: K): boolean {\n return this._map.has(key)\n }\n\n private _remove(item: TwoWayLinkedList<K, V>): void {\n if (item.p) {\n this._last = item.p\n this._last.n = undefined\n } else {\n // exhausted\n this._last = undefined\n this._first = undefined\n }\n\n // remove strong refs to and from the item\n item.p = item.n = undefined\n this._map.delete(item.k)\n this._size -= 1\n }\n\n set(key: K, value: V): void {\n let item = this._map.get(key)\n\n if (item) {\n // already in cache, update\n item.v = value\n this._markUsed(item)\n\n return\n }\n\n item = {\n k: key,\n v: value,\n // for jit to optimize stuff\n n: undefined,\n p: undefined,\n }\n this._map.set(key, item as any)\n\n if (this._first) {\n this._first.p = item\n item.n = this._first\n } else {\n // first item ever\n this._last = item\n }\n\n this._first = item\n this._size += 1\n\n if (this._size > this._capacity) {\n // remove the last item\n const oldest = this._last\n\n if (oldest) {\n this._remove(oldest)\n }\n }\n }\n\n delete(key: K): void {\n const item = this._map.get(key)\n if (item) this._remove(item)\n }\n\n clear(): void {\n this._map.clear()\n this._first = undefined\n this._last = undefined\n this._size = 0\n }\n}\n"]}
1
+ {"version":3,"file":"lru-map.js","sourceRoot":"","sources":["../../../src/utils/lru-map.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n// ^^ because of performance reasons\nimport { LongMap } from './long-utils.js'\n\ninterface TwoWayLinkedList<K, T> {\n // k = key\n k: K\n // v = value\n v: T\n // p = previous\n p?: TwoWayLinkedList<K, T>\n // n = next\n n?: TwoWayLinkedList<K, T>\n}\n\n/**\n * Simple class implementing LRU-like behaviour for a Map\n *\n * Can be used to handle local cache of *something*\n *\n * Uses two-way linked list internally to keep track of insertion/access order\n */\nexport class LruMap<K extends string | number, V> {\n private _capacity: number\n private _first?: TwoWayLinkedList<K, V>\n private _last?: TwoWayLinkedList<K, V>\n\n private _map: Map<K, TwoWayLinkedList<K, V>>\n\n private _size = 0\n\n constructor(capacity: number, forLong = false) {\n this._capacity = capacity\n\n this._map = forLong ? (new LongMap() as any) : new Map()\n }\n\n private _markUsed(item: TwoWayLinkedList<K, V>): void {\n if (item === this._first) {\n return // already the most recently used\n }\n\n if (item.p) {\n if (item === this._last) {\n this._last = item.p\n }\n item.p.n = item.n\n }\n\n if (item.n) {\n item.n.p = item.p\n }\n\n item.p = undefined\n item.n = this._first\n\n if (this._first) {\n this._first.p = item\n }\n this._first = item\n }\n\n get(key: K): V | undefined {\n const item = this._map.get(key)\n if (!item) return undefined\n\n this._markUsed(item)\n\n return item.v\n }\n\n has(key: K): boolean {\n return this._map.has(key)\n }\n\n private _remove(item: TwoWayLinkedList<K, V>): void {\n if (item.p) {\n this._last = item.p\n this._last.n = undefined\n } else {\n // exhausted\n this._last = undefined\n this._first = undefined\n }\n\n // remove strong refs to and from the item\n item.p = item.n = undefined\n this._map.delete(item.k)\n this._size -= 1\n }\n\n set(key: K, value: V): void {\n let item = this._map.get(key)\n\n if (item) {\n // already in cache, update\n item.v = value\n this._markUsed(item)\n\n return\n }\n\n item = {\n k: key,\n v: value,\n // for jit to optimize stuff\n n: undefined,\n p: undefined,\n }\n this._map.set(key, item as any)\n\n if (this._first) {\n this._first.p = item\n item.n = this._first\n } else {\n // first item ever\n this._last = item\n }\n\n this._first = item\n this._size += 1\n\n if (this._size > this._capacity) {\n // remove the last item\n const oldest = this._last\n\n if (oldest) {\n this._remove(oldest)\n }\n }\n }\n\n delete(key: K): void {\n const item = this._map.get(key)\n if (item) this._remove(item)\n }\n\n clear(): void {\n this._map.clear()\n this._first = undefined\n this._last = undefined\n this._size = 0\n }\n}\n"]}
@@ -11,6 +11,10 @@ import { LongSet } from './long-utils.js';
11
11
  * Uses one-way linked list internally to keep track of insertion order
12
12
  */
13
13
  export class LruSet {
14
+ _capacity;
15
+ _first;
16
+ _last;
17
+ _set;
14
18
  constructor(capacity, forLong = false) {
15
19
  this._capacity = capacity;
16
20
  this._set = forLong ? new LongSet() : new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"lru-set.js","sourceRoot":"","sources":["../../../src/utils/lru-set.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAOzC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,MAAM;IAOf,YAAY,QAAgB,EAAE,OAAO,GAAG,KAAK;QACzC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;IACnD,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,GAAG,CAAC,GAAM;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC;YAAE,OAAM;QAErC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAE1C,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;aACpC;YACD,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;SAC5B;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC,CAAA;QAEzB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;YAChD,6BAA6B;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAQ,CAAC,CAAA;YACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;SAC9B;IACL,CAAC;IAED,GAAG,CAAC,GAAM;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC,CAAA;IACpC,CAAC;CACJ","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n// ^^ because of performance reasons\nimport Long from 'long'\n\nimport { LongSet } from './long-utils.js'\n\ninterface OneWayLinkedList<T> {\n v: T\n n?: OneWayLinkedList<T>\n}\n\n/**\n * Simple class implementing LRU-like behaviour for a Set.\n *\n * Note: this is not exactly LRU, but rather \"least recently added\"\n * and doesn't mark items as recently added if they are already in the set.\n * This is enough for our use case, so we don't bother with more complex implementation.\n *\n * Used to store recently received message IDs in {@link SessionConnection}\n *\n * Uses one-way linked list internally to keep track of insertion order\n */\nexport class LruSet<T extends string | number | Long> {\n private _capacity: number\n private _first?: OneWayLinkedList<T>\n private _last?: OneWayLinkedList<T>\n\n private _set: Set<T> | LongSet\n\n constructor(capacity: number, forLong = false) {\n this._capacity = capacity\n\n this._set = forLong ? new LongSet() : new Set()\n }\n\n clear() {\n this._first = this._last = undefined\n this._set.clear()\n }\n\n add(val: T) {\n if (this._set.has(val as any)) return\n\n if (!this._first) this._first = { v: val }\n\n if (!this._last) this._last = this._first\n else {\n this._last.n = { v: val }\n this._last = this._last.n\n }\n\n this._set.add(val as any)\n\n if (this._set.size > this._capacity && this._first) {\n // remove least recently used\n this._set.delete(this._first.v as any)\n this._first = this._first.n\n }\n }\n\n has(val: T) {\n return this._set.has(val as any)\n }\n}\n"]}
1
+ {"version":3,"file":"lru-set.js","sourceRoot":"","sources":["../../../src/utils/lru-set.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAOzC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,MAAM;IACP,SAAS,CAAQ;IACjB,MAAM,CAAsB;IAC5B,KAAK,CAAsB;IAE3B,IAAI,CAAkB;IAE9B,YAAY,QAAgB,EAAE,OAAO,GAAG,KAAK;QACzC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;IACnD,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,GAAG,CAAC,GAAM;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC;YAAE,OAAM;QAErC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAE1C,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;aACpC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC,CAAA;QAEzB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,6BAA6B;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAQ,CAAC,CAAA;YACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/B,CAAC;IACL,CAAC;IAED,GAAG,CAAC,GAAM;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC,CAAA;IACpC,CAAC;CACJ","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n// ^^ because of performance reasons\nimport Long from 'long'\n\nimport { LongSet } from './long-utils.js'\n\ninterface OneWayLinkedList<T> {\n v: T\n n?: OneWayLinkedList<T>\n}\n\n/**\n * Simple class implementing LRU-like behaviour for a Set.\n *\n * Note: this is not exactly LRU, but rather \"least recently added\"\n * and doesn't mark items as recently added if they are already in the set.\n * This is enough for our use case, so we don't bother with more complex implementation.\n *\n * Used to store recently received message IDs in {@link SessionConnection}\n *\n * Uses one-way linked list internally to keep track of insertion order\n */\nexport class LruSet<T extends string | number | Long> {\n private _capacity: number\n private _first?: OneWayLinkedList<T>\n private _last?: OneWayLinkedList<T>\n\n private _set: Set<T> | LongSet\n\n constructor(capacity: number, forLong = false) {\n this._capacity = capacity\n\n this._set = forLong ? new LongSet() : new Set()\n }\n\n clear() {\n this._first = this._last = undefined\n this._set.clear()\n }\n\n add(val: T) {\n if (this._set.has(val as any)) return\n\n if (!this._first) this._first = { v: val }\n\n if (!this._last) this._last = this._first\n else {\n this._last.n = { v: val }\n this._last = this._last.n\n }\n\n this._set.add(val as any)\n\n if (this._set.size > this._capacity && this._first) {\n // remove least recently used\n this._set.delete(this._first.v as any)\n this._first = this._first.n\n }\n }\n\n has(val: T) {\n return this._set.has(val as any)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtUnsupportedError } from '../types/errors.js'\nimport { BasicPeerType } from '../types/peers.js'\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.h\nconst ZERO_CHANNEL_ID = -1000000000000\nconst ZERO_SECRET_CHAT_ID = -2000000000000\nconst MAX_SECRET_CHAT_ID = -1997852516353 // ZERO_SECRET_CHAT_ID + 0x7fffffff\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChatId.h\n// const MAX_CHAT_ID = 999999999999\nconst MIN_MARKED_CHAT_ID = -999999999999 // -MAX_CHAT_ID\n// src: https://github.com/tdlib/td/blob/master/td/telegram/UserId.h\n// MAX_USER_ID = (1ll << 40) - 1\nconst MAX_USER_ID = 1099511627775\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChannelId.h\n// the last (1 << 31) - 1 identifiers will be used for secret chat dialog identifiers\n// MAX_CHANNEL_ID = 1000000000000ll - (1ll << 31)\n// const MAX_CHANNEL_ID = 997852516352\nconst MIN_MARKED_CHANNEL_ID = -1997852516352 // ZERO_CHANNEL_ID - MAX_CHANNEL_ID\n\n/**\n * Add or remove channel marker from ID\n */\nexport function toggleChannelIdMark(id: number): number {\n return ZERO_CHANNEL_ID - id\n}\n\n/**\n * Get the bare (non-marked) ID from a {@link tl.TypePeer}\n */\nexport function getBarePeerId(peer: tl.TypePeer): number {\n switch (peer._) {\n case 'peerUser':\n return peer.userId\n case 'peerChat':\n return peer.chatId\n case 'peerChannel':\n return peer.channelId\n }\n}\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.cpp\n\n/**\n * Get the marked (non-bare) ID from a {@link tl.TypePeer}\n *\n * *Mark* is bot API compatible, which is:\n * - ID stays the same for users\n * - ID is negated for chats\n * - ID is negated and `-1e12` is subtracted for channels\n */\nexport function getMarkedPeerId(peerId: number, peerType: BasicPeerType): number\nexport function getMarkedPeerId(peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): number\n\nexport function getMarkedPeerId(\n peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | number,\n peerType?: BasicPeerType,\n): number {\n if (typeof peer === 'number') {\n switch (peerType) {\n case 'user':\n return peer\n case 'chat':\n return -peer\n case 'channel':\n return ZERO_CHANNEL_ID - peer\n }\n throw new MtArgumentError('Invalid peer type')\n }\n\n switch (peer._) {\n case 'mtcute.dummyInputPeerMinUser':\n case 'peerUser':\n case 'inputPeerUser':\n case 'inputPeerUserFromMessage':\n case 'inputUser':\n case 'inputUserFromMessage':\n return peer.userId\n case 'peerChat':\n case 'inputPeerChat':\n return -peer.chatId\n case 'mtcute.dummyInputPeerMinChannel':\n case 'peerChannel':\n case 'inputPeerChannel':\n case 'inputPeerChannelFromMessage':\n case 'inputChannel':\n case 'inputChannelFromMessage':\n return ZERO_CHANNEL_ID - peer.channelId\n }\n\n throw new MtArgumentError(`Invalid peer: ${peer._}`)\n}\n\n/**\n * Parse a marked ID into a {@link BasicPeerType} and a bare ID\n */\nexport function parseMarkedPeerId(id: number): [BasicPeerType, number] {\n if (id < 0) {\n if (MIN_MARKED_CHAT_ID <= id) {\n return ['chat', -id]\n }\n\n if (MIN_MARKED_CHANNEL_ID <= id && id !== ZERO_CHANNEL_ID) {\n return ['channel', ZERO_CHANNEL_ID - id]\n }\n\n if (MAX_SECRET_CHAT_ID >= id && id !== ZERO_SECRET_CHAT_ID) {\n // return 'secret'\n throw new MtUnsupportedError('Secret chats are not supported')\n }\n } else if (id > 0 && id <= MAX_USER_ID) {\n return ['user', id]\n }\n\n throw new MtArgumentError(`Invalid marked peer id: ${id}`)\n}\n\n/**\n * Extracts all (cacheable) entities from a TlObject or a list of them.\n * Only checks `.user`, `.chat`, `.channel`, `.users` and `.chats` properties\n */\nexport function* getAllPeersFrom(obj: tl.TlObject | tl.TlObject[]): Iterable<tl.TypeUser | tl.TypeChat> {\n if (typeof obj !== 'object') return\n\n if (Array.isArray(obj)) {\n for (const it of obj) {\n yield* getAllPeersFrom(it)\n }\n\n return\n }\n\n switch (obj._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj\n\n return\n }\n\n if ('user' in obj && typeof obj.user === 'object' && obj.user._ === 'user') {\n yield obj.user\n }\n\n if ('chat' in obj && typeof obj.chat === 'object') {\n switch (obj.chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.chat\n break\n }\n }\n\n if ('channel' in obj && typeof obj.channel === 'object') {\n switch (obj.channel._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.channel\n break\n }\n }\n\n if ('users' in obj && Array.isArray(obj.users) && obj.users.length) {\n for (const user of obj.users) {\n // .users is sometimes number[]\n if (typeof user === 'object' && user._ === 'user') {\n yield user\n }\n }\n }\n\n if ('chats' in obj && Array.isArray(obj.chats) && obj.chats.length) {\n for (const chat of obj.chats) {\n // .chats is sometimes number[]\n if (typeof chat === 'object') {\n switch (chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield chat\n break\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtUnsupportedError } from '../types/errors.js'\nimport { BasicPeerType } from '../types/peers.js'\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.h\nconst ZERO_CHANNEL_ID = -1000000000000\nconst ZERO_SECRET_CHAT_ID = -2000000000000\nconst MAX_SECRET_CHAT_ID = -1997852516353 // ZERO_SECRET_CHAT_ID + 0x7fffffff\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChatId.h\n// const MAX_CHAT_ID = 999999999999\nconst MIN_MARKED_CHAT_ID = -999999999999 // -MAX_CHAT_ID\n// src: https://github.com/tdlib/td/blob/master/td/telegram/UserId.h\n// MAX_USER_ID = (1ll << 40) - 1\nconst MAX_USER_ID = 1099511627775\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChannelId.h\n// the last (1 << 31) - 1 identifiers will be used for secret chat dialog identifiers\n// MAX_CHANNEL_ID = 1000000000000ll - (1ll << 31)\n// const MAX_CHANNEL_ID = 997852516352\nconst MIN_MARKED_CHANNEL_ID = -1997852516352 // ZERO_CHANNEL_ID - MAX_CHANNEL_ID\n\n/**\n * Add or remove channel marker from ID\n */\nexport function toggleChannelIdMark(id: number): number {\n return ZERO_CHANNEL_ID - id\n}\n\n/**\n * Get the bare (non-marked) ID from a {@link tl.TypePeer}\n */\nexport function getBarePeerId(peer: tl.TypePeer): number {\n switch (peer._) {\n case 'peerUser':\n return peer.userId\n case 'peerChat':\n return peer.chatId\n case 'peerChannel':\n return peer.channelId\n }\n}\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.cpp\n\n/**\n * Get the marked (non-bare) ID from a {@link tl.TypePeer}\n *\n * *Mark* is bot API compatible, which is:\n * - ID stays the same for users\n * - ID is negated for chats\n * - ID is negated and `-1e12` is subtracted for channels\n */\nexport function getMarkedPeerId(peerId: number, peerType: BasicPeerType): number\nexport function getMarkedPeerId(peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): number\n\nexport function getMarkedPeerId(\n peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | number,\n peerType?: BasicPeerType,\n): number {\n if (typeof peer === 'number') {\n switch (peerType) {\n case 'user':\n return peer\n case 'chat':\n return -peer\n case 'channel':\n return ZERO_CHANNEL_ID - peer\n }\n throw new MtArgumentError('Invalid peer type')\n }\n\n switch (peer._) {\n case 'mtcute.dummyInputPeerMinUser':\n case 'peerUser':\n case 'inputPeerUser':\n case 'inputPeerUserFromMessage':\n case 'inputUser':\n case 'inputUserFromMessage':\n return peer.userId\n case 'peerChat':\n case 'inputPeerChat':\n return -peer.chatId\n case 'mtcute.dummyInputPeerMinChannel':\n case 'peerChannel':\n case 'inputPeerChannel':\n case 'inputPeerChannelFromMessage':\n case 'inputChannel':\n case 'inputChannelFromMessage':\n return ZERO_CHANNEL_ID - peer.channelId\n }\n\n throw new MtArgumentError(`Invalid peer: ${peer._}`)\n}\n\n/**\n * Parse a marked ID into a {@link BasicPeerType} and a bare ID\n */\nexport function parseMarkedPeerId(id: number): [BasicPeerType, number] {\n if (id < 0) {\n if (MIN_MARKED_CHAT_ID <= id) {\n return ['chat', -id]\n }\n\n if (MIN_MARKED_CHANNEL_ID <= id && id !== ZERO_CHANNEL_ID) {\n return ['channel', ZERO_CHANNEL_ID - id]\n }\n\n if (MAX_SECRET_CHAT_ID >= id && id !== ZERO_SECRET_CHAT_ID) {\n // return 'secret'\n throw new MtUnsupportedError('Secret chats are not supported')\n }\n } else if (id > 0 && id <= MAX_USER_ID) {\n return ['user', id]\n }\n\n throw new MtArgumentError(`Invalid marked peer id: ${id}`)\n}\n\n/**\n * Extracts all (cacheable) entities from a TlObject or a list of them.\n * Only checks `.user`, `.chat`, `.channel`, `.users` and `.chats` properties\n */\nexport function* getAllPeersFrom(obj: tl.TlObject | tl.TlObject[]): Iterable<tl.TypeUser | tl.TypeChat> {\n if (typeof obj !== 'object') return\n\n if (Array.isArray(obj)) {\n for (const it of obj) {\n yield* getAllPeersFrom(it)\n }\n\n return\n }\n\n switch (obj._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj\n\n return\n }\n\n if ('user' in obj && typeof obj.user === 'object' && obj.user._ === 'user') {\n yield obj.user\n }\n\n if ('chat' in obj && typeof obj.chat === 'object') {\n switch (obj.chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.chat\n break\n }\n }\n\n if ('channel' in obj && typeof obj.channel === 'object') {\n switch (obj.channel._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.channel\n break\n }\n }\n\n if ('users' in obj && Array.isArray(obj.users) && obj.users.length) {\n for (const user of obj.users) {\n // .users is sometimes number[]\n if (typeof user === 'object' && user._ === 'user') {\n yield user\n }\n }\n }\n\n if ('chats' in obj && Array.isArray(obj.chats) && obj.chats.length) {\n for (const chat of obj.chats) {\n // .chats is sometimes number[]\n if (typeof chat === 'object') {\n switch (chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield chat\n break\n }\n }\n }\n }\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  export interface ReloadableParams<Data> {
3
2
  reload: (old?: Data) => Promise<Data>;
4
3
  getExpiresAt: (data: Data) => number;
@@ -1,15 +1,18 @@
1
1
  import { asyncResettable } from './function-utils.js';
2
2
  export class Reloadable {
3
+ params;
3
4
  constructor(params) {
4
5
  this.params = params;
5
- this._expiresAt = 0;
6
- this._listeners = [];
7
- this._reload = asyncResettable(async () => {
8
- const data = await this.params.reload(this._data);
9
- this.setData(data);
10
- this._listeners.forEach((cb) => cb(data));
11
- });
12
6
  }
7
+ _data;
8
+ _expiresAt = 0;
9
+ _listeners = [];
10
+ _timeout;
11
+ _reload = asyncResettable(async () => {
12
+ const data = await this.params.reload(this._data);
13
+ this.setData(data);
14
+ this._listeners.forEach((cb) => cb(data));
15
+ });
13
16
  get isStale() {
14
17
  return !this._data || this._expiresAt <= Date.now();
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reloadable.js","sourceRoot":"","sources":["../../../src/utils/reloadable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AASrD,MAAM,OAAO,UAAU;IACnB,YAAqB,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;QAGzC,eAAU,GAAG,CAAC,CAAA;QACd,eAAU,GAA6B,EAAE,CAAA;QAG3C,YAAO,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE;YACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAElB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IAZoD,CAAC;IAcvD,IAAI,OAAO;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACvD,CAAC;IAED,OAAO,CAAC,IAAU;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAE3B,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;gBACpB,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAA;gBAC9B,CAAC,CAAC,CAAA;YACN,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;SAC7B;IACL,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,KAAK;QAChB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAErD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,QAAQ,CAAC,EAAwB;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS,CAAC,EAAwB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,GAAG,IAAI,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QAEnB,OAAO,IAAI,CAAC,KAAM,CAAA;IACtB,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACJ","sourcesContent":["import { asyncResettable } from './function-utils.js'\n\nexport interface ReloadableParams<Data> {\n reload: (old?: Data) => Promise<Data>\n getExpiresAt: (data: Data) => number\n onError?: (err: unknown) => void\n disableAutoReload?: boolean\n}\n\nexport class Reloadable<Data> {\n constructor(readonly params: ReloadableParams<Data>) {}\n\n protected _data?: Data\n protected _expiresAt = 0\n protected _listeners: ((data: Data) => void)[] = []\n protected _timeout?: NodeJS.Timeout\n\n private _reload = asyncResettable(async () => {\n const data = await this.params.reload(this._data)\n this.setData(data)\n\n this._listeners.forEach((cb) => cb(data))\n })\n\n get isStale(): boolean {\n return !this._data || this._expiresAt <= Date.now()\n }\n\n setData(data: Data): void {\n const expiresAt = this.params.getExpiresAt(data)\n\n this._data = data\n this._expiresAt = expiresAt\n\n if (this._timeout) clearTimeout(this._timeout)\n\n if (!this.params.disableAutoReload) {\n this._timeout = setTimeout(() => {\n this._reload.reset()\n this.update().catch((err: unknown) => {\n this.params.onError?.(err)\n })\n }, expiresAt - Date.now())\n }\n }\n\n update(force = false): Promise<void> {\n if (!force && !this.isStale) return Promise.resolve()\n\n return this._reload.run()\n }\n\n onReload(cb: (data: Data) => void): void {\n this._listeners.push(cb)\n }\n\n offReload(cb: (data: Data) => void): void {\n const idx = this._listeners.indexOf(cb)\n if (idx >= 0) this._listeners.splice(idx, 1)\n }\n\n getNow(): Data | undefined {\n return this._data\n }\n\n async get(): Promise<Data> {\n await this.update()\n\n return this._data!\n }\n\n destroy(): void {\n if (this._timeout) clearTimeout(this._timeout)\n this._listeners.length = 0\n this._reload.reset()\n }\n}\n"]}
1
+ {"version":3,"file":"reloadable.js","sourceRoot":"","sources":["../../../src/utils/reloadable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AASrD,MAAM,OAAO,UAAU;IACE;IAArB,YAAqB,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;IAAG,CAAC;IAE7C,KAAK,CAAO;IACZ,UAAU,GAAG,CAAC,CAAA;IACd,UAAU,GAA6B,EAAE,CAAA;IACzC,QAAQ,CAAiB;IAE3B,OAAO,GAAG,eAAe,CAAC,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAElB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,IAAI,OAAO;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACvD,CAAC;IAED,OAAO,CAAC,IAAU;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAE3B,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;gBACpB,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAA;gBAC9B,CAAC,CAAC,CAAA;YACN,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC9B,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,KAAK;QAChB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAErD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,QAAQ,CAAC,EAAwB;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS,CAAC,EAAwB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,GAAG,IAAI,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QAEnB,OAAO,IAAI,CAAC,KAAM,CAAA;IACtB,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACJ","sourcesContent":["import { asyncResettable } from './function-utils.js'\n\nexport interface ReloadableParams<Data> {\n reload: (old?: Data) => Promise<Data>\n getExpiresAt: (data: Data) => number\n onError?: (err: unknown) => void\n disableAutoReload?: boolean\n}\n\nexport class Reloadable<Data> {\n constructor(readonly params: ReloadableParams<Data>) {}\n\n protected _data?: Data\n protected _expiresAt = 0\n protected _listeners: ((data: Data) => void)[] = []\n protected _timeout?: NodeJS.Timeout\n\n private _reload = asyncResettable(async () => {\n const data = await this.params.reload(this._data)\n this.setData(data)\n\n this._listeners.forEach((cb) => cb(data))\n })\n\n get isStale(): boolean {\n return !this._data || this._expiresAt <= Date.now()\n }\n\n setData(data: Data): void {\n const expiresAt = this.params.getExpiresAt(data)\n\n this._data = data\n this._expiresAt = expiresAt\n\n if (this._timeout) clearTimeout(this._timeout)\n\n if (!this.params.disableAutoReload) {\n this._timeout = setTimeout(() => {\n this._reload.reset()\n this.update().catch((err: unknown) => {\n this.params.onError?.(err)\n })\n }, expiresAt - Date.now())\n }\n }\n\n update(force = false): Promise<void> {\n if (!force && !this.isStale) return Promise.resolve()\n\n return this._reload.run()\n }\n\n onReload(cb: (data: Data) => void): void {\n this._listeners.push(cb)\n }\n\n offReload(cb: (data: Data) => void): void {\n const idx = this._listeners.indexOf(cb)\n if (idx >= 0) this._listeners.splice(idx, 1)\n }\n\n getNow(): Data | undefined {\n return this._data\n }\n\n async get(): Promise<Data> {\n await this.update()\n\n return this._data!\n }\n\n destroy(): void {\n if (this._timeout) clearTimeout(this._timeout)\n this._listeners.length = 0\n this._reload.reset()\n }\n}\n"]}