@mtcute/core 0.10.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/highlevel/base.d.ts +1 -1
- package/cjs/highlevel/base.js +29 -23
- package/cjs/highlevel/base.js.map +1 -1
- package/cjs/highlevel/client.d.ts +3 -2
- package/cjs/highlevel/client.js +1 -0
- package/cjs/highlevel/client.js.map +1 -1
- package/cjs/highlevel/managers/app-config-manager.js +7 -5
- package/cjs/highlevel/managers/app-config-manager.js.map +1 -1
- package/cjs/highlevel/methods/_init.js.map +1 -1
- package/cjs/highlevel/methods/auth/start-test.js.map +1 -1
- package/cjs/highlevel/methods/auth/start.js.map +1 -1
- package/cjs/highlevel/methods/auth/utils.js.map +1 -1
- package/cjs/highlevel/methods/bots/get-callback-answer.js.map +1 -1
- package/cjs/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
- package/cjs/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
- package/cjs/highlevel/methods/bots/set-my-commands.js.map +1 -1
- package/cjs/highlevel/methods/chats/add-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/ban-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/batched-queries.js.map +1 -1
- package/cjs/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
- package/cjs/highlevel/methods/chats/delete-history.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-preview.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-full-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-similar-channels.js.map +1 -1
- package/cjs/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
- package/cjs/highlevel/methods/chats/iter-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/join-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/kick-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/leave-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/reorder-usernames.js.map +1 -1
- package/cjs/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/save-draft.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-color.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-photo.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-title.js.map +1 -1
- package/cjs/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
- package/cjs/highlevel/methods/chats/unarchive-chats.js.map +1 -1
- package/cjs/highlevel/methods/chats/unban-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/contacts/delete-contacts.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/create-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/edit-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/find-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/get-folders.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/cjs/highlevel/methods/files/download-buffer.js.map +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
- package/cjs/highlevel/methods/files/download-node-stream.js.map +1 -1
- package/cjs/highlevel/methods/files/download-stream.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-input-file.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-input-media.js +1 -2
- package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
- package/cjs/highlevel/methods/files/upload-file.js +7 -6
- package/cjs/highlevel/methods/files/upload-file.js.map +1 -1
- package/cjs/highlevel/methods/files/upload-media.js.map +1 -1
- package/cjs/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
- package/cjs/highlevel/methods/messages/close-poll.js.map +1 -1
- package/cjs/highlevel/methods/messages/delete-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/edit-inline-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/edit-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/cjs/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-discussion-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-history.js +5 -1
- package/cjs/highlevel/methods/messages/get-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-by-link.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-reply-to.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-search-global.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-search-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/read-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-answer.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-comment.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-copy-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-copy.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-quote.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-typing.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-vote.js.map +1 -1
- package/cjs/highlevel/methods/messages/translate-text.js.map +1 -1
- package/cjs/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-text.js.map +1 -1
- package/cjs/highlevel/methods/misc/with-params.js.map +1 -1
- package/cjs/highlevel/methods/password/change-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/password/enable-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/password/remove-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/premium/can-apply-boost.js.map +1 -1
- package/cjs/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/cjs/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
- package/cjs/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/cjs/highlevel/methods/stories/can-send-story.js.map +1 -1
- package/cjs/highlevel/methods/stories/edit-story.js.map +1 -1
- package/cjs/highlevel/methods/stories/find-in-update.js.map +1 -1
- package/cjs/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-all-stories.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
- package/cjs/highlevel/methods/stories/send-story.js.map +1 -1
- package/cjs/highlevel/methods/users/delete-profile-photos.js.map +1 -1
- package/cjs/highlevel/methods/users/get-users.js.map +1 -1
- package/cjs/highlevel/methods/users/iter-profile-photos.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/cjs/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
- package/cjs/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
- package/cjs/highlevel/storage/service/current-user.js +2 -0
- package/cjs/highlevel/storage/service/current-user.js.map +1 -1
- package/cjs/highlevel/storage/service/peers.js +5 -1
- package/cjs/highlevel/storage/service/peers.js.map +1 -1
- package/cjs/highlevel/storage/service/ref-messages.js +3 -0
- package/cjs/highlevel/storage/service/ref-messages.js.map +1 -1
- package/cjs/highlevel/storage/service/updates.js +1 -0
- package/cjs/highlevel/storage/service/updates.js.map +1 -1
- package/cjs/highlevel/storage/storage.d.ts +1 -1
- package/cjs/highlevel/storage/storage.js +17 -4
- package/cjs/highlevel/storage/storage.js.map +1 -1
- package/cjs/highlevel/types/auth/sent-code.js +1 -0
- package/cjs/highlevel/types/auth/sent-code.js.map +1 -1
- package/cjs/highlevel/types/bots/game-high-score.js +2 -0
- package/cjs/highlevel/types/bots/game-high-score.js.map +1 -1
- package/cjs/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/cjs/highlevel/types/bots/inline-result/factories.js.map +1 -1
- package/cjs/highlevel/types/bots/keyboards/builder.js +2 -1
- package/cjs/highlevel/types/bots/keyboards/builder.js.map +1 -1
- package/cjs/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/cjs/highlevel/types/calls/discard-reason.js.map +1 -1
- package/cjs/highlevel/types/conversation.js +13 -7
- package/cjs/highlevel/types/conversation.js.map +1 -1
- package/cjs/highlevel/types/errors.js +3 -0
- package/cjs/highlevel/types/errors.js.map +1 -1
- package/cjs/highlevel/types/files/file-location.js +3 -0
- package/cjs/highlevel/types/files/file-location.js.map +1 -1
- package/cjs/highlevel/types/files/uploaded-file.js +1 -1
- package/cjs/highlevel/types/files/uploaded-file.js.map +1 -1
- package/cjs/highlevel/types/files/utils.d.ts +3 -3
- package/cjs/highlevel/types/files/utils.js.map +1 -1
- package/cjs/highlevel/types/files/web-document.js +1 -0
- package/cjs/highlevel/types/files/web-document.js.map +1 -1
- package/cjs/highlevel/types/media/audio.js +3 -2
- package/cjs/highlevel/types/media/audio.js.map +1 -1
- package/cjs/highlevel/types/media/contact.js +2 -1
- package/cjs/highlevel/types/media/contact.js.map +1 -1
- package/cjs/highlevel/types/media/dice.js +125 -124
- package/cjs/highlevel/types/media/dice.js.map +1 -1
- package/cjs/highlevel/types/media/document-utils.js.map +1 -1
- package/cjs/highlevel/types/media/document.js +2 -4
- package/cjs/highlevel/types/media/document.js.map +1 -1
- package/cjs/highlevel/types/media/game.js +2 -1
- package/cjs/highlevel/types/media/game.js.map +1 -1
- package/cjs/highlevel/types/media/invoice.js +4 -1
- package/cjs/highlevel/types/media/invoice.js.map +1 -1
- package/cjs/highlevel/types/media/location.js +4 -5
- package/cjs/highlevel/types/media/location.js.map +1 -1
- package/cjs/highlevel/types/media/photo.js +8 -1
- package/cjs/highlevel/types/media/photo.js.map +1 -1
- package/cjs/highlevel/types/media/poll.js +4 -1
- package/cjs/highlevel/types/media/poll.js.map +1 -1
- package/cjs/highlevel/types/media/sticker.js +3 -1
- package/cjs/highlevel/types/media/sticker.js.map +1 -1
- package/cjs/highlevel/types/media/story.js +3 -1
- package/cjs/highlevel/types/media/story.js.map +1 -1
- package/cjs/highlevel/types/media/thumbnail.js +35 -22
- package/cjs/highlevel/types/media/thumbnail.js.map +1 -1
- package/cjs/highlevel/types/media/venue.js +2 -1
- package/cjs/highlevel/types/media/venue.js.map +1 -1
- package/cjs/highlevel/types/media/video.js +3 -1
- package/cjs/highlevel/types/media/video.js.map +1 -1
- package/cjs/highlevel/types/media/voice.js +2 -1
- package/cjs/highlevel/types/media/voice.js.map +1 -1
- package/cjs/highlevel/types/media/web-page.js +2 -1
- package/cjs/highlevel/types/media/web-page.js.map +1 -1
- package/cjs/highlevel/types/messages/dialog.js +3 -0
- package/cjs/highlevel/types/messages/dialog.js.map +1 -1
- package/cjs/highlevel/types/messages/draft-message.js +1 -0
- package/cjs/highlevel/types/messages/draft-message.js.map +1 -1
- package/cjs/highlevel/types/messages/message-action.js.map +1 -1
- package/cjs/highlevel/types/messages/message-entity.js +2 -0
- package/cjs/highlevel/types/messages/message-entity.js.map +1 -1
- package/cjs/highlevel/types/messages/message-forward.js +2 -0
- package/cjs/highlevel/types/messages/message-forward.js.map +1 -1
- package/cjs/highlevel/types/messages/message-media.js.map +1 -1
- package/cjs/highlevel/types/messages/message-reactions.js +4 -0
- package/cjs/highlevel/types/messages/message-reactions.js.map +1 -1
- package/cjs/highlevel/types/messages/message-replies.js +2 -0
- package/cjs/highlevel/types/messages/message-replies.js.map +1 -1
- package/cjs/highlevel/types/messages/message.js +6 -0
- package/cjs/highlevel/types/messages/message.js.map +1 -1
- package/cjs/highlevel/types/messages/replied-message.js +2 -0
- package/cjs/highlevel/types/messages/replied-message.js.map +1 -1
- package/cjs/highlevel/types/misc/sticker-set.js +7 -1
- package/cjs/highlevel/types/misc/sticker-set.js.map +1 -1
- package/cjs/highlevel/types/misc/takeout-session.js +5 -0
- package/cjs/highlevel/types/misc/takeout-session.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-colors.js +2 -0
- package/cjs/highlevel/types/peers/chat-colors.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/filters.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/index.js +2 -0
- package/cjs/highlevel/types/peers/chat-event/index.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-invite-link-member.js +2 -0
- package/cjs/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-invite-link.js +2 -0
- package/cjs/highlevel/types/peers/chat-invite-link.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-location.js +1 -0
- package/cjs/highlevel/types/peers/chat-location.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-member.js +2 -0
- package/cjs/highlevel/types/peers/chat-member.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-permissions.js +1 -0
- package/cjs/highlevel/types/peers/chat-permissions.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-photo.js +5 -0
- package/cjs/highlevel/types/peers/chat-photo.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-preview.js +2 -0
- package/cjs/highlevel/types/peers/chat-preview.js.map +1 -1
- package/cjs/highlevel/types/peers/chat.js +12 -1
- package/cjs/highlevel/types/peers/chat.js.map +1 -1
- package/cjs/highlevel/types/peers/forum-topic.js +9 -6
- package/cjs/highlevel/types/peers/forum-topic.js.map +1 -1
- package/cjs/highlevel/types/peers/peer.js.map +1 -1
- package/cjs/highlevel/types/peers/peers-index.js +3 -1
- package/cjs/highlevel/types/peers/peers-index.js.map +1 -1
- package/cjs/highlevel/types/peers/user.js +5 -1
- package/cjs/highlevel/types/peers/user.js.map +1 -1
- package/cjs/highlevel/types/premium/boost-slot.js +2 -0
- package/cjs/highlevel/types/premium/boost-slot.js.map +1 -1
- package/cjs/highlevel/types/premium/boost-stats.js +1 -0
- package/cjs/highlevel/types/premium/boost-stats.js.map +1 -1
- package/cjs/highlevel/types/premium/boost.js +2 -0
- package/cjs/highlevel/types/premium/boost.js.map +1 -1
- package/cjs/highlevel/types/reactions/emoji-status.js +1 -0
- package/cjs/highlevel/types/reactions/emoji-status.js.map +1 -1
- package/cjs/highlevel/types/reactions/peer-reaction.js +2 -0
- package/cjs/highlevel/types/reactions/peer-reaction.js.map +1 -1
- package/cjs/highlevel/types/reactions/reaction-count.js +1 -0
- package/cjs/highlevel/types/reactions/reaction-count.js.map +1 -1
- package/cjs/highlevel/types/reactions/types.js.map +1 -1
- package/cjs/highlevel/types/stories/all-stories.d.ts +2 -2
- package/cjs/highlevel/types/stories/all-stories.js +3 -1
- package/cjs/highlevel/types/stories/all-stories.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/base.js +1 -0
- package/cjs/highlevel/types/stories/interactive/base.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/channel-post.js +3 -1
- package/cjs/highlevel/types/stories/interactive/channel-post.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/input.js +1 -0
- package/cjs/highlevel/types/stories/interactive/input.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/location.js +2 -1
- package/cjs/highlevel/types/stories/interactive/location.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/reaction.js +2 -1
- package/cjs/highlevel/types/stories/interactive/reaction.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/venue.js +2 -1
- package/cjs/highlevel/types/stories/interactive/venue.js.map +1 -1
- package/cjs/highlevel/types/stories/peer-stories.js +2 -0
- package/cjs/highlevel/types/stories/peer-stories.js.map +1 -1
- package/cjs/highlevel/types/stories/stealth-mode.js +1 -0
- package/cjs/highlevel/types/stories/stealth-mode.js.map +1 -1
- package/cjs/highlevel/types/stories/story-interactions.js +2 -0
- package/cjs/highlevel/types/stories/story-interactions.js.map +1 -1
- package/cjs/highlevel/types/stories/story-viewer.d.ts +1 -1
- package/cjs/highlevel/types/stories/story-viewer.js +6 -0
- package/cjs/highlevel/types/stories/story-viewer.js.map +1 -1
- package/cjs/highlevel/types/stories/story.js +2 -0
- package/cjs/highlevel/types/stories/story.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-chat-join-request.js +2 -0
- package/cjs/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-reaction.js +4 -0
- package/cjs/highlevel/types/updates/bot-reaction.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-stopped.js +2 -0
- package/cjs/highlevel/types/updates/bot-stopped.js.map +1 -1
- package/cjs/highlevel/types/updates/callback-query.js +4 -0
- package/cjs/highlevel/types/updates/callback-query.js.map +1 -1
- package/cjs/highlevel/types/updates/chat-join-request.js +2 -0
- package/cjs/highlevel/types/updates/chat-join-request.js.map +1 -1
- package/cjs/highlevel/types/updates/chat-member-update.js +2 -0
- package/cjs/highlevel/types/updates/chat-member-update.js.map +1 -1
- package/cjs/highlevel/types/updates/chosen-inline-result.js +2 -0
- package/cjs/highlevel/types/updates/chosen-inline-result.js.map +1 -1
- package/cjs/highlevel/types/updates/delete-message-update.js +1 -0
- package/cjs/highlevel/types/updates/delete-message-update.js.map +1 -1
- package/cjs/highlevel/types/updates/delete-story-update.js +2 -0
- package/cjs/highlevel/types/updates/delete-story-update.js.map +1 -1
- package/cjs/highlevel/types/updates/history-read-update.js +1 -0
- package/cjs/highlevel/types/updates/history-read-update.js.map +1 -1
- package/cjs/highlevel/types/updates/inline-query.js +2 -0
- package/cjs/highlevel/types/updates/inline-query.js.map +1 -1
- package/cjs/highlevel/types/updates/parse-update.js.map +1 -1
- package/cjs/highlevel/types/updates/poll-update.js +2 -0
- package/cjs/highlevel/types/updates/poll-update.js.map +1 -1
- package/cjs/highlevel/types/updates/poll-vote.js +2 -0
- package/cjs/highlevel/types/updates/poll-vote.js.map +1 -1
- package/cjs/highlevel/types/updates/pre-checkout-query.js +2 -0
- package/cjs/highlevel/types/updates/pre-checkout-query.js.map +1 -1
- package/cjs/highlevel/types/updates/story-update.js +2 -0
- package/cjs/highlevel/types/updates/story-update.js.map +1 -1
- package/cjs/highlevel/types/updates/user-status-update.js +1 -0
- package/cjs/highlevel/types/updates/user-status-update.js.map +1 -1
- package/cjs/highlevel/types/updates/user-typing-update.js +1 -0
- package/cjs/highlevel/types/updates/user-typing-update.js.map +1 -1
- package/cjs/highlevel/updates/manager.d.ts +1 -1
- package/cjs/highlevel/updates/manager.js +50 -28
- package/cjs/highlevel/updates/manager.js.map +1 -1
- package/cjs/highlevel/updates/parsed.js.map +1 -1
- package/cjs/highlevel/updates/utils.js.map +1 -1
- package/cjs/highlevel/utils/convert-file-id.js.map +1 -1
- package/cjs/highlevel/utils/entities.js.map +1 -1
- package/cjs/highlevel/utils/file-type.d.ts +1 -0
- package/cjs/highlevel/utils/file-type.js +35 -1
- package/cjs/highlevel/utils/file-type.js.map +1 -1
- package/cjs/highlevel/utils/file-utils.js +1 -1
- package/cjs/highlevel/utils/file-utils.js.map +1 -1
- package/cjs/highlevel/utils/inline-utils.js.map +1 -1
- package/cjs/highlevel/utils/inspectable.js.map +1 -1
- package/cjs/highlevel/utils/memoize.js.map +1 -1
- package/cjs/highlevel/utils/peer-utils.js.map +1 -1
- package/cjs/highlevel/utils/query-batcher.js.map +1 -1
- package/cjs/highlevel/utils/rps-meter.js +3 -0
- package/cjs/highlevel/utils/rps-meter.js.map +1 -1
- package/cjs/highlevel/utils/stream-utils.js.map +1 -1
- package/cjs/highlevel/utils/string-session.d.ts +1 -2
- package/cjs/highlevel/utils/string-session.js +27 -7
- package/cjs/highlevel/utils/string-session.js.map +1 -1
- package/cjs/highlevel/utils/voice-utils.js.map +1 -1
- package/cjs/highlevel/worker/app-config.d.ts +2 -3
- package/cjs/highlevel/worker/app-config.js +6 -3
- package/cjs/highlevel/worker/app-config.js.map +1 -1
- package/cjs/highlevel/worker/errors.js.map +1 -1
- package/cjs/highlevel/worker/invoker.js +3 -2
- package/cjs/highlevel/worker/invoker.js.map +1 -1
- package/cjs/highlevel/worker/port.d.ts +16 -17
- package/cjs/highlevel/worker/port.js +74 -49
- package/cjs/highlevel/worker/port.js.map +1 -1
- package/cjs/highlevel/worker/protocol.d.ts +2 -2
- package/cjs/highlevel/worker/protocol.js.map +1 -1
- package/cjs/highlevel/worker/storage.d.ts +9 -13
- package/cjs/highlevel/worker/storage.js +34 -19
- package/cjs/highlevel/worker/storage.js.map +1 -1
- package/cjs/highlevel/worker/worker.js +3 -0
- package/cjs/highlevel/worker/worker.js.map +1 -1
- package/cjs/network/auth-key.js +8 -1
- package/cjs/network/auth-key.js.map +1 -1
- package/cjs/network/authorization.js.map +1 -1
- package/cjs/network/client.d.ts +1 -1
- package/cjs/network/client.js +39 -14
- package/cjs/network/client.js.map +1 -1
- package/cjs/network/config-manager.js.map +1 -1
- package/cjs/network/mtproto-session.d.ts +1 -1
- package/cjs/network/mtproto-session.js +40 -30
- package/cjs/network/mtproto-session.js.map +1 -1
- package/cjs/network/multi-session-connection.d.ts +2 -2
- package/cjs/network/multi-session-connection.js +13 -7
- package/cjs/network/multi-session-connection.js.map +1 -1
- package/cjs/network/network-manager.d.ts +2 -3
- package/cjs/network/network-manager.js +49 -28
- package/cjs/network/network-manager.js.map +1 -1
- package/cjs/network/persistent-connection.d.ts +3 -3
- package/cjs/network/persistent-connection.js +33 -22
- package/cjs/network/persistent-connection.js.map +1 -1
- package/cjs/network/server-salt.js +4 -5
- package/cjs/network/server-salt.js.map +1 -1
- package/cjs/network/session-connection.d.ts +1 -1
- package/cjs/network/session-connection.js +22 -12
- package/cjs/network/session-connection.js.map +1 -1
- package/cjs/network/transports/abstract.d.ts +2 -2
- package/cjs/network/transports/abstract.js +1 -0
- package/cjs/network/transports/abstract.js.map +1 -1
- package/cjs/network/transports/intermediate.js +1 -0
- package/cjs/network/transports/intermediate.js.map +1 -1
- package/cjs/network/transports/obfuscated.js +3 -0
- package/cjs/network/transports/obfuscated.js.map +1 -1
- package/cjs/network/transports/streamed.d.ts +1 -1
- package/cjs/network/transports/streamed.js +1 -4
- package/cjs/network/transports/streamed.js.map +1 -1
- package/cjs/network/transports/wrapped.d.ts +1 -1
- package/cjs/network/transports/wrapped.js +2 -0
- package/cjs/network/transports/wrapped.js.map +1 -1
- package/cjs/platform.js.map +1 -1
- package/cjs/storage/driver.js +3 -4
- package/cjs/storage/driver.js.map +1 -1
- package/cjs/storage/memory/driver.js +1 -3
- package/cjs/storage/memory/driver.js.map +1 -1
- package/cjs/storage/memory/index.js +5 -7
- package/cjs/storage/memory/index.js.map +1 -1
- package/cjs/storage/memory/repository/auth-keys.d.ts +1 -1
- package/cjs/storage/memory/repository/auth-keys.js +2 -0
- package/cjs/storage/memory/repository/auth-keys.js.map +1 -1
- package/cjs/storage/memory/repository/kv.d.ts +1 -1
- package/cjs/storage/memory/repository/kv.js +2 -0
- package/cjs/storage/memory/repository/kv.js.map +1 -1
- package/cjs/storage/memory/repository/peers.d.ts +1 -1
- package/cjs/storage/memory/repository/peers.js +2 -0
- package/cjs/storage/memory/repository/peers.js.map +1 -1
- package/cjs/storage/memory/repository/ref-messages.d.ts +1 -1
- package/cjs/storage/memory/repository/ref-messages.js +2 -0
- package/cjs/storage/memory/repository/ref-messages.js.map +1 -1
- package/cjs/storage/service/auth-keys.js +2 -0
- package/cjs/storage/service/auth-keys.js.map +1 -1
- package/cjs/storage/service/base.js +4 -0
- package/cjs/storage/service/base.js.map +1 -1
- package/cjs/storage/service/default-dcs.js +2 -0
- package/cjs/storage/service/default-dcs.js.map +1 -1
- package/cjs/storage/service/future-salts.js +2 -1
- package/cjs/storage/service/future-salts.js.map +1 -1
- package/cjs/storage/sqlite/driver.js +10 -10
- package/cjs/storage/sqlite/driver.js.map +1 -1
- package/cjs/storage/sqlite/index.d.ts +1 -1
- package/cjs/storage/sqlite/index.js +5 -0
- package/cjs/storage/sqlite/index.js.map +1 -1
- package/cjs/storage/sqlite/repository/auth-keys.js +9 -0
- package/cjs/storage/sqlite/repository/auth-keys.js.map +1 -1
- package/cjs/storage/sqlite/repository/kv.js +5 -0
- package/cjs/storage/sqlite/repository/kv.js.map +1 -1
- package/cjs/storage/sqlite/repository/peers.js +6 -0
- package/cjs/storage/sqlite/repository/peers.js.map +1 -1
- package/cjs/storage/sqlite/repository/ref-messages.d.ts +1 -1
- package/cjs/storage/sqlite/repository/ref-messages.js +6 -0
- package/cjs/storage/sqlite/repository/ref-messages.js.map +1 -1
- package/cjs/storage/storage.d.ts +1 -3
- package/cjs/storage/storage.js +21 -13
- package/cjs/storage/storage.js.map +1 -1
- package/cjs/types/errors.js +13 -0
- package/cjs/types/errors.js.map +1 -1
- package/cjs/utils/async-lock.js +1 -3
- package/cjs/utils/async-lock.js.map +1 -1
- package/cjs/utils/bigint-utils.js.map +1 -1
- package/cjs/utils/binary/asn1-parser.js.map +1 -1
- package/cjs/utils/buffer-utils.js.map +1 -1
- package/cjs/utils/condition-variable.js +2 -0
- package/cjs/utils/condition-variable.js.map +1 -1
- package/cjs/utils/crypto/factorization.js.map +1 -1
- package/cjs/utils/crypto/keys.js.map +1 -1
- package/cjs/utils/crypto/miller-rabin.js.map +1 -1
- package/cjs/utils/crypto/password.js.map +1 -1
- package/cjs/utils/crypto/utils.js.map +1 -1
- package/cjs/utils/dcs.js +1 -1
- package/cjs/utils/dcs.js.map +1 -1
- package/cjs/utils/deque.js +8 -2
- package/cjs/utils/deque.js.map +1 -1
- package/cjs/utils/early-timer.js +4 -1
- package/cjs/utils/early-timer.js.map +1 -1
- package/cjs/utils/error-reporting.js.map +1 -1
- package/cjs/utils/function-utils.js.map +1 -1
- package/cjs/utils/linked-list.js +4 -1
- package/cjs/utils/linked-list.js.map +1 -1
- package/cjs/utils/links/bots.js.map +1 -1
- package/cjs/utils/links/chat.js.map +1 -1
- package/cjs/utils/links/common.js.map +1 -1
- package/cjs/utils/links/misc.js.map +1 -1
- package/cjs/utils/logger.d.ts +2 -2
- package/cjs/utils/logger.js +21 -14
- package/cjs/utils/logger.js.map +1 -1
- package/cjs/utils/long-utils.js +2 -6
- package/cjs/utils/long-utils.js.map +1 -1
- package/cjs/utils/lru-map.js +5 -1
- package/cjs/utils/lru-map.js.map +1 -1
- package/cjs/utils/lru-set.js +4 -0
- package/cjs/utils/lru-set.js.map +1 -1
- package/cjs/utils/peer-utils.js.map +1 -1
- package/cjs/utils/reloadable.d.ts +1 -1
- package/cjs/utils/reloadable.js +10 -7
- package/cjs/utils/reloadable.js.map +1 -1
- package/cjs/utils/sorted-array.js +2 -0
- package/cjs/utils/sorted-array.js.map +1 -1
- package/cjs/utils/tl-json.js.map +1 -1
- package/cjs/utils/type-assertions.js.map +1 -1
- package/esm/highlevel/base.d.ts +1 -1
- package/esm/highlevel/base.js +29 -23
- package/esm/highlevel/base.js.map +1 -1
- package/esm/highlevel/client.d.ts +2 -1
- package/esm/highlevel/client.js +1 -0
- package/esm/highlevel/client.js.map +1 -1
- package/esm/highlevel/managers/app-config-manager.js +7 -5
- package/esm/highlevel/managers/app-config-manager.js.map +1 -1
- package/esm/highlevel/methods/_init.js.map +1 -1
- package/esm/highlevel/methods/auth/start-test.js.map +1 -1
- package/esm/highlevel/methods/auth/start.js.map +1 -1
- package/esm/highlevel/methods/auth/utils.js.map +1 -1
- package/esm/highlevel/methods/bots/get-callback-answer.js.map +1 -1
- package/esm/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
- package/esm/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
- package/esm/highlevel/methods/bots/set-my-commands.js.map +1 -1
- package/esm/highlevel/methods/chats/add-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/ban-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/batched-queries.js.map +1 -1
- package/esm/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
- package/esm/highlevel/methods/chats/delete-history.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-preview.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/get-full-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/esm/highlevel/methods/chats/get-similar-channels.js.map +1 -1
- package/esm/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
- package/esm/highlevel/methods/chats/iter-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/join-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/kick-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/leave-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/reorder-usernames.js.map +1 -1
- package/esm/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/save-draft.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-color.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-photo.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-title.js.map +1 -1
- package/esm/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
- package/esm/highlevel/methods/chats/unarchive-chats.js.map +1 -1
- package/esm/highlevel/methods/chats/unban-chat-member.js.map +1 -1
- package/esm/highlevel/methods/contacts/delete-contacts.js.map +1 -1
- package/esm/highlevel/methods/dialogs/create-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/edit-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/find-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/get-folders.js.map +1 -1
- package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/esm/highlevel/methods/files/download-buffer.js.map +1 -1
- package/esm/highlevel/methods/files/download-iterable.js +1 -1
- package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
- package/esm/highlevel/methods/files/download-node-stream.js.map +1 -1
- package/esm/highlevel/methods/files/download-stream.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-input-file.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-input-media.js +1 -2
- package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
- package/esm/highlevel/methods/files/upload-file.js +8 -7
- package/esm/highlevel/methods/files/upload-file.js.map +1 -1
- package/esm/highlevel/methods/files/upload-media.js.map +1 -1
- package/esm/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
- package/esm/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
- package/esm/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
- package/esm/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
- package/esm/highlevel/methods/messages/close-poll.js.map +1 -1
- package/esm/highlevel/methods/messages/delete-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/edit-inline-message.js.map +1 -1
- package/esm/highlevel/methods/messages/edit-message.js.map +1 -1
- package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/esm/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/esm/highlevel/methods/messages/get-discussion-message.js.map +1 -1
- package/esm/highlevel/methods/messages/get-history.js +5 -1
- package/esm/highlevel/methods/messages/get-history.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-by-link.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-group.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/esm/highlevel/methods/messages/get-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/get-reply-to.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-history.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-search-global.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-search-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/read-history.js.map +1 -1
- package/esm/highlevel/methods/messages/send-answer.js.map +1 -1
- package/esm/highlevel/methods/messages/send-comment.js.map +1 -1
- package/esm/highlevel/methods/messages/send-common.js.map +1 -1
- package/esm/highlevel/methods/messages/send-copy-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-copy.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media.js.map +1 -1
- package/esm/highlevel/methods/messages/send-quote.js.map +1 -1
- package/esm/highlevel/methods/messages/send-text.js.map +1 -1
- package/esm/highlevel/methods/messages/send-typing.js.map +1 -1
- package/esm/highlevel/methods/messages/send-vote.js.map +1 -1
- package/esm/highlevel/methods/messages/translate-text.js.map +1 -1
- package/esm/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-text.js.map +1 -1
- package/esm/highlevel/methods/misc/with-params.js.map +1 -1
- package/esm/highlevel/methods/password/change-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/password/enable-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/password/remove-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/premium/can-apply-boost.js.map +1 -1
- package/esm/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/esm/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
- package/esm/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/esm/highlevel/methods/stories/can-send-story.js.map +1 -1
- package/esm/highlevel/methods/stories/edit-story.js.map +1 -1
- package/esm/highlevel/methods/stories/find-in-update.js.map +1 -1
- package/esm/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-all-stories.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
- package/esm/highlevel/methods/stories/send-story.js.map +1 -1
- package/esm/highlevel/methods/users/delete-profile-photos.js.map +1 -1
- package/esm/highlevel/methods/users/get-users.js.map +1 -1
- package/esm/highlevel/methods/users/iter-profile-photos.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/esm/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
- package/esm/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
- package/esm/highlevel/storage/service/current-user.js +2 -0
- package/esm/highlevel/storage/service/current-user.js.map +1 -1
- package/esm/highlevel/storage/service/peers.js +5 -1
- package/esm/highlevel/storage/service/peers.js.map +1 -1
- package/esm/highlevel/storage/service/ref-messages.js +3 -0
- package/esm/highlevel/storage/service/ref-messages.js.map +1 -1
- package/esm/highlevel/storage/service/updates.js +1 -0
- package/esm/highlevel/storage/service/updates.js.map +1 -1
- package/esm/highlevel/storage/storage.d.ts +1 -1
- package/esm/highlevel/storage/storage.js +17 -4
- package/esm/highlevel/storage/storage.js.map +1 -1
- package/esm/highlevel/types/auth/sent-code.js +1 -0
- package/esm/highlevel/types/auth/sent-code.js.map +1 -1
- package/esm/highlevel/types/bots/game-high-score.js +2 -0
- package/esm/highlevel/types/bots/game-high-score.js.map +1 -1
- package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/esm/highlevel/types/bots/inline-result/factories.js.map +1 -1
- package/esm/highlevel/types/bots/keyboards/builder.js +2 -1
- package/esm/highlevel/types/bots/keyboards/builder.js.map +1 -1
- package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/esm/highlevel/types/calls/discard-reason.js.map +1 -1
- package/esm/highlevel/types/conversation.js +13 -7
- package/esm/highlevel/types/conversation.js.map +1 -1
- package/esm/highlevel/types/errors.js +3 -0
- package/esm/highlevel/types/errors.js.map +1 -1
- package/esm/highlevel/types/files/file-location.js +3 -0
- package/esm/highlevel/types/files/file-location.js.map +1 -1
- package/esm/highlevel/types/files/uploaded-file.js +1 -1
- package/esm/highlevel/types/files/uploaded-file.js.map +1 -1
- package/esm/highlevel/types/files/utils.d.ts +1 -1
- package/esm/highlevel/types/files/utils.js.map +1 -1
- package/esm/highlevel/types/files/web-document.js +1 -0
- package/esm/highlevel/types/files/web-document.js.map +1 -1
- package/esm/highlevel/types/media/audio.js +3 -2
- package/esm/highlevel/types/media/audio.js.map +1 -1
- package/esm/highlevel/types/media/contact.js +2 -1
- package/esm/highlevel/types/media/contact.js.map +1 -1
- package/esm/highlevel/types/media/dice.js +125 -124
- package/esm/highlevel/types/media/dice.js.map +1 -1
- package/esm/highlevel/types/media/document-utils.js.map +1 -1
- package/esm/highlevel/types/media/document.js +2 -4
- package/esm/highlevel/types/media/document.js.map +1 -1
- package/esm/highlevel/types/media/game.js +2 -1
- package/esm/highlevel/types/media/game.js.map +1 -1
- package/esm/highlevel/types/media/invoice.js +4 -1
- package/esm/highlevel/types/media/invoice.js.map +1 -1
- package/esm/highlevel/types/media/location.js +4 -5
- package/esm/highlevel/types/media/location.js.map +1 -1
- package/esm/highlevel/types/media/photo.js +8 -1
- package/esm/highlevel/types/media/photo.js.map +1 -1
- package/esm/highlevel/types/media/poll.js +4 -1
- package/esm/highlevel/types/media/poll.js.map +1 -1
- package/esm/highlevel/types/media/sticker.js +3 -1
- package/esm/highlevel/types/media/sticker.js.map +1 -1
- package/esm/highlevel/types/media/story.js +3 -1
- package/esm/highlevel/types/media/story.js.map +1 -1
- package/esm/highlevel/types/media/thumbnail.js +35 -22
- package/esm/highlevel/types/media/thumbnail.js.map +1 -1
- package/esm/highlevel/types/media/venue.js +2 -1
- package/esm/highlevel/types/media/venue.js.map +1 -1
- package/esm/highlevel/types/media/video.js +3 -1
- package/esm/highlevel/types/media/video.js.map +1 -1
- package/esm/highlevel/types/media/voice.js +2 -1
- package/esm/highlevel/types/media/voice.js.map +1 -1
- package/esm/highlevel/types/media/web-page.js +2 -1
- package/esm/highlevel/types/media/web-page.js.map +1 -1
- package/esm/highlevel/types/messages/dialog.js +3 -0
- package/esm/highlevel/types/messages/dialog.js.map +1 -1
- package/esm/highlevel/types/messages/draft-message.js +1 -0
- package/esm/highlevel/types/messages/draft-message.js.map +1 -1
- package/esm/highlevel/types/messages/message-action.js.map +1 -1
- package/esm/highlevel/types/messages/message-entity.js +2 -0
- package/esm/highlevel/types/messages/message-entity.js.map +1 -1
- package/esm/highlevel/types/messages/message-forward.js +2 -0
- package/esm/highlevel/types/messages/message-forward.js.map +1 -1
- package/esm/highlevel/types/messages/message-media.js.map +1 -1
- package/esm/highlevel/types/messages/message-reactions.js +4 -0
- package/esm/highlevel/types/messages/message-reactions.js.map +1 -1
- package/esm/highlevel/types/messages/message-replies.js +2 -0
- package/esm/highlevel/types/messages/message-replies.js.map +1 -1
- package/esm/highlevel/types/messages/message.js +6 -0
- package/esm/highlevel/types/messages/message.js.map +1 -1
- package/esm/highlevel/types/messages/replied-message.js +2 -0
- package/esm/highlevel/types/messages/replied-message.js.map +1 -1
- package/esm/highlevel/types/misc/sticker-set.js +7 -1
- package/esm/highlevel/types/misc/sticker-set.js.map +1 -1
- package/esm/highlevel/types/misc/takeout-session.js +5 -0
- package/esm/highlevel/types/misc/takeout-session.js.map +1 -1
- package/esm/highlevel/types/peers/chat-colors.js +2 -0
- package/esm/highlevel/types/peers/chat-colors.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/filters.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/index.js +2 -0
- package/esm/highlevel/types/peers/chat-event/index.js.map +1 -1
- package/esm/highlevel/types/peers/chat-invite-link-member.js +2 -0
- package/esm/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
- package/esm/highlevel/types/peers/chat-invite-link.js +2 -0
- package/esm/highlevel/types/peers/chat-invite-link.js.map +1 -1
- package/esm/highlevel/types/peers/chat-location.js +1 -0
- package/esm/highlevel/types/peers/chat-location.js.map +1 -1
- package/esm/highlevel/types/peers/chat-member.js +2 -0
- package/esm/highlevel/types/peers/chat-member.js.map +1 -1
- package/esm/highlevel/types/peers/chat-permissions.js +1 -0
- package/esm/highlevel/types/peers/chat-permissions.js.map +1 -1
- package/esm/highlevel/types/peers/chat-photo.js +5 -0
- package/esm/highlevel/types/peers/chat-photo.js.map +1 -1
- package/esm/highlevel/types/peers/chat-preview.js +2 -0
- package/esm/highlevel/types/peers/chat-preview.js.map +1 -1
- package/esm/highlevel/types/peers/chat.js +12 -1
- package/esm/highlevel/types/peers/chat.js.map +1 -1
- package/esm/highlevel/types/peers/forum-topic.js +9 -6
- package/esm/highlevel/types/peers/forum-topic.js.map +1 -1
- package/esm/highlevel/types/peers/peer.js.map +1 -1
- package/esm/highlevel/types/peers/peers-index.js +3 -1
- package/esm/highlevel/types/peers/peers-index.js.map +1 -1
- package/esm/highlevel/types/peers/user.js +5 -1
- package/esm/highlevel/types/peers/user.js.map +1 -1
- package/esm/highlevel/types/premium/boost-slot.js +2 -0
- package/esm/highlevel/types/premium/boost-slot.js.map +1 -1
- package/esm/highlevel/types/premium/boost-stats.js +1 -0
- package/esm/highlevel/types/premium/boost-stats.js.map +1 -1
- package/esm/highlevel/types/premium/boost.js +2 -0
- package/esm/highlevel/types/premium/boost.js.map +1 -1
- package/esm/highlevel/types/reactions/emoji-status.js +1 -0
- package/esm/highlevel/types/reactions/emoji-status.js.map +1 -1
- package/esm/highlevel/types/reactions/peer-reaction.js +2 -0
- package/esm/highlevel/types/reactions/peer-reaction.js.map +1 -1
- package/esm/highlevel/types/reactions/reaction-count.js +1 -0
- package/esm/highlevel/types/reactions/reaction-count.js.map +1 -1
- package/esm/highlevel/types/reactions/types.js.map +1 -1
- package/esm/highlevel/types/stories/all-stories.d.ts +2 -2
- package/esm/highlevel/types/stories/all-stories.js +3 -1
- package/esm/highlevel/types/stories/all-stories.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/base.js +1 -0
- package/esm/highlevel/types/stories/interactive/base.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/channel-post.js +3 -1
- package/esm/highlevel/types/stories/interactive/channel-post.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/input.js +1 -0
- package/esm/highlevel/types/stories/interactive/input.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/location.js +2 -1
- package/esm/highlevel/types/stories/interactive/location.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/reaction.js +2 -1
- package/esm/highlevel/types/stories/interactive/reaction.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/venue.js +2 -1
- package/esm/highlevel/types/stories/interactive/venue.js.map +1 -1
- package/esm/highlevel/types/stories/peer-stories.js +2 -0
- package/esm/highlevel/types/stories/peer-stories.js.map +1 -1
- package/esm/highlevel/types/stories/stealth-mode.js +1 -0
- package/esm/highlevel/types/stories/stealth-mode.js.map +1 -1
- package/esm/highlevel/types/stories/story-interactions.js +2 -0
- package/esm/highlevel/types/stories/story-interactions.js.map +1 -1
- package/esm/highlevel/types/stories/story-viewer.d.ts +1 -1
- package/esm/highlevel/types/stories/story-viewer.js +6 -0
- package/esm/highlevel/types/stories/story-viewer.js.map +1 -1
- package/esm/highlevel/types/stories/story.js +2 -0
- package/esm/highlevel/types/stories/story.js.map +1 -1
- package/esm/highlevel/types/updates/bot-chat-join-request.js +2 -0
- package/esm/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
- package/esm/highlevel/types/updates/bot-reaction.js +4 -0
- package/esm/highlevel/types/updates/bot-reaction.js.map +1 -1
- package/esm/highlevel/types/updates/bot-stopped.js +2 -0
- package/esm/highlevel/types/updates/bot-stopped.js.map +1 -1
- package/esm/highlevel/types/updates/callback-query.js +4 -0
- package/esm/highlevel/types/updates/callback-query.js.map +1 -1
- package/esm/highlevel/types/updates/chat-join-request.js +2 -0
- package/esm/highlevel/types/updates/chat-join-request.js.map +1 -1
- package/esm/highlevel/types/updates/chat-member-update.js +2 -0
- package/esm/highlevel/types/updates/chat-member-update.js.map +1 -1
- package/esm/highlevel/types/updates/chosen-inline-result.js +2 -0
- package/esm/highlevel/types/updates/chosen-inline-result.js.map +1 -1
- package/esm/highlevel/types/updates/delete-message-update.js +1 -0
- package/esm/highlevel/types/updates/delete-message-update.js.map +1 -1
- package/esm/highlevel/types/updates/delete-story-update.js +2 -0
- package/esm/highlevel/types/updates/delete-story-update.js.map +1 -1
- package/esm/highlevel/types/updates/history-read-update.js +1 -0
- package/esm/highlevel/types/updates/history-read-update.js.map +1 -1
- package/esm/highlevel/types/updates/inline-query.js +2 -0
- package/esm/highlevel/types/updates/inline-query.js.map +1 -1
- package/esm/highlevel/types/updates/parse-update.js.map +1 -1
- package/esm/highlevel/types/updates/poll-update.js +2 -0
- package/esm/highlevel/types/updates/poll-update.js.map +1 -1
- package/esm/highlevel/types/updates/poll-vote.js +2 -0
- package/esm/highlevel/types/updates/poll-vote.js.map +1 -1
- package/esm/highlevel/types/updates/pre-checkout-query.js +2 -0
- package/esm/highlevel/types/updates/pre-checkout-query.js.map +1 -1
- package/esm/highlevel/types/updates/story-update.js +2 -0
- package/esm/highlevel/types/updates/story-update.js.map +1 -1
- package/esm/highlevel/types/updates/user-status-update.js +1 -0
- package/esm/highlevel/types/updates/user-status-update.js.map +1 -1
- package/esm/highlevel/types/updates/user-typing-update.js +1 -0
- package/esm/highlevel/types/updates/user-typing-update.js.map +1 -1
- package/esm/highlevel/updates/manager.js +50 -28
- package/esm/highlevel/updates/manager.js.map +1 -1
- package/esm/highlevel/updates/parsed.js.map +1 -1
- package/esm/highlevel/updates/utils.js.map +1 -1
- package/esm/highlevel/utils/convert-file-id.js.map +1 -1
- package/esm/highlevel/utils/entities.js.map +1 -1
- package/esm/highlevel/utils/file-type.d.ts +1 -0
- package/esm/highlevel/utils/file-type.js +34 -0
- package/esm/highlevel/utils/file-type.js.map +1 -1
- package/esm/highlevel/utils/file-utils.js +1 -1
- package/esm/highlevel/utils/file-utils.js.map +1 -1
- package/esm/highlevel/utils/inline-utils.js.map +1 -1
- package/esm/highlevel/utils/inspectable.js.map +1 -1
- package/esm/highlevel/utils/memoize.js.map +1 -1
- package/esm/highlevel/utils/peer-utils.js.map +1 -1
- package/esm/highlevel/utils/query-batcher.js.map +1 -1
- package/esm/highlevel/utils/rps-meter.js +3 -0
- package/esm/highlevel/utils/rps-meter.js.map +1 -1
- package/esm/highlevel/utils/stream-utils.js.map +1 -1
- package/esm/highlevel/utils/string-session.d.ts +1 -2
- package/esm/highlevel/utils/string-session.js +27 -7
- package/esm/highlevel/utils/string-session.js.map +1 -1
- package/esm/highlevel/utils/voice-utils.js.map +1 -1
- package/esm/highlevel/worker/app-config.d.ts +2 -3
- package/esm/highlevel/worker/app-config.js +6 -3
- package/esm/highlevel/worker/app-config.js.map +1 -1
- package/esm/highlevel/worker/errors.js.map +1 -1
- package/esm/highlevel/worker/invoker.js +3 -2
- package/esm/highlevel/worker/invoker.js.map +1 -1
- package/esm/highlevel/worker/port.d.ts +16 -17
- package/esm/highlevel/worker/port.js +74 -49
- package/esm/highlevel/worker/port.js.map +1 -1
- package/esm/highlevel/worker/protocol.d.ts +1 -1
- package/esm/highlevel/worker/protocol.js.map +1 -1
- package/esm/highlevel/worker/storage.d.ts +9 -13
- package/esm/highlevel/worker/storage.js +34 -19
- package/esm/highlevel/worker/storage.js.map +1 -1
- package/esm/highlevel/worker/worker.js +3 -0
- package/esm/highlevel/worker/worker.js.map +1 -1
- package/esm/network/auth-key.js +8 -1
- package/esm/network/auth-key.js.map +1 -1
- package/esm/network/authorization.js.map +1 -1
- package/esm/network/client.js +39 -14
- package/esm/network/client.js.map +1 -1
- package/esm/network/config-manager.js.map +1 -1
- package/esm/network/mtproto-session.js +40 -30
- package/esm/network/mtproto-session.js.map +1 -1
- package/esm/network/multi-session-connection.d.ts +1 -1
- package/esm/network/multi-session-connection.js +13 -7
- package/esm/network/multi-session-connection.js.map +1 -1
- package/esm/network/network-manager.d.ts +2 -3
- package/esm/network/network-manager.js +49 -28
- package/esm/network/network-manager.js.map +1 -1
- package/esm/network/persistent-connection.d.ts +2 -2
- package/esm/network/persistent-connection.js +33 -22
- package/esm/network/persistent-connection.js.map +1 -1
- package/esm/network/server-salt.js +4 -5
- package/esm/network/server-salt.js.map +1 -1
- package/esm/network/session-connection.d.ts +1 -1
- package/esm/network/session-connection.js +22 -12
- package/esm/network/session-connection.js.map +1 -1
- package/esm/network/transports/abstract.d.ts +1 -1
- package/esm/network/transports/abstract.js +1 -0
- package/esm/network/transports/abstract.js.map +1 -1
- package/esm/network/transports/intermediate.js +1 -0
- package/esm/network/transports/intermediate.js.map +1 -1
- package/esm/network/transports/obfuscated.js +3 -0
- package/esm/network/transports/obfuscated.js.map +1 -1
- package/esm/network/transports/streamed.js +1 -4
- package/esm/network/transports/streamed.js.map +1 -1
- package/esm/network/transports/wrapped.js +2 -0
- package/esm/network/transports/wrapped.js.map +1 -1
- package/esm/platform.js.map +1 -1
- package/esm/storage/driver.js +3 -4
- package/esm/storage/driver.js.map +1 -1
- package/esm/storage/memory/driver.js +1 -3
- package/esm/storage/memory/driver.js.map +1 -1
- package/esm/storage/memory/index.js +5 -7
- package/esm/storage/memory/index.js.map +1 -1
- package/esm/storage/memory/repository/auth-keys.d.ts +1 -1
- package/esm/storage/memory/repository/auth-keys.js +2 -0
- package/esm/storage/memory/repository/auth-keys.js.map +1 -1
- package/esm/storage/memory/repository/kv.d.ts +1 -1
- package/esm/storage/memory/repository/kv.js +2 -0
- package/esm/storage/memory/repository/kv.js.map +1 -1
- package/esm/storage/memory/repository/peers.d.ts +1 -1
- package/esm/storage/memory/repository/peers.js +2 -0
- package/esm/storage/memory/repository/peers.js.map +1 -1
- package/esm/storage/memory/repository/ref-messages.d.ts +1 -1
- package/esm/storage/memory/repository/ref-messages.js +2 -0
- package/esm/storage/memory/repository/ref-messages.js.map +1 -1
- package/esm/storage/service/auth-keys.js +2 -0
- package/esm/storage/service/auth-keys.js.map +1 -1
- package/esm/storage/service/base.js +4 -0
- package/esm/storage/service/base.js.map +1 -1
- package/esm/storage/service/default-dcs.js +2 -0
- package/esm/storage/service/default-dcs.js.map +1 -1
- package/esm/storage/service/future-salts.js +2 -1
- package/esm/storage/service/future-salts.js.map +1 -1
- package/esm/storage/sqlite/driver.js +10 -10
- package/esm/storage/sqlite/driver.js.map +1 -1
- package/esm/storage/sqlite/index.d.ts +1 -1
- package/esm/storage/sqlite/index.js +5 -0
- package/esm/storage/sqlite/index.js.map +1 -1
- package/esm/storage/sqlite/repository/auth-keys.js +9 -0
- package/esm/storage/sqlite/repository/auth-keys.js.map +1 -1
- package/esm/storage/sqlite/repository/kv.js +5 -0
- package/esm/storage/sqlite/repository/kv.js.map +1 -1
- package/esm/storage/sqlite/repository/peers.js +6 -0
- package/esm/storage/sqlite/repository/peers.js.map +1 -1
- package/esm/storage/sqlite/repository/ref-messages.d.ts +1 -1
- package/esm/storage/sqlite/repository/ref-messages.js +6 -0
- package/esm/storage/sqlite/repository/ref-messages.js.map +1 -1
- package/esm/storage/storage.d.ts +1 -3
- package/esm/storage/storage.js +21 -13
- package/esm/storage/storage.js.map +1 -1
- package/esm/types/errors.js +13 -0
- package/esm/types/errors.js.map +1 -1
- package/esm/utils/async-lock.js +1 -3
- package/esm/utils/async-lock.js.map +1 -1
- package/esm/utils/bigint-utils.js.map +1 -1
- package/esm/utils/binary/asn1-parser.js.map +1 -1
- package/esm/utils/buffer-utils.js.map +1 -1
- package/esm/utils/condition-variable.js +2 -0
- package/esm/utils/condition-variable.js.map +1 -1
- package/esm/utils/crypto/factorization.js.map +1 -1
- package/esm/utils/crypto/keys.js.map +1 -1
- package/esm/utils/crypto/miller-rabin.js.map +1 -1
- package/esm/utils/crypto/password.js.map +1 -1
- package/esm/utils/crypto/utils.js.map +1 -1
- package/esm/utils/dcs.js +1 -1
- package/esm/utils/dcs.js.map +1 -1
- package/esm/utils/deque.js +8 -2
- package/esm/utils/deque.js.map +1 -1
- package/esm/utils/early-timer.js +4 -1
- package/esm/utils/early-timer.js.map +1 -1
- package/esm/utils/error-reporting.js.map +1 -1
- package/esm/utils/function-utils.js.map +1 -1
- package/esm/utils/linked-list.js +4 -1
- package/esm/utils/linked-list.js.map +1 -1
- package/esm/utils/links/bots.js.map +1 -1
- package/esm/utils/links/chat.js.map +1 -1
- package/esm/utils/links/common.js.map +1 -1
- package/esm/utils/links/misc.js.map +1 -1
- package/esm/utils/logger.d.ts +2 -2
- package/esm/utils/logger.js +21 -14
- package/esm/utils/logger.js.map +1 -1
- package/esm/utils/long-utils.js +2 -6
- package/esm/utils/long-utils.js.map +1 -1
- package/esm/utils/lru-map.js +5 -1
- package/esm/utils/lru-map.js.map +1 -1
- package/esm/utils/lru-set.js +4 -0
- package/esm/utils/lru-set.js.map +1 -1
- package/esm/utils/peer-utils.js.map +1 -1
- package/esm/utils/reloadable.js +10 -7
- package/esm/utils/reloadable.js.map +1 -1
- package/esm/utils/sorted-array.js +2 -0
- package/esm/utils/sorted-array.js.map +1 -1
- package/esm/utils/tl-json.js.map +1 -1
- package/esm/utils/type-assertions.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsed.js","sourceRoot":"","sources":["../../../../src/highlevel/updates/parsed.ts"],"names":[],"mappings":";;;AAEA,sEAA+D;AAkC/D,SAAgB,uBAAuB,CAAC,MAAiC;IACrE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,WAAW,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,MAAM,CAAA;IAE5E,IAAI,CAAC,uBAAuB,EAAE;
|
|
1
|
+
{"version":3,"file":"parsed.js","sourceRoot":"","sources":["../../../../src/highlevel/updates/parsed.ts"],"names":[],"mappings":";;;AAEA,sEAA+D;AAkC/D,SAAgB,uBAAuB,CAAC,MAAiC;IACrE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,WAAW,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,MAAM,CAAA;IAE5E,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YAE1C,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YAC1B,IAAI,MAAM;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC,CAAA;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuC,CAAA;IAE9D,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAE1C,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAE1B,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAA;gBAEzC,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAEvC,IAAI,YAAY,EAAE,CAAC;wBACf,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBACrC,CAAC;yBAAM,CAAC;wBACJ,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;wBAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;4BAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;4BACrB,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;wBACvD,CAAC,EAAE,uBAAuB,CAAC,CAAA;wBAE3B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;oBAC3C,CAAC;oBAED,OAAM;gBACV,CAAC;YACL,CAAC;YAED,QAAQ,CAAC,MAAM,CAAC,CAAA;QACpB,CAAC;IACL,CAAC,CAAA;AACL,CAAC;AA7CD,0DA6CC","sourcesContent":["import { Message } from '../types/messages/index.js'\nimport { ParsedUpdate } from '../types/updates/index.js'\nimport { _parseUpdate } from '../types/updates/parse-update.js'\nimport { RawUpdateHandler } from './types.js'\n\nexport interface ParsedUpdateHandlerParams {\n /**\n * When non-zero, allows the library to automatically handle Telegram\n * media groups (e.g. albums) in {@link MessageGroup} updates\n * in a given time interval (in ms).\n *\n * > **Note**: this does not catch messages that happen to be consecutive,\n * > only messages belonging to the same \"media group\".\n *\n * This will cause up to `messageGroupingInterval` delay\n * in handling media group messages.\n *\n * This option only applies to `new_message` updates,\n * and the updates being grouped **will not** be dispatched on their own.\n *\n * Recommended value is 250 ms.\n *\n * @default 0 (disabled)\n */\n messageGroupingInterval?: number\n\n /** Handler for parsed updates */\n onUpdate: (update: ParsedUpdate) => void\n /**\n * Handler for raw updates.\n *\n * Note that this handler will be called **before** the parsed update handler.\n */\n onRawUpdate?: RawUpdateHandler\n}\n\nexport function makeParsedUpdateHandler(params: ParsedUpdateHandlerParams): RawUpdateHandler {\n const { messageGroupingInterval, onUpdate, onRawUpdate = () => {} } = params\n\n if (!messageGroupingInterval) {\n return (update, peers) => {\n const parsed = _parseUpdate(update, peers)\n\n onRawUpdate(update, peers)\n if (parsed) onUpdate(parsed)\n }\n }\n\n const pending = new Map<string, [Message[], NodeJS.Timeout]>()\n\n return (update, peers) => {\n const parsed = _parseUpdate(update, peers)\n\n onRawUpdate(update, peers)\n\n if (parsed) {\n if (parsed.name === 'new_message') {\n const group = parsed.data.groupedIdUnique\n\n if (group) {\n const pendingGroup = pending.get(group)\n\n if (pendingGroup) {\n pendingGroup[0].push(parsed.data)\n } else {\n const messages = [parsed.data]\n const timeout = setTimeout(() => {\n pending.delete(group)\n onUpdate({ name: 'message_group', data: messages })\n }, messageGroupingInterval)\n\n pending.set(group, [messages, timeout])\n }\n\n return\n }\n }\n\n onUpdate(parsed)\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/highlevel/updates/utils.ts"],"names":[],"mappings":";;;AAEA,qDAA4D;AAI5D,SAAgB,eAAe,CAAC,OAAuB;IACnD,QAAQ,OAAO,CAAC,MAAO,CAAC,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/highlevel/updates/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../../types/errors.js'\nimport { PeersIndex } from '../types/peers/peers-index.js'\nimport type { PendingUpdate } from './types.js'\n\nexport function messageToUpdate(message: tl.TypeMessage): tl.TypeUpdate {\n switch (message.peerId!._) {\n case 'peerUser':\n case 'peerChat':\n return {\n _: 'updateNewMessage',\n message,\n pts: 0,\n ptsCount: 0,\n }\n case 'peerChannel':\n return {\n _: 'updateNewChannelMessage',\n message,\n pts: 0,\n ptsCount: 0,\n }\n }\n}\n\nexport function extractChannelIdFromUpdate(upd: tl.TypeUpdate): number | undefined {\n // holy shit\n let res = 0\n\n if ('channelId' in upd) {\n res = upd.channelId\n } else if (\n 'message' in upd &&\n typeof upd.message !== 'string' &&\n 'peerId' in upd.message &&\n upd.message.peerId &&\n 'channelId' in upd.message.peerId\n ) {\n res = upd.message.peerId.channelId\n }\n\n if (res === 0) return undefined\n\n return res\n}\n\nexport function toPendingUpdate(upd: tl.TypeUpdate, peers: PeersIndex, fromDifference = false): PendingUpdate {\n const channelId = extractChannelIdFromUpdate(upd) || 0\n const pts = 'pts' in upd ? upd.pts : undefined\n // eslint-disable-next-line no-nested-ternary\n const ptsCount = 'ptsCount' in upd ? upd.ptsCount : pts ? 0 : undefined\n const qts = 'qts' in upd ? upd.qts : undefined\n\n return {\n update: upd,\n channelId,\n pts,\n ptsBefore: pts ? pts - ptsCount! : undefined,\n qts,\n qtsBefore: qts ? qts - 1 : undefined,\n peers,\n fromDifference,\n }\n}\n\nexport function isMessageEmpty(upd: tl.TypeUpdate): boolean {\n return (upd as Extract<typeof upd, { message: object }>).message?._ === 'messageEmpty'\n}\n\n// dummy updates which are used for methods that return messages.affectedHistory.\n// that is not an update, but it carries info about pts, and we need to handle it\n\n/**\n * Create a dummy `updates` container with given updates.\n */\nexport function createDummyUpdatesContainer(updates: tl.TypeUpdate[], seq = 0): tl.TypeUpdates {\n return {\n _: 'updates',\n seq,\n date: 0,\n chats: [],\n users: [],\n updates,\n }\n}\n\n/**\n * Create a dummy update from PTS and PTS count.\n *\n * @param pts PTS\n * @param ptsCount PTS count\n * @param channelId Channel ID (bare), if applicable\n */\nexport function createDummyUpdate(pts: number, ptsCount: number, channelId = 0): tl.TypeUpdates {\n return createDummyUpdatesContainer([\n {\n _: 'mtcute.dummyUpdate',\n channelId,\n pts,\n ptsCount,\n },\n ])\n}\n\n/** @internal */\nexport function assertIsUpdatesGroup(\n ctx: string,\n upd: tl.TypeUpdates,\n): asserts upd is tl.RawUpdates | tl.RawUpdatesCombined {\n switch (upd._) {\n case 'updates':\n case 'updatesCombined':\n return\n }\n throw new MtTypeAssertionError(ctx, 'updates | updatesCombined', upd._)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-file-id.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/convert-file-id.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId as td } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { parseMarkedPeerId } from '../../utils/peer-utils.js'\n\nimport FileType = td.FileType\nimport { getPlatform } from '../../platform.js'\nimport { assertNever } from '../../types/utils.js'\n\nconst EMPTY_BUFFER = new Uint8Array(0)\n\ntype FileId = td.RawFullRemoteFileLocation\n\nfunction dialogPhotoToInputPeer(\n dialog: td.RawPhotoSizeSourceDialogPhoto | td.RawPhotoSizeSourceDialogPhotoLegacy,\n): tl.TypeInputPeer {\n const markedPeerId = dialog.id\n const [peerType, peerId] = parseMarkedPeerId(markedPeerId)\n\n if (peerType === 'user') {\n return {\n _: 'inputPeerUser',\n userId: peerId,\n accessHash: dialog.accessHash,\n }\n } else if (peerType === 'chat') {\n return {\n _: 'inputPeerChat',\n chatId: peerId,\n }\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: peerId,\n accessHash: dialog.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputWebFileLocation`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputWebFileLocation(fileId: string | FileId): tl.RawInputWebFileLocation {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'web') {\n throw new td.ConversionError('inputWebFileLocation')\n }\n\n return {\n _: 'inputWebFileLocation',\n url: fileId.location.url,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object representing an `InputFileLocation`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputFileLocation(fileId: string | FileId): tl.TypeInputFileLocation {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n const loc = fileId.location\n\n switch (loc._) {\n case 'web':\n throw new td.ConversionError('InputFileLocation')\n\n case 'photo': {\n switch (loc.source._) {\n case 'legacy':\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected legacy photo to have file reference')\n }\n\n // for some reason tdlib removed this thing altogether\n // https://github.com/tdlib/td/commit/4bb76a7b6f47bf9e0d0d01a72aac579ec73557ee#diff-8cc4f7c60a8261a8cf782e7fb51b95105bfb08710a1c2b63f80a48263ae0fb9bL401\n // still leaving this, but not sure if passing 0 as volume_id and local_id is correct at all lol\n return {\n _: 'inputPhotoLegacyFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n volumeId: Long.ZERO,\n localId: 0,\n secret: loc.source.secret,\n }\n case 'thumbnail':\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected thumbnail photo to have file reference')\n }\n\n if (loc.source.fileType !== FileType.Photo && loc.source.fileType !== FileType.Thumbnail) {\n throw new td.InvalidFileIdError('Expected a thumbnail to have a correct file type')\n }\n\n return {\n _:\n loc.source.fileType === FileType.Photo ?\n 'inputPhotoFileLocation' :\n 'inputDocumentFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n thumbSize: loc.source.thumbnailType,\n }\n case 'dialogPhoto':\n return {\n _: 'inputPeerPhotoFileLocation',\n big: loc.source.big,\n peer: dialogPhotoToInputPeer(loc.source),\n photoId: loc.id,\n }\n case 'stickerSetThumbnail':\n // this was also removed from tdlib:\n // https://github.com/tdlib/td/commit/4bb76a7b6f47bf9e0d0d01a72aac579ec73557ee#diff-8cc4f7c60a8261a8cf782e7fb51b95105bfb08710a1c2b63f80a48263ae0fb9bR432\n // also leaving this one though.\n return {\n _: 'inputStickerSetThumb',\n stickerset: {\n _: 'inputStickerSetID',\n id: loc.source.id,\n accessHash: loc.source.accessHash,\n },\n thumbVersion: 0,\n }\n case 'fullLegacy':\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected legacy photo to have file reference')\n }\n\n return {\n _: 'inputPhotoLegacyFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n volumeId: loc.source.volumeId,\n localId: loc.source.localId,\n secret: loc.source.secret,\n }\n case 'dialogPhotoLegacy':\n return {\n _: 'inputPeerPhotoFileLocationLegacy',\n big: loc.source.big,\n peer: dialogPhotoToInputPeer(loc.source),\n volumeId: loc.source.volumeId,\n localId: loc.source.localId,\n }\n case 'stickerSetThumbnailLegacy':\n return {\n _: 'inputStickerSetThumbLegacy',\n stickerset: {\n _: 'inputStickerSetID',\n id: loc.source.id,\n accessHash: loc.source.accessHash,\n },\n volumeId: loc.source.volumeId,\n localId: loc.source.localId,\n }\n case 'stickerSetThumbnailVersion':\n return {\n _: 'inputStickerSetThumb',\n stickerset: {\n _: 'inputStickerSetID',\n id: loc.source.id,\n accessHash: loc.source.accessHash,\n },\n thumbVersion: loc.source.version,\n }\n default:\n assertNever(loc.source)\n }\n\n throw new td.ConversionError('inputFileLocation')\n }\n case 'common': {\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected common to have file reference')\n }\n\n if (fileId.type === FileType.Encrypted) {\n return {\n _: 'inputEncryptedFileLocation',\n id: loc.id,\n accessHash: loc.accessHash,\n }\n } else if (fileId.type === FileType.Secure || fileId.type === FileType.SecureRaw) {\n return {\n _: 'inputSecureFileLocation',\n id: loc.id,\n accessHash: loc.accessHash,\n }\n }\n\n return {\n _: 'inputDocumentFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n thumbSize: '',\n }\n }\n default:\n assertNever(loc)\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputDocument`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputDocument(fileId: string | FileId): tl.RawInputDocument {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (\n fileId.location._ !== 'common' ||\n fileId.type === FileType.Secure ||\n fileId.type === FileType.SecureRaw ||\n fileId.type === FileType.Encrypted\n ) {\n throw new td.ConversionError('inputDocument')\n }\n\n let fileRef = fileId.fileReference\n\n if (!fileRef) {\n if (fileId.type === FileType.Sticker) {\n // older stickers' file IDs don't have file ref\n fileRef = EMPTY_BUFFER\n } else {\n throw new td.InvalidFileIdError('Expected document to have file reference')\n }\n }\n\n return {\n _: 'inputDocument',\n fileReference: fileRef,\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputPhoto`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputPhoto(fileId: string | FileId): tl.RawInputPhoto {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'photo') {\n throw new td.ConversionError('inputPhoto')\n }\n\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected photo to have file reference')\n }\n\n return {\n _: 'inputPhoto',\n fileReference: fileId.fileReference,\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputEncryptedFile`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToEncryptedFile(fileId: string | FileId): tl.RawInputEncryptedFile {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'common' || fileId.type !== FileType.Encrypted) {\n throw new td.ConversionError('inputEncryptedFile')\n }\n\n return {\n _: 'inputEncryptedFile',\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputSecureFile`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToSecureFile(fileId: string | FileId): tl.RawInputSecureFile {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'common' || (fileId.type !== FileType.Secure && fileId.type !== FileType.SecureRaw)) {\n throw new td.ConversionError('inputSecureFile')\n }\n\n return {\n _: 'inputSecureFile',\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"convert-file-id.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/convert-file-id.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId as td } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { parseMarkedPeerId } from '../../utils/peer-utils.js'\n\nimport FileType = td.FileType\nimport { getPlatform } from '../../platform.js'\nimport { assertNever } from '../../types/utils.js'\n\nconst EMPTY_BUFFER = new Uint8Array(0)\n\ntype FileId = td.RawFullRemoteFileLocation\n\nfunction dialogPhotoToInputPeer(\n dialog: td.RawPhotoSizeSourceDialogPhoto | td.RawPhotoSizeSourceDialogPhotoLegacy,\n): tl.TypeInputPeer {\n const markedPeerId = dialog.id\n const [peerType, peerId] = parseMarkedPeerId(markedPeerId)\n\n if (peerType === 'user') {\n return {\n _: 'inputPeerUser',\n userId: peerId,\n accessHash: dialog.accessHash,\n }\n } else if (peerType === 'chat') {\n return {\n _: 'inputPeerChat',\n chatId: peerId,\n }\n }\n\n return {\n _: 'inputPeerChannel',\n channelId: peerId,\n accessHash: dialog.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputWebFileLocation`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputWebFileLocation(fileId: string | FileId): tl.RawInputWebFileLocation {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'web') {\n throw new td.ConversionError('inputWebFileLocation')\n }\n\n return {\n _: 'inputWebFileLocation',\n url: fileId.location.url,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object representing an `InputFileLocation`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputFileLocation(fileId: string | FileId): tl.TypeInputFileLocation {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n const loc = fileId.location\n\n switch (loc._) {\n case 'web':\n throw new td.ConversionError('InputFileLocation')\n\n case 'photo': {\n switch (loc.source._) {\n case 'legacy':\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected legacy photo to have file reference')\n }\n\n // for some reason tdlib removed this thing altogether\n // https://github.com/tdlib/td/commit/4bb76a7b6f47bf9e0d0d01a72aac579ec73557ee#diff-8cc4f7c60a8261a8cf782e7fb51b95105bfb08710a1c2b63f80a48263ae0fb9bL401\n // still leaving this, but not sure if passing 0 as volume_id and local_id is correct at all lol\n return {\n _: 'inputPhotoLegacyFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n volumeId: Long.ZERO,\n localId: 0,\n secret: loc.source.secret,\n }\n case 'thumbnail':\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected thumbnail photo to have file reference')\n }\n\n if (loc.source.fileType !== FileType.Photo && loc.source.fileType !== FileType.Thumbnail) {\n throw new td.InvalidFileIdError('Expected a thumbnail to have a correct file type')\n }\n\n return {\n _:\n loc.source.fileType === FileType.Photo ?\n 'inputPhotoFileLocation' :\n 'inputDocumentFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n thumbSize: loc.source.thumbnailType,\n }\n case 'dialogPhoto':\n return {\n _: 'inputPeerPhotoFileLocation',\n big: loc.source.big,\n peer: dialogPhotoToInputPeer(loc.source),\n photoId: loc.id,\n }\n case 'stickerSetThumbnail':\n // this was also removed from tdlib:\n // https://github.com/tdlib/td/commit/4bb76a7b6f47bf9e0d0d01a72aac579ec73557ee#diff-8cc4f7c60a8261a8cf782e7fb51b95105bfb08710a1c2b63f80a48263ae0fb9bR432\n // also leaving this one though.\n return {\n _: 'inputStickerSetThumb',\n stickerset: {\n _: 'inputStickerSetID',\n id: loc.source.id,\n accessHash: loc.source.accessHash,\n },\n thumbVersion: 0,\n }\n case 'fullLegacy':\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected legacy photo to have file reference')\n }\n\n return {\n _: 'inputPhotoLegacyFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n volumeId: loc.source.volumeId,\n localId: loc.source.localId,\n secret: loc.source.secret,\n }\n case 'dialogPhotoLegacy':\n return {\n _: 'inputPeerPhotoFileLocationLegacy',\n big: loc.source.big,\n peer: dialogPhotoToInputPeer(loc.source),\n volumeId: loc.source.volumeId,\n localId: loc.source.localId,\n }\n case 'stickerSetThumbnailLegacy':\n return {\n _: 'inputStickerSetThumbLegacy',\n stickerset: {\n _: 'inputStickerSetID',\n id: loc.source.id,\n accessHash: loc.source.accessHash,\n },\n volumeId: loc.source.volumeId,\n localId: loc.source.localId,\n }\n case 'stickerSetThumbnailVersion':\n return {\n _: 'inputStickerSetThumb',\n stickerset: {\n _: 'inputStickerSetID',\n id: loc.source.id,\n accessHash: loc.source.accessHash,\n },\n thumbVersion: loc.source.version,\n }\n default:\n assertNever(loc.source)\n }\n\n throw new td.ConversionError('inputFileLocation')\n }\n case 'common': {\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected common to have file reference')\n }\n\n if (fileId.type === FileType.Encrypted) {\n return {\n _: 'inputEncryptedFileLocation',\n id: loc.id,\n accessHash: loc.accessHash,\n }\n } else if (fileId.type === FileType.Secure || fileId.type === FileType.SecureRaw) {\n return {\n _: 'inputSecureFileLocation',\n id: loc.id,\n accessHash: loc.accessHash,\n }\n }\n\n return {\n _: 'inputDocumentFileLocation',\n fileReference: fileId.fileReference,\n id: loc.id,\n accessHash: loc.accessHash,\n thumbSize: '',\n }\n }\n default:\n assertNever(loc)\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputDocument`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputDocument(fileId: string | FileId): tl.RawInputDocument {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (\n fileId.location._ !== 'common' ||\n fileId.type === FileType.Secure ||\n fileId.type === FileType.SecureRaw ||\n fileId.type === FileType.Encrypted\n ) {\n throw new td.ConversionError('inputDocument')\n }\n\n let fileRef = fileId.fileReference\n\n if (!fileRef) {\n if (fileId.type === FileType.Sticker) {\n // older stickers' file IDs don't have file ref\n fileRef = EMPTY_BUFFER\n } else {\n throw new td.InvalidFileIdError('Expected document to have file reference')\n }\n }\n\n return {\n _: 'inputDocument',\n fileReference: fileRef,\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputPhoto`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToInputPhoto(fileId: string | FileId): tl.RawInputPhoto {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'photo') {\n throw new td.ConversionError('inputPhoto')\n }\n\n if (!fileId.fileReference) {\n throw new td.InvalidFileIdError('Expected photo to have file reference')\n }\n\n return {\n _: 'inputPhoto',\n fileReference: fileId.fileReference,\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputEncryptedFile`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToEncryptedFile(fileId: string | FileId): tl.RawInputEncryptedFile {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'common' || fileId.type !== FileType.Encrypted) {\n throw new td.ConversionError('inputEncryptedFile')\n }\n\n return {\n _: 'inputEncryptedFile',\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n\n/**\n * Convert a file ID or {@link tdFileId.RawFullRemoteFileLocation}\n * to TL object `inputSecureFile`\n *\n * @param fileId File ID, either parsed or as a string\n */\nexport function fileIdToSecureFile(fileId: string | FileId): tl.RawInputSecureFile {\n if (typeof fileId === 'string') fileId = parseFileId(getPlatform(), fileId)\n\n if (fileId.location._ !== 'common' || (fileId.type !== FileType.Secure && fileId.type !== FileType.SecureRaw)) {\n throw new td.ConversionError('inputSecureFile')\n }\n\n return {\n _: 'inputSecureFile',\n id: fileId.location.id,\n accessHash: fileId.location.accessHash,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/entities.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,oBAAoB,CAChC,KAAoC,EACpC,QAAmC,EAAE;IAErC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,WAAW,GAA2B,EAAE,CAAA;IAE9C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/entities.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,oBAAoB,CAChC,KAAoC,EACpC,QAAmC,EAAE;IAErC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,WAAW,GAA2B,EAAE,CAAA;IAE9C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,IAAsB,EAAE,EAAE;QACxC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,cAAc,GAAG,QAAQ,CAAA;QAC/B,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;QAE5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC;oBACb,GAAG,MAAM;oBACT,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc;iBACzC,CAAC,CAAA;YACN,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;QAED,QAAQ,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO;QACH,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,QAAQ,EAAE,WAAW;KACxB,CAAA;AACL,CAAC;AAxCD,oDAwCC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { TextWithEntities } from '../types/misc/entities.js'\n\n/**\n * Join multiple text parts with entities into a single text with entities,\n * adjusting the entities' offsets accordingly.\n *\n * @param parts List of text parts with entities\n * @param delim Delimiter to insert between parts\n * @returns A single text with entities\n * @example\n *\n * ```ts\n * const scoreboardText = joinTextWithEntities(\n * apiResult.scoreboard.map((entry) => html`<b>${entry.name}</b>: ${entry.score}`),\n * html`<br>`\n * )\n * await tg.sendText(chatId, html`<b>scoreboard:</b><br><br>${scoreboardText}`)\n * ```\n */\nexport function joinTextWithEntities(\n parts: (string | TextWithEntities)[],\n delim: string | TextWithEntities = '',\n): TextWithEntities {\n const textParts: string[] = []\n const newEntities: tl.TypeMessageEntity[] = []\n\n let position = 0\n\n if (typeof delim === 'string') {\n delim = { text: delim }\n }\n\n const pushPart = (part: TextWithEntities) => {\n textParts.push(part.text)\n const entitiesOffset = position\n position += part.text.length\n\n if (part.entities) {\n for (const entity of part.entities) {\n newEntities.push({\n ...entity,\n offset: entity.offset + entitiesOffset,\n })\n }\n }\n }\n\n for (const part of parts) {\n if (position > 0) {\n pushPart(delim)\n }\n\n pushPart(typeof part === 'string' ? { text: part } : part)\n }\n\n return {\n text: textParts.join(''),\n entities: newEntities,\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.guessFileMime = void 0;
|
|
3
|
+
exports.MIME_TO_EXTENSION = exports.guessFileMime = void 0;
|
|
4
4
|
function guessFileMime(chunk) {
|
|
5
5
|
if (chunk.length < 12)
|
|
6
6
|
return null;
|
|
@@ -136,4 +136,38 @@ function guessFileMime(chunk) {
|
|
|
136
136
|
return null;
|
|
137
137
|
}
|
|
138
138
|
exports.guessFileMime = guessFileMime;
|
|
139
|
+
exports.MIME_TO_EXTENSION = {
|
|
140
|
+
'image/bmp': 'bmp',
|
|
141
|
+
'application/x-msdownload': 'exe',
|
|
142
|
+
'application/x-compress': 'z',
|
|
143
|
+
'application/gzip': 'gz',
|
|
144
|
+
'application/x-bzip2': 'bz2',
|
|
145
|
+
'audio/mpeg': 'mp3',
|
|
146
|
+
'application/zip': 'zip',
|
|
147
|
+
'image/vnd.adobe.photoshop': 'psd',
|
|
148
|
+
'application/zstd': 'zst',
|
|
149
|
+
'audio/x-flac': 'flac',
|
|
150
|
+
'image/jpeg': 'jpg',
|
|
151
|
+
'audio/ogg': 'ogg',
|
|
152
|
+
'video/ogg': 'ogv',
|
|
153
|
+
'application/ogg': 'ogg',
|
|
154
|
+
'application/pdf': 'pdf',
|
|
155
|
+
'image/gif': 'gif',
|
|
156
|
+
'application/x-7z-compressed': '7z',
|
|
157
|
+
'image/png': 'png',
|
|
158
|
+
'application/x-rar-compressed': 'rar',
|
|
159
|
+
'image/avif': 'avif',
|
|
160
|
+
'image/heif': 'heif',
|
|
161
|
+
'image/heif-sequence': 'heif',
|
|
162
|
+
'image/heic': 'heic',
|
|
163
|
+
'image/heic-sequence': 'heic',
|
|
164
|
+
'video/quicktime': 'mov',
|
|
165
|
+
'video/x-m4v': 'm4v',
|
|
166
|
+
'audio/x-m4a': 'm4a',
|
|
167
|
+
'audio/mp4': 'm4a',
|
|
168
|
+
'image/x-canon-cr3': 'cr3',
|
|
169
|
+
'video/3gpp2': '3g2',
|
|
170
|
+
'video/3gpp': '3gp',
|
|
171
|
+
'video/mp4': 'mp4',
|
|
172
|
+
};
|
|
139
173
|
//# sourceMappingURL=file-type.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-type.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/file-type.ts"],"names":[],"mappings":"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","sourcesContent":["export function guessFileMime(chunk: Uint8Array): string | null {\n if (chunk.length < 12) return null\n\n // 2-byte magic numbers\n const b0 = chunk[0]\n const b1 = chunk[1]\n if (b0 === 0x42 && b1 === 0x4d) return 'image/bmp'\n if (b0 === 0x4d && b1 === 0x5a) return 'application/x-msdownload'\n if (b0 === 0x1f && (b1 === 0x9d || b1 === 0xa0)) return 'application/x-compress'\n if (b0 === 0x1f && b1 === 0x8b) return 'application/gzip'\n\n // 3-byte magic numbers\n const b2 = chunk[2]\n if (b0 === 0x42 && b1 === 0x5a && b2 === 0x68) return 'application/x-bzip2'\n if (b0 === 0x49 && b1 === 0x44 && b2 === 0x33) return 'audio/mpeg' // ID3v2\n if (b0 === 0xff && (b1 === 0xfb || b1 === 0xf3 || b1 === 0xf2)) return 'audio/mpeg'\n\n // 4-byte magic numbers\n const b3 = chunk[3]\n if (b0 === 0x50 && b1 === 0x4b && b2 === 0x03 && b3 === 0x04) return 'application/zip'\n if (b0 === 0x38 && b1 === 0x42 && b2 === 0x50 && b3 === 0x53) return 'image/vnd.adobe.photoshop'\n if (b0 === 0x7f && b1 === 0x45 && b2 === 0x4c && b3 === 0x46) return 'application/x-elf'\n if (b0 === 0xfe && b1 === 0xed && b2 === 0xfa && b3 === 0xcf) return 'application/x-mach-binary'\n if (b0 === 0x28 && b1 === 0xb5 && b2 === 0x2f && b3 === 0xfd) return 'application/zstd'\n if (b0 === 0x66 && b1 === 0x4c && b2 === 0x61 && b3 === 0x43) return 'audio/x-flac'\n\n if (b0 === 0xff && b1 === 0xd8 && b2 === 0xff && (b3 === 0xdb || b3 === 0xe0 || b3 === 0xee || b3 === 0xe1)) {\n return 'image/jpeg'\n }\n\n // OggS\n if (b0 === 0x4f && b1 === 0x67 && b2 === 0x67 && b3 === 0x53) {\n // 28-36 bytes: type\n if (chunk.length > 36) {\n const type = String.fromCharCode(...chunk.subarray(28, 36))\n if (type === 'OpusHead') return 'audio/ogg' // not audio/opus because Telegram is dumb\n if (type.startsWith('\\x80theora')) return 'video/ogg'\n if (type.startsWith('\\x01video')) return 'video/ogg'\n if (type.startsWith('\\x7fFLAC')) return 'audio/ogg'\n if (type.startsWith('Speex ')) return 'audio/ogg'\n if (type.startsWith('\\x01vorbis')) return 'audio/ogg'\n }\n\n return 'application/ogg'\n }\n\n // 5-byte magic numbers\n const b4 = chunk[4]\n if (b0 === 0x25 && b1 === 0x50 && b2 === 0x44 && b3 === 0x46 && b4 === 0x2d) return 'application/pdf'\n\n // 6-byte magic numbers\n const b5 = chunk[5]\n\n if (b0 === 0x47 && b1 === 0x49 && b2 === 0x46 && b3 === 0x38) {\n if ((b4 === 0x37 || b4 === 0x39) && b5 === 0x61) return 'image/gif'\n }\n if (b0 === 0x37 && b1 === 0x7a && b2 === 0xbc && b3 === 0xaf && b4 === 0x27 && b5 === 0x1c) {\n return 'application/x-7z-compressed'\n }\n\n // 8-byte magic numbers\n const b6 = chunk[6]\n const b7 = chunk[7]\n\n if (\n b0 === 0x89 &&\n b1 === 0x50 &&\n b2 === 0x4e &&\n b3 === 0x47 &&\n b4 === 0x0d &&\n b5 === 0x0a &&\n b6 === 0x1a &&\n b7 === 0x0a\n ) {\n return 'image/png'\n }\n\n if (b0 === 0x52 && b1 === 0x61 && b2 === 0x72 && b3 === 0x21 && b4 === 0x1a && b5 === 0x07) {\n if (b6 === 0x00 || b6 === 0x01) return 'application/x-rar-compressed'\n }\n\n // ftyp - iso container\n if (b4 === 0x66 && b5 === 0x74 && b6 === 0x79 && b7 === 0x70 && chunk[8] & 0x60) {\n const brandMajor = String.fromCharCode(...chunk.subarray(8, 12))\n .replace(/\\0/g, ' ')\n .trim()\n\n switch (brandMajor) {\n case 'avif':\n case 'avis':\n return 'image/avif'\n case 'mif1':\n return 'image/heif'\n case 'msf1':\n return 'image/heif-sequence'\n case 'heic':\n case 'heix':\n return 'image/heic'\n case 'hevc':\n case 'hevx':\n return 'image/heic-sequence'\n case 'qt':\n return 'video/quicktime'\n case 'M4V':\n case 'M4VH':\n case 'M4VP':\n return 'video/x-m4v'\n case 'M4A':\n return 'audio/x-m4a'\n case 'M4B':\n case 'F4A':\n case 'F4B':\n return 'audio/mp4'\n case 'crx':\n return 'image/x-canon-cr3'\n default:\n if (brandMajor.startsWith('3g')) {\n if (brandMajor.startsWith('3g2')) {\n return 'video/3gpp2'\n }\n\n return 'video/3gpp'\n }\n\n return 'video/mp4'\n }\n }\n\n return null\n}\n"]}
|
|
1
|
+
{"version":3,"file":"file-type.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/file-type.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAC,KAAiB;IAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAA;IAElC,uBAAuB;IACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,WAAW,CAAA;IAClD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,0BAA0B,CAAA;IACjE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;QAAE,OAAO,wBAAwB,CAAA;IAChF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,kBAAkB,CAAA;IAEzD,uBAAuB;IACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,qBAAqB,CAAA;IAC3E,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,YAAY,CAAA,CAAC,QAAQ;IAC3E,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;QAAE,OAAO,YAAY,CAAA;IAEnF,uBAAuB;IACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAA;IACtF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,2BAA2B,CAAA;IAChG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,mBAAmB,CAAA;IACxF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,2BAA2B,CAAA;IAChG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,kBAAkB,CAAA;IACvF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,cAAc,CAAA;IAEnF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1G,OAAO,YAAY,CAAA;IACvB,CAAC;IAED,OAAO;IACP,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAC3D,oBAAoB;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC3D,IAAI,IAAI,KAAK,UAAU;gBAAE,OAAO,WAAW,CAAA,CAAC,0CAA0C;YACtF,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,WAAW,CAAA;YACrD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,OAAO,WAAW,CAAA;YACpD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,OAAO,WAAW,CAAA;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,WAAW,CAAA;YAClD,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,WAAW,CAAA;QACzD,CAAC;QAED,OAAO,iBAAiB,CAAA;IAC5B,CAAC;IAED,uBAAuB;IACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAA;IAErG,uBAAuB;IACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAEnB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,WAAW,CAAA;IACvE,CAAC;IACD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACzF,OAAO,6BAA6B,CAAA;IACxC,CAAC;IAED,uBAAuB;IACvB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAEnB,IACI,EAAE,KAAK,IAAI;QACX,EAAE,KAAK,IAAI;QACX,EAAE,KAAK,IAAI;QACX,EAAE,KAAK,IAAI;QACX,EAAE,KAAK,IAAI;QACX,EAAE,KAAK,IAAI;QACX,EAAE,KAAK,IAAI;QACX,EAAE,KAAK,IAAI,EACb,CAAC;QACC,OAAO,WAAW,CAAA;IACtB,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACzF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,8BAA8B,CAAA;IACzE,CAAC;IAED,uBAAuB;IACvB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QAC9E,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC3D,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,IAAI,EAAE,CAAA;QAEX,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACP,OAAO,YAAY,CAAA;YACvB,KAAK,MAAM;gBACP,OAAO,YAAY,CAAA;YACvB,KAAK,MAAM;gBACP,OAAO,qBAAqB,CAAA;YAChC,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACP,OAAO,YAAY,CAAA;YACvB,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACP,OAAO,qBAAqB,CAAA;YAChC,KAAK,IAAI;gBACL,OAAO,iBAAiB,CAAA;YAC5B,KAAK,KAAK,CAAC;YACX,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACP,OAAO,aAAa,CAAA;YACxB,KAAK,KAAK;gBACN,OAAO,aAAa,CAAA;YACxB,KAAK,KAAK,CAAC;YACX,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACN,OAAO,WAAW,CAAA;YACtB,KAAK,KAAK;gBACN,OAAO,mBAAmB,CAAA;YAC9B;gBACI,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,OAAO,aAAa,CAAA;oBACxB,CAAC;oBAED,OAAO,YAAY,CAAA;gBACvB,CAAC;gBAED,OAAO,WAAW,CAAA;QAC1B,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAjID,sCAiIC;AAEY,QAAA,iBAAiB,GAAuC;IACjE,WAAW,EAAE,KAAK;IAClB,0BAA0B,EAAE,KAAK;IACjC,wBAAwB,EAAE,GAAG;IAC7B,kBAAkB,EAAE,IAAI;IACxB,qBAAqB,EAAE,KAAK;IAC5B,YAAY,EAAE,KAAK;IACnB,iBAAiB,EAAE,KAAK;IACxB,2BAA2B,EAAE,KAAK;IAClC,kBAAkB,EAAE,KAAK;IACzB,cAAc,EAAE,MAAM;IACtB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,KAAK;IAClB,6BAA6B,EAAE,IAAI;IACnC,WAAW,EAAE,KAAK;IAClB,8BAA8B,EAAE,KAAK;IACrC,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,MAAM;IACpB,qBAAqB,EAAE,MAAM;IAC7B,YAAY,EAAE,MAAM;IACpB,qBAAqB,EAAE,MAAM;IAC7B,iBAAiB,EAAE,KAAK;IACxB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;IAClB,mBAAmB,EAAE,KAAK;IAC1B,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;CACrB,CAAA","sourcesContent":["export function guessFileMime(chunk: Uint8Array): string | null {\n if (chunk.length < 12) return null\n\n // 2-byte magic numbers\n const b0 = chunk[0]\n const b1 = chunk[1]\n if (b0 === 0x42 && b1 === 0x4d) return 'image/bmp'\n if (b0 === 0x4d && b1 === 0x5a) return 'application/x-msdownload'\n if (b0 === 0x1f && (b1 === 0x9d || b1 === 0xa0)) return 'application/x-compress'\n if (b0 === 0x1f && b1 === 0x8b) return 'application/gzip'\n\n // 3-byte magic numbers\n const b2 = chunk[2]\n if (b0 === 0x42 && b1 === 0x5a && b2 === 0x68) return 'application/x-bzip2'\n if (b0 === 0x49 && b1 === 0x44 && b2 === 0x33) return 'audio/mpeg' // ID3v2\n if (b0 === 0xff && (b1 === 0xfb || b1 === 0xf3 || b1 === 0xf2)) return 'audio/mpeg'\n\n // 4-byte magic numbers\n const b3 = chunk[3]\n if (b0 === 0x50 && b1 === 0x4b && b2 === 0x03 && b3 === 0x04) return 'application/zip'\n if (b0 === 0x38 && b1 === 0x42 && b2 === 0x50 && b3 === 0x53) return 'image/vnd.adobe.photoshop'\n if (b0 === 0x7f && b1 === 0x45 && b2 === 0x4c && b3 === 0x46) return 'application/x-elf'\n if (b0 === 0xfe && b1 === 0xed && b2 === 0xfa && b3 === 0xcf) return 'application/x-mach-binary'\n if (b0 === 0x28 && b1 === 0xb5 && b2 === 0x2f && b3 === 0xfd) return 'application/zstd'\n if (b0 === 0x66 && b1 === 0x4c && b2 === 0x61 && b3 === 0x43) return 'audio/x-flac'\n\n if (b0 === 0xff && b1 === 0xd8 && b2 === 0xff && (b3 === 0xdb || b3 === 0xe0 || b3 === 0xee || b3 === 0xe1)) {\n return 'image/jpeg'\n }\n\n // OggS\n if (b0 === 0x4f && b1 === 0x67 && b2 === 0x67 && b3 === 0x53) {\n // 28-36 bytes: type\n if (chunk.length > 36) {\n const type = String.fromCharCode(...chunk.subarray(28, 36))\n if (type === 'OpusHead') return 'audio/ogg' // not audio/opus because Telegram is dumb\n if (type.startsWith('\\x80theora')) return 'video/ogg'\n if (type.startsWith('\\x01video')) return 'video/ogg'\n if (type.startsWith('\\x7fFLAC')) return 'audio/ogg'\n if (type.startsWith('Speex ')) return 'audio/ogg'\n if (type.startsWith('\\x01vorbis')) return 'audio/ogg'\n }\n\n return 'application/ogg'\n }\n\n // 5-byte magic numbers\n const b4 = chunk[4]\n if (b0 === 0x25 && b1 === 0x50 && b2 === 0x44 && b3 === 0x46 && b4 === 0x2d) return 'application/pdf'\n\n // 6-byte magic numbers\n const b5 = chunk[5]\n\n if (b0 === 0x47 && b1 === 0x49 && b2 === 0x46 && b3 === 0x38) {\n if ((b4 === 0x37 || b4 === 0x39) && b5 === 0x61) return 'image/gif'\n }\n if (b0 === 0x37 && b1 === 0x7a && b2 === 0xbc && b3 === 0xaf && b4 === 0x27 && b5 === 0x1c) {\n return 'application/x-7z-compressed'\n }\n\n // 8-byte magic numbers\n const b6 = chunk[6]\n const b7 = chunk[7]\n\n if (\n b0 === 0x89 &&\n b1 === 0x50 &&\n b2 === 0x4e &&\n b3 === 0x47 &&\n b4 === 0x0d &&\n b5 === 0x0a &&\n b6 === 0x1a &&\n b7 === 0x0a\n ) {\n return 'image/png'\n }\n\n if (b0 === 0x52 && b1 === 0x61 && b2 === 0x72 && b3 === 0x21 && b4 === 0x1a && b5 === 0x07) {\n if (b6 === 0x00 || b6 === 0x01) return 'application/x-rar-compressed'\n }\n\n // ftyp - iso container\n if (b4 === 0x66 && b5 === 0x74 && b6 === 0x79 && b7 === 0x70 && chunk[8] & 0x60) {\n const brandMajor = String.fromCharCode(...chunk.subarray(8, 12))\n .replace(/\\0/g, ' ')\n .trim()\n\n switch (brandMajor) {\n case 'avif':\n case 'avis':\n return 'image/avif'\n case 'mif1':\n return 'image/heif'\n case 'msf1':\n return 'image/heif-sequence'\n case 'heic':\n case 'heix':\n return 'image/heic'\n case 'hevc':\n case 'hevx':\n return 'image/heic-sequence'\n case 'qt':\n return 'video/quicktime'\n case 'M4V':\n case 'M4VH':\n case 'M4VP':\n return 'video/x-m4v'\n case 'M4A':\n return 'audio/x-m4a'\n case 'M4B':\n case 'F4A':\n case 'F4B':\n return 'audio/mp4'\n case 'crx':\n return 'image/x-canon-cr3'\n default:\n if (brandMajor.startsWith('3g')) {\n if (brandMajor.startsWith('3g2')) {\n return 'video/3gpp2'\n }\n\n return 'video/3gpp'\n }\n\n return 'video/mp4'\n }\n }\n\n return null\n}\n\nexport const MIME_TO_EXTENSION: Record<string, string | undefined> = {\n 'image/bmp': 'bmp',\n 'application/x-msdownload': 'exe',\n 'application/x-compress': 'z',\n 'application/gzip': 'gz',\n 'application/x-bzip2': 'bz2',\n 'audio/mpeg': 'mp3',\n 'application/zip': 'zip',\n 'image/vnd.adobe.photoshop': 'psd',\n 'application/zstd': 'zst',\n 'audio/x-flac': 'flac',\n 'image/jpeg': 'jpg',\n 'audio/ogg': 'ogg',\n 'video/ogg': 'ogv',\n 'application/ogg': 'ogg',\n 'application/pdf': 'pdf',\n 'image/gif': 'gif',\n 'application/x-7z-compressed': '7z',\n 'image/png': 'png',\n 'application/x-rar-compressed': 'rar',\n 'image/avif': 'avif',\n 'image/heif': 'heif',\n 'image/heif-sequence': 'heif',\n 'image/heic': 'heic',\n 'image/heic-sequence': 'heic',\n 'video/quicktime': 'mov',\n 'video/x-m4v': 'm4v',\n 'audio/x-m4a': 'm4a',\n 'audio/mp4': 'm4a',\n 'image/x-canon-cr3': 'cr3',\n 'video/3gpp2': '3g2',\n 'video/3gpp': '3gp',\n 'video/mp4': 'mp4',\n}\n"]}
|
|
@@ -117,7 +117,7 @@ exports.svgPathToFile = svgPathToFile;
|
|
|
117
117
|
function extractFileName(path) {
|
|
118
118
|
if (path.startsWith('file:'))
|
|
119
119
|
path = path.slice(5);
|
|
120
|
-
return path.split(/[\\/]/).pop();
|
|
120
|
+
return path.split(/[\\/]/).pop().split('?')[0];
|
|
121
121
|
}
|
|
122
122
|
exports.extractFileName = extractFileName;
|
|
123
123
|
//# sourceMappingURL=file-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/file-utils.ts"],"names":[],"mappings":";;;AAAA,mDAA+C;AAC/C,qDAAuD;AACvD,iEAA2D;AAE3D;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,QAAgB;IAC9C,IAAI,QAAQ,IAAI,SAAS;QAAE,OAAO,GAAG,CAAA,CAAC,SAAS;IAC/C,IAAI,QAAQ,IAAI,SAAS;QAAE,OAAO,GAAG,CAAA,CAAC,SAAS;IAC/C,IAAI,QAAQ,IAAI,UAAU;QAAE,OAAO,GAAG,CAAA,CAAC,UAAU;IAEjD,MAAM,IAAI,2BAAe,CAAC,mBAAmB,CAAC,CAAA;AAClD,CAAC;AAND,8CAMC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,GAAe;IAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CACZ,CAAC,EAAE,EAAE,EAAE,CACH,CAAC,CACG,CACI,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,wBAAwB;QACrD,EAAE,KAAK,IAAI,IAAI,KAAK;QACpB,EAAE,KAAK,IAAI,IAAI,KAAK;QACpB,EAAE,KAAK,IAAI,CACd,CAAC,MAAM;KACX,CACR,CAAA;AACL,CAAC;AAZD,kDAYC;AAED,8IAA8I;AAC9I,MAAM,WAAW,GAAG,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/file-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPlatform } from '../../platform.js'\nimport { MtArgumentError } from '../../types/errors.js'\nimport { concatBuffers } from '../../utils/buffer-utils.js'\n\n/**\n * Given file size, determine the appropriate chunk size (in KB)\n * for upload/download operations.\n */\nexport function determinePartSize(fileSize: number): number {\n if (fileSize <= 262078465) return 128 // 200 MB\n if (fileSize <= 786432000) return 256 // 750 MB\n if (fileSize <= 2097152000) return 512 // 2000 MB\n\n throw new MtArgumentError('File is too large')\n}\n\n/**\n * Returns `true` if all bytes in `buf` are printable ASCII characters\n */\nexport function isProbablyPlainText(buf: Uint8Array): boolean {\n return !buf.some(\n (it) =>\n !(\n (\n (it >= 0x20 && it < 0x7f) || // printable ascii range\n it === 0x0d || // CR\n it === 0x0a || // LF\n it === 0x09\n ) // Tab\n ),\n )\n}\n\n// from https://github.com/telegramdesktop/tdesktop/blob/bec39d89e19670eb436dc794a8f20b657cb87c71/Telegram/SourceFiles/ui/image/image.cpp#L225\nconst JPEG_HEADER = () =>\n getPlatform().hexDecode(\n 'ffd8ffe000104a46494600010100000100010000ffdb004300281c1e231e1928' +\n '2321232d2b28303c64413c37373c7b585d4964918099968f808c8aa0b4e6c3a0aad' +\n 'aad8a8cc8ffcbdaeef5ffffff9bc1fffffffaffe6fdfff8ffdb0043012b2d2d3c35' +\n '3c76414176f8a58ca5f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f' +\n '8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8ffc0001108000000' +\n '0003012200021101031101ffc4001f0000010501010101010100000000000000000' +\n '102030405060708090a0bffc400b5100002010303020403050504040000017d0102' +\n '0300041105122131410613516107227114328191a1082342b1c11552d1f02433627' +\n '282090a161718191a25262728292a3435363738393a434445464748494a53545556' +\n '5758595a636465666768696a737475767778797a838485868788898a92939495969' +\n '798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4' +\n 'd5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030' +\n '101010101010101010000000000000102030405060708090a0bffc400b511000201' +\n '0204040304070504040001027700010203110405213106124151076171132232810' +\n '8144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a3536' +\n '3738393a434445464748494a535455565758595a636465666768696a73747576777' +\n '8797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5' +\n 'b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f' +\n '3f4f5f6f7f8f9faffda000c03010002110311003f00',\n )\nlet JPEG_HEADER_BYTES: Uint8Array | null = null\nconst JPEG_FOOTER = new Uint8Array([0xff, 0xd9])\n\n/**\n * Convert stripped JPEG (from `photoStrippedSize`) to full JPEG\n */\nexport function strippedPhotoToJpg(stripped: Uint8Array): Uint8Array {\n if (stripped.length < 3 || stripped[0] !== 1) {\n throw new MtArgumentError('Invalid stripped JPEG')\n }\n\n if (JPEG_HEADER_BYTES === null) {\n JPEG_HEADER_BYTES = JPEG_HEADER()\n }\n\n const result = concatBuffers([JPEG_HEADER_BYTES, stripped.slice(3), JPEG_FOOTER])\n result[164] = stripped[1]\n result[166] = stripped[2]\n\n return result\n}\n\nconst SVG_LOOKUP = 'AACAAAAHAAALMAAAQASTAVAAAZaacaaaahaaalmaaaqastava.az0123456789-,'\n\n/**\n * Inflate compressed preview SVG path to full SVG path\n * @param encoded\n */\nexport function inflateSvgPath(encoded: Uint8Array): string {\n let path = 'M'\n const len = encoded.length\n\n for (let i = 0; i < len; i++) {\n const num = encoded[i]\n\n if (num >= 192) {\n // 128 + 64\n path += SVG_LOOKUP[num - 192]\n } else {\n if (num >= 128) {\n path += ','\n } else if (num >= 64) {\n path += '-'\n }\n\n path += num & 63\n }\n }\n\n path += 'z'\n\n return path\n}\n\n/**\n * Convert SVG path to SVG file\n * @param path\n */\nexport function svgPathToFile(path: string): Uint8Array {\n return getPlatform().utf8Encode(\n '<?xml version=\"1.0\" encoding=\"utf-8\"?>' +\n '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"' +\n 'viewBox=\"0 0 512 512\" xml:space=\"preserve\">' +\n '<path d=\"' +\n path +\n '\"/>' +\n '</svg>',\n )\n}\n\n/**\n * Get file name from file path\n *\n * @param path File path\n */\nexport function extractFileName(path: string): string {\n if (path.startsWith('file:')) path = path.slice(5)\n\n return path.split(/[\\\\/]/).pop()!.split('?')[0]\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/inline-utils.ts"],"names":[],"mappings":";;;AACA,mDAAmE;AAEnE,mDAA+C;AAC/C,mDAAkD;AAElD;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,EAAU;IAC3C,MAAM,GAAG,GAAG,IAAA,yBAAW,GAAE,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEzC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"inline-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/inline-utils.ts"],"names":[],"mappings":";;;AACA,mDAAmE;AAEnE,mDAA+C;AAC/C,mDAAkD;AAElD;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,EAAU;IAC3C,MAAM,GAAG,GAAG,IAAA,yBAAW,GAAE,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEzC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO;YACH,CAAC,EAAE,yBAAyB;YAC5B,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;YAClB,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE;YACjB,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;SAC5B,CAAA;IACL,CAAC;IAED,OAAO;QACH,CAAC,EAAE,2BAA2B;QAC9B,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;QACtB,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;KAC5B,CAAA;AACL,CAAC;AApBD,oDAoBC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,EAAkC;IACpE,IAAI,MAAsB,CAAA;IAE1B,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;QACX,KAAK,yBAAyB;YAC1B,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAClB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;YAC1B,MAAK;QACT,KAAK,2BAA2B;YAC5B,MAAM,GAAG,2BAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAClC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;YACvB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;YAC1B,MAAK;QACT;YACI,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAA;IACvB,CAAC;IAED,OAAO,IAAA,yBAAW,GAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;AAC5D,CAAC;AAtBD,sDAsBC;AAED,SAAgB,iBAAiB,CAAC,EAA2C;IACzE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,oBAAoB,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,EAAE,CAAA;AACb,CAAC;AAND,8CAMC","sourcesContent":["import { tl } from '@mtcute/tl'\nimport { TlBinaryReader, TlBinaryWriter } from '@mtcute/tl-runtime'\n\nimport { getPlatform } from '../../platform.js'\nimport { assertNever } from '../../types/utils.js'\n\n/**\n * Parse TDLib style inline message ID\n *\n * @param id Inline message ID\n */\nexport function parseInlineMessageId(id: string): tl.TypeInputBotInlineMessageID {\n const buf = getPlatform().base64Decode(id, true)\n const reader = TlBinaryReader.manual(buf)\n\n if (buf.length === 20) {\n return {\n _: 'inputBotInlineMessageID',\n dcId: reader.int(),\n id: reader.long(),\n accessHash: reader.long(),\n }\n }\n\n return {\n _: 'inputBotInlineMessageID64',\n dcId: reader.int(),\n ownerId: reader.long(),\n id: reader.int(),\n accessHash: reader.long(),\n }\n}\n\n/**\n * Generate TDLib style inline message ID\n *\n * @param id Inline message ID object\n */\nexport function encodeInlineMessageId(id: tl.TypeInputBotInlineMessageID): string {\n let writer: TlBinaryWriter\n\n switch (id._) {\n case 'inputBotInlineMessageID':\n writer = TlBinaryWriter.manual(20)\n writer.int(id.dcId)\n writer.long(id.id)\n writer.long(id.accessHash)\n break\n case 'inputBotInlineMessageID64':\n writer = TlBinaryWriter.manual(24)\n writer.int(id.dcId)\n writer.long(id.ownerId)\n writer.int(id.id)\n writer.long(id.accessHash)\n break\n default:\n assertNever(id)\n }\n\n return getPlatform().base64Encode(writer.result(), true)\n}\n\nexport function normalizeInlineId(id: string | tl.TypeInputBotInlineMessageID) {\n if (typeof id === 'string') {\n return parseInlineMessageId(id)\n }\n\n return id\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspectable.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/inspectable.ts"],"names":[],"mappings":";AAAA,+FAA+F;AAC/F,4FAA4F;;;AAE5F,mDAA+C;AAE/C,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAEpE,6DAA6D;AAC7D,qCAAqC;AACrC,SAAS,kBAAkB,CAAI,GAAM;IACjC,MAAM,OAAO,GAAgB,EAAE,CAAA;IAE/B,GAAG;
|
|
1
|
+
{"version":3,"file":"inspectable.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/inspectable.ts"],"names":[],"mappings":";AAAA,+FAA+F;AAC/F,4FAA4F;;;AAE5F,mDAA+C;AAE/C,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAEpE,6DAA6D;AAC7D,qCAAqC;AACrC,SAAS,kBAAkB,CAAI,GAAM;IACjC,MAAM,OAAO,GAAgB,EAAE,CAAA;IAE/B,GAAG,CAAC;QACA,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7C,IACI,IAAI,KAAK,WAAW;gBACpB,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG;gBAC/C,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAC,EAChC,CAAC;gBACC,OAAO,CAAC,IAAI,CAAC,IAAW,CAAC,CAAA;YAC7B,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAC;IAE5C,OAAO,OAAO,CAAA;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC3B,GAA8B,EAC9B,KAAmB,EACnB,IAAkB;IAElB,MAAM,OAAO,GAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAE/C,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvD,CAAC;IAED,4CAA4C;IAC5C,8DAA8D;IAC9D,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,mBAAmB,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,CAAA;IAEzE,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG;QACnB,MAAM,GAAG,GAAQ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACnB,IAAI,CAAC;gBACD,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;gBAElB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACjC,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;wBAC5B,GAAG,GAAG,IAAA,yBAAW,GAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;oBACzC,CAAC;yBAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;wBAC1C,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC1B,CAAC;gBACL,CAAC;gBACD,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;YACjB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,OAAO,CAAA;YACnC,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,+DAA+D;QAC/D,OAAO,GAAG,CAAA;IACd,CAAC,CAAA;IACD,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAA;IAEzD,OAAO,GAAG,CAAA;AACd,CAAC;AAxCD,0CAwCC","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-argument */\n\nimport { getPlatform } from '../../platform.js'\n\nconst customInspectSymbol = Symbol.for('nodejs.util.inspect.custom')\n\n// get all property names. unlike Object.getOwnPropertyNames,\n// also gets inherited property names\nfunction getAllGettersNames<T>(obj: T): (keyof T)[] {\n const getters: (keyof T)[] = []\n\n do {\n Object.getOwnPropertyNames(obj).forEach((prop) => {\n if (\n prop !== '__proto__' &&\n Object.getOwnPropertyDescriptor(obj, prop)?.get &&\n !getters.includes(prop as any)\n ) {\n getters.push(prop as any)\n }\n })\n } while ((obj = Object.getPrototypeOf(obj)))\n\n return getters\n}\n\n/**\n * Small helper function that adds `toJSON` and `util.custom.inspect`\n * methods to a given class based on its getters\n *\n * > **Note**: This means that all getters must be pure!\n * > (getter that caches after its first invocation is also\n * > considered pure in this case)\n */\nexport function makeInspectable<T>(\n obj: new (...args: any[]) => T,\n props?: (keyof T)[],\n hide?: (keyof T)[],\n): typeof obj {\n const getters: (keyof T)[] = props ? props : []\n\n for (const key of getAllGettersNames<T>(obj.prototype)) {\n if (!hide || !hide.includes(key)) getters.push(key)\n }\n\n // dirty hack to set name for inspect result\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const proto = new Function(`return function ${obj.name}(){}`)().prototype\n\n obj.prototype.toJSON = function () {\n const ret: any = Object.create(proto)\n getters.forEach((it) => {\n try {\n let val = this[it]\n\n if (val && typeof val === 'object') {\n if (val instanceof Uint8Array) {\n val = getPlatform().base64Encode(val)\n } else if (typeof val.toJSON === 'function') {\n val = val.toJSON(true)\n }\n }\n ret[it] = val\n } catch (e: any) {\n ret[it] = 'Error: ' + e.message\n }\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return ret\n }\n obj.prototype[customInspectSymbol] = obj.prototype.toJSON\n\n return obj\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/memoize.ts"],"names":[],"mappings":";AAAA,gGAAgG;;;AAEhG,8DAA8D;AAC9D,SAAgB,cAAc,CAAI,GAA8B,EAAE,MAAmB;IACjF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/memoize.ts"],"names":[],"mappings":";AAAA,gGAAgG;;;AAEhG,8DAA8D;AAC9D,SAAgB,cAAc,CAAI,GAA8B,EAAE,MAAmB;IACjF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAClE,IAAI,CAAC,IAAI;YAAE,SAAQ;QAEnB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QAEpB,IAAI,CAAC,GAAG;YAAE,SAAQ;QAElB,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE;YACxC,GAAG;gBACC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;oBAC/B,KAAK,EAAE,GAAG;oBACV,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAA;gBAEF,OAAO,GAAG,CAAA;YACd,CAAC;YACD,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACrB,CAAC,CAAA;IACN,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AA1BD,wCA0BC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-assignment */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function memoizeGetters<T>(cls: new (...args: any[]) => T, fields: (keyof T)[]): typeof cls {\n for (const field of fields) {\n const desc = Object.getOwnPropertyDescriptor(cls.prototype, field)\n if (!desc) continue\n\n const { get } = desc\n\n if (!get) continue\n\n Object.defineProperty(cls.prototype, field, {\n get() {\n const val = get.call(this)\n Object.defineProperty(this, field, {\n value: val,\n enumerable: true,\n writable: true,\n })\n\n return val\n },\n enumerable: true,\n configurable: true,\n })\n }\n\n return cls\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/peer-utils.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAE/B,mDAAkD;AAClD,kDAA2D;AAG9C,QAAA,iBAAiB,GAC1B,2FAA2F,CAAA;AAE/F,sDAAsD;AAEtD,SAAgB,WAAW,CAAC,GAA8D;IACtF,IAAI,OAAE,CAAC,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAEtC,QAAQ,GAAG,CAAC,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/peer-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertNever } from '../../types/utils.js'\nimport { MtInvalidPeerTypeError } from '../types/errors.js'\nimport { InputPeerLike } from '../types/peers/index.js'\n\nexport const INVITE_LINK_REGEX =\n /^(?:https?:\\/\\/)?(?:www\\.)?(?:t(?:elegram)?\\.(?:org|me|dog)\\/(?:joinchat\\/|\\+))([\\w-]+)$/i\n\n// helpers to convert result of `resolvePeer` function\n\nexport function toInputPeer(res: tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): tl.TypeInputPeer {\n if (tl.isAnyInputPeer(res)) return res\n\n switch (res._) {\n case 'inputChannelEmpty':\n case 'inputUserEmpty':\n return { _: 'inputPeerEmpty' }\n case 'inputUser':\n return {\n _: 'inputPeerUser',\n userId: res.userId,\n accessHash: res.accessHash,\n }\n case 'inputUserSelf':\n return { _: 'inputPeerSelf' }\n case 'inputChannel':\n return {\n _: 'inputPeerChannel',\n channelId: res.channelId,\n accessHash: res.accessHash,\n }\n case 'inputChannelFromMessage':\n return {\n _: 'inputPeerChannelFromMessage',\n channelId: res.channelId,\n msgId: res.msgId,\n peer: res.peer,\n }\n case 'inputUserFromMessage':\n return {\n _: 'inputPeerUserFromMessage',\n userId: res.userId,\n msgId: res.msgId,\n peer: res.peer,\n }\n default:\n assertNever(res)\n }\n}\n\nexport function toInputUser(\n res: tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel,\n input?: InputPeerLike,\n): tl.TypeInputUser {\n if (tl.isAnyInputUser(res)) return res\n\n switch (res._) {\n case 'inputPeerSelf':\n return { _: 'inputUserSelf' }\n case 'inputPeerUser':\n return {\n _: 'inputUser',\n userId: res.userId,\n accessHash: res.accessHash,\n }\n case 'inputPeerUserFromMessage':\n return {\n _: 'inputUserFromMessage',\n userId: res.userId,\n msgId: res.msgId,\n peer: res.peer,\n }\n }\n\n throw new MtInvalidPeerTypeError(input ?? res, 'user')\n}\n\nexport function toInputChannel(\n res: tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel,\n input?: InputPeerLike,\n): tl.TypeInputChannel {\n if (tl.isAnyInputChannel(res)) return res\n\n switch (res._) {\n case 'inputPeerChannel':\n return {\n _: 'inputChannel',\n channelId: res.channelId,\n accessHash: res.accessHash,\n }\n case 'inputPeerChannelFromMessage':\n return {\n _: 'inputChannelFromMessage',\n channelId: res.channelId,\n msgId: res.msgId,\n peer: res.peer,\n }\n }\n\n throw new MtInvalidPeerTypeError(input ?? res, 'channel')\n}\n\nexport function isInputPeerUser(\n obj: tl.TypeInputPeer,\n): obj is tl.RawInputPeerUser | tl.RawInputPeerUserFromMessage | tl.RawInputPeerSelf {\n switch (obj._) {\n case 'inputPeerUser':\n case 'inputPeerUserFromMessage':\n case 'inputPeerSelf':\n return true\n }\n\n return false\n}\n\nexport function isInputPeerChannel(\n obj: tl.TypeInputPeer,\n): obj is tl.RawInputPeerChannel | tl.RawInputPeerChannelFromMessage {\n switch (obj._) {\n case 'inputPeerChannel':\n case 'inputPeerChannelFromMessage':\n return true\n }\n\n return false\n}\n\nexport function isInputPeerChat(obj: tl.TypeInputPeer): obj is tl.RawInputPeerChat {\n return obj._ === 'inputPeerChat'\n}\n\nexport function inputPeerToPeer(inp: tl.TypeInputPeer): tl.TypePeer {\n switch (inp._) {\n case 'inputPeerUser':\n case 'inputPeerUserFromMessage':\n return { _: 'peerUser', userId: inp.userId }\n case 'inputPeerChannel':\n case 'inputPeerChannelFromMessage':\n return { _: 'peerChannel', channelId: inp.channelId }\n case 'inputPeerChat':\n return { _: 'peerChat', chatId: inp.chatId }\n default:\n throw new MtInvalidPeerTypeError(inp, `Cannot convert ${inp._} to peer`)\n }\n}\n\nexport function extractUsernames(obj: tl.RawUser | tl.RawChannel) {\n if (obj.usernames?.length) return obj.usernames.map((x) => x.username.toLowerCase())\n if (obj.username) return [obj.username.toLowerCase()]\n\n return []\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-batcher.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/query-batcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { Deque } from '../../utils/deque.js'\nimport { ITelegramClient } from '../client.types.js'\n\ntype Resolve<T> = (value: T | PromiseLike<T>) => void\ntype Reject = (err?: unknown) => void\n\ntype WaitersMap<K, U, T> = Map<K, [T, Resolve<U | null>, Reject][]>\ninterface InternalState<K, U, T> {\n waiters: WaitersMap<K, U, T>\n fetchingKeys: Set<K>\n retryQueue: Deque<T>\n numRunning: number\n}\n\n// todo: should it be MtClient?\n\n/**\n * Helper function for building batched queries.\n *\n * Concepts:\n * - \"input\" - items being passed to the query function\n * - \"output\" - items returned by the query function\n * - \"key\" - unique identifier of the item, which should be deriveable from both input and output.\n * used for matching input and output items and deduplicating them.\n */\nexport function batchedQuery<T, U, K extends string | number>(params: {\n /**\n * Fetcher function, taking an array of input items and returning an array of output items.\n *\n * If some item is not found, it should be omitted from the result array,\n * this way the corresponding request will be resolved with `null`.\n */\n fetch: (client: ITelegramClient, items: T[]) => Promise<U[]>\n\n /** Key derivation function for input items */\n inputKey: (item: T, client: ITelegramClient) => K\n /** Key derivation function for output items */\n outputKey: (item: U, client: ITelegramClient) => K\n\n /**\n * Maximum number of items to be passed to the `fetcher` function at once.\n *\n * It is recommended to pass ~half of the maximum allowed by the server,\n * since in some cases failing on a single item will cause the whole batch to fail.\n *\n * @default Infinity\n */\n maxBatchSize?: number\n\n /**\n * Maximum number of concurrently running queries.\n *\n * @default 1\n */\n maxConcurrent?: number\n\n /**\n * In case of an error, we can try retrying the query for some items one-by-one,\n * to avoid failing the whole batch.\n *\n * @param items Items contained in the batch that failed\n * @param err Error that was thrown by the fetcher\n * @returns `true` if the query should be retried for all items, `false` if it should be retried for none,\n * or an array of items for which the query should be retried (waiters for other items will throw `err`).\n */\n retrySingleOnError?: (items: T[], err: unknown) => boolean | T[]\n}): (client: ITelegramClient, item: T) => Promise<U | null> {\n const { inputKey, outputKey, fetch, maxBatchSize = Infinity, maxConcurrent = 1, retrySingleOnError } = params\n\n const symbol = Symbol('batchedQueryState')\n\n function getState(client_: ITelegramClient) {\n const client = client_ as { [symbol]?: InternalState<K, U, T> }\n\n if (!client[symbol]) {\n client[symbol] = {\n waiters: new Map(),\n fetchingKeys: new Set(),\n retryQueue: new Deque(),\n numRunning: 0,\n }\n }\n\n return client[symbol]\n }\n\n function addWaiter(client: ITelegramClient, waiters: WaitersMap<K, U, T>, item: T) {\n const key = inputKey(item, client)\n\n let arr = waiters.get(key)\n\n if (!arr) {\n arr = []\n waiters.set(key, arr)\n }\n\n return new Promise<U | null>((resolve, reject) => {\n arr!.push([item, resolve, reject])\n })\n }\n\n function popWaiters(waiters: WaitersMap<K, U, T>, key: K) {\n const arr = waiters.get(key)\n if (!arr) return []\n\n waiters.delete(key)\n\n return arr\n }\n\n function startLoops(client: ITelegramClient, state: InternalState<K, U, T>) {\n for (let i = state.numRunning; i <= maxConcurrent; i++) {\n processPending(client, state)\n }\n }\n\n function processPending(client: ITelegramClient, state: InternalState<K, U, T>) {\n const { waiters, fetchingKeys, retryQueue } = state\n\n if (state.numRunning >= maxConcurrent) return\n\n const request: T[] = []\n const requestKeys: K[] = []\n let isRetryRequest = false\n\n if (retryQueue.length > 0) {\n // handle retries in the same loop so we can easily use the same concurrency pool\n isRetryRequest = true\n\n const it = retryQueue.popFront()!\n request.push(it)\n\n const key = inputKey(it, client)\n requestKeys.push(key)\n fetchingKeys.add(key)\n } else {\n for (const it of waiters.keys()) {\n if (fetchingKeys.has(it)) continue\n\n request.push(waiters.get(it)![0][0])\n requestKeys.push(it)\n fetchingKeys.add(it)\n\n if (request.length === maxBatchSize) break\n }\n\n if (request.length === 0) return\n }\n\n state.numRunning += 1\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetch(client, request)\n .then((res) => {\n const receivedKeys = new Set<K>()\n\n for (const it of res) {\n const key = outputKey(it, client)\n receivedKeys.add(key)\n\n for (const waiter of popWaiters(waiters, key)) {\n waiter[1](it)\n }\n\n fetchingKeys.delete(key)\n }\n\n for (const key of requestKeys) {\n if (!receivedKeys.has(key)) {\n for (const waiter of popWaiters(waiters, key)) {\n waiter[1](null)\n }\n\n fetchingKeys.delete(key)\n }\n }\n })\n .catch((err: unknown) => {\n if (retrySingleOnError && !isRetryRequest) {\n const retry = retrySingleOnError(request, err)\n\n if (retry === true) {\n for (const it of request) {\n retryQueue.pushBack(it)\n }\n\n return\n } else if (Array.isArray(retry)) {\n for (const req of retry) {\n const requestKeysIdx = request.indexOf(req)\n if (requestKeysIdx < 0) continue\n\n retryQueue.pushBack(req)\n // to avoid rejecting it below\n request.splice(requestKeysIdx, 1)\n requestKeys.splice(requestKeysIdx, 1)\n }\n }\n }\n\n for (const key of requestKeys) {\n for (const waiter of popWaiters(waiters, key)) {\n waiter[2](err)\n }\n\n fetchingKeys.delete(key)\n }\n })\n .then(() => {\n state.numRunning -= 1\n\n if (waiters.size > 0) processPending(client, state)\n })\n }\n\n return function (client, item) {\n const state = getState(client)\n const promise = addWaiter(client, state.waiters, item)\n\n startLoops(client, state)\n\n return promise\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"query-batcher.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/query-batcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { Deque } from '../../utils/deque.js'\nimport { ITelegramClient } from '../client.types.js'\n\ntype Resolve<T> = (value: T | PromiseLike<T>) => void\ntype Reject = (err?: unknown) => void\n\ntype WaitersMap<K, U, T> = Map<K, [T, Resolve<U | null>, Reject][]>\ninterface InternalState<K, U, T> {\n waiters: WaitersMap<K, U, T>\n fetchingKeys: Set<K>\n retryQueue: Deque<T>\n numRunning: number\n}\n\n// todo: should it be MtClient?\n\n/**\n * Helper function for building batched queries.\n *\n * Concepts:\n * - \"input\" - items being passed to the query function\n * - \"output\" - items returned by the query function\n * - \"key\" - unique identifier of the item, which should be deriveable from both input and output.\n * used for matching input and output items and deduplicating them.\n */\nexport function batchedQuery<T, U, K extends string | number>(params: {\n /**\n * Fetcher function, taking an array of input items and returning an array of output items.\n *\n * If some item is not found, it should be omitted from the result array,\n * this way the corresponding request will be resolved with `null`.\n */\n fetch: (client: ITelegramClient, items: T[]) => Promise<U[]>\n\n /** Key derivation function for input items */\n inputKey: (item: T, client: ITelegramClient) => K\n /** Key derivation function for output items */\n outputKey: (item: U, client: ITelegramClient) => K\n\n /**\n * Maximum number of items to be passed to the `fetcher` function at once.\n *\n * It is recommended to pass ~half of the maximum allowed by the server,\n * since in some cases failing on a single item will cause the whole batch to fail.\n *\n * @default Infinity\n */\n maxBatchSize?: number\n\n /**\n * Maximum number of concurrently running queries.\n *\n * @default 1\n */\n maxConcurrent?: number\n\n /**\n * In case of an error, we can try retrying the query for some items one-by-one,\n * to avoid failing the whole batch.\n *\n * @param items Items contained in the batch that failed\n * @param err Error that was thrown by the fetcher\n * @returns `true` if the query should be retried for all items, `false` if it should be retried for none,\n * or an array of items for which the query should be retried (waiters for other items will throw `err`).\n */\n retrySingleOnError?: (items: T[], err: unknown) => boolean | T[]\n}): (client: ITelegramClient, item: T) => Promise<U | null> {\n const { inputKey, outputKey, fetch, maxBatchSize = Infinity, maxConcurrent = 1, retrySingleOnError } = params\n\n const symbol = Symbol('batchedQueryState')\n\n function getState(client_: ITelegramClient) {\n const client = client_ as { [symbol]?: InternalState<K, U, T> }\n\n if (!client[symbol]) {\n client[symbol] = {\n waiters: new Map(),\n fetchingKeys: new Set(),\n retryQueue: new Deque(),\n numRunning: 0,\n }\n }\n\n return client[symbol]\n }\n\n function addWaiter(client: ITelegramClient, waiters: WaitersMap<K, U, T>, item: T) {\n const key = inputKey(item, client)\n\n let arr = waiters.get(key)\n\n if (!arr) {\n arr = []\n waiters.set(key, arr)\n }\n\n return new Promise<U | null>((resolve, reject) => {\n arr.push([item, resolve, reject])\n })\n }\n\n function popWaiters(waiters: WaitersMap<K, U, T>, key: K) {\n const arr = waiters.get(key)\n if (!arr) return []\n\n waiters.delete(key)\n\n return arr\n }\n\n function startLoops(client: ITelegramClient, state: InternalState<K, U, T>) {\n for (let i = state.numRunning; i <= maxConcurrent; i++) {\n processPending(client, state)\n }\n }\n\n function processPending(client: ITelegramClient, state: InternalState<K, U, T>) {\n const { waiters, fetchingKeys, retryQueue } = state\n\n if (state.numRunning >= maxConcurrent) return\n\n const request: T[] = []\n const requestKeys: K[] = []\n let isRetryRequest = false\n\n if (retryQueue.length > 0) {\n // handle retries in the same loop so we can easily use the same concurrency pool\n isRetryRequest = true\n\n const it = retryQueue.popFront()!\n request.push(it)\n\n const key = inputKey(it, client)\n requestKeys.push(key)\n fetchingKeys.add(key)\n } else {\n for (const it of waiters.keys()) {\n if (fetchingKeys.has(it)) continue\n\n request.push(waiters.get(it)![0][0])\n requestKeys.push(it)\n fetchingKeys.add(it)\n\n if (request.length === maxBatchSize) break\n }\n\n if (request.length === 0) return\n }\n\n state.numRunning += 1\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetch(client, request)\n .then((res) => {\n const receivedKeys = new Set<K>()\n\n for (const it of res) {\n const key = outputKey(it, client)\n receivedKeys.add(key)\n\n for (const waiter of popWaiters(waiters, key)) {\n waiter[1](it)\n }\n\n fetchingKeys.delete(key)\n }\n\n for (const key of requestKeys) {\n if (!receivedKeys.has(key)) {\n for (const waiter of popWaiters(waiters, key)) {\n waiter[1](null)\n }\n\n fetchingKeys.delete(key)\n }\n }\n })\n .catch((err: unknown) => {\n if (retrySingleOnError && !isRetryRequest) {\n const retry = retrySingleOnError(request, err)\n\n if (retry === true) {\n for (const it of request) {\n retryQueue.pushBack(it)\n }\n\n return\n } else if (Array.isArray(retry)) {\n for (const req of retry) {\n const requestKeysIdx = request.indexOf(req)\n if (requestKeysIdx < 0) continue\n\n retryQueue.pushBack(req)\n // to avoid rejecting it below\n request.splice(requestKeysIdx, 1)\n requestKeys.splice(requestKeysIdx, 1)\n }\n }\n }\n\n for (const key of requestKeys) {\n for (const waiter of popWaiters(waiters, key)) {\n waiter[2](err)\n }\n\n fetchingKeys.delete(key)\n }\n })\n .then(() => {\n state.numRunning -= 1\n\n if (waiters.size > 0) processPending(client, state)\n })\n }\n\n return function (client, item) {\n const state = getState(client)\n const promise = addWaiter(client, state.waiters, item)\n\n startLoops(client, state)\n\n return promise\n }\n}\n"]}
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RpsMeter = void 0;
|
|
4
4
|
const deque_js_1 = require("../../utils/deque.js");
|
|
5
5
|
class RpsMeter {
|
|
6
|
+
size;
|
|
7
|
+
_hits;
|
|
8
|
+
time;
|
|
6
9
|
constructor(size = 500, time = 5000) {
|
|
7
10
|
this.size = size;
|
|
8
11
|
if (typeof process === 'undefined' || !process.hrtime.bigint) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rps-meter.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/rps-meter.ts"],"names":[],"mappings":";;;AAAA,mDAA4C;AAE5C,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"rps-meter.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/rps-meter.ts"],"names":[],"mappings":";;;AAAA,mDAA4C;AAE5C,MAAa,QAAQ;IAKJ;IAJb,KAAK,CAAe;IACpB,IAAI,CAAQ;IAEZ,YACa,OAAO,GAAG,EACnB,IAAI,GAAG,IAAI;QADF,SAAI,GAAJ,IAAI,CAAM;QAGnB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAK,CAAS,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IAC1C,CAAC;IAED,GAAG;QACC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,MAAM;QACF,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,CAAA,CAAC,iBAAiB;QAElD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;QAC9B,+CAA+C;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACvB,IAAI,GAAG,GAAG,CAAC,CAAA;QAEX,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;YACzC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YACnB,GAAG,IAAI,CAAC,CAAA;QACZ,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,CAAA,CAAC,iBAAiB;QAE5C,mCAAmC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAA;QAEpC,0BAA0B;QAC1B,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IACnD,CAAC;CACJ;AA3CD,4BA2CC","sourcesContent":["import { Deque } from '../../utils/deque.js'\n\nexport class RpsMeter {\n _hits: Deque<bigint>\n time: bigint\n\n constructor(\n readonly size = 500,\n time = 5000,\n ) {\n if (typeof process === 'undefined' || !process.hrtime.bigint) {\n throw new Error('RPS meter is not supported on this platform')\n }\n\n this._hits = new Deque<bigint>(size)\n this.time = BigInt(time) * BigInt(1e6)\n }\n\n hit(): void {\n this._hits.pushBack(process.hrtime.bigint())\n }\n\n getRps(): number {\n // calculate average load based on last `size` hits in the last `time` ms\n if (!this._hits.length) return 0 // no hits at all\n\n const now = process.hrtime.bigint()\n const window = now - this.time\n // find the first hit within the last `time` ms\n const iter = this._hits.iter()\n let first = iter.next()\n let idx = 0\n\n while (!first.done && first.value < window) {\n first = iter.next()\n idx += 1\n }\n if (!first.value) return 0 // no recent hits\n\n // number of hits within the window\n const hits = this._hits.length - idx\n\n // average load per second\n return (hits * 1e9) / Number(now - first.value)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/stream-utils.ts"],"names":[],"mappings":";;;AAAA,6DAAqD;AACrD,iEAA2D;AAE3D,SAAgB,cAAc,CAAC,GAAe;IAC1C,OAAO,IAAI,cAAc,CAAC;QACtB,KAAK,CAAC,UAAU;YACZ,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACvB,UAAU,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;KACJ,CAAC,CAAA;AACN,CAAC;AAPD,wCAOC;AAEM,KAAK,UAAU,cAAc,CAAC,MAAkC;IACnE,MAAM,MAAM,GAAiB,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IAEjC,OAAO,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/highlevel/utils/stream-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLock } from '../../utils/async-lock.js'\nimport { concatBuffers } from '../../utils/buffer-utils.js'\n\nexport function bufferToStream(buf: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream({\n start(controller) {\n controller.enqueue(buf)\n controller.close()\n },\n })\n}\n\nexport async function streamToBuffer(stream: ReadableStream<Uint8Array>): Promise<Uint8Array> {\n const chunks: Uint8Array[] = []\n\n const reader = stream.getReader()\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n chunks.push(value)\n }\n\n return concatBuffers(chunks)\n}\n\nexport function createChunkedReader(stream: ReadableStream<Uint8Array>, chunkSize: number) {\n const reader = stream.getReader()\n const lock = new AsyncLock()\n\n const buffer: Uint8Array[] = []\n let bufferLength = 0\n\n let next: Uint8Array | undefined = undefined\n let first = true\n\n async function readInner(): Promise<Uint8Array | undefined> {\n const { value } = await reader.read()\n\n if (first) {\n first = false\n const { value: nextValue } = await reader.read()\n\n next = nextValue\n\n return value\n }\n\n const tmp = next\n next = value\n\n return tmp\n }\n\n async function read(): Promise<Uint8Array | null> {\n if (bufferLength > chunkSize) {\n const chunks = []\n let length = 0\n\n while (length < chunkSize && buffer.length) {\n const chunk = buffer.shift()!\n length += chunk.length\n chunks.push(chunk)\n }\n\n if (length > chunkSize) {\n const lastChunk = chunks.pop()!\n const diff = length - chunkSize\n chunks.push(lastChunk.subarray(0, lastChunk.length - diff))\n buffer.unshift(lastChunk.subarray(lastChunk.length - diff))\n length = chunkSize\n }\n\n if (length === chunkSize) {\n bufferLength -= chunkSize\n\n return concatBuffers(chunks)\n }\n } else if (next === undefined && bufferLength > 0) {\n bufferLength = 0\n\n return concatBuffers(buffer)\n }\n\n const value = await readInner()\n if (!value) return null\n\n if (bufferLength > 0) {\n buffer.push(value)\n bufferLength += value.length\n\n // to avoid code duplication\n return read()\n }\n\n if (value.length > chunkSize) {\n const rest = value.subarray(chunkSize)\n buffer.push(rest)\n bufferLength += rest.length\n\n return value.subarray(0, chunkSize)\n }\n\n if (value.length === chunkSize) {\n return value\n }\n\n buffer.push(value)\n bufferLength += value.length\n\n return read()\n }\n\n async function readLocked() {\n await lock.acquire()\n\n let res: Uint8Array | null = null\n let err: Error | null = null\n\n try {\n res = await read()\n } catch (e) {\n err = e as Error\n }\n\n lock.release()\n\n if (err) throw err\n\n return res\n }\n\n return {\n ended: () => bufferLength === 0 && next === undefined,\n read: readLocked,\n }\n}\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { TlReaderMap } from '@mtcute/tl-runtime';
|
|
2
1
|
import { DcOptions } from '../../utils/dcs.js';
|
|
3
2
|
import { CurrentUserInfo } from '../storage/service/current-user.js';
|
|
4
3
|
export interface StringSessionData {
|
|
@@ -9,4 +8,4 @@ export interface StringSessionData {
|
|
|
9
8
|
authKey: Uint8Array;
|
|
10
9
|
}
|
|
11
10
|
export declare function writeStringSession(data: StringSessionData): string;
|
|
12
|
-
export declare function readStringSession(
|
|
11
|
+
export declare function readStringSession(data: string): StringSessionData;
|