@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
@@ -7,9 +7,7 @@ const deque_js_1 = require("./deque.js");
7
7
  * behaviour.
8
8
  */
9
9
  class AsyncLock {
10
- constructor() {
11
- this._queue = new deque_js_1.Deque();
12
- }
10
+ _queue = new deque_js_1.Deque();
13
11
  async acquire() {
14
12
  let info;
15
13
  while ((info = this._queue.peekFront())) {
@@ -1 +1 @@
1
- {"version":3,"file":"async-lock.js","sourceRoot":"","sources":["../../../src/utils/async-lock.ts"],"names":[],"mappings":";;;AAAA,yCAAkC;AAIlC;;;GAGG;AACH,MAAa,SAAS;IAAtB;QACY,WAAM,GAAG,IAAI,gBAAK,EAAY,CAAA;IAmC1C,CAAC;IAjCG,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAA;QAER,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE;YACrC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;SAChB;QAED,IAAI,MAAkB,CAAA;QACtB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACvC,MAAM,GAAG,OAAO,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAO,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE9D,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,IAAyB;QAC1B,IAAI,GAAG,GAAY,IAAI,CAAA;QAEvB,OAAO,IAAI,CAAC,OAAO,EAAE;aAChB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;aAClB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aAC5B,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,+DAA+D;YAC/D,IAAI,GAAG;gBAAE,MAAM,GAAG,CAAA;QACtB,CAAC,CAAC,CAAA;IACV,CAAC;CACJ;AApCD,8BAoCC","sourcesContent":["import { Deque } from './deque.js'\n\ntype LockInfo = [Promise<void>, () => void]\n\n/**\n * Simple class implementing a semaphore like\n * behaviour.\n */\nexport class AsyncLock {\n private _queue = new Deque<LockInfo>()\n\n async acquire(): Promise<void> {\n let info\n\n while ((info = this._queue.peekFront())) {\n await info[0]\n }\n\n let unlock: () => void\n const prom = new Promise<void>((resolve) => {\n unlock = resolve\n })\n\n this._queue.pushBack([prom, unlock!])\n }\n\n release(): void {\n if (!this._queue.length) throw new Error('Nothing to release')\n\n this._queue.popFront()![1]()\n }\n\n with(func: () => Promise<void>): Promise<void> {\n let err: unknown = null\n\n return this.acquire()\n .then(() => func())\n .catch((e) => void (err = e))\n .then(() => {\n this.release()\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n if (err) throw err\n })\n }\n}\n"]}
1
+ {"version":3,"file":"async-lock.js","sourceRoot":"","sources":["../../../src/utils/async-lock.ts"],"names":[],"mappings":";;;AAAA,yCAAkC;AAIlC;;;GAGG;AACH,MAAa,SAAS;IACV,MAAM,GAAG,IAAI,gBAAK,EAAY,CAAA;IAEtC,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAA;QAER,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,MAAkB,CAAA;QACtB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACvC,MAAM,GAAG,OAAO,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAO,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE9D,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,IAAyB;QAC1B,IAAI,GAAG,GAAY,IAAI,CAAA;QAEvB,OAAO,IAAI,CAAC,OAAO,EAAE;aAChB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;aAClB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aAC5B,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,+DAA+D;YAC/D,IAAI,GAAG;gBAAE,MAAM,GAAG,CAAA;QACtB,CAAC,CAAC,CAAA;IACV,CAAC;CACJ;AApCD,8BAoCC","sourcesContent":["import { Deque } from './deque.js'\n\ntype LockInfo = [Promise<void>, () => void]\n\n/**\n * Simple class implementing a semaphore like\n * behaviour.\n */\nexport class AsyncLock {\n private _queue = new Deque<LockInfo>()\n\n async acquire(): Promise<void> {\n let info\n\n while ((info = this._queue.peekFront())) {\n await info[0]\n }\n\n let unlock: () => void\n const prom = new Promise<void>((resolve) => {\n unlock = resolve\n })\n\n this._queue.pushBack([prom, unlock!])\n }\n\n release(): void {\n if (!this._queue.length) throw new Error('Nothing to release')\n\n this._queue.popFront()![1]()\n }\n\n with(func: () => Promise<void>): Promise<void> {\n let err: unknown = null\n\n return this.acquire()\n .then(() => func())\n .catch((e) => void (err = e))\n .then(() => {\n this.release()\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n if (err) throw err\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bigint-utils.js","sourceRoot":"","sources":["../../../src/utils/bigint-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { bufferToReversed } from './buffer-utils.js'\nimport { ICryptoProvider } from './crypto/abstract.js'\n\n/**\n * Get the minimum number of bits required to represent a number\n */\nexport function bigIntBitLength(n: bigint) {\n // not the fastest way, but at least not .toString(2) and not too complex\n // taken from: https://stackoverflow.com/a/76616288/22656950\n\n const i = (n.toString(16).length - 1) * 4\n\n return i + 32 - Math.clz32(Number(n >> BigInt(i)))\n}\n\n/**\n * Convert a big integer to a buffer\n *\n * @param value Value to convert\n * @param length Length of the resulting buffer (by default it's the minimum required)\n * @param le Whether to use little-endian encoding\n */\nexport function bigIntToBuffer(value: bigint, length = 0, le = false): Uint8Array {\n const bits = bigIntBitLength(value)\n const bytes = Math.ceil(bits / 8)\n\n if (length !== 0 && bytes > length) {\n throw new Error('Value out of bounds')\n }\n\n if (length === 0) length = bytes\n\n const buf = new ArrayBuffer(length)\n const u8 = new Uint8Array(buf)\n\n const unaligned = length % 8\n const dv = new DataView(buf, 0, length - unaligned)\n\n // it is faster to work with 64-bit words than with bytes directly\n for (let i = 0; i < dv.byteLength; i += 8) {\n dv.setBigUint64(i, value & 0xffffffffffffffffn, true)\n value >>= 64n\n }\n\n if (unaligned > 0) {\n for (let i = length - unaligned; i < length; i++) {\n u8[i] = Number(value & 0xffn)\n value >>= 8n\n }\n }\n\n if (!le) u8.reverse()\n\n return u8\n}\n\n/**\n * Convert a buffer to a big integer\n *\n * @param buffer Buffer to convert\n * @param le Whether to use little-endian encoding\n */\nexport function bufferToBigInt(buffer: Uint8Array, le = false): bigint {\n if (le) buffer = bufferToReversed(buffer)\n\n const unaligned = buffer.length % 8\n const dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength - unaligned)\n\n let res = 0n\n\n // it is faster to work with 64-bit words than with bytes directly\n for (let i = 0; i < dv.byteLength; i += 8) {\n res = (res << 64n) | BigInt(dv.getBigUint64(i, false))\n }\n\n if (unaligned > 0) {\n for (let i = buffer.length - unaligned; i < buffer.length; i++) {\n res = (res << 8n) | BigInt(buffer[i])\n }\n }\n\n return res\n}\n\n/**\n * Generate a cryptographically safe random big integer of the given size (in bytes)\n * @param size Size in bytes\n */\nexport function randomBigInt(crypto: ICryptoProvider, size: number): bigint {\n return bufferToBigInt(crypto.randomBytes(size))\n}\n\n/**\n * Generate a random big integer of the given size (in bits)\n * @param bits\n */\nexport function randomBigIntBits(crypto: ICryptoProvider, bits: number): bigint {\n let num = randomBigInt(crypto, Math.ceil(bits / 8))\n\n const bitLength = bigIntBitLength(num)\n\n if (bitLength > bits) {\n const toTrim = bitLength - bits\n num >>= BigInt(toTrim)\n }\n\n return num\n}\n\n/**\n * Generate a random big integer in the range [min, max)\n *\n * @param max Maximum value (exclusive)\n * @param min Minimum value (inclusive)\n */\nexport function randomBigIntInRange(crypto: ICryptoProvider, max: bigint, min = 1n): bigint {\n const interval = max - min\n if (interval < 0n) throw new Error('expected min < max')\n\n const byteSize = bigIntBitLength(interval) / 8\n\n let result = randomBigInt(crypto, byteSize)\n while (result > interval) result -= interval\n\n return min + result\n}\n\n/**\n * Compute the multiplicity of 2 in the prime factorization of n\n * @param n\n */\nexport function twoMultiplicity(n: bigint): bigint {\n if (n === 0n) return 0n\n\n let m = 0n\n let pow = 1n\n\n while (true) {\n if ((n & pow) !== 0n) return m\n m += 1n\n pow <<= 1n\n }\n}\n\nexport function bigIntMin(a: bigint, b: bigint): bigint {\n return a < b ? a : b\n}\n\nexport function bigIntAbs(a: bigint): bigint {\n return a < 0n ? -a : a\n}\n\nexport function bigIntGcd(a: bigint, b: bigint): bigint {\n // using euclidean algorithm is fast enough on smaller numbers\n // https://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations\n\n while (b !== 0n) {\n const t = b\n b = a % b\n a = t\n }\n\n return a\n}\n\nexport function bigIntModPow(base: bigint, exp: bigint, mod: bigint): bigint {\n // using the binary method is good enough for our use case\n // https://en.wikipedia.org/wiki/Modular_exponentiation#Right-to-left_binary_method\n\n base %= mod\n\n let result = 1n\n\n while (exp > 0n) {\n if (exp % 2n === 1n) {\n result = (result * base) % mod\n }\n\n exp >>= 1n\n base = base ** 2n % mod\n }\n\n return result\n}\n\n// below code is based on https://github.com/juanelas/bigint-mod-arith, MIT license\n\nfunction eGcd(a: bigint, b: bigint): [bigint, bigint, bigint] {\n let x = 0n\n let y = 1n\n let u = 1n\n let v = 0n\n\n while (a !== 0n) {\n const q = b / a\n const r: bigint = b % a\n const m = x - u * q\n const n = y - v * q\n b = a\n a = r\n x = u\n y = v\n u = m\n v = n\n }\n\n return [b, x, y]\n}\n\nfunction toZn(a: number | bigint, n: number | bigint): bigint {\n if (typeof a === 'number') a = BigInt(a)\n if (typeof n === 'number') n = BigInt(n)\n\n if (n <= 0n) {\n throw new RangeError('n must be > 0')\n }\n\n const aZn = a % n\n\n return aZn < 0n ? aZn + n : aZn\n}\n\nexport function bigIntModInv(a: bigint, n: bigint): bigint {\n const [g, x] = eGcd(toZn(a, n), n)\n\n if (g !== 1n) {\n throw new RangeError(`${a.toString()} does not have inverse modulo ${n.toString()}`) // modular inverse does not exist\n } else {\n return toZn(x, n)\n }\n}\n"]}
1
+ {"version":3,"file":"bigint-utils.js","sourceRoot":"","sources":["../../../src/utils/bigint-utils.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAGpD;;GAEG;AACH,SAAgB,eAAe,CAAC,CAAS;IACrC,yEAAyE;IACzE,4DAA4D;IAE5D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAEzC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAPD,0CAOC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,KAAa,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK;IAChE,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAEjC,IAAI,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,MAAM,KAAK,CAAC;QAAE,MAAM,GAAG,KAAK,CAAA;IAEhC,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAE9B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAA;IAC5B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAEnD,kEAAkE;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,mBAAmB,EAAE,IAAI,CAAC,CAAA;QACrD,KAAK,KAAK,GAAG,CAAA;IACjB,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA;YAC7B,KAAK,KAAK,EAAE,CAAA;QAChB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,OAAO,EAAE,CAAA;IAErB,OAAO,EAAE,CAAA;AACb,CAAC;AAhCD,wCAgCC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,MAAkB,EAAE,EAAE,GAAG,KAAK;IACzD,IAAI,EAAE;QAAE,MAAM,GAAG,IAAA,kCAAgB,EAAC,MAAM,CAAC,CAAA;IAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;IAExF,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,kEAAkE;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7D,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AApBD,wCAoBC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAuB,EAAE,IAAY;IAC9D,OAAO,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AACnD,CAAC;AAFD,oCAEC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAuB,EAAE,IAAY;IAClE,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;IAEnD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAEtC,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;QAC/B,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,4CAWC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,MAAuB,EAAE,GAAW,EAAE,GAAG,GAAG,EAAE;IAC9E,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAA;IAC1B,IAAI,QAAQ,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAExD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAE9C,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3C,OAAO,MAAM,GAAG,QAAQ;QAAE,MAAM,IAAI,QAAQ,CAAA;IAE5C,OAAO,GAAG,GAAG,MAAM,CAAA;AACvB,CAAC;AAVD,kDAUC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,CAAS;IACrC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAEvB,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,OAAO,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,CAAA;QAC9B,CAAC,IAAI,EAAE,CAAA;QACP,GAAG,KAAK,EAAE,CAAA;IACd,CAAC;AACL,CAAC;AAXD,0CAWC;AAED,SAAgB,SAAS,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC;AAFD,8BAEC;AAED,SAAgB,SAAS,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,CAAC;AAFD,8BAEC;AAED,SAAgB,SAAS,CAAC,CAAS,EAAE,CAAS;IAC1C,8DAA8D;IAC9D,oEAAoE;IAEpE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,CAAA;QACX,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACT,CAAC,GAAG,CAAC,CAAA;IACT,CAAC;IAED,OAAO,CAAC,CAAA;AACZ,CAAC;AAXD,8BAWC;AAED,SAAgB,YAAY,CAAC,IAAY,EAAE,GAAW,EAAE,GAAW;IAC/D,0DAA0D;IAC1D,mFAAmF;IAEnF,IAAI,IAAI,GAAG,CAAA;IAEX,IAAI,MAAM,GAAG,EAAE,CAAA;IAEf,OAAO,GAAG,GAAG,EAAE,EAAE,CAAC;QACd,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;YAClB,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,CAAA;QAClC,CAAC;QAED,GAAG,KAAK,EAAE,CAAA;QACV,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG,GAAG,CAAA;IAC3B,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAlBD,oCAkBC;AAED,mFAAmF;AAEnF,SAAS,IAAI,CAAC,CAAS,EAAE,CAAS;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,CAAC,GAAG,EAAE,CAAA;IAEV,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACf,MAAM,CAAC,GAAW,CAAC,GAAG,CAAC,CAAA;QACvB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,CAAC,CAAA;IACT,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACpB,CAAC;AAED,SAAS,IAAI,CAAC,CAAkB,EAAE,CAAkB;IAChD,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACxC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAExC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IAEjB,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AACnC,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS;IAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA,CAAC,iCAAiC;IAC1H,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrB,CAAC;AACL,CAAC;AARD,oCAQC","sourcesContent":["import { bufferToReversed } from './buffer-utils.js'\nimport { ICryptoProvider } from './crypto/abstract.js'\n\n/**\n * Get the minimum number of bits required to represent a number\n */\nexport function bigIntBitLength(n: bigint) {\n // not the fastest way, but at least not .toString(2) and not too complex\n // taken from: https://stackoverflow.com/a/76616288/22656950\n\n const i = (n.toString(16).length - 1) * 4\n\n return i + 32 - Math.clz32(Number(n >> BigInt(i)))\n}\n\n/**\n * Convert a big integer to a buffer\n *\n * @param value Value to convert\n * @param length Length of the resulting buffer (by default it's the minimum required)\n * @param le Whether to use little-endian encoding\n */\nexport function bigIntToBuffer(value: bigint, length = 0, le = false): Uint8Array {\n const bits = bigIntBitLength(value)\n const bytes = Math.ceil(bits / 8)\n\n if (length !== 0 && bytes > length) {\n throw new Error('Value out of bounds')\n }\n\n if (length === 0) length = bytes\n\n const buf = new ArrayBuffer(length)\n const u8 = new Uint8Array(buf)\n\n const unaligned = length % 8\n const dv = new DataView(buf, 0, length - unaligned)\n\n // it is faster to work with 64-bit words than with bytes directly\n for (let i = 0; i < dv.byteLength; i += 8) {\n dv.setBigUint64(i, value & 0xffffffffffffffffn, true)\n value >>= 64n\n }\n\n if (unaligned > 0) {\n for (let i = length - unaligned; i < length; i++) {\n u8[i] = Number(value & 0xffn)\n value >>= 8n\n }\n }\n\n if (!le) u8.reverse()\n\n return u8\n}\n\n/**\n * Convert a buffer to a big integer\n *\n * @param buffer Buffer to convert\n * @param le Whether to use little-endian encoding\n */\nexport function bufferToBigInt(buffer: Uint8Array, le = false): bigint {\n if (le) buffer = bufferToReversed(buffer)\n\n const unaligned = buffer.length % 8\n const dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength - unaligned)\n\n let res = 0n\n\n // it is faster to work with 64-bit words than with bytes directly\n for (let i = 0; i < dv.byteLength; i += 8) {\n res = (res << 64n) | BigInt(dv.getBigUint64(i, false))\n }\n\n if (unaligned > 0) {\n for (let i = buffer.length - unaligned; i < buffer.length; i++) {\n res = (res << 8n) | BigInt(buffer[i])\n }\n }\n\n return res\n}\n\n/**\n * Generate a cryptographically safe random big integer of the given size (in bytes)\n * @param size Size in bytes\n */\nexport function randomBigInt(crypto: ICryptoProvider, size: number): bigint {\n return bufferToBigInt(crypto.randomBytes(size))\n}\n\n/**\n * Generate a random big integer of the given size (in bits)\n * @param bits\n */\nexport function randomBigIntBits(crypto: ICryptoProvider, bits: number): bigint {\n let num = randomBigInt(crypto, Math.ceil(bits / 8))\n\n const bitLength = bigIntBitLength(num)\n\n if (bitLength > bits) {\n const toTrim = bitLength - bits\n num >>= BigInt(toTrim)\n }\n\n return num\n}\n\n/**\n * Generate a random big integer in the range [min, max)\n *\n * @param max Maximum value (exclusive)\n * @param min Minimum value (inclusive)\n */\nexport function randomBigIntInRange(crypto: ICryptoProvider, max: bigint, min = 1n): bigint {\n const interval = max - min\n if (interval < 0n) throw new Error('expected min < max')\n\n const byteSize = bigIntBitLength(interval) / 8\n\n let result = randomBigInt(crypto, byteSize)\n while (result > interval) result -= interval\n\n return min + result\n}\n\n/**\n * Compute the multiplicity of 2 in the prime factorization of n\n * @param n\n */\nexport function twoMultiplicity(n: bigint): bigint {\n if (n === 0n) return 0n\n\n let m = 0n\n let pow = 1n\n\n while (true) {\n if ((n & pow) !== 0n) return m\n m += 1n\n pow <<= 1n\n }\n}\n\nexport function bigIntMin(a: bigint, b: bigint): bigint {\n return a < b ? a : b\n}\n\nexport function bigIntAbs(a: bigint): bigint {\n return a < 0n ? -a : a\n}\n\nexport function bigIntGcd(a: bigint, b: bigint): bigint {\n // using euclidean algorithm is fast enough on smaller numbers\n // https://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations\n\n while (b !== 0n) {\n const t = b\n b = a % b\n a = t\n }\n\n return a\n}\n\nexport function bigIntModPow(base: bigint, exp: bigint, mod: bigint): bigint {\n // using the binary method is good enough for our use case\n // https://en.wikipedia.org/wiki/Modular_exponentiation#Right-to-left_binary_method\n\n base %= mod\n\n let result = 1n\n\n while (exp > 0n) {\n if (exp % 2n === 1n) {\n result = (result * base) % mod\n }\n\n exp >>= 1n\n base = base ** 2n % mod\n }\n\n return result\n}\n\n// below code is based on https://github.com/juanelas/bigint-mod-arith, MIT license\n\nfunction eGcd(a: bigint, b: bigint): [bigint, bigint, bigint] {\n let x = 0n\n let y = 1n\n let u = 1n\n let v = 0n\n\n while (a !== 0n) {\n const q = b / a\n const r: bigint = b % a\n const m = x - u * q\n const n = y - v * q\n b = a\n a = r\n x = u\n y = v\n u = m\n v = n\n }\n\n return [b, x, y]\n}\n\nfunction toZn(a: number | bigint, n: number | bigint): bigint {\n if (typeof a === 'number') a = BigInt(a)\n if (typeof n === 'number') n = BigInt(n)\n\n if (n <= 0n) {\n throw new RangeError('n must be > 0')\n }\n\n const aZn = a % n\n\n return aZn < 0n ? aZn + n : aZn\n}\n\nexport function bigIntModInv(a: bigint, n: bigint): bigint {\n const [g, x] = eGcd(toZn(a, n), n)\n\n if (g !== 1n) {\n throw new RangeError(`${a.toString()} does not have inverse modulo ${n.toString()}`) // modular inverse does not exist\n } else {\n return toZn(x, n)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"asn1-parser.js","sourceRoot":"","sources":["../../../../src/utils/binary/asn1-parser.ts"],"names":[],"mappings":"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","sourcesContent":["// all available libraries either suck or are extremely large for the use case, so i made my own~\n\nimport { getPlatform } from '../../platform.js'\n\n/**\n * Parses a single PEM block to buffer.\n * In fact just strips begin/end tags and parses the rest as Base64\n */\nexport function parsePemContents(pem: string): Uint8Array {\n return getPlatform().base64Decode(pem.replace(/^-----(BEGIN|END)( RSA)? PUBLIC KEY-----$|\\n/gm, ''))\n}\n\n// based on https://git.coolaj86.com/coolaj86/asn1-parser.js/src/branch/master/asn1-parser.js\n// but modified for typescript and node buffers\n\ninterface Asn1Object {\n type: number\n lengthSize: number\n length: number\n children?: Asn1Object[]\n value?: Uint8Array\n}\n\nconst ELOOPN = 102\nconst ELOOP = `iterated over ${ELOOPN} elements (probably a malformed file)`\nconst EDEEPN = 60\nconst EDEEP = `element nested over ${EDEEPN} layers deep (probably a malformed file)`\n\n// Container Types are Sequence 0x30, Container Array? (0xA0, 0xA1)\n// Value Types are Boolean 0x01, Integer 0x02, Null 0x05, Object ID 0x06, String 0x0C, 0x16, 0x13, 0x1e\n// Value Array? (0x82)\n// Bit String (0x03) and Octet String (0x04) may be values or containers\n// Sometimes Bit String is used as a container (RSA Pub Spki)\nconst CTYPES: Record<number, true> = {\n '48': true,\n '49': true,\n '160': true,\n '161': true,\n}\nconst VTYPES: Record<number, true> = {\n '1': true,\n '2': true,\n '5': true,\n '6': true,\n '12': true,\n '130': true,\n}\n\n/**\n * Parses ASN.1 data to an object\n */\nexport function parseAsn1(data: Uint8Array): Asn1Object {\n function parseAsn1Inner(buf: Uint8Array, depth: number[], eager = false) {\n if (depth.length >= EDEEPN) {\n throw new Error(EDEEP)\n }\n\n let index = 2 // we know, at minimum, data starts after type (0) and lengthSize (1)\n const asn1: Asn1Object = { type: buf[0], lengthSize: 0, length: buf[1] }\n let child\n let iters = 0\n let adjust = 0\n let adjustedLen = 0\n\n // Determine how many bytes the length uses, and what it is\n if (0x80 & asn1.length) {\n asn1.lengthSize = 0x7f & asn1.length\n // I think that buf->hex->int solves the problem of Endianness... not sure\n asn1.length = parseInt(getPlatform().hexEncode(buf.subarray(index, index + asn1.lengthSize)), 16)\n index += asn1.lengthSize\n }\n\n // High-order bit Integers have a leading 0x00 to signify that they are positive.\n // Bit Streams use the first byte to signify padding, which x.509 doesn't use.\n if (buf[index] === 0x00 && (asn1.type === 0x02 || asn1.type === 0x03)) {\n // However, 0x00 on its own is a valid number\n if (asn1.length > 1) {\n index += 1\n adjust = -1\n }\n }\n adjustedLen = asn1.length + adjust\n\n function parseChildren(eager = false) {\n asn1.children = []\n\n while (iters < ELOOPN && index < 2 + asn1.length + asn1.lengthSize) {\n iters += 1\n depth.length += 1\n child = parseAsn1Inner(buf.subarray(index, index + adjustedLen), depth, eager)\n depth.length -= 1\n // The numbers don't match up exactly and I don't remember why...\n // probably something with adjustedLen or some such, but the tests pass\n index += 2 + child.lengthSize + child.length\n\n if (index > 2 + asn1.lengthSize + asn1.length) {\n throw new Error(\n `Parse error: child value length (${child.length}) is ` +\n `greater than remaining parent length (${asn1.length - index} = ${asn1.length} - ${index})`,\n )\n }\n asn1.children.push(child)\n }\n if (index !== 2 + asn1.lengthSize + asn1.length) {\n throw new Error('Unexpected EOF')\n }\n if (iters >= ELOOPN) {\n throw new Error(ELOOP)\n }\n\n delete asn1.value\n\n return asn1\n }\n\n // Recurse into types that are _always_ containers\n if (CTYPES[asn1.type]) {\n return parseChildren(eager)\n }\n\n // Return types that are _always_ values\n asn1.value = buf.subarray(index, index + adjustedLen)\n\n if (VTYPES[asn1.type]) {\n return asn1\n }\n\n // For ambiguous / unknown types, recurse and return on failure\n // (and return child array size to zero)\n try {\n return parseChildren(true)\n } catch (e) {\n if (asn1.children) asn1.children.length = 0\n\n return asn1\n }\n }\n\n const asn1 = parseAsn1Inner(data, [])\n const len = data.length\n\n if (len !== 2 + asn1.lengthSize + asn1.length) {\n throw new Error('Length of buffer does not match length of ASN.1 sequence.')\n }\n\n return asn1\n}\n"]}
1
+ {"version":3,"file":"asn1-parser.js","sourceRoot":"","sources":["../../../../src/utils/binary/asn1-parser.ts"],"names":[],"mappings":"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","sourcesContent":["// all available libraries either suck or are extremely large for the use case, so i made my own~\n\nimport { getPlatform } from '../../platform.js'\n\n/**\n * Parses a single PEM block to buffer.\n * In fact just strips begin/end tags and parses the rest as Base64\n */\nexport function parsePemContents(pem: string): Uint8Array {\n return getPlatform().base64Decode(pem.replace(/^-----(BEGIN|END)( RSA)? PUBLIC KEY-----$|\\n/gm, ''))\n}\n\n// based on https://git.coolaj86.com/coolaj86/asn1-parser.js/src/branch/master/asn1-parser.js\n// but modified for typescript and node buffers\n\ninterface Asn1Object {\n type: number\n lengthSize: number\n length: number\n children?: Asn1Object[]\n value?: Uint8Array\n}\n\nconst ELOOPN = 102\nconst ELOOP = `iterated over ${ELOOPN} elements (probably a malformed file)`\nconst EDEEPN = 60\nconst EDEEP = `element nested over ${EDEEPN} layers deep (probably a malformed file)`\n\n// Container Types are Sequence 0x30, Container Array? (0xA0, 0xA1)\n// Value Types are Boolean 0x01, Integer 0x02, Null 0x05, Object ID 0x06, String 0x0C, 0x16, 0x13, 0x1e\n// Value Array? (0x82)\n// Bit String (0x03) and Octet String (0x04) may be values or containers\n// Sometimes Bit String is used as a container (RSA Pub Spki)\nconst CTYPES: Record<number, true> = {\n '48': true,\n '49': true,\n '160': true,\n '161': true,\n}\nconst VTYPES: Record<number, true> = {\n '1': true,\n '2': true,\n '5': true,\n '6': true,\n '12': true,\n '130': true,\n}\n\n/**\n * Parses ASN.1 data to an object\n */\nexport function parseAsn1(data: Uint8Array): Asn1Object {\n function parseAsn1Inner(buf: Uint8Array, depth: number[], eager = false) {\n if (depth.length >= EDEEPN) {\n throw new Error(EDEEP)\n }\n\n let index = 2 // we know, at minimum, data starts after type (0) and lengthSize (1)\n const asn1: Asn1Object = { type: buf[0], lengthSize: 0, length: buf[1] }\n let child\n let iters = 0\n let adjust = 0\n let adjustedLen = 0\n\n // Determine how many bytes the length uses, and what it is\n if (0x80 & asn1.length) {\n asn1.lengthSize = 0x7f & asn1.length\n // I think that buf->hex->int solves the problem of Endianness... not sure\n asn1.length = parseInt(getPlatform().hexEncode(buf.subarray(index, index + asn1.lengthSize)), 16)\n index += asn1.lengthSize\n }\n\n // High-order bit Integers have a leading 0x00 to signify that they are positive.\n // Bit Streams use the first byte to signify padding, which x.509 doesn't use.\n if (buf[index] === 0x00 && (asn1.type === 0x02 || asn1.type === 0x03)) {\n // However, 0x00 on its own is a valid number\n if (asn1.length > 1) {\n index += 1\n adjust = -1\n }\n }\n adjustedLen = asn1.length + adjust\n\n function parseChildren(eager = false) {\n asn1.children = []\n\n while (iters < ELOOPN && index < 2 + asn1.length + asn1.lengthSize) {\n iters += 1\n depth.length += 1\n child = parseAsn1Inner(buf.subarray(index, index + adjustedLen), depth, eager)\n depth.length -= 1\n // The numbers don't match up exactly and I don't remember why...\n // probably something with adjustedLen or some such, but the tests pass\n index += 2 + child.lengthSize + child.length\n\n if (index > 2 + asn1.lengthSize + asn1.length) {\n throw new Error(\n `Parse error: child value length (${child.length}) is ` +\n `greater than remaining parent length (${asn1.length - index} = ${asn1.length} - ${index})`,\n )\n }\n asn1.children.push(child)\n }\n if (index !== 2 + asn1.lengthSize + asn1.length) {\n throw new Error('Unexpected EOF')\n }\n if (iters >= ELOOPN) {\n throw new Error(ELOOP)\n }\n\n delete asn1.value\n\n return asn1\n }\n\n // Recurse into types that are _always_ containers\n if (CTYPES[asn1.type]) {\n return parseChildren(eager)\n }\n\n // Return types that are _always_ values\n asn1.value = buf.subarray(index, index + adjustedLen)\n\n if (VTYPES[asn1.type]) {\n return asn1\n }\n\n // For ambiguous / unknown types, recurse and return on failure\n // (and return child array size to zero)\n try {\n return parseChildren(true)\n } catch (e) {\n if (asn1.children) asn1.children.length = 0\n\n return asn1\n }\n }\n\n const asn1 = parseAsn1Inner(data, [])\n const len = data.length\n\n if (len !== 2 + asn1.lengthSize + asn1.length) {\n throw new Error('Length of buffer does not match length of ASN.1 sequence.')\n }\n\n return asn1\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"buffer-utils.js","sourceRoot":"","sources":["../../../src/utils/buffer-utils.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,CAAa,EAAE,CAAa;IACrD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;KAClC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AARD,oCAQC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,GAAe,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM;IACpE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;IACvC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAEjC,OAAO,GAAG,CAAA;AACd,CAAC;AALD,kCAKC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,OAAqB;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;IAE3C,0CAA0C;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;KAChC;IACD,yCAAyC;IAEzC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;KACvB;IAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACvB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;KACvB;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAxBD,sCAwBC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,GAAe;IAC9C,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;AACnE,CAAC;AAFD,gDAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,GAAe,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM;IACzE,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;KAC5B;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AATD,4CASC","sourcesContent":["/**\n * Check if two buffers are equal\n *\n * @param a First buffer\n * @param b Second buffer\n */\nexport function buffersEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n\n return true\n}\n\n/**\n * Copy a buffer\n *\n * @param buf Buffer to copy\n * @param start Start offset\n * @param end End offset\n */\nexport function cloneBuffer(buf: Uint8Array, start = 0, end = buf.length): Uint8Array {\n const ret = new Uint8Array(end - start)\n ret.set(buf.subarray(start, end))\n\n return ret\n}\n\n/**\n * Concatenate multiple buffers into one\n */\nexport function concatBuffers(buffers: Uint8Array[]): Uint8Array {\n if (buffers.length === 1) return buffers[0]\n\n /* eslint-disable no-restricted-globals */\n if (typeof Buffer !== 'undefined') {\n return Buffer.concat(buffers)\n }\n /* eslint-enable no-restricted-globals */\n\n let length = 0\n\n for (const buf of buffers) {\n length += buf.length\n }\n\n const ret = new Uint8Array(length)\n let offset = 0\n\n for (const buf of buffers) {\n ret.set(buf, offset)\n offset += buf.length\n }\n\n return ret\n}\n\n/**\n * Shortcut for creating a DataView from a Uint8Array\n */\nexport function dataViewFromBuffer(buf: Uint8Array): DataView {\n return new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/**\n * Reverse a buffer (or a part of it) into a new buffer\n */\nexport function bufferToReversed(buf: Uint8Array, start = 0, end = buf.length): Uint8Array {\n const len = end - start\n const ret = new Uint8Array(len)\n\n for (let i = 0; i < len; i++) {\n ret[i] = buf[end - i - 1]\n }\n\n return ret\n}\n"]}
1
+ {"version":3,"file":"buffer-utils.js","sourceRoot":"","sources":["../../../src/utils/buffer-utils.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,CAAa,EAAE,CAAa;IACrD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AARD,oCAQC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,GAAe,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM;IACpE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;IACvC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAEjC,OAAO,GAAG,CAAA;AACd,CAAC;AALD,kCAKC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,OAAqB;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;IAE3C,0CAA0C;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IACD,yCAAyC;IAEzC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IAClC,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAxBD,sCAwBC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,GAAe;IAC9C,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;AACnE,CAAC;AAFD,gDAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,GAAe,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM;IACzE,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AATD,4CASC","sourcesContent":["/**\n * Check if two buffers are equal\n *\n * @param a First buffer\n * @param b Second buffer\n */\nexport function buffersEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n\n return true\n}\n\n/**\n * Copy a buffer\n *\n * @param buf Buffer to copy\n * @param start Start offset\n * @param end End offset\n */\nexport function cloneBuffer(buf: Uint8Array, start = 0, end = buf.length): Uint8Array {\n const ret = new Uint8Array(end - start)\n ret.set(buf.subarray(start, end))\n\n return ret\n}\n\n/**\n * Concatenate multiple buffers into one\n */\nexport function concatBuffers(buffers: Uint8Array[]): Uint8Array {\n if (buffers.length === 1) return buffers[0]\n\n /* eslint-disable no-restricted-globals */\n if (typeof Buffer !== 'undefined') {\n return Buffer.concat(buffers)\n }\n /* eslint-enable no-restricted-globals */\n\n let length = 0\n\n for (const buf of buffers) {\n length += buf.length\n }\n\n const ret = new Uint8Array(length)\n let offset = 0\n\n for (const buf of buffers) {\n ret.set(buf, offset)\n offset += buf.length\n }\n\n return ret\n}\n\n/**\n * Shortcut for creating a DataView from a Uint8Array\n */\nexport function dataViewFromBuffer(buf: Uint8Array): DataView {\n return new DataView(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/**\n * Reverse a buffer (or a part of it) into a new buffer\n */\nexport function bufferToReversed(buf: Uint8Array, start = 0, end = buf.length): Uint8Array {\n const len = end - start\n const ret = new Uint8Array(len)\n\n for (let i = 0; i < len; i++) {\n ret[i] = buf[end - i - 1]\n }\n\n return ret\n}\n"]}
@@ -5,6 +5,8 @@ exports.ConditionVariable = void 0;
5
5
  * Class implementing a condition variable like behaviour.
6
6
  */
7
7
  class ConditionVariable {
8
+ _notify;
9
+ _timeout;
8
10
  wait(timeout) {
9
11
  const prom = new Promise((resolve) => {
10
12
  this._notify = resolve;
@@ -1 +1 @@
1
- {"version":3,"file":"condition-variable.js","sourceRoot":"","sources":["../../../src/utils/condition-variable.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,iBAAiB;IAI1B,IAAI,CAAC,OAAgB;QACjB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;gBAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;YAC7B,CAAC,EAAE,OAAO,CAAC,CAAA;SACd;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC5B,CAAC;CACJ;AAxBD,8CAwBC","sourcesContent":["/**\n * Class implementing a condition variable like behaviour.\n */\nexport class ConditionVariable {\n private _notify?: () => void\n private _timeout?: NodeJS.Timeout\n\n wait(timeout?: number): Promise<void> {\n const prom = new Promise<void>((resolve) => {\n this._notify = resolve\n })\n\n if (timeout) {\n this._timeout = setTimeout(() => {\n this._notify?.()\n this._timeout = undefined\n }, timeout)\n }\n\n return prom\n }\n\n notify(): void {\n this._notify?.()\n if (this._timeout) clearTimeout(this._timeout)\n this._notify = undefined\n }\n}\n"]}
1
+ {"version":3,"file":"condition-variable.js","sourceRoot":"","sources":["../../../src/utils/condition-variable.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,iBAAiB;IAClB,OAAO,CAAa;IACpB,QAAQ,CAAiB;IAEjC,IAAI,CAAC,OAAgB;QACjB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;gBAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;YAC7B,CAAC,EAAE,OAAO,CAAC,CAAA;QACf,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC5B,CAAC;CACJ;AAxBD,8CAwBC","sourcesContent":["/**\n * Class implementing a condition variable like behaviour.\n */\nexport class ConditionVariable {\n private _notify?: () => void\n private _timeout?: NodeJS.Timeout\n\n wait(timeout?: number): Promise<void> {\n const prom = new Promise<void>((resolve) => {\n this._notify = resolve\n })\n\n if (timeout) {\n this._timeout = setTimeout(() => {\n this._notify?.()\n this._timeout = undefined\n }, timeout)\n }\n\n return prom\n }\n\n notify(): void {\n this._notify?.()\n if (this._timeout) clearTimeout(this._timeout)\n this._notify = undefined\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"factorization.js","sourceRoot":"","sources":["../../../../src/utils/crypto/factorization.ts"],"names":[],"mappings":";;;AAAA,wDAO2B;AAG3B;;;GAGG;AACH,SAAgB,eAAe,CAAC,MAAuB,EAAE,EAAc;IACnE,MAAM,GAAG,GAAG,IAAA,gCAAc,EAAC,EAAE,CAAC,CAAA;IAE9B,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IAEjB,IAAI,CAAC,CAAA;IACL,IAAI,CAAC,CAAA;IAEL,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,CAAC,CAAA;KACR;SAAM;QACH,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,CAAC,CAAA;KACR;IAED,OAAO,CAAC,IAAA,gCAAc,EAAC,CAAC,CAAC,EAAE,IAAA,gCAAc,EAAC,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC;AAlBD,0CAkBC;AAED,SAAS,eAAe,CAAC,MAAuB,EAAE,CAAS;IACvD,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAE5B,IAAI,CAAC,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAC3C,MAAM,CAAC,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAC7C,MAAM,CAAC,GAAG,IAAA,qCAAmB,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAC7C,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,CAAC,GAAG,EAAE,CAAA;IAEV,IAAI,EAAU,CAAA;IACd,IAAI,CAAS,CAAA;IAEb,OAAO,CAAC,KAAK,EAAE,EAAE;QACb,CAAC,GAAG,CAAC,CAAA;QACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAExD,IAAI,CAAC,GAAG,EAAE,CAAA;QAEV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;YACtB,EAAE,GAAG,CAAC,CAAA;YAEN,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAA,2BAAS,EAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3C,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC3B,CAAC,GAAG,CAAC,CAAC,GAAG,IAAA,2BAAS,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;aACjC;YAED,CAAC,GAAG,IAAA,2BAAS,EAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SACZ;QAED,CAAC,KAAK,EAAE,CAAA;KACX;IAED,IAAI,CAAC,KAAK,CAAC,EAAE;QACT,GAAG;YACC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAG,GAAG,EAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;YAEhC,CAAC,GAAG,IAAA,2BAAS,EAAC,CAAE,GAAG,EAAG,EAAE,CAAC,CAAC,CAAA;SAC7B,QAAQ,CAAC,IAAI,EAAE,EAAC;KACpB;IAED,OAAO,CAAC,CAAA;AACZ,CAAC","sourcesContent":["import {\n bigIntAbs,\n bigIntGcd,\n bigIntMin,\n bigIntToBuffer,\n bufferToBigInt,\n randomBigIntInRange,\n} from '../bigint-utils.js'\nimport { ICryptoProvider } from './abstract.js'\n\n/**\n * Factorize `p*q` to `p` and `q` synchronously using Brent-Pollard rho algorithm\n * @param pq\n */\nexport function factorizePQSync(crypto: ICryptoProvider, pq: Uint8Array): [Uint8Array, Uint8Array] {\n const pq_ = bufferToBigInt(pq)\n\n const n = PollardRhoBrent(crypto, pq_)\n const m = pq_ / n\n\n let p\n let q\n\n if (n < m) {\n p = n\n q = m\n } else {\n p = m\n q = n\n }\n\n return [bigIntToBuffer(p), bigIntToBuffer(q)]\n}\n\nfunction PollardRhoBrent(crypto: ICryptoProvider, n: bigint): bigint {\n if (n % 2n === 0n) return 2n\n\n let y = randomBigIntInRange(crypto, n - 1n)\n const c = randomBigIntInRange(crypto, n - 1n)\n const m = randomBigIntInRange(crypto, n - 1n)\n let g = 1n\n let r = 1n\n let q = 1n\n\n let ys: bigint\n let x: bigint\n\n while (g === 1n) {\n x = y\n for (let i = 0; r >= i; i++) y = (((y * y) % n) + c) % n\n\n let k = 0n\n\n while (k < r && g === 1n) {\n ys = y\n\n for (let i = 0n; i < bigIntMin(m, r - k); i++) {\n y = (((y * y) % n) + c) % n\n q = (q * bigIntAbs(x - y)) % n\n }\n\n g = bigIntGcd(q, n)\n k = k + m\n }\n\n r <<= 1n\n }\n\n if (g === n) {\n do {\n ys = (((ys! * ys!) % n) + c) % n\n\n g = bigIntGcd(x! - ys!, n)\n } while (g <= 1n)\n }\n\n return g\n}\n"]}
1
+ {"version":3,"file":"factorization.js","sourceRoot":"","sources":["../../../../src/utils/crypto/factorization.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n bigIntAbs,\n bigIntGcd,\n bigIntMin,\n bigIntToBuffer,\n bufferToBigInt,\n randomBigIntInRange,\n} from '../bigint-utils.js'\nimport { ICryptoProvider } from './abstract.js'\n\n/**\n * Factorize `p*q` to `p` and `q` synchronously using Brent-Pollard rho algorithm\n * @param pq\n */\nexport function factorizePQSync(crypto: ICryptoProvider, pq: Uint8Array): [Uint8Array, Uint8Array] {\n const pq_ = bufferToBigInt(pq)\n\n const n = PollardRhoBrent(crypto, pq_)\n const m = pq_ / n\n\n let p\n let q\n\n if (n < m) {\n p = n\n q = m\n } else {\n p = m\n q = n\n }\n\n return [bigIntToBuffer(p), bigIntToBuffer(q)]\n}\n\nfunction PollardRhoBrent(crypto: ICryptoProvider, n: bigint): bigint {\n if (n % 2n === 0n) return 2n\n\n let y = randomBigIntInRange(crypto, n - 1n)\n const c = randomBigIntInRange(crypto, n - 1n)\n const m = randomBigIntInRange(crypto, n - 1n)\n let g = 1n\n let r = 1n\n let q = 1n\n\n let ys: bigint\n let x: bigint\n\n while (g === 1n) {\n x = y\n for (let i = 0; r >= i; i++) y = (((y * y) % n) + c) % n\n\n let k = 0n\n\n while (k < r && g === 1n) {\n ys = y\n\n for (let i = 0n; i < bigIntMin(m, r - k); i++) {\n y = (((y * y) % n) + c) % n\n q = (q * bigIntAbs(x - y)) % n\n }\n\n g = bigIntGcd(q, n)\n k = k + m\n }\n\n r <<= 1n\n }\n\n if (g === n) {\n do {\n ys = (((ys! * ys!) % n) + c) % n\n\n g = bigIntGcd(x! - ys!, n)\n } while (g <= 1n)\n }\n\n return g\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/utils/crypto/keys.ts"],"names":[],"mappings":";;;AAEA,+DAA0F;AAC1F,mDAAmD;AAEnD,mDAA+C;AAC/C,6DAAsE;AAGtE;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,MAAuB,EAAE,GAAW,EAAE,GAAG,GAAG,KAAK;IAC5E,MAAM,IAAI,GAAG,IAAA,0BAAS,EAAC,IAAA,iCAAgB,EAAC,GAAG,CAAC,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzC,yDAAyD;IACzD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACrB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEtB,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAA;IAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAEtD,OAAO;QACH,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;QACtC,WAAW,EAAE,EAAE;QACf,GAAG;KACN,CAAA;AACL,CAAC;AAvBD,wCAuBC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,MAAuB,EAAE,GAAW,EAAE,GAAG,GAAG,KAAK;IAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/C,8BAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAA;AAC1C,CAAC;AAHD,oCAGC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,YAA+B,EAAE,QAAQ,GAAG,KAAK;IACnF,KAAK,IAAI,EAAE,IAAI,YAAY,EAAE;QACzB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YACxB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;SACpC;QACD,IAAI,EAAE,IAAI,8BAAS,EAAE;YACjB,IAAI,8BAAS,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ;gBAAE,SAAQ;YAE5C,OAAO,8BAAS,CAAC,EAAE,CAAC,CAAA;SACvB;KACJ;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAE/D,OAAO,IAAI,CAAA;AACf,CAAC;AAdD,sDAcC","sourcesContent":["import Long from 'long'\n\nimport { __publicKeyIndex as keysIndex, TlPublicKey } from '@mtcute/tl/binary/rsa-keys.js'\nimport { TlBinaryWriter } from '@mtcute/tl-runtime'\n\nimport { getPlatform } from '../../platform.js'\nimport { parseAsn1, parsePemContents } from '../binary/asn1-parser.js'\nimport { ICryptoProvider } from './abstract.js'\n\n/**\n * Parse PEM-encoded RSA public key information into modulus and exponent\n * and compute its fingerprint as defined by MTProto.\n *\n * @param crypto Crypto provider\n * @param key PEM-encoded RSA public key\n * @param old Whether this is an \"old\" key\n */\nexport function parsePublicKey(crypto: ICryptoProvider, key: string, old = false): TlPublicKey {\n const asn1 = parseAsn1(parsePemContents(key))\n const modulus = asn1.children?.[0].value\n const exponent = asn1.children?.[1].value\n if (!modulus || !exponent) throw new Error('Invalid public key')\n\n const writer = TlBinaryWriter.manual(512)\n // they are actually smaller, about 270 bytes, but idc :D\n writer.bytes(modulus)\n writer.bytes(exponent)\n\n const platform = getPlatform()\n\n const data = writer.result()\n const sha = crypto.sha1(data)\n const fp = platform.hexEncode(sha.slice(-8).reverse())\n\n return {\n modulus: platform.hexEncode(modulus),\n exponent: platform.hexEncode(exponent),\n fingerprint: fp,\n old,\n }\n}\n\n/**\n * Add public key to the global index.\n *\n * @param crypto Crypto provider\n * @param key PEM-encoded RSA public key\n * @param old Whether this is an \"old\" key\n */\nexport function addPublicKey(crypto: ICryptoProvider, key: string, old = false): void {\n const parsed = parsePublicKey(crypto, key, old)\n keysIndex[parsed.fingerprint] = parsed\n}\n\n/**\n * Get public key by its fingerprint.\n *\n * @param fingerprints Fingerprints to match. The first one to match is returned.\n * @param allowOld Whether to allow \"old\" keys\n */\nexport function findKeyByFingerprints(fingerprints: (string | Long)[], allowOld = false): TlPublicKey | null {\n for (let fp of fingerprints) {\n if (typeof fp !== 'string') {\n fp = fp.toUnsigned().toString(16)\n }\n if (fp in keysIndex) {\n if (keysIndex[fp].old && !allowOld) continue\n\n return keysIndex[fp]\n }\n }\n if (!allowOld) return findKeyByFingerprints(fingerprints, true)\n\n return null\n}\n"]}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/utils/crypto/keys.ts"],"names":[],"mappings":";;;AAEA,+DAA0F;AAC1F,mDAAmD;AAEnD,mDAA+C;AAC/C,6DAAsE;AAGtE;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,MAAuB,EAAE,GAAW,EAAE,GAAG,GAAG,KAAK;IAC5E,MAAM,IAAI,GAAG,IAAA,0BAAS,EAAC,IAAA,iCAAgB,EAAC,GAAG,CAAC,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzC,yDAAyD;IACzD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACrB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEtB,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAA;IAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAEtD,OAAO;QACH,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;QACtC,WAAW,EAAE,EAAE;QACf,GAAG;KACN,CAAA;AACL,CAAC;AAvBD,wCAuBC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,MAAuB,EAAE,GAAW,EAAE,GAAG,GAAG,KAAK;IAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/C,8BAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAA;AAC1C,CAAC;AAHD,oCAGC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,YAA+B,EAAE,QAAQ,GAAG,KAAK;IACnF,KAAK,IAAI,EAAE,IAAI,YAAY,EAAE,CAAC;QAC1B,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YACzB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACrC,CAAC;QACD,IAAI,EAAE,IAAI,8BAAS,EAAE,CAAC;YAClB,IAAI,8BAAS,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ;gBAAE,SAAQ;YAE5C,OAAO,8BAAS,CAAC,EAAE,CAAC,CAAA;QACxB,CAAC;IACL,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAE/D,OAAO,IAAI,CAAA;AACf,CAAC;AAdD,sDAcC","sourcesContent":["import Long from 'long'\n\nimport { __publicKeyIndex as keysIndex, TlPublicKey } from '@mtcute/tl/binary/rsa-keys.js'\nimport { TlBinaryWriter } from '@mtcute/tl-runtime'\n\nimport { getPlatform } from '../../platform.js'\nimport { parseAsn1, parsePemContents } from '../binary/asn1-parser.js'\nimport { ICryptoProvider } from './abstract.js'\n\n/**\n * Parse PEM-encoded RSA public key information into modulus and exponent\n * and compute its fingerprint as defined by MTProto.\n *\n * @param crypto Crypto provider\n * @param key PEM-encoded RSA public key\n * @param old Whether this is an \"old\" key\n */\nexport function parsePublicKey(crypto: ICryptoProvider, key: string, old = false): TlPublicKey {\n const asn1 = parseAsn1(parsePemContents(key))\n const modulus = asn1.children?.[0].value\n const exponent = asn1.children?.[1].value\n if (!modulus || !exponent) throw new Error('Invalid public key')\n\n const writer = TlBinaryWriter.manual(512)\n // they are actually smaller, about 270 bytes, but idc :D\n writer.bytes(modulus)\n writer.bytes(exponent)\n\n const platform = getPlatform()\n\n const data = writer.result()\n const sha = crypto.sha1(data)\n const fp = platform.hexEncode(sha.slice(-8).reverse())\n\n return {\n modulus: platform.hexEncode(modulus),\n exponent: platform.hexEncode(exponent),\n fingerprint: fp,\n old,\n }\n}\n\n/**\n * Add public key to the global index.\n *\n * @param crypto Crypto provider\n * @param key PEM-encoded RSA public key\n * @param old Whether this is an \"old\" key\n */\nexport function addPublicKey(crypto: ICryptoProvider, key: string, old = false): void {\n const parsed = parsePublicKey(crypto, key, old)\n keysIndex[parsed.fingerprint] = parsed\n}\n\n/**\n * Get public key by its fingerprint.\n *\n * @param fingerprints Fingerprints to match. The first one to match is returned.\n * @param allowOld Whether to allow \"old\" keys\n */\nexport function findKeyByFingerprints(fingerprints: (string | Long)[], allowOld = false): TlPublicKey | null {\n for (let fp of fingerprints) {\n if (typeof fp !== 'string') {\n fp = fp.toUnsigned().toString(16)\n }\n if (fp in keysIndex) {\n if (keysIndex[fp].old && !allowOld) continue\n\n return keysIndex[fp]\n }\n }\n if (!allowOld) return findKeyByFingerprints(fingerprints, true)\n\n return null\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"miller-rabin.js","sourceRoot":"","sources":["../../../../src/utils/crypto/miller-rabin.ts"],"names":[],"mappings":";;;AAAA,wDAAqG;AAGrG,SAAgB,WAAW,CAAC,MAAuB,EAAE,CAAS,EAAE,MAAM,GAAG,EAAE;IACvE,oDAAoD;IACpD,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,KAAK,CAAA;IAEzC,MAAM,KAAK,GAAG,IAAA,iCAAe,EAAC,CAAC,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAA;IAEnB,MAAM,CAAC,GAAG,IAAA,iCAAe,EAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7B,IAAI,IAAI,CAAA;QAER,GAAG;YACC,IAAI,GAAG,IAAA,kCAAgB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;SACzC,QAAQ,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAC;QAEpC,IAAI,CAAC,GAAG,IAAA,8BAAY,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAChC,+CAA+C;QAC/C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI;YAAE,SAAQ;QAEpC,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,IAAI,CAAS,CAAA;QAEb,OAAO,CAAC,GAAG,CAAC,EAAE;YACV,6BAA6B;YAC7B,CAAC,GAAG,IAAA,8BAAY,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAE1B,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAA;YAC1B,IAAI,CAAC,KAAK,IAAI;gBAAE,MAAK;YACrB,CAAC,IAAI,EAAE,CAAA;YAEP,CAAC,GAAG,CAAC,CAAA;SACR;QAED,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;KAC5B;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAxCD,kCAwCC","sourcesContent":["import { bigIntBitLength, bigIntModPow, randomBigIntBits, twoMultiplicity } from '../bigint-utils.js'\nimport { ICryptoProvider } from './abstract.js'\n\nexport function millerRabin(crypto: ICryptoProvider, n: bigint, rounds = 20): boolean {\n // small numbers: 0, 1 are not prime, 2, 3 are prime\n if (n < 4n) return n > 1n\n if (n % 2n === 0n || n < 0n) return false\n\n const nBits = bigIntBitLength(n)\n const nSub = n - 1n\n\n const r = twoMultiplicity(nSub)\n const d = nSub >> r\n\n for (let i = 0; i < rounds; i++) {\n let base\n\n do {\n base = randomBigIntBits(crypto, nBits)\n } while (base <= 1n || base >= nSub)\n\n let x = bigIntModPow(base, d, n)\n // if (x.eq(bigInt.one) || x.eq(nSub)) continue\n if (x === 1n || x === nSub) continue\n\n let i = 0n\n let y: bigint\n\n while (i < r) {\n // y = x.modPow(bigInt[2], n)\n y = bigIntModPow(x, 2n, n)\n\n if (x === 1n) return false\n if (x === nSub) break\n i += 1n\n\n x = y\n }\n\n if (i === r) return false\n }\n\n return true\n}\n"]}
1
+ {"version":3,"file":"miller-rabin.js","sourceRoot":"","sources":["../../../../src/utils/crypto/miller-rabin.ts"],"names":[],"mappings":";;;AAAA,wDAAqG;AAGrG,SAAgB,WAAW,CAAC,MAAuB,EAAE,CAAS,EAAE,MAAM,GAAG,EAAE;IACvE,oDAAoD;IACpD,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,KAAK,CAAA;IAEzC,MAAM,KAAK,GAAG,IAAA,iCAAe,EAAC,CAAC,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAA;IAEnB,MAAM,CAAC,GAAG,IAAA,iCAAe,EAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAA;QAER,GAAG,CAAC;YACA,IAAI,GAAG,IAAA,kCAAgB,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC1C,CAAC,QAAQ,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAC;QAEpC,IAAI,CAAC,GAAG,IAAA,8BAAY,EAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAChC,+CAA+C;QAC/C,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI;YAAE,SAAQ;QAEpC,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,IAAI,CAAS,CAAA;QAEb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACX,6BAA6B;YAC7B,CAAC,GAAG,IAAA,8BAAY,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAE1B,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAA;YAC1B,IAAI,CAAC,KAAK,IAAI;gBAAE,MAAK;YACrB,CAAC,IAAI,EAAE,CAAA;YAEP,CAAC,GAAG,CAAC,CAAA;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;IAC7B,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAxCD,kCAwCC","sourcesContent":["import { bigIntBitLength, bigIntModPow, randomBigIntBits, twoMultiplicity } from '../bigint-utils.js'\nimport { ICryptoProvider } from './abstract.js'\n\nexport function millerRabin(crypto: ICryptoProvider, n: bigint, rounds = 20): boolean {\n // small numbers: 0, 1 are not prime, 2, 3 are prime\n if (n < 4n) return n > 1n\n if (n % 2n === 0n || n < 0n) return false\n\n const nBits = bigIntBitLength(n)\n const nSub = n - 1n\n\n const r = twoMultiplicity(nSub)\n const d = nSub >> r\n\n for (let i = 0; i < rounds; i++) {\n let base\n\n do {\n base = randomBigIntBits(crypto, nBits)\n } while (base <= 1n || base >= nSub)\n\n let x = bigIntModPow(base, d, n)\n // if (x.eq(bigInt.one) || x.eq(nSub)) continue\n if (x === 1n || x === nSub) continue\n\n let i = 0n\n let y: bigint\n\n while (i < r) {\n // y = x.modPow(bigInt[2], n)\n y = bigIntModPow(x, 2n, n)\n\n if (x === 1n) return false\n if (x === nSub) break\n i += 1n\n\n x = y\n }\n\n if (i === r) return false\n }\n\n return true\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"password.js","sourceRoot":"","sources":["../../../../src/utils/crypto/password.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../platform.js'\nimport { MtSecurityError, MtUnsupportedError } from '../../types/errors.js'\nimport { bigIntModPow, bigIntToBuffer, bufferToBigInt } from '../bigint-utils.js'\nimport { concatBuffers } from '../buffer-utils.js'\nimport { assertTypeIs } from '../type-assertions.js'\nimport { ICryptoProvider } from './abstract.js'\nimport { xorBuffer } from './utils.js'\n\n/**\n * Compute password hash as defined by MTProto.\n *\n * See https://core.telegram.org/api/srp#checking-the-password-with-srp\n *\n * @param crypto Crypto provider\n * @param password Password\n * @param salt1 Salt 1\n * @param salt2 Salt 2\n */\nexport async function computePasswordHash(\n crypto: ICryptoProvider,\n password: Uint8Array,\n salt1: Uint8Array,\n salt2: Uint8Array,\n): Promise<Uint8Array> {\n const SH = (data: Uint8Array, salt: Uint8Array) => crypto.sha256(concatBuffers([salt, data, salt]))\n const PH1 = (pwd: Uint8Array, salt1: Uint8Array, salt2: Uint8Array) => SH(SH(pwd, salt1), salt2)\n\n return SH(await crypto.pbkdf2(PH1(password, salt1, salt2), salt1, 100000), salt2)\n}\n\n/**\n * Compute new password SRP hash as defined by MTProto.\n *\n * @param crypto Crypto provider\n * @param algo KDF algorithm\n * @param password Password\n */\nexport async function computeNewPasswordHash(\n crypto: ICryptoProvider,\n algo: tl.TypePasswordKdfAlgo,\n password: string,\n): Promise<Uint8Array> {\n assertTypeIs('account.getPassword', algo, 'passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow')\n\n const salt1 = new Uint8Array(algo.salt1.length + 32)\n salt1.set(algo.salt1)\n crypto.randomFill(salt1.subarray(algo.salt1.length))\n ;(algo as tl.Mutable<typeof algo>).salt1 = salt1\n\n const _x = await computePasswordHash(crypto, getPlatform().utf8Encode(password), algo.salt1, algo.salt2)\n\n const g = BigInt(algo.g)\n const p = bufferToBigInt(algo.p)\n const x = bufferToBigInt(_x)\n\n return bigIntToBuffer(bigIntModPow(g, x, p), 256)\n}\n\n/**\n * Compute SRP check parameters for 2fa password as defined by MTProto.\n *\n * @param crypto Crypto provider\n * @param request SRP request\n * @param password 2fa password\n */\nexport async function computeSrpParams(\n crypto: ICryptoProvider,\n request: tl.account.RawPassword,\n password: string,\n): Promise<tl.RawInputCheckPasswordSRP> {\n // nice naming thx durov\n if (\n !request.currentAlgo ||\n request.currentAlgo._ !== 'passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow'\n ) {\n throw new MtUnsupportedError(`Unknown algo ${request.currentAlgo?._}`)\n }\n\n const algo = request.currentAlgo\n\n // here and after: underscored variables are buffers, non-underscored are bigInts\n\n if (!request.srpB) {\n throw new MtSecurityError('SRP_B is not present in the request')\n }\n\n if (!request.srpId) {\n throw new MtSecurityError('SRP_ID is not present in the request')\n }\n\n const g = BigInt(algo.g)\n const _g = bigIntToBuffer(g, 256)\n const p = bufferToBigInt(algo.p)\n const gB = bufferToBigInt(request.srpB)\n\n const a = bufferToBigInt(crypto.randomBytes(256))\n const gA = bigIntModPow(g, a, p)\n const _gA = bigIntToBuffer(gA, 256)\n\n const H = (data: Uint8Array) => crypto.sha256(data)\n\n const _k = crypto.sha256(concatBuffers([algo.p, _g]))\n const _u = crypto.sha256(concatBuffers([_gA, request.srpB]))\n const _x = await computePasswordHash(crypto, getPlatform().utf8Encode(password), algo.salt1, algo.salt2)\n const k = bufferToBigInt(_k)\n const u = bufferToBigInt(_u)\n const x = bufferToBigInt(_x)\n\n const v = bigIntModPow(g, x, p)\n const kV = (k * v) % p\n\n let t = gB - kV\n if (t < 0n) t += p\n const sA = bigIntModPow(t, a + u * x, p)\n const _kA = H(bigIntToBuffer(sA, 256))\n\n const _M1 = H(concatBuffers([xorBuffer(H(algo.p), H(_g)), H(algo.salt1), H(algo.salt2), _gA, request.srpB, _kA]))\n\n return {\n _: 'inputCheckPasswordSRP',\n srpId: request.srpId,\n A: _gA,\n M1: _M1,\n }\n}\n"]}
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../../../src/utils/crypto/password.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../platform.js'\nimport { MtSecurityError, MtUnsupportedError } from '../../types/errors.js'\nimport { bigIntModPow, bigIntToBuffer, bufferToBigInt } from '../bigint-utils.js'\nimport { concatBuffers } from '../buffer-utils.js'\nimport { assertTypeIs } from '../type-assertions.js'\nimport { ICryptoProvider } from './abstract.js'\nimport { xorBuffer } from './utils.js'\n\n/**\n * Compute password hash as defined by MTProto.\n *\n * See https://core.telegram.org/api/srp#checking-the-password-with-srp\n *\n * @param crypto Crypto provider\n * @param password Password\n * @param salt1 Salt 1\n * @param salt2 Salt 2\n */\nexport async function computePasswordHash(\n crypto: ICryptoProvider,\n password: Uint8Array,\n salt1: Uint8Array,\n salt2: Uint8Array,\n): Promise<Uint8Array> {\n const SH = (data: Uint8Array, salt: Uint8Array) => crypto.sha256(concatBuffers([salt, data, salt]))\n const PH1 = (pwd: Uint8Array, salt1: Uint8Array, salt2: Uint8Array) => SH(SH(pwd, salt1), salt2)\n\n return SH(await crypto.pbkdf2(PH1(password, salt1, salt2), salt1, 100000), salt2)\n}\n\n/**\n * Compute new password SRP hash as defined by MTProto.\n *\n * @param crypto Crypto provider\n * @param algo KDF algorithm\n * @param password Password\n */\nexport async function computeNewPasswordHash(\n crypto: ICryptoProvider,\n algo: tl.TypePasswordKdfAlgo,\n password: string,\n): Promise<Uint8Array> {\n assertTypeIs('account.getPassword', algo, 'passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow')\n\n const salt1 = new Uint8Array(algo.salt1.length + 32)\n salt1.set(algo.salt1)\n crypto.randomFill(salt1.subarray(algo.salt1.length))\n ;(algo as tl.Mutable<typeof algo>).salt1 = salt1\n\n const _x = await computePasswordHash(crypto, getPlatform().utf8Encode(password), algo.salt1, algo.salt2)\n\n const g = BigInt(algo.g)\n const p = bufferToBigInt(algo.p)\n const x = bufferToBigInt(_x)\n\n return bigIntToBuffer(bigIntModPow(g, x, p), 256)\n}\n\n/**\n * Compute SRP check parameters for 2fa password as defined by MTProto.\n *\n * @param crypto Crypto provider\n * @param request SRP request\n * @param password 2fa password\n */\nexport async function computeSrpParams(\n crypto: ICryptoProvider,\n request: tl.account.RawPassword,\n password: string,\n): Promise<tl.RawInputCheckPasswordSRP> {\n // nice naming thx durov\n if (\n !request.currentAlgo ||\n request.currentAlgo._ !== 'passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow'\n ) {\n throw new MtUnsupportedError(`Unknown algo ${request.currentAlgo?._}`)\n }\n\n const algo = request.currentAlgo\n\n // here and after: underscored variables are buffers, non-underscored are bigInts\n\n if (!request.srpB) {\n throw new MtSecurityError('SRP_B is not present in the request')\n }\n\n if (!request.srpId) {\n throw new MtSecurityError('SRP_ID is not present in the request')\n }\n\n const g = BigInt(algo.g)\n const _g = bigIntToBuffer(g, 256)\n const p = bufferToBigInt(algo.p)\n const gB = bufferToBigInt(request.srpB)\n\n const a = bufferToBigInt(crypto.randomBytes(256))\n const gA = bigIntModPow(g, a, p)\n const _gA = bigIntToBuffer(gA, 256)\n\n const H = (data: Uint8Array) => crypto.sha256(data)\n\n const _k = crypto.sha256(concatBuffers([algo.p, _g]))\n const _u = crypto.sha256(concatBuffers([_gA, request.srpB]))\n const _x = await computePasswordHash(crypto, getPlatform().utf8Encode(password), algo.salt1, algo.salt2)\n const k = bufferToBigInt(_k)\n const u = bufferToBigInt(_u)\n const x = bufferToBigInt(_x)\n\n const v = bigIntModPow(g, x, p)\n const kV = (k * v) % p\n\n let t = gB - kV\n if (t < 0n) t += p\n const sA = bigIntModPow(t, a + u * x, p)\n const _kA = H(bigIntToBuffer(sA, 256))\n\n const _M1 = H(concatBuffers([xorBuffer(H(algo.p), H(_g)), H(algo.salt1), H(algo.salt2), _gA, request.srpB, _kA]))\n\n return {\n _: 'inputCheckPasswordSRP',\n srpId: request.srpId,\n A: _gA,\n M1: _M1,\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/crypto/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,IAAgB,EAAE,GAAe;IACvD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;KAC5B;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AARD,8BAQC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAgB,EAAE,GAAe;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;KACpB;AACL,CAAC;AAJD,4CAIC","sourcesContent":["/**\n * Perform XOR operation on two buffers and return the new buffer\n *\n * @param data Buffer to XOR\n * @param key Key to XOR with\n */\nexport function xorBuffer(data: Uint8Array, key: Uint8Array): Uint8Array {\n const ret = new Uint8Array(data.length)\n\n for (let i = 0; i < data.length; i++) {\n ret[i] = data[i] ^ key[i]\n }\n\n return ret\n}\n\n/**\n * Perform XOR operation on two buffers in-place\n *\n * @param data Buffer to XOR\n * @param key Key to XOR with\n */\nexport function xorBufferInPlace(data: Uint8Array, key: Uint8Array): void {\n for (let i = 0; i < data.length; i++) {\n data[i] ^= key[i]\n }\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/crypto/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,IAAgB,EAAE,GAAe;IACvD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AARD,8BAQC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAgB,EAAE,GAAe;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;AACL,CAAC;AAJD,4CAIC","sourcesContent":["/**\n * Perform XOR operation on two buffers and return the new buffer\n *\n * @param data Buffer to XOR\n * @param key Key to XOR with\n */\nexport function xorBuffer(data: Uint8Array, key: Uint8Array): Uint8Array {\n const ret = new Uint8Array(data.length)\n\n for (let i = 0; i < data.length; i++) {\n ret[i] = data[i] ^ key[i]\n }\n\n return ret\n}\n\n/**\n * Perform XOR operation on two buffers in-place\n *\n * @param data Buffer to XOR\n * @param key Key to XOR with\n */\nexport function xorBufferInPlace(data: Uint8Array, key: Uint8Array): void {\n for (let i = 0; i < data.length; i++) {\n data[i] ^= key[i]\n }\n}\n"]}
package/cjs/utils/dcs.js CHANGED
@@ -6,7 +6,7 @@ function serializeBasicDcOption(dc) {
6
6
  const writer = tl_runtime_1.TlBinaryWriter.manual(64);
7
7
  const flags = (dc.ipv6 ? 1 : 0) | (dc.mediaOnly ? 2 : 0);
8
8
  writer.raw(new Uint8Array([
9
- 1,
9
+ 1, // version
10
10
  dc.id,
11
11
  flags,
12
12
  ]));
@@ -1 +1 @@
1
- {"version":3,"file":"dcs.js","sourceRoot":"","sources":["../../../src/utils/dcs.ts"],"names":[],"mappings":";;;AAAA,mDAAmE;AAUnE,SAAgB,sBAAsB,CAAC,EAAiB;IACpD,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAExC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,MAAM,CAAC,GAAG,CACN,IAAI,UAAU,CAAC;QACX,CAAC;QACD,EAAE,CAAC,EAAE;QACL,KAAK;KACR,CAAC,CACL,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC3B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAEnB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAA;AAC1B,CAAC;AAhBD,wDAgBC;AAED,SAAgB,kBAAkB,CAAC,IAAgB;IAC/C,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAE1C,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAA;IAEzB,OAAO;QACH,EAAE;QACF,SAAS;QACT,IAAI;QACJ,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACvB,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;KAC/B,CAAA;AACL,CAAC;AAhBD,gDAgBC;AAOY,QAAA,mBAAmB,GAAc;IAC1C,IAAI,EAAE;QACF,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,iBAAiB;QAC5B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA;AAEY,QAAA,uBAAuB,GAAc;IAC9C,IAAI,EAAE;QACF,SAAS,EAAE,yCAAyC;QACpD,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,yCAAyC;QACpD,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA;AAEY,QAAA,aAAa,GAAc;IACpC,IAAI,EAAE;QACF,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA;AAEY,QAAA,iBAAiB,GAAc;IACxC,IAAI,EAAE;QACF,SAAS,EAAE,sBAAsB;QACjC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,sBAAsB;QACjC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA","sourcesContent":["import { TlBinaryReader, TlBinaryWriter } from '@mtcute/tl-runtime'\n\nexport interface BasicDcOption {\n ipAddress: string\n port: number\n id: number\n ipv6?: boolean\n mediaOnly?: boolean\n}\n\nexport function serializeBasicDcOption(dc: BasicDcOption): Uint8Array {\n const writer = TlBinaryWriter.manual(64)\n\n const flags = (dc.ipv6 ? 1 : 0) | (dc.mediaOnly ? 2 : 0)\n writer.raw(\n new Uint8Array([\n 1, // version\n dc.id,\n flags,\n ]),\n )\n\n writer.string(dc.ipAddress)\n writer.int(dc.port)\n\n return writer.result()\n}\n\nexport function parseBasicDcOption(data: Uint8Array): BasicDcOption | null {\n const reader = TlBinaryReader.manual(data)\n\n const [version, id, flags] = reader.raw(3)\n if (version !== 1) return null\n\n const ipAddress = reader.string()\n const port = reader.int()\n\n return {\n id,\n ipAddress,\n port,\n ipv6: (flags & 1) !== 0,\n mediaOnly: (flags & 2) !== 0,\n }\n}\n\nexport interface DcOptions {\n main: BasicDcOption\n media: BasicDcOption\n}\n\nexport const defaultProductionDc: DcOptions = {\n main: {\n ipAddress: '149.154.167.50',\n port: 443,\n id: 2,\n },\n media: {\n ipAddress: '149.154.167.222',\n port: 443,\n id: 2,\n mediaOnly: true,\n },\n}\n\nexport const defaultProductionIpv6Dc: DcOptions = {\n main: {\n ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000a',\n ipv6: true,\n port: 443,\n id: 2,\n },\n media: {\n ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000b',\n ipv6: true,\n port: 443,\n id: 2,\n mediaOnly: true,\n },\n}\n\nexport const defaultTestDc: DcOptions = {\n main: {\n ipAddress: '149.154.167.40',\n port: 443,\n id: 2,\n },\n media: {\n ipAddress: '149.154.167.40',\n port: 443,\n id: 2,\n mediaOnly: true,\n },\n}\n\nexport const defaultTestIpv6Dc: DcOptions = {\n main: {\n ipAddress: '2001:67c:4e8:f002::e',\n port: 443,\n ipv6: true,\n id: 2,\n },\n media: {\n ipAddress: '2001:67c:4e8:f002::e',\n port: 443,\n ipv6: true,\n id: 2,\n mediaOnly: true,\n },\n}\n"]}
1
+ {"version":3,"file":"dcs.js","sourceRoot":"","sources":["../../../src/utils/dcs.ts"],"names":[],"mappings":";;;AAAA,mDAAmE;AAUnE,SAAgB,sBAAsB,CAAC,EAAiB;IACpD,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAExC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,MAAM,CAAC,GAAG,CACN,IAAI,UAAU,CAAC;QACX,CAAC,EAAE,UAAU;QACb,EAAE,CAAC,EAAE;QACL,KAAK;KACR,CAAC,CACL,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC3B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAEnB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAA;AAC1B,CAAC;AAhBD,wDAgBC;AAED,SAAgB,kBAAkB,CAAC,IAAgB;IAC/C,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAE1C,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAA;IAEzB,OAAO;QACH,EAAE;QACF,SAAS;QACT,IAAI;QACJ,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACvB,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;KAC/B,CAAA;AACL,CAAC;AAhBD,gDAgBC;AAOY,QAAA,mBAAmB,GAAc;IAC1C,IAAI,EAAE;QACF,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,iBAAiB;QAC5B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA;AAEY,QAAA,uBAAuB,GAAc;IAC9C,IAAI,EAAE;QACF,SAAS,EAAE,yCAAyC;QACpD,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,yCAAyC;QACpD,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA;AAEY,QAAA,aAAa,GAAc;IACpC,IAAI,EAAE;QACF,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA;AAEY,QAAA,iBAAiB,GAAc;IACxC,IAAI,EAAE;QACF,SAAS,EAAE,sBAAsB;QACjC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,SAAS,EAAE,sBAAsB;QACjC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA","sourcesContent":["import { TlBinaryReader, TlBinaryWriter } from '@mtcute/tl-runtime'\n\nexport interface BasicDcOption {\n ipAddress: string\n port: number\n id: number\n ipv6?: boolean\n mediaOnly?: boolean\n}\n\nexport function serializeBasicDcOption(dc: BasicDcOption): Uint8Array {\n const writer = TlBinaryWriter.manual(64)\n\n const flags = (dc.ipv6 ? 1 : 0) | (dc.mediaOnly ? 2 : 0)\n writer.raw(\n new Uint8Array([\n 1, // version\n dc.id,\n flags,\n ]),\n )\n\n writer.string(dc.ipAddress)\n writer.int(dc.port)\n\n return writer.result()\n}\n\nexport function parseBasicDcOption(data: Uint8Array): BasicDcOption | null {\n const reader = TlBinaryReader.manual(data)\n\n const [version, id, flags] = reader.raw(3)\n if (version !== 1) return null\n\n const ipAddress = reader.string()\n const port = reader.int()\n\n return {\n id,\n ipAddress,\n port,\n ipv6: (flags & 1) !== 0,\n mediaOnly: (flags & 2) !== 0,\n }\n}\n\nexport interface DcOptions {\n main: BasicDcOption\n media: BasicDcOption\n}\n\nexport const defaultProductionDc: DcOptions = {\n main: {\n ipAddress: '149.154.167.50',\n port: 443,\n id: 2,\n },\n media: {\n ipAddress: '149.154.167.222',\n port: 443,\n id: 2,\n mediaOnly: true,\n },\n}\n\nexport const defaultProductionIpv6Dc: DcOptions = {\n main: {\n ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000a',\n ipv6: true,\n port: 443,\n id: 2,\n },\n media: {\n ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000b',\n ipv6: true,\n port: 443,\n id: 2,\n mediaOnly: true,\n },\n}\n\nexport const defaultTestDc: DcOptions = {\n main: {\n ipAddress: '149.154.167.40',\n port: 443,\n id: 2,\n },\n media: {\n ipAddress: '149.154.167.40',\n port: 443,\n id: 2,\n mediaOnly: true,\n },\n}\n\nexport const defaultTestIpv6Dc: DcOptions = {\n main: {\n ipAddress: '2001:67c:4e8:f002::e',\n port: 443,\n ipv6: true,\n id: 2,\n },\n media: {\n ipAddress: '2001:67c:4e8:f002::e',\n port: 443,\n ipv6: true,\n id: 2,\n mediaOnly: true,\n },\n}\n"]}
@@ -16,10 +16,16 @@ function arraycopy(src, srcPos, dest, destPos, length) {
16
16
  * Based on Java implementation
17
17
  */
18
18
  class Deque {
19
+ maxLength;
20
+ // another implementation variant would be to use
21
+ // blocks of fixed size instead of a single array
22
+ // to avoid copying stuff around
23
+ _elements;
24
+ _head = 0;
25
+ _tail = 0;
26
+ _capacity;
19
27
  constructor(maxLength = Infinity, minCapacity = maxLength === Infinity ? MIN_INITIAL_CAPACITY : maxLength) {
20
28
  this.maxLength = maxLength;
21
- this._head = 0;
22
- this._tail = 0;
23
29
  let capacity = minCapacity;
24
30
  if (capacity < MIN_INITIAL_CAPACITY) {
25
31
  capacity = MIN_INITIAL_CAPACITY;
@@ -1 +1 @@
1
- {"version":3,"file":"deque.js","sourceRoot":"","sources":["../../../src/utils/deque.ts"],"names":[],"mappings":"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","sourcesContent":["// ^^ because of performance reasons\nconst MIN_INITIAL_CAPACITY = 8\n\n// System.arraycopy from java\nfunction arraycopy<T>(src: T[], srcPos: number, dest: T[], destPos: number, length: number) {\n for (let i = 0; i < length; i++) {\n dest[destPos + i] = src[srcPos + i]\n }\n}\n\n/**\n * Deque implementation.\n * `undefined` values are not allowed\n *\n * Based on Java implementation\n */\nexport class Deque<T> {\n // another implementation variant would be to use\n // blocks of fixed size instead of a single array\n // to avoid copying stuff around\n protected _elements: (T | undefined)[]\n protected _head = 0\n protected _tail = 0\n protected _capacity: number\n\n constructor(\n readonly maxLength = Infinity,\n minCapacity = maxLength === Infinity ? MIN_INITIAL_CAPACITY : maxLength,\n ) {\n let capacity = minCapacity\n\n if (capacity < MIN_INITIAL_CAPACITY) {\n capacity = MIN_INITIAL_CAPACITY\n }\n if (capacity !== MIN_INITIAL_CAPACITY) {\n // Find the best power of two to hold elements.\n capacity |= capacity >>> 1\n capacity |= capacity >>> 2\n capacity |= capacity >>> 4\n capacity |= capacity >>> 8\n capacity |= capacity >>> 16\n capacity += 1\n\n if (capacity < 0) {\n // too many\n capacity >>>= 1\n }\n }\n\n this._elements = new Array<T | undefined>(capacity)\n this._capacity = capacity\n }\n\n protected _resize() {\n const p = this._head\n const n = this._capacity\n const r = n - p // number of elements to the right of the head\n\n const newCapacity = n << 1\n if (newCapacity < 0) throw new Error('Deque is too big')\n\n const arr = new Array<T | undefined>(newCapacity)\n\n // copy items to the new array\n // copy head till the end of arr\n arraycopy(this._elements, p, arr, 0, r)\n // copy from start to tail\n arraycopy(this._elements, 0, arr, r, p)\n\n this._elements = arr\n this._head = 0\n this._tail = n\n this._capacity = newCapacity\n }\n\n pushBack(item: T): void {\n if (item === undefined) throw new Error('item can not be undefined')\n\n this._elements[this._tail] = item\n\n if ((this._tail = (this._tail + 1) & (this._capacity - 1)) === this._head) {\n this._resize()\n }\n\n if (this.length > this.maxLength) {\n this.popFront()\n }\n }\n\n pushFront(item: T): void {\n if (item === undefined) throw new Error('item can not be undefined')\n\n this._elements[(this._head = (this._head - 1) & (this._capacity - 1))] = item\n\n if (this._head === this._tail) {\n this._resize()\n }\n\n if (this.length > this.maxLength) {\n this.popBack()\n }\n }\n\n popFront(): T | undefined {\n const h = this._head\n const res = this._elements[h]\n if (res === undefined) return undefined\n\n this._elements[h] = undefined\n this._head = (h + 1) & (this._capacity - 1)\n\n return res\n }\n\n popBack(): T | undefined {\n const t = (this._tail - 1) & (this._capacity - 1)\n const res = this._elements[t]\n if (res === undefined) return undefined\n\n this._elements[t] = undefined\n this._tail = t\n\n return res\n }\n\n peekFront(): T | undefined {\n return this._elements[this._head]\n }\n\n peekBack(): T | undefined {\n return this._elements[(this._tail - 1) & (this._capacity - 1)]\n }\n\n get length(): number {\n return (this._tail - this._head) & (this._capacity - 1)\n }\n\n toArray(): T[] {\n const sz = this.length\n if (sz === 0) return []\n\n const arr = new Array(sz)\n\n if (this._head < this._tail) {\n // copy as-is, head to tail\n arraycopy(this._elements, this._head, arr, 0, sz)\n } else {\n const headPortion = this._capacity - this._head\n\n // copy from head to end\n arraycopy(this._elements, this._head, arr, 0, headPortion)\n // copy from start to tail\n arraycopy(this._elements, 0, arr, headPortion, this._tail)\n }\n\n return arr as T[]\n }\n\n protected _delete(i: number): void {\n const els = this._elements\n const mask = this._capacity - 1\n const h = this._head\n const t = this._tail\n const front = (i - h) & mask\n const back = (t - i) & mask\n\n if (front < back) {\n if (h <= i) {\n arraycopy(els, h, els, h + 1, front)\n } else {\n // wrap\n arraycopy(els, 0, els, 1, i)\n els[0] = els[mask]\n arraycopy(els, h, els, h + 1, mask - h)\n }\n els[h] = undefined\n this._head = (h + 1) & mask\n } else if (i < t) {\n // copy null tail as well\n arraycopy(els, i + 1, els, i, back)\n this._tail = t - 1\n } else {\n // wrap\n arraycopy(els, i + 1, els, i, mask - i)\n els[mask] = els[0]\n arraycopy(els, 1, els, 0, t)\n this._tail = (t - 1) & mask\n }\n }\n\n remove(item: T): void {\n const mask = this._capacity - 1\n let i = this._head\n let val: T | undefined\n\n while ((val = this._elements[i]) !== undefined) {\n if (item === val) {\n this._delete(i)\n\n return\n }\n i = (i + 1) & mask\n }\n }\n\n removeBy(pred: (it: T) => boolean): void {\n const mask = this._capacity - 1\n let i = this._head\n let val: T | undefined\n\n while ((val = this._elements[i]) !== undefined) {\n if (pred(val)) {\n this._delete(i)\n\n return\n }\n i = (i + 1) & mask\n }\n }\n\n at(idx: number): T | undefined {\n return this._elements[(this._head + idx) & (this._capacity - 1)]\n }\n\n *iter(): IterableIterator<T> {\n const sz = this.length\n if (sz === 0) return\n\n if (this._head < this._tail) {\n // head to tail\n for (let i = 0; i < sz; i++) {\n yield this._elements[this._head + i]!\n }\n } else {\n const headPortion = this._capacity - this._head\n\n // head to end\n for (let i = 0; i < headPortion; i++) {\n yield this._elements[this._head + i]!\n }\n // start to tail\n for (let i = 0; i < this._tail; i++) {\n yield this._elements[i]!\n }\n }\n }\n\n clear(): void {\n this._elements = new Array<T | undefined>(this._capacity)\n this._head = this._tail = 0\n }\n}\n"]}
1
+ {"version":3,"file":"deque.js","sourceRoot":"","sources":["../../../src/utils/deque.ts"],"names":[],"mappings":"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","sourcesContent":["// ^^ because of performance reasons\nconst MIN_INITIAL_CAPACITY = 8\n\n// System.arraycopy from java\nfunction arraycopy<T>(src: T[], srcPos: number, dest: T[], destPos: number, length: number) {\n for (let i = 0; i < length; i++) {\n dest[destPos + i] = src[srcPos + i]\n }\n}\n\n/**\n * Deque implementation.\n * `undefined` values are not allowed\n *\n * Based on Java implementation\n */\nexport class Deque<T> {\n // another implementation variant would be to use\n // blocks of fixed size instead of a single array\n // to avoid copying stuff around\n protected _elements: (T | undefined)[]\n protected _head = 0\n protected _tail = 0\n protected _capacity: number\n\n constructor(\n readonly maxLength = Infinity,\n minCapacity = maxLength === Infinity ? MIN_INITIAL_CAPACITY : maxLength,\n ) {\n let capacity = minCapacity\n\n if (capacity < MIN_INITIAL_CAPACITY) {\n capacity = MIN_INITIAL_CAPACITY\n }\n if (capacity !== MIN_INITIAL_CAPACITY) {\n // Find the best power of two to hold elements.\n capacity |= capacity >>> 1\n capacity |= capacity >>> 2\n capacity |= capacity >>> 4\n capacity |= capacity >>> 8\n capacity |= capacity >>> 16\n capacity += 1\n\n if (capacity < 0) {\n // too many\n capacity >>>= 1\n }\n }\n\n this._elements = new Array<T | undefined>(capacity)\n this._capacity = capacity\n }\n\n protected _resize() {\n const p = this._head\n const n = this._capacity\n const r = n - p // number of elements to the right of the head\n\n const newCapacity = n << 1\n if (newCapacity < 0) throw new Error('Deque is too big')\n\n const arr = new Array<T | undefined>(newCapacity)\n\n // copy items to the new array\n // copy head till the end of arr\n arraycopy(this._elements, p, arr, 0, r)\n // copy from start to tail\n arraycopy(this._elements, 0, arr, r, p)\n\n this._elements = arr\n this._head = 0\n this._tail = n\n this._capacity = newCapacity\n }\n\n pushBack(item: T): void {\n if (item === undefined) throw new Error('item can not be undefined')\n\n this._elements[this._tail] = item\n\n if ((this._tail = (this._tail + 1) & (this._capacity - 1)) === this._head) {\n this._resize()\n }\n\n if (this.length > this.maxLength) {\n this.popFront()\n }\n }\n\n pushFront(item: T): void {\n if (item === undefined) throw new Error('item can not be undefined')\n\n this._elements[(this._head = (this._head - 1) & (this._capacity - 1))] = item\n\n if (this._head === this._tail) {\n this._resize()\n }\n\n if (this.length > this.maxLength) {\n this.popBack()\n }\n }\n\n popFront(): T | undefined {\n const h = this._head\n const res = this._elements[h]\n if (res === undefined) return undefined\n\n this._elements[h] = undefined\n this._head = (h + 1) & (this._capacity - 1)\n\n return res\n }\n\n popBack(): T | undefined {\n const t = (this._tail - 1) & (this._capacity - 1)\n const res = this._elements[t]\n if (res === undefined) return undefined\n\n this._elements[t] = undefined\n this._tail = t\n\n return res\n }\n\n peekFront(): T | undefined {\n return this._elements[this._head]\n }\n\n peekBack(): T | undefined {\n return this._elements[(this._tail - 1) & (this._capacity - 1)]\n }\n\n get length(): number {\n return (this._tail - this._head) & (this._capacity - 1)\n }\n\n toArray(): T[] {\n const sz = this.length\n if (sz === 0) return []\n\n const arr = new Array(sz)\n\n if (this._head < this._tail) {\n // copy as-is, head to tail\n arraycopy(this._elements, this._head, arr, 0, sz)\n } else {\n const headPortion = this._capacity - this._head\n\n // copy from head to end\n arraycopy(this._elements, this._head, arr, 0, headPortion)\n // copy from start to tail\n arraycopy(this._elements, 0, arr, headPortion, this._tail)\n }\n\n return arr as T[]\n }\n\n protected _delete(i: number): void {\n const els = this._elements\n const mask = this._capacity - 1\n const h = this._head\n const t = this._tail\n const front = (i - h) & mask\n const back = (t - i) & mask\n\n if (front < back) {\n if (h <= i) {\n arraycopy(els, h, els, h + 1, front)\n } else {\n // wrap\n arraycopy(els, 0, els, 1, i)\n els[0] = els[mask]\n arraycopy(els, h, els, h + 1, mask - h)\n }\n els[h] = undefined\n this._head = (h + 1) & mask\n } else if (i < t) {\n // copy null tail as well\n arraycopy(els, i + 1, els, i, back)\n this._tail = t - 1\n } else {\n // wrap\n arraycopy(els, i + 1, els, i, mask - i)\n els[mask] = els[0]\n arraycopy(els, 1, els, 0, t)\n this._tail = (t - 1) & mask\n }\n }\n\n remove(item: T): void {\n const mask = this._capacity - 1\n let i = this._head\n let val: T | undefined\n\n while ((val = this._elements[i]) !== undefined) {\n if (item === val) {\n this._delete(i)\n\n return\n }\n i = (i + 1) & mask\n }\n }\n\n removeBy(pred: (it: T) => boolean): void {\n const mask = this._capacity - 1\n let i = this._head\n let val: T | undefined\n\n while ((val = this._elements[i]) !== undefined) {\n if (pred(val)) {\n this._delete(i)\n\n return\n }\n i = (i + 1) & mask\n }\n }\n\n at(idx: number): T | undefined {\n return this._elements[(this._head + idx) & (this._capacity - 1)]\n }\n\n *iter(): IterableIterator<T> {\n const sz = this.length\n if (sz === 0) return\n\n if (this._head < this._tail) {\n // head to tail\n for (let i = 0; i < sz; i++) {\n yield this._elements[this._head + i]!\n }\n } else {\n const headPortion = this._capacity - this._head\n\n // head to end\n for (let i = 0; i < headPortion; i++) {\n yield this._elements[this._head + i]!\n }\n // start to tail\n for (let i = 0; i < this._tail; i++) {\n yield this._elements[i]!\n }\n }\n }\n\n clear(): void {\n this._elements = new Array<T | undefined>(this._capacity)\n this._head = this._tail = 0\n }\n}\n"]}
@@ -6,8 +6,11 @@ exports.EarlyTimer = void 0;
6
6
  * to earlier time
7
7
  */
8
8
  class EarlyTimer {
9
+ _timeout;
10
+ _immediate;
11
+ _timeoutTs;
12
+ _handler = () => { };
9
13
  constructor() {
10
- this._handler = () => { };
11
14
  this.emitNow = this.emitNow.bind(this);
12
15
  }
13
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"early-timer.js","sourceRoot":"","sources":["../../../src/utils/early-timer.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,UAAU;IAOnB;QAFQ,aAAQ,GAAe,GAAG,EAAE,GAAE,CAAC,CAAA;QAGnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,YAAY;QACR,IAAI,IAAI,CAAC,UAAU;YAAE,OAAM;QAE3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACrC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC/C;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;SAC9C;IACL,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,EAAU;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACzD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;SACvB;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;SAC9B;aAAM;YACH,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC9B;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAmB;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IAC3B,CAAC;CACJ;AA/ED,gCA+EC","sourcesContent":["/**\n * Wrapper over JS timers that allows re-scheduling them\n * to earlier time\n */\nexport class EarlyTimer {\n private _timeout?: NodeJS.Timeout\n private _immediate?: NodeJS.Immediate\n private _timeoutTs?: number\n\n private _handler: () => void = () => {}\n\n constructor() {\n this.emitNow = this.emitNow.bind(this)\n }\n\n /**\n * Emit the timer when the event loop is idle\n * (basically `setImmediate()`)\n */\n emitWhenIdle(): void {\n if (this._immediate) return\n\n clearTimeout(this._timeout)\n this._timeoutTs = Date.now()\n\n if (typeof setImmediate !== 'undefined') {\n this._immediate = setImmediate(this.emitNow)\n } else {\n this._timeout = setTimeout(this.emitNow, 0)\n }\n }\n\n /**\n * Emit the timer before the next given milliseconds\n *\n * Shorthand for `emitBefore(Date.now() + ms)`\n *\n * @param ms Milliseconds to schedule for\n */\n emitBeforeNext(ms: number): void {\n return this.emitBefore(Date.now() + ms)\n }\n\n /**\n * Emit the timer before the given time\n *\n * @param ts Unix time in MS\n */\n emitBefore(ts: number): void {\n if (!this._timeoutTs || ts < this._timeoutTs) {\n this.reset()\n this._timeout = setTimeout(this.emitNow, ts - Date.now())\n this._timeoutTs = ts\n }\n }\n\n /**\n * Emit the timer right now\n */\n emitNow(): void {\n this.reset()\n this._handler()\n }\n\n /**\n * Cancel the timer\n */\n reset(): void {\n if (this._immediate) {\n clearImmediate(this._immediate)\n this._immediate = undefined\n } else {\n clearTimeout(this._timeout)\n }\n this._timeoutTs = undefined\n }\n\n /**\n * Set timeout handler\n */\n onTimeout(handler: () => void): void {\n this._handler = handler\n }\n}\n"]}
1
+ {"version":3,"file":"early-timer.js","sourceRoot":"","sources":["../../../src/utils/early-timer.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,UAAU;IACX,QAAQ,CAAiB;IACzB,UAAU,CAAmB;IAC7B,UAAU,CAAS;IAEnB,QAAQ,GAAe,GAAG,EAAE,GAAE,CAAC,CAAA;IAEvC;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,YAAY;QACR,IAAI,IAAI,CAAC,UAAU;YAAE,OAAM;QAE3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC/C,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,EAAU;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACzD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACxB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC/B,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAmB;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IAC3B,CAAC;CACJ;AA/ED,gCA+EC","sourcesContent":["/**\n * Wrapper over JS timers that allows re-scheduling them\n * to earlier time\n */\nexport class EarlyTimer {\n private _timeout?: NodeJS.Timeout\n private _immediate?: NodeJS.Immediate\n private _timeoutTs?: number\n\n private _handler: () => void = () => {}\n\n constructor() {\n this.emitNow = this.emitNow.bind(this)\n }\n\n /**\n * Emit the timer when the event loop is idle\n * (basically `setImmediate()`)\n */\n emitWhenIdle(): void {\n if (this._immediate) return\n\n clearTimeout(this._timeout)\n this._timeoutTs = Date.now()\n\n if (typeof setImmediate !== 'undefined') {\n this._immediate = setImmediate(this.emitNow)\n } else {\n this._timeout = setTimeout(this.emitNow, 0)\n }\n }\n\n /**\n * Emit the timer before the next given milliseconds\n *\n * Shorthand for `emitBefore(Date.now() + ms)`\n *\n * @param ms Milliseconds to schedule for\n */\n emitBeforeNext(ms: number): void {\n return this.emitBefore(Date.now() + ms)\n }\n\n /**\n * Emit the timer before the given time\n *\n * @param ts Unix time in MS\n */\n emitBefore(ts: number): void {\n if (!this._timeoutTs || ts < this._timeoutTs) {\n this.reset()\n this._timeout = setTimeout(this.emitNow, ts - Date.now())\n this._timeoutTs = ts\n }\n }\n\n /**\n * Emit the timer right now\n */\n emitNow(): void {\n this.reset()\n this._handler()\n }\n\n /**\n * Cancel the timer\n */\n reset(): void {\n if (this._immediate) {\n clearImmediate(this._immediate)\n this._immediate = undefined\n } else {\n clearTimeout(this._timeout)\n }\n this._timeoutTs = undefined\n }\n\n /**\n * Set timeout handler\n */\n onTimeout(handler: () => void): void {\n this._handler = handler\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"error-reporting.js","sourceRoot":"","sources":["../../../src/utils/error-reporting.ts"],"names":[],"mappings":";;;AAIA,SAAgB,kBAAkB,CAAC,GAAW,EAAE,KAAkB,EAAE,MAAc;IAC9E,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAM;IAEvC,KAAK,CAAC,qCAAqC,KAAK,CAAC,IAAI,WAAW,MAAM,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;SACxF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,IAAI,CAAC,CAAC,EAAE,EAAE;YACN,GAAG,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;SACjF;aAAM;YACH,GAAG,CAAC,IAAI,CACJ,wFAAwF,EACxF,KAAK,CAAC,IAAI,CACb,CAAA;SACJ;IACL,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACV,CAAC;AAlBD,gDAkBC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { Logger } from './logger.js'\n\nexport function reportUnknownError(log: Logger, error: tl.RpcError, method: string): void {\n if (typeof fetch !== 'function') return\n\n fetch(`https://rpc.pwrtelegram.xyz/?code=${error.code}&method=${method}&error=${error.text}`)\n .then((r) => r.json())\n .then((r) => {\n if (r.ok) {\n log.info('telerpc responded with error info for %s: %s', error.text, r.result)\n } else {\n log.info(\n 'Reported error %s to telerpc. You can disable this using `enableErrorReporting: false`',\n error.text,\n )\n }\n })\n .catch((e) => {\n log.debug('failed to report error %s to telerpc: %s', error.text, e)\n })\n}\n"]}
1
+ {"version":3,"file":"error-reporting.js","sourceRoot":"","sources":["../../../src/utils/error-reporting.ts"],"names":[],"mappings":";;;AAIA,SAAgB,kBAAkB,CAAC,GAAW,EAAE,KAAkB,EAAE,MAAc;IAC9E,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAM;IAEvC,KAAK,CAAC,qCAAqC,KAAK,CAAC,IAAI,WAAW,MAAM,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;SACxF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QAClF,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CACJ,wFAAwF,EACxF,KAAK,CAAC,IAAI,CACb,CAAA;QACL,CAAC;IACL,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACV,CAAC;AAlBD,gDAkBC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { Logger } from './logger.js'\n\nexport function reportUnknownError(log: Logger, error: tl.RpcError, method: string): void {\n if (typeof fetch !== 'function') return\n\n fetch(`https://rpc.pwrtelegram.xyz/?code=${error.code}&method=${method}&error=${error.text}`)\n .then((r) => r.json())\n .then((r) => {\n if (r.ok) {\n log.info('telerpc responded with error info for %s: %s', error.text, r.result)\n } else {\n log.info(\n 'Reported error %s to telerpc. You can disable this using `enableErrorReporting: false`',\n error.text,\n )\n }\n })\n .catch((e) => {\n log.debug('failed to report error %s to telerpc: %s', error.text, e)\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"function-utils.js","sourceRoot":"","sources":["../../../src/utils/function-utils.ts"],"names":[],"mappings":";;;AAKA;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAC,IAAgB,EAAE,KAAa;IACpD,IAAI,OAA8B,CAAA;IAElC,MAAM,GAAG,GAAsB;QAC3B,IAAI,OAAO,EAAE;YACT,OAAM;SACT;QAED,MAAM,KAAK,GAAG,GAAG,EAAE;YACf,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,EAAE,CAAA;QACV,CAAC,CAAA;QACD,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC,CAAA;IAED,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE;QACb,IAAI,OAAO,EAAE;YACT,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,OAAO,GAAG,IAAI,CAAA;SACjB;IACL,CAAC,CAAA;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAvBD,4BAuBC;AAED,SAAgB,eAAe,CAA4C,IAAO;IAC9E,IAAI,cAAc,GAAwB,IAAI,CAAA;IAC9C,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,GAAG,GAAG,UAAU,GAAG,IAAW;QAChC,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAEtC,IAAI,cAAc,EAAE;YAChB,OAAO,cAAc,CAAA;SACxB;QAED,iEAAiE;QACjE,cAAc,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC9B,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1B,cAAc,GAAG,IAAI,CAAA;YACrB,QAAQ,GAAG,IAAI,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,OAAO,cAAc,CAAA;IACzB,CAAM,CAAA;IAEN,OAAO;QACH,GAAG;QACH,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;QACxB,IAAI,EAAE,GAAG,EAAE,CAAC,cAAc;QAC1B,KAAK,EAAE,GAAG,EAAE;YACR,QAAQ,GAAG,KAAK,CAAA;QACpB,CAAC;KACJ,CAAA;AACL,CAAC;AA7BD,0CA6BC","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type ThrottledFunction = (() => void) & {\n reset: () => void\n}\n\n/**\n * Throttle a function with a given delay.\n * Similar to lodash.\n *\n * Throttling `F` for a delay of `D` means that\n * `F` will be called no more than 1 time every `D`.\n * In this implementation, `F` is called after `D`\n * has passed since the previous non-throttled invocation\n *\n * @param func Function to throttle\n * @param delay Throttle delay\n */\nexport function throttle(func: () => void, delay: number): ThrottledFunction {\n let timeout: NodeJS.Timeout | null\n\n const res: ThrottledFunction = function () {\n if (timeout) {\n return\n }\n\n const later = () => {\n timeout = null\n func()\n }\n timeout = setTimeout(later, delay)\n }\n\n res.reset = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n }\n\n return res\n}\n\nexport function asyncResettable<T extends(...args: any[]) => Promise<any>>(func: T) {\n let runningPromise: Promise<any> | null = null\n let finished = false\n\n const run = function (...args: any[]) {\n if (finished) return Promise.resolve()\n\n if (runningPromise) {\n return runningPromise\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n runningPromise = func(...args)\n void runningPromise.then(() => {\n runningPromise = null\n finished = true\n })\n\n return runningPromise\n } as T\n\n return {\n run,\n finished: () => finished,\n wait: () => runningPromise,\n reset: () => {\n finished = false\n },\n }\n}\n"]}
1
+ {"version":3,"file":"function-utils.js","sourceRoot":"","sources":["../../../src/utils/function-utils.ts"],"names":[],"mappings":";;;AAKA;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAC,IAAgB,EAAE,KAAa;IACpD,IAAI,OAA8B,CAAA;IAElC,MAAM,GAAG,GAAsB;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,OAAM;QACV,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,EAAE;YACf,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,EAAE,CAAA;QACV,CAAC,CAAA;QACD,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC,CAAA;IAED,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACV,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,OAAO,GAAG,IAAI,CAAA;QAClB,CAAC;IACL,CAAC,CAAA;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAvBD,4BAuBC;AAED,SAAgB,eAAe,CAA4C,IAAO;IAC9E,IAAI,cAAc,GAAwB,IAAI,CAAA;IAC9C,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,GAAG,GAAG,UAAU,GAAG,IAAW;QAChC,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAEtC,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO,cAAc,CAAA;QACzB,CAAC;QAED,iEAAiE;QACjE,cAAc,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC9B,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1B,cAAc,GAAG,IAAI,CAAA;YACrB,QAAQ,GAAG,IAAI,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,OAAO,cAAc,CAAA;IACzB,CAAM,CAAA;IAEN,OAAO;QACH,GAAG;QACH,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;QACxB,IAAI,EAAE,GAAG,EAAE,CAAC,cAAc;QAC1B,KAAK,EAAE,GAAG,EAAE;YACR,QAAQ,GAAG,KAAK,CAAA;QACpB,CAAC;KACJ,CAAA;AACL,CAAC;AA7BD,0CA6BC","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type ThrottledFunction = (() => void) & {\n reset: () => void\n}\n\n/**\n * Throttle a function with a given delay.\n * Similar to lodash.\n *\n * Throttling `F` for a delay of `D` means that\n * `F` will be called no more than 1 time every `D`.\n * In this implementation, `F` is called after `D`\n * has passed since the previous non-throttled invocation\n *\n * @param func Function to throttle\n * @param delay Throttle delay\n */\nexport function throttle(func: () => void, delay: number): ThrottledFunction {\n let timeout: NodeJS.Timeout | null\n\n const res: ThrottledFunction = function () {\n if (timeout) {\n return\n }\n\n const later = () => {\n timeout = null\n func()\n }\n timeout = setTimeout(later, delay)\n }\n\n res.reset = () => {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n }\n\n return res\n}\n\nexport function asyncResettable<T extends(...args: any[]) => Promise<any>>(func: T) {\n let runningPromise: Promise<any> | null = null\n let finished = false\n\n const run = function (...args: any[]) {\n if (finished) return Promise.resolve()\n\n if (runningPromise) {\n return runningPromise\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n runningPromise = func(...args)\n void runningPromise.then(() => {\n runningPromise = null\n finished = true\n })\n\n return runningPromise\n } as T\n\n return {\n run,\n finished: () => finished,\n wait: () => runningPromise,\n reset: () => {\n finished = false\n },\n }\n}\n"]}
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
+ if (typeof globalThis !== 'undefined' && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
3
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true
4
+ console.warn("[@mtcute/core] CommonJS support is deprecated and will be removed soon. Please consider switching to ESM, it's "+(new Date()).getFullYear()+" already.")
5
+ console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c")
6
+ }
7
+ "use strict";
2
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
9
  if (k2 === undefined) k2 = k;
4
10
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -5,9 +5,12 @@ exports.SortedLinkedList = void 0;
5
5
  * A sorted linked list.
6
6
  */
7
7
  class SortedLinkedList {
8
+ comparator;
9
+ _first;
10
+ _last;
11
+ _size = 0;
8
12
  constructor(comparator) {
9
13
  this.comparator = comparator;
10
- this._size = 0;
11
14
  }
12
15
  get length() {
13
16
  return this._size;
@@ -1 +1 @@
1
- {"version":3,"file":"linked-list.js","sourceRoot":"","sources":["../../../src/utils/linked-list.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,gBAAgB;IAKzB,YAAoB,UAAkC;QAAlC,eAAU,GAAV,UAAU,CAAwB;QAFtD,UAAK,GAAG,CAAC,CAAA;IAEgD,CAAC;IAE1D,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,OAAO,CAAC,IAAuB;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;SACvB;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;SACtB;QAED,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAE7B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAElC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAExC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAEf,OAAO,EAAE,CAAC,CAAC,CAAA;IACf,CAAC;IAED,GAAG,CAAC,IAAO;QACP,MAAM,EAAE,GAAsB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;SAChC;aAAM;YACH,IAAI,GAAG,GAAkC,IAAI,CAAC,MAAM,CAAA;YAEpD,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC5C,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;aACd;YAED,IAAI,CAAC,GAAG,EAAE;gBACN,2CAA2C;gBAE3C,IAAI,CAAC,KAAM,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;gBACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;aAClB;iBAAM;gBACH,0DAA0D;gBAC1D,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;gBACV,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBACZ,IAAI,GAAG,CAAC,CAAC;oBAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;gBAEV,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;aAC5C;SACJ;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAClB,CAAC;CACJ;AA1ED,4CA0EC","sourcesContent":["interface LinkedListItem<T> {\n v: T\n n?: LinkedListItem<T>\n p?: LinkedListItem<T>\n}\n\n/**\n * A sorted linked list.\n */\nexport class SortedLinkedList<T> {\n _first?: LinkedListItem<T>\n _last?: LinkedListItem<T>\n _size = 0\n\n constructor(private comparator: (a: T, b: T) => number) {}\n\n get length(): number {\n return this._size\n }\n\n _remove(item: LinkedListItem<T>): void {\n if (this._first === item) {\n this._first = item.n\n }\n\n if (this._last === item) {\n this._last = item.p\n }\n\n if (item.p) item.p.n = item.n\n if (item.n) item.n.p = item.p\n\n this._size -= 1\n }\n\n popFront(): T | undefined {\n if (!this._first) return undefined\n\n const it = this._first\n this._first = this._first.n\n if (!this._first) this._last = undefined\n\n this._size -= 1\n\n return it.v\n }\n\n add(item: T): void {\n const it: LinkedListItem<T> = { v: item }\n\n if (!this._first) {\n this._first = this._last = it\n } else {\n let cur: LinkedListItem<T> | undefined = this._first\n\n while (cur && this.comparator(cur.v, it.v) < 0) {\n cur = cur.n\n }\n\n if (!cur) {\n // reached end, the item should be new last\n\n this._last!.n = it\n it.p = this._last\n this._last = it\n } else {\n // `cur` is the first item greater or equal than the given\n it.n = cur\n it.p = cur.p\n if (cur.p) cur.p.n = it\n cur.p = it\n\n if (cur === this._first) this._first = it\n }\n }\n\n this._size += 1\n }\n\n clear(): void {\n this._first = this._last = undefined\n this._size = 0\n }\n}\n"]}
1
+ {"version":3,"file":"linked-list.js","sourceRoot":"","sources":["../../../src/utils/linked-list.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,gBAAgB;IAKL;IAJpB,MAAM,CAAoB;IAC1B,KAAK,CAAoB;IACzB,KAAK,GAAG,CAAC,CAAA;IAET,YAAoB,UAAkC;QAAlC,eAAU,GAAV,UAAU,CAAwB;IAAG,CAAC;IAE1D,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,OAAO,CAAC,IAAuB;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;QACxB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;QACvB,CAAC;QAED,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAE7B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAElC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAExC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAEf,OAAO,EAAE,CAAC,CAAC,CAAA;IACf,CAAC;IAED,GAAG,CAAC,IAAO;QACP,MAAM,EAAE,GAAsB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACjC,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,GAAkC,IAAI,CAAC,MAAM,CAAA;YAEpD,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;YACf,CAAC;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,2CAA2C;gBAE3C,IAAI,CAAC,KAAM,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;gBACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACJ,0DAA0D;gBAC1D,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;gBACV,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBACZ,IAAI,GAAG,CAAC,CAAC;oBAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;gBAEV,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;YAC7C,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAClB,CAAC;CACJ;AA1ED,4CA0EC","sourcesContent":["interface LinkedListItem<T> {\n v: T\n n?: LinkedListItem<T>\n p?: LinkedListItem<T>\n}\n\n/**\n * A sorted linked list.\n */\nexport class SortedLinkedList<T> {\n _first?: LinkedListItem<T>\n _last?: LinkedListItem<T>\n _size = 0\n\n constructor(private comparator: (a: T, b: T) => number) {}\n\n get length(): number {\n return this._size\n }\n\n _remove(item: LinkedListItem<T>): void {\n if (this._first === item) {\n this._first = item.n\n }\n\n if (this._last === item) {\n this._last = item.p\n }\n\n if (item.p) item.p.n = item.n\n if (item.n) item.n.p = item.p\n\n this._size -= 1\n }\n\n popFront(): T | undefined {\n if (!this._first) return undefined\n\n const it = this._first\n this._first = this._first.n\n if (!this._first) this._last = undefined\n\n this._size -= 1\n\n return it.v\n }\n\n add(item: T): void {\n const it: LinkedListItem<T> = { v: item }\n\n if (!this._first) {\n this._first = this._last = it\n } else {\n let cur: LinkedListItem<T> | undefined = this._first\n\n while (cur && this.comparator(cur.v, it.v) < 0) {\n cur = cur.n\n }\n\n if (!cur) {\n // reached end, the item should be new last\n\n this._last!.n = it\n it.p = this._last\n this._last = it\n } else {\n // `cur` is the first item greater or equal than the given\n it.n = cur\n it.p = cur.p\n if (cur.p) cur.p.n = it\n cur.p = it\n\n if (cur === this._first) this._first = it\n }\n }\n\n this._size += 1\n }\n\n clear(): void {\n this._first = this._last = undefined\n this._size = 0\n }\n}\n"]}